diff --git a/docs/src/demos/Extensions/OrderedList/index.vue b/docs/src/demos/Extensions/OrderedList/index.vue index e1f4268b..6703c4ec 100644 --- a/docs/src/demos/Extensions/OrderedList/index.vue +++ b/docs/src/demos/Extensions/OrderedList/index.vue @@ -38,10 +38,15 @@ export default { ListItem(), ], content: ` - + + +
    +
  1. This item starts at 5
  2. +
  3. And another one
  4. +
`, }) }, diff --git a/packages/extension-code-block/index.ts b/packages/extension-code-block/index.ts index 770bd619..3cd4e1dd 100644 --- a/packages/extension-code-block/index.ts +++ b/packages/extension-code-block/index.ts @@ -29,7 +29,28 @@ const CodeBlock = createNode({ return { language: { default: null, - rendered: false, + parseHTML: element => { + const classAttribute = element.firstElementChild?.getAttribute('class') + + if (!classAttribute) { + return null + } + + const regexLanguageClassPrefix = new RegExp(`^(${this.options.languageClassPrefix})`) + + return { + language: classAttribute.replace(regexLanguageClassPrefix, ''), + } + }, + renderHTML: attributes => { + if (!attributes.language) { + return null + } + + return { + class: this.options.languageClassPrefix + attributes.language, + } + }, }, } }, @@ -39,25 +60,12 @@ const CodeBlock = createNode({ { tag: 'pre', preserveWhitespace: 'full', - getAttrs: node => { - const classAttribute = (node as Element).firstElementChild?.getAttribute('class') - - if (!classAttribute) { - return null - } - - const regexLanguageClassPrefix = new RegExp(`^(${this.options.languageClassPrefix})`) - - return { language: classAttribute.replace(regexLanguageClassPrefix, '') } - }, }, ] }, - renderHTML({ node, attributes }) { - return ['pre', attributes, ['code', { - class: node.attrs.language && this.options.languageClassPrefix + node.attrs.language, - }, 0]] + renderHTML({ attributes }) { + return ['pre', ['code', attributes, 0]] }, addCommands() { diff --git a/packages/extension-ordered-list/index.ts b/packages/extension-ordered-list/index.ts index e7a4abe0..0b678728 100644 --- a/packages/extension-ordered-list/index.ts +++ b/packages/extension-ordered-list/index.ts @@ -10,9 +10,13 @@ const OrderedList = createNode({ addAttributes() { return { - order: { + start: { default: 1, - rendered: false, + parseHTML: element => ({ + start: element.hasAttribute('start') + ? parseInt(element.getAttribute('start') || '', 10) + : 1, + }), }, } }, @@ -21,19 +25,16 @@ const OrderedList = createNode({ return [ { tag: 'ol', - getAttrs: node => ({ - order: (node as HTMLElement).hasAttribute('start') - ? parseInt((node as HTMLElement).getAttribute('start') || '', 10) - : 1, - }), }, ] }, - renderHTML({ node, attributes }) { - return node.attrs.order === 1 - ? ['ol', attributes, 0] - : ['ol', { ...attributes, start: node.attrs.order }, 0] + renderHTML({ attributes }) { + const { start, ...attributesWithoutStart } = attributes + + return start === 1 + ? ['ol', attributesWithoutStart, 0] + : ['ol', attributes, 0] }, addCommands() {