From bde1527eff5fe04d87ac358a861a42dcd2c015e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Wed, 24 Oct 2018 07:58:08 +0200 Subject: [PATCH] replace maxLevels option with levels for heading node --- examples/Components/Routes/Basic/index.vue | 2 +- .../Routes/CodeHighlighting/index.vue | 2 +- examples/Components/Routes/Embeds/index.vue | 2 +- examples/Components/Routes/Export/index.vue | 2 +- .../Components/Routes/FloatingMenu/index.vue | 2 +- .../Components/Routes/HidingMenuBar/index.vue | 2 +- examples/Components/Routes/Images/index.vue | 2 +- examples/Components/Routes/Links/index.vue | 2 +- .../Routes/MarkdownShortcuts/index.vue | 2 +- .../Components/Routes/MenuBubble/index.vue | 2 +- examples/Components/Routes/ReadOnly/index.vue | 2 +- .../Components/Routes/Suggestions/index.vue | 2 +- examples/Components/Routes/TodoList/index.vue | 2 +- .../tiptap-extensions/src/nodes/Heading.js | 21 ++++++++++++------- 14 files changed, 26 insertions(+), 21 deletions(-) diff --git a/examples/Components/Routes/Basic/index.vue b/examples/Components/Routes/Basic/index.vue index 39e8832c..99dc9b2f 100644 --- a/examples/Components/Routes/Basic/index.vue +++ b/examples/Components/Routes/Basic/index.vue @@ -150,7 +150,7 @@ export default { new BulletList(), new CodeBlock(), new HardBreak(), - new Heading({ maxLevel: 3 }), + new Heading({ levels: [1, 2, 3] }), new ListItem(), new OrderedList(), new TodoItem(), diff --git a/examples/Components/Routes/CodeHighlighting/index.vue b/examples/Components/Routes/CodeHighlighting/index.vue index 626e6bc7..0782347a 100644 --- a/examples/Components/Routes/CodeHighlighting/index.vue +++ b/examples/Components/Routes/CodeHighlighting/index.vue @@ -39,7 +39,7 @@ export default { }, }), new HardBreak(), - new Heading({ maxLevel: 3 }), + new Heading({ levels: [1, 2, 3] }), new Bold(), new Code(), new Italic(), diff --git a/examples/Components/Routes/Embeds/index.vue b/examples/Components/Routes/Embeds/index.vue index 8c98f107..8d927c54 100644 --- a/examples/Components/Routes/Embeds/index.vue +++ b/examples/Components/Routes/Embeds/index.vue @@ -24,7 +24,7 @@ export default { editor: new Editor({ extensions: [ new HardBreak(), - new Heading({ maxLevel: 3 }), + new Heading({ levels: [1, 2, 3] }), new Bold(), new Italic(), new History(), diff --git a/examples/Components/Routes/Export/index.vue b/examples/Components/Routes/Export/index.vue index 6cc882ee..be80df92 100644 --- a/examples/Components/Routes/Export/index.vue +++ b/examples/Components/Routes/Export/index.vue @@ -144,7 +144,7 @@ export default { new BulletList(), new CodeBlock(), new HardBreak(), - new Heading({ maxLevel: 3 }), + new Heading({ levels: [1, 2, 3] }), new ListItem(), new OrderedList(), new TodoItem(), diff --git a/examples/Components/Routes/FloatingMenu/index.vue b/examples/Components/Routes/FloatingMenu/index.vue index a76e5086..589e6aa2 100644 --- a/examples/Components/Routes/FloatingMenu/index.vue +++ b/examples/Components/Routes/FloatingMenu/index.vue @@ -100,7 +100,7 @@ export default { new BulletList(), new CodeBlock(), new HardBreak(), - new Heading({ maxLevel: 3 }), + new Heading({ levels: [1, 2, 3] }), new ListItem(), new OrderedList(), new TodoItem(), diff --git a/examples/Components/Routes/HidingMenuBar/index.vue b/examples/Components/Routes/HidingMenuBar/index.vue index 296dc37b..4b554134 100644 --- a/examples/Components/Routes/HidingMenuBar/index.vue +++ b/examples/Components/Routes/HidingMenuBar/index.vue @@ -152,7 +152,7 @@ export default { new BulletList(), new CodeBlock(), new HardBreak(), - new Heading({ maxLevel: 3 }), + new Heading({ levels: [1, 2, 3] }), new ListItem(), new OrderedList(), new TodoItem(), diff --git a/examples/Components/Routes/Images/index.vue b/examples/Components/Routes/Images/index.vue index 9c25871e..22e46126 100644 --- a/examples/Components/Routes/Images/index.vue +++ b/examples/Components/Routes/Images/index.vue @@ -38,7 +38,7 @@ export default { editor: new Editor({ extensions: [ new HardBreak(), - new Heading({ maxLevel: 3 }), + new Heading({ levels: [1, 2, 3] }), new Image(), new Bold(), new Code(), diff --git a/examples/Components/Routes/Links/index.vue b/examples/Components/Routes/Links/index.vue index 65e4706b..3498dce0 100644 --- a/examples/Components/Routes/Links/index.vue +++ b/examples/Components/Routes/Links/index.vue @@ -62,7 +62,7 @@ export default { new BulletList(), new CodeBlock(), new HardBreak(), - new Heading({ maxLevel: 3 }), + new Heading({ levels: [1, 2, 3] }), new ListItem(), new OrderedList(), new TodoItem(), diff --git a/examples/Components/Routes/MarkdownShortcuts/index.vue b/examples/Components/Routes/MarkdownShortcuts/index.vue index 7a7a71b1..e6feee59 100644 --- a/examples/Components/Routes/MarkdownShortcuts/index.vue +++ b/examples/Components/Routes/MarkdownShortcuts/index.vue @@ -37,7 +37,7 @@ export default { new BulletList(), new CodeBlock(), new HardBreak(), - new Heading({ maxLevel: 3 }), + new Heading({ levels: [1, 2, 3] }), new ListItem(), new OrderedList(), new TodoItem(), diff --git a/examples/Components/Routes/MenuBubble/index.vue b/examples/Components/Routes/MenuBubble/index.vue index 79f2dead..d25b807b 100644 --- a/examples/Components/Routes/MenuBubble/index.vue +++ b/examples/Components/Routes/MenuBubble/index.vue @@ -70,7 +70,7 @@ export default { new BulletList(), new CodeBlock(), new HardBreak(), - new Heading({ maxLevel: 3 }), + new Heading({ levels: [1, 2, 3] }), new ListItem(), new OrderedList(), new TodoItem(), diff --git a/examples/Components/Routes/ReadOnly/index.vue b/examples/Components/Routes/ReadOnly/index.vue index 8021b831..6994057d 100644 --- a/examples/Components/Routes/ReadOnly/index.vue +++ b/examples/Components/Routes/ReadOnly/index.vue @@ -25,7 +25,7 @@ export default { editable: false, extensions: [ new HardBreak(), - new Heading({ maxLevel: 3 }), + new Heading({ levels: [1, 2, 3] }), new Bold(), new Code(), new Italic(), diff --git a/examples/Components/Routes/Suggestions/index.vue b/examples/Components/Routes/Suggestions/index.vue index 49fc652a..ed2993e8 100644 --- a/examples/Components/Routes/Suggestions/index.vue +++ b/examples/Components/Routes/Suggestions/index.vue @@ -49,7 +49,7 @@ export default { editor: new Editor({ extensions: [ new HardBreak(), - new Heading({ maxLevel: 3 }), + new Heading({ levels: [1, 2, 3] }), new Mention({ // a list of all suggested items items: [ diff --git a/examples/Components/Routes/TodoList/index.vue b/examples/Components/Routes/TodoList/index.vue index cef259f9..b598fd5c 100644 --- a/examples/Components/Routes/TodoList/index.vue +++ b/examples/Components/Routes/TodoList/index.vue @@ -68,7 +68,7 @@ export default { extensions: [ new CodeBlock(), new HardBreak(), - new Heading({ maxLevel: 3 }), + new Heading({ levels: [1, 2, 3] }), new TodoItem(), new TodoList(), new Bold(), diff --git a/packages/tiptap-extensions/src/nodes/Heading.js b/packages/tiptap-extensions/src/nodes/Heading.js index 0e6f8a3d..c494efcb 100644 --- a/packages/tiptap-extensions/src/nodes/Heading.js +++ b/packages/tiptap-extensions/src/nodes/Heading.js @@ -9,14 +9,10 @@ export default class Heading extends Node { get defaultOptions() { return { - maxLevel: 6, + levels: [1, 2, 3, 4, 5, 6], } } - get levels() { - return Array.from(new Array(this.options.maxLevel), (value, index) => index + 1) - } - get schema() { return { attrs: { @@ -28,7 +24,7 @@ export default class Heading extends Node { group: 'block', defining: true, draggable: false, - parseDOM: this.levels.map(level => ({ tag: `h${level}`, attrs: { level } })), + parseDOM: this.options.levels.map(level => ({ tag: `h${level}`, attrs: { level } })), toDOM: node => [`h${node.attrs.level}`, 0], } } @@ -38,7 +34,7 @@ export default class Heading extends Node { } keys({ type }) { - return this.levels.reduce((items, level) => ({ + return this.options.levels.reduce((items, level) => ({ ...items, ...{ [`Shift-Ctrl-${level}`]: setBlockType(type, { level }), @@ -47,9 +43,18 @@ export default class Heading extends Node { } inputRules({ type }) { + return this.options.levels.map(level => { + return textblockTypeInputRule( + new RegExp(`^(#{1,${level}})\\s$`), + type, + match => ({ level }), + ) + }) + + return [ textblockTypeInputRule( - new RegExp(`^(#{1,${this.options.maxLevel}})\\s$`), + new RegExp(`^(#{1,${this.options.levels}})\\s$`), type, match => ({ level: match[1].length }), ),