diff --git a/packages/tiptap/src/index.js b/packages/tiptap/src/index.js index 841db5df..47c1fa3f 100644 --- a/packages/tiptap/src/index.js +++ b/packages/tiptap/src/index.js @@ -1,3 +1,4 @@ export { default as Editor } from './components/editor' +export { default as Extension } from './utils/extension' export { default as Node } from './utils/node' export { default as Mark } from './utils/mark' diff --git a/packages/tiptap/src/utils/extension.js b/packages/tiptap/src/utils/extension.js new file mode 100644 index 00000000..e3fa24dd --- /dev/null +++ b/packages/tiptap/src/utils/extension.js @@ -0,0 +1,30 @@ +export default class Extension { + + constructor(options = {}) { + this.options = { + ...this.defaultOptions, + ...options, + } + } + + get name() { + return null + } + + get type() { + return 'extension' + } + + get defaultOptions() { + return {} + } + + get plugins() { + return [] + } + + inputRules() { + return [] + } + +} diff --git a/packages/tiptap/src/utils/mark.js b/packages/tiptap/src/utils/mark.js index a298f7e9..9d9b8edc 100644 --- a/packages/tiptap/src/utils/mark.js +++ b/packages/tiptap/src/utils/mark.js @@ -1,18 +1,9 @@ -export default class Mark { +import Extension from './extension' + +export default class Mark extends Extension { constructor(options = {}) { - this.options = { - ...this.defaultOptions, - ...options, - } - } - - get name() { - return null - } - - get defaultOptions() { - return {} + super(options) } get type() { @@ -27,10 +18,6 @@ export default class Mark { return null } - get plugins() { - return [] - } - command() { return () => {} } @@ -39,8 +26,4 @@ export default class Mark { return {} } - inputRules() { - return [] - } - } diff --git a/packages/tiptap/src/utils/node.js b/packages/tiptap/src/utils/node.js index 16f02c7f..adfea214 100644 --- a/packages/tiptap/src/utils/node.js +++ b/packages/tiptap/src/utils/node.js @@ -1,18 +1,9 @@ -export default class Node { +import Extension from './extension' + +export default class Node extends Extension { constructor(options = {}) { - this.options = { - ...this.defaultOptions, - ...options, - } - } - - get name() { - return null - } - - get defaultOptions() { - return {} + super(options) } get type() { @@ -27,10 +18,6 @@ export default class Node { return null } - get plugins() { - return [] - } - command() { return () => {} } @@ -39,8 +26,4 @@ export default class Node { return {} } - inputRules() { - return [] - } - }