replace maxLevels option with levels for heading node

This commit is contained in:
Philipp Kühn
2018-10-24 07:58:08 +02:00
parent 6b03315e59
commit bde1527eff
14 changed files with 26 additions and 21 deletions

View File

@@ -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 }),
),