86 lines
1.6 KiB
TypeScript
86 lines
1.6 KiB
TypeScript
const validEvents = new Set([
|
|
'onActivate',
|
|
'onAddUndo',
|
|
'onBeforeAddUndo',
|
|
'onBeforeExecCommand',
|
|
'onBeforeGetContent',
|
|
'onBeforePaste',
|
|
'onBeforeRenderUI',
|
|
'onBeforeSetContent',
|
|
'onBlur',
|
|
'onChange',
|
|
'onClearUndos',
|
|
'onClick',
|
|
'onContextMenu',
|
|
'onCopy',
|
|
'onCut',
|
|
'onDblclick',
|
|
'onDeactivate',
|
|
'onDirty',
|
|
'onDrag',
|
|
'onDragDrop',
|
|
'onDragEnd',
|
|
'onDragGesture',
|
|
'onDragOver',
|
|
'onDrop',
|
|
'onExecCommand',
|
|
'onFocus',
|
|
'onFocusIn',
|
|
'onFocusOut',
|
|
'onGetContent',
|
|
'onHide',
|
|
'onInit',
|
|
'onKeyDown',
|
|
'onKeyPress',
|
|
'onKeyUp',
|
|
'onLoadContent',
|
|
'onMouseDown',
|
|
'onMouseEnter',
|
|
'onMouseLeave',
|
|
'onMouseMove',
|
|
'onMouseOut',
|
|
'onMouseOver',
|
|
'onMouseUp',
|
|
'onNodeChange',
|
|
'onObjectResized',
|
|
'onObjectResizeStart',
|
|
'onObjectSelected',
|
|
'onPaste',
|
|
'onPostProcess',
|
|
'onPostRender',
|
|
'onPreProcess',
|
|
'onProgressState',
|
|
'onRedo',
|
|
'onRemove',
|
|
'onReset',
|
|
'onSaveContent',
|
|
'onSelectionChange',
|
|
'onSetAttrib',
|
|
'onSetContent',
|
|
'onShow',
|
|
'onSubmit',
|
|
'onUndo',
|
|
'onVisualAid',
|
|
]);
|
|
|
|
const isValidKey = (key: string) => validEvents.has(key);
|
|
|
|
export const bindHandlers = (
|
|
initEvent: Event,
|
|
listeners: any,
|
|
editor: any,
|
|
): void => {
|
|
Object.keys(listeners)
|
|
.filter((element) => isValidKey(element))
|
|
.forEach((key: string) => {
|
|
const handler = listeners[key];
|
|
if (typeof handler === 'function') {
|
|
if (key === 'onInit') {
|
|
handler(initEvent, editor);
|
|
} else {
|
|
editor.on(key.slice(2), (e: any) => handler(e, editor));
|
|
}
|
|
}
|
|
});
|
|
};
|