diff --git a/packages/core/package.json b/packages/core/package.json index 336f713e29..1acdecad6a 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -96,7 +96,6 @@ "@tiptap/core": "^3.13.0", "@tiptap/extension-bold": "^3.13.0", "@tiptap/extension-code": "^3.13.0", - "@tiptap/extensions": "^3.13.0", "@tiptap/extension-horizontal-rule": "^3.13.0", "@tiptap/extension-italic": "^3.13.0", "@tiptap/extension-link": "^3.13.0", @@ -104,6 +103,7 @@ "@tiptap/extension-strike": "^3.13.0", "@tiptap/extension-text": "^3.13.0", "@tiptap/extension-underline": "^3.13.0", + "@tiptap/extensions": "^3.13.0", "@tiptap/pm": "^3.13.0", "emoji-mart": "^5.6.0", "fast-deep-equal": "^3.1.3", @@ -112,7 +112,7 @@ "prosemirror-model": "^1.25.4", "prosemirror-state": "^1.4.4", "prosemirror-tables": "^1.8.3", - "prosemirror-transform": "^1.10.5", + "prosemirror-transform": "^1.11.0", "prosemirror-view": "^1.41.4", "rehype-format": "^5.0.1", "rehype-parse": "^9.0.1", diff --git a/packages/core/src/blocks/ListItem/NumberedListItem/IndexingPlugin.test.ts b/packages/core/src/blocks/ListItem/NumberedListItem/IndexingPlugin.test.ts new file mode 100644 index 0000000000..d10d4b08f1 --- /dev/null +++ b/packages/core/src/blocks/ListItem/NumberedListItem/IndexingPlugin.test.ts @@ -0,0 +1,346 @@ +import { Selection } from "prosemirror-state"; +import { describe, expect, it } from "vitest"; + +import { BlockNoteEditor } from "../../../editor/BlockNoteEditor.js"; + +/** + * @vitest-environment jsdom + */ + +const PLUGIN_KEY = "numbered-list-indexing-decorations$"; + +function createEditor() { + const editor = BlockNoteEditor.create(); + editor.mount(document.createElement("div")); + return editor; +} + +function getDecorationSet(editor: BlockNoteEditor) { + const view = editor._tiptapEditor.view; + const plugin = view.state.plugins.find( + (p) => (p as any).key === PLUGIN_KEY, + ); + if (!plugin) { + throw new Error("IndexingPlugin not found"); + } + return plugin.getState(view.state)!.decorations; +} + +/** Returns all decoration specs in document order. */ +function getDecoSpecs(editor: BlockNoteEditor) { + const decoSet = getDecorationSet(editor); + const doc = editor._tiptapEditor.view.state.doc; + const decos = decoSet.find(0, doc.nodeSize - 2); + return decos.map((d: any) => d.spec); +} + +/** Returns the data-index values from decoration attrs in document order. */ +function getDataIndices(editor: BlockNoteEditor) { + const decoSet = getDecorationSet(editor); + const doc = editor._tiptapEditor.view.state.doc; + const decos = decoSet.find(0, doc.nodeSize - 2); + return decos.map((d: any) => { + // Decoration attrs are stored on the decoration object + const attrs = + (d as any).type?.attrs ?? (d as any).attrs ?? (d as any).type; + return parseInt(attrs["data-index"], 10); + }); +} + +function setBlocks( + editor: BlockNoteEditor, + blocks: Array<{ type: string; content?: string; props?: any }>, +) { + editor.replaceBlocks( + editor.document, + blocks.map((b) => ({ + type: b.type as any, + content: b.content ?? "text", + ...(b.props ? { props: b.props } : {}), + })) as any, + ); +} + +describe("IndexingPlugin: basic numbering", () => { + it("assigns sequential indices to a contiguous numbered list", () => { + const editor = createEditor(); + setBlocks(editor, [ + { type: "numberedListItem", content: "a" }, + { type: "numberedListItem", content: "b" }, + { type: "numberedListItem", content: "c" }, + ]); + + const indices = getDataIndices(editor); + expect(indices).toEqual([1, 2, 3]); + }); + + it("resets index after a non-list block", () => { + const editor = createEditor(); + setBlocks(editor, [ + { type: "numberedListItem", content: "a" }, + { type: "numberedListItem", content: "b" }, + { type: "paragraph", content: "break" }, + { type: "numberedListItem", content: "c" }, + { type: "numberedListItem", content: "d" }, + ]); + + const indices = getDataIndices(editor); + expect(indices).toEqual([1, 2, 1, 2]); + }); + + it("single numbered list item gets index 1", () => { + const editor = createEditor(); + setBlocks(editor, [{ type: "numberedListItem", content: "only" }]); + + const indices = getDataIndices(editor); + expect(indices).toEqual([1]); + }); + + it("no decorations for non-list blocks", () => { + const editor = createEditor(); + setBlocks(editor, [ + { type: "paragraph", content: "a" }, + { type: "heading", content: "b", props: { level: 1 } }, + ]); + + const indices = getDataIndices(editor); + expect(indices).toEqual([]); + }); +}); + +describe("IndexingPlugin: updates on structural changes", () => { + it("updates indices when a block is deleted from the middle", () => { + const editor = createEditor(); + setBlocks(editor, [ + { type: "numberedListItem", content: "a" }, + { type: "numberedListItem", content: "b" }, + { type: "numberedListItem", content: "c" }, + ]); + + // Delete the second block + const secondBlock = editor.document[1]; + editor.removeBlocks([secondBlock]); + + const indices = getDataIndices(editor); + expect(indices).toEqual([1, 2]); + }); + + it("updates indices when a block is inserted in the middle", () => { + const editor = createEditor(); + setBlocks(editor, [ + { type: "numberedListItem", content: "a" }, + { type: "numberedListItem", content: "c" }, + ]); + + // Insert a block after the first + const firstBlock = editor.document[0]; + editor.insertBlocks( + [{ type: "numberedListItem" as any, content: "b" } as any], + firstBlock, + "after", + ); + + const indices = getDataIndices(editor); + expect(indices).toEqual([1, 2, 3]); + }); + + it("updates indices when first block is deleted", () => { + const editor = createEditor(); + setBlocks(editor, [ + { type: "numberedListItem", content: "a" }, + { type: "numberedListItem", content: "b" }, + { type: "numberedListItem", content: "c" }, + ]); + + editor.removeBlocks([editor.document[0]]); + + const indices = getDataIndices(editor); + expect(indices).toEqual([1, 2]); + }); + + it("updates indices with nested list when first block is deleted", () => { + const editor = createEditor(); + editor.replaceBlocks(editor.document, [ + { + type: "numberedListItem" as any, + content: "first item", + }, + { + type: "numberedListItem" as any, + content: "second item", + children: [ + { type: "numberedListItem" as any, content: "nested item" }, + { type: "numberedListItem" as any, content: "second nested item" }, + ], + }, + { + type: "numberedListItem" as any, + content: "third item", + }, + ] as any); + + // Before deletion: top-level [1, 2, 3], nested [1, 2] + const indicesBefore = getDataIndices(editor); + expect(indicesBefore).toEqual([1, 2, 1, 2, 3]); + + // Delete first item + editor.removeBlocks([editor.document[0]]); + + // After deletion: top-level [1, 2], nested [1, 2] + const indicesAfter = getDataIndices(editor); + expect(indicesAfter).toEqual([1, 1, 2, 2]); + }); + + it("updates indices when block type changes from numbered list to paragraph", () => { + const editor = createEditor(); + setBlocks(editor, [ + { type: "numberedListItem", content: "a" }, + { type: "numberedListItem", content: "b" }, + { type: "numberedListItem", content: "c" }, + ]); + + // Change second block to paragraph — splits the list + editor.updateBlock(editor.document[1], { type: "paragraph" }); + + const indices = getDataIndices(editor); + // First list: [1], then paragraph (no decoration), then new list: [1] + expect(indices).toEqual([1, 1]); + }); + + it("updates indices when block type changes from paragraph to numbered list", () => { + const editor = createEditor(); + setBlocks(editor, [ + { type: "numberedListItem", content: "a" }, + { type: "paragraph", content: "b" }, + { type: "numberedListItem", content: "c" }, + ]); + + // Change paragraph to numbered list — merges the lists + editor.updateBlock(editor.document[1], { type: "numberedListItem" }); + + const indices = getDataIndices(editor); + expect(indices).toEqual([1, 2, 3]); + }); +}); + +describe("IndexingPlugin: typing preserves indices (early exit)", () => { + it("indices unchanged after typing in the first block", () => { + const editor = createEditor(); + setBlocks(editor, [ + { type: "numberedListItem", content: "a" }, + { type: "numberedListItem", content: "b" }, + { type: "numberedListItem", content: "c" }, + ]); + + const indicesBefore = getDataIndices(editor); + + // Type a character in the first block + const view = editor._tiptapEditor.view; + view.dispatch(view.state.tr.insertText("x", 4)); + + const indicesAfter = getDataIndices(editor); + expect(indicesAfter).toEqual(indicesBefore); + }); + + it("indices unchanged after typing in the last block", () => { + const editor = createEditor(); + setBlocks(editor, [ + { type: "numberedListItem", content: "a" }, + { type: "numberedListItem", content: "b" }, + { type: "numberedListItem", content: "c" }, + ]); + + const indicesBefore = getDataIndices(editor); + + const view = editor._tiptapEditor.view; + const pos = view.state.doc.content.size - 4; + view.dispatch(view.state.tr.insertText("x", pos)); + + const indicesAfter = getDataIndices(editor); + expect(indicesAfter).toEqual(indicesBefore); + }); + + it("indices unchanged after typing in a middle block", () => { + const editor = createEditor(); + setBlocks(editor, [ + { type: "numberedListItem", content: "a" }, + { type: "numberedListItem", content: "b" }, + { type: "numberedListItem", content: "c" }, + ]); + + const indicesBefore = getDataIndices(editor); + + // Find position inside second block's content + const view = editor._tiptapEditor.view; + let targetPos = 0; + view.state.doc.descendants((node, pos) => { + if ( + node.type.name === "numberedListItem" && + targetPos === 0 && + pos > 4 + ) { + targetPos = pos + 1; // inside the inline content + } + }); + view.dispatch(view.state.tr.insertText("x", targetPos)); + + const indicesAfter = getDataIndices(editor); + expect(indicesAfter).toEqual(indicesBefore); + }); +}); + +describe("IndexingPlugin: decoration specs", () => { + it("decorations have correct spec with index, isFirst, hasStart", () => { + const editor = createEditor(); + setBlocks(editor, [ + { type: "numberedListItem", content: "a" }, + { type: "numberedListItem", content: "b" }, + ]); + + const specs = getDecoSpecs(editor); + expect(specs).toEqual([ + { index: 1, isFirst: true, hasStart: false }, + { index: 2, isFirst: false, hasStart: false }, + ]); + }); + + it("first item after a paragraph is marked as isFirst", () => { + const editor = createEditor(); + setBlocks(editor, [ + { type: "numberedListItem", content: "a" }, + { type: "paragraph", content: "break" }, + { type: "numberedListItem", content: "b" }, + { type: "numberedListItem", content: "c" }, + ]); + + const specs = getDecoSpecs(editor); + expect(specs).toEqual([ + { index: 1, isFirst: true, hasStart: false }, + { index: 1, isFirst: true, hasStart: false }, + { index: 2, isFirst: false, hasStart: false }, + ]); + }); +}); + +describe("IndexingPlugin: selection-only transactions", () => { + it("does not recompute decorations on selection change", () => { + const editor = createEditor(); + setBlocks(editor, [ + { type: "numberedListItem", content: "a" }, + { type: "numberedListItem", content: "b" }, + ]); + + const decosBefore = getDecorationSet(editor); + + // Move selection without changing content + const view = editor._tiptapEditor.view; + const tr = view.state.tr.setSelection( + Selection.near(view.state.doc.resolve(4)), + ); + view.dispatch(tr); + + const decosAfter = getDecorationSet(editor); + // Same DecorationSet reference — not recomputed + expect(decosAfter).toBe(decosBefore); + }); +}); diff --git a/packages/core/src/blocks/ListItem/NumberedListItem/IndexingPlugin.ts b/packages/core/src/blocks/ListItem/NumberedListItem/IndexingPlugin.ts index 63b461fd32..1011f58ca0 100644 --- a/packages/core/src/blocks/ListItem/NumberedListItem/IndexingPlugin.ts +++ b/packages/core/src/blocks/ListItem/NumberedListItem/IndexingPlugin.ts @@ -17,7 +17,10 @@ type DecoSpec = { type Deco = Omit & { spec: DecoSpec }; /** - * Calculate the index for a numbered list item based on its position and previous siblings + * Calculate the index for a numbered list item based on its position and previous siblings. + * Iteratively walks backwards to find the start of the contiguous list (or a cached entry), + * then walks forward to populate the cache. This avoids deep recursion that would overflow + * the stack on large documents. */ function calculateListItemIndex( node: Node, @@ -25,52 +28,93 @@ function calculateListItemIndex( tr: Transaction, map: Map, ): { index: number; isFirst: boolean; hasStart: boolean } { - let index: number = node.firstChild!.attrs["start"] || 1; - let isFirst = true; const hasStart = !!node.firstChild!.attrs["start"]; - const blockInfo = getBlockInfo({ - posBeforeNode: pos, - node, - }); - + // Fast path: previous sibling already in cache + const blockInfo = getBlockInfo({ posBeforeNode: pos, node }); if (!blockInfo.isBlockContainer) { throw new Error("impossible"); } - - // Check if this block is the start of a new ordered list const prevBlock = tr.doc.resolve(blockInfo.bnBlock.beforePos).nodeBefore; const prevBlockIndex = prevBlock ? map.get(prevBlock) : undefined; - if (prevBlockIndex !== undefined) { - index = prevBlockIndex + 1; - isFirst = false; - } else if (prevBlock) { - // Because we only check the affected ranges, we may need to walk backwards to find the previous block's index - // We can't just rely on the map, because the map is reset every `apply` call - const prevBlockInfo = getBlockInfo({ - posBeforeNode: blockInfo.bnBlock.beforePos - prevBlock.nodeSize, - node: prevBlock, + const index = prevBlockIndex + 1; + map.set(node, index); + return { index, isFirst: false, hasStart }; + } + + // Walk backwards iteratively to collect the chain of consecutive + // numbered list items until we hit a cached entry, a non-list block, + // or the start of the parent. + const chain: { node: Node; pos: number }[] = [{ node, pos }]; + let curNode = prevBlock; + let curBeforePos = blockInfo.bnBlock.beforePos; + + while (curNode) { + const cachedIndex = map.get(curNode); + if (cachedIndex !== undefined) { + // Found a cached predecessor — start counting from here + break; + } + const curInfo = getBlockInfo({ + posBeforeNode: curBeforePos - curNode.nodeSize, + node: curNode, }); + if (curInfo.blockNoteType !== "numberedListItem") { + break; + } + chain.push({ node: curNode, pos: curBeforePos - curNode.nodeSize }); + const nextPrev = tr.doc.resolve(curInfo.bnBlock.beforePos).nodeBefore; + curBeforePos = curInfo.bnBlock.beforePos; + curNode = nextPrev; + } + + // Walk forward (reverse of the collected chain) to assign indices + // The last element in chain is the furthest predecessor + let index: number; + let isFirst: boolean; + + // Determine starting index from the block just before the chain + const lastInChain = chain[chain.length - 1]; + const lastInfo = getBlockInfo({ + posBeforeNode: lastInChain.pos, + node: lastInChain.node, + }); + if (!lastInfo.isBlockContainer) { + throw new Error("impossible"); + } + const predecessorNode = tr.doc.resolve(lastInfo.bnBlock.beforePos).nodeBefore; + const predecessorIndex = predecessorNode + ? map.get(predecessorNode) + : undefined; + + if (predecessorIndex !== undefined) { + index = predecessorIndex; + isFirst = false; + } else { + // Start of a new list + index = (lastInChain.node.firstChild!.attrs["start"] || 1) - 1; + isFirst = true; + } - const isPrevBlockOrderedListItem = - prevBlockInfo.blockNoteType === "numberedListItem"; - if (isPrevBlockOrderedListItem) { - // recurse to get the index of the previous block - const itemIndex = calculateListItemIndex( - prevBlock, - blockInfo.bnBlock.beforePos - prevBlock.nodeSize, - tr, - map, - ); - index = itemIndex.index + 1; + // Assign indices from the end of the chain (furthest back) to the front (original node) + for (let i = chain.length - 1; i >= 0; i--) { + const entry = chain[i]; + if (isFirst && i < chain.length - 1) { + // Only the very first item in the list gets isFirst isFirst = false; } + index++; + map.set(entry.node, index); } - // Note: we set the map late, so that when we recurse, we can rely on the map to get the previous block's index in one lookup - map.set(node, index); - return { index, isFirst, hasStart }; + // isFirst is true only for the very first item in a new list: + // chain.length > 1 means we found predecessor list items, so not first. + return { + index, + isFirst: chain.length === 1 ? isFirst || predecessorIndex === undefined : false, + hasStart, + }; } /** @@ -87,42 +131,74 @@ function getDecorations( tr.mapping, tr.doc, ); + + // Find the start of the first change to limit traversal scope. + // We only need to check from the change point forward, since earlier + // blocks are unaffected and their mapped decorations remain correct. + const range = tr.changedRange(); + if (!range) { + return { decorations: nextDecorationSet }; + } const decorationsToAdd = [] as Deco[]; - tr.doc.nodesBetween(0, tr.doc.nodeSize - 2, (node, pos) => { - if ( - node.type.name === "blockContainer" && - node.firstChild!.type.name === "numberedListItem" - ) { - const { index, isFirst, hasStart } = calculateListItemIndex( - node, - pos, - tr, - map, - ); - - // Check if decoration already exists with the same properties (for perf reasons) - const existingDecorations = nextDecorationSet.find( - pos, - pos + node.nodeSize, - (deco: DecoSpec) => - deco.index === index && - deco.isFirst === isFirst && - deco.hasStart === hasStart, - ); - - if (existingDecorations.length === 0) { - const blockNode = tr.doc.nodeAt(pos + 1); - // Create a widget decoration to display the index - decorationsToAdd.push( - // move in by 1 to account for the block container - Decoration.node(pos + 1, pos + 1 + blockNode!.nodeSize, { - "data-index": index.toString(), - }), + // Track blockGroups where we've verified a decoration match past the + // changed range. Within a single blockGroup, indices are sequential — + // if one matches, all subsequent siblings must too. But sibling items + // in *other* blockGroups (e.g. nested lists) are independent. + const completedGroups = new Set(); + + tr.doc.nodesBetween( + range.from, + tr.doc.nodeSize - 2, + (node, pos, parent) => { + if (parent && completedGroups.has(parent)) { + return false; + } + + if ( + node.type.name === "blockContainer" && + node.firstChild!.type.name === "numberedListItem" + ) { + const { index, isFirst, hasStart } = calculateListItemIndex( + node, + pos, + tr, + map, ); + + // Search only the numberedListItem node range, not the full + // blockContainer (which includes nested blockGroups whose + // decorations could falsely match). + const blockNode = tr.doc.nodeAt(pos + 1)!; + const existingDecorations = nextDecorationSet.find( + pos + 1, + pos + 1 + blockNode.nodeSize, + (deco: DecoSpec) => + deco.index === index && + deco.isFirst === isFirst && + deco.hasStart === hasStart, + ); + + if (existingDecorations.length === 0) { + decorationsToAdd.push( + Decoration.node( + pos + 1, + pos + 1 + blockNode.nodeSize, + { "data-index": index.toString() }, + { index, isFirst, hasStart }, + ) as Deco, + ); + } else if (pos >= range.to && parent) { + // Past the changed range and decoration matches in this blockGroup: + // all subsequent siblings must also match. Mark group as done and + // skip this node's children (nested lists are unaffected too). + completedGroups.add(parent); + return false; + } } - } - }); + return undefined; + }, + ); // Remove any decorations that exist at the same position, they will be replaced by the new decorations const decorationsToRemove = decorationsToAdd.flatMap((deco) => @@ -153,12 +229,8 @@ export const NumberedListIndexingDecorationPlugin = () => { }); }, apply(tr, previousPluginState) { - if ( - !tr.docChanged && - !tr.selectionSet && - previousPluginState.decorations - ) { - // Just reuse the existing decorations, since nothing should have changed + if (!tr.docChanged && previousPluginState.decorations) { + // Selection-only changes don't affect list indices, just reuse existing decorations return previousPluginState; } return getDecorations(tr, previousPluginState); diff --git a/packages/core/src/editor/performance.test.ts b/packages/core/src/editor/performance.test.ts new file mode 100644 index 0000000000..80f26e717e --- /dev/null +++ b/packages/core/src/editor/performance.test.ts @@ -0,0 +1,134 @@ +import { describe, expect, it } from "vitest"; + +import { BlockNoteEditor } from "./BlockNoteEditor.js"; + +/** + * @vitest-environment jsdom + */ + +/** + * Performance regression tests for issue #2595: + * Typing/echo lag with many blocks (~50k chars total). + * + * The root cause was several plugins performing O(n) full-document traversals + * on every ProseMirror transaction, where n = total number of blocks. + * The fix limits traversals to only the changed ranges. + * + * These tests verify the optimization by: + * 1. Checking plugin state reflects scoped (not full) traversal + * 2. Measuring that transaction time scales sub-linearly with doc size + */ + +function createEditorWithBlocks( + blockCount: number, + blockType: "heading" | "paragraph" | "numberedListItem" = "heading", +) { + const editor = BlockNoteEditor.create(); + editor.mount(document.createElement("div")); + const blocks = []; + for (let i = 0; i < blockCount; i++) { + blocks.push({ + type: blockType as any, + content: `Block number ${i} with some text to simulate a real document`, + ...(blockType === "heading" ? { props: { level: 1 } } : {}), + }); + } + editor.replaceBlocks(editor.document, blocks as any); + return editor; +} + +describe("Performance: transaction processing scales sub-linearly (#2595)", () => { + // Compare timing between a small and large document. + // At 10k blocks the ratio is dominated by ProseMirror's DecorationSet.map() + // which is inherently O(n). The thresholds verify BlockNote plugins don't + // add significant overhead on top of that. + const SMALL = 100; + const LARGE = 10000; + const ITERATIONS = 10; + + function measureAvgInsertTime( + editor: BlockNoteEditor, + pos: number, + ) { + const view = editor._tiptapEditor.view; + // Warm up + view.dispatch(view.state.tr.insertText("w", pos)); + + const start = performance.now(); + for (let i = 0; i < ITERATIONS; i++) { + view.dispatch(view.state.tr.insertText("x", pos)); + } + return (performance.now() - start) / ITERATIONS; + } + + it("heading blocks: typing at end", () => { + const smallEditor = createEditorWithBlocks(SMALL, "heading"); + const largeEditor = createEditorWithBlocks(LARGE, "heading"); + + const smallAvg = measureAvgInsertTime( + smallEditor, + smallEditor._tiptapEditor.view.state.doc.content.size - 4, + ); + const largeAvg = measureAvgInsertTime( + largeEditor, + largeEditor._tiptapEditor.view.state.doc.content.size - 4, + ); + const ratio = largeAvg / smallAvg; + + // eslint-disable-next-line no-console + console.log( + `Heading blocks (end): ${SMALL}=${smallAvg.toFixed(3)}ms, ${LARGE}=${largeAvg.toFixed(3)}ms, ratio=${ratio.toFixed(2)}x`, + ); + + // Ratio scales roughly linearly with block count due to ProseMirror + // DOM update costs. At 10k/100 = 100x blocks, expect <50x ratio. + expect(ratio).toBeLessThan(50); + }); + + it("numbered list items: typing at beginning", () => { + const smallEditor = createEditorWithBlocks(SMALL, "numberedListItem"); + const largeEditor = createEditorWithBlocks(LARGE, "numberedListItem"); + + // Position 4 = inside the first block's content + const smallAvg = measureAvgInsertTime(smallEditor, 4); + const largeAvg = measureAvgInsertTime(largeEditor, 4); + const ratio = largeAvg / smallAvg; + + // eslint-disable-next-line no-console + console.log( + `Numbered list (begin): ${SMALL}=${smallAvg.toFixed(3)}ms, ${LARGE}=${largeAvg.toFixed(3)}ms, ratio=${ratio.toFixed(2)}x`, + ); + + // Typing doesn't change indices, so the plugin exits early once it + // verifies the first decoration past the changed range still matches. + // Remaining cost is DecorationSet.map() which is O(n decorations). + // Ratio appears high (~200x) because the 100-block baseline is very + // fast for begin-of-doc edits. Absolute time (~32ms) is comparable + // to end-of-doc (~40ms) — both dominated by DecorationSet.map(). + expect(ratio).toBeLessThan(250); + }); + + it("numbered list items: typing at end", () => { + const smallEditor = createEditorWithBlocks(SMALL, "numberedListItem"); + const largeEditor = createEditorWithBlocks(LARGE, "numberedListItem"); + + const smallAvg = measureAvgInsertTime( + smallEditor, + smallEditor._tiptapEditor.view.state.doc.content.size - 4, + ); + const largeAvg = measureAvgInsertTime( + largeEditor, + largeEditor._tiptapEditor.view.state.doc.content.size - 4, + ); + const ratio = largeAvg / smallAvg; + + // eslint-disable-next-line no-console + console.log( + `Numbered list (end): ${SMALL}=${smallAvg.toFixed(3)}ms, ${LARGE}=${largeAvg.toFixed(3)}ms, ratio=${ratio.toFixed(2)}x`, + ); + + // DecorationSet.map() on 10k decorations is O(n) in ProseMirror. + // Absolute time (~40ms) is comparable to begin (~32ms). + expect(ratio).toBeLessThan(250); + }); +}); diff --git a/packages/core/src/extensions/PreviousBlockType/PreviousBlockType.test.ts b/packages/core/src/extensions/PreviousBlockType/PreviousBlockType.test.ts new file mode 100644 index 0000000000..819e083d7e --- /dev/null +++ b/packages/core/src/extensions/PreviousBlockType/PreviousBlockType.test.ts @@ -0,0 +1,86 @@ +import { describe, expect, it } from "vitest"; + +import { BlockNoteEditor } from "../../editor/BlockNoteEditor.js"; + +/** + * @vitest-environment jsdom + */ + +function createEditorWithBlocks( + blockCount: number, + blockType: "heading" | "paragraph" = "heading", +) { + const editor = BlockNoteEditor.create(); + editor.mount(document.createElement("div")); + const blocks = []; + for (let i = 0; i < blockCount; i++) { + blocks.push({ + type: blockType as any, + content: `Block number ${i} with some text to simulate a real document`, + ...(blockType === "heading" ? { props: { level: 1 } } : {}), + }); + } + editor.replaceBlocks(editor.document, blocks as any); + return editor; +} + +function getPreviousBlockTypePluginState( + editor: BlockNoteEditor, +) { + const view = editor._tiptapEditor.view; + const plugin = view.state.plugins.find((p) => { + const key = (p.spec as any)?.key; + return key && typeof key === "object" && key.key === "previous-blocks$"; + }); + if (!plugin) { + throw new Error("PreviousBlockType plugin not found"); + } + return plugin.getState(view.state) as { + updatedBlocks: Set; + currentTransactionOldBlockAttrs: Record; + prevTransactionOldBlockAttrs: Record; + }; +} + +describe("PreviousBlockType: scoped traversal", () => { + it("only tracks blocks in the changed range, not the entire document", () => { + const editor = createEditorWithBlocks(500, "heading"); + const view = editor._tiptapEditor.view; + + // Insert a character — block attributes (type, level, depth) don't change + const pos = view.state.doc.content.size - 4; + view.dispatch(view.state.tr.insertText("x", pos)); + + const state = getPreviousBlockTypePluginState(editor); + + // No blocks should be marked as updated since typing doesn't change attrs + expect(state.updatedBlocks.size).toBe(0); + + // The plugin should only have tracked the block(s) in the changed range, + // not all 500 blocks. Before the fix this was 500; after, typically 1-3. + const trackedBlockCount = Object.keys( + state.currentTransactionOldBlockAttrs, + ).length; + expect(trackedBlockCount).toBeLessThan(10); + }); + + it("correctly detects attribute changes only for affected blocks", () => { + const editor = createEditorWithBlocks(100, "heading"); + + // Change the first block's type from heading to paragraph + const firstBlock = editor.document[0]; + editor.updateBlock(firstBlock, { type: "paragraph" }); + + const state = getPreviousBlockTypePluginState(editor); + + // Only the first block should be marked as updated + expect(state.updatedBlocks.size).toBe(1); + expect(state.updatedBlocks.has(firstBlock.id)).toBe(true); + + // Only a small number of blocks tracked (the changed range) + const trackedBlockCount = Object.keys( + state.currentTransactionOldBlockAttrs, + ).length; + expect(trackedBlockCount).toBeLessThan(10); + }); +}); diff --git a/packages/core/src/extensions/PreviousBlockType/PreviousBlockType.ts b/packages/core/src/extensions/PreviousBlockType/PreviousBlockType.ts index 2eba97338a..714783ad28 100644 --- a/packages/core/src/extensions/PreviousBlockType/PreviousBlockType.ts +++ b/packages/core/src/extensions/PreviousBlockType/PreviousBlockType.ts @@ -1,4 +1,4 @@ -import { findChildren } from "@tiptap/core"; +import { findChildrenInRange } from "@tiptap/core"; import { Plugin, PluginKey } from "prosemirror-state"; import { Decoration, DecorationSet } from "prosemirror-view"; import { createExtension } from "../../editor/BlockNoteExtension.js"; @@ -67,45 +67,40 @@ export const PreviousBlockTypeExtension = createExtension(() => { prev.currentTransactionOldBlockAttrs = {}; prev.updatedBlocks.clear(); - if (!transaction.docChanged || oldState.doc.eq(newState.doc)) { + if (!transaction.docChanged) { return prev; } - // TODO: Instead of iterating through the entire document, only check nodes affected by the transactions. Will - // also probably require checking nodes affected by the previous transaction too. - // We didn't get this to work yet: - // const transform = combineTransactionSteps(oldState.doc, [transaction]); - // // const { mapping } = transform; - // const changes = getChangedRanges(transform); - // - // changes.forEach(({ oldRange, newRange }) => { - // const oldNodes = findChildrenInRange( - // oldState.doc, - // oldRange, - // (node) => node.attrs.id - // ); - // - // const newNodes = findChildrenInRange( - // newState.doc, - // newRange, - // (node) => node.attrs.id - // ); + // Only check nodes affected by the transaction, not the entire document. + // changedRange() is O(steps) unlike tiptap's getChangedRanges which is O(steps²). + const newRange = transaction.changedRange(); + if (!newRange) { + return prev; + } + + // Map the new-doc range back to old-doc coordinates + const invertedMapping = transaction.mapping.invert(); + const oldRange = { + from: invertedMapping.map(newRange.from, -1), + to: invertedMapping.map(newRange.to, 1), + }; const currentTransactionOriginalOldBlockAttrs = {} as any; - const oldNodes = findChildren( + const oldNodes = findChildrenInRange( oldState.doc, + oldRange, (node) => node.attrs.id, ); const oldNodesById = new Map( oldNodes.map((node) => [node.node.attrs.id, node]), ); - const newNodes = findChildren( + const newNodes = findChildrenInRange( newState.doc, + newRange, (node) => node.attrs.id, ); - // Traverses all block containers in the new editor state. for (const node of newNodes) { const oldNode = oldNodesById.get(node.node.attrs.id); @@ -127,27 +122,22 @@ export const PreviousBlockTypeExtension = createExtension(() => { depth: oldState.doc.resolve(oldNode.pos).depth, }; - currentTransactionOriginalOldBlockAttrs[node.node.attrs.id] = - oldAttrs; + currentTransactionOriginalOldBlockAttrs[ + node.node.attrs.id + ] = oldAttrs; prev.currentTransactionOldBlockAttrs[node.node.attrs.id] = oldAttrs; - // TODO: faster deep equal? - if (JSON.stringify(oldAttrs) !== JSON.stringify(newAttrs)) { + if ( + oldAttrs.index !== newAttrs.index || + oldAttrs.level !== newAttrs.level || + oldAttrs.type !== newAttrs.type || + oldAttrs.depth !== newAttrs.depth + ) { (oldAttrs as any)["depth-change"] = oldAttrs.depth - newAttrs.depth; - // for debugging: - // console.log( - // "id:", - // node.node.attrs.id, - // "previousBlockTypePlugin changes detected, oldAttrs", - // oldAttrs, - // "new", - // newAttrs - // ); - prev.updatedBlocks.add(node.node.attrs.id); } } @@ -186,17 +176,11 @@ export const PreviousBlockTypeExtension = createExtension(() => { val || "none"; } - // for debugging: - // console.log( - // "previousBlockTypePlugin committing decorations", - // decorationAttrs - // ); - - const decoration = Decoration.node(pos, pos + node.nodeSize, { - ...decorationAttrs, - }); - - decorations.push(decoration); + decorations.push( + Decoration.node(pos, pos + node.nodeSize, { + ...decorationAttrs, + }), + ); }); return DecorationSet.create(state.doc, decorations); diff --git a/packages/xl-ai/package.json b/packages/xl-ai/package.json index 9dee4e056a..12bb4814aa 100644 --- a/packages/xl-ai/package.json +++ b/packages/xl-ai/package.json @@ -84,7 +84,7 @@ "prosemirror-model": "^1.25.4", "prosemirror-state": "^1.4.4", "prosemirror-tables": "^1.8.3", - "prosemirror-transform": "^1.10.5", + "prosemirror-transform": "^1.11.0", "prosemirror-view": "^1.41.4", "react": "^19.2.3", "react-dom": "^19.2.3", diff --git a/packages/xl-multi-column/package.json b/packages/xl-multi-column/package.json index 9c132283d1..f12cb415ff 100644 --- a/packages/xl-multi-column/package.json +++ b/packages/xl-multi-column/package.json @@ -57,7 +57,7 @@ "prosemirror-model": "^1.25.4", "prosemirror-state": "^1.4.4", "prosemirror-tables": "^1.8.3", - "prosemirror-transform": "^1.10.5", + "prosemirror-transform": "^1.11.0", "prosemirror-view": "^1.41.4", "react-icons": "^5.5.0" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 34c8277730..f0c9f27126 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -54,7 +54,7 @@ importers: version: 5.9.3 vitest: specifier: ^2.1.9 - version: 2.1.9(@types/node@25.3.3)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.3.3)(typescript@5.9.3))(terser@5.46.0) + version: 2.1.9(@types/node@25.5.0)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(terser@5.46.1) wait-on: specifier: 8.0.3 version: 8.0.3 @@ -246,7 +246,7 @@ importers: version: 16.5.0(@types/react@19.2.8)(lucide-react@0.562.0(react@19.2.3))(next@16.1.6(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(zod@4.3.5) fumadocs-mdx: specifier: ^14.2.6 - version: 14.2.6(@types/react@19.2.8)(fumadocs-core@16.5.0(@types/react@19.2.8)(lucide-react@0.562.0(react@19.2.3))(next@16.1.6(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(zod@4.3.5))(next@16.1.6(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(vite@6.4.0(@types/node@25.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 14.2.6(@types/react@19.2.8)(fumadocs-core@16.5.0(@types/react@19.2.8)(lucide-react@0.562.0(react@19.2.3))(next@16.1.6(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(zod@4.3.5))(next@16.1.6(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(vite@6.4.0(@types/node@25.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1)) fumadocs-twoslash: specifier: ^3.1.12 version: 3.1.12(@fumadocs/base-ui@16.5.0(@types/react@19.2.8)(fumadocs-core@16.5.0(@types/react@19.2.8)(lucide-react@0.562.0(react@19.2.3))(next@16.1.6(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(zod@4.3.5))(next@16.1.6(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(tailwindcss@4.1.18))(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) @@ -404,10 +404,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/01-basic/02-block-objects: dependencies: @@ -450,10 +450,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/01-basic/03-multi-column: dependencies: @@ -499,10 +499,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/01-basic/04-default-blocks: dependencies: @@ -545,10 +545,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/01-basic/05-removing-default-blocks: dependencies: @@ -591,10 +591,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/01-basic/06-block-manipulation: dependencies: @@ -637,10 +637,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/01-basic/07-selection-blocks: dependencies: @@ -683,10 +683,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/01-basic/08-ariakit: dependencies: @@ -729,10 +729,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/01-basic/09-shadcn: dependencies: @@ -775,7 +775,7 @@ importers: devDependencies: '@tailwindcss/vite': specifier: ^4.1.14 - version: 4.1.14(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.1.14(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) '@types/react': specifier: ^19.2.3 version: 19.2.8 @@ -784,10 +784,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/01-basic/10-localization: dependencies: @@ -830,10 +830,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/01-basic/11-custom-placeholder: dependencies: @@ -876,10 +876,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/01-basic/12-multi-editor: dependencies: @@ -922,10 +922,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/01-basic/13-custom-paste-handler: dependencies: @@ -968,10 +968,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/01-basic/14-editor-scrollable: dependencies: @@ -1014,10 +1014,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/01-basic/14-shadowdom: dependencies: @@ -1060,10 +1060,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/01-basic/testing: dependencies: @@ -1106,10 +1106,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/02-backend/01-file-uploading: dependencies: @@ -1152,10 +1152,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/02-backend/02-saving-loading: dependencies: @@ -1198,10 +1198,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/02-backend/03-s3: dependencies: @@ -1250,10 +1250,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/02-backend/04-rendering-static-documents: dependencies: @@ -1299,10 +1299,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/03-ui-components/01-ui-elements-remove: dependencies: @@ -1345,10 +1345,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/03-ui-components/02-formatting-toolbar-buttons: dependencies: @@ -1391,10 +1391,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/03-ui-components/03-formatting-toolbar-block-type-items: dependencies: @@ -1440,10 +1440,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/03-ui-components/04-side-menu-buttons: dependencies: @@ -1489,10 +1489,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/03-ui-components/05-side-menu-drag-handle-items: dependencies: @@ -1538,10 +1538,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/03-ui-components/06-suggestion-menus-slash-menu-items: dependencies: @@ -1587,10 +1587,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/03-ui-components/07-suggestion-menus-slash-menu-component: dependencies: @@ -1633,10 +1633,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/03-ui-components/08-suggestion-menus-emoji-picker-columns: dependencies: @@ -1679,10 +1679,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/03-ui-components/09-suggestion-menus-emoji-picker-component: dependencies: @@ -1725,10 +1725,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/03-ui-components/10-suggestion-menus-grid-mentions: dependencies: @@ -1771,10 +1771,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/03-ui-components/11-uppy-file-panel: dependencies: @@ -1853,10 +1853,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/03-ui-components/12-static-formatting-toolbar: dependencies: @@ -1899,10 +1899,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/03-ui-components/13-custom-ui: dependencies: @@ -1951,10 +1951,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/03-ui-components/14-experimental-mobile-formatting-toolbar: dependencies: @@ -1997,10 +1997,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/03-ui-components/15-advanced-tables: dependencies: @@ -2043,10 +2043,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/03-ui-components/16-link-toolbar-buttons: dependencies: @@ -2089,10 +2089,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/03-ui-components/17-advanced-tables-2: dependencies: @@ -2135,10 +2135,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/03-ui-components/18-drag-n-drop: dependencies: @@ -2181,10 +2181,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/04-theming/01-theming-dom-attributes: dependencies: @@ -2227,10 +2227,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/04-theming/02-changing-font: dependencies: @@ -2273,10 +2273,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/04-theming/03-theming-css: dependencies: @@ -2319,10 +2319,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/04-theming/04-theming-css-variables: dependencies: @@ -2365,10 +2365,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/04-theming/05-theming-css-variables-code: dependencies: @@ -2411,10 +2411,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/04-theming/06-code-block: dependencies: @@ -2460,10 +2460,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/04-theming/07-custom-code-block: dependencies: @@ -2524,10 +2524,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/05-interoperability/01-converting-blocks-to-html: dependencies: @@ -2570,10 +2570,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/05-interoperability/02-converting-blocks-from-html: dependencies: @@ -2616,10 +2616,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/05-interoperability/03-converting-blocks-to-md: dependencies: @@ -2662,10 +2662,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/05-interoperability/04-converting-blocks-from-md: dependencies: @@ -2708,10 +2708,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/05-interoperability/05-converting-blocks-to-pdf: dependencies: @@ -2763,10 +2763,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/05-interoperability/06-converting-blocks-to-docx: dependencies: @@ -2815,10 +2815,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/05-interoperability/07-converting-blocks-to-odt: dependencies: @@ -2867,10 +2867,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/05-interoperability/08-converting-blocks-to-react-email: dependencies: @@ -2919,10 +2919,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/05-interoperability/09-blocks-to-html-static-render: dependencies: @@ -2965,10 +2965,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/05-interoperability/10-static-html-render: dependencies: @@ -3011,10 +3011,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/06-custom-schema/01-alert-block: dependencies: @@ -3060,10 +3060,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/06-custom-schema/02-suggestion-menus-mentions: dependencies: @@ -3106,10 +3106,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/06-custom-schema/03-font-style: dependencies: @@ -3155,10 +3155,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/06-custom-schema/04-pdf-file-block: dependencies: @@ -3204,10 +3204,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/06-custom-schema/05-alert-block-full-ux: dependencies: @@ -3253,10 +3253,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/06-custom-schema/06-toggleable-blocks: dependencies: @@ -3299,10 +3299,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/06-custom-schema/07-configuring-blocks: dependencies: @@ -3345,10 +3345,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/06-custom-schema/draggable-inline-content: dependencies: @@ -3391,10 +3391,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/06-custom-schema/react-custom-blocks: dependencies: @@ -3437,10 +3437,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/06-custom-schema/react-custom-inline-content: dependencies: @@ -3483,10 +3483,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/06-custom-schema/react-custom-styles: dependencies: @@ -3529,10 +3529,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/07-collaboration/01-partykit: dependencies: @@ -3581,10 +3581,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/07-collaboration/02-liveblocks: dependencies: @@ -3645,10 +3645,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/07-collaboration/03-y-sweet: dependencies: @@ -3694,10 +3694,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/07-collaboration/04-electric-sql: dependencies: @@ -3740,10 +3740,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/07-collaboration/05-comments: dependencies: @@ -3789,10 +3789,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/07-collaboration/06-comments-with-sidebar: dependencies: @@ -3841,10 +3841,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/07-collaboration/07-ghost-writer: dependencies: @@ -3893,10 +3893,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/07-collaboration/08-forking: dependencies: @@ -3945,10 +3945,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/08-extensions/01-tiptap-arrow-conversion: dependencies: @@ -3994,10 +3994,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/09-ai/01-minimal: dependencies: @@ -4046,10 +4046,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/09-ai/02-playground: dependencies: @@ -4098,10 +4098,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/09-ai/03-custom-ai-menu-items: dependencies: @@ -4153,10 +4153,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/09-ai/04-with-collaboration: dependencies: @@ -4211,10 +4211,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/09-ai/05-manual-execution: dependencies: @@ -4269,10 +4269,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/09-ai/06-client-side-transport: dependencies: @@ -4324,10 +4324,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/09-ai/07-server-persistence: dependencies: @@ -4376,10 +4376,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/vanilla-js/react-vanilla-custom-blocks: dependencies: @@ -4422,10 +4422,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/vanilla-js/react-vanilla-custom-inline-content: dependencies: @@ -4468,10 +4468,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) examples/vanilla-js/react-vanilla-custom-styles: dependencies: @@ -4514,10 +4514,10 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) packages/ariakit: dependencies: @@ -4539,7 +4539,7 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -4560,13 +4560,13 @@ importers: version: 5.9.3 vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite-plugin-externalize-deps: specifier: ^0.8.0 - version: 0.8.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 0.8.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) packages/code-block: dependencies: @@ -4603,13 +4603,13 @@ importers: version: 5.9.3 vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vitest: specifier: ^2.1.9 - version: 2.1.9(@types/node@25.3.3)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.3.3)(typescript@5.9.3))(terser@5.46.0) + version: 2.1.9(@types/node@25.5.0)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(terser@5.46.1) packages/core: dependencies: @@ -4672,7 +4672,7 @@ importers: version: 5.0.1 prosemirror-highlight: specifier: ^0.13.0 - version: 0.13.0(@shikijs/types@3.19.0)(@types/hast@3.0.4)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-transform@1.10.5)(prosemirror-view@1.41.4) + version: 0.13.0(@shikijs/types@3.19.0)(@types/hast@3.0.4)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-transform@1.11.0)(prosemirror-view@1.41.4) prosemirror-model: specifier: ^1.25.4 version: 1.25.4 @@ -4683,8 +4683,8 @@ importers: specifier: ^1.8.3 version: 1.8.5 prosemirror-transform: - specifier: ^1.10.5 - version: 1.10.5 + specifier: ^1.11.0 + version: 1.11.0 prosemirror-view: specifier: ^1.41.4 version: 1.41.4 @@ -4757,13 +4757,13 @@ importers: version: 5.9.3 vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vitest: specifier: ^2.1.9 - version: 2.1.9(@types/node@25.3.3)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.3.3)(typescript@5.9.3))(terser@5.46.0) + version: 2.1.9(@types/node@25.5.0)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(terser@5.46.1) packages/dev-scripts: dependencies: @@ -4828,7 +4828,7 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -4849,13 +4849,13 @@ importers: version: 5.9.3 vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite-plugin-externalize-deps: specifier: ^0.8.0 - version: 0.8.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 0.8.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) packages/react: dependencies: @@ -4922,7 +4922,7 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -4943,16 +4943,16 @@ importers: version: 5.9.3 vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite-plugin-externalize-deps: specifier: ^0.8.0 - version: 0.8.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 0.8.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vitest: specifier: ^2.1.9 - version: 2.1.9(@types/node@25.3.3)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.3.3)(typescript@5.9.3))(terser@5.46.0) + version: 2.1.9(@types/node@25.5.0)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(terser@5.46.1) packages/server-util: dependencies: @@ -5007,13 +5007,13 @@ importers: version: 5.9.3 vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vitest: specifier: ^2.1.9 - version: 2.1.9(@types/node@25.3.3)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.3.3)(typescript@5.9.3))(terser@5.46.0) + version: 2.1.9(@types/node@25.5.0)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(terser@5.46.1) packages/shadcn: dependencies: @@ -5086,7 +5086,7 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.1)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -5107,13 +5107,13 @@ importers: version: 5.9.3 vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.1) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.0)) + version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.1)) vite-plugin-externalize-deps: specifier: ^0.8.0 - version: 0.8.0(vite@5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.0)) + version: 0.8.0(vite@5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.1)) packages/xl-ai: dependencies: @@ -5137,7 +5137,7 @@ importers: version: 0.27.18(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@handlewithcare/prosemirror-suggest-changes': specifier: ^0.1.8 - version: 0.1.8(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-transform@1.10.5)(prosemirror-view@1.41.4) + version: 0.1.8(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-transform@1.11.0)(prosemirror-view@1.41.4) '@tiptap/core': specifier: ^3.0.0 version: 3.15.3(@tiptap/pm@3.15.3) @@ -5163,8 +5163,8 @@ importers: specifier: ^1.8.3 version: 1.8.5 prosemirror-transform: - specifier: ^1.10.5 - version: 1.10.5 + specifier: ^1.11.0 + version: 1.11.0 prosemirror-view: specifier: ^1.41.4 version: 1.41.4 @@ -5234,7 +5234,7 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) '@vitest/runner': specifier: ^2.1.9 version: 2.1.9 @@ -5249,10 +5249,10 @@ importers: version: 4.0.3 msw: specifier: ^2.11.5 - version: 2.11.5(@types/node@25.3.3)(typescript@5.9.3) + version: 2.11.5(@types/node@25.5.0)(typescript@5.9.3) msw-snapshot: specifier: ^5.3.0 - version: 5.3.0(msw@2.11.5(@types/node@25.3.3)(typescript@5.9.3)) + version: 5.3.0(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3)) rimraf: specifier: ^5.0.10 version: 5.0.10 @@ -5267,16 +5267,16 @@ importers: version: 6.22.0 vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite-plugin-externalize-deps: specifier: ^0.8.0 - version: 0.8.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 0.8.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vitest: specifier: ^2.1.9 - version: 2.1.9(@types/node@25.3.3)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.3.3)(typescript@5.9.3))(terser@5.46.0) + version: 2.1.9(@types/node@25.5.0)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(terser@5.46.1) packages/xl-ai-server: dependencies: @@ -5328,19 +5328,19 @@ importers: version: 6.22.0 vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) vite-node: specifier: ^2.1.9 - version: 2.1.9(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 2.1.9(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vite-plugin-externalize-deps: specifier: ^0.8.0 - version: 0.8.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 0.8.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vitest: specifier: ^2.1.9 - version: 2.1.9(@types/node@25.3.3)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.3.3)(typescript@5.9.3))(terser@5.46.0) + version: 2.1.9(@types/node@25.5.0)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(terser@5.46.1) packages/xl-docx-exporter: dependencies: @@ -5386,13 +5386,13 @@ importers: version: 5.9.3 vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vitest: specifier: ^2.1.9 - version: 2.1.9(@types/node@25.3.3)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.3.3)(typescript@5.9.3))(terser@5.46.0) + version: 2.1.9(@types/node@25.5.0)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(terser@5.46.1) xml-formatter: specifier: ^3.6.7 version: 3.6.7 @@ -5447,13 +5447,13 @@ importers: version: 5.9.3 vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vitest: specifier: ^2.1.9 - version: 2.1.9(@types/node@25.3.3)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.3.3)(typescript@5.9.3))(terser@5.46.0) + version: 2.1.9(@types/node@25.5.0)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(terser@5.46.1) packages/xl-multi-column: dependencies: @@ -5476,8 +5476,8 @@ importers: specifier: ^1.8.3 version: 1.8.5 prosemirror-transform: - specifier: ^1.10.5 - version: 1.10.5 + specifier: ^1.11.0 + version: 1.11.0 prosemirror-view: specifier: ^1.41.4 version: 1.41.4 @@ -5514,13 +5514,13 @@ importers: version: 5.9.3 vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vitest: specifier: ^2.1.9 - version: 2.1.9(@types/node@25.3.3)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.3.3)(typescript@5.9.3))(terser@5.46.0) + version: 2.1.9(@types/node@25.5.0)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(terser@5.46.1) packages/xl-odt-exporter: dependencies: @@ -5566,13 +5566,13 @@ importers: version: 5.9.3 vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vitest: specifier: ^2.1.9 - version: 2.1.9(@types/node@25.3.3)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.3.3)(typescript@5.9.3))(terser@5.46.0) + version: 2.1.9(@types/node@25.5.0)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(terser@5.46.1) xml-formatter: specifier: ^3.6.7 version: 3.6.7 @@ -5639,13 +5639,13 @@ importers: version: 5.9.3 vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) vitest: specifier: ^2.1.9 - version: 2.1.9(@types/node@25.3.3)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.3.3)(typescript@5.9.3))(terser@5.46.0) + version: 2.1.9(@types/node@25.5.0)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(terser@5.46.1) playground: dependencies: @@ -5793,7 +5793,7 @@ importers: devDependencies: '@tailwindcss/vite': specifier: ^4.1.14 - version: 4.1.14(vite@6.4.0(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 4.1.14(vite@6.4.0(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1)) '@types/react': specifier: ^19.2.3 version: 19.2.8 @@ -5802,7 +5802,7 @@ importers: version: 19.2.3(@types/react@19.2.8) '@vitejs/plugin-react': specifier: ^4.7.0 - version: 4.7.0(vite@6.4.0(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 4.7.0(vite@6.4.0(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -5820,13 +5820,13 @@ importers: version: 1.4.0 vite: specifier: ^6.4.0 - version: 6.4.0(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.1) + version: 6.4.0(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@6.4.0(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 1.8.1(eslint@8.57.1)(vite@6.4.0(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1)) vite-plugin-inspect: specifier: 11.1.0 - version: 11.1.0(vite@6.4.0(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.1)) + version: 11.1.0(vite@6.4.0(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1)) shared: dependencies: @@ -5863,7 +5863,7 @@ importers: version: link:../packages/shadcn '@playwright/experimental-ct-react': specifier: 1.51.1 - version: 1.51.1(@types/node@20.19.22)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(vite@5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.0))(yaml@2.8.1) + version: 1.51.1(@types/node@20.19.22)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(vite@5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.1))(yaml@2.8.1) '@playwright/test': specifier: 1.51.1 version: 1.51.1 @@ -5899,13 +5899,13 @@ importers: version: 5.0.10 vite: specifier: ^5.4.20 - version: 5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.0) + version: 5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.1) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.0)) + version: 1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.1)) vitest: specifier: ^2.1.9 - version: 2.1.9(@types/node@20.19.22)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@20.19.22)(typescript@5.9.3))(terser@5.46.0) + version: 2.1.9(@types/node@20.19.22)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@20.19.22)(typescript@5.9.3))(terser@5.46.1) packages: @@ -6944,6 +6944,10 @@ packages: resolution: {integrity: sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==} engines: {node: '>=6.9.0'} + '@babel/runtime@7.29.2': + resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} + engines: {node: '>=6.9.0'} + '@babel/template@7.27.2': resolution: {integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==} engines: {node: '>=6.9.0'} @@ -10527,8 +10531,8 @@ packages: '@types/node@25.0.7': resolution: {integrity: sha512-C/er7DlIZgRJO7WtTdYovjIFzGsz0I95UlMyR9anTb4aCpBSRWe5Jc1/RvLKUfzmOxHPGjSE5+63HgLtndxU4w==} - '@types/node@25.3.3': - resolution: {integrity: sha512-DpzbrH7wIcBaJibpKo9nnSQL0MTRdnWttGyE5haGwK86xgMOkFLp7vEyfQPGLOJh5wNYiJ3V9PmUMDhV9u8kkQ==} + '@types/node@25.5.0': + resolution: {integrity: sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==} '@types/nodemailer@7.0.5': resolution: {integrity: sha512-7WtR4MFJUNN2UFy0NIowBRJswj5KXjXDhlZY43Hmots5eGu5q/dTeFd/I6GgJA/qj3RqO6dDy4SvfcV3fOVeIA==} @@ -12165,8 +12169,8 @@ packages: resolution: {integrity: sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==} engines: {node: '>=10.13.0'} - enhanced-resolve@5.20.0: - resolution: {integrity: sha512-/ce7+jQ1PQ6rVXwe+jKEg5hW5ciicHwIQUagZkp6IufBoY3YDgdTTY1azVs0qoRgVmvsNB+rbjLJxDAeHHtwsQ==} + enhanced-resolve@5.20.1: + resolution: {integrity: sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==} engines: {node: '>=10.13.0'} enquirer@2.3.6: @@ -12620,8 +12624,8 @@ packages: flatted@3.3.3: resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} - flatted@3.3.4: - resolution: {integrity: sha512-3+mMldrTAPdta5kjX2G2J7iX4zxtnwpdA8Tr2ZSjkyPSanvbZAcy6flmtnXbEybHrDcU9641lxrMfFuUxVz9vA==} + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} follow-redirects@1.15.11: resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} @@ -14875,8 +14879,8 @@ packages: prosemirror-state: ^1.4.2 prosemirror-view: ^1.33.8 - prosemirror-transform@1.10.5: - resolution: {integrity: sha512-RPDQCxIDhIBb1o36xxwsaeAvivO8VLJcgBtzmOwQ64bMtsVFh5SSuJ6dWSxO1UsHTiTXPCgQm3PDJt7p6IOLbw==} + prosemirror-transform@1.11.0: + resolution: {integrity: sha512-4I7Ce4KpygXb9bkiPS3hTEk4dSHorfRw8uI0pE8IhxlK2GXsqv5tIA7JUSxtSu7u8APVOTtbUBxTmnHIxVkIJw==} prosemirror-view@1.41.4: resolution: {integrity: sha512-WkKgnyjNncri03Gjaz3IFWvCAE94XoiEgvtr0/r2Xw7R8/IjK3sKLSiDoCHWcsXSAinVaKlGRZDvMCsF1kbzjA==} @@ -15729,6 +15733,10 @@ packages: resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} + tapable@2.3.2: + resolution: {integrity: sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==} + engines: {node: '>=6'} + tar-fs@2.1.4: resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==} @@ -15746,8 +15754,8 @@ packages: engines: {node: '>=18'} deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exhorbitant rates) by contacting i@izs.me - terser-webpack-plugin@5.3.17: - resolution: {integrity: sha512-YR7PtUp6GMU91BgSJmlaX/rS2lGDbAF7D+Wtq7hRO+MiljNmodYvqslzCFiYVAgW+Qoaaia/QUIP4lGXufjdZw==} + terser-webpack-plugin@5.4.0: + resolution: {integrity: sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==} engines: {node: '>= 10.13.0'} peerDependencies: '@swc/core': '*' @@ -15762,8 +15770,8 @@ packages: uglify-js: optional: true - terser@5.46.0: - resolution: {integrity: sha512-jTwoImyr/QbOWFFso3YoU3ik0jBBDJ6JTOQiy/J2YxVJdZCc+5u7skhNwiOR3FQIygFqVUPHl7qbbxtjW2K3Qg==} + terser@5.46.1: + resolution: {integrity: sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==} engines: {node: '>=10'} hasBin: true @@ -18396,6 +18404,8 @@ snapshots: '@babel/runtime@7.28.6': {} + '@babel/runtime@7.29.2': {} + '@babel/template@7.27.2': dependencies: '@babel/code-frame': 7.27.1 @@ -18532,7 +18542,7 @@ snapshots: '@emotion/babel-plugin@11.13.5': dependencies: '@babel/helper-module-imports': 7.28.6 - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 '@emotion/hash': 0.9.2 '@emotion/memoize': 0.9.0 '@emotion/serialize': 1.3.3 @@ -18565,7 +18575,7 @@ snapshots: '@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3)': dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 '@emotion/babel-plugin': 11.13.5 '@emotion/cache': 11.14.0 '@emotion/serialize': 1.3.3 @@ -18592,7 +18602,7 @@ snapshots: '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.8)(react@19.2.3))(@types/react@19.2.8)(react@19.2.3)': dependencies: - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 '@emotion/babel-plugin': 11.13.5 '@emotion/is-prop-valid': 1.4.0 '@emotion/react': 11.14.0(@types/react@19.2.8)(react@19.2.3) @@ -19003,14 +19013,14 @@ snapshots: prosemirror-history: 1.5.0 prosemirror-model: 1.25.4 prosemirror-state: 1.4.4 - prosemirror-transform: 1.10.5 + prosemirror-transform: 1.11.0 prosemirror-view: 1.41.4 - '@handlewithcare/prosemirror-suggest-changes@0.1.8(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-transform@1.10.5)(prosemirror-view@1.41.4)': + '@handlewithcare/prosemirror-suggest-changes@0.1.8(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-transform@1.11.0)(prosemirror-view@1.41.4)': dependencies: prosemirror-model: 1.25.4 prosemirror-state: 1.4.4 - prosemirror-transform: 1.10.5 + prosemirror-transform: 1.11.0 prosemirror-view: 1.41.4 '@hapi/hoek@9.3.0': {} @@ -19151,12 +19161,12 @@ snapshots: '@types/node': 25.0.7 optional: true - '@inquirer/confirm@5.1.19(@types/node@25.3.3)': + '@inquirer/confirm@5.1.19(@types/node@25.5.0)': dependencies: - '@inquirer/core': 10.3.0(@types/node@25.3.3) - '@inquirer/type': 3.0.9(@types/node@25.3.3) + '@inquirer/core': 10.3.0(@types/node@25.5.0) + '@inquirer/type': 3.0.9(@types/node@25.5.0) optionalDependencies: - '@types/node': 25.3.3 + '@types/node': 25.5.0 '@inquirer/core@10.3.0(@types/node@20.19.22)': dependencies: @@ -19186,18 +19196,18 @@ snapshots: '@types/node': 25.0.7 optional: true - '@inquirer/core@10.3.0(@types/node@25.3.3)': + '@inquirer/core@10.3.0(@types/node@25.5.0)': dependencies: '@inquirer/ansi': 1.0.1 '@inquirer/figures': 1.0.14 - '@inquirer/type': 3.0.9(@types/node@25.3.3) + '@inquirer/type': 3.0.9(@types/node@25.5.0) cli-width: 4.1.0 mute-stream: 2.0.0 signal-exit: 4.1.0 wrap-ansi: 6.2.0 yoctocolors-cjs: 2.1.3 optionalDependencies: - '@types/node': 25.3.3 + '@types/node': 25.5.0 '@inquirer/figures@1.0.14': {} @@ -19211,9 +19221,9 @@ snapshots: '@types/node': 25.0.7 optional: true - '@inquirer/type@3.0.9(@types/node@25.3.3)': + '@inquirer/type@3.0.9(@types/node@25.5.0)': optionalDependencies: - '@types/node': 25.3.3 + '@types/node': 25.5.0 '@isaacs/balanced-match@4.0.1': {} @@ -19991,11 +20001,11 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@playwright/experimental-ct-core@1.51.1(@types/node@20.19.22)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.1)': + '@playwright/experimental-ct-core@1.51.1(@types/node@20.19.22)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1)': dependencies: playwright: 1.51.1 playwright-core: 1.51.1 - vite: 6.4.0(@types/node@20.19.22)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 6.4.0(@types/node@20.19.22)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - '@types/node' - jiti @@ -20009,10 +20019,10 @@ snapshots: - tsx - yaml - '@playwright/experimental-ct-react@1.51.1(@types/node@20.19.22)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(vite@5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.0))(yaml@2.8.1)': + '@playwright/experimental-ct-react@1.51.1(@types/node@20.19.22)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(vite@5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.1))(yaml@2.8.1)': dependencies: - '@playwright/experimental-ct-core': 1.51.1(@types/node@20.19.22)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.1) - '@vitejs/plugin-react': 4.7.0(vite@5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.0)) + '@playwright/experimental-ct-core': 1.51.1(@types/node@20.19.22)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1) + '@vitejs/plugin-react': 4.7.0(vite@5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.1)) transitivePeerDependencies: - '@types/node' - jiti @@ -22034,19 +22044,19 @@ snapshots: postcss: 8.5.6 tailwindcss: 4.1.18 - '@tailwindcss/vite@4.1.14(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0))': + '@tailwindcss/vite@4.1.14(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1))': dependencies: '@tailwindcss/node': 4.1.14 '@tailwindcss/oxide': 4.1.14 tailwindcss: 4.1.14 - vite: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + vite: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) - '@tailwindcss/vite@4.1.14(vite@6.4.0(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.1))': + '@tailwindcss/vite@4.1.14(vite@6.4.0(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@tailwindcss/node': 4.1.14 '@tailwindcss/oxide': 4.1.14 tailwindcss: 4.1.14 - vite: 6.4.0(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 6.4.0(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1) '@tanstack/react-store@0.7.7(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: @@ -22068,7 +22078,7 @@ snapshots: '@testing-library/dom@10.4.0': dependencies: '@babel/code-frame': 7.29.0 - '@babel/runtime': 7.28.6 + '@babel/runtime': 7.29.2 '@types/aria-query': 5.0.4 aria-query: 5.3.0 chalk: 4.1.2 @@ -22177,7 +22187,7 @@ snapshots: prosemirror-state: 1.4.4 prosemirror-tables: 1.8.5 prosemirror-trailing-node: 3.0.0(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.4) - prosemirror-transform: 1.10.5 + prosemirror-transform: 1.11.0 prosemirror-view: 1.41.4 '@tiptap/react@3.15.3(@floating-ui/dom@1.7.5)(@tiptap/core@3.15.3(@tiptap/pm@3.15.3))(@tiptap/pm@3.15.3)(@types/react-dom@19.2.3(@types/react@19.2.8))(@types/react@19.2.8)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': @@ -22401,7 +22411,7 @@ snapshots: dependencies: undici-types: 7.16.0 - '@types/node@25.3.3': + '@types/node@25.5.0': dependencies: undici-types: 7.18.2 @@ -22863,7 +22873,7 @@ snapshots: '@vercel/oidc@3.0.5': {} - '@vitejs/plugin-react@4.7.0(vite@5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.0))': + '@vitejs/plugin-react@4.7.0(vite@5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.1))': dependencies: '@babel/core': 7.28.4 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) @@ -22871,11 +22881,11 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.0) + vite: 5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.1) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@4.7.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0))': + '@vitejs/plugin-react@4.7.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1))': dependencies: '@babel/core': 7.28.4 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) @@ -22883,11 +22893,11 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + vite: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@4.7.0(vite@6.4.0(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.1))': + '@vitejs/plugin-react@4.7.0(vite@6.4.0(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.4 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.4) @@ -22895,7 +22905,7 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 6.4.0(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 6.4.0(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -22906,33 +22916,33 @@ snapshots: chai: 5.3.3 tinyrainbow: 1.2.0 - '@vitest/mocker@2.1.9(msw@2.11.5(@types/node@20.19.22)(typescript@5.9.3))(vite@5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.0))': + '@vitest/mocker@2.1.9(msw@2.11.5(@types/node@20.19.22)(typescript@5.9.3))(vite@5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.1))': dependencies: '@vitest/spy': 2.1.9 estree-walker: 3.0.3 magic-string: 0.30.19 optionalDependencies: msw: 2.11.5(@types/node@20.19.22)(typescript@5.9.3) - vite: 5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.0) + vite: 5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.1) - '@vitest/mocker@2.1.9(msw@2.11.5(@types/node@25.0.7)(typescript@5.9.3))(vite@5.4.20(@types/node@25.0.7)(lightningcss@1.30.2)(terser@5.46.0))': + '@vitest/mocker@2.1.9(msw@2.11.5(@types/node@25.0.7)(typescript@5.9.3))(vite@5.4.20(@types/node@25.0.7)(lightningcss@1.30.2)(terser@5.46.1))': dependencies: '@vitest/spy': 2.1.9 estree-walker: 3.0.3 magic-string: 0.30.19 optionalDependencies: msw: 2.11.5(@types/node@25.0.7)(typescript@5.9.3) - vite: 5.4.20(@types/node@25.0.7)(lightningcss@1.30.2)(terser@5.46.0) + vite: 5.4.20(@types/node@25.0.7)(lightningcss@1.30.2)(terser@5.46.1) optional: true - '@vitest/mocker@2.1.9(msw@2.11.5(@types/node@25.3.3)(typescript@5.9.3))(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0))': + '@vitest/mocker@2.1.9(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1))': dependencies: '@vitest/spy': 2.1.9 estree-walker: 3.0.3 magic-string: 0.30.19 optionalDependencies: - msw: 2.11.5(@types/node@25.3.3)(typescript@5.9.3) - vite: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + msw: 2.11.5(@types/node@25.5.0)(typescript@5.9.3) + vite: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) '@vitest/pretty-format@2.1.9': dependencies: @@ -22957,12 +22967,12 @@ snapshots: dependencies: '@vitest/utils': 2.1.9 fflate: 0.8.2 - flatted: 3.3.4 + flatted: 3.4.2 pathe: 1.1.2 sirv: 3.0.2 - tinyglobby: 0.2.12 + tinyglobby: 0.2.15 tinyrainbow: 1.2.0 - vitest: 2.1.9(@types/node@25.3.3)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.3.3)(typescript@5.9.3))(terser@5.46.0) + vitest: 2.1.9(@types/node@25.5.0)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(terser@5.46.1) optional: true '@vitest/utils@2.1.9': @@ -23441,7 +23451,7 @@ snapshots: pg: 8.17.1 react: 19.2.3 react-dom: 19.2.3(react@19.2.3) - vitest: 2.1.9(@types/node@25.0.7)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.0.7)(typescript@5.9.3))(terser@5.46.0) + vitest: 2.1.9(@types/node@25.0.7)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.0.7)(typescript@5.9.3))(terser@5.46.1) better-call@1.1.8(zod@4.3.5): dependencies: @@ -24164,10 +24174,10 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.3.0 - enhanced-resolve@5.20.0: + enhanced-resolve@5.20.1: dependencies: graceful-fs: 4.2.11 - tapable: 2.3.0 + tapable: 2.3.2 enquirer@2.3.6: dependencies: @@ -24403,8 +24413,8 @@ snapshots: '@next/eslint-plugin-next': 16.1.6 eslint: 9.39.2(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.6.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-react: 7.37.5(eslint@9.39.2(jiti@2.6.1)) eslint-plugin-react-hooks: 7.0.1(eslint@9.39.2(jiti@2.6.1)) @@ -24453,7 +24463,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.6.1)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 @@ -24464,7 +24474,7 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -24478,14 +24488,14 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.2(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.2(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -24526,7 +24536,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -24537,7 +24547,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.2(jiti@2.6.1) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.2(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.53.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)))(eslint@9.39.2(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -24975,7 +24985,7 @@ snapshots: flatted@3.3.3: {} - flatted@3.3.4: + flatted@3.4.2: optional: true follow-redirects@1.15.11: {} @@ -25087,7 +25097,7 @@ snapshots: transitivePeerDependencies: - supports-color - fumadocs-mdx@14.2.6(@types/react@19.2.8)(fumadocs-core@16.5.0(@types/react@19.2.8)(lucide-react@0.562.0(react@19.2.3))(next@16.1.6(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(zod@4.3.5))(next@16.1.6(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(vite@6.4.0(@types/node@25.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.1)): + fumadocs-mdx@14.2.6(@types/react@19.2.8)(fumadocs-core@16.5.0(@types/react@19.2.8)(lucide-react@0.562.0(react@19.2.3))(next@16.1.6(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(zod@4.3.5))(next@16.1.6(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)(vite@6.4.0(@types/node@25.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1)): dependencies: '@mdx-js/mdx': 3.1.1 '@standard-schema/spec': 1.1.0 @@ -25111,7 +25121,7 @@ snapshots: '@types/react': 19.2.8 next: 16.1.6(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) react: 19.2.3 - vite: 6.4.0(@types/node@25.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 6.4.0(@types/node@25.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -25926,7 +25936,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 25.3.3 + '@types/node': 25.5.0 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -26837,9 +26847,9 @@ snapshots: ms@2.1.3: {} - msw-snapshot@5.3.0(msw@2.11.5(@types/node@25.3.3)(typescript@5.9.3)): + msw-snapshot@5.3.0(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3)): dependencies: - msw: 2.11.5(@types/node@25.3.3)(typescript@5.9.3) + msw: 2.11.5(@types/node@25.5.0)(typescript@5.9.3) msw@2.11.5(@types/node@20.19.22)(typescript@5.9.3): dependencies: @@ -26893,9 +26903,9 @@ snapshots: - '@types/node' optional: true - msw@2.11.5(@types/node@25.3.3)(typescript@5.9.3): + msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3): dependencies: - '@inquirer/confirm': 5.1.19(@types/node@25.3.3) + '@inquirer/confirm': 5.1.19(@types/node@25.5.0) '@mswjs/interceptors': 0.39.8 '@open-draft/deferred-promise': 2.2.0 '@types/statuses': 2.0.6 @@ -27515,7 +27525,7 @@ snapshots: prosemirror-changeset@2.3.1: dependencies: - prosemirror-transform: 1.10.5 + prosemirror-transform: 1.11.0 prosemirror-collab@1.3.1: dependencies: @@ -27525,12 +27535,12 @@ snapshots: dependencies: prosemirror-model: 1.25.4 prosemirror-state: 1.4.4 - prosemirror-transform: 1.10.5 + prosemirror-transform: 1.11.0 prosemirror-dropcursor@1.8.2: dependencies: prosemirror-state: 1.4.4 - prosemirror-transform: 1.10.5 + prosemirror-transform: 1.11.0 prosemirror-view: 1.41.4 prosemirror-gapcursor@1.4.0: @@ -27540,26 +27550,26 @@ snapshots: prosemirror-state: 1.4.4 prosemirror-view: 1.41.4 - prosemirror-highlight@0.13.0(@shikijs/types@3.19.0)(@types/hast@3.0.4)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-transform@1.10.5)(prosemirror-view@1.41.4): + prosemirror-highlight@0.13.0(@shikijs/types@3.19.0)(@types/hast@3.0.4)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-transform@1.11.0)(prosemirror-view@1.41.4): optionalDependencies: '@shikijs/types': 3.19.0 '@types/hast': 3.0.4 prosemirror-model: 1.25.4 prosemirror-state: 1.4.4 - prosemirror-transform: 1.10.5 + prosemirror-transform: 1.11.0 prosemirror-view: 1.41.4 prosemirror-history@1.5.0: dependencies: prosemirror-state: 1.4.4 - prosemirror-transform: 1.10.5 + prosemirror-transform: 1.11.0 prosemirror-view: 1.41.4 rope-sequence: 1.3.4 prosemirror-inputrules@1.5.1: dependencies: prosemirror-state: 1.4.4 - prosemirror-transform: 1.10.5 + prosemirror-transform: 1.11.0 prosemirror-keymap@1.2.3: dependencies: @@ -27591,12 +27601,12 @@ snapshots: dependencies: prosemirror-model: 1.25.4 prosemirror-state: 1.4.4 - prosemirror-transform: 1.10.5 + prosemirror-transform: 1.11.0 prosemirror-state@1.4.4: dependencies: prosemirror-model: 1.25.4 - prosemirror-transform: 1.10.5 + prosemirror-transform: 1.11.0 prosemirror-view: 1.41.4 prosemirror-tables@1.8.5: @@ -27604,7 +27614,7 @@ snapshots: prosemirror-keymap: 1.2.3 prosemirror-model: 1.25.4 prosemirror-state: 1.4.4 - prosemirror-transform: 1.10.5 + prosemirror-transform: 1.11.0 prosemirror-view: 1.41.4 prosemirror-trailing-node@3.0.0(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.4): @@ -27615,7 +27625,7 @@ snapshots: prosemirror-state: 1.4.4 prosemirror-view: 1.41.4 - prosemirror-transform@1.10.5: + prosemirror-transform@1.11.0: dependencies: prosemirror-model: 1.25.4 @@ -27623,7 +27633,7 @@ snapshots: dependencies: prosemirror-model: 1.25.4 prosemirror-state: 1.4.4 - prosemirror-transform: 1.10.5 + prosemirror-transform: 1.11.0 proxy-from-env@1.1.0: {} @@ -28697,6 +28707,8 @@ snapshots: tapable@2.3.0: {} + tapable@2.3.2: {} + tar-fs@2.1.4: dependencies: chownr: 1.1.4 @@ -28730,15 +28742,15 @@ snapshots: minizlib: 3.1.0 yallist: 5.0.0 - terser-webpack-plugin@5.3.17(webpack@5.98.0): + terser-webpack-plugin@5.4.0(webpack@5.98.0): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 - terser: 5.46.0 + terser: 5.46.1 webpack: 5.98.0 - terser@5.46.0: + terser@5.46.1: dependencies: '@jridgewell/source-map': 0.3.11 acorn: 8.16.0 @@ -29189,23 +29201,23 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 - vite-dev-rpc@1.1.0(vite@6.4.0(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.1)): + vite-dev-rpc@1.1.0(vite@6.4.0(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1)): dependencies: birpc: 2.6.1 - vite: 6.4.0(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.1) - vite-hot-client: 2.1.0(vite@6.4.0(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.1)) + vite: 6.4.0(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1) + vite-hot-client: 2.1.0(vite@6.4.0(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1)) - vite-hot-client@2.1.0(vite@6.4.0(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.1)): + vite-hot-client@2.1.0(vite@6.4.0(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1)): dependencies: - vite: 6.4.0(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 6.4.0(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1) - vite-node@2.1.9(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.0): + vite-node@2.1.9(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.1): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 1.1.2 - vite: 5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.0) + vite: 5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.1) transitivePeerDependencies: - '@types/node' - less @@ -29217,13 +29229,13 @@ snapshots: - supports-color - terser - vite-node@2.1.9(@types/node@25.0.7)(lightningcss@1.30.2)(terser@5.46.0): + vite-node@2.1.9(@types/node@25.0.7)(lightningcss@1.30.2)(terser@5.46.1): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 1.1.2 - vite: 5.4.20(@types/node@25.0.7)(lightningcss@1.30.2)(terser@5.46.0) + vite: 5.4.20(@types/node@25.0.7)(lightningcss@1.30.2)(terser@5.46.1) transitivePeerDependencies: - '@types/node' - less @@ -29236,13 +29248,13 @@ snapshots: - terser optional: true - vite-node@2.1.9(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0): + vite-node@2.1.9(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 1.1.2 - vite: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + vite: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) transitivePeerDependencies: - '@types/node' - less @@ -29254,39 +29266,39 @@ snapshots: - supports-color - terser - vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.0)): + vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.1)): dependencies: '@rollup/pluginutils': 4.2.1 '@types/eslint': 8.56.12 eslint: 8.57.1 rollup: 2.79.2 - vite: 5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.0) + vite: 5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.1) - vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)): + vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)): dependencies: '@rollup/pluginutils': 4.2.1 '@types/eslint': 8.56.12 eslint: 8.57.1 rollup: 2.79.2 - vite: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + vite: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) - vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@6.4.0(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.1)): + vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@6.4.0(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1)): dependencies: '@rollup/pluginutils': 4.2.1 '@types/eslint': 8.56.12 eslint: 8.57.1 rollup: 2.79.2 - vite: 6.4.0(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.1) + vite: 6.4.0(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1) - vite-plugin-externalize-deps@0.8.0(vite@5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.0)): + vite-plugin-externalize-deps@0.8.0(vite@5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.1)): dependencies: - vite: 5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.0) + vite: 5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.1) - vite-plugin-externalize-deps@0.8.0(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)): + vite-plugin-externalize-deps@0.8.0(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)): dependencies: - vite: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + vite: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) - vite-plugin-inspect@11.1.0(vite@6.4.0(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.1)): + vite-plugin-inspect@11.1.0(vite@6.4.0(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1)): dependencies: ansis: 3.17.0 debug: 4.4.3 @@ -29296,12 +29308,12 @@ snapshots: perfect-debounce: 1.0.0 sirv: 3.0.2 unplugin-utils: 0.2.5 - vite: 6.4.0(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.1) - vite-dev-rpc: 1.1.0(vite@6.4.0(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.1)) + vite: 6.4.0(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1) + vite-dev-rpc: 1.1.0(vite@6.4.0(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1)) transitivePeerDependencies: - supports-color - vite@5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.0): + vite@5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.1): dependencies: esbuild: 0.21.5 postcss: 8.5.6 @@ -29310,9 +29322,9 @@ snapshots: '@types/node': 20.19.22 fsevents: 2.3.3 lightningcss: 1.30.2 - terser: 5.46.0 + terser: 5.46.1 - vite@5.4.20(@types/node@25.0.7)(lightningcss@1.30.2)(terser@5.46.0): + vite@5.4.20(@types/node@25.0.7)(lightningcss@1.30.2)(terser@5.46.1): dependencies: esbuild: 0.21.5 postcss: 8.5.6 @@ -29321,21 +29333,21 @@ snapshots: '@types/node': 25.0.7 fsevents: 2.3.3 lightningcss: 1.30.2 - terser: 5.46.0 + terser: 5.46.1 optional: true - vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0): + vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1): dependencies: esbuild: 0.21.5 postcss: 8.5.6 rollup: 4.52.4 optionalDependencies: - '@types/node': 25.3.3 + '@types/node': 25.5.0 fsevents: 2.3.3 lightningcss: 1.30.2 - terser: 5.46.0 + terser: 5.46.1 - vite@6.4.0(@types/node@20.19.22)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.1): + vite@6.4.0(@types/node@20.19.22)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.11 fdir: 6.5.0(picomatch@4.0.3) @@ -29348,11 +29360,11 @@ snapshots: fsevents: 2.3.3 jiti: 2.6.1 lightningcss: 1.30.2 - terser: 5.46.0 + terser: 5.46.1 tsx: 4.20.6 yaml: 2.8.1 - vite@6.4.0(@types/node@25.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.1): + vite@6.4.0(@types/node@25.0.7)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.11 fdir: 6.5.0(picomatch@4.0.3) @@ -29365,12 +29377,12 @@ snapshots: fsevents: 2.3.3 jiti: 2.6.1 lightningcss: 1.30.2 - terser: 5.46.0 + terser: 5.46.1 tsx: 4.20.6 yaml: 2.8.1 optional: true - vite@6.4.0(@types/node@25.3.3)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.0)(tsx@4.20.6)(yaml@2.8.1): + vite@6.4.0(@types/node@25.5.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.46.1)(tsx@4.20.6)(yaml@2.8.1): dependencies: esbuild: 0.25.11 fdir: 6.5.0(picomatch@4.0.3) @@ -29379,11 +29391,11 @@ snapshots: rollup: 4.52.4 tinyglobby: 0.2.15 optionalDependencies: - '@types/node': 25.3.3 + '@types/node': 25.5.0 fsevents: 2.3.3 jiti: 2.6.1 lightningcss: 1.30.2 - terser: 5.46.0 + terser: 5.46.1 tsx: 4.20.6 yaml: 2.8.1 @@ -29396,10 +29408,10 @@ snapshots: transitivePeerDependencies: - supports-color - vitest@2.1.9(@types/node@20.19.22)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@20.19.22)(typescript@5.9.3))(terser@5.46.0): + vitest@2.1.9(@types/node@20.19.22)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@20.19.22)(typescript@5.9.3))(terser@5.46.1): dependencies: '@vitest/expect': 2.1.9 - '@vitest/mocker': 2.1.9(msw@2.11.5(@types/node@20.19.22)(typescript@5.9.3))(vite@5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.0)) + '@vitest/mocker': 2.1.9(msw@2.11.5(@types/node@20.19.22)(typescript@5.9.3))(vite@5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.1)) '@vitest/pretty-format': 2.1.9 '@vitest/runner': 2.1.9 '@vitest/snapshot': 2.1.9 @@ -29415,8 +29427,8 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.1.1 tinyrainbow: 1.2.0 - vite: 5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.0) - vite-node: 2.1.9(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.0) + vite: 5.4.20(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.1) + vite-node: 2.1.9(@types/node@20.19.22)(lightningcss@1.30.2)(terser@5.46.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 20.19.22 @@ -29433,10 +29445,10 @@ snapshots: - supports-color - terser - vitest@2.1.9(@types/node@25.0.7)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.0.7)(typescript@5.9.3))(terser@5.46.0): + vitest@2.1.9(@types/node@25.0.7)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.0.7)(typescript@5.9.3))(terser@5.46.1): dependencies: '@vitest/expect': 2.1.9 - '@vitest/mocker': 2.1.9(msw@2.11.5(@types/node@25.0.7)(typescript@5.9.3))(vite@5.4.20(@types/node@25.0.7)(lightningcss@1.30.2)(terser@5.46.0)) + '@vitest/mocker': 2.1.9(msw@2.11.5(@types/node@25.0.7)(typescript@5.9.3))(vite@5.4.20(@types/node@25.0.7)(lightningcss@1.30.2)(terser@5.46.1)) '@vitest/pretty-format': 2.1.9 '@vitest/runner': 2.1.9 '@vitest/snapshot': 2.1.9 @@ -29452,8 +29464,8 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.1.1 tinyrainbow: 1.2.0 - vite: 5.4.20(@types/node@25.0.7)(lightningcss@1.30.2)(terser@5.46.0) - vite-node: 2.1.9(@types/node@25.0.7)(lightningcss@1.30.2)(terser@5.46.0) + vite: 5.4.20(@types/node@25.0.7)(lightningcss@1.30.2)(terser@5.46.1) + vite-node: 2.1.9(@types/node@25.0.7)(lightningcss@1.30.2)(terser@5.46.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 25.0.7 @@ -29471,10 +29483,10 @@ snapshots: - terser optional: true - vitest@2.1.9(@types/node@25.3.3)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.3.3)(typescript@5.9.3))(terser@5.46.0): + vitest@2.1.9(@types/node@25.5.0)(@vitest/ui@2.1.9)(jsdom@25.0.1(canvas@2.11.2(encoding@0.1.13)))(lightningcss@1.30.2)(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(terser@5.46.1): dependencies: '@vitest/expect': 2.1.9 - '@vitest/mocker': 2.1.9(msw@2.11.5(@types/node@25.3.3)(typescript@5.9.3))(vite@5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0)) + '@vitest/mocker': 2.1.9(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1)) '@vitest/pretty-format': 2.1.9 '@vitest/runner': 2.1.9 '@vitest/snapshot': 2.1.9 @@ -29490,11 +29502,11 @@ snapshots: tinyexec: 0.3.2 tinypool: 1.1.1 tinyrainbow: 1.2.0 - vite: 5.4.20(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) - vite-node: 2.1.9(@types/node@25.3.3)(lightningcss@1.30.2)(terser@5.46.0) + vite: 5.4.20(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) + vite-node: 2.1.9(@types/node@25.5.0)(lightningcss@1.30.2)(terser@5.46.1) why-is-node-running: 2.3.0 optionalDependencies: - '@types/node': 25.3.3 + '@types/node': 25.5.0 '@vitest/ui': 2.1.9(vitest@2.1.9) jsdom: 25.0.1(canvas@2.11.2(encoding@0.1.13)) transitivePeerDependencies: @@ -29557,7 +29569,7 @@ snapshots: acorn: 8.16.0 browserslist: 4.28.1 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.20.0 + enhanced-resolve: 5.20.1 es-module-lexer: 1.7.0 eslint-scope: 5.1.1 events: 3.3.0 @@ -29568,8 +29580,8 @@ snapshots: mime-types: 2.1.35 neo-async: 2.6.2 schema-utils: 4.3.3 - tapable: 2.3.0 - terser-webpack-plugin: 5.3.17(webpack@5.98.0) + tapable: 2.3.2 + terser-webpack-plugin: 5.4.0(webpack@5.98.0) watchpack: 2.5.1 webpack-sources: 3.3.4 transitivePeerDependencies: