diff --git a/docs/src/demos/Examples/Basic/index.vue b/docs/src/demos/Examples/Basic/index.vue index 76450865..1f999876 100644 --- a/docs/src/demos/Examples/Basic/index.vue +++ b/docs/src/demos/Examples/Basic/index.vue @@ -40,10 +40,10 @@ h6 - + bullet list - + ordered list diff --git a/docs/src/demos/Examples/CollaborativeEditing/index.vue b/docs/src/demos/Examples/CollaborativeEditing/index.vue index e14f98e0..be505434 100644 --- a/docs/src/demos/Examples/CollaborativeEditing/index.vue +++ b/docs/src/demos/Examples/CollaborativeEditing/index.vue @@ -40,10 +40,10 @@ h6 - + bullet list - + ordered list diff --git a/docs/src/demos/Examples/CollaborativeEditingWs/index.vue b/docs/src/demos/Examples/CollaborativeEditingWs/index.vue index 2bc267ba..9a2b63e7 100644 --- a/docs/src/demos/Examples/CollaborativeEditingWs/index.vue +++ b/docs/src/demos/Examples/CollaborativeEditingWs/index.vue @@ -40,10 +40,10 @@ h6 - + bullet list - + ordered list diff --git a/docs/src/demos/Examples/Links/index.vue b/docs/src/demos/Examples/Links/index.vue index 6bb39c7d..d0a9be48 100644 --- a/docs/src/demos/Examples/Links/index.vue +++ b/docs/src/demos/Examples/Links/index.vue @@ -3,7 +3,7 @@ link - + remove @@ -55,7 +55,7 @@ export default { addLink() { const url = window.prompt('URL') - this.editor.chain().focus().link({ href: url }).run() + this.editor.chain().focus().addLink({ href: url }).run() }, }, diff --git a/docs/src/demos/Marks/Link/index.vue b/docs/src/demos/Marks/Link/index.vue index 296f6e8c..b3f13350 100644 --- a/docs/src/demos/Marks/Link/index.vue +++ b/docs/src/demos/Marks/Link/index.vue @@ -3,7 +3,7 @@ link - + remove @@ -52,7 +52,7 @@ export default { addLink() { const url = window.prompt('URL') - this.editor.chain().focus().link({ href: url }).run() + this.editor.chain().focus().addLink({ href: url }).run() }, }, diff --git a/docs/src/demos/Nodes/BulletList/index.vue b/docs/src/demos/Nodes/BulletList/index.vue index c501ef12..e89cf01d 100644 --- a/docs/src/demos/Nodes/BulletList/index.vue +++ b/docs/src/demos/Nodes/BulletList/index.vue @@ -1,6 +1,6 @@ - + bullet list diff --git a/docs/src/demos/Nodes/ListItem/index.vue b/docs/src/demos/Nodes/ListItem/index.vue index 9cc93b50..41490aab 100644 --- a/docs/src/demos/Nodes/ListItem/index.vue +++ b/docs/src/demos/Nodes/ListItem/index.vue @@ -1,9 +1,9 @@ - + bullet list - + ordered list diff --git a/docs/src/demos/Nodes/OrderedList/index.vue b/docs/src/demos/Nodes/OrderedList/index.vue index 45eda95c..578ff435 100644 --- a/docs/src/demos/Nodes/OrderedList/index.vue +++ b/docs/src/demos/Nodes/OrderedList/index.vue @@ -1,6 +1,6 @@ - + ordered list diff --git a/docs/src/demos/Nodes/TaskList/index.vue b/docs/src/demos/Nodes/TaskList/index.vue index 4627bc7b..a42f888a 100644 --- a/docs/src/demos/Nodes/TaskList/index.vue +++ b/docs/src/demos/Nodes/TaskList/index.vue @@ -1,6 +1,6 @@ - + task list diff --git a/docs/src/docPages/api/commands.md b/docs/src/docPages/api/commands.md index 7302b8fe..8a28b065 100644 --- a/docs/src/docPages/api/commands.md +++ b/docs/src/docPages/api/commands.md @@ -106,6 +106,7 @@ Have a look at all of the core commands listed below. They should give you a goo ### Nodes & Marks | Command | Description | | ----------------------- | --------------------------------------------------------- | +| .addMark() | Add a mark with new attributes. | | .clearNodes() | Normalize nodes to a simple paragraph. | | .extendMarkRange() | Extends the text selection to the current mark. | | .removeMark() | Remove a mark in the current selection. | @@ -118,7 +119,6 @@ Have a look at all of the core commands listed below. They should give you a goo | .toggleBlockType() | Toggle a node with another node. | | .toggleMark() | Toggle a mark on and off. | | .toggleWrap() | Wraps nodes in another node, or removes an existing wrap. | -| .updateMarkAttributes() | Update a mark with new attributes. | | .updateNodeAttributes() | Update attributes of a node. | ### Lists diff --git a/docs/src/docPages/api/keyboard-shortcuts.md b/docs/src/docPages/api/keyboard-shortcuts.md index 5f009cc7..65cf6294 100644 --- a/docs/src/docPages/api/keyboard-shortcuts.md +++ b/docs/src/docPages/api/keyboard-shortcuts.md @@ -104,7 +104,7 @@ const CustomBulletList = BulletList.extend({ addKeyboardShortcuts() { return { // ↓ your new keyboard shortcut - 'Mod-l': () => this.editor.commands.bulletList(), + 'Mod-l': () => this.editor.commands.toggleBulletList(), } }, }) diff --git a/docs/src/docPages/guide/build-custom-extensions.md b/docs/src/docPages/guide/build-custom-extensions.md index 34acf50a..15e7d770 100644 --- a/docs/src/docPages/guide/build-custom-extensions.md +++ b/docs/src/docPages/guide/build-custom-extensions.md @@ -25,7 +25,7 @@ import BulletList from '@tiptap/extension-bullet-list' const CustomBulletList = BulletList.extend({ addKeyboardShortcuts() { return { - 'Mod-l': () => this.editor.commands.bulletList(), + 'Mod-l': () => this.editor.commands.toggleBulletList(), } }, }) @@ -296,7 +296,7 @@ import BulletList from '@tiptap/extension-bullet-list' const CustomBulletList = BulletList.extend({ addKeyboardShortcuts() { return { - 'Mod-l': () => this.editor.commands.bulletList(), + 'Mod-l': () => this.editor.commands.toggleBulletList(), } }, }) diff --git a/packages/core/src/commands/addMark.ts b/packages/core/src/commands/addMark.ts index 4770fcc0..38ff5f7f 100644 --- a/packages/core/src/commands/addMark.ts +++ b/packages/core/src/commands/addMark.ts @@ -1,14 +1,24 @@ import { MarkType } from 'prosemirror-model' import { Command } from '../types' import getMarkType from '../utils/getMarkType' +import getMarkAttributes from '../utils/getMarkAttributes' export default (typeOrName: string | MarkType, attributes?: {}): Command => ({ tr, state, dispatch }) => { const { selection } = tr + const { from, to, empty } = selection const type = getMarkType(typeOrName, state.schema) - const { from, to } = selection + const oldAttributes = getMarkAttributes(state, type) + const newAttributes = { + ...oldAttributes, + ...attributes, + } if (dispatch) { - tr.addMark(from, to, type.create(attributes)) + if (empty) { + tr.addStoredMark(type.create(newAttributes)) + } else { + tr.addMark(from, to, type.create(newAttributes)) + } } return true diff --git a/packages/core/src/commands/toggleMark.ts b/packages/core/src/commands/toggleMark.ts index 60408688..b1154b21 100644 --- a/packages/core/src/commands/toggleMark.ts +++ b/packages/core/src/commands/toggleMark.ts @@ -12,7 +12,7 @@ export default (typeOrName: string | MarkType, attributes?: {}): Command => ({ s && !markIsActive(state, type, attributes) if (attributes && hasMarkWithDifferentAttributes) { - return commands.updateMarkAttributes(type, attributes) + return commands.addMark(type, attributes) } return toggleMark(type, attributes)(state, dispatch) diff --git a/packages/core/src/commands/updateMarkAttributes.ts b/packages/core/src/commands/updateMarkAttributes.ts deleted file mode 100644 index 76073d54..00000000 --- a/packages/core/src/commands/updateMarkAttributes.ts +++ /dev/null @@ -1,25 +0,0 @@ -import { MarkType } from 'prosemirror-model' -import { Command } from '../types' -import getMarkType from '../utils/getMarkType' -import getMarkAttributes from '../utils/getMarkAttributes' - -export default (typeOrName: string | MarkType, attributes: {}): Command => ({ tr, state, dispatch }) => { - const { selection } = tr - const { from, to, empty } = selection - const type = getMarkType(typeOrName, state.schema) - const oldAttributes = getMarkAttributes(state, type) - const newAttributes = { - ...oldAttributes, - ...attributes, - } - - if (dispatch) { - if (empty) { - tr.addStoredMark(type.create(newAttributes)) - } else { - tr.addMark(from, to, type.create(newAttributes)) - } - } - - return true -} diff --git a/packages/core/src/extensions/commands.ts b/packages/core/src/extensions/commands.ts index 268d94ae..f10b2701 100644 --- a/packages/core/src/extensions/commands.ts +++ b/packages/core/src/extensions/commands.ts @@ -26,7 +26,6 @@ import toggleList from '../commands/toggleList' import toggleMark from '../commands/toggleMark' import toggleWrap from '../commands/toggleWrap' import tryCommand from '../commands/try' -import updateMarkAttributes from '../commands/updateMarkAttributes' import updateNodeAttributes from '../commands/updateNodeAttributes' import wrapInList from '../commands/wrapInList' @@ -34,7 +33,7 @@ export const Commands = Extension.create({ addCommands() { return { /** - * Add a mark. + * Add a mark with new attributes. */ addMark, /** @@ -141,10 +140,6 @@ export const Commands = Extension.create({ * Runs one command after the other and stops at the first which returns true. */ try: tryCommand, - /** - * Update a mark with new attributes. - */ - updateMarkAttributes, /** * Update attributes of a node. */ diff --git a/packages/extension-bold/src/index.ts b/packages/extension-bold/src/index.ts index 4e60e821..314fa873 100644 --- a/packages/extension-bold/src/index.ts +++ b/packages/extension-bold/src/index.ts @@ -1,5 +1,8 @@ import { - Command, Mark, markInputRule, markPasteRule, + Command, + Mark, + markInputRule, + markPasteRule, } from '@tiptap/core' export interface BoldOptions { diff --git a/packages/extension-bullet-list/src/index.ts b/packages/extension-bullet-list/src/index.ts index 3fa2338b..fae37492 100644 --- a/packages/extension-bullet-list/src/index.ts +++ b/packages/extension-bullet-list/src/index.ts @@ -35,7 +35,7 @@ const BulletList = Node.create({ /** * Toggle a bullet list */ - bulletList: (): Command => ({ commands }) => { + toggleBulletList: (): Command => ({ commands }) => { return commands.toggleList('bulletList', 'listItem') }, } @@ -43,7 +43,7 @@ const BulletList = Node.create({ addKeyboardShortcuts() { return { - 'Shift-Control-8': () => this.editor.commands.bulletList(), + 'Shift-Control-8': () => this.editor.commands.toggleBulletList(), } }, diff --git a/packages/extension-font-family/src/index.ts b/packages/extension-font-family/src/index.ts index e83846dc..c1eebf91 100644 --- a/packages/extension-font-family/src/index.ts +++ b/packages/extension-font-family/src/index.ts @@ -42,7 +42,7 @@ const FontFamily = Extension.create({ */ fontFamily: (fontFamily: string | null = null): Command => ({ chain }) => { return chain() - .updateMarkAttributes('textStyle', { fontFamily }) + .addMark('textStyle', { fontFamily }) .removeEmptyTextStyle() .run() }, diff --git a/packages/extension-link/src/index.ts b/packages/extension-link/src/index.ts index f7607f1b..829afd29 100644 --- a/packages/extension-link/src/index.ts +++ b/packages/extension-link/src/index.ts @@ -47,14 +47,22 @@ const Link = Mark.create({ addCommands() { return { /** - * Toggle or update a link mark + * Add a link mark */ - link: (options: { href?: string, target?: string } = {}): Command => ({ commands }) => { - if (!options.href) { - return commands.removeMark('link') - } - - return commands.updateMarkAttributes('link', options) + addLink: (attributes: { href?: string, target?: string } = {}): Command => ({ commands }) => { + return commands.addMark('link', attributes) + }, + /** + * Toggle a link mark + */ + toggleLink: (attributes: { href?: string, target?: string } = {}): Command => ({ commands }) => { + return commands.toggleMark('link', attributes) + }, + /** + * Remove a link mark + */ + removeLink: (): Command => ({ commands }) => { + return commands.removeMark('link') }, } }, diff --git a/packages/extension-ordered-list/src/index.ts b/packages/extension-ordered-list/src/index.ts index d20b361a..3f566804 100644 --- a/packages/extension-ordered-list/src/index.ts +++ b/packages/extension-ordered-list/src/index.ts @@ -54,7 +54,7 @@ const OrderedList = Node.create({ /** * Toggle an ordered list */ - orderedList: (): Command => ({ commands }) => { + toggleOrderedList: (): Command => ({ commands }) => { return commands.toggleList('orderedList', 'listItem') }, } @@ -62,7 +62,7 @@ const OrderedList = Node.create({ addKeyboardShortcuts() { return { - 'Shift-Control-9': () => this.editor.commands.orderedList(), + 'Shift-Control-9': () => this.editor.commands.toggleOrderedList(), } }, diff --git a/packages/extension-task-list/src/index.ts b/packages/extension-task-list/src/index.ts index 554cf283..f7de2fa0 100644 --- a/packages/extension-task-list/src/index.ts +++ b/packages/extension-task-list/src/index.ts @@ -35,7 +35,7 @@ const TaskList = Node.create({ /** * Toggle a task list */ - taskList: (): Command => ({ commands }) => { + toggleTaskList: (): Command => ({ commands }) => { return commands.toggleList('taskList', 'taskItem') }, } diff --git a/rollup.config.js b/rollup.config.js index 54f4e82b..86f3e5cb 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -87,7 +87,6 @@ async function build(commandLineArgs) { }), ...basePlugins, typescript({ - check: false, tsconfigOverride: { compilerOptions: { declaration: true, @@ -123,7 +122,6 @@ async function build(commandLineArgs) { plugins: [ ...basePlugins, typescript({ - check: false, tsconfigOverride: { compilerOptions: { paths: {