v3.27.3
- 94de762: Fix
deleteSelectionto delete content across all selection ranges instead of only the first range. This restores multi-cell table selections and other custom selections with multiple ranges. - @tiptap/pm@3.27.3
-
94de762: Fix markdown parsing bugs where block elements right after an ordered list item (with no blank line in between) were wrongly treated as lazy continuation of the list item, instead of terminating the list the way other markdown parsers do:
- Thematic breaks (
---,***,___,* * *) were swallowed into the list item as literal paragraph text — along with every line after them. They now terminate the list and become a horizontal rule. - Fenced code blocks (
```and~~~) were nested inside the list item. They now terminate the list and become a top-level code block. - Unindented bullet markers (
- item) were nested inside the ordered list item. They now terminate the ordered list and start a new top-level bullet list. Indented bullets still nest inside the item as before.
An indented
***/___inside item content is now also parsed as a horizontal rule inside the item instead of literal text. A---line directly below item paragraph text keeps its current behavior because it is a setext heading underline per CommonMark, not a thematic break. - Thematic breaks (
-
94de762: Fix indented ordered list items (e.g. one leading space before the marker, as happens when a top-level ordered list is itself nested inside another list) losing inline formatting during markdown parsing. The custom ordered-list markdown tokenizer built its nested structure with a hardcoded base indentation of 0, so an item whose actual indentation was non-zero never matched, causing the tokenizer to silently produce zero items and bail out — falling back to a path that left the item's content as literal, unparsed text instead of running it through inline tokenization (bold, italic, etc. were lost). The base indentation is now taken from the first collected item instead of being hardcoded.
-
Updated dependencies [94de762]
- @tiptap/core@3.27.3
- @tiptap/pm@3.27.3
- 94de762: Fixed placeholder flickering and disappearance on large documents. Replaced the viewport-based decoration scan with an incremental
StateField<DecorationSet>that only re-computes decorations for top-level nodes touched by each transaction. This eliminates the dependency on DOM measurement (posAtCoords),requestAnimationFramescheduling, and scroll listeners that caused flickering under collaboration, occlusion, and rapid edits.
v3.27.2
- ceebb31: Fix arrow key navigation past emoji nodes in Firefox. Previously, pressing ArrowLeft with the cursor adjacent to an inline non-selectable emoji node at a paragraph boundary would not move the cursor in Firefox. The cursor now correctly skips over emoji nodes in both directions.
- Updated dependencies [ceebb31]
- @tiptap/pm@3.27.2
- @tiptap/core@3.27.2
- @tiptap/suggestion@3.27.2
- ceebb31: Add
consumePasteEventoption to the file-handler extension. Whentrue,handlePastereturnstrueeven when HTML content is present in the clipboard, preventing paste rules from other extensions from creating duplicate content. Default isfalse. - Updated dependencies [ceebb31]
- @tiptap/pm@3.27.2
- @tiptap/core@3.27.2
- @tiptap/extension-text-style@3.27.2
- ceebb31: Fix NodeRangeSelection not being restored after drag-and-drop when Collaboration (Yjs) is enabled. Drop anchor positions are now tracked with Yjs relative positions and remapped across
isChangeOrigindocument rebuilds, and selection restore runs viaappendTransactionafter the drop transaction settles. - ceebb31: Fix the drag handle when the editor renders zero-size widget decorations, such as the page chrome injected by the Pages extension. The handle now resolves to the correct block instead of failing to position or aligning to a decoration, and it stays above positioned page chrome so it remains clickable.
- Updated dependencies [ceebb31]
- @tiptap/pm@3.27.2
- @tiptap/core@3.27.2
- @tiptap/extension-collaboration@3.27.2
- @tiptap/extension-node-range@3.27.2
- ceebb31: Coerce
undefinedHTMLAttributes (target,rel,class) tonullso ProseMirror does not emit "No value supplied for attribute" warnings when these options are explicitly set toundefined. - Updated dependencies [ceebb31]
- @tiptap/pm@3.27.2
- @tiptap/core@3.27.2
- ceebb31: Fix a markdown parsing bug where a heading right after an ordered list item (with no blank line in between) got pulled into the list item as plain text, so you'd see a literal
###inside the list instead of an actual heading. Headings now end the list and get parsed properly, the way other markdown parsers handle it. Indented headings inside a list item are also parsed as real headings now instead of literal text. - Updated dependencies [ceebb31]
- @tiptap/pm@3.27.2
- @tiptap/core@3.27.2
- ceebb31: Allow KaTeX 0.17
- Updated dependencies [ceebb31]
- @tiptap/pm@3.27.2
- @tiptap/core@3.27.2
- ceebb31: Change prop types of the Tiptap component so that either the
editoror theinstancefields are required - Updated dependencies [ceebb31]
- @tiptap/pm@3.27.2
- @tiptap/core@3.27.2
- ceebb31: Fix React 19 strict mode compatibility by using useRef instead of useState for the portal element. Changing the
classNameprop now updates the element in place without re-registering the drag handle plugin. - Updated dependencies [ceebb31]
- Updated dependencies [ceebb31]
- Updated dependencies [ceebb31]
- Updated dependencies [ceebb31]
- @tiptap/extension-drag-handle@3.27.2
- @tiptap/react@3.27.2
- @tiptap/pm@3.27.2
- ceebb31: Fix the static renderer ignoring
unhandledNodeandunhandledMarkfor node or mark types missing from the schema; such content now falls back to those renderers instead of throwing inNode.fromJSON - Updated dependencies [ceebb31]
- @tiptap/pm@3.27.2
- @tiptap/core@3.27.2
- ceebb31: Updated all ProseMirror packages to the latest publicly available versions
v3.27.1
- a16901d: Respect margin properties passed via
dragImagePropertieson the drag preview. The clone reset its margin to0after copying styles, which discarded any margin the user explicitly requested. The reset now runs only when no margin property is listed indragImageProperties, so the drag image can keep the same spacing as the live block. - @tiptap/core@3.27.1
- @tiptap/extension-collaboration@3.27.1
- @tiptap/extension-node-range@3.27.1
- @tiptap/pm@3.27.1
- a16901d: Fix ordered list parsing so under-indented continuation lines preserve their first character.
- @tiptap/core@3.27.1
- @tiptap/pm@3.27.1
- a16901d: Fix Placeholder flickering while a modal overlay is open. When the editor was occluded during a stream of transactions (e.g. remote collaboration edits), the viewport measurement fell back to a full-document range and repeatedly toggled the
data-placeholderattribute on empty blocks. The viewport window is now frozen when the editor can't be measured reliably, so placeholders stay stable. - @tiptap/core@3.27.1
- @tiptap/pm@3.27.1
v3.27.0
-
6270b99: Ordered lists now support the
typeattribute (a,A,i,I).The
<ol>typeattribute is now fully preserved through the HTML round-trip:type="a"→ lowercase alphabetical markerstype="A"→ uppercase alphabetical markerstype="i"→ lowercase roman numeral markerstype="I"→ uppercase roman numeral markers
Paste from external editors (Google Docs, Word, LibreOffice) now correctly detects the list style — both from the HTML
typeattribute and from CSSlist-style-typeproperties.Plain text paste of typed ordered list markers (e.g.
a. Item,I) Item,i. Item\nii. Item) is detected and converted to the correct list type.Markdown round-trip preserves typed markers: parsing
a. Itemcreatestype: "a", and serializing a typed list back to markdown uses the correct prefix (e.g.I.,ii.).Joining of adjacent lists now respects
type— two lists with different types (e.g. default numeric andtype="a") are not merged.
- Updated dependencies [6270b99]
- Updated dependencies [6270b99]
- Updated dependencies [6270b99]
- Updated dependencies [6270b99]
- @tiptap/core@3.27.0
- @tiptap/pm@3.27.0
-
6270b99: Ordered lists now support the
typeattribute (a,A,i,I).The
<ol>typeattribute is now fully preserved through the HTML round-trip:type="a"→ lowercase alphabetical markerstype="A"→ uppercase alphabetical markerstype="i"→ lowercase roman numeral markerstype="I"→ uppercase roman numeral markers
Paste from external editors (Google Docs, Word, LibreOffice) now correctly detects the list style — both from the HTML
typeattribute and from CSSlist-style-typeproperties.Plain text paste of typed ordered list markers (e.g.
a. Item,I) Item,i. Item\nii. Item) is detected and converted to the correct list type.Markdown round-trip preserves typed markers: parsing
a. Itemcreatestype: "a", and serializing a typed list back to markdown uses the correct prefix (e.g.I.,ii.).Joining of adjacent lists now respects
type— two lists with different types (e.g. default numeric andtype="a") are not merged. -
6270b99:
parseAttributesnow supports any word characters at the start of classes or id attributes. -
6270b99: Fix
marksEqualto compare mark arrays as multisets instead of index-by-index, so order of marks no longer affects the result. Broaden the type signature to accept ProseMirrorMarkobjects (wheretypeis an object with anameproperty) alongside the existing JSON mark shape ({ type: string }). -
6270b99: Fix a edge-case in
rewriteUnknownContentto not fail on null-ish values inside marks or nodes. -
@tiptap/pm@3.27.0
- 6270b99: Fix
isAllowedUriaccepting unknown protocols whose name contains a hyphen (e.g.unknown-protocol://test). The hyphen is a valid scheme character per RFC 3986, but the regex was built from a template literal where\-collapsed to-, leaving the terminator class[^a-z+.-:]to parse.-:as a character range that excluded0-9and/rather than-. With the proper double-escape, the regex correctly excludes-and unknown hyphenated schemes are rejected again. - Updated dependencies [6270b99]
- Updated dependencies [6270b99]
- Updated dependencies [6270b99]
- Updated dependencies [6270b99]
- @tiptap/core@3.27.0
- @tiptap/pm@3.27.0
-
6270b99: Add
props.mount(element)for fully managed popup positioning. It mounts the popup into the configuredcontainer(defaultdocument.body), keeps it anchored to the cursor, and automatically repositions on scroll, resize, and layout shifts via Floating UI'sautoUpdate— no manual listeners required. It returns anunmountfunction to call inonExit.This is additive and opt-in: mounting and positioning manually with
props.floatingUi+props.clientRectremains supported as an escape hatch. -
6270b99: Dismiss managed suggestion popups when the user clicks outside both the popup and the editor. Enabled by default for popups mounted via
props.mount, and configurable with the newdismissOnOutsideClickoption. -
6270b99: Expose Floating UI positioning configuration through
SuggestionProps. Consumers can now readplacement,offset,flip,container, and a resolvedfloatingUiconfig to drive their own positioning loop. -
6270b99: Add async suggestion lifecycle handling, including debounced async
items(), in-flight request aborting,initialItems, aloadingstate, and aminQueryLengthfilter.
- Updated dependencies [6270b99]
- Updated dependencies [6270b99]
- Updated dependencies [6270b99]
- Updated dependencies [6270b99]
- @tiptap/core@3.27.0
- @tiptap/pm@3.27.0
- 6270b99: Fix parsing with injected Marked instances so custom markdown tokenizers registered via
marked.use(...)are respected. - 6270b99: Fix unrecognized HTML detection during markdown parsing to work without
window.DOMParserorHTMLUnknownElement, so angle-bracket placeholders are preserved as literal text in SSR and Node environments. - Updated dependencies [6270b99]
- Updated dependencies [6270b99]
- Updated dependencies [6270b99]
- Updated dependencies [6270b99]
- @tiptap/core@3.27.0
- @tiptap/pm@3.27.0
- 6270b99: Fix multi-block drags only removing the first block when nested mode is enabled
- Updated dependencies [6270b99]
- Updated dependencies [6270b99]
- Updated dependencies [6270b99]
- Updated dependencies [6270b99]
- @tiptap/core@3.27.0
- @tiptap/extension-collaboration@3.27.0
- @tiptap/extension-node-range@3.27.0
- @tiptap/pm@3.27.0
v3.26.1
- a38c9c0: Fixed drag-and-drop duplicating blocks during collaboration. When a remote collaborator edited the document mid-drag, dropping left an empty copy of the dragged block at its original position. This fix also requires a version of
@tiptap/y-tiptapthat restores node range selections across remote updates. - a38c9c0: Bump
@tiptap/y-tiptapto version ^3.0.5 - @tiptap/core@3.26.1
- @tiptap/pm@3.26.1
- a38c9c0: Restore the node range selection after dragging multiple blocks. Previously, dropping a multi-block drag left a text selection inside the moved content instead of keeping the dragged blocks selected.
- a38c9c0: Bump
@tiptap/y-tiptapto version ^3.0.5 - Updated dependencies [a38c9c0]
- Updated dependencies [a38c9c0]
- @tiptap/extension-node-range@3.26.1
- @tiptap/extension-collaboration@3.26.1
- @tiptap/core@3.26.1
- @tiptap/pm@3.26.1
- a38c9c0: Bump
@tiptap/y-tiptapto version ^3.0.5 - @tiptap/core@3.26.1
- @tiptap/pm@3.26.1
- a38c9c0: Bump
@tiptap/y-tiptapto version ^3.0.5 - @tiptap/core@3.26.1
- @tiptap/pm@3.26.1
v3.26.0
- 7fb19eb: Backspace at the start of a non-first child of a blockquote now lifts that child out, splitting the blockquote around it. A second backspace at the start of a top-level textblock whose previous sibling is a blockquote merges the textblock's inline content into the blockquote's last textblock instead of pulling the paragraph back inside.
- @tiptap/core@3.26.0
- 7fb19eb: Only add hash attributes to nodes, not to marks.
- 7fb19eb: Fix the
Selectionextension highlighting beyond the selected text on multi-line selections: the native browser selection is now hidden while the editor is blurred, so only the styled.selectiondecoration is shown. - @tiptap/core@3.26.0
- @tiptap/pm@3.26.0
v3.25.0
-
711c2e3: Fix: dragging an inline/resizable image within the editor no longer creates a duplicate
When the
Imageextension was configured withinline: trueorresizeenabled, dragging an image within the editor could insert a duplicate at the drop position instead of moving it. This happened because the browser's native image drag behavior could populatedataTransfer.files, causing the FileHandler extension to intercept the drop before ProseMirror's internal move logic could run. -
711c2e3: Add
clearablemark option (defaulttrue).unsetAllMarksnow skips marks withclearable: false, so semantic marks like comments are not removed by "clear formatting". -
711c2e3: Add
attrsEqualandmarksEqualutility functions to@tiptap/core.attrsEqualcompares two attribute objects for equality regardless of key ordering.marksEqualcompares two arrays of mark objects by type and attributes usingattrsEqual. -
711c2e3: Fix plain-text copy of table cell selections including content from unselected cells in between. Each selected range is now serialized independently and joined in document order, so dragging upward (reverse selection) also produces output in document order.
-
Updated dependencies [711c2e3]
- @tiptap/pm@3.25.0
-
711c2e3: Fix: dragging an inline/resizable image within the editor no longer creates a duplicate
When the
Imageextension was configured withinline: trueorresizeenabled, dragging an image within the editor could insert a duplicate at the drop position instead of moving it. This happened because the browser's native image drag behavior could populatedataTransfer.files, causing the FileHandler extension to intercept the drop before ProseMirror's internal move logic could run. -
Updated dependencies [711c2e3]
-
Updated dependencies [711c2e3]
-
Updated dependencies [711c2e3]
-
Updated dependencies [711c2e3]
-
Updated dependencies [711c2e3]
- @tiptap/core@3.25.0
- @tiptap/pm@3.25.0
- @tiptap/extension-text-style@3.25.0
-
711c2e3: Fix: dragging an inline/resizable image within the editor no longer creates a duplicate
When the
Imageextension was configured withinline: trueorresizeenabled, dragging an image within the editor could insert a duplicate at the drop position instead of moving it. This happened because the browser's native image drag behavior could populatedataTransfer.files, causing the FileHandler extension to intercept the drop before ProseMirror's internal move logic could run. -
711c2e3: Fix
HTMLAttributesnot being applied to the editor DOM whenresizeis enabled. TheaddNodeViewpath was using only the resolved node attributes and skipping the user-configuredHTMLAttributesoption. Now it merges them consistently with howrenderHTMLalready works. -
Updated dependencies [711c2e3]
-
Updated dependencies [711c2e3]
-
Updated dependencies [711c2e3]
-
Updated dependencies [711c2e3]
- @tiptap/core@3.25.0
- 711c2e3:
ListKeymap's Backspace handler now lifts the current list item before merging. At the start of a non-first list item, the item is lifted out of its wrapping list (splitting the list around it) instead of immediately joining its content into the previous item. A second Backspace then hits the existing "paragraph after a list" branch and merges the lifted textblock's content into the previous list's last item. Mirrors the two-step behavior introduced for blockquote in #7891.
- 711c2e3: Fix delete at the end of a list item with a branching nested sublist. Nested items are hoisted to the parent list instead of being node-selected and deleted on the next keypress.
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- @tiptap/core@3.25.0
- @tiptap/pm@3.25.0
- 711c2e3: Allow
emptyNodeClassin the Placeholder extension to accept a function that returns a dynamic CSS class name per node
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- @tiptap/core@3.25.0
- @tiptap/pm@3.25.0
- 711c2e3: Fix blockquote markdown rendering to add a trailing newline so subsequent content is not incorrectly included in the blockquote
- 711c2e3: Fix the types of the JSON static renderers (
renderJSONContentToReactElementandrenderJSONContentToString): you can now passJSONContentdirectly and read node fields likenode.textin your mappings without type errors or casts. - Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- @tiptap/core@3.25.0
- @tiptap/pm@3.25.0
- 711c2e3: Fix
HTMLAttributesnot being applied to the<table>element whenresizableis disabled (the default). TheTableViewnode view (introduced in 3.23) bypassedrenderHTMLand never applied user-configured attributes likeclassordata-*to the rendered table element. - Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- @tiptap/core@3.25.0
- @tiptap/pm@3.25.0
- 711c2e3: Bump
prosemirror-tablesto^1.8.0sofindTableis available from@tiptap/pm, and align the related ProseMirror dependencies with the versions required byprosemirror-tables.
- 711c2e3: Fix memory leak when destroying an editor before the collaboration provider syncs. The
syncedlistener registered inonCreatewas only removed once the event fired, so destroying the editor first left thecreateIdsclosure (and the whole editor it captures) referenced by the shared provider. The listener is now also detached on destroy, so the editor can be garbage collected. - Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- @tiptap/core@3.25.0
- @tiptap/pm@3.25.0
- 711c2e3: Fixed a bug where typing a character before an inline code markdown shortcut (e.g.
afollowed by backtick-delimited code) would delete the preceding character. The preceding character is now preserved. - Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- @tiptap/core@3.25.0
- 711c2e3: Fix crash when awareness state value is null or undefined (e.g. after a client disconnects)
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- @tiptap/core@3.25.0
- @tiptap/pm@3.25.0
- 711c2e3: Fixed
onContentErrornot being triggered when invalid collaborative content is detected. ThefilterTransactionhook now allows the transaction through to keep ProseMirror state in sync with Yjs, ensuring thecontentErrorevent fires correctly. - Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- @tiptap/core@3.25.0
- @tiptap/pm@3.25.0
- 711c2e3: Fix backslash-escape handling in the Markdown parser and serializer. Parsing a backslash-escaped markdown character (e.g.
\*,\_,\\) now correctly produces a literal text node, instead of silently dropping the character. On serialization, characters that have special meaning in markdown inline syntax (*,_,`,[,],\,~) are now backslash-escaped in non-code text nodes to prevent them from being misinterpreted as formatting delimiters when the output is parsed again. - Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- @tiptap/core@3.25.0
- @tiptap/pm@3.25.0
- 711c2e3: Fix
VueNodeViewRendererthrashing the DOM whencontentDOMis null for non-leaf nodes. The renderer now always creates a contentDOM element for non-leaf nodes (matching React's behavior), so ProseMirror has a valid element to render children into even when the NodeView component does not includeNodeViewContentor renders it conditionally. - Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- @tiptap/core@3.25.0
- @tiptap/pm@3.25.0
- 711c2e3: Fix
VueNodeViewRendererthrashing the DOM whencontentDOMis null for non-leaf nodes. The renderer now always creates a contentDOM element for non-leaf nodes (matching React's behavior), so ProseMirror has a valid element to render children into even when the NodeView component does not includeNodeViewContentor renders it conditionally. - Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- Updated dependencies [711c2e3]
- @tiptap/core@3.25.0
- @tiptap/pm@3.25.0
v3.24.0
- 7bd09b7: Fix memory leak when destroying an editor while the collaboration provider stays alive (e.g. multiple editors sharing one provider). The extension's awareness
updatelistener is now removed on destroy, so the editor can be garbage collected. - Updated dependencies [7bd09b7]
- @tiptap/pm@3.24.0
- @tiptap/core@3.24.0
- 7bd09b7: Fix a memory leak where destroying an editor while its Y.Doc/provider stays alive (e.g. multiple editors sharing one provider) left the editor uncollectable. Yjs' UndoManager registered a
doc.on('destroy', ...)listener that was never removed, keeping the UndoManager — and through it the whole editor — reachable from the long-lived doc. Fixed upstream in@tiptap/y-tiptap; this bumps the dependency to pull in the fix. - Updated dependencies [7bd09b7]
- @tiptap/pm@3.24.0
- @tiptap/core@3.24.0
- 7bd09b7: Exclude
toTextproperty when serializing the schema into a JSON object, because it is a function and functions are not serializable.
- 7bd09b7: Add missing
@tiptap/pm/inputrulesexport
- 7bd09b7: Fix persisted details toggles when the details node is at the start of the document.
- Updated dependencies [7bd09b7]
- @tiptap/pm@3.24.0
- @tiptap/core@3.24.0
- @tiptap/extension-text-style@3.24.0
- 7bd09b7: Fix text inside unknown angle-bracket tags being silently swallowed during markdown parsing. HTML-like content such as
<enter existing CID here if available>that does not map to any known element is now preserved as literal text instead of disappearing, which also prevents downstreamcontentMatchAterrors when complex schemas (Mention, Variable, Table) are in use. - Updated dependencies [7bd09b7]
- @tiptap/pm@3.24.0
- @tiptap/core@3.24.0
- 7bd09b7: Honor the
textDirectioneditor option inrenderToHTMLString,renderToMarkdown, andrenderToReactElement, and omitnull/undefinedattribute values instead of serializing them as the literal string"null". - Updated dependencies [7bd09b7]
- @tiptap/pm@3.24.0
- @tiptap/core@3.24.0
- 7bd09b7: Fix placeholder flickering during collaborative editing and reduce scroll-time CPU usage by deferring viewport recomputation to rAF, adding an overscan margin, and throttling scroll updates
- Updated dependencies [7bd09b7]
- @tiptap/pm@3.24.0
- @tiptap/core@3.24.0
- 7bd09b7: Add
generateTocIds, a server-side utility that assignsidanddata-toc-idattributes to anchor nodes in a Tiptap JSON document without needing anEditorinstance.
v3.23.6
- 937ff2e: DragHandle: Added
dragImagePropertiesoption to limit which CSS properties are cloned for the drag image. By default all ~300+ computed styles are copied; setting this to a subset (e.g.['color', 'background-color', 'font-size']) reduces the cost when dragging selections with complex nodes. - Updated dependencies [937ff2e]
- @tiptap/core@3.23.6
- @tiptap/extension-collaboration@3.23.6
- @tiptap/extension-node-range@3.23.6
- @tiptap/pm@3.23.6
- 937ff2e: Fix deleteSelection to properly handle inline nodes with
text*content. The selection is now expanded to include the entire inline node boundaries when deleting, preventing incorrect collapse of inline text nodes. - @tiptap/pm@3.23.6
- 937ff2e: Placeholder: Replaced full-document
doc.descendants()traversal with a cursor-resolved fast path for the default config and viewport-limited scanning for the non-default config, significantly reducing decoration overhead on large documents. - Updated dependencies [937ff2e]
- @tiptap/core@3.23.6
- @tiptap/pm@3.23.6
v3.23.5
- 7bf0e73: Fix extra mark tokens after inline atom nodes during Markdown serialization
- 7bf0e73: Fix adjacent marks of the same type with different attributes being merged during Markdown serialization
- Updated dependencies [7bf0e73]
- Updated dependencies [7bf0e73]
- @tiptap/core@3.23.5
- @tiptap/pm@3.23.5
- 7bf0e73: Fix $pos() returning correct node for non-text atom nodes instead of doc node
- 7bf0e73: fix(nodeview): eliminate unnecessary re-renders, add opt-in position tracking NodeViews no longer re-render when decorations or position change without content changes. Added
trackNodeViewPositionoption — when enabled, the component re-renders on every position shift so calls togetPos()stay current in render output. Removed the internalnodeViewPositionRegistry. Added shallow prop comparison inReactRenderer.updateProps(). - @tiptap/pm@3.23.5
- 7bf0e73: Respect explicit
immediatelyRender: truein client-side Next.js. Previously, when running under Next.js (window.nextpresent), theimmediatelyRenderoption was forced tofalseeven when the user explicitly passedtrue, breaking client-only Next.js apps that rely on the editor existing on the first render. The hook now only forcesfalsewhen actual SSR is detected (typeof window === 'undefined'), or when running under Next.js with no explicit value. - 7bf0e73: fix(nodeview): eliminate unnecessary re-renders, add opt-in position tracking NodeViews no longer re-render when decorations or position change without content changes. Added
trackNodeViewPositionoption — when enabled, the component re-renders on every position shift so calls togetPos()stay current in render output. Removed the internalnodeViewPositionRegistry. Added shallow prop comparison inReactRenderer.updateProps(). - Updated dependencies [7bf0e73]
- Updated dependencies [7bf0e73]
- @tiptap/core@3.23.5
- @tiptap/pm@3.23.5
- 7bf0e73: fix(nodeview): eliminate unnecessary re-renders, add opt-in position tracking NodeViews no longer re-render when decorations or position change without content changes. Added
trackNodeViewPositionoption — when enabled, the component re-renders on every position shift so calls togetPos()stay current in render output. Removed the internalnodeViewPositionRegistry. Added shallow prop comparison inReactRenderer.updateProps(). - Updated dependencies [7bf0e73]
- Updated dependencies [7bf0e73]
- @tiptap/core@3.23.5
- @tiptap/pm@3.23.5
- 7bf0e73: fix(nodeview): eliminate unnecessary re-renders, add opt-in position tracking NodeViews no longer re-render when decorations or position change without content changes. Added
trackNodeViewPositionoption — when enabled, the component re-renders on every position shift so calls togetPos()stay current in render output. Removed the internalnodeViewPositionRegistry. Added shallow prop comparison inReactRenderer.updateProps(). - Updated dependencies [7bf0e73]
- Updated dependencies [7bf0e73]
- @tiptap/core@3.23.5
- @tiptap/pm@3.23.5
- 7bf0e73: Fix missing forwarding of getReferencedVirtualElement in DragHandle React component
- Updated dependencies [7bf0e73]
- Updated dependencies [7bf0e73]
- @tiptap/react@3.23.5
- @tiptap/extension-drag-handle@3.23.5
- @tiptap/pm@3.23.5