From fa8711e2a81814aaa8a2a05534ca11f6f17d871f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Tue, 1 Jun 2021 17:44:40 +0200 Subject: [PATCH 01/13] add nested editor experiment --- .../demos/Experiments/Nested/CustomNode.js | 80 +++++++++++++ .../demos/Experiments/Nested/CustomNode.vue | 106 ++++++++++++++++++ docs/src/demos/Experiments/Nested/Nested.vue | 45 ++++++++ docs/src/demos/Experiments/Nested/index.vue | 49 ++++++++ 4 files changed, 280 insertions(+) create mode 100644 docs/src/demos/Experiments/Nested/CustomNode.js create mode 100644 docs/src/demos/Experiments/Nested/CustomNode.vue create mode 100644 docs/src/demos/Experiments/Nested/Nested.vue create mode 100644 docs/src/demos/Experiments/Nested/index.vue diff --git a/docs/src/demos/Experiments/Nested/CustomNode.js b/docs/src/demos/Experiments/Nested/CustomNode.js new file mode 100644 index 000000000..4b95abcee --- /dev/null +++ b/docs/src/demos/Experiments/Nested/CustomNode.js @@ -0,0 +1,80 @@ +import { Node, mergeAttributes } from '@tiptap/core' +import { VueNodeViewRenderer } from '@tiptap/vue-2' +import { Plugin } from 'prosemirror-state' + +import CustomNodeView from './CustomNode.vue' + +export default Node.create({ + name: 'customNode', + isBlock: true, + inline: false, + group: 'block', + draggable: true, + isolating: true, + defining: true, + selectable: true, + + addAttributes() { + return { + nest: { default: false }, + } + }, + + parseHTML() { + return [ + { + tag: 'custom-node', + }, + ] + }, + + renderHTML({ HTMLAttributes }) { + return ['custom-node', mergeAttributes(HTMLAttributes)] + }, + + addNodeView() { + return VueNodeViewRenderer(CustomNodeView) + }, + + addProseMirrorPlugins() { + return [ + new Plugin({ + props: { + handleKeyDown: (view, event) => { + // Prevent _any_ key from clearing block. As soon as you start typing, + // and a block is focused, it'll blast the block away. + view.state.typing = true + }, + + handlePaste: (view, event, slice) => { + // Prevent pasting overwriting block + view.state.pasting = true + }, + }, + + filterTransaction: (transaction, state) => { + let result = true + + // Check if our flags are set, and if the selected node is a custom node + if (state.typing || state.pasting) { + transaction.mapping.maps.forEach(map => { + map.forEach((oldStart, oldEnd, newStart, newEnd) => { + state.doc.nodesBetween( + oldStart, + oldEnd, + (node, number, pos, parent, index) => { + if (node.type.name === 'customNode') { + result = false + } + }, + ) + }) + }) + } + + return result + }, + }), + ] + }, +}) diff --git a/docs/src/demos/Experiments/Nested/CustomNode.vue b/docs/src/demos/Experiments/Nested/CustomNode.vue new file mode 100644 index 000000000..bf299fab3 --- /dev/null +++ b/docs/src/demos/Experiments/Nested/CustomNode.vue @@ -0,0 +1,106 @@ + + + + + diff --git a/docs/src/demos/Experiments/Nested/Nested.vue b/docs/src/demos/Experiments/Nested/Nested.vue new file mode 100644 index 000000000..0cd31e6af --- /dev/null +++ b/docs/src/demos/Experiments/Nested/Nested.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/docs/src/demos/Experiments/Nested/index.vue b/docs/src/demos/Experiments/Nested/index.vue new file mode 100644 index 000000000..164f525cd --- /dev/null +++ b/docs/src/demos/Experiments/Nested/index.vue @@ -0,0 +1,49 @@ + + + + + From f5febda470c1ed96b96ece67dc4720cc9a81b109 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Tue, 1 Jun 2021 17:48:46 +0200 Subject: [PATCH 02/13] fix figure drag --- docs/src/demos/Experiments/Figure/figure.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/src/demos/Experiments/Figure/figure.ts b/docs/src/demos/Experiments/Figure/figure.ts index 9da3107e0..175129897 100644 --- a/docs/src/demos/Experiments/Figure/figure.ts +++ b/docs/src/demos/Experiments/Figure/figure.ts @@ -2,6 +2,7 @@ import { Command, Node, nodeInputRule, + mergeAttributes, } from '@tiptap/core' export interface FigureOptions { @@ -76,7 +77,7 @@ export const Figure = Node.create({ renderHTML({ HTMLAttributes }) { return [ 'figure', this.options.HTMLAttributes, - ['img', HTMLAttributes], + ['img', mergeAttributes(HTMLAttributes, { draggable: false })], ['figcaption', 0], ] }, From 2a4e02ade3b74999a9632673a607568644d6d26c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Tue, 1 Jun 2021 18:20:01 +0200 Subject: [PATCH 03/13] fix: prevent dispatch empty fragment when parsing content with insertContent --- packages/core/src/commands/insertContentAt.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/core/src/commands/insertContentAt.ts b/packages/core/src/commands/insertContentAt.ts index f346bfb7c..829ec1bc8 100644 --- a/packages/core/src/commands/insertContentAt.ts +++ b/packages/core/src/commands/insertContentAt.ts @@ -25,6 +25,12 @@ export const insertContentAt: RawCommands['insertContentAt'] = (position, value) preserveWhitespace: 'full', }, }) + + // don’t dispatch an empty fragment because this can lead to strange errors + if (content.toString() === '<>') { + return true + } + const { from, to } = typeof position === 'number' ? { from: position, to: position } : position From 4bc0de8834f21805681f4ba03f6f3f6bd45c8b76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Tue, 1 Jun 2021 18:23:11 +0200 Subject: [PATCH 04/13] Publish - @tiptap/core@2.0.0-beta.75 - @tiptap/html@2.0.0-beta.75 - @tiptap/starter-kit@2.0.0-beta.72 --- packages/core/CHANGELOG.md | 11 +++++++++++ packages/core/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 ++-- 6 files changed, 32 insertions(+), 5 deletions(-) diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index e53c35586..ec3557da9 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.75](https://github.com/ueberdosis/tiptap/compare/@tiptap/core@2.0.0-beta.74...@tiptap/core@2.0.0-beta.75) (2021-06-01) + + +### Bug Fixes + +* prevent dispatch empty fragment when parsing content with insertContent ([2a4e02a](https://github.com/ueberdosis/tiptap/commit/2a4e02ade3b74999a9632673a607568644d6d26c)) + + + + + # [2.0.0-beta.74](https://github.com/ueberdosis/tiptap/compare/@tiptap/core@2.0.0-beta.73...@tiptap/core@2.0.0-beta.74) (2021-05-31) **Note:** Version bump only for package @tiptap/core diff --git a/packages/core/package.json b/packages/core/package.json index 1385aaa8e..4a1098552 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.74", + "version": "2.0.0-beta.75", "homepage": "https://tiptap.dev", "keywords": [ "tiptap", diff --git a/packages/html/CHANGELOG.md b/packages/html/CHANGELOG.md index d69afc8c2..e75b89ee0 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.75](https://github.com/ueberdosis/tiptap/compare/@tiptap/html@2.0.0-beta.74...@tiptap/html@2.0.0-beta.75) (2021-06-01) + +**Note:** Version bump only for package @tiptap/html + + + + + # [2.0.0-beta.74](https://github.com/ueberdosis/tiptap/compare/@tiptap/html@2.0.0-beta.73...@tiptap/html@2.0.0-beta.74) (2021-05-31) **Note:** Version bump only for package @tiptap/html diff --git a/packages/html/package.json b/packages/html/package.json index f7dd25295..88ae92880 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.74", + "version": "2.0.0-beta.75", "homepage": "https://tiptap.dev", "keywords": [ "tiptap", @@ -21,7 +21,7 @@ "dist" ], "dependencies": { - "@tiptap/core": "^2.0.0-beta.74", + "@tiptap/core": "^2.0.0-beta.75", "hostic-dom": "^0.8.6", "prosemirror-model": "^1.14.1" } diff --git a/packages/starter-kit/CHANGELOG.md b/packages/starter-kit/CHANGELOG.md index 4648a18ba..6b6af4fbd 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.72](https://github.com/ueberdosis/tiptap/compare/@tiptap/starter-kit@2.0.0-beta.71...@tiptap/starter-kit@2.0.0-beta.72) (2021-06-01) + +**Note:** Version bump only for package @tiptap/starter-kit + + + + + # [2.0.0-beta.71](https://github.com/ueberdosis/tiptap/compare/@tiptap/starter-kit@2.0.0-beta.70...@tiptap/starter-kit@2.0.0-beta.71) (2021-05-31) **Note:** Version bump only for package @tiptap/starter-kit diff --git a/packages/starter-kit/package.json b/packages/starter-kit/package.json index 87cf9ace7..58a4f22a7 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.71", + "version": "2.0.0-beta.72", "homepage": "https://tiptap.dev", "keywords": [ "tiptap", @@ -21,7 +21,7 @@ "dist" ], "dependencies": { - "@tiptap/core": "^2.0.0-beta.74", + "@tiptap/core": "^2.0.0-beta.75", "@tiptap/extension-blockquote": "^2.0.0-beta.13", "@tiptap/extension-bold": "^2.0.0-beta.13", "@tiptap/extension-bullet-list": "^2.0.0-beta.13", From 1838d097d03c72abc564be229edda4e5a1203aa8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Tue, 1 Jun 2021 18:28:13 +0200 Subject: [PATCH 05/13] docs: update content --- docs/src/docPages/experiments/figure.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/docs/src/docPages/experiments/figure.md b/docs/src/docPages/experiments/figure.md index db2790d0f..5d280eef0 100644 --- a/docs/src/docPages/experiments/figure.md +++ b/docs/src/docPages/experiments/figure.md @@ -2,9 +2,6 @@ ⚠️ Experiment -## Known issues -* Dragging should move the image, but duplicates it - ## Tasks * Add the caption as an optional parameter to the command * Build commands to wrap an image into a figure + figcaption? From 485fb8c74c831256aaa2cefdf130e05438c2e476 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Tue, 1 Jun 2021 18:57:46 +0200 Subject: [PATCH 06/13] fix: remove custom coordsAtPos method, fix #583 --- packages/core/src/helpers/coordsAtPos.ts | 72 ----------------------- packages/core/src/helpers/posToDOMRect.ts | 5 +- packages/core/src/index.ts | 1 - 3 files changed, 2 insertions(+), 76 deletions(-) delete mode 100644 packages/core/src/helpers/coordsAtPos.ts diff --git a/packages/core/src/helpers/coordsAtPos.ts b/packages/core/src/helpers/coordsAtPos.ts deleted file mode 100644 index 00db08a20..000000000 --- a/packages/core/src/helpers/coordsAtPos.ts +++ /dev/null @@ -1,72 +0,0 @@ -import { EditorView } from 'prosemirror-view' - -type DOMRectSide = 'bottom' | 'left' | 'right' | 'top'; - -function textRange(node: Node, from?: number, to?: number) { - const range = document.createRange() - range.setEnd(node, typeof to === 'number' ? to : (node.nodeValue || '').length) - range.setStart(node, Math.max(from || 0, 0)) - - return range -} - -function singleRect(object: Range | Element, bias: number) { - const rects = object.getClientRects() - return !rects.length - ? object.getBoundingClientRect() - : rects[bias < 0 ? 0 : rects.length - 1] -} - -export default function coordsAtPos(view: EditorView, pos: number, end = false) { - const { node, offset } = view.domAtPos(pos) // view.docView.domFromPos(pos); - let side: DOMRectSide | null = null - let rect: DOMRect | null = null - if (node.nodeType === 3) { - const nodeValue = node.nodeValue || '' - if (end && offset < nodeValue.length) { - rect = singleRect(textRange(node, offset - 1, offset), -1) - side = 'right' - } else if (offset < nodeValue.length) { - rect = singleRect(textRange(node, offset, offset + 1), -1) - side = 'left' - } - } else if (node.firstChild) { - if (offset < node.childNodes.length) { - const child = node.childNodes[offset] - rect = singleRect( - child.nodeType === 3 ? textRange(child) : (child as Element), - -1, - ) - side = 'left' - } - if ((!rect || rect.top === rect.bottom) && offset) { - const child = node.childNodes[offset - 1] - rect = singleRect( - child.nodeType === 3 ? textRange(child) : (child as Element), - 1, - ) - side = 'right' - } - } else { - const element = node as Element - rect = element.getBoundingClientRect() - side = 'left' - } - - if (rect && side) { - const x = rect[side] - - return { - top: rect.top, - bottom: rect.bottom, - left: x, - right: x, - } - } - return { - top: 0, - bottom: 0, - left: 0, - right: 0, - } -} diff --git a/packages/core/src/helpers/posToDOMRect.ts b/packages/core/src/helpers/posToDOMRect.ts index 46f791f12..70e4de08b 100644 --- a/packages/core/src/helpers/posToDOMRect.ts +++ b/packages/core/src/helpers/posToDOMRect.ts @@ -1,9 +1,8 @@ import { EditorView } from 'prosemirror-view' -import coordsAtPos from './coordsAtPos' export default function posToDOMRect(view: EditorView, from: number, to: number): DOMRect { - const start = coordsAtPos(view, from) - const end = coordsAtPos(view, to, true) + const start = view.coordsAtPos(from) + const end = view.coordsAtPos(to, -1) const top = Math.min(start.top, end.top) const bottom = Math.max(start.bottom, end.bottom) const left = Math.min(start.left, end.left) diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 728cf8ff0..9b51a9963 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -12,7 +12,6 @@ export { default as markPasteRule } from './pasteRules/markPasteRule' export { default as callOrReturn } from './utilities/callOrReturn' export { default as mergeAttributes } from './utilities/mergeAttributes' -export { default as coordsAtPos } from './helpers/coordsAtPos' export { default as getExtensionField } from './helpers/getExtensionField' export { default as findChildren } from './helpers/findChildren' export { default as findChildrenInRange } from './helpers/findChildrenInRange' From 2eb177f7d222c6f557bf404433da2e5c8e0aa2f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Tue, 1 Jun 2021 18:59:02 +0200 Subject: [PATCH 07/13] Publish - @tiptap/core@2.0.0-beta.76 - @tiptap/html@2.0.0-beta.76 - @tiptap/starter-kit@2.0.0-beta.73 --- packages/core/CHANGELOG.md | 11 +++++++++++ packages/core/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 ++-- 6 files changed, 32 insertions(+), 5 deletions(-) diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index ec3557da9..063b7d15d 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.76](https://github.com/ueberdosis/tiptap/compare/@tiptap/core@2.0.0-beta.75...@tiptap/core@2.0.0-beta.76) (2021-06-01) + + +### Bug Fixes + +* remove custom coordsAtPos method, fix [#583](https://github.com/ueberdosis/tiptap/issues/583) ([485fb8c](https://github.com/ueberdosis/tiptap/commit/485fb8c74c831256aaa2cefdf130e05438c2e476)) + + + + + # [2.0.0-beta.75](https://github.com/ueberdosis/tiptap/compare/@tiptap/core@2.0.0-beta.74...@tiptap/core@2.0.0-beta.75) (2021-06-01) diff --git a/packages/core/package.json b/packages/core/package.json index 4a1098552..aabaaa85d 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.75", + "version": "2.0.0-beta.76", "homepage": "https://tiptap.dev", "keywords": [ "tiptap", diff --git a/packages/html/CHANGELOG.md b/packages/html/CHANGELOG.md index e75b89ee0..bd340fb92 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.76](https://github.com/ueberdosis/tiptap/compare/@tiptap/html@2.0.0-beta.75...@tiptap/html@2.0.0-beta.76) (2021-06-01) + +**Note:** Version bump only for package @tiptap/html + + + + + # [2.0.0-beta.75](https://github.com/ueberdosis/tiptap/compare/@tiptap/html@2.0.0-beta.74...@tiptap/html@2.0.0-beta.75) (2021-06-01) **Note:** Version bump only for package @tiptap/html diff --git a/packages/html/package.json b/packages/html/package.json index 88ae92880..6f966ca71 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.75", + "version": "2.0.0-beta.76", "homepage": "https://tiptap.dev", "keywords": [ "tiptap", @@ -21,7 +21,7 @@ "dist" ], "dependencies": { - "@tiptap/core": "^2.0.0-beta.75", + "@tiptap/core": "^2.0.0-beta.76", "hostic-dom": "^0.8.6", "prosemirror-model": "^1.14.1" } diff --git a/packages/starter-kit/CHANGELOG.md b/packages/starter-kit/CHANGELOG.md index 6b6af4fbd..369626cff 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.73](https://github.com/ueberdosis/tiptap/compare/@tiptap/starter-kit@2.0.0-beta.72...@tiptap/starter-kit@2.0.0-beta.73) (2021-06-01) + +**Note:** Version bump only for package @tiptap/starter-kit + + + + + # [2.0.0-beta.72](https://github.com/ueberdosis/tiptap/compare/@tiptap/starter-kit@2.0.0-beta.71...@tiptap/starter-kit@2.0.0-beta.72) (2021-06-01) **Note:** Version bump only for package @tiptap/starter-kit diff --git a/packages/starter-kit/package.json b/packages/starter-kit/package.json index 58a4f22a7..9e5104bf1 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.72", + "version": "2.0.0-beta.73", "homepage": "https://tiptap.dev", "keywords": [ "tiptap", @@ -21,7 +21,7 @@ "dist" ], "dependencies": { - "@tiptap/core": "^2.0.0-beta.75", + "@tiptap/core": "^2.0.0-beta.76", "@tiptap/extension-blockquote": "^2.0.0-beta.13", "@tiptap/extension-bold": "^2.0.0-beta.13", "@tiptap/extension-bullet-list": "^2.0.0-beta.13", From b3b297f5ce62dc952c1ee3af4ca6e5e4cca1a482 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Tue, 1 Jun 2021 22:56:24 +0200 Subject: [PATCH 08/13] improve enter behavior for figure --- docs/src/demos/Experiments/Figure/figure.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/src/demos/Experiments/Figure/figure.ts b/docs/src/demos/Experiments/Figure/figure.ts index 175129897..22aee5b26 100644 --- a/docs/src/demos/Experiments/Figure/figure.ts +++ b/docs/src/demos/Experiments/Figure/figure.ts @@ -36,6 +36,8 @@ export const Figure = Node.create({ draggable: true, + isolating: true, + addAttributes() { return { src: { @@ -77,7 +79,7 @@ export const Figure = Node.create({ renderHTML({ HTMLAttributes }) { return [ 'figure', this.options.HTMLAttributes, - ['img', mergeAttributes(HTMLAttributes, { draggable: false })], + ['img', mergeAttributes(HTMLAttributes, { draggable: false, contenteditable: false })], ['figcaption', 0], ] }, From 36dad2bbae5ed66077822330133a9d8ee0d28747 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Wed, 2 Jun 2021 10:50:10 +0200 Subject: [PATCH 09/13] feat: add setMeta command --- docs/src/docPages/api/commands/set-meta.md | 21 +++++++++++++++++++++ docs/src/links.yaml | 2 ++ packages/core/src/commands/setMeta.ts | 18 ++++++++++++++++++ packages/core/src/extensions/commands.ts | 3 +++ 4 files changed, 44 insertions(+) create mode 100644 docs/src/docPages/api/commands/set-meta.md create mode 100644 packages/core/src/commands/setMeta.ts diff --git a/docs/src/docPages/api/commands/set-meta.md b/docs/src/docPages/api/commands/set-meta.md new file mode 100644 index 000000000..17d5aab91 --- /dev/null +++ b/docs/src/docPages/api/commands/set-meta.md @@ -0,0 +1,21 @@ +# setMeta +Store a metadata property in the current transaction. + +## Parameters +`key: string` + +The name of your metadata. You can get its value at any time with [getMeta](https://prosemirror.net/docs/ref/#state.Transaction.getMeta). + +`value: any` + +Store any value within your metadata. + +## Usage +```js +// Prevent the update event from being triggered +editor.commands.setMeta('preventUpdate', true) + +// Store any value in the current transaction. +// You can get this value at any time with tr.getMeta('foo'). +editor.commands.setMeta('foo', 'bar') +``` diff --git a/docs/src/links.yaml b/docs/src/links.yaml index ab9a9defe..ae62e7110 100644 --- a/docs/src/links.yaml +++ b/docs/src/links.yaml @@ -208,6 +208,8 @@ - title: setMark link: /api/commands/set-mark type: draft + - title: setMeta + link: /api/commands/set-meta - title: setNode link: /api/commands/set-node type: draft diff --git a/packages/core/src/commands/setMeta.ts b/packages/core/src/commands/setMeta.ts new file mode 100644 index 000000000..50afbbe07 --- /dev/null +++ b/packages/core/src/commands/setMeta.ts @@ -0,0 +1,18 @@ +import { Command, RawCommands } from '../types' + +declare module '@tiptap/core' { + interface Commands { + setMeta: { + /** + * Store a metadata property in the current transaction. + */ + setMeta: (key: string, value: any) => Command, + } + } +} + +export const setMeta: RawCommands['setMeta'] = (key, value) => ({ tr }) => { + tr.setMeta(key, value) + + return true +} diff --git a/packages/core/src/extensions/commands.ts b/packages/core/src/extensions/commands.ts index 26d5bfb75..266644b2f 100644 --- a/packages/core/src/extensions/commands.ts +++ b/packages/core/src/extensions/commands.ts @@ -30,6 +30,7 @@ import * as selectNodeForward from '../commands/selectNodeForward' import * as selectParentNode from '../commands/selectParentNode' import * as setContent from '../commands/setContent' import * as setMark from '../commands/setMark' +import * as setMeta from '../commands/setMeta' import * as setNode from '../commands/setNode' import * as setNodeSelection from '../commands/setNodeSelection' import * as setTextSelection from '../commands/setTextSelection' @@ -78,6 +79,7 @@ export { selectNodeForward } export { selectParentNode } export { setContent } export { setMark } +export { setMeta } export { setNode } export { setNodeSelection } export { setTextSelection } @@ -131,6 +133,7 @@ export const Commands = Extension.create({ ...selectParentNode, ...setContent, ...setMark, + ...setMeta, ...setNode, ...setNodeSelection, ...setTextSelection, From 09ce876c7968aaa86e76c9a5007afce4bfe65f3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Wed, 2 Jun 2021 10:56:52 +0200 Subject: [PATCH 10/13] Publish - @tiptap/core@2.0.0-beta.77 - @tiptap/html@2.0.0-beta.77 - @tiptap/starter-kit@2.0.0-beta.74 --- packages/core/CHANGELOG.md | 11 +++++++++++ packages/core/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 ++-- 6 files changed, 32 insertions(+), 5 deletions(-) diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index 063b7d15d..6141de737 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.77](https://github.com/ueberdosis/tiptap/compare/@tiptap/core@2.0.0-beta.76...@tiptap/core@2.0.0-beta.77) (2021-06-02) + + +### Features + +* add setMeta command ([36dad2b](https://github.com/ueberdosis/tiptap/commit/36dad2bbae5ed66077822330133a9d8ee0d28747)) + + + + + # [2.0.0-beta.76](https://github.com/ueberdosis/tiptap/compare/@tiptap/core@2.0.0-beta.75...@tiptap/core@2.0.0-beta.76) (2021-06-01) diff --git a/packages/core/package.json b/packages/core/package.json index aabaaa85d..d85d7c6d5 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.76", + "version": "2.0.0-beta.77", "homepage": "https://tiptap.dev", "keywords": [ "tiptap", diff --git a/packages/html/CHANGELOG.md b/packages/html/CHANGELOG.md index bd340fb92..951db1e68 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.77](https://github.com/ueberdosis/tiptap/compare/@tiptap/html@2.0.0-beta.76...@tiptap/html@2.0.0-beta.77) (2021-06-02) + +**Note:** Version bump only for package @tiptap/html + + + + + # [2.0.0-beta.76](https://github.com/ueberdosis/tiptap/compare/@tiptap/html@2.0.0-beta.75...@tiptap/html@2.0.0-beta.76) (2021-06-01) **Note:** Version bump only for package @tiptap/html diff --git a/packages/html/package.json b/packages/html/package.json index 6f966ca71..3fbc646fe 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.76", + "version": "2.0.0-beta.77", "homepage": "https://tiptap.dev", "keywords": [ "tiptap", @@ -21,7 +21,7 @@ "dist" ], "dependencies": { - "@tiptap/core": "^2.0.0-beta.76", + "@tiptap/core": "^2.0.0-beta.77", "hostic-dom": "^0.8.6", "prosemirror-model": "^1.14.1" } diff --git a/packages/starter-kit/CHANGELOG.md b/packages/starter-kit/CHANGELOG.md index 369626cff..a1c3cc035 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.74](https://github.com/ueberdosis/tiptap/compare/@tiptap/starter-kit@2.0.0-beta.73...@tiptap/starter-kit@2.0.0-beta.74) (2021-06-02) + +**Note:** Version bump only for package @tiptap/starter-kit + + + + + # [2.0.0-beta.73](https://github.com/ueberdosis/tiptap/compare/@tiptap/starter-kit@2.0.0-beta.72...@tiptap/starter-kit@2.0.0-beta.73) (2021-06-01) **Note:** Version bump only for package @tiptap/starter-kit diff --git a/packages/starter-kit/package.json b/packages/starter-kit/package.json index 9e5104bf1..1b49940e1 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.73", + "version": "2.0.0-beta.74", "homepage": "https://tiptap.dev", "keywords": [ "tiptap", @@ -21,7 +21,7 @@ "dist" ], "dependencies": { - "@tiptap/core": "^2.0.0-beta.76", + "@tiptap/core": "^2.0.0-beta.77", "@tiptap/extension-blockquote": "^2.0.0-beta.13", "@tiptap/extension-bold": "^2.0.0-beta.13", "@tiptap/extension-bullet-list": "^2.0.0-beta.13", From 29f476a9c936ee86e551c446cfaa787cd00d88ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Wed, 2 Jun 2021 11:05:18 +0200 Subject: [PATCH 11/13] version bump --- packages/core/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/package.json b/packages/core/package.json index d85d7c6d5..d044cad07 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.77", + "version": "2.0.0-beta.78", "homepage": "https://tiptap.dev", "keywords": [ "tiptap", From 2fd15f521b921689a8ac6aea70b1170032e480c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Wed, 2 Jun 2021 11:05:50 +0200 Subject: [PATCH 12/13] Publish - @tiptap/core@2.0.0-beta.79 - @tiptap/html@2.0.0-beta.78 - @tiptap/starter-kit@2.0.0-beta.75 --- packages/core/CHANGELOG.md | 8 ++++++++ packages/core/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 ++-- 6 files changed, 29 insertions(+), 5 deletions(-) diff --git a/packages/core/CHANGELOG.md b/packages/core/CHANGELOG.md index 6141de737..e8caccb48 100644 --- a/packages/core/CHANGELOG.md +++ b/packages/core/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.79](https://github.com/ueberdosis/tiptap/compare/@tiptap/core@2.0.0-beta.77...@tiptap/core@2.0.0-beta.79) (2021-06-02) + +**Note:** Version bump only for package @tiptap/core + + + + + # [2.0.0-beta.77](https://github.com/ueberdosis/tiptap/compare/@tiptap/core@2.0.0-beta.76...@tiptap/core@2.0.0-beta.77) (2021-06-02) diff --git a/packages/core/package.json b/packages/core/package.json index d044cad07..8770104b8 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.78", + "version": "2.0.0-beta.79", "homepage": "https://tiptap.dev", "keywords": [ "tiptap", diff --git a/packages/html/CHANGELOG.md b/packages/html/CHANGELOG.md index 951db1e68..6ad47dcea 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.78](https://github.com/ueberdosis/tiptap/compare/@tiptap/html@2.0.0-beta.77...@tiptap/html@2.0.0-beta.78) (2021-06-02) + +**Note:** Version bump only for package @tiptap/html + + + + + # [2.0.0-beta.77](https://github.com/ueberdosis/tiptap/compare/@tiptap/html@2.0.0-beta.76...@tiptap/html@2.0.0-beta.77) (2021-06-02) **Note:** Version bump only for package @tiptap/html diff --git a/packages/html/package.json b/packages/html/package.json index 3fbc646fe..c66a3dc54 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.77", + "version": "2.0.0-beta.78", "homepage": "https://tiptap.dev", "keywords": [ "tiptap", @@ -21,7 +21,7 @@ "dist" ], "dependencies": { - "@tiptap/core": "^2.0.0-beta.77", + "@tiptap/core": "^2.0.0-beta.79", "hostic-dom": "^0.8.6", "prosemirror-model": "^1.14.1" } diff --git a/packages/starter-kit/CHANGELOG.md b/packages/starter-kit/CHANGELOG.md index a1c3cc035..a44d66879 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.75](https://github.com/ueberdosis/tiptap/compare/@tiptap/starter-kit@2.0.0-beta.74...@tiptap/starter-kit@2.0.0-beta.75) (2021-06-02) + +**Note:** Version bump only for package @tiptap/starter-kit + + + + + # [2.0.0-beta.74](https://github.com/ueberdosis/tiptap/compare/@tiptap/starter-kit@2.0.0-beta.73...@tiptap/starter-kit@2.0.0-beta.74) (2021-06-02) **Note:** Version bump only for package @tiptap/starter-kit diff --git a/packages/starter-kit/package.json b/packages/starter-kit/package.json index 1b49940e1..291ad9413 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.74", + "version": "2.0.0-beta.75", "homepage": "https://tiptap.dev", "keywords": [ "tiptap", @@ -21,7 +21,7 @@ "dist" ], "dependencies": { - "@tiptap/core": "^2.0.0-beta.77", + "@tiptap/core": "^2.0.0-beta.79", "@tiptap/extension-blockquote": "^2.0.0-beta.13", "@tiptap/extension-bold": "^2.0.0-beta.13", "@tiptap/extension-bullet-list": "^2.0.0-beta.13", From 7e7af068063050ceba0b2d83d79cb5de645773c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Philipp=20Ku=CC=88hn?= Date: Thu, 3 Jun 2021 09:30:41 +0200 Subject: [PATCH 13/13] add logging --- .../extension-code-block-lowlight/src/lowlight-plugin.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/extension-code-block-lowlight/src/lowlight-plugin.ts b/packages/extension-code-block-lowlight/src/lowlight-plugin.ts index 25e24e6dc..02295ea64 100644 --- a/packages/extension-code-block-lowlight/src/lowlight-plugin.ts +++ b/packages/extension-code-block-lowlight/src/lowlight-plugin.ts @@ -37,6 +37,12 @@ function getDecorations({ doc, name, lowlight }: { doc: ProsemirrorNode, name: s ? lowlight.highlight(language, block.node.textContent).children : lowlight.highlightAuto(block.node.textContent).children + console.log({ + lowlight, + languages, + nodes, + }) + parseNodes(nodes).forEach(node => { const to = from + node.text.length