From cfd29fac86e03d72a0c05ec8d26aac905d19c5a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Fri, 23 Apr 2021 08:58:03 +0200 Subject: [PATCH 1/6] fix: better merge mark attributes for existing marks, fix #1039 --- packages/core/src/commands/setMark.ts | 37 +++++++++++++++---- .../core/src/commands/updateAttributes.ts | 10 ++++- 2 files changed, 38 insertions(+), 9 deletions(-) diff --git a/packages/core/src/commands/setMark.ts b/packages/core/src/commands/setMark.ts index 9e3e0ff2..e97bcf38 100644 --- a/packages/core/src/commands/setMark.ts +++ b/packages/core/src/commands/setMark.ts @@ -18,18 +18,41 @@ export const setMark: RawCommands['setMark'] = (typeOrName, attributes = {}) => const { selection } = tr const { empty, ranges } = 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)) + const oldAttributes = getMarkAttributes(state, type) + + tr.addStoredMark(type.create({ + ...oldAttributes, + ...attributes, + })) } else { ranges.forEach(range => { - tr.addMark(range.$from.pos, range.$to.pos, type.create(newAttributes)) + const from = range.$from.pos + const to = range.$to.pos + + state.doc.nodesBetween(from, to, (node, pos) => { + const trimmedFrom = Math.max(pos, from) + const trimmedTo = Math.min(pos + node.nodeSize, to) + const someHasMark = node.marks.find(mark => mark.type === type) + + // if there is already a mark of this type + // we know that we have to merge its attributes + // otherwise we add a fresh new mark + if (someHasMark) { + node.marks.forEach(mark => { + if (type === mark.type) { + tr.addMark(trimmedFrom, trimmedTo, type.create({ + ...mark.attrs, + ...attributes, + })) + } + }) + } else { + tr.addMark(trimmedFrom, trimmedTo, type.create(attributes)) + } + }) }) } } diff --git a/packages/core/src/commands/updateAttributes.ts b/packages/core/src/commands/updateAttributes.ts index 0c62cf5b..262a682d 100644 --- a/packages/core/src/commands/updateAttributes.ts +++ b/packages/core/src/commands/updateAttributes.ts @@ -40,7 +40,10 @@ export const updateAttributes: RawCommands['updateAttributes'] = (typeOrName, at if (dispatch) { tr.selection.ranges.forEach(range => { - state.doc.nodesBetween(range.$from.pos, range.$to.pos, (node, pos) => { + const from = range.$from.pos + const to = range.$to.pos + + state.doc.nodesBetween(from, to, (node, pos) => { if (nodeType && nodeType === node.type) { tr.setNodeMarkup(pos, undefined, { ...node.attrs, @@ -51,7 +54,10 @@ export const updateAttributes: RawCommands['updateAttributes'] = (typeOrName, at if (markType && node.marks.length) { node.marks.forEach(mark => { if (markType === mark.type) { - tr.addMark(pos, pos + node.nodeSize, markType.create({ + const trimmedFrom = Math.max(pos, from) + const trimmedTo = Math.min(pos + node.nodeSize, to) + + tr.addMark(trimmedFrom, trimmedTo, markType.create({ ...mark.attrs, ...attributes, })) From 20f870dc9d1f28306e5c0446dd3b9cc154f38922 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Fri, 23 Apr 2021 09:02:06 +0200 Subject: [PATCH 2/6] Publish - @tiptap/core@2.0.0-beta.37 - @tiptap/extension-collaboration-cursor@2.0.0-beta.11 - @tiptap/extension-collaboration@2.0.0-beta.9 - @tiptap/extension-mention@2.0.0-beta.38 - @tiptap/extension-task-item@2.0.0-beta.7 - @tiptap/html@2.0.0-beta.37 - @tiptap/starter-kit@2.0.0-beta.33 - @tiptap/suggestion@2.0.0-beta.38 --- packages/core/CHANGELOG.md | 11 +++++++++++ packages/core/package.json | 2 +- packages/extension-collaboration-cursor/CHANGELOG.md | 8 ++++++++ packages/extension-collaboration-cursor/package.json | 2 +- packages/extension-collaboration/CHANGELOG.md | 8 ++++++++ packages/extension-collaboration/package.json | 2 +- packages/extension-mention/CHANGELOG.md | 8 ++++++++ packages/extension-mention/package.json | 4 ++-- packages/extension-task-item/CHANGELOG.md | 8 ++++++++ packages/extension-task-item/package.json | 2 +- packages/html/CHANGELOG.md | 8 ++++++++ packages/html/package.json | 4 ++-- packages/starter-kit/CHANGELOG.md | 8 ++++++++ packages/starter-kit/package.json | 4 ++-- packages/suggestion/CHANGELOG.md | 8 ++++++++ packages/suggestion/package.json | 4 ++-- 16 files changed, 79 insertions(+), 12 deletions(-) diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index 2398c872..fc2ec5e7 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/CHANGELOG.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [2.0.0-beta.37](https://github.com/ueberdosis/tiptap/compare/@tiptap/core@2.0.0-beta.36...@tiptap/core@2.0.0-beta.37) (2021-04-23) + + +### Bug Fixes + +* better merge mark attributes for existing marks, fix [#1039](https://github.com/ueberdosis/tiptap/issues/1039) ([cfd29fa](https://github.com/ueberdosis/tiptap/commit/cfd29fac86e03d72a0c05ec8d26aac905d19c5a2)) + + + + + # [2.0.0-beta.36](https://github.com/ueberdosis/tiptap/compare/@tiptap/core@2.0.0-beta.35...@tiptap/core@2.0.0-beta.36) (2021-04-22) **Note:** Version bump only for package @tiptap/core diff --git a/packages/core/package.json b/packages/core/package.json index 29a66ee4..30ce6fac 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,7 +1,7 @@ { "name": "@tiptap/core", "description": "headless rich text editor", - "version": "2.0.0-beta.36", + "version": "2.0.0-beta.37", "homepage": "https://tiptap.dev", "keywords": [ "tiptap", diff --git a/packages/extension-collaboration-cursor/CHANGELOG.md b/packages/extension-collaboration-cursor/CHANGELOG.md index 800014bc..2ec319c3 100644 --- a/packages/extension-collaboration-cursor/CHANGELOG.md +++ b/packages/extension-collaboration-cursor/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [2.0.0-beta.11](https://github.com/ueberdosis/tiptap/compare/@tiptap/extension-collaboration-cursor@2.0.0-beta.10...@tiptap/extension-collaboration-cursor@2.0.0-beta.11) (2021-04-23) + +**Note:** Version bump only for package @tiptap/extension-collaboration-cursor + + + + + # [2.0.0-beta.10](https://github.com/ueberdosis/tiptap/compare/@tiptap/extension-collaboration-cursor@2.0.0-beta.9...@tiptap/extension-collaboration-cursor@2.0.0-beta.10) (2021-04-22) **Note:** Version bump only for package @tiptap/extension-collaboration-cursor diff --git a/packages/extension-collaboration-cursor/package.json b/packages/extension-collaboration-cursor/package.json index af847aea..e0848ca8 100644 --- a/packages/extension-collaboration-cursor/package.json +++ b/packages/extension-collaboration-cursor/package.json @@ -1,7 +1,7 @@ { "name": "@tiptap/extension-collaboration-cursor", "description": "collaboration cursor extension for tiptap", - "version": "2.0.0-beta.10", + "version": "2.0.0-beta.11", "homepage": "https://tiptap.dev", "keywords": [ "tiptap", diff --git a/packages/extension-collaboration/CHANGELOG.md b/packages/extension-collaboration/CHANGELOG.md index 6f9aa582..117ec672 100644 --- a/packages/extension-collaboration/CHANGELOG.md +++ b/packages/extension-collaboration/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [2.0.0-beta.9](https://github.com/ueberdosis/tiptap/compare/@tiptap/extension-collaboration@2.0.0-beta.8...@tiptap/extension-collaboration@2.0.0-beta.9) (2021-04-23) + +**Note:** Version bump only for package @tiptap/extension-collaboration + + + + + # [2.0.0-beta.8](https://github.com/ueberdosis/tiptap/compare/@tiptap/extension-collaboration@2.0.0-beta.7...@tiptap/extension-collaboration@2.0.0-beta.8) (2021-04-22) **Note:** Version bump only for package @tiptap/extension-collaboration diff --git a/packages/extension-collaboration/package.json b/packages/extension-collaboration/package.json index b33d76ec..97a6a47e 100644 --- a/packages/extension-collaboration/package.json +++ b/packages/extension-collaboration/package.json @@ -1,7 +1,7 @@ { "name": "@tiptap/extension-collaboration", "description": "collaboration extension for tiptap", - "version": "2.0.0-beta.8", + "version": "2.0.0-beta.9", "homepage": "https://tiptap.dev", "keywords": [ "tiptap", diff --git a/packages/extension-mention/CHANGELOG.md b/packages/extension-mention/CHANGELOG.md index 3f2825a6..abe2a836 100644 --- a/packages/extension-mention/CHANGELOG.md +++ b/packages/extension-mention/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [2.0.0-beta.38](https://github.com/ueberdosis/tiptap/compare/@tiptap/extension-mention@2.0.0-beta.37...@tiptap/extension-mention@2.0.0-beta.38) (2021-04-23) + +**Note:** Version bump only for package @tiptap/extension-mention + + + + + # [2.0.0-beta.37](https://github.com/ueberdosis/tiptap/compare/@tiptap/extension-mention@2.0.0-beta.36...@tiptap/extension-mention@2.0.0-beta.37) (2021-04-22) **Note:** Version bump only for package @tiptap/extension-mention diff --git a/packages/extension-mention/package.json b/packages/extension-mention/package.json index f49f229c..75f29939 100644 --- a/packages/extension-mention/package.json +++ b/packages/extension-mention/package.json @@ -1,7 +1,7 @@ { "name": "@tiptap/extension-mention", "description": "mention extension for tiptap", - "version": "2.0.0-beta.37", + "version": "2.0.0-beta.38", "homepage": "https://tiptap.dev", "keywords": [ "tiptap", @@ -25,6 +25,6 @@ "@tiptap/core": "^2.0.0-beta.1" }, "dependencies": { - "@tiptap/suggestion": "^2.0.0-beta.37" + "@tiptap/suggestion": "^2.0.0-beta.38" } } diff --git a/packages/extension-task-item/CHANGELOG.md b/packages/extension-task-item/CHANGELOG.md index 89346493..aa82524b 100644 --- a/packages/extension-task-item/CHANGELOG.md +++ b/packages/extension-task-item/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [2.0.0-beta.7](https://github.com/ueberdosis/tiptap/compare/@tiptap/extension-task-item@2.0.0-beta.6...@tiptap/extension-task-item@2.0.0-beta.7) (2021-04-23) + +**Note:** Version bump only for package @tiptap/extension-task-item + + + + + # [2.0.0-beta.6](https://github.com/ueberdosis/tiptap/compare/@tiptap/extension-task-item@2.0.0-beta.5...@tiptap/extension-task-item@2.0.0-beta.6) (2021-04-22) **Note:** Version bump only for package @tiptap/extension-task-item diff --git a/packages/extension-task-item/package.json b/packages/extension-task-item/package.json index 92e02cdf..afb4a18e 100644 --- a/packages/extension-task-item/package.json +++ b/packages/extension-task-item/package.json @@ -1,7 +1,7 @@ { "name": "@tiptap/extension-task-item", "description": "task item extension for tiptap", - "version": "2.0.0-beta.6", + "version": "2.0.0-beta.7", "homepage": "https://tiptap.dev", "keywords": [ "tiptap", diff --git a/packages/html/CHANGELOG.md b/packages/html/CHANGELOG.md index c35ea6b5..bbe38c6a 100644 --- a/packages/html/CHANGELOG.md +++ b/packages/html/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [2.0.0-beta.37](https://github.com/ueberdosis/tiptap/compare/@tiptap/html@2.0.0-beta.36...@tiptap/html@2.0.0-beta.37) (2021-04-23) + +**Note:** Version bump only for package @tiptap/html + + + + + # [2.0.0-beta.36](https://github.com/ueberdosis/tiptap/compare/@tiptap/html@2.0.0-beta.35...@tiptap/html@2.0.0-beta.36) (2021-04-22) **Note:** Version bump only for package @tiptap/html diff --git a/packages/html/package.json b/packages/html/package.json index 7a8636cd..e66afd23 100644 --- a/packages/html/package.json +++ b/packages/html/package.json @@ -1,7 +1,7 @@ { "name": "@tiptap/html", "description": "utility package to render tiptap JSON as HTML", - "version": "2.0.0-beta.36", + "version": "2.0.0-beta.37", "homepage": "https://tiptap.dev", "keywords": [ "tiptap", @@ -22,7 +22,7 @@ "dist" ], "dependencies": { - "@tiptap/core": "^2.0.0-beta.36", + "@tiptap/core": "^2.0.0-beta.37", "hostic-dom": "^0.8.6", "prosemirror-model": "^1.14.0" } diff --git a/packages/starter-kit/CHANGELOG.md b/packages/starter-kit/CHANGELOG.md index 5a4171e1..d377fdec 100644 --- a/packages/starter-kit/CHANGELOG.md +++ b/packages/starter-kit/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [2.0.0-beta.33](https://github.com/ueberdosis/tiptap/compare/@tiptap/starter-kit@2.0.0-beta.32...@tiptap/starter-kit@2.0.0-beta.33) (2021-04-23) + +**Note:** Version bump only for package @tiptap/starter-kit + + + + + # [2.0.0-beta.32](https://github.com/ueberdosis/tiptap/compare/@tiptap/starter-kit@2.0.0-beta.31...@tiptap/starter-kit@2.0.0-beta.32) (2021-04-22) **Note:** Version bump only for package @tiptap/starter-kit diff --git a/packages/starter-kit/package.json b/packages/starter-kit/package.json index c3964fab..7c4ba1f5 100644 --- a/packages/starter-kit/package.json +++ b/packages/starter-kit/package.json @@ -1,7 +1,7 @@ { "name": "@tiptap/starter-kit", "description": "starter kit for tiptap", - "version": "2.0.0-beta.32", + "version": "2.0.0-beta.33", "homepage": "https://tiptap.dev", "keywords": [ "tiptap", @@ -22,7 +22,7 @@ "dist" ], "dependencies": { - "@tiptap/core": "^2.0.0-beta.36", + "@tiptap/core": "^2.0.0-beta.37", "@tiptap/extension-blockquote": "^2.0.0-beta.5", "@tiptap/extension-bold": "^2.0.0-beta.5", "@tiptap/extension-bullet-list": "^2.0.0-beta.5", diff --git a/packages/suggestion/CHANGELOG.md b/packages/suggestion/CHANGELOG.md index 16015576..de348cab 100644 --- a/packages/suggestion/CHANGELOG.md +++ b/packages/suggestion/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [2.0.0-beta.38](https://github.com/ueberdosis/tiptap/compare/@tiptap/suggestion@2.0.0-beta.37...@tiptap/suggestion@2.0.0-beta.38) (2021-04-23) + +**Note:** Version bump only for package @tiptap/suggestion + + + + + # [2.0.0-beta.37](https://github.com/ueberdosis/tiptap/compare/@tiptap/suggestion@2.0.0-beta.36...@tiptap/suggestion@2.0.0-beta.37) (2021-04-22) **Note:** Version bump only for package @tiptap/suggestion diff --git a/packages/suggestion/package.json b/packages/suggestion/package.json index 4644cbd6..b096efff 100644 --- a/packages/suggestion/package.json +++ b/packages/suggestion/package.json @@ -1,7 +1,7 @@ { "name": "@tiptap/suggestion", "description": "suggestion plugin for tiptap", - "version": "2.0.0-beta.37", + "version": "2.0.0-beta.38", "homepage": "https://tiptap.dev", "keywords": [ "tiptap", @@ -22,7 +22,7 @@ "dist" ], "dependencies": { - "@tiptap/core": "^2.0.0-beta.36", + "@tiptap/core": "^2.0.0-beta.37", "prosemirror-model": "^1.14.0", "prosemirror-state": "^1.3.4", "prosemirror-view": "^1.18.2" From c3d4ac9d93ac4af988352e93aff29c7f5c97e6fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Fri, 23 Apr 2021 09:29:06 +0200 Subject: [PATCH 3/6] docs: new collab rooms for HN --- docs/src/demos/Examples/CollaborativeEditing/index.vue | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/src/demos/Examples/CollaborativeEditing/index.vue b/docs/src/demos/Examples/CollaborativeEditing/index.vue index cb726599..20dd7f3b 100644 --- a/docs/src/demos/Examples/CollaborativeEditing/index.vue +++ b/docs/src/demos/Examples/CollaborativeEditing/index.vue @@ -41,7 +41,9 @@ const getRandomRoom = () => { return getRandomElement([ 'room.one', 'room.two', - 'room.three', + // 'room.three', // HN killed it + 'room.four', + 'room.five', ]) } From bf95efe07f83e5a7053763b8f1447269e452c4cf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Fri, 23 Apr 2021 10:46:26 +0200 Subject: [PATCH 4/6] add new rooms --- .../Examples/CollaborativeEditing/index.vue | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/docs/src/demos/Examples/CollaborativeEditing/index.vue b/docs/src/demos/Examples/CollaborativeEditing/index.vue index 20dd7f3b..10628684 100644 --- a/docs/src/demos/Examples/CollaborativeEditing/index.vue +++ b/docs/src/demos/Examples/CollaborativeEditing/index.vue @@ -39,11 +39,17 @@ const getRandomElement = list => { const getRandomRoom = () => { return getRandomElement([ - 'room.one', - 'room.two', - // 'room.three', // HN killed it - 'room.four', - 'room.five', + // HN killed it all + // 'room.one', + // 'room.two', + // 'room.three', + // 'room.four', + // 'room.five', + 'room.six', + 'room.seven', + 'room.eight', + 'room.nine', + 'room.ten', ]) } From 23fb4704a8d9555e2c1f741944d78a29467af899 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Fri, 23 Apr 2021 11:30:23 +0200 Subject: [PATCH 5/6] docs: add new room --- docs/src/demos/Examples/CollaborativeEditing/index.vue | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/src/demos/Examples/CollaborativeEditing/index.vue b/docs/src/demos/Examples/CollaborativeEditing/index.vue index 10628684..9078d26e 100644 --- a/docs/src/demos/Examples/CollaborativeEditing/index.vue +++ b/docs/src/demos/Examples/CollaborativeEditing/index.vue @@ -49,7 +49,8 @@ const getRandomRoom = () => { 'room.seven', 'room.eight', 'room.nine', - 'room.ten', + // 'room.ten', + 'room.eleven', ]) } From 0bdd0ba8a36cb37fe47bf9d478be42bf126d8cb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Fri, 23 Apr 2021 12:45:01 +0200 Subject: [PATCH 6/6] docs: add new rooms --- docs/src/demos/Examples/CollaborativeEditing/index.vue | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/src/demos/Examples/CollaborativeEditing/index.vue b/docs/src/demos/Examples/CollaborativeEditing/index.vue index 9078d26e..fbb333da 100644 --- a/docs/src/demos/Examples/CollaborativeEditing/index.vue +++ b/docs/src/demos/Examples/CollaborativeEditing/index.vue @@ -46,11 +46,13 @@ const getRandomRoom = () => { // 'room.four', // 'room.five', 'room.six', - 'room.seven', - 'room.eight', + // 'room.seven', + // 'room.eight', 'room.nine', // 'room.ten', 'room.eleven', + 'room.twelve', + 'room.thirteen', ]) }