diff --git a/packages/core/src/Extension.ts b/packages/core/src/Extension.ts index 0a7d6044..9289e812 100644 --- a/packages/core/src/Extension.ts +++ b/packages/core/src/Extension.ts @@ -113,18 +113,7 @@ // } // } -export interface Extension { - type: string, - name: string, - options: { - [key: string]: any - }, - createCommands(): { - [key: string]: any - }, -} - -export interface ExtensionSpec { +export interface ExtensionSpec { name: string, defaultOptions?: Options, createCommands?(this: { @@ -133,13 +122,18 @@ export interface ExtensionSpec { }): Commands, } +export type Extension = Required & { + type: string, + options: { + [key: string]: any + }, +}> + const defaultExtension: Extension = { type: 'extension', name: 'extension', options: {}, - createCommands() { - return {} - }, + createCommands: () => ({}), } export function createExtension(config: ExtensionSpec) { diff --git a/packages/core/src/Node.ts b/packages/core/src/Node.ts index 1db7f738..cafc6ddf 100644 --- a/packages/core/src/Node.ts +++ b/packages/core/src/Node.ts @@ -70,25 +70,9 @@ // } import { DOMOutputSpec, NodeSpec, Node } from 'prosemirror-model' -import { Extension, ExtensionSpec } from './Extension' +import { ExtensionSpec } from './Extension' -export interface NodeExtension extends Extension { - topNode: boolean, - content: NodeSpec['content'], - marks: NodeSpec['marks'], - group: NodeSpec['group'], - inline: NodeSpec['inline'], - atom: NodeSpec['atom'], - parseHTML: () => NodeSpec['parseDOM'], - renderHTML: (props: { - node: Node, - attributes: { - [key: string]: any, - }, - }) => DOMOutputSpec, -} - -export interface NodeExtensionSpec extends ExtensionSpec { +export interface NodeExtensionSpec extends ExtensionSpec { topNode?: boolean, content?: NodeSpec['content'], marks?: NodeSpec['marks'], @@ -104,6 +88,13 @@ export interface NodeExtensionSpec extends ExtensionSpec DOMOutputSpec, } +export type NodeExtension = Required & { + type: string, + options: { + [key: string]: any + }, +}> + const defaultNode: NodeExtension = { type: 'node', name: 'node', diff --git a/packages/core/src/utils/getSchema.ts b/packages/core/src/utils/getSchema.ts index fb6cf6dd..49af44a0 100644 --- a/packages/core/src/utils/getSchema.ts +++ b/packages/core/src/utils/getSchema.ts @@ -5,13 +5,13 @@ import getTopNodeFromExtensions from './getTopNodeFromExtensions' import getNodesFromExtensions from './getNodesFromExtensions' import getMarksFromExtensions from './getMarksFromExtensions' import resolveExtensionConfig from './resolveExtensionConfig' -import { Node } from '../Node' +import { NodeExtension } from '../Node' import Mark from '../Mark' import Extension from '../Extension' export default function getSchema(extensions: Extensions): Schema { // const baseExtensions = extensions.filter(extension => extension.type === 'extension') as Extension[] - const nodeExtensions = extensions.filter(extension => extension.type === 'node') as Node[] + const nodeExtensions = extensions.filter(extension => extension.type === 'node') as NodeExtension[] // const markExtensions = extensions.filter(extension => extension.type === 'mark') as Mark[] // console.log({ extensions })