From f56fae49a1a42b32e23e0414ebe98f25df7229bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Wed, 9 Sep 2020 12:57:50 +0200 Subject: [PATCH] fix type issue --- .vscode/settings.json | 3 +++ packages/core/src/Extension.ts | 4 ++-- packages/core/src/ExtensionManager.ts | 1 + packages/core/src/Mark.ts | 29 +++++++------------------ packages/core/src/Node.ts | 31 +++++++-------------------- packages/extension-bold/index.ts | 31 ++++++++++++++------------- 6 files changed, 38 insertions(+), 61 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..3662b370 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "typescript.tsdk": "node_modules/typescript/lib" +} \ No newline at end of file diff --git a/packages/core/src/Extension.ts b/packages/core/src/Extension.ts index 649e2f27..cf51edca 100644 --- a/packages/core/src/Extension.ts +++ b/packages/core/src/Extension.ts @@ -66,7 +66,7 @@ export interface ExtensionCallback { options: any } -export interface ExtensionExtends { +export interface ExtensionExtends { name: string options: AnyObject commands: (params: Callback) => CommandSpec @@ -78,7 +78,7 @@ export interface ExtensionExtends { plugins: (params: Callback) => Plugin[] } -export default class Extension { +export default class Extension = ExtensionExtends> { type = 'extension' config: any = {} configs: { diff --git a/packages/core/src/ExtensionManager.ts b/packages/core/src/ExtensionManager.ts index 121b7830..82b7cc5f 100644 --- a/packages/core/src/ExtensionManager.ts +++ b/packages/core/src/ExtensionManager.ts @@ -36,6 +36,7 @@ export default class ExtensionManager { : { editor, options: deepmerge(extension.config.defaults, extension.usedOptions), + // TODO: type is not available here // get type() { // console.log('called', editor.schema) diff --git a/packages/core/src/Mark.ts b/packages/core/src/Mark.ts index 76160c22..dd7cdc15 100644 --- a/packages/core/src/Mark.ts +++ b/packages/core/src/Mark.ts @@ -1,33 +1,20 @@ import { MarkSpec, MarkType } from 'prosemirror-model' import Extension, { ExtensionCallback, ExtensionExtends } from './Extension' +import { Editor } from './Editor' -// export default abstract class Mark extends Extension { - -// constructor(options = {}) { -// super(options) -// } - -// public extensionType = 'mark' - -// abstract schema(): MarkSpec - -// get type() { -// return this.editor.schema.marks[this.name] -// } - -// } - -export interface MarkCallback extends ExtensionCallback { - // TODO: fix optional - type?: MarkType +interface Callback { + name: string + editor: Editor + options: any + type: MarkType } -export interface MarkExtends extends ExtensionExtends { +export interface MarkExtends extends ExtensionExtends { topMark: boolean schema: (params: Callback) => MarkSpec } -export default class Mark extends Extension { +export default class Mark extends Extension { type = 'mark' public schema(value: MarkExtends['schema']) { diff --git a/packages/core/src/Node.ts b/packages/core/src/Node.ts index 6cca747c..8b85e363 100644 --- a/packages/core/src/Node.ts +++ b/packages/core/src/Node.ts @@ -1,35 +1,20 @@ import { NodeSpec, NodeType } from 'prosemirror-model' import Extension, { ExtensionCallback, ExtensionExtends } from './Extension' +import { Editor } from './Editor' -// export default abstract class Node extends Extension { - -// constructor(options = {}) { -// super(options) -// } - -// public extensionType = 'node' - -// public topNode = false - -// abstract schema(): NodeSpec - -// get type() { -// return this.editor.schema.nodes[this.name] -// } - -// } - -export interface NodeCallback extends ExtensionCallback { - // TODO: fix optional - type?: NodeType +interface Callback { + name: string + editor: Editor + options: any + type: NodeType } -export interface NodeExtends extends ExtensionExtends { +export interface NodeExtends extends ExtensionExtends { topNode: boolean schema: (params: Callback) => NodeSpec } -export default class Node extends Extension { +export default class Node extends Extension { type = 'node' public topNode(value: NodeExtends['topNode'] = true) { diff --git a/packages/extension-bold/index.ts b/packages/extension-bold/index.ts index 5361480e..e03d5ee0 100644 --- a/packages/extension-bold/index.ts +++ b/packages/extension-bold/index.ts @@ -34,22 +34,23 @@ export default new Mark() .keys(({ editor }) => ({ 'Mod-b': () => editor.bold() })) - // .inputRules(({ type }) => { - // return ['**', '__'].map(character => { - // const regex = VerEx() - // .add('(?:^|\\s)') - // .beginCapture() - // .find(character) - // .beginCapture() - // .somethingBut(character) - // .endCapture() - // .find(character) - // .endCapture() - // .endOfLine() + .inputRules(({ type }) => { + console.log(type) + return ['**', '__'].map(character => { + const regex = VerEx() + .add('(?:^|\\s)') + .beginCapture() + .find(character) + .beginCapture() + .somethingBut(character) + .endCapture() + .find(character) + .endCapture() + .endOfLine() - // return markInputRule(regex, type) - // }) - // }) + return markInputRule(regex, type) + }) + }) // .pasteRules(({ type }) => { // return ['**', '__'].map(character => { // const regex = VerEx()