From 790de569524cf8fd51c43b80883d28fc9dd6d7ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Wed, 11 Mar 2020 10:23:28 +0100 Subject: [PATCH] refactoring --- packages/tiptap-core/src/Editor.ts | 7 +- .../tiptap-core/src/utils/magicMethods.js | 94 ------------------- .../tiptap-core/src/utils/magicMethods.ts | 31 ++++++ 3 files changed, 33 insertions(+), 99 deletions(-) delete mode 100644 packages/tiptap-core/src/utils/magicMethods.js create mode 100644 packages/tiptap-core/src/utils/magicMethods.ts diff --git a/packages/tiptap-core/src/Editor.ts b/packages/tiptap-core/src/Editor.ts index 69e6151a..e04cdf94 100644 --- a/packages/tiptap-core/src/Editor.ts +++ b/packages/tiptap-core/src/Editor.ts @@ -8,15 +8,13 @@ import { baseKeymap } from 'prosemirror-commands' import { dropCursor } from 'prosemirror-dropcursor' import { gapCursor } from 'prosemirror-gapcursor' +import magicMethods from './utils/magicMethods' import elementFromString from './utils/elementFromString' import injectCSS from './utils/injectCSS' import ExtensionManager from './ExtensionManager' import Extension from './Extension' import Node from './Node' -// @ts-ignore -import magicMethods from './utils/magicMethods' - type EditorContent = string | JSON type Command = (next: Function, editor: Editor, ...args: any) => any @@ -29,6 +27,7 @@ interface Options { @magicMethods export class Editor extends EventEmitter { + proxy!: any element = document.createElement('div') extensionManager!: ExtensionManager schema!: Schema @@ -78,7 +77,6 @@ export class Editor extends EventEmitter { return new Promise(resolve => callback(resolve, this, ...args)) }) - // @ts-ignore return this.proxy } @@ -123,7 +121,6 @@ export class Editor extends EventEmitter { .then(() => method.apply(this, args)) .catch(console.error) - // @ts-ignore return this.proxy } diff --git a/packages/tiptap-core/src/utils/magicMethods.js b/packages/tiptap-core/src/utils/magicMethods.js deleted file mode 100644 index fcb0ddef..00000000 --- a/packages/tiptap-core/src/utils/magicMethods.js +++ /dev/null @@ -1,94 +0,0 @@ -// export default function magicMethods (clazz) { -// const classHandler = Object.create(null) - -// // Trap for class instantiation -// classHandler.construct = (target, args) => { -// // Wrapped class instance -// const instance = new clazz(...args) -// // Instance traps -// const instanceHandler = Object.create(null) - -// const get = Object.getOwnPropertyDescriptor(clazz.prototype, 'command') -// if (get) { -// instanceHandler.get = (target, name) => { -// const exists = name in target - -// if (exists) { -// return target[name] -// } else { -// return get.value.call(target, name) -// } -// } -// } - -// return new Proxy(instance, instanceHandler) -// } - -// return new Proxy(clazz, classHandler) -// } - -// export default function magicMethods (clazz) { -// const classHandler = Object.create(null) - -// // Trap for class instantiation -// classHandler.construct = (target, args) => { -// // Wrapped class instance -// const instance = new clazz(...args) -// // Instance traps -// const instanceHandler = Object.create(null) - -// const get = Object.getOwnPropertyDescriptor(clazz.prototype, 'command') -// if (get) { -// instanceHandler.get = (target, name) => { -// const exists = name in target - -// if (exists) { -// return target[name] -// } else { -// return get.value.call(target, name) -// } -// } -// } - -// // return new Proxy(instance, instanceHandler) -// const proxy = new Proxy(instance, instanceHandler) -// instance.proxy = proxy - -// return proxy -// } - -// return new Proxy(clazz, classHandler) -// } - - -export default function magicMethods (clazz) { - const classHandler = Object.create(null) - - classHandler.construct = (target, args) => { - const instance = new clazz(...args) - const instanceHandler = Object.create(null) - const get = Object.getOwnPropertyDescriptor(clazz.prototype, '__get') - - if (get) { - instanceHandler.get = (target, name) => { - if (typeof name !== 'string') { - return - } - - const exists = name in target || name.startsWith('_') - - if (exists) { - return target[name] - } else { - return get.value.call(target, name) - } - } - } - - instance.proxy = new Proxy(instance, instanceHandler) - - return instance.proxy - } - - return new Proxy(clazz, classHandler) -} \ No newline at end of file diff --git a/packages/tiptap-core/src/utils/magicMethods.ts b/packages/tiptap-core/src/utils/magicMethods.ts new file mode 100644 index 00000000..21f00d7a --- /dev/null +++ b/packages/tiptap-core/src/utils/magicMethods.ts @@ -0,0 +1,31 @@ +export default function magicMethods (clazz: any) { + const classHandler = Object.create(null) + + classHandler.construct = (target: any, args: any) => { + const instance = new clazz(...args) + const instanceHandler = Object.create(null) + const get = Object.getOwnPropertyDescriptor(clazz.prototype, '__get') + + if (get) { + instanceHandler.get = (target: any, name: any) => { + if (typeof name !== 'string') { + return + } + + const exists = name in target || name.startsWith('_') + + if (exists) { + return target[name] + } else { + return get.value.call(target, name) + } + } + } + + instance.proxy = new Proxy(instance, instanceHandler) + + return instance.proxy + } + + return new Proxy(clazz, classHandler) +} \ No newline at end of file