Skip to content

Commit

Permalink
refactor(heading): paragraph 从 heading 移至 base-kit
Browse files Browse the repository at this point in the history
  • Loading branch information
yikoyu committed Apr 17, 2023
1 parent f2e4704 commit fe752bf
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 16 deletions.
6 changes: 6 additions & 0 deletions src/extensions/base-kit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import Document from '@tiptap/extension-document'
import Dropcursor, { DropcursorOptions } from '@tiptap/extension-dropcursor'
import Gapcursor from '@tiptap/extension-gapcursor'
import CharacterCount, { CharacterCountOptions } from '@tiptap/extension-character-count'
import Paragraph, { ParagraphOptions } from '@tiptap/extension-paragraph'
import HardBreak, { HardBreakOptions } from '@tiptap/extension-hard-break'

import Text from '@tiptap/extension-text'
Expand All @@ -24,6 +25,7 @@ export interface BaseKitOptions {
hardBreak: Partial<HardBreakOptions> | false
text: any
placeholder: Partial<PlaceholderOptions> | false
paragraph: Partial<ParagraphOptions> | false
focus: Partial<FocusOptions> | false
bubble: Partial<BubbleOptions<BaseKitOptions>>
}
Expand Down Expand Up @@ -83,6 +85,10 @@ export default Extension.create<BaseKitOptions>({
extensions.push(CharacterCount.configure(this.options.characterCount))
}

if (this.options.paragraph !== false) {
extensions.push(Paragraph.configure(this.options.paragraph))
}

if (this.options.hardBreak !== false) {
extensions.push(HardBreak.configure(this.options.hardBreak))
}
Expand Down
21 changes: 5 additions & 16 deletions src/extensions/heading.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,22 @@
import { Extensions } from '@tiptap/core'
import type { Extension } from '@tiptap/core'
import Heading, { HeadingOptions as TiptapHeadingOptions } from '@tiptap/extension-heading'
import Paragraph, { ParagraphOptions as TiptapParagraphOptions } from '@tiptap/extension-paragraph'
import ActionMenuButton, { type Item } from './components/ActionMenuButton.vue'
import type { BaseKitOptions } from './base-kit'
import type { ButtonView, GeneralOptions } from '@/type'

export interface HeadingOptions extends TiptapHeadingOptions, GeneralOptions {
button: ButtonView<HeadingOptions>
paragraph: TiptapParagraphOptions | false
}

export default Heading.extend<HeadingOptions>({
addOptions() {
return {
...this.parent?.(),
levels: [1, 2, 3, 4, 5, 6],
paragraph: {
HTMLAttributes: {}
},
button: ({ editor, extension, t }) => {
const { extensions = [] } = editor.extensionManager ?? []
const levels = extension.options?.levels || []
const baseKitExt = extensions.find(k => k.name === 'base-kit') as Extension<BaseKitOptions>

const items: Item[] = levels.map(level => ({
action: () => editor.commands.toggleHeading({ level }),
Expand All @@ -27,7 +25,7 @@ export default Heading.extend<HeadingOptions>({
title: t(`editor.heading.h${level}.tooltip`)
}))

if (extension.options.paragraph !== false) {
if (baseKitExt && baseKitExt.options.paragraph !== false) {
items.unshift({
action: () => editor.commands.setParagraph(),
isActive: () => editor.isActive('paragraph') || false,
Expand All @@ -47,14 +45,5 @@ export default Heading.extend<HeadingOptions>({
}
}
}
},
addExtensions() {
const extensions: Extensions = []

if (this.options.paragraph !== false) {
extensions.push(Paragraph.configure(this.options.paragraph))
}

return extensions
}
})

0 comments on commit fe752bf

Please sign in to comment.