Update dependency @tiptap/core to v3 [SECURITY] - autoclosed - #30484
Closed
tryghost-renovate[bot] wants to merge 1 commit into
Closed
Update dependency @tiptap/core to v3 [SECURITY] - autoclosed#30484tryghost-renovate[bot] wants to merge 1 commit into
tryghost-renovate[bot] wants to merge 1 commit into
Conversation
Contributor
Author
|
tryghost-renovate
Bot
deleted the
renovate/npm-tiptap-core-vulnerability
branch
September 3, 2026 01:16
tryghost-renovate
Bot
force-pushed
the
renovate/npm-tiptap-core-vulnerability
branch
2 times, most recently
from
September 3, 2026 01:43
da19293 to
409dfb6
Compare
tryghost-renovate
Bot
force-pushed
the
renovate/npm-tiptap-core-vulnerability
branch
2 times, most recently
from
September 3, 2026 03:27
409dfb6 to
28781d0
Compare
tryghost-renovate
Bot
force-pushed
the
renovate/npm-tiptap-core-vulnerability
branch
2 times, most recently
from
September 3, 2026 05:26
28781d0 to
2e84c25
Compare
tryghost-renovate
Bot
force-pushed
the
renovate/npm-tiptap-core-vulnerability
branch
from
September 3, 2026 23:25
2e84c25 to
8b0363a
Compare
tryghost-renovate
Bot
force-pushed
the
renovate/npm-tiptap-core-vulnerability
branch
2 times, most recently
from
September 4, 2026 01:34
8b0363a to
21a5391
Compare
tryghost-renovate
Bot
force-pushed
the
renovate/npm-tiptap-core-vulnerability
branch
2 times, most recently
from
September 4, 2026 02:36
21a5391 to
8ae03c5
Compare
tryghost-renovate
Bot
force-pushed
the
renovate/npm-tiptap-core-vulnerability
branch
2 times, most recently
from
September 4, 2026 03:32
8ae03c5 to
0355b07
Compare
tryghost-renovate
Bot
force-pushed
the
renovate/npm-tiptap-core-vulnerability
branch
2 times, most recently
from
September 4, 2026 04:33
0355b07 to
b8505a7
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
2.27.2→3.30.4Tiptap: mergeAttributes() turns an own proto key into inherited executable DOM attributes
GHSA-cp6q-959q-f8rh
More information
Details
Summary
@tiptap/core's publicmergeAttributes()helper uses ordinary bracket assignment on keys returned byObject.entries(). An own__proto__key from JSON therefore invokes the legacy prototype setter on the fresh merged object. The function returns an object whose prototype is attacker-controlled, whileObject.keys()and ordinary own-property checks show no attacker attributes.When that result is used as a ProseMirror DOMOutputSpec attribute object,
prosemirror-model'sDOMSerializer.renderSpec()enumerates it withfor...inand applies inherited values withsetAttribute(). In a browser proof, inheritedsrcandonerrorvalues were copied to an<img>and the error handler executed once. This is per-object prototype manipulation; the proof does not modify globalObject.prototype.Root cause
The affected loop is conceptually:
Object.entries(JSON.parse('{"__proto__": {...}}'))includes__proto__. ReadingmergedAttributes['__proto__']resolves the inheritedObject.prototype; assigning to the same key invokesObject.prototype.__proto__'s setter and replacesmergedAttributes' prototype.Browser reproduction
The following shape was tested with exact
@tiptap/core3.29.2 andprosemirror-model1.25.11:Chromium produced an image with
data-inherited-canary,src, andonerror; the handler executed exactly once.Object.prototyperemained clean.Impact and preconditions
Applications that merge untrusted imported document, plugin, CMS, API, tenant, or AI-derived attribute objects can receive a prototype-manipulated result. Consumers that enumerate inherited keys, including ProseMirror's DOM serializer, can turn the hidden properties into DOM attributes and execute JavaScript in the application's origin. Own-key validation, object spread, JSON serialization, and logging can miss the inherited values. Other component consumers can read inherited authorization or configuration fields.
Tiptap's standard fixed ProseMirror schemas discard unknown document attributes, so arbitrary Tiptap JSON is not automatically exploitable in every application. A vulnerable application needs an untrusted object boundary into
mergeAttributes()or a dynamic/custom extension or schema that preserves the relevant attribute object.Affected versions
The unsafe assignment was introduced in commit
ecadf7ea0a7f8f39a8496a60edf0ac8f379e6eb3and is present in the first package tag@tiptap/core@2.0.0-alpha.0, v2.0.0, v2.27.1, v3.0.0, and current v3.29.2 source. No fixed release was found.Recommended remediation
Reject
__proto__before reading or assigning the key, or define copied keys as own data properties without invoking legacy setters. A minimal hardening is to skipkey === '__proto__'. Add regression tests using an own JSON-origin__proto__key and assert that the result keepsObject.prototypeas its prototype, exposes no inherited attacker keys, and cannot create an event-handler attribute throughDOMSerializer.This was found during authorized dependency review and is being reported privately. No public zero-day issue has been opened.
Severity
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:H/SI:H/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Release Notes
ueberdosis/tiptap (@tiptap/core)
v3.30.4Compare Source
@tiptap/core
Patch Changes
mergeAttributes.v3.30.3Compare Source
Patch Changes
965a880: Fix JSX runtime to properly render nested sibling elements by spreading children arrays into DOMOutputSpecv3.30.2Compare Source
Patch Changes
3dffed5: Keep mixed JSX children as separate siblings in DOM output.214a140: Fixed a bug whereeditor.chainandeditor.cancan not be accessed on editor initializationv3.30.1Compare Source
Patch Changes
abc8828: Added new ProseMirror helpers that check whether a value is a specific ProseMirror type.v3.30.0Compare Source
Minor Changes
0247d39:ListKeymapnow registers aTabshortcut that sinks a top-level textblock into the previous list's last item. Pressing Tab at the start of a paragraph right after a bullet/ordered/task list moves the paragraph inside the last list item. The handler does nothing when the cursor is already inside a list item (sinkListItemkeeps working), when there is no list before the paragraph, when the caret is mid-textblock, or when the selection is not a text selection (for example a gap cursor).@tiptap/corealso exposes a newgetPreviousBlockSibling($pos)helper that returns the block-level sibling before the cursor's textblock, or null at the first child of the block parent.3099eef: New Decorations APIFinally the decorations API is here! Even though Decorations itself are nothing new in ProseMirror, the new API makes it much easier to use them in Tiptap without leaving your extensions.
Decorations change how the document looks without changing the document itself. Highlighting search results, marking spelling mistakes, showing collaborator cursors, putting a drag handle next to every block.
Until now you had to write a ProseMirror plugin by hand for this, keep the decoration set in plugin state, and map it forward on every transaction. Extensions can now declare decorations directly with a new
addDecorations()hook.There are three kinds.
Decoration.Inline()styles a range of text.Decoration.Node()puts attributes on a block's DOM element.Decoration.Widget()renders your own element at a single position.Every extension that declares decorations is collected into one plugin, so several extensions can decorate the same document without fighting over it.
Doing less work on every keystroke
By default decorations are rebuilt whenever the document changes. That is fine for small documents and wasteful for large ones, so there are two ways to narrow it down.
shouldUpdate()skips transactions you do not care about. If your decorations only depend on headings, ignore everything else.update: 'changedRanges'together withcreateInRange()only rescans the blocks that actually changed. On a long document this is the difference between scanning the whole thing on every keystroke and scanning one paragraph.For decorations driven by data outside the editor, like comments loaded from a server, use
update: 'manual'and refresh them yourself witheditor.commands.updateDecorations().React and Vue components as widgets
ReactWidgetRendererandVueWidgetRendererrender a real component into a widget decoration, inside your existing app context. Providers, context and stores work as usual.Widgets take a
key. Reuse the same key and the component instance stays mounted while the document changes around it, so local state such as an open menu, a counter or a half-typed input survives editing. Use a stable id from your own data, not a position or a list index, otherwise the component remounts and loses that state.Widgets also accept the ProseMirror options
side,relaxedSide,stopEventandignoreSelection.Documentation
Patch Changes
51909d3: FixedinsertContent,insertContentAtandsetContentfailing when prosemirror-model is loaded more than once.58a8953]v3.29.2Compare Source
Patch Changes
v3.29.1Compare Source
Patch Changes
v3.29.0Compare Source
Patch Changes
d26840f: Fix a TypeScript build error inisAndroid()where comparingnavigator.platformagainst the literal'Android'with===could fail to compile under somelib.dom.d.tstypings ("types have no overlap"). Switched to the same.includes()pattern already used byisiOS(), which is not affected by this TypeScript narrowing issue. No runtime behavior change.935e63f: Fixed a bug where deleting anAllSelection(for example right after Ctrl/Cmd+A) left a lingering "phantom" selection highlight over the emptied document instead of a text cursor.deleteSelectionnow collapses the selection to a cursor.b4c5a2d: Fix input rules crashing when the matched text spans an inline atom node like a mention.a963d48: Node viewgetPos()now returnsundefinedinstead of throwing when the position cannot be resolved yet, for example when React 19 renders a node view component while the editor view is still updating.51f45b6: FixedonContentErrorthrowing when callingeditor.commandsfrom inside the handler on initial load with invalid content. The editor now has a usable state (seeded from the stripped fallback document) beforeonContentErrorfires.0f63969: Fixeditor.$pos()returning the wrong node inside container nodes, for example the list item instead of the list.9acaa65: AddinsertDefaultBlockto insert the default textblock allowed at a position. It accepts an optional position, attributes, content, and selection-update option.e150ee0]v3.28.0Compare Source
Patch Changes
v3.27.4Compare Source
Patch Changes
v3.27.3Compare Source
Patch Changes
023f98c: FixdeleteSelectionto 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.v3.27.2Compare Source
Patch Changes
ceebb31]v3.27.1Compare Source
Patch Changes
v3.27.0Compare Source
Patch Changes
0d0094d: Ordered lists now support thetypeattribute (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 markersPaste 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.795033c:parseAttributesnow supports any word characters at the start of classes or id attributes.0e0c4f9: FixmarksEqualto 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 }).6d12bb9: Fix a edge-case inrewriteUnknownContentto not fail on null-ish values inside marks or nodes.v3.26.1Compare Source
Patch Changes
v3.26.0Compare Source
Patch Changes
v3.25.0Compare Source
Patch Changes
ec291dd: Fix: dragging an inline/resizable image within the editor no longer creates a duplicateWhen 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.454e9b8: Addclearablemark option (defaulttrue).unsetAllMarksnow skips marks withclearable: false, so semantic marks like comments are not removed by "clear formatting".9cf8db0: AddattrsEqualandmarksEqualutility 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.3d4f94c: 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 [
c1a2ce8]v3.24.0Compare Source
Patch Changes
7c0499b]v3.23.6Compare Source
Patch Changes
d168376: Fix deleteSelection to properly handle inline nodes withtext*content. The selection is now expanded to include the entire inline node boundaries when deleting, preventing incorrect collapse of inline text nodes.v3.23.5Compare Source
Patch Changes
835caf5: Fix $pos() returning correct node for non-text atom nodes instead of doc node95e138c: fix(nodeview): eliminate unnecessary re-renders, add opt-in position trackingNodeViews no longer re-render when decorations or position change without
content changes. Added
trackNodeViewPositionoption — when enabled, thecomponent re-renders on every position shift so calls to
getPos()staycurrent in render output. Removed the internal
nodeViewPositionRegistry.Added shallow prop comparison in
ReactRenderer.updateProps().v3.23.4Compare Source
Patch Changes
v3.23.2Compare Source
Patch Changes
f98eaaf: Fix"HTML entity encoding ingetHTML()output for inline style attributes. Adds agetStylePropertyutility to@tiptap/coreand migratesColor,BackgroundColor,FontFamily,FontSize,LineHeight, andHighlightextensions to use it (#7016)v3.23.1Compare Source
Patch Changes
v3.22.5Compare Source
Patch Changes
a375002: AddselectedOnTextSelectionoption to node view renderers. When enabled, theselectedprop also becomes true when a TextSelection is fully inside the node's range, not only on NodeSelection.v3.22.4Compare Source
Patch Changes
27ea931: Fix dependencies installation after packages updates producing peer dependency resolution conflicts64f36b8: Fix text selection collapsing after toggling off a list with AllSelection27ea931]032f8f1]v3.22.3Patch Changes
cb28e7b: FixedinsertContentAtcorrupting the document when inserting inline content with marks at the start of a paragraph. Thefrom - 1position adjustment now only applies to block-level content.v3.22.2Patch Changes
f1d504c: Fix incorrect selection placement when pasting at the end of a marked text node, ensuring inclusive marks are respected404c683: Fixes list toggling when the entire document is selectedv3.22.1Compare Source
Patch Changes
ee03ac0: Fix NodeView not re-rendering when a node's position changes without content or decoration changes (e.g. when a sibling node is moved within the same parent)b88f9ed: Don't stop dragover/dragenter events in NodeViews, to prevent spurious drag-copy cursorsv3.22.0Compare Source
Patch Changes
912a49b: Fix HTML character escaping in markdown roundtrip. HTML entities (<,>,&,") are now decoded to literal characters when parsing markdown into the editor.<,>, and&are re-encoded when serializing back to markdown, while"is preserved as a literal character since double quotes are ordinary in markdown. Code detection for skipping encoding now uses thecode: trueextension spec instead of hardcoded type names. Literal characters inside code blocks and inline code are always preserved.7d4fb9a: Fix ResizableNodeView ignoring node's inline setting by usinginline-flexfor inline nodes andflexfor block nodes0c1c112: extendMarkRange defaults to using the attributes of the first mark of the given type, instead ofattributes = {}. In particular,extendMarkRange('link')no longer extends to adjacent links with different hrefs; restore the previous behavior withextendMarkRange('link', {}).0c1c112: Fix getMarkRange attributes default to consider the first mark of the given typef99bdc2: Guard mark delete event handling whenunsetMarkremoves a mark from inline content that starts at position0, preventing aRangeErrorduring the before-node lookup.v3.21.0Compare Source
Patch Changes
v3.20.6Compare Source
Patch Changes
v3.20.5Patch Changes
v3.20.4Patch Changes
0bcf3c2: Fixed Tiptap not publishing with build dist artifactsv3.20.3Compare Source
Patch Changes
c94fac4: FixedisNodeEmpty()so multi-line text with non-whitespace content is no longer treated as empty whenignoreWhitespaceis enabled.6b9ea92: Fixed overlapping bold and italic markdown serialization and round-tripping.v3.20.2Compare Source
Patch Changes
269823d: Improved markdown empty-paragraph roundtripping across top-level and nested block content. Empty paragraphs now serialize with natural blank-line spacing for the first paragraph in a run and markers for subsequent empty paragraphs at the same level, while parsing preserves those empty paragraphs when converting markdown back to JSON.v3.20.1Compare Source
Patch Changes
25f57e4: Fix inlinestyleparsing inmergeAttributesfor values containing:or;(e.g.url(https://...)orurl(data:...;charset=...,)) and skip incomplete declarationsv3.20.0Compare Source
Minor Changes
57624a1: AddtransformPastedHTMLextension API that allows extensions to transform pasted HTML content before it's parsed into the editor, enabling cleanup of styles, removal of dangerous content, and modification of pasted HTML through a chainable transform system.Patch Changes
4b731e2: Fix checking if mark is active and toggling off marks when part of the selection does not allow the mark (e.g. a code block)98546ac: Global attributes now support shorthand string values fortypes: use'*'to apply to all nodes and marks,'nodes'for all nodes (excluding text), or'marks'for all marks.76ce47d: Fixed a typo in the documentation ofeditor.viewv3.19.0Compare Source
Patch Changes
v3.18.0Compare Source
Patch Changes
v3.17.1Compare Source
Patch Changes
aa9709e: Fixed$nodes()method to correctly return inline nodes (like text, mention, etc.) by fixing thechildrengetter inNodePosclassb46e66a: Fixed ResizableNodeView contentDOM getter to return null instead of undefined for proper TypeScript compatibilityv3.17.0Compare Source
Patch Changes
eecf1c9: AddedisFirefoxutility to corev3.16.0Compare Source
Patch Changes
v3.15.3Compare Source
Patch Changes
8f86f06: Fix Safari scrolling to top when using editor.chain().focus() commandsv3.15.2Compare Source
Patch Changes
v3.15.1Compare Source
Patch Changes
v3.15.0Compare Source
Minor Changes
ac8361c: Add a newdispatchTransactionhook to extensions, allowing developers to intercept, modify, or block transactions before they are applied to the editor state.Patch Changes
v3.14.0Compare Source
Patch Changes
v3.13.0Compare Source
Minor Changes
e3b4f68: 1. Added an optionalcreateCustomHandlecallback toResizableNodeView, allowing developers to fully customize resize handles. When provided, it replaces the default handle creation and bypasses the built-inpositionHandlelogic, giving complete control over markup, styling, and positioning while preserving backward compatibility. 2. Removed predefined inline styles from thewrapperelement to better support dynamic alignment. This eliminates the need for!importantoverrides in user styles. 3. Added an editorupdateevent listener to dynamically attach or remove resize handles based on the editor’s editable state. The implementation tracks the previous editable state to avoid unnecessary re-renders.Patch Changes
526365a: Add 'mentionSuggestionChar' to allowedAttributes for Markdown serialization in multi-mention setups. The attribute is only serialized when it differs from the default '@' character, keeping markdown output clean for single-mention users.v3.12.1Compare Source
Patch Changes
v3.12.0Compare Source
Minor Changes
f232c5a: Implement position mapping using theMappablePositionclass. This enables position mapping in collaborative editing scenarios.MappablePositionclass in core withposition,fromJSON, andtoJSONmethodseditor.utilsproperty withgetUpdatedPosition(position, transaction)andcreateMappablePosition()methodsCollaborationMappablePositionsubclass that extendsMappablePositionwith Y.js relative position supportPatch Changes
v3.11.1Compare Source
Patch Changes
d0c4264: Improve TypeScript generics for Node.extendThe Node.extend method's TypeScript signature was updated so that ExtendedConfig can extend NodeConfig and MarkConfig,
improving type inference when extending Node and Mark classes with additional config properties.
This is a type-only change — there are no runtime behavior changes.
v3.11.0Compare Source
Minor Changes
541c93c: Add native text direction support for RTL and bidirectional content. The editor now includes atextDirectionoption that can be set to'ltr','rtl', or'auto'to control the direction of all content globally. Additionally, newsetTextDirectionandunsetTextDirectioncommands allow for granular control of text direction on specific nodes. This enables proper rendering of right-to-left languages like Arabic and Hebrew, as well as bidirectional text mixing multiple languages.Patch Changes
v3.10.8Compare Source
Patch Changes
8375241: Fixed a bug that caused extra characters to be inserted after a parsed, nestable content block by accounting for leading newlinesb7ead7c: Add documentation comments to Tiptap JSON types95d3e80: allowundefinedas a value for thedefaultattribute keyfd479bd: FixupdateAttributesandresetAttributescommands to return accurate results when used with.can(). Previously, these commands would always returntrueeven when they couldn't perform the operation. Now they correctly returnfalsewhen no matching nodes or marks are found in the selection.v3.10.7Compare Source
Patch Changes
v3.10.6Compare Source
Patch Changes
v3.10.5Compare Source
Patch Changes
92fae18: Fixed ProseMirror schema generation to properly respectisRequiredattribute configuration. Previously, attributes marked withisRequired: truewere incorrectly treated as optional because adefaultproperty was always included in the schema specification. ProseMirror determines attribute requirements by the absence of thedefaultproperty, so now thedefaultis only included when the attribute is not required and a default value is explicitly defined.v3.10.4Compare Source
Patch Changes
64561c4: Fix autofocus behavior to prevent unwanted scrolling when disabledv3.10.3Compare Source
Patch Changes
v3.10.2Compare Source
Patch Changes
v3.10.1Compare Source
Patch Changes
3564e7c: Use correctResizableNodeViewclass namev3.10.0Compare Source
Minor Changes
4aa9f57: Add a new ResizableNodeview NodeView to core that wraps elements (images, videos, iframes) with configurable resize handles. It provides live onResize/onCommit callbacks, min/max constraints, aspect-ratio support, and styling hooks (class names + data attributes) to improve UX when resizing media inside the editor.4aa9f57: the addNodeView function can now returnnullto dynamically disable rendering of a node viewWhile this should not directly cause any issues, it's noteworthy as it still could affect some behavior in some edge cases.
Patch Changes
v3.9.1Compare Source
Patch Changes
v3.9.0Compare Source
Patch Changes
bbb8e16: Only remove injected CSS on unmount if no other editors are in the document (fixes #6836)v3.8.0Compare Source
Patch Changes
v3.7.2Compare Source
Patch Changes
v3.7.1Compare Source
Patch Changes
v3.7.0Compare Source
Minor Changes
35645d9: All commands and their corresponding TypeScript types are now exported from@tiptap/coreso they can be imported and referenced directly by consumers. This makes it easier to build typed helpers, extensions, and tests that depend on the command signatures.Why:
Notes:
@tiptap/coregoing forward.35645d9: Add comprehensive bidirectional markdown support to Tiptap through a new@tiptap/markdownpackage and Markdown utilities in@tiptap/core.New Package:
@tiptap/markdown- A new official extension that provides full Markdown parsing and serialization capabilities using MarkedJS as the underlying Markdown parser.Core Features:
Extension API
MarkdownExtension: Main extension that adds Markdown support to your editorMarkdownManager: Core engine for parsing and serializing Markdowneditor.markdown.parse(markdown)editor.markdown.serialize(json)editor.markdown.instanceEditor Methods
editor.getMarkdown(): Serialize current editor content to Markdown stringeditor.markdown: Access to MarkdownManager instance for advanced operationsEditor Options:
contentType: Control the type of content that is inserted into the editor. Can bejson,htmlormarkdown- defaults tojsonand will automatically detect invalid content types (like JSON when it is actually Markdown).Command Options: All content commands now support an
contentTypeoption:setContent(markdown, { contentType: 'markdown' }): Replace editor content with markdowninsertContent(markdown, { contentType: 'markdown' }): Insert markdown at cursor positioninsertContentAt(position, markdown, { contentType: 'markdown' }): Insert Markdown at specific positionFor more, check the documentation.
Patch Changes
35645d9: The extension manager now provides a new propertybaseExtensionsthat contains an unflattened array of extensionsv3.6.7Compare Source
Patch Changes
v3.6.6Compare Source
Patch Changes
v3.6.5Compare Source
Patch Changes
1e4caea: Editors can now emittransactionandupdateevents before being mounted.This means smoother state handling and instant feedback from editors, even when they're not in the DOM.
v3.6.4Compare Source
Patch Changes
v3.6.3Compare Source
Patch Changes
67f7b4a: Refined theJSONContent.attrsdefinition to exactly mirror the structure returned byeditor.getJSON(). This ensures strict type safety and consistency between the editor output and the expected type, eliminating errors caused by mismatched attribute signatures.v3.6.2Compare Source
Patch Changes
v3.6.1Compare Source
Patch Changes
v3.6.0Compare Source
Patch Changes
c0190bd: Improve typing and docs forEditorOptions.elementto reflect all supported mounting modes and align behavior across adapters.elementnow accepts:Element: the editor is appended inside the given element.{ mount: HTMLElement }: the editor is mounted directly tomount(no extra wrapper).(editorEl: HTMLElement) => void: a function that receives the editor element so you can place it anywhere in the DOM.null: no automatic mounting.v3.5.3Compare Source
Patch Changes
v3.5.2Compare Source
Patch Changes
v3.5.1Compare Source
Patch Changes
v3.5.0Compare Source
Patch Changes
v3.4.6Compare Source
Patc
Configuration
📅 Schedule: (in timezone Etc/UTC)
* * * * 0,6)* 23 * * 1-5)* 0-5 * * 1-6)🚦 Automerge: Enabled.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate.