refactoring

This commit is contained in:
Philipp Kühn 2020-03-11 10:23:28 +01:00
parent 00cc5b0180
commit 790de56952
3 changed files with 33 additions and 99 deletions

View File

@ -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
}

View File

@ -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)
}

View File

@ -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)
}