From c60ad0f107cb365d29c3e30c5ac2e778d2f1313d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Tue, 31 Mar 2020 22:57:39 +0200 Subject: [PATCH] improve schema types --- packages/core/src/Editor.ts | 3 --- packages/core/src/Mark.ts | 5 ++--- packages/core/src/Node.ts | 5 ++--- packages/extension-bold/index.ts | 13 +++++++------ packages/extension-document/index.ts | 3 ++- packages/extension-italic/index.ts | 3 ++- packages/extension-paragraph/index.ts | 3 ++- packages/extension-text/index.ts | 3 ++- 8 files changed, 19 insertions(+), 19 deletions(-) diff --git a/packages/core/src/Editor.ts b/packages/core/src/Editor.ts index caa5c99f..db6362c8 100644 --- a/packages/core/src/Editor.ts +++ b/packages/core/src/Editor.ts @@ -1,4 +1,3 @@ -import collect from 'collect.js' import { EventEmitter } from 'events' import { EditorState, TextSelection } from 'prosemirror-state' import { EditorView} from 'prosemirror-view' @@ -8,7 +7,6 @@ import { keymap } from 'prosemirror-keymap' 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' @@ -119,7 +117,6 @@ export class Editor extends EventEmitter { } private get plugins() { - console.log(this.extensionManager.plugins) return [ ...this.extensionManager.plugins, ...this.extensionManager.keymaps, diff --git a/packages/core/src/Mark.ts b/packages/core/src/Mark.ts index 99f47e79..45d413ed 100644 --- a/packages/core/src/Mark.ts +++ b/packages/core/src/Mark.ts @@ -1,4 +1,5 @@ import Extension from './Extension' +import { MarkSpec } from 'prosemirror-model' export default abstract class Mark extends Extension { @@ -8,9 +9,7 @@ export default abstract class Mark extends Extension { public type = 'mark' - schema(): any { - return null - } + abstract schema(): MarkSpec get schemaType() { return this.editor.schema.marks[this.name] diff --git a/packages/core/src/Node.ts b/packages/core/src/Node.ts index 99159dce..5d64c11a 100644 --- a/packages/core/src/Node.ts +++ b/packages/core/src/Node.ts @@ -1,4 +1,5 @@ import Extension from './Extension' +import { NodeSpec } from 'prosemirror-model' export default abstract class Node extends Extension { @@ -10,9 +11,7 @@ export default abstract class Node extends Extension { public topNode = false - schema(): any { - return null - } + abstract schema(): NodeSpec get schemaType() { return this.editor.schema.nodes[this.name] diff --git a/packages/extension-bold/index.ts b/packages/extension-bold/index.ts index 016ac1a6..b9f03924 100644 --- a/packages/extension-bold/index.ts +++ b/packages/extension-bold/index.ts @@ -1,5 +1,6 @@ import { Mark } from '@tiptap/core' import { toggleMark } from 'prosemirror-commands' +import { MarkSpec } from 'prosemirror-model' declare module '@tiptap/core/src/Editor' { interface Editor { @@ -18,7 +19,7 @@ export default class Bold extends Mark { }) } - schema() { + schema(): MarkSpec { return { parseDOM: [ { @@ -26,12 +27,12 @@ export default class Bold extends Mark { }, { tag: 'b', - getAttrs: (node: HTMLElement) => node.style.fontWeight !== 'normal' && null, + getAttrs: node => (node as HTMLElement).style.fontWeight !== 'normal' && null, + }, + { + style: 'font-weight', + getAttrs: value => /^(bold(er)?|[5-9]\d{2,})$/.test(value as string) && null, }, - // { - // style: 'font-weight', - // getAttrs: value => /^(bold(er)?|[5-9]\d{2,})$/.test(value) && null, - // }, ], toDOM: () => ['strong', 0], } diff --git a/packages/extension-document/index.ts b/packages/extension-document/index.ts index 1cc132f8..86213562 100644 --- a/packages/extension-document/index.ts +++ b/packages/extension-document/index.ts @@ -1,4 +1,5 @@ import { Node } from '@tiptap/core' +import { NodeSpec } from 'prosemirror-model' export default class Document extends Node { @@ -6,7 +7,7 @@ export default class Document extends Node { topNode = true - schema() { + schema(): NodeSpec { return { content: 'block+', } diff --git a/packages/extension-italic/index.ts b/packages/extension-italic/index.ts index cfc5382d..f2909768 100644 --- a/packages/extension-italic/index.ts +++ b/packages/extension-italic/index.ts @@ -1,5 +1,6 @@ import { Mark } from '@tiptap/core' import { toggleMark } from 'prosemirror-commands' +import { MarkSpec } from 'prosemirror-model' declare module '@tiptap/core/src/Editor' { interface Editor { @@ -18,7 +19,7 @@ export default class Italic extends Mark { }) } - schema() { + schema(): MarkSpec { return { parseDOM: [ { tag: 'i' }, diff --git a/packages/extension-paragraph/index.ts b/packages/extension-paragraph/index.ts index 9fcfb68d..f3b5cf0c 100644 --- a/packages/extension-paragraph/index.ts +++ b/packages/extension-paragraph/index.ts @@ -1,10 +1,11 @@ import { Node } from '@tiptap/core' +import { NodeSpec } from 'prosemirror-model' export default class Paragraph extends Node { name = 'paragraph' - schema() { + schema(): NodeSpec { return { content: 'inline*', group: 'block', diff --git a/packages/extension-text/index.ts b/packages/extension-text/index.ts index 3a69aebc..3ca1675b 100644 --- a/packages/extension-text/index.ts +++ b/packages/extension-text/index.ts @@ -1,10 +1,11 @@ import { Node } from '@tiptap/core' +import { NodeSpec } from 'prosemirror-model' export default class Text extends Node { name = 'text' - schema() { + schema(): NodeSpec { return { group: 'inline', }