diff --git a/patches/@blocknote__core@0.46.2.patch b/patches/@blocknote__core@0.46.2.patch index 17255d36..69581443 100644 --- a/patches/@blocknote__core@0.46.2.patch +++ b/patches/@blocknote__core@0.46.2.patch @@ -241,7 +241,7 @@ index 3ac6fe16aa9ae605a59916f8343b8440befda89e..ee009c533fa3826819df0b83a12755b6 e.state.draggingState = void 0, e.emitUpdate(), n.transact((o) => o.setMeta(D, null)), !n.headless && Ut(n.prosemirrorView.root); }, /** -@@ -1918,30 +1961,37 @@ const D = new P("TableHandlesPlugin"), Po = k(({ editor: n }) => { +@@ -1918,30 +1961,38 @@ const D = new P("TableHandlesPlugin"), Po = k(({ editor: n }) => { setCellSelection(o, r, s = r) { if (!e) throw new Error("Table handles view not initialized"); @@ -292,8 +292,9 @@ index 3ac6fe16aa9ae605a59916f8343b8440befda89e..ee009c533fa3826819df0b83a12755b6 + return e == null || e.hideHandles({ resetCell: !0 }), !1; return r.orientation === "row" ? r.side === "above" ? pt(a, i) : ft(a, i) : r.side === "left" ? gt(a, i) : wt(a, i); }); ++ e == null || e.hideHandles({ resetCell: !0, resetDragging: !0 }); }, -@@ -1949,17 +1999,23 @@ const D = new P("TableHandlesPlugin"), Po = k(({ editor: n }) => { +@@ -1949,17 +2000,23 @@ const D = new P("TableHandlesPlugin"), Po = k(({ editor: n }) => { * Removes a row or column from the table using prosemirror-table commands */ removeRowOrColumn(o, r) { @@ -722,7 +723,7 @@ index 029103600a98bf8ccd3054a5c43ffa2fd9115c06..d1678ed4761baca0b3495dafc8d75152 destroy() { diff --git a/src/extensions/TableHandles/TableHandles.ts b/src/extensions/TableHandles/TableHandles.ts -index 30637742d517bcf136ca562a09a1544d7b03a20d..25b298e6a2685f3667ee53b95175912a4c805e27 100644 +index 3063774..9813bed 100644 --- a/src/extensions/TableHandles/TableHandles.ts +++ b/src/extensions/TableHandles/TableHandles.ts @@ -99,6 +99,46 @@ function getChildIndex(node: Element) { @@ -1035,7 +1036,15 @@ index 30637742d517bcf136ca562a09a1544d7b03a20d..25b298e6a2685f3667ee53b95175912a if (direction.orientation === "row") { if (direction.side === "above") { return addRowBefore(state, dispatch); -@@ -1006,12 +1081,19 @@ export const TableHandlesExtension = createExtension(({ editor }) => { +@@ -997,6 +1072,7 @@ export const TableHandlesExtension = createExtension(({ editor }) => { + } + } + }); ++ view?.hideHandles({ resetCell: true, resetDragging: true }); + }, + + /** +@@ -1006,12 +1082,19 @@ export const TableHandlesExtension = createExtension(({ editor }) => { index: RelativeCellIndices["row"] | RelativeCellIndices["col"], direction: "row" | "column", ) { @@ -1055,7 +1064,7 @@ index 30637742d517bcf136ca562a09a1544d7b03a20d..25b298e6a2685f3667ee53b95175912a return deleteRow(state, dispatch); }); } else { -@@ -1020,6 +1102,9 @@ export const TableHandlesExtension = createExtension(({ editor }) => { +@@ -1020,6 +1103,9 @@ export const TableHandlesExtension = createExtension(({ editor }) => { row: 0, col: index, }); @@ -1065,7 +1074,7 @@ index 30637742d517bcf136ca562a09a1544d7b03a20d..25b298e6a2685f3667ee53b95175912a return deleteColumn(state, dispatch); }); } -@@ -1041,6 +1126,10 @@ export const TableHandlesExtension = createExtension(({ editor }) => { +@@ -1041,6 +1127,10 @@ export const TableHandlesExtension = createExtension(({ editor }) => { ) : beforeState; @@ -1076,7 +1085,7 @@ index 30637742d517bcf136ca562a09a1544d7b03a20d..25b298e6a2685f3667ee53b95175912a return mergeCells(state, dispatch); }); }, -@@ -1055,6 +1144,10 @@ export const TableHandlesExtension = createExtension(({ editor }) => { +@@ -1055,6 +1145,10 @@ export const TableHandlesExtension = createExtension(({ editor }) => { ? this.setCellSelection(beforeState, relativeCellToSplit) : beforeState; diff --git a/patches/@blocknote__react@0.46.2.patch b/patches/@blocknote__react@0.46.2.patch index 10c3f4dd..4164a39e 100644 --- a/patches/@blocknote__react@0.46.2.patch +++ b/patches/@blocknote__react@0.46.2.patch @@ -1,5 +1,5 @@ diff --git a/dist/blocknote-react.js b/dist/blocknote-react.js -index d4d36cd4dbb5370c3b7431ffeb577e4870b39825..5a6c325bf0ff9a23f2023169d7fcf6319df91544 100644 +index d4d36cd..79dd4f0 100644 --- a/dist/blocknote-react.js +++ b/dist/blocknote-react.js @@ -154,8 +154,26 @@ const co = (e) => { @@ -31,7 +31,15 @@ index d4d36cd4dbb5370c3b7431ffeb577e4870b39825..5a6c325bf0ff9a23f2023169d7fcf631 } const z = (e) => { var h, b, p; -@@ -216,9 +234,7 @@ const z = (e) => { +@@ -193,6 +211,7 @@ const z = (e) => { + ...e.elementProps, + style: { + display: "flex", ++ pointerEvents: c === "close" ? "none" : void 0, + ...(h = e.elementProps) == null ? void 0 : h.style, + zIndex: `calc(var(--bn-ui-base-z-index) + ${((p = (b = e.elementProps) == null ? void 0 : b.style) == null ? void 0 : p.zIndex) || 0})`, + ...n, +@@ -216,9 +235,7 @@ const z = (e) => { const s = Ue(t, c.doc); if (!s) return; @@ -42,7 +50,7 @@ index d4d36cd4dbb5370c3b7431ffeb577e4870b39825..5a6c325bf0ff9a23f2023169d7fcf631 if (a instanceof Element) return { element: a -@@ -2499,7 +2515,14 @@ function Kr(e) { +@@ -2499,7 +2516,14 @@ function Kr(e) { columns: d } = e, m = H( (C) => { @@ -58,7 +66,7 @@ index d4d36cd4dbb5370c3b7431ffeb577e4870b39825..5a6c325bf0ff9a23f2023169d7fcf631 }, [u, a, s] ), { items: g, usedQuery: f, loadingState: h } = Yt( -@@ -2734,7 +2757,14 @@ function ti(e) { +@@ -2734,7 +2758,14 @@ function ti(e) { onItemClick: u } = e, d = H( (p) => { @@ -74,7 +82,7 @@ index d4d36cd4dbb5370c3b7431ffeb577e4870b39825..5a6c325bf0ff9a23f2023169d7fcf631 }, [u, a, s] ), { items: m, usedQuery: g, loadingState: f } = Yt( -@@ -3306,14 +3336,15 @@ const ii = (e, t = 0.3) => { +@@ -3306,14 +3337,15 @@ const ii = (e, t = 0.3) => { ); if (!m) return {}; @@ -93,7 +101,7 @@ index d4d36cd4dbb5370c3b7431ffeb577e4870b39825..5a6c325bf0ff9a23f2023169d7fcf631 return p instanceof Element ? (d.cellReference = { element: p }, d.rowReference = { element: f, getBoundingClientRect: () => { -@@ -4371,7 +4402,7 @@ const zi = (e) => { +@@ -4371,7 +4403,7 @@ const zi = (e) => { const a = Ue(t, c.prosemirrorState.doc); if (!a) return; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a5220c0d..2d7b46a9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -19,10 +19,10 @@ overrides: patchedDependencies: '@blocknote/core@0.46.2': - hash: e617eb2c92c28d2eefc0b4900540238646e5c32c6e22ff09657b1d306e8b70e0 + hash: 9a05ab63f78eff8887ea009f15116e0e7e70de00eaba31093f3f9584da364df2 path: patches/@blocknote__core@0.46.2.patch '@blocknote/react@0.46.2': - hash: 9721936e806f31cf440cc94ead3ec03764ae968870c167d086a8e60d8f6d4a08 + hash: 67ee7211dff79c50d821c3145b0c96b42bb9a614d508edafd65492b6b5ccb41e path: patches/@blocknote__react@0.46.2.patch '@tiptap/extension-link@3.19.0': hash: fbe59b1b8b798ba3fefa371c0729b5aa3458e1ea70a4b86cd5267f9f62529284 @@ -40,16 +40,16 @@ importers: version: 0.78.0(zod@4.3.6) '@blocknote/code-block': specifier: ^0.46.2 - version: 0.46.2(@blocknote/core@0.46.2(patch_hash=e617eb2c92c28d2eefc0b4900540238646e5c32c6e22ff09657b1d306e8b70e0)(@types/hast@3.0.4)(highlight.js@11.11.1)(lowlight@3.3.0)) + version: 0.46.2(@blocknote/core@0.46.2(patch_hash=9a05ab63f78eff8887ea009f15116e0e7e70de00eaba31093f3f9584da364df2)(@types/hast@3.0.4)(highlight.js@11.11.1)(lowlight@3.3.0)) '@blocknote/core': specifier: ^0.46.2 - version: 0.46.2(patch_hash=e617eb2c92c28d2eefc0b4900540238646e5c32c6e22ff09657b1d306e8b70e0)(@types/hast@3.0.4)(highlight.js@11.11.1)(lowlight@3.3.0) + version: 0.46.2(patch_hash=9a05ab63f78eff8887ea009f15116e0e7e70de00eaba31093f3f9584da364df2)(@types/hast@3.0.4)(highlight.js@11.11.1)(lowlight@3.3.0) '@blocknote/mantine': specifier: ^0.46.2 version: 0.46.2(@floating-ui/dom@1.7.5)(@mantine/core@8.3.14(@mantine/hooks@8.3.14(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.14(react@19.2.4))(@mantine/utils@6.0.22(react@19.2.4))(@types/hast@3.0.4)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(highlight.js@11.11.1)(lowlight@3.3.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@blocknote/react': specifier: ^0.46.2 - version: 0.46.2(patch_hash=9721936e806f31cf440cc94ead3ec03764ae968870c167d086a8e60d8f6d4a08)(@floating-ui/dom@1.7.5)(@types/hast@3.0.4)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(highlight.js@11.11.1)(lowlight@3.3.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 0.46.2(patch_hash=67ee7211dff79c50d821c3145b0c96b42bb9a614d508edafd65492b6b5ccb41e)(@floating-ui/dom@1.7.5)(@types/hast@3.0.4)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(highlight.js@11.11.1)(lowlight@3.3.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@codemirror/commands': specifier: ^6.10.2 version: 6.10.2 @@ -6219,9 +6219,9 @@ snapshots: '@bcoe/v8-coverage@1.0.2': {} - '@blocknote/code-block@0.46.2(@blocknote/core@0.46.2(patch_hash=e617eb2c92c28d2eefc0b4900540238646e5c32c6e22ff09657b1d306e8b70e0)(@types/hast@3.0.4)(highlight.js@11.11.1)(lowlight@3.3.0))': + '@blocknote/code-block@0.46.2(@blocknote/core@0.46.2(patch_hash=9a05ab63f78eff8887ea009f15116e0e7e70de00eaba31093f3f9584da364df2)(@types/hast@3.0.4)(highlight.js@11.11.1)(lowlight@3.3.0))': dependencies: - '@blocknote/core': 0.46.2(patch_hash=e617eb2c92c28d2eefc0b4900540238646e5c32c6e22ff09657b1d306e8b70e0)(@types/hast@3.0.4)(highlight.js@11.11.1)(lowlight@3.3.0) + '@blocknote/core': 0.46.2(patch_hash=9a05ab63f78eff8887ea009f15116e0e7e70de00eaba31093f3f9584da364df2)(@types/hast@3.0.4)(highlight.js@11.11.1)(lowlight@3.3.0) '@shikijs/core': 3.23.0 '@shikijs/engine-javascript': 3.23.0 '@shikijs/langs': 3.23.0 @@ -6229,7 +6229,7 @@ snapshots: '@shikijs/themes': 3.23.0 '@shikijs/types': 3.22.0 - '@blocknote/core@0.46.2(patch_hash=e617eb2c92c28d2eefc0b4900540238646e5c32c6e22ff09657b1d306e8b70e0)(@types/hast@3.0.4)(highlight.js@11.11.1)(lowlight@3.3.0)': + '@blocknote/core@0.46.2(patch_hash=9a05ab63f78eff8887ea009f15116e0e7e70de00eaba31093f3f9584da364df2)(@types/hast@3.0.4)(highlight.js@11.11.1)(lowlight@3.3.0)': dependencies: '@emoji-mart/data': 1.2.1 '@handlewithcare/prosemirror-inputrules': 0.1.4(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.6) @@ -6281,8 +6281,8 @@ snapshots: '@blocknote/mantine@0.46.2(@floating-ui/dom@1.7.5)(@mantine/core@8.3.14(@mantine/hooks@8.3.14(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@mantine/hooks@8.3.14(react@19.2.4))(@mantine/utils@6.0.22(react@19.2.4))(@types/hast@3.0.4)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(highlight.js@11.11.1)(lowlight@3.3.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@blocknote/core': 0.46.2(patch_hash=e617eb2c92c28d2eefc0b4900540238646e5c32c6e22ff09657b1d306e8b70e0)(@types/hast@3.0.4)(highlight.js@11.11.1)(lowlight@3.3.0) - '@blocknote/react': 0.46.2(patch_hash=9721936e806f31cf440cc94ead3ec03764ae968870c167d086a8e60d8f6d4a08)(@floating-ui/dom@1.7.5)(@types/hast@3.0.4)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(highlight.js@11.11.1)(lowlight@3.3.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@blocknote/core': 0.46.2(patch_hash=9a05ab63f78eff8887ea009f15116e0e7e70de00eaba31093f3f9584da364df2)(@types/hast@3.0.4)(highlight.js@11.11.1)(lowlight@3.3.0) + '@blocknote/react': 0.46.2(patch_hash=67ee7211dff79c50d821c3145b0c96b42bb9a614d508edafd65492b6b5ccb41e)(@floating-ui/dom@1.7.5)(@types/hast@3.0.4)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(highlight.js@11.11.1)(lowlight@3.3.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@mantine/core': 8.3.14(@mantine/hooks@8.3.14(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@mantine/hooks': 8.3.14(react@19.2.4) '@mantine/utils': 6.0.22(react@19.2.4) @@ -6301,9 +6301,9 @@ snapshots: - sugar-high - supports-color - '@blocknote/react@0.46.2(patch_hash=9721936e806f31cf440cc94ead3ec03764ae968870c167d086a8e60d8f6d4a08)(@floating-ui/dom@1.7.5)(@types/hast@3.0.4)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(highlight.js@11.11.1)(lowlight@3.3.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@blocknote/react@0.46.2(patch_hash=67ee7211dff79c50d821c3145b0c96b42bb9a614d508edafd65492b6b5ccb41e)(@floating-ui/dom@1.7.5)(@types/hast@3.0.4)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(highlight.js@11.11.1)(lowlight@3.3.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@blocknote/core': 0.46.2(patch_hash=e617eb2c92c28d2eefc0b4900540238646e5c32c6e22ff09657b1d306e8b70e0)(@types/hast@3.0.4)(highlight.js@11.11.1)(lowlight@3.3.0) + '@blocknote/core': 0.46.2(patch_hash=9a05ab63f78eff8887ea009f15116e0e7e70de00eaba31093f3f9584da364df2)(@types/hast@3.0.4)(highlight.js@11.11.1)(lowlight@3.3.0) '@emoji-mart/data': 1.2.1 '@floating-ui/react': 0.27.17(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@floating-ui/utils': 0.2.10 diff --git a/tests/smoke/table-hover-crash.spec.ts b/tests/smoke/table-hover-crash.spec.ts index e01f2383..68f1291d 100644 --- a/tests/smoke/table-hover-crash.spec.ts +++ b/tests/smoke/table-hover-crash.spec.ts @@ -164,7 +164,9 @@ async function openTableHandleMenu( orientation: 'row' | 'column', source: { rowIndex: number; cellIndex: number }, ): Promise { - await tableCell(page, source.rowIndex, source.cellIndex).hover() + await tableCell(page, source.rowIndex, source.cellIndex).hover({ + position: { x: 6, y: 6 }, + }) const handle = await visibleTableHandle(page, orientation) await handle.click({ force: true }) } @@ -217,7 +219,7 @@ test.describe('table hover crash regression', () => { expect(errors).toEqual([]) }) - test('hovered table handles survive a frontmatter reload before later table interaction', async ({ page }) => { + test('table handle menus survive a frontmatter reload before later editing', async ({ page }) => { const errors = trackUnexpectedErrors(page) writeTableReloadNote(tempVaultDir) @@ -252,6 +254,12 @@ test.describe('table hover crash regression', () => { await page.locator('table th').first().hover() await page.locator('table td').last().hover() + await addTableRowBelow(page) + await expect(page.locator('table tr')).toHaveCount(4) + + await addTableColumnRight(page) + await expect(page.locator('table tr').first().locator('th,td')).toHaveCount(4) + const trailingParagraph = page.locator('.bn-editor [data-content-type="paragraph"]').last() await trailingParagraph.click() await page.keyboard.type('stable after table reload')