From 3537daa3da212773ac446511d108ef04f349b45d Mon Sep 17 00:00:00 2001 From: Nick the Sick Date: Wed, 28 Oct 2026 15:08:58 +0100 Subject: [PATCH] feat(core): add built-in table drag visualization --- .../react/styling-theming/overriding-css.mdx | 9 + .../.bnexample.json | 12 + .../README.md | 53 +++ .../index.html | 15 + .../main.tsx | 11 + .../package.json | 31 ++ .../src/App.tsx | 40 ++ .../src/tableStyles.css | 116 ++++++ .../tsconfig.json | 29 ++ .../vite-env.d.ts | 1 + .../vite.config.ts | 34 ++ packages/core/src/editor/editor.css | 16 + .../extensions/TableHandles/TableHandles.ts | 281 +++++--------- ...ol-preview-wrapped-text-chromium-linux.png | Bin 0 -> 5055 bytes ...col-preview-wrapped-text-firefox-linux.png | Bin 0 -> 9237 bytes ...-col-preview-wrapped-text-webkit-linux.png | Bin 0 -> 7017 bytes ...w-drag-in-progress-dark-chromium-linux.png | Bin 0 -> 26736 bytes ...ow-drag-in-progress-dark-firefox-linux.png | Bin 0 -> 49557 bytes ...row-drag-in-progress-dark-webkit-linux.png | Bin 0 -> 33817 bytes ...-drag-in-progress-light-chromium-linux.png | Bin 0 -> 25552 bytes ...w-drag-in-progress-light-firefox-linux.png | Bin 0 -> 49877 bytes ...ow-drag-in-progress-light-webkit-linux.png | Bin 0 -> 36164 bytes ...ow-preview-wrapped-text-chromium-linux.png | Bin 0 -> 22624 bytes ...row-preview-wrapped-text-firefox-linux.png | Bin 0 -> 37932 bytes ...-row-preview-wrapped-text-webkit-linux.png | Bin 0 -> 28615 bytes .../TableHandles/dragDecorations.test.ts | 352 ++++++++++++++++++ .../TableHandles/dragDecorations.ts | 167 +++++++++ .../TableHandles/dragPreview.browser.test.ts | 249 +++++++++++++ .../extensions/TableHandles/dragPreview.ts | 199 ++++++++++ playground/src/examples.gen.tsx | 25 ++ pnpm-lock.yaml | 43 +++ tests/src/end-to-end/tables/tables.test.tsx | 42 +++ 32 files changed, 1537 insertions(+), 188 deletions(-) create mode 100644 examples/03-ui-components/21-table-reordering-visualization/.bnexample.json create mode 100644 examples/03-ui-components/21-table-reordering-visualization/README.md create mode 100644 examples/03-ui-components/21-table-reordering-visualization/index.html create mode 100644 examples/03-ui-components/21-table-reordering-visualization/main.tsx create mode 100644 examples/03-ui-components/21-table-reordering-visualization/package.json create mode 100644 examples/03-ui-components/21-table-reordering-visualization/src/App.tsx create mode 100644 examples/03-ui-components/21-table-reordering-visualization/src/tableStyles.css create mode 100644 examples/03-ui-components/21-table-reordering-visualization/tsconfig.json create mode 100644 examples/03-ui-components/21-table-reordering-visualization/vite-env.d.ts create mode 100644 examples/03-ui-components/21-table-reordering-visualization/vite.config.ts create mode 100644 packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-col-preview-wrapped-text-chromium-linux.png create mode 100644 packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-col-preview-wrapped-text-firefox-linux.png create mode 100644 packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-col-preview-wrapped-text-webkit-linux.png create mode 100644 packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-row-drag-in-progress-dark-chromium-linux.png create mode 100644 packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-row-drag-in-progress-dark-firefox-linux.png create mode 100644 packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-row-drag-in-progress-dark-webkit-linux.png create mode 100644 packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-row-drag-in-progress-light-chromium-linux.png create mode 100644 packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-row-drag-in-progress-light-firefox-linux.png create mode 100644 packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-row-drag-in-progress-light-webkit-linux.png create mode 100644 packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-row-preview-wrapped-text-chromium-linux.png create mode 100644 packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-row-preview-wrapped-text-firefox-linux.png create mode 100644 packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-row-preview-wrapped-text-webkit-linux.png create mode 100644 packages/core/src/extensions/TableHandles/dragDecorations.test.ts create mode 100644 packages/core/src/extensions/TableHandles/dragDecorations.ts create mode 100644 packages/core/src/extensions/TableHandles/dragPreview.browser.test.ts create mode 100644 packages/core/src/extensions/TableHandles/dragPreview.ts diff --git a/docs/content/docs/react/styling-theming/overriding-css.mdx b/docs/content/docs/react/styling-theming/overriding-css.mdx index cbc1f70935..7e37cfc6d4 100644 --- a/docs/content/docs/react/styling-theming/overriding-css.mdx +++ b/docs/content/docs/react/styling-theming/overriding-css.mdx @@ -38,6 +38,15 @@ BlockNote uses classes with the `bn-` prefix to style editor elements. Here are Menus and popovers may be portalled outside the toolbar or button that opened them. Target their own classes under `.bn-root` rather than relying on a toolbar or `.bn-container` ancestor. See [Configuring Portal Targets](/docs/react/components#configuring-portal-targets). +#### Table Row & Column Dragging + +- `.bn-table-handle`: Row & column drag handles. +- `.bn-table-drag-source-row` / `.bn-table-drag-source-col`: Every cell of the row/column being dragged. +- `.bn-table-drop-cursor`: Bar marking the edge the row/column would be dropped at. +- `.bn-table-drag-preview`: Snapshot of the row/column shown next to the cursor. It copies the editor's styling context, so normal table styles apply to it too. + +Set `--bn-table-drag-source-color` on the editor to customize the translucent source tint without replacing cell background colors. + ### BlockNote CSS Attributes BlockNote uses data attributes to target specific block types and properties: diff --git a/examples/03-ui-components/21-table-reordering-visualization/.bnexample.json b/examples/03-ui-components/21-table-reordering-visualization/.bnexample.json new file mode 100644 index 0000000000..4188fc0d80 --- /dev/null +++ b/examples/03-ui-components/21-table-reordering-visualization/.bnexample.json @@ -0,0 +1,12 @@ +{ + "playground": true, + "docs": false, + "author": "must", + "tags": [ + "Intermediate", + "UI Components", + "Tables", + "Drag & Drop", + "Appearance & Styling" + ] +} diff --git a/examples/03-ui-components/21-table-reordering-visualization/README.md b/examples/03-ui-components/21-table-reordering-visualization/README.md new file mode 100644 index 0000000000..c12323e388 --- /dev/null +++ b/examples/03-ui-components/21-table-reordering-visualization/README.md @@ -0,0 +1,53 @@ +# Table Reordering Visualization + +BlockNote gives table row/column dragging visual feedback out of the box: a +snapshot of the row/column follows the cursor, the row/column being dragged is +tinted and outlined, and a drop indicator marks where it would land. + +This example shows how to restyle a table - and those built-in drag +affordances - to match your own product, using a Microsoft Loop-inspired look: + +- **Restyled tables**: rounded card look, muted header row, hairline + borders, and a row-hover highlight instead of a harsh black grid. +- **Retuned drag affordances**: the built-in drag source highlight, drop + indicator and drag snapshot recolored to the same palette. + +## How It Works + +Everything here is CSS - no additional extensions or event handling. +BlockNote's `TableHandlesExtension` owns the whole drag lifecycle and +exposes it through classes you can target: + +| Class | What it's on | +| -------------------------- | ---------------------------------------------- | +| `bn-table-drag-source-row` | every cell of the row being dragged | +| `bn-table-drag-source-col` | every cell of the column being dragged | +| `bn-table-drop-cursor` | a bar on the edge the row/column would drop at | +| `bn-table-drag-preview` | the snapshot shown next to the cursor | + +The first three are ProseMirror decorations inside the editor, so they're +scoped under `.bn-editor [data-content-type="table"]` like any other table +style. The snapshot lives outside the live editor, but copies its DOM styling +context, so those same table styles apply to it. Its outer wrapper also carries +`bn-table-drag-preview` for preview-specific overrides. The source tint uses +`--bn-table-drag-source-color` so it layers over existing cell backgrounds. + +`tableStyles.css` does the restyling; `App.tsx` provides an initial table with +`headerRows: 1` so the header styling is visible right away. + +## Known Limitations + +- **Keyboard and touch**: BlockNote's table drag handles are `draggable` + + `onDragStart` only today (see `TableHandle.tsx`) - there's no + keyboard-operable reorder path, and native HTML5 drag-and-drop isn't + supported on touch browsers at all. Both are gaps in BlockNote's table-drag + feature as a whole, not something this example introduces or fixes. +- **Accessibility**: for the same reason, there's no keyboard focus + restoration to verify after a reorder - the interaction can't be reached by + keyboard in the first place yet. + +**Relevant Docs:** + +- [Tables](/docs/features/blocks/tables) +- [Overriding CSS](/docs/react/styling-theming/overriding-css) +- [Editor Setup](/docs/getting-started/editor-setup) diff --git a/examples/03-ui-components/21-table-reordering-visualization/index.html b/examples/03-ui-components/21-table-reordering-visualization/index.html new file mode 100644 index 0000000000..2f2746abde --- /dev/null +++ b/examples/03-ui-components/21-table-reordering-visualization/index.html @@ -0,0 +1,15 @@ + + + + + + Table Reordering Visualization + + + +
+ + + diff --git a/examples/03-ui-components/21-table-reordering-visualization/main.tsx b/examples/03-ui-components/21-table-reordering-visualization/main.tsx new file mode 100644 index 0000000000..1260513388 --- /dev/null +++ b/examples/03-ui-components/21-table-reordering-visualization/main.tsx @@ -0,0 +1,11 @@ +// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY +import React from "react"; +import { createRoot } from "react-dom/client"; +import App from "./src/App.jsx"; + +const root = createRoot(document.getElementById("root")!); +root.render( + + + , +); diff --git a/examples/03-ui-components/21-table-reordering-visualization/package.json b/examples/03-ui-components/21-table-reordering-visualization/package.json new file mode 100644 index 0000000000..97a0f90589 --- /dev/null +++ b/examples/03-ui-components/21-table-reordering-visualization/package.json @@ -0,0 +1,31 @@ +{ + "name": "@blocknote/example-ui-components-table-reordering-visualization", + "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY", + "type": "module", + "private": true, + "version": "0.12.4", + "scripts": { + "start": "vp dev", + "dev": "vp dev", + "lint": "vp lint --type-aware src main.tsx vite.config.ts", + "build:prod": "vp run lint && vp build", + "preview": "vp preview" + }, + "dependencies": { + "@blocknote/ariakit": "latest", + "@blocknote/core": "latest", + "@blocknote/mantine": "latest", + "@blocknote/react": "latest", + "@blocknote/shadcn": "latest", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", + "react": "^19.2.3", + "react-dom": "^19.2.3" + }, + "devDependencies": { + "@types/react": "^19.2.3", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^6.0.1", + "vite-plus": "catalog:" + } +} diff --git a/examples/03-ui-components/21-table-reordering-visualization/src/App.tsx b/examples/03-ui-components/21-table-reordering-visualization/src/App.tsx new file mode 100644 index 0000000000..7ec3111444 --- /dev/null +++ b/examples/03-ui-components/21-table-reordering-visualization/src/App.tsx @@ -0,0 +1,40 @@ +import "@blocknote/core/fonts/inter.css"; +import { BlockNoteView } from "@blocknote/mantine"; +import "@blocknote/mantine/style.css"; +import { useCreateBlockNote } from "@blocknote/react"; + +import "./tableStyles.css"; + +export default function App() { + const editor = useCreateBlockNote({ + tables: { + splitCells: true, + cellBackgroundColor: true, + cellTextColor: true, + headers: true, + }, + initialContent: [ + { + type: "heading", + props: { level: 2 }, + content: "Restyling BlockNote.js Table Reordering", + }, + { + type: "table", + content: { + type: "tableContent", + columnWidths: [180, 140, 140, 220], + headerRows: 1, + rows: [ + { cells: ["Column A", "Column B", "Column C", "Column D"] }, + { cells: ["1a", "1b", "1c", "1d"] }, + { cells: ["2a", "2b", "2c", "2d"] }, + { cells: ["3a", "3b", "3c", "3d"] }, + ], + }, + }, + ], + }); + + return ; +} diff --git a/examples/03-ui-components/21-table-reordering-visualization/src/tableStyles.css b/examples/03-ui-components/21-table-reordering-visualization/src/tableStyles.css new file mode 100644 index 0000000000..611a7dd9a3 --- /dev/null +++ b/examples/03-ui-components/21-table-reordering-visualization/src/tableStyles.css @@ -0,0 +1,116 @@ +/** + * Palette + * + * Declared on `.bn-root` rather than on the table, for two reasons: the drag + * handles render in a portal outside the editor, and so does the drag + * snapshot - BlockNote puts `bn-root` and the active color scheme on both, so + * anything defined here reaches them. + */ +.bn-root { + --table-border: #e2e2ea; + --table-shadow: rgb(0 0 0 / 6%); + --table-header-bg: #f0f0f3; + --table-header-text: #5d5d70; + --table-row-hover: #d3d4e0; + --table-accent: #4a48b8; + --table-handle-hover-bg: #eef1fa; + --table-handle-hover-text: #5e5cd0; + /* Kept translucent so they read as a wash over the cell's own background + rather than replacing it - a flat fill light enough for this palette would + blot out the text in dark mode. */ + --table-drag-tint: rgb(94 92 208 / 14%); + --table-drag-outline: rgb(94 92 208 / 45%); + --table-selected: rgb(94 92 208 / 18%); +} + +.bn-root[data-color-scheme="dark"] { + --table-border: #3b3b46; + --table-shadow: rgb(0 0 0 / 40%); + --table-header-bg: #2c2c35; + --table-header-text: #a6a6bd; + --table-row-hover: #35353f; + /* The light-mode accent is a dark purple, which all but disappears against + the dark editor background. */ + --table-accent: #9391ff; + --table-handle-hover-bg: #35354a; + --table-handle-hover-text: #b3b1ff; + --table-drag-tint: rgb(147 145 255 / 22%); + --table-drag-outline: rgb(147 145 255 / 55%); + --table-selected: rgb(147 145 255 / 25%); +} + +/** + * Tables + * Loop/Notion-style card look: rounded outer border, muted header row, + * hairline internal grid and a hover highlight instead of the default + * harsh black grid lines. + */ +.bn-editor [data-content-type="table"] table { + border-collapse: separate; + border-spacing: 0; + border: 1px solid var(--table-border); + border-radius: 8px; + box-shadow: 0 1px 3px var(--table-shadow); + overflow: hidden; +} +.bn-editor [data-content-type="table"] th, +.bn-editor [data-content-type="table"] td { + border: none; + border-right: 1px solid var(--table-border); + border-bottom: 1px solid var(--table-border); + padding: 10px 16px; + transition: background-color 0.15s ease; +} +.bn-editor [data-content-type="table"] th:last-child, +.bn-editor [data-content-type="table"] td:last-child { + border-right: none; +} +.bn-editor [data-content-type="table"] tr:last-child th, +.bn-editor [data-content-type="table"] tr:last-child td { + border-bottom: none; +} +.bn-editor [data-content-type="table"] th { + background-color: var(--table-header-bg); + color: var(--table-header-text); + font-weight: 600; + font-size: 0.8125em; + letter-spacing: 0.01em; +} +.bn-editor [data-content-type="table"] tr:hover > td { + background-color: var(--table-row-hover); +} +.bn-editor [data-content-type="table"] .selectedCell:after { + background: var(--table-selected); + opacity: 1; +} + +/** + * Row/column reordering: BlockNote already highlights the row/column being + * dragged and marks the drop position; these just retune the built-in + * affordances to the palette above, so the drag state stays distinguishable + * from this table's own hover and selection colors. + */ +.bn-editor [data-content-type="table"] td.bn-table-drag-source-row, +.bn-editor [data-content-type="table"] th.bn-table-drag-source-row, +.bn-editor [data-content-type="table"] td.bn-table-drag-source-col, +.bn-editor [data-content-type="table"] th.bn-table-drag-source-col { + --bn-table-drag-source-color: var(--table-drag-tint); + outline-color: var(--table-drag-outline); +} +.bn-editor [data-content-type="table"] .bn-table-drop-cursor { + background-color: var(--table-accent); +} + +/* Row/column drag handles and add-row/add-column buttons. */ +.bn-mantine .bn-table-handle, +.bn-mantine .bn-table-cell-handle { + border-radius: 2px; +} +.bn-mantine .bn-table-handle:hover, +.bn-mantine .bn-table-handle-dragging, +.bn-mantine .bn-table-cell-handle:hover, +.bn-mantine .bn-extend-button:hover, +.bn-mantine .bn-extend-button-editing { + background-color: var(--table-handle-hover-bg); + color: var(--table-handle-hover-text); +} diff --git a/examples/03-ui-components/21-table-reordering-visualization/tsconfig.json b/examples/03-ui-components/21-table-reordering-visualization/tsconfig.json new file mode 100644 index 0000000000..93fa81bee8 --- /dev/null +++ b/examples/03-ui-components/21-table-reordering-visualization/tsconfig.json @@ -0,0 +1,29 @@ +{ + "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY", + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "allowJs": false, + "skipLibCheck": true, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "module": "ESNext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + "composite": true + }, + "include": ["."], + "__ADD_FOR_LOCAL_DEV_references": [ + { + "path": "../../../packages/core/" + }, + { + "path": "../../../packages/react/" + } + ] +} diff --git a/examples/03-ui-components/21-table-reordering-visualization/vite-env.d.ts b/examples/03-ui-components/21-table-reordering-visualization/vite-env.d.ts new file mode 100644 index 0000000000..bc2d8a36f3 --- /dev/null +++ b/examples/03-ui-components/21-table-reordering-visualization/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/examples/03-ui-components/21-table-reordering-visualization/vite.config.ts b/examples/03-ui-components/21-table-reordering-visualization/vite.config.ts new file mode 100644 index 0000000000..87c50de6e2 --- /dev/null +++ b/examples/03-ui-components/21-table-reordering-visualization/vite.config.ts @@ -0,0 +1,34 @@ +// AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY +import react from "@vitejs/plugin-react"; +import * as fs from "fs"; +import * as path from "path"; +import { defineConfig } from "vite-plus"; +// https://vitejs.dev/config/ +export default defineConfig(((conf: { command: string }) => ({ + // This example's standalone build lints its sources, unlike the workspace + // lint command which excludes examples. + lint: { ignorePatterns: [] }, + plugins: [react()], + optimizeDeps: {}, + build: { + sourcemap: true, + }, + resolve: { + alias: + conf.command === "build" || + !fs.existsSync(path.resolve(__dirname, "../../../packages/core/src")) + ? {} + : ({ + // Comment out the lines below to load a built version of blocknote + // or, keep as is to load live from sources with live reload working + "@blocknote/core": path.resolve( + __dirname, + "../../../packages/core/src/", + ), + "@blocknote/react": path.resolve( + __dirname, + "../../../packages/react/src/", + ), + } as any), + }, +})) as Parameters[0]); diff --git a/packages/core/src/editor/editor.css b/packages/core/src/editor/editor.css index be9ed67002..eb03da51f0 100644 --- a/packages/core/src/editor/editor.css +++ b/packages/core/src/editor/editor.css @@ -59,6 +59,7 @@ -moz-osx-font-smoothing: grayscale; } +/* Marks the edge a dragged table row/column would be dropped at. */ .bn-table-drop-cursor { position: absolute; z-index: 20; @@ -66,6 +67,21 @@ pointer-events: none; } +/* Highlights the source row/column, separately from the destination cursor. */ +.bn-editor [data-content-type="table"] .bn-table-drag-source-row, +.bn-editor [data-content-type="table"] .bn-table-drag-source-col { + /* A separate layer preserves the cell's own background color beneath the + translucent tint, in both light and dark themes. */ + background-image: linear-gradient( + var(--bn-table-drag-source-color, rgb(170 221 255 / 22%)), + var(--bn-table-drag-source-color, rgb(170 221 255 / 22%)) + ); + /* An outline rather than a border, so it doesn't shift the cell's contents, + and inset so adjacent cells in the dragged row/column don't double it up. */ + outline: 1.5px dashed #adf; + outline-offset: -1.5px; +} + .bn-editor .bn-collaboration-cursor__base { position: relative; } diff --git a/packages/core/src/extensions/TableHandles/TableHandles.ts b/packages/core/src/extensions/TableHandles/TableHandles.ts index 086b3609ff..61bd6d53e1 100644 --- a/packages/core/src/extensions/TableHandles/TableHandles.ts +++ b/packages/core/src/extensions/TableHandles/TableHandles.ts @@ -11,7 +11,7 @@ import { mergeCells, splitCell, } from "prosemirror-tables"; -import { Decoration, DecorationSet, EditorView } from "prosemirror-view"; +import { DecorationSet, EditorView } from "prosemirror-view"; import { RelativeCellIndices, addRowsOrColumns, @@ -44,8 +44,12 @@ import { BlockSchemaWithBlock, } from "../../schema/index.js"; import { getBlockFromElement } from "../blockDOM.js"; - -let dragImageElement: HTMLElement | undefined; +import { getTableDragDecorations } from "./dragDecorations.js"; +import { + attachDragPreview, + removeDragPreview, + setTableDragImage, +} from "./dragPreview.js"; // TODO consider switching this to jotai, it is a bit messy and noisy export type TableHandlesState = { @@ -70,32 +74,35 @@ export type TableHandlesState = { widgetContainer: HTMLElement | undefined; }; -function setHiddenDragImage(rootEl: Document | ShadowRoot) { - if (dragImageElement) { - return; - } +// Sets the image shown next to the cursor while dragging a table row or column +// to a snapshot of that row/column. Falls back to the hidden 1x1 image if the +// snapshot can't be built, since leaving the drag image unset makes the browser +// fill in its own - a ghost of the entire editor. +function setDragImage( + editor: BlockNoteEditor, + view: TableHandlesView, + cells: RelativeCellIndices[], + orientation: "row" | "col", + dataTransfer: DataTransfer, +) { + const dragImage = view.tableElement + ? setTableDragImage(editor, view.tableElement, cells, orientation) + : undefined; + + if (dragImage) { + // Offset so the snapshot trails the cursor instead of sitting centered + // under it, which would hide the cell being pointed at. + dataTransfer.setDragImage(dragImage, 16, 16); - dragImageElement = document.createElement("div"); - dragImageElement.innerHTML = "_"; - dragImageElement.style.opacity = "0"; - dragImageElement.style.height = "1px"; - dragImageElement.style.width = "1px"; - if (rootEl instanceof Document) { - rootEl.body.appendChild(dragImageElement); - } else { - rootEl.appendChild(dragImageElement); + return; } -} -function unsetHiddenDragImage(rootEl: Document | ShadowRoot) { - if (dragImageElement) { - if (rootEl instanceof Document) { - rootEl.body.removeChild(dragImageElement); - } else { - rootEl.removeChild(dragImageElement); - } - dragImageElement = undefined; - } + const hidden = document.createElement("div"); + hidden.textContent = "_"; + hidden.style.cssText = + "opacity:0;height:1px;width:1px;position:absolute;pointer-events:none"; + attachDragPreview(editor.prosemirrorView, hidden); + dataTransfer.setDragImage(hidden, 0, 0); } function getChildIndex(node: Element) { @@ -566,6 +573,9 @@ export class TableHandlesView implements PluginView { // because yjs replaces the element when for example you change the color via the side menu !this.tableElement?.isConnected ) { + // Removing/replacing the table can also remove the handle that would + // receive dragend, so don't leave its native-capture DOM attached. + removeDragPreview(this.pmView); this.state = undefined; this.tableId = undefined; this.tablePos = undefined; @@ -637,6 +647,10 @@ export class TableHandlesView implements PluginView { "drop", this.dropHandler as unknown as EventListener, ); + + // The drag image is normally cleaned up on `dragEnd`, which won't fire if + // the editor unmounts mid-drag. + removeDragPreview(this.pmView); } } @@ -668,165 +682,45 @@ export const TableHandlesExtension = createExtension(({ editor }) => { }); return view; }, - // We use decorations to render the drop cursor when dragging a table row - // or column. The decorations are updated in the `dragOverHandler` method. + // We use decorations to highlight the row or column being dragged, and + // to render the drop cursor at the position it would be dropped into. + // The decorations are updated in the `dragOverHandler` method. props: { decorations: (state) => { if ( view === undefined || view.state === undefined || - view.state.draggingState === undefined + view.state.draggingState === undefined || + !view.state.block ) { return; } - // Resolved against the state being rendered rather than read from - // `view.tablePos`, as ProseMirror computes decorations for a - // transaction before it calls the plugin view's `update` - so the - // cached position is still the pre-transaction one here. - const tablePos = view.getTablePos(state.doc); + const { draggedCellOrientation, originalIndex } = + view.state.draggingState; + // Decorations are computed before the plugin view updates, so use + // the table's position in the document being rendered. + const tablePos = view.getTablePos(state.doc); if (tablePos === undefined) { return; } - const newIndex = - view.state.draggingState.draggedCellOrientation === "row" - ? view.state.rowIndex - : view.state.colIndex; - - if (newIndex === undefined) { - return; - } - - const decorations: Decoration[] = []; - const { block, draggingState } = view.state; - const { originalIndex, draggedCellOrientation } = draggingState; - - // Reuse the drop target's cells for validation and decorations. - // Skip the lookup when there is no block or the position is unchanged. - const cellsAtDropTarget = - block && newIndex !== originalIndex - ? draggedCellOrientation === "row" - ? getCellsAtRowHandle(block, newIndex) - : getCellsAtColumnHandle(block, newIndex) - : []; - - // Return empty decorations if: - // - Dragging to the same position - // - No block exists - // - The row or column drag would split merged cells - if ( - newIndex === originalIndex || - !block || - (draggedCellOrientation === "row" && - !canRowBeDraggedInto( - block, - originalIndex, - newIndex, - cellsAtDropTarget, - )) || - (draggedCellOrientation === "col" && - !canColumnBeDraggedInto( - block, + return DecorationSet.create( + state.doc, + getTableDragDecorations( + state.doc.resolve(tablePos + 1), + view.state.block, + { + draggedCellOrientation, originalIndex, - newIndex, - cellsAtDropTarget, - )) - ) { - return DecorationSet.create(state.doc, decorations); - } - - // Gets the table to show the drop cursor in. - const tableResolvedPos = state.doc.resolve(tablePos + 1); - - if (view.state.draggingState.draggedCellOrientation === "row") { - cellsAtDropTarget.forEach(({ row, col }) => { - // Gets each row in the table. - const rowResolvedPos = state.doc.resolve( - tableResolvedPos.posAtIndex(row) + 1, - ); - - // Gets the cell within the row. - const cellResolvedPos = state.doc.resolve( - rowResolvedPos.posAtIndex(col) + 1, - ); - const cellNode = cellResolvedPos.node(); - // Creates a decoration at the start or end of each cell, - // depending on whether the new index is before or after the - // original index. - const decorationPos = - cellResolvedPos.pos + - (newIndex > originalIndex ? cellNode.nodeSize - 2 : 0); - decorations.push( - // The widget is a small bar which spans the width of the cell. - Decoration.widget(decorationPos, () => { - const widget = document.createElement("div"); - widget.className = "bn-table-drop-cursor"; - widget.style.left = "0"; - widget.style.right = "0"; - // This is only necessary because the drop indicator's height - // is an even number of pixels, whereas the border between - // table cells is an odd number of pixels. So this makes the - // positioning slightly more consistent regardless of where - // the row is being dropped. - if (newIndex > originalIndex) { - widget.style.bottom = "-2px"; - } else { - widget.style.top = "-3px"; - } - widget.style.height = "4px"; - - return widget; - }), - ); - }); - } else { - cellsAtDropTarget.forEach(({ row, col }) => { - // Gets each row in the table. - const rowResolvedPos = state.doc.resolve( - tableResolvedPos.posAtIndex(row) + 1, - ); - - // Gets the cell within the row. - const cellResolvedPos = state.doc.resolve( - rowResolvedPos.posAtIndex(col) + 1, - ); - const cellNode = cellResolvedPos.node(); - - // Creates a decoration at the start or end of each cell, - // depending on whether the new index is before or after the - // original index. - const decorationPos = - cellResolvedPos.pos + - (newIndex > originalIndex ? cellNode.nodeSize - 2 : 0); - - decorations.push( - // The widget is a small bar which spans the height of the cell. - Decoration.widget(decorationPos, () => { - const widget = document.createElement("div"); - widget.className = "bn-table-drop-cursor"; - widget.style.top = "0"; - widget.style.bottom = "0"; - // This is only necessary because the drop indicator's width - // is an even number of pixels, whereas the border between - // table cells is an odd number of pixels. So this makes the - // positioning slightly more consistent regardless of where - // the column is being dropped. - if (newIndex > originalIndex) { - widget.style.right = "-2px"; - } else { - widget.style.left = "-3px"; - } - widget.style.width = "4px"; - - return widget; - }), - ); - }); - } - - return DecorationSet.create(state.doc, decorations); + newIndex: + draggedCellOrientation === "row" + ? view.state.rowIndex + : view.state.colIndex, + }, + ), + ); }, }, }), @@ -850,9 +744,11 @@ export const TableHandlesExtension = createExtension(({ editor }) => { ); } + const originalIndex = view.state.colIndex; + view.state.draggingState = { draggedCellOrientation: "col", - originalIndex: view.state.colIndex, + originalIndex, mousePos: event.clientX, }; view.emitUpdate(); @@ -871,8 +767,13 @@ export const TableHandlesExtension = createExtension(({ editor }) => { return; } - setHiddenDragImage(editor.prosemirrorView.root); - event.dataTransfer!.setDragImage(dragImageElement!, 0, 0); + setDragImage( + editor, + view, + getCellsAtColumnHandle(view.state.block, originalIndex), + "col", + event.dataTransfer!, + ); event.dataTransfer!.effectAllowed = "move"; }, @@ -890,9 +791,11 @@ export const TableHandlesExtension = createExtension(({ editor }) => { ); } + const originalIndex = view!.state.rowIndex; + view!.state.draggingState = { draggedCellOrientation: "row", - originalIndex: view!.state.rowIndex, + originalIndex, mousePos: event.clientY, }; view!.emitUpdate(); @@ -911,8 +814,13 @@ export const TableHandlesExtension = createExtension(({ editor }) => { return; } - setHiddenDragImage(editor.prosemirrorView.root); - event.dataTransfer!.setDragImage(dragImageElement!, 0, 0); + setDragImage( + editor, + view!, + getCellsAtRowHandle(view!.state.block, originalIndex), + "row", + event.dataTransfer!, + ); event.dataTransfer!.effectAllowed = "copyMove"; }, @@ -921,22 +829,19 @@ export const TableHandlesExtension = createExtension(({ editor }) => { * used as the row drag handle, and the one used as the column drag handle. */ dragEnd() { - if (view!.state === undefined) { - throw new Error( - "Attempted to drag table row, but no table block was hovered prior.", - ); + if (!editor.headless) { + removeDragPreview(editor.prosemirrorView); } - - view!.state.draggingState = undefined; - view!.emitUpdate(); - - editor.transact((tr) => tr.setMeta(tableHandlesPluginKey, null)); - - if (editor.headless) { + // A collaborator may have deleted the table (and cleared the view state) + // while the browser was dragging. Ending that drag is still valid. + if (view?.state === undefined) { return; } - unsetHiddenDragImage(editor.prosemirrorView.root); + view.state.draggingState = undefined; + view.emitUpdate(); + + editor.transact((tr) => tr.setMeta(tableHandlesPluginKey, null)); }, /** diff --git a/packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-col-preview-wrapped-text-chromium-linux.png b/packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-col-preview-wrapped-text-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..4e83fe8d95b78876d7728e7b3ab64fad4b3cd2ed GIT binary patch literal 5055 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 WZMN-&rJ~O*039s@&FXu$k^cdn$&HNw literal 0 HcmV?d00001 diff --git a/packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-col-preview-wrapped-text-firefox-linux.png b/packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-col-preview-wrapped-text-firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..a5d5d9d02391c7f18a95e5dd924f813d61d60427 GIT binary patch literal 9237 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 literal 0 HcmV?d00001 diff --git a/packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-col-preview-wrapped-text-webkit-linux.png b/packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-col-preview-wrapped-text-webkit-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..b12912bc43e6d14fd0eeebbe5571dbb8a7549189 GIT binary patch literal 7017 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 EUo4lY>;M1& literal 0 HcmV?d00001 diff --git a/packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-row-drag-in-progress-dark-chromium-linux.png b/packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-row-drag-in-progress-dark-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..155c95c5fd6385a43d377b734542cc3bc97a76c8 GIT binary patch literal 26736 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 literal 0 HcmV?d00001 diff --git a/packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-row-drag-in-progress-dark-webkit-linux.png b/packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-row-drag-in-progress-dark-webkit-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..56d90f6527adfb4a7c5a4bc931f12e4067dd98da GIT binary patch literal 33817 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 bLPdfZyP;cn#!LavAgL(4l&_S19sIulBgP1- literal 0 HcmV?d00001 diff --git a/packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-row-drag-in-progress-light-firefox-linux.png b/packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-row-drag-in-progress-light-firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..ac427fad3ca8ec0a05fc534d2ace83d6e51bd1be GIT binary patch literal 49877 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 u}Vz-T?Pen?W zJ*xF~tA(lpBqW95YNc=>G~}*Cg4e)hj)^Vq16gtj*cnC>?2ls(*Hp+%mhmx-@rgv3cF%RMIn}7PuWH=suk#)Fi z$GnVqYgo4HjoG0llSUY?^d=W(rd@ZSF_gG(9^tIO6_-swj+=Rl^f~mCo;pm!>}?Fv zGj?lovJLS*x^4Yi&Koj}xv$5q8{Sokxcj`;bv5WlFZLl&!wtdDtTg@az3fb{;e2b8 z=UATRrlKo+LL%)}6U^2gEbI3d*`#O$smPfiWe!)TuvBII-PvAMt}2Mc$_4ME&F6OA zZkEbt>&*;9+}2dbhwKh#g&xEaR-Tl*Q?x2}1x&wwBtduW=!t(BL@Ed^T!`QI?Vgyc zxGb|O8ZOx{`0i>q%9AnRgmGWmnAX}!yg?K`%i)kL^MZ}Wzg^Cd3*f(Wkez1|!>u1B z)r2`_P2~AH{5QoqmnJQUA&-bBA0uK1LU3ijG;axGotE?d{CSQN_{iY-0@*VuS5lpM z1f~qS6?!t4BHL2hG8#H562KV$a&(&!rfJ+GP^_g=Uq%DX?yH>V6G46aRoCc)aVbrS zV`?MbIrjUD^|17}wF(iFZ}Vkx7Uw%1e=L&s-|fdly!rZl%U{+pIun+nB8I@*+8282 zdVN|8=ewXgo-ZQ4hMGsprndC#F7M8)$p5Fjz0%LV9D4JxBd8B)ng9DqvaWwq!^SuEn=NZVt;eZ=ggZE>uK zg~6=IUdcB*wD`qk>NqRl2%^NX@6)&`Mcnswo;sg(baOxnyhatxP^;xEraQC2-t)AT z4XzWpBjyVt{mu-f)9z{&c`L&SLHCIduN(1Qx{y{3Ek0nI<8!ome zxN%-D!nPL8WFY&+P;9U?vPFQq@c}7?^X@Kh1r&ngAaS=ULg(lyfI%mPQJX}MJ##*o z$6{@n2+cx)4a;pJ=>j`?>d1PQt4rVm!>nJHc|g^+mJE5DzWwo;%!IFclO)mYMv!l; zjAdanw!i;xR`!l3qsFXKiG!agc0pH&KYXx=V6cmLEzff6w;=n*EtEEg{(LH{v_EOz zipP%zaolRO{$|)K5?@Xd_>meW_$B1#T6^U1Hp?RuqOrj>i zv|H8a`G&$rR+sE*oT_!0=q=0^@f*=VJ!74NrOr*3bItb$HOf5sULQE2>ANRA7rK!* zM`4w=F8j>Id-!FAkUf=4Oo3qU6>T_n4>Or%fsF<%4$swp3W_bUFyqf8&p z!K9XvyneQHY?`7Gsy2iH$3coLI4tOnJahgX?(_`SVEVIH&5oP-l)-d<}%goX30FF}(sxs9#Hv-mUG`JK3 z2Ha>jW8V=UrY7Q!N=mW?;ZY;<4%`h3t=s5>n3mGVx#?*U1=MP}(qxzAhrXi%2^78+ zo*Ka~y%T(XIRWcDXD_bc(glF^^# z#y~CN;UTP9l`|_T4riizpq8u^gsD(e-SYyyG6v}P$r?ddI)z>a3QFl7?Dep~C*8ih z8N`lhG@yhbxLk_lpb5_}Z05Ch`W0ySH4jKBmH&bZqy_Ex-8rPg^4v;%Ivul~RV zOcoKWXrPrB<+S84rw#*=8D_s>`I7+${mFzO)_-ThOFtPQ)^>QoMF3jJ>@&#L^wNYs znD49j9I6Ee9Avg~Ui3uy4^oL{H2Vp* z&Y?F~KN~pGC*Vj*|BWL75GlDDqeFfTM@XjQ)8+JO22y>0%+OP0~A?yscyjnpyel6t8&>VC5TzzL}0T%+wr+h$H-p_=bP;{WVqN3oVz z80+z#Eyh!k?*UhvC*tpFX}2Vzpgdy*4z|cm6BBgJo;YU=I84 zO|D_>XGZJvH?W0x&|mbHCX9z6nzm83uwTvSp-l~s)CbEz$~wa`?RGwQMp;#I+c)SY z?5=UHHD|5Y=V_f?>cvF$sRxOkr0h;Y$5M%#jFRjm|H5Ul{qC~k+9NOX;CKss!h|tRQ|55q8_2J5)G;*6Rlwx?4ZnW> z*;DHtBe3HIC2hQ5L5Qr3@0#K^&I%Z@El$1q2BG&^O{3V&0`cQQh6RhHZQ--%H=|Az~w3OVLz76EWCj>WI=iP!;|a)Ev}f3^)1Jz_lxrjy%u zR|i1ykh3)5ukjxr9e%kMw~f8h3E$@Sjy6mOw`Ob*$2iZVKD2WR=Dn~t;p3fNt;|NN zb#aJEzA&fBFRJ%-r&#$Dx|L^>lzRQ{gY0l@nS^V1B6*Ji=+{j02~F1W@McFyYL|F_ zUF_rx_j%))&@GO1uMez*GqL2A=^CRaCCdLr`V)Lk(luA!w^S#_Chb!Fdi&!{56ROuVv)}zE--%uerJpIhj@_HcHKYYcA!XARunF6mIkg%_cSVB-gAmW8ao{%l2S5FCdS{nt#Fws0yx~DkI za}sR>a%BCotj%&m7!!Rt?G{W~c1|8CVC1`Rs@lcM1-U}D6+q}^tNQL;cqTkJsO^pU zOpLpxKC||TU0*1t)8r~Aza45!r9&sKs!6o6(nc4UCvh(ieOosB)0fP?y}|*Hb(Hr3 zH({HX&9N5CP4%e1nLWzs=;APAD*e?4!D%rHk$jDJPDL-D%ra zkAICzns~dT6f|0lB^g3+HBN_`2zrHq2pq?)=%=gjA{w`u^B-L{18>a& z5by5f`}vQTXM;Rjc0&8vZXf+$d2*RRxZupuBGQMM*Zih5t=f?`d!NF4UJVZ0oSrPo zywB=NIVlfo+115@$Pdj0N5UxCB~9_);lM5MD7&2uQEgBLEB_?sspj)Z)Cf%n<|$ax zZc?qRnlXo$^{G^M!8MO0g4+%v8 z^Rn_zeXb7mTF%qYJ`pW!%QN-jYxpW%Gqz##;N%b&!u#p1OQl#LbJ6xZQ(=?lbq4+o zg}|J!*>?pX^3>%!+o9Y*Fmuy=%wp|w~pij;*6Eln}6j3^dt=3cjGr} z^ib|~_Pme3ci^V2?HrnnFzo;f3n?)}nih!By1#&1lpxkGKD-o=oxy|7s?{iqHG&)& z`oQB81`3reRj}}Gu}}1XH6;Ns7n>d32iYc&qwZ-A6+6-J%N)JpJjqegRI7{(9lca6 zU`MZVy6@g)N$Lerj8bYY0&jQTOD|R(I1tt4#EeQ42z`bqJ?BDK82Sqzc<5Q06yyWh zt0vr7?u8P(888(ITAC<5kFhq}IC01K0<--$?Yu$?Wp1V56&=>*bf75GXA$_BQ8V_V zA!4^QRkA|p-A-m7?*6aQJd#2cV7SQC&qneCHsh;5hxPmd_QZy2`e-Z9gTzE-wwu$p z9A)8+DR1f};>(`xznU9lXz9=22>addnrC zWxzagJg$sCQ~s4&JhXcm+Uoy%(63mXV%5Y0RA!~#7xgYcfg_O%8BWxM1vd=A{{xs0 zycNL6c;dM^L6^>*iySxR>+5|WSlR>WI!^yy_lI9&#xpPELcS}X_!4By^`rd~F*0}^ zjv{l0tH9$wB6Er-^!4!0zWxZ#yhkiRW_fjWl-1vBNiqN;O4N4y;SN2U_4k?C(`P)@ zdWXHzjSf^6Xe6Bt)w3*c!Y7M2hnnVC6bX=@`otn841L?K?7CEfo+!dBmktLa*wH+b znpEh=OE1=W=5QXa9jCd4F)AJ@bPHHV2w1U*@}s7Z*T1_+$$Q<(Y%ZUOZGPZK3`>!S zoV3EdYq%uCuk0ss-h8~@JPKwYZzlS3Wk9E{{t$qyS{*CS>D zzI1%6aC?kMI@)8)b;x=j_;cr1hv>XRvcvkRSG6yb);!%UGoE5VYP(IvZbE~?u5 zF$zZ!QTbfPz_Y*}kOn1Hbcf;$b3#F3MPvTPF+fk`^ESq3+azl4Yt7(?VYfGl<#<2^TEc(T=`W+Ja#M-Vq4z(s9gl+ME)Pn z1ey6T#?I1me!WtZo5|>G0@VO>@+!g#KD9y7g}9iIlrQnU%#TRf(UfAUA@usJo})Ne z;?PDp+#`uMhEr!f00{@7fou9-eDi@dd$95SY{JZLNRUvV zhm9;t9M9Q|$CHn4X2M(IpTwyKawe-_Hyji5)qpcitKm08aE5jlj2%cF5688a0tpv#sus)p_xv2N<0Su+2PH`g@L93J3{O~qjQl(wlz&+aWK9%KC{ zmaEACeQ(gyEkISM7(rO|11of3v>DX=7S0*1AxS@*2@mQH-?%oZ6zVm?VURpIDl34m z>WZ)165o^1wo%{PC+3N*ajPEwcwpd$hW1}GL~Vj;Kier899ciKX~a>{p+)K3cv<|i zP+h0P+1@Rk#sWQ!`RLa#)1wpXUVT&hB5gjo&Uyfe@9JBweW!4dBkYrOpR>pwbUE1H zxOJ>q#M-?2N@kP*=HGL~jx5o0BTJJuYKV35Q$<;)qQPAK-!tJOcmhfZOoeB6*cA-5 znXi|wWWKzn!-5N&jyA(tY1NVmjh>rgOVaigi=XxBf|R;IjE#x@J?d*i{|~6IqApy_ z4qTF=F;~%;-y|;em8?2(-!~{}k>m|oh2En}Y96{-72!0h3ZXGQXKt7*D zaWOs)&1j~g(2gHz3s`8aV1EhzNqFl@Ay~D2Sp~NgxGLgC?uoF`B{vj_i{wUDCb13K zw-X8dsN?8WTT4r5NBch@n`g=HgF0OPu1c0p*cj~UTVd!dXbL=DrNPT3Xic7A{29A$ z9amnagCfQyqugWNk98p6x^KQ&KqvYwikilqebA%~hnI~G8ib+NkwncIek|XIPUSnC z@nc=m>z$GsWu*KKb%|In1~D#yh>U@s+LS!_b7|nq`r<3$&(biM@Z9jY@_zh=i`);; zE;PEAjcx6hvN=Sxl{nS!+8J)`DOB}(#hu=j$J@T&WQO1r(o7da^V+O}BE3(rYm_Ot z#3Jx1?&3n}X7elBk{duV*mUpOa6i>3)6PfoKfv8z3b9l&F%+RAY5eLoyh;SKxj;X!-9zt1o!IY4a- z?$U~6S6oMJqi@Er4~iqJfV>|rJ}TKhMp!#gM{7c@K>N+$EZSTPlkN#aQ9onwwljjZ zdZ<5ONpK72et)v}b*rKE{k|Z<%K{q0%0`ob_jORc(YsP11aXG&acw0xNG08!We_I` z<5_=zWiCR6%fw}3FA1%|3Q~_B5dL&@&hQ|)#v_f*|OY9~r zmoxR6K+V-56UhZ=(>r%oh(^tD+)8z0`SF3{KYprSwVl7y@)Lzl0bLdtm6t(MsOUaz z670k>1)k5qX{I@%`T`b>)6ecTFxSX=-h#*ZUm~K zPW&$nQnX6_djzOGe+j=+FI9&J7?QXNp_F>MmjR0IWFI-hw6$bq(^w=Q0I4i=M#vQ5 z2^v6TGX~kOD#rZi~%x=h$zzyu4 zFq0!Dn!ZGVNkI-C=rj}Ces)*=vH$D1Hz@t&e`0SI(@xl>W0`t;canRvkd z737W{;j;&Iw_v2$*pvmmVwkpHkLDAK0B9V1Bd8WQ$#-(oTl(L-3G;|=DZY9_b`DVU zygs~~M*Lgpci?l875InDUwmt?$`1k`1_fe}bJWLH)1Kt>VSbcot6Ts(YBCBDo`rjsh3B8%laL+_WyA8)#O1e!47}B`spnvKj9btRMXmKF;Vjo zRwjh$t#g8l+F_IYS0uMKYO?!#RB;oU=;dlA<~`-vspEf}@l4h;xsIEZTp0bQkm|+G zm&`=GI(>8EJ~&bkW;GPEHW*b6gr;dqwAUhM&4c z`$-xZwiOzCxYanp_qPw@shLX>iezqOvupI*o_&59RLw!96< z`e^`XX}^K`6f@fE)AmXnAWV(?KK*|X6p68SAa4F=q^Rqwlqmu4VqN*3ZC~U5PE|R3 z?^G(%1JLjQW~0XcCQd{k28rrZlL_??vX?mRVklO*_fX!NKgmB6%tXc-ZOpRYq$f_w_BvU0!_jEh_OMxcMBpp1JSFCseCz?dm zCLIbh#6LRRz2QRyrn7{35)lpE*uyWODy)QvYp)8c{bw9QyXKBLoO-M@T=22}Q; zm2Yfk>O&Tk5KN62Y32R{AsWpSs|(+W2CQQi_O2@*!TTG+BlToJ&r3!MriWO+`HPq? zr)ehVumZjX&=h-or6oJJ-2wkzMKybVxl}G@ z1WrkABj za}+LHGOdPoYmo~+)9twrIO$T^7Gc&sBLOq=yJO9@LYqG+M6=XImk6+#2fVF=KMQmg zP(SH-_(nJHC-A4;4&SL8Fb62b19^^pe!VljVFr6O>FohWQ5qmU8eI0)ut>fr$Up*C z^#Q`@Jfn+R7La@-0j4Q8P4y8^_a9bsdC0RK@UCVou-!F!Hyd3t`(x$ETfQP72_faw zd=dB3AX~@^gFOxxh*na72Ln`9S$B-e06;~T!2I<@%sa@V@#hoIQ?nlk6$dcT?{Y1n z!Y_Y>%{Zvi8fq(TH-hj1rlLKt%un+$U7*4MxKU?orbSQd$f3W8grQB1qEPOs3Dd^| z=9)3~Fa9Fz$~9w$Q&QJOI+zbCHDho7xSQ(LK;_W+7X`^#_`E9*1Y#4pujlYmt?*TI z>%T>1*Nleij zkZPMA$cf;kr#mRYpTKN<*I|29*U}v;XaFi0Zl!CdqLDP9V0mXVM)r|`guz9{fDSLs z)&vrpbK#OIg(Q5_kXs~iZpAX{?_o;J|BnTGw4g96PCH9Az!$M7&%lI{5M2~1_T&jwO> zR{qS5UL^fj?E#aRKgmqUO~SAqI>}dRR_Zj9X)=32OLDB7uEAZk)&(_g0$og&^6`As z4h0>Z_etE4+%9$}GDvu?-xhpG-e@p z6TJbhfLF$aeA}{>DYRiAuT_GrcR=M6tE)bk_s+&-R(U08kuwri6jlZcWCj@kE$co1bSc6}x<-dX z$6ne@!<4B4%xnWMDb3m3LKPzP5i8CyoY?JIVaaw<)_meS4s{-%y3E@j10p`O3LO61 zenc5PH6FlzB%W=)ttaIhdq~WE|2=J* z!v*1?0A;)>$4-mZ4U zf*MZ5e3`j_Hok#n|7*$6UEkA@hr=kJ_ZBVR-FKuVM)m4>SY!A)JdM(*;@Kre$;;YI zS2o{9d|!1z)GRU=W<=-hU8$G?%ksW%-!G!3vfqwIk^U0e))K& zmj$c22|oj*OaL0L2WFzki}tM8AR)$DcX9SsNm`9ErEk$pYR^@2u>@ zFEGXdb@V^+$oR=&NHg%6jzT)=Iy30W{;tECKL%l@d|)GqT8t57x37&HsAHmyCiTNc z0SG|+bX`6z9B*E5`5i@s%KQHr0LnuBzYBmE{{I4iyp`X~^UuC=|GNV0Nu|8{A+k~V z9T)Q$^;7(;=ZT1mtnU=%d;ja`o>$VY@j$-m!RTMfQ?1zmvNsuXbs*C}=_0dOA>26h zagJo6vNqw~M+mulRl|A^*GW=}&sg#6{m1vo^JO6fwTsIXaCXG0B&mX<%`<=oWwxh7 z{3@=syNqMD%T6^(KfjB;Uma=(zPqx><<$`##87WczQqV5G}&umfYP;i#F(2L#vYKA z?oX>Dkf)u9wt7W+2}KfrXvvhcHo^VK*s@8qR57KYD8>wH!WsK-o#30hD|8nIp)6)uSk4f0lcAj zTp-rfS+*_y!;?Oh{|u@L1AtOYC)eTop9a~pVlV1p)nBLF6;QZR%-{|QmbL+^lP-Kr zpr`RZB}*awW4#SQ{mjgtVq7_il+(x(pgnE897EQC=M;Y#VZ}=g@P@y>7y}3zwprj$ z(tKoI;DA_W6B&R1TQ7+4pI*@HqVm|8osI4akv3fZwX^;^9^lI5%zINNwWa_BPtMll zgc`Cl0$7p2LgtNcn6B%BlC`_FpT=)SmCt$`6!0Z#N50AGbptuo_6~uY&X?}ya+=E_ z{#HXD)lvE(IDUY@Q39)=ul|>V9@whyHiz?wyN>>-BZ26%)Av=$&}CAAVM_b|3IX^=miik8!d81&sz}h40{%`3fuM`v z6?^h1de<2lY-Dzey&&a{UZ{QGhSP%hg}wsx07836{HMalexCk#rBh=AULd3iW%;Y%I|R;F7vqr z)2+DN65uYo(nd&`?+{MW2o*2j{kr8>TGn;`uJq9o$%zW#`;P3j>jpEf=}el=12gIa z|L!ejQa}T}l%HXt@Q(%dvofQBffoP>P?&V(QZ5kLaCyh;fX_=m!0*WfA`S}Z+f}^> zh3;H8qbyVl^#8%>4v+AE;y{?I{|XKiG6>~#*TqEU{W_p>!*>?Hy ziLOYGz7O2|iKu$HDoJA@4`!}kH<_tEdinEw*$)->*9wPAuDlNr_%#C;)HAxolDNNe z)v<~r$+YHi3i|-?mtc=$-MmBjl0FCM1-TFoF0k_SN54L9T$F={Y}Q7ADKEuYf_;X~ zNCmz@Y!l{Uo2%_1%AUE(aQari4%ReY}yr=MyA%u9kEX$lJdmk1i0-76%-L5gNZb>$c(5CvztI^ z0P7mBMUn1Un)^ZpW1>sTYjId^u1&a=fJ=Dpz9v|%?EuT^z83G=zBO3 z8>tkAkO!}>)`tSO&}WQ9o)ElUuu!Br+<$|Ro0Oha-3VrJNIRq7kNM*7JyDx@D)II# z_jRb53loa=>o>7fmN-xEcF<;B5f&%=zz=leb>biZV_hih$xew8*Mc-&+eB%N7p3GvO?wHgrq z@@#qxjc3_;2>&eLh4c^ngGMv@3LQUSw12UfZfH{Jd~Qi4C%Yi!JSL)TUx>PswQ3JTbcY$G{ehD*d97cDaxQZjFWj4$c;s+GF(O{ftb7@$m%W(ELYx zUc={wQ5?f4lU|6k7rnhs^aqNSfKbfV%5YtPfC@2ydCAMG$*hHePV>c0$lm00uLF1 z804BR$s2$V6NBg(N<=7t&V<0_?wHH$QvxN49@3BkT2Mh&Q=41OqhW%iND0JBu&bvs zKH)YFaIA00d#XSuNXb~Q@MB&Xk^YT=<-HhefmfJYUi1uQt>h{&)d{2ja6F|13>7r| zjxM*&MLsG0emQmUFGK4V3FS!8syrp9Pnoc5n^%Y6Q6#W43QWzP!Q12sKM}AFaC9wG zkbR^ReQ10nneS6&zNCn4Fr@+B!$Qey!8!By9-qcEG8UOZ zeX$QuKiKlm98l(&-A?&ZTw1%}Yy8kUq)%Tz=(MR(fjAraczQE`z$zuP1=Ju-E1E%` zXH>Fad_0Y{5!p!Lig@tSWyYnXrb>S}1NffdtQ0S|qt z0RDEZv{lHtT-$H(Zi4ji-}cGog-8B91gM(&=G7iAORn+mq5cJ7Kk|KY|K(k;)_*d} z8hi;|jnxT?n`j6V>SlLMOY|S!hYVB9s`m5*Kw{K!hu^g{Ys4YAIf*U)YtWB>yWvBH zYyKhujZci~{6jtw)=H)15El|1}wZ16Lo?Fg6jb8&5nA2*^d!w!OObxrXIKu4#L&ulo0~7b*kriq zG&@xALcfxXFubynQYsb{k+5h|RPcAan15Dt7qxA6TV0qxbA`#1*IFDqBV+_20gG$d zorQ&+@r)zK4c0m`F>-{dPHpANLDU)6Yf>8U2Zoyi)VEH@L;N;@#d$niZIQN%C{uJFh%L z>mKzjcn=zdz|F28qrE~hNvqXF=4BB#7ivDnA06;oU)hHDt^^Y50 z01a%1W;h3~7a`?*s~5MeeTsI4hDq5I|At4;rTWBF5wrDhK@h**%KJ2<9JuP&XcVsB zZGWQffRhT0PPJ#!f9f6K!y+QmW{}Uhn7Of}U;ikwGg>eFIjCWmlQ9uJy<-fHaFgCU z;`kOBd7L%(a6BxZKElvrLSDdA@LlWDk$Dl}CGx$H7EaURml&d_a8VY8QYo*SqhI}^ zK|IUbQhKRqkz9IvQ^=H^NG&L(1Y`iC=-B=P3I~!kInQo=nyR%|>Uu_}3`tu|c=;HK z=3jAsRni<`xMG>{ZMj7_AATXeEPU@Q*R1oDbV1&tr*{?i;!1Y&(fv&lZl6@;Pw+C6 zo$&Ly6k+Dl7BT-dA;|R~+=TzR5Ty3JKl`ATAHMq*1`EfT#8m)e#P8`x;$%~f)PHRG zOUw7{evFrMLRQMPmBd9fDM4cUT@a8qdb9S8C)&x@2x%S&*x4$K;hSiU#2viz`Gp49 ziTj(z-%l*8a*Lu~{p@0(=F`((b?lnz+ETkCeX`LOSAgu`8-LstT1SDT{Z0n-!!Wy= z0;uY+_{|kUL0xe8_4*Jeq(jJz^5o=5L)-SI)`(f!YqS@4_-Y%Y?tq*H?y-nP#}c=G zXYokAxnTeI(>Gus`s(^nNp;=L@SV1|LeYreb4nJ-Hxa^_iux5UKB{mYH>ZHp5;wze z>AQDT_)mP%IQYlqr=p)Dl~dFs3+bYwI4G1dcn?g1QRoXPxIs$?IXXj}TBR$Fw-J#w zh!3@^)hA~djC^PwjQos36qM+QeZl=^@b1a5#h{56LEWQaYp`)eMVmohkJD*CYnpvCaPd&WX7*r_%vb0aN9Oi?YlHgZ zxBeD7-i3?RxCQRfj=kx4zqU}zOTN&qzy6>cpZv`@(1=et?pCcz&&(O^pB!x|8iq(u zC(dG0=E=;T}BK+<+d8H+878XhF`1#wn6W*;)e zgmG=fp~v4Ra3|Jqj7&z=5rFf6CF2+*~?m0O?L^@{L#;!u&sYR>Y8g=^BBp%RXA=VF) zo4Lj~x@zuJyBTVuN(L4U$XvwgJseDFBE%09r^Q@PYZZg0o(~wN_we5u2qsL`65}2a+d5nQ{8b_wm+5( zqV=MB=^xa@+3QubQUxV2GZK`9sb~YxMrFGxHPbTbvPlf4QuKiFfS}7TE=hfZpC`n# ze#kv`@BSY>GYB+1#^8@I$XTIM1a7XSnUPi&B7>VkO;Fnc22T3-{IMwUg_|D;S2?qa zReS&>93d@^V|y@P?cd>Hl>)+0-0SiFFW_P6Qst$DSytpA>;8sz5VQnnzaz$4tvkD8 z!s40y`R=!D7THJH<7s1p@w=>EoS;O$G?rx^6#t}DWnR783xJ8~F|cMS5N_6e^LG0| z_EF3~ER>VOS;%F2dd+Ss-|B<1OmM))%=@-g1 z#vcTosPB|WC;ZU#o_og9^q3ecdiL2Zf%eK1)RcIJr0=bUAl`^rqEMu}Q?cF6sr?Gr z!Dej#ZU-aUqSb=QbS5u=wNDuovQ~{&p{WeR(>X$ji~ad%H@~Pw9B1WHpsnumtZW1T zC_k~$o2v?4(8V|pHbnER)oU7*kgiY9M@apXe;J8haf=3sSk=Wy^y;%Z_3w2mi6H-S zDeqaMB`twfF-5*#t~Wl>3o<^mJcyJkQIvIw&t&^tJ!7~o$KUJ2f~4BVB`mtn_ms?y zWz!is!!&G~*Sr;CxAId(G1j(B`cCN5O?a{i!uR+^7W3GCQ8Y%u5vW%$oIegH()9Msm{A%WsxM*43;}d%^kPkiupuNhrxvo^rm^C68uZ|Hq9ne8rVy_ayqLlG? zpO%WW+QJ%OIvmmV$cO8o^|(Vb{u(w4UK7{!Bd zMr)QwgSj`0I>`kw0F_Wrq3`<4_{lF!9>OMFy7j?&*Kh2Cyk?)03G;Ll$iV|`;kFiT z3#>>y$mRkE2#(~9>|yp?lC3TI0OH)6%=XsZsXIsL*o!7&Kz>f>ReVTpKcpMwdzBj}iGS=YSwyH`l00W|VjiW^I z!0m}Xuri)hY64ML^g_ON_>Xm-HyHnk&J+Hh+P?CD96jMMP4KskM$zAM520eI?^zzJcm+9)XR6C^AvQNAtuTTXwNA?zR?DQt1a+*Qy z%fB!0kTZ-K=dcTgTmTVbIe#{ zws={5z$M6GY5#w~^VA!MBSf3Z;Qz34r9 zlg412DbNCro4CQ_=Zs-y?%9g~q3QUSX`Tj9ZO05ki!478bREy_kEf<`n2U%FIX%i7 zdmvxwAZefD9jTJ${!M0DMS0G7PHxBDni|NDTH~!k*amYN$!d3f1qeTu08s-oe#*&M zAFYGVEMZs^SO)Pbz6t#sAFv+IfjBX7R~->dE^^_i*FFTVd6&ckH3!(ig5;u;GI!6D zhC6Dp8p5gu$VR(=a;a+Z)N2qcRG34z=TGE@Fh2xu{;h`IOl|bZd|0O z4``_Z&jIe^FeH7JONRAJ`Zul$+*sYOr=wMW+o*F0IC*LS$UJQB`lJHLq955T4H&@7 zAj%AOQ$879%TlZ609LD+ay6Eh3|evZ2FO_74nY`1R7{a9mNtv9_yQoNW&lY`(N*N5 zMfY2sO5b%S5e0_J-o%-tF!0(#;N5_YwK5+Jiy=KC8{|%SeXf|O>zNwg>;-G z5gmSpqWhZ(go5DR$K+_Ol3T(XOBrQkE+0N66r%WV2xA|F*T2Vt9$Ks^qjo zrHCBKG%&FR&+&~IW7|bd9d@P2ur`p1zK${}!9N$T-l$8Cy!oMmlgNcQ)l61H9qGSQ zFrqs2mb?vPopS%YU4ft*az~=3c2II86ia{6D&8?s>Q{YCE(1$itDXT#YgkQ(kID=M zi&FU77dGUO$s6AEUbRM&mA%T)m>kA15kFRpnCsd%7vwR&41!>H@J8zb_S9{Vdi|5?XS&$Qh8? zs#HqOBge)~FAO>gJ)9sBIZtZhn1Oz2bHTk5l@y!MjN5UCl-q=HzRi~Av)zjc#&h8r z62gv+WybY9<`Q3ULrs;&Zm$_?4jvOHt2=B&qJuaEAc)-!zp(war^*wgn@;|~bAuVF zdmcf`ra;tl_h&Gkh(F!w>v=bdx;y*A`wq(itZft4UTTyAl1q4vJI^%}pZhrqUs)~j z2HVU8hyHYKT{xygXtgZd2bO+KSsfbhN^5>`;VTgW>(f_@&kNoU7V{0W#RsOjJ{YtQ zq~pz0P3Pj=cvqL#=9;3UoGoNjs6h|2kl~W(Tw4x!_}z>_Vz+yvYy#I>bQqv-K3xn4F$NWFSan8Wl*GT@~DoQWz;LBnWdZaHo4^gh12yJ^ z2p23W?}^N)OHdkyNblyxfRPvDjB?{n@!_F znw@WXrM+$3YE^BxWQe{8y{=_00^59gLFfP{N;+p}V$ndDS|1ekr+R$QU(YxE(@eK% zPSQJ@ORXuHih;FPiEMLawkE@UDZw_X9`|fjVfbJKW+Z!`ef%WOzys;+tuvMKyglnp z5;}}0O1?pP%(?c$U--Rn21hX*lbY~(R61Qe70+bM!6KP>G#5(e+79}6F&4H zC_-8wDPwGss|$-J39|hDP=&YXgOZ$SNh1bhQD0+HYchffy2Dr016dsMuKCaG1~Erj zo89N%G1NW-o@kYn8}LLA_jS6mzZ_MC{lybe|K^Ff@6?d3Fdc9a9-zn;2doSD9JXB^ z4rHGgnPRkXQe1(65fYJq)i_ ziGoL!kz2J_iLm_JZKIkXcSXOFZ*A|B!gq%>$*lz=IOMQvEP&7mhr(pCkv81k1_LVZ za;{e|%pf(Hl`MUrtD?l3c&Z2jsm6of(j_j@74;ULKup6}t_Xbk0`US`NE@+*K4k`9 zyq6JM;3ofA+T!22;g@Ypt4aTqIKu&gKJ0N-9vbU}>hRS|s zdeD7GongV(GLp-ulnS!Yo%AxDkl+j{awLTE&M+LET6GEU8nOFhEyf>0RIVZ?6N?~c zs%eFsOY)N&NU->*^ZqdUnlOMAG0>%GTZ&694Lly)QjleK8)n*@+1VQVp`b-kUh%Xc z;*Y27Gw_tPvwlvlOv@)4rZ*bw!%)^k>tCr7m1GOc4yVioiARR0W6~e#hb4quunEMe zek!D4G0NX+hk2eCYs*$R&9cI4>wEaLI%eU+iPJ?qyjd@d=He4B4&uGK!Hc{_JQWhf zj|oUkOu|c7v2<`&cqtvn{-HCLwa_CX5{-Jz@9L|^9#$D`_8pIQ=z|yj2`N`JRx+f% zQ&DqN6wTO?+dNGL@Xx)-8_(Zr{ynvcT*fP>2$tG33om$5T{EMZz9sJP%g!J>c#7-S zgR#prxRfoqSPdUbxcLX&RCtAV>KtHe{il$m(yr*N`CF%JC{ z6Q86cV`#?^MI2iH5)!DNeacs=2>+LBL-!L#&Tgp9JBuwZxQ&i&=VFb|zOi}jcGdZM3G5fm<)L)^E!M~XzGZ<4;bD`lv zky`TkeFXy49H0Mggfx}3tIf$pajgD|-3Stkv%_wE$1#s4v84M(tq?Kt#z645+JBD%iUw8Z1ANwD*|3+EC@N!UuEm9F;VzmteQ zVlSw{l8AP`xa|tweGx9~5`rRP2VS>@S?*>PdOn%nr{Y^czbnLwCg|TJoo!9SrHr5!P9;`KAb>Uu7sW)Aj-l(pYlVN0pFYB>t0rZzD%b|h@!>Di zi1!Q#6S%;Gm#xM08i$wTY1TvWT}Y^soQN5U+pdfxWmf#WZvGfmD2F-4>9!nvvo(3I5wXiD%5 zm195Z;|jhV#=llwCj#Kcujf|%xZmNR;~;9CgLkKb&D!9bSpbmBlmWu;J4j-c)TI@- zg#dBrH9}&k7b#sYrl&pm#epWwB}E`?-48e;Kj(Rr#Yzn2f?!mNgz%|@!jm`i5%ix0 zFz9keJwKkBT3n}X7S(a3Uxt;jgw0~JlY4+CqY{CPNI1eq6Z_ojt^CNxw9quZTThZl zx#t6#&URuqT#rqnuXf7f-{VY}vT5-L84nO{3SbL{4u22Axn867-mc-jIte%~vX3^& z(Bjx^NuXDL?z(1;B&i>=dA_)nX0N2oVqV~r>)iDSiFQFASy&^1|{?OR;@!10h1W+;opLQUk-81MX?bk}ygB#=e1tIJVZ(OLUe;?jF8|LsCi zG}M+?wbY@S6x<>qVJ4YABqFuJgV5c_Ks3*6&unx;OmVCy0)Ij^ZH4A_NKU1yIev4HWGH;*(ot(I=09=dyZYAWI%ihZ)Ov>;f|fi%dGW(a9H2($ zYz4!6c7@wB+G!Jl=gO_7JMVCeqOUN8cyQ0|u1R&GQP@=z~ycl%Uk znORc9Vc8n^V&~ZGJuk@*S|&Yde|E%MD}!&eX22PXpAHJNQ?}#x$pNkXg6oo}S~Qjp zB*VO{P|U&Rn^PfbismSEs?dwu>&DPSU%YPW8arNrbD=zayqje=wdJ`{sN)I;0zUz~ zcCp$`{VLJbL*EZ8E7US7&xVvj#fuMN(j`p#rw;J2B0?!rp7q2ul zok`&@aN3Z-{JLwW)-B)bP$l}f=(I74K||`LCG%I>dYq3%;)tq~&N9G~P`q`-=u)B? z_tot{(rS;yWj{6EQCwp-HsHuJ_bcxY1fKV48CO^>P@IoM8~MQ_qm8_eXm1E2j|YP~ zSMyaqt|1Qj@2q@8XR0RDuSZzhz*dJ@$g>NIj<*Y}33nib3OmWBza}oE1T|kPaq|HU&n&iC_y)Q=SId&w*T0TV|?VP0xQvfb(S%TGRhhgrs4 zDdG$Em(6}h3ZZLdOtZ8>!pGN4sx#$EdCUsHYijyy zneT+8dHOvYy+r5|?Zu2G(PACEUgn`?e*5rlH?HSTS52MjK(ixbwd+muK6pQ^lb{3q zkwcy5iC)P$NGW1xK`1eIm|!d0tWckod08kcHH z+R{C>ycREyTs^>E_$IhD?_-E@|J>Vmegbd6R^zJLe2;>;NEVM|0FBBF-2scz9-3Qh zas{%4UcG~?=qm7}TB%eS15P4M4+l;Z^7 zS+45oW{+vn2aFbFusBd7r|7N;w zC^k0)#d8{=>O3ywE`;$*HvE7-_`I>uA5`*)qLR4!;FbKtKPm1d9ZZ9JJZ%7z@*Nu@ zWa*o%;k>gj@Q2k?S}EyMX6k!Jwpw#%+=~;bnBJa+WX-XPOwzq!i4OvMYW4p8kk4Cx zzT?X|U&7mJwA$TJbqS{rUK#L^!;ihHNj3xm+>3@JY1pIqYUMRWbT>nslI$PSe=ipz zl5Bo-o#4z3&h%q_P9~+A&6DQWwt`QyK-X!^Acn>O%7OT=?xH6DzQCglr-6kAjv-ng zwm&6tSf13Av>ioq$(0LojAGg5D|tx%exJTWohc~b+vZdhAITsFi*L48rMR%FTV&tX zl%fza*j>H%W)1mQUe=Y6$e-@6Q#KlquXqaYf>@x_QYE$1eTD<$1Yc}9ajP3XP5y%n zlOJs*+J#t~b&JCoL-3>%?KAltyB>q8OXY>JMcBJj@E8Q|9kH5lYQ(T7ZNiGRB8IcD zsjv1XgS%JD$WEl{T#KG)RKSw-GjK#pTM#hDmsJAHP%%Y2e@F+r|Dt5NA2b?dIdv$G z)%=Zc5lXOzs1Rf`Qxq)}vHualL9+Hk`Hw<)hZdZjiqD{hGJT3DlU2?V2aeiU0(}Rk zG-^rHgLeqn8`B$KM=PGT*)#|CxE-`|Y#C0SO%uIK%tItfjf2bXD|uzGNx_E}*^+|3 z@c|>6uJ6uLJ*c--;RC!Q>saO-|r>Ee|s0k%bs+EpyJmWSIX?J2SQX&m{+XSA@#?DqNvt^I|cCq zxBYA{l@}w7h)I=;aQ-<0!G}@@v<^80Fiz+e7sd%~K#xcuwC2u2(=k)VD1OrGntc&~PJXmNNU>OpK|uHYjq} zu@Gw^zxjorq+I}~Y56PD$M)fVdF@VG%wJ^?PkCJaBPH)a)%9-;WuSU!xYtiF60I3G zz+nJ6dIH>G5r5oaiH$OgYBigg`nYvgJW3Z0U$2*_>Cr<=b2)!_tm0l?$!fX_Y4SPw z#wdTnm6^{(EJ|g&l9`>zUV?lev6Gc0ox}G8!)mkpt*yGG!|&c} z8f$cEl!#nj`Z>aJf2Iu#b|l7`$W8#NgBGlrG}Rk0Xbv*_PgI=3P*rnmon)9Z%w(@3 z_ewV#-Ucc}E7EQ0)@-IH$M*6^rQ)j>Ti>;*`4DVS-YGb1znS)XZ852*m`3CL?J78i zdD>dMd&jbIFn*4wiNrJENAitaleYq{y`J8OBT)lFMSS*9EhbY;-T+4nO#XO-#dqv|OB-)NdRR12G%OnE``@F1 zE)P9yRlB#;u*xovmztd0MgN8boxi%`FohvOQ};JBN~_1a5aekySK|;FB|1u$o&SK_yT9XR&); zu`+O5C)Z0Sptrz+<7xCBs1^9dVJ_O^>@l3A0@exC&xTYKjfFMRwpSC<=TmOC(q8Hj9uBDFnCAgRlT%U} zH!myZB^(-&sh++0LbYNmZe2qI+G#DOmLv2X_LeK|y|GGozAS9@axP1tJV5rXei*OQ z*c6hGGiU|kOWdky) zhNmIqc}X+Ix+vIMpC){abx z{|at&Ow0>!g+@wh(2$#cVX5co2325RxhO_s18B`bJcynlgs^UUM_528vm)P%%m^kA z0Zrkino5u}7A3O-ItLS2TDnH->eI4d4a0zSw`81N4_!owovXnoSS7pv;oq-hO(5Dp zgvx)m_)>gDa=djLo%<|;rQ2q(gr~|eOGulXhNKlc$y<=&TgP1o(del6I;*Ipv@FE# zV-7rJRxs-i6;NvS=AI3lTfwT-*MT2+RA3e{A2toz`?zmMJ8+C&N}&n4)HfdFA1Y5j zE{?`o?5;jVP<@@-YtO0{vn-t}R!>6<`_3UGVL6{c@xB-0C>>2>k?8|5_kI~?uAM3b z?(p<57On8sr$n3Mja;~*L&AQCD)y>B$GWU^9k^U3tq%no9%qNTfPysmrdg(RVm_X| zw=(Y=F7Hz0cpDU7|D_@#>}OyX^ypQKA?b+@H&RbuUCI54wX=LXR7_uUuJTi*dr{GE z^`v$5W*p6PJt2vqf6{Ky?!_6dnBv78uQUXr;EQU zmW0k7?gcOe{A{hbyL|t9sYZRn64xOJjcQ=q`2>Jj&WK7Du2&U%UU0ij3W3#PQvSj& z*tiTu+qdTfWfX1#V9-PtdGig;yfAVz?+{^QN(5i)0hqu9 z0LSH3no>8V9arQZ@n&_i!65Y$GjV{5H>kkIPg{515h8G$$CHkmB@~TVh-@@&vh%1& zdEEVt1-L$&ybgE25MltPvFn3lhBgd^M^RJX)(+>c(>>)uL#!5HFT3-t2^YzU0ijB} z@XB?Si@@}KnhSg9+pqVWm0S;bbhEnf!vzPP;{fq?!00kYLo@Djyu~6dm3jCwH5D5} zLO~lNk|Jm-C*u9LXQUu>@m61R);Vv~lqWpJLqUDXLU7tv(yW+NUG?t9D*1q(_giWctEj-Cm~Cn2;(+9_E6iBGXRj;PLIS z15;?tOQ6w0d+7e#WgYj4Z6_m0&W_jRN9EKv_*lPn*(}YDCw3;XlKJ;#>f!hfs5!pw zIJ{?M?N*q%UT?n50eMvitFyJ#SDj{P3aLmi>pZ1!u3p`WFk(^Bdm^xU^l z-5O>V`&g?N6sMWl%WOM#TIRI-1rLHg*B?lh3YTIiZ~XEr*dn4P1V=i-nHgf*eIla8 zR1<5S9Z+34GYEMqOcl;yS><=m{FP?b>iJ#YK=}4aO5KCYUn;7<+&Gi{f?Az=mOIJ> z%D_a&+x)JN?cT&wc+<_F7PiTfI+(#<+L(DRJ;fJXKeuivYnn5&f+EINA|>}s_XgZ4M$OooJA$-8laAg$ zW9StkVvEO?>@wBVtp&L(YPP4nQfQ-k4HsQlhYteuWyu0x3r8M?4Ykh{a0z^-D4c;E zQ~9tzQ`kK>m?g61Tmde=EB%R`jP1HH{&Z8oMJ#h!jYZPbuHaG;5-b}C@}9D|KBmp1 z8~$daF*h!)@Bp<`G%S2L{|Io zH%Uap9TatXPo^7B(^sG!^~tt;r?bT7S&JTsLl@WVd&(t4<=}?4D;h>PC_x#vKB)?t zWiSI9*!+&5fRKHMlo>=@+gYNLfho_qCBb3%-&28FZ);D_D;lr#^#~qg54}W$wshpj z#KbH!I!JKqyGo|?bav+YfD#8QBLm2VfgjYa`io&=hmHr~dmAu(aKPXmz6ghNz~bcG znm_`(3y04~%qK>F#vu}59P%L~oc^1P5o90a=}7?AhYD*Vn@x&RIYA9^5wzZnuyIKL zo3C9lIH&QURh<;sqmyW!-T`IOk=?2@wOB;+D zD`|E{0STP{OfS6o!$>@HFbFPfDqCP5P1H?h#IlVDVFvw53?D`_#XOK~v<_@##e-wpCPN%1ZBHVE7dWL6F?%j;^U5?fw5Y@d9P#(zmL zgp>Bry~fFo@1+Ysakvc&eEN+rWnmJtB-aGA8y0e=XfHs!fyNQ97;NRuqNn6@7%qkD zc}LcP2tP%4v++m(zXlOo8D<$}#rmk08-mf{x>IVF)$nBJr0}BmmTd+*J)+vfMOknK`(#j}U%LjN&S&)SUX382bLjv$qAJF5#`Tpvo%av_{$SJeh8_$62hx zC0IT1ZrV^n@}5+m2fqEX*cv%FvstHL5Fo@bvz^gw4GR!*1OY-=!pBdNH!zj##PdZg z%?DR)l>(0WvcAZ8bf}jq!@OhEoHd8DHmw}X@SvZIyjUMN)EAJ0&&@i3LpI0&8$^u> zF8m#)=FAiPp??|qInM(xsa$eQ*V^B?JiVQ|f z6f6_eMg=&}SRs6Y*=4MCEL>>i=oXlv$e|Ndwgc;Ts16NaDiIaiW!*5@5-{BXr z25T*@frY#p?Cd^SJ5^NZMU6Ebg$vD`@mv3!I=mCNsyCZVetKI1y-zhMe3I@`f>qDw zWbbl(VfHbz7I-vySDfXj1;tG{MmX8=p&M#C^c=K7$2BgfK-u(iz1gRQsI9$vb&Z^xVlvDGn(M5BrqPdfo=;7!E@mf5Fo(p^T0po-T4mvVopWl5Jn0!qgq{}x?bUk7cmD7VntIqj`2guMd& z`vr1ll`4GM#DxUn^0PT(n@M3t;auV5cFERvMyx8lnQ$q;l`p_?&=fq||AfBk${jv} zTn0|e7AukkWwM7w8H?+uwap?)2eA<(DMNX^>;ncJhmle=-RH@4zvh=b4nN|nbxf*| z95w$82ItT*2~jYS@qd+}??ubrQHGsEr&d+PpN^rB6iS1?W+6h9??mB6uA`lkNrzSS zNhNL>nKkdUaVGP5hfxTp$r_2tkq84?|D_xAymnGk-}SkYgr@S!p*sIYqj2I=(fpaL_k@Q2W7~N;WH?+IYRQ&M2GfW^#T~;)&pZFDJCUX+90}8m z-1T*&&F>`hDR|1G*_bBfYkhC@v#8r%UZ#86>boKCO2dw6%lv&zTl3$JY3m6(@XO*; zD1GBSkcN8DL`sNYtCwXgde5&eXf%!9(xHm1)ky@~qqz7vp*bHeS<53$dMYQZmJWwo zS`jn8&ueN+pz(AAcSo8=#*gK$$yPhS4)CWqURE|S-l}#o=j+(Yj3Jj?60MLvZ)G!o zW_@Cfp`a89a-?5;=Bs2N*!eV3Z8eYWzmvFwlWPrsYiLHBcLX?Jl$6aO;R45}jBMOl zf8|Kqe}rPT$m}@kr6G`@n4mm~JQAoXF}*$>sg`{8#`>T>*Fv`{N3uv^Ar>dckyEx% z{ZP*RF0C#x6-eGE&bKRQOld_Kjt_pc$VrlnxHYJ;Q`@RN^wOqhs%mne9J;cbqI=+^OfnrlApJCpyNHRA z?v5jite>j#H-i(_iAiM!#tDAGO|opE_cr?tq9DC=K*Z81d$$Jaw$*LWx~d0@Xguqp z_w_*=Ch+-a&(o3k+Z)ydK5IrKMn$2iC-(b}5JwB@3DXAON12%4T1hV4$%dIlVZ02Y zPA^ZU1x%`1o$A2i62Tt83U7ZBL71<=RJ^5!ueqGiG>L0A*m;_H9ycvwIu!L#nIhJr%AgZL;P z9v491m0m0jG?e$vqTt7lnu{%Kb*NUs^k52CEy*ju8-;z!7eKdE1iK~&mrLZn13&`BU!px1bf%*WzMvRFpGe>azyNi9qu?D*@3 zlLtWS<@-MZuV9+q>7*gsDVXLORXE-6PGlZ-C4Y~fk&jJz)~5(JZf$?Eg|VTvLDwr< z`FhxkL*_M*hS|)A9>M3T z%r|P$J1*Ph>21B?h7FgAdc_gJ?I*5dS6t$g4d{-pxD~Gs=r36kU`dF!x~710EB$N; zCT+`L0ry8Qgx+~@>~@n!ff6NnSX<9_j@fq6A*rCqdOi!oXN(UiEja>B?dnWOk^l;M zs|L~88G~-ERA!+^$0mIx^_^|1FhULD`^RTHLum3z z=%4^M6fP%Xu9H}%kZGODL~cA+9O-^ITXpZY@~RC~OrJDR2Wl6;T<5lOZ)p7t7O+_Q zT-^#kQc-oos%Z4h7%TJl(AxsXFJ2M zxXg|3?N>e6vFk>u+bVh?B=y$0n1x;DaG?QLrvW9kftCiL5EI0*P}N1B^J5KC619$8 zV~*Qgj0Xfa@+h9#SS&n>{Ctbv?Yhyv^7A|W`%6%JLtVZg$QF108BGyff6kJyxEz7g zsMfD+WU{{Ni;6x{%`*QzO(p51qWMUz!!C2`;qX63D)M)8dPasp`l(;f%b`B z`7uS)a=jswRnR$S^G9^ewkV*8LNw!$t(NER%l`&))k~2VbtX)r-$;3@DMAWhnbA03 znw)+{kS;w%Z;9o@9PoU!Oq3Q>t!C*$BdlKiCo@{Y>p}q+^2qBT1@2h{ND+!&>hGqj zaKre?tYct3_Pl)BtySw@&eMaeh7(b3d&Yq4$e&ddl)fodT^q!1{65=;YCPv-QDDDK z;OXk$V{suRb@c{Qk_yLg+9W_HnBl3sjHVyv>PR0Iw0=5fc0A!1y7K@eMsIz$F-wo| zJjW6MdvBF&z0f~RHNfFlx`Nt?<^~!hAVfFrK9D;h017g%%=pV+cB-O`prNm@<1UCd zl3CUGrd6t_59s*)g;@P3wlK=Yf~FAYFfaj#(oPH>BG$v;v91o2IEsZZnz+Hl1R6kU z?k))jMIlLautWg5OhW5Rln3P~!ycAfp-oL|C=Zmx*)mZ)!HLvg!2-B2L(pBt{f7=( zYUfHvKQ~?R3b6X|DDuzMf0f@k9E00K*O_icY`h2bpHLS`8WJ#up_%z)=?G&fVcQ#m z!{ztp%Tx&BW{vA?o4Q(8pF8z~5K;-mw_r{M1l{+u&e@?S5l1gwgUv-IMO0AB-e@IU zq+N(>|Iz*|@?}{@VNlS|0C$)S^!wESZgo7}kMjUyn79p7g3%uiGLk4%=mQWWn_$QK zs4|vH<=1TURUHTI6sx8ek(zPc=sOkhayG%`o+7}<22+B}(Ci=Tq5ZyYE-J*bB4Dc4 zN8U*j@j)qcVC9sww2WmZwN0@b}hSXzk!0lw5jp&F2&7}J<{8Td-5PHh&h4* zit?};E(Jc^fC?A<0#wGt(yCEh=(CX#hoErQGXV!;AVQa@Kj%MRWN>-g-2RfKMpi2k zcgOB&IZN2cot*I##Crv>0Tq@BK1ZP8B1ENm zA}(E7Xf1d5SA5{CqHpc*lcUf2pwc7Tj(Z>e+E`9u(fk6F;^LyS&(kIvT`L#4}Ig1jC z5b0^%eTyEc|DpsW_~idD38-phEd=lJ%=?rg2Z9@rr$ONfH*ueAnJ2rpV1oRAwfEIg zQNC@rgoGd>B~pUK03slbG*Z&t3@9a?1JVP6O7o+o8-$^S0frcrlAfU(r5w7u&cp9L z?{~iUkF&mYVx3s$@F#0M&&>18z3zKo``UY7dHHqUFLplok9t*~oWoqI|AhfMF$^6v z8Tj`9JzxKidA?=>owco55iNAzqj3OP=zSn0amh(98;A{pk^Lh!DA91Ox%VOXkP9c3 zgq;W~;=>rgsvx;{l=QL1Rf5?9dN*o_K($+=T1SQdHQ@hIl~4(wF#Eq>C1i$+X#+i+YXe#v<}sEZKk)*lKvK4Gx||rl0I_n_ ze<6O#ou}XHCcQDq@kA8@xj~(`xk08UxW5srVjVzk5Oi|tZdm}^MuIH+`9YimxJRXb zfTQU7i{$Qmoo0nR?N!5mSra9}AFqo z2rUZJORg4D%?V{mV{EYCzwbHHnDHody#r=@z5-ppMUX{)Ya0E#MDH&$h{~-3uv9tu z|8%`j+5bwtkm+>~@G9Hrg(JhVk`#rlxSou!0M)_6gqt+J=wTVyix0Z1b(i`C7;XnXo>Q>%pFYRx1TTQ|IvqRssiR*$x%_;8b$&8 zk{pl(Sk+^pfie1Qm84B$h`V!ne@}WTz1uC}ZyKmQt!om83ZQ`|X{px|fF>U0-lzY% za{TX7@!13Nth4er%n^Zbj%PC>`NrLqi@cy()4XsK6+DiVl;nsTsz_NnANpHqOl=4i z*lv!PrU>=Sp>mIqrqk@Wx1kQe+zohY=K@s~KXSIjoHr2@7Hb3a{rMd06U-x(7Rp8$KA=B0Do-bo*rEQOJFxv@Ex7#AgS|wnC%fFS@re>(oOG)b4q`58>d8mq3YuzuXQ7;&@Fm4 z^TWHGWGu->vZq!du~WHLl)Sc_*|=B8c$PJa`$?ZGt7@UnL#dNQ5!8W5RD}J{0cF1_ zm<}&hVd_e<-)}EiZ2Ggp)cRyUPPW#%%2CzYXIsj=15b}?6Rh_p@>3~|!%6yRBNNP1 z^wxo?h{h6k>CTjSxwwvoM;|K?82(T+Rp#AzdNkZi_EMFdfk(|5jEbm;4~sc9Y5O$O zi`7G}IvIYk`qpjf?f%z#Z@^23WF9XXpR_fp-+Ruv87dUvIy*X+GsAX$oVYFxPCaer zbUv5N_gdVkko~n06MK0&b`$4YMaxvQ9OaFT)7>@H^r(^KJ4~BFAZ#ZviFWSVF{%I25pp+T&el7YUs9$(f)}`7Tb_n zTBy=_%ccA_ipvYmzE_YwRs)m1`Kj*7&xmWD~a>HlOO+%&jah1k~o# zy4J+Gt6r1v<_{U@pEFztF0^w`AsbzT@I|trr&A_NXDXUtgTQCd2z+_md~9^EU9Ov8 zE-rYYQr{KxK|q2=S#63cX!;rwX9FoU8Yh!E3tYGv`V*my8-fvmyp1zhz#>Mw?Y3t}ma zS?2&IIwH?gQZ3ESqe6R)mjd_n4jhF$8fWPI!V9u;Q~-B>~3Q&|)qDvRJi6f7}jq`IJV zGe^DiK6%_l=&dQ0Dwl%srwT4V+PX-%iBpO8!A)O0b5tQ6HiDTCQu&FKLcLPx>6J}B z_8#)q1(QyTdD?bKzERmmn?=nNR4|dqgn4PMr@#7~! zRUohZj50Oq9*Y}H#9)D~nv@6rEL-MJWgUhLNwtr6KbG6Lxg38asUI*_ux6Gc(GMQfT74e(yy>%@hmc7G#-m92;4o41MpY!AB3B?*+J*#@rw~p&J=hSzj(c~W^{JatOT-VYzO{v(mT3BZ~ts z^3PuU84c*Fv%mYo1Ri!WX@y?AJkU@28N>1^(zPvQ=jNJp#&$r*1LCuIcgd*tb%HfN z+OF+eX{Y+heAI3vm77jcw1HI@Q>`rtTrI2YdgrvA5tX2WHc79Ahf7}0xK8%NulJOU zdZbP6(S1bK+6d{Su9+FmgcSw2QwLc-7oe;VojSEJRS7*%)%ID_fdpOqhGFC{)>RoV zv-YcQu1F2yl+FyT=fs3W>`L7STsJFBtu971S>RR#W(4%XDFupaX`c|Q<@rKJ*#y~C zCi4;|AFb-#?jeAH*X@ov&v6F1m)GT8~Wx*@BNAd){N-nBaQtd4vfWZXcL)_{FOI_+_G$bDvdK-a#P!Licd~0dEWQ5*ZxXaF=wbbRhj3lN168ae* z;=D#OA2|6Y0r zMO!AgQ)+@+AocefaZo)5f}hZFi+2pC+%tigy!EfYNTpwI*`(%COnp;y?Hgl33@oc+ z`|+*+OpK7!R{0$0PIbmGW10~@+*&Dys#(|^)a>Am&I@t6j8j(Mmb;H8&}v6+BQ4Hs zlm?geZ2c@}8n|vew(AXvP@TZkN!$UNYLH4UfzP`RpgW34 z$EdTbp&3Hyal3{2Ju<|1!v1_ICo$T;?_yI&ioj$mTNpip> zZ~_#B6jhq2?0nkmvL}?uNuKL?kN4FL%@j7nhr>+U>9g|RoMfYArzeTvv;m~-e zARfhUD8(6=Vv9}_jZF7Cc<^wSsid`RH_CcfkpYZX> z`UsA>jf4;$u=G@`?Q&!nN+$5CN;tQ#%eAgXQN-z68T1l&%g!9a0Qn2pn?+^uhkg=a z9#ML06^^HWQz^=_W8gM7kEJTfOdvzqlYwXUmVR$f2`FrO8G`XlVFqgokY+5zql&W% ziKTl<=I$Su`}JJm3FJm=(%6W5EgyL*cH|RDP^GV8hUdAimJSGIVN%%_oO zSAKOxnX3mwHQVWq{5WE5u0k)8J%=RGksz*$(jzJJ0v3bEUzwVmbM@GjtZ97TFaKG#%Am{~{bz<2Qdd!ZM|p6&#soEGKd%0JR}giO;CDO@>_ zeBdWKrv;}^=vx%1c5CvFB$&-<(SE7A854#&SkdAV0Bks0k`nU2(Dq$ouS~&Ov*KK98~l z56jy+kKfxmD~wY4G{bKb8Of}=CP*y8C%n~>TgD}6!hoS9)a^~m`Cgdp^E`Y@-iMH) z^)q#LMaLyYZr^5!&O!u;E_aEVDTvR*YvZHs)diO@y(`}D!=}!yarS&j73@1gt^MDB ze|$)!x`rx^3$t43q3Bn?n+ppecFu=BD?Q@%&Z?!{`7q}}2adp3ND?eafA*~6>$*_8 zOFqli7xs(4@n-8g3i~NBN$qS~V4VvLVf3gJg7ugMY0MXVCVeLFOu_NQ+Z-WNA{`3n z-ZhsjuJpezZN?{^=FqPm%=0xz%zM#0YK^*%-&*D(Ob{}LGnr#r=YIv!;b7!p z3RNL$p!9sh6b`08w00afQ6mY_-dZ0(b%jixE^UfC&taoB1*)8+f|>ZV4*7huG73y` z4!KV*s}?t^#>^X6>sI?%#ijlVJ{fa{uF^>A+Pty}*J>UM#+q}{XQdtmO!A-Y4DY+P4~m%gu*-!tuCi**gysV z;`WREbft`f2a|03kSKoi@&bP6vyf8@K2zy~8e)`9r9e}tAQMGQqpZ{|qWs%H42)&@ zn)ZY>C8FzrEr-dIj+@BwLt_%NV4hom$&U^v1==5r(0?>6WZp_;(7d!vv%B}^V?Nc( z%PKqdoUw0sm|C5TSyqaeQE5% zIOipBbAI9i#+G5q*xcF~p*i%D{qRiazjTVK?%ApzI) zp~f3ER!8n0zA2HeNCneM8JC8MFH+x5M871Frjqlk0$47pNPaNDQ6`vY;of8GbQo5r-$(L!$Tz`K0vJ=zcC*}G<`-vo7c9W7<|UkfvsQkh z%8)85Bik30uH`IQaTk@g$IiH+cJl`nbYchnFPQRe`UOD@1)H2Y=S zbGw;$de*lD;kpq`GkLw7Xvb$Aj&uDhPP$BGy+}{SKwn_h5%X9&8E@@*AmY5C9G!OZ zi7i2-91x<=8X!N6`?m&H&J`-Vk=eN|A=Edjn(sTaYv|QyHsV1~u^sK1cMdndR@b{^ zQK8(W>nqSU6aduDwUw_l8l-~FNS}W>wq|zKb7(? z(cp9pmpHDtV>FFeREeB7S@2XRjjF0xq@E)&P*s*xS zn-lPTOrzFjmNt&2oJ_0#xq&Y6v^dKfyE;l04af_OLo9iREf z^IxV;aN5AhnFhl`DrNA)^C9)FR4!o8T2V>tL~9n{fKMA1MipJS-)m!&VE30{4x_NSs+qGG{oYdyY zf4{hNOEUAgE85x!Gm!0$=j-E_Us@6@j0?{AKD&6Z*03ifb{$tBN*C`Vig1)AtAtNz zFe4T($$GyCOaKdhRg7y@97qteH254XnTMTb*FgcO!}gGWtHU1V3fv}4)Tjx5d@hG3 zdU9=8S3KnK3kPCcs_v2yp%}oFb6ffU?GyyEpKm+beeza>KCX6q4~fEIR1^%lAzgEjn|u zC5*7i=L@5WG$7nV<_iTH-~t{FfGbH<6I{dvQbbNI{!S4gMy1^vCXGO}a-Z|;K0LVL zG8uU*AGclnl3IRn5F>^g z!Syd(O=8_n^wwmE`ciknBCP5)u!z{nFsm8nQ7Oh_K^Mk@s&{hoqDayt_L#I zCM}N~c^a`8vVCx3dB6~`D}a!kG6V>+EPS2_z*cwHokCptmU||Ze;EP$e075}@k9v0 z)6#JZsN^#Zc9S@U3^`6ZBrHHfQ1Lj`iJRNHVRLdyfK00e>}<`=1`*467Tw;IT1nkZr`!D!2$ z4}7i<*}VqFX#}dBSNka?-{m<@=&(`(Th^7QVccUsgzdY)eRU_M6Ip^MkBQ!Nb5(tN znLBcLID!s9F*&6R-n}N34(t3alc=j9+q3&SxKjsK;fRa)xr4OoOXB=;dhQr}?sl^m z$I-e>J~>?%l2WX?UEWh#lD|?vVR`1>T_jO(_UpTyYpF2z;*wc7DHJ$l)fGWH5w z><=tD6rFLpQ27T2Ps0C`n!h_-gt@#tAWTjk zGkX7fCkcAB1Fas;9Jr=3Zn#gi5Ku5wpT00@+Rz1TkodekjrT>dxRqjt1xRf_PXH?P zSjpqyD3CAXmCP+mgIXM#9ws%b_o3gYL=gSfhoLMnTGh3ejDcYcNs&&T7hAiRE4<;r z$%|DH>fEyOu&!-O*h{*Ex1eyh;_F+hKT*78NyW**ql%p0Am^jOJhgs80qi-^#dieh z5nq3AF^K2e@67KGf8`>4<;(BjHRrW^byQ`K4UQgXhnCdrE{~O4NOxHAC7Z`M&qdxB z42tS2>T1qr7E8`=SpxwW;R8VS{a)$Qm1?NB!v-LgVvepuGB3ace7^j^9-0uvYamr^ z|KpB)kMtzLErrBuv>A1&Ga4U|X;E8-%Wxrmk>+@Fg)Vos=wKmp$`GgClaV<~ge#_Q zdyR!?NXD7BrDuE70@yh5^lF%x6RBk|^zso}w)4hY(qhjw#=>NCYX;U7`3GTLDGOOr zEH4gjSLQVvz`rLWLEk03-{~V*W?m+EV~KnN&`GBsvi@vv$4L>vhDr|Z_dl;1BgUMP zJU>$+J3lfk&%=Z-fM!2Ej>HO~)jYk272A3|4CT$(ZZqX2|T{DAD z$rq`pXxe>A1AaqPXN*P(9;lfriP-Icw=k+31t^>HBOn`fk+Aqo8#dKhOs zq;ZU@mrk-n^PNtgZ9XRmYOfU3%^NZc%-D)PI^-|9;yL{{(rD!C&<{o4;IS(wf!1I= zj>Yw#tf2iRYw0CwS!ZUI6T~_Yi?Im6zA@U`@%IbRxO#a5ZKPrPWb|yu?TgW8CmP?a zy4W!cnu>o(W>|=CFAemH`ob^w06&Ze^s@q5L&DEF!{%*Gbi<5IVcSfwA#qIw=zx7@k27vO;b^)UTMqy>Rm4ri8opev z6s77d7s*tR%OtSl2N9bGZZ}~7o(RB|fC_9ZY5Z8Htl7`Oe`!DjhEcsG$#`fmrxgLW z^pjE;Cw}vCR}PF?Sml7O2}siJT!%V!Pp|R~<=jLkkg@3e;p>%guS>lL(bykarq0Jq z*Bc!TLCYLPalZ{N>~XHo`!|74+oE9@$gC4AS6Wn@1Xpv(SX0jwV4s#x+V<)}5|CKyBa>a%dV>08CNgCvf2v>d zww|eceFMMNpOK)QtHy?1?~x|cc#@Ik{|bp^VX>$(=R|&5h}irsz9%o4Pt0u+=1nS{ z=@F9x?-9;dEgAZVBNjw#7?y4V!U6qu3j?Ojh$%Rbf%(o=;W8!6^#Ju5weC8b^dj74 zI*ArtBe;#c-yr959_FVDmC0Tncoir>2?mBK1H6ng;U_l0Iozf$kdj;(7P z@syTKLz?hm?PjLO@VJJN@Qwe@_okh;W;_G} z&hW@rr&Jy81WLC&Oa%@+0Wzb{g+=3-Iw4Ax7iB_}e(2!|%y3KP`A$d#VJ6(kcR&c? zn}%5|@uJ&_SNf6g{Wsy+E_e@lt^mmh=Nob|&-V1H#GcCeCvkLph8Y5*!su*2?4{F> z=%kfxPI?aA*+^JBPa0f;y!ot?ocXad#;Zq~eBS$;>*xNk<%WA8Za3n9bI$R&$1$rd z48M2VDKaWYHg8p(3&n;48wtZ-GYu>~h(mX7iT2}c|6fvz;b28b3-=oWK4n$k3*4A) zjZF@Le|xIfkqg+G^Nhkq|G@c)p;M#tS6j{-!?3d6L~Vcw#^2ZnD7V-k)0WncP}jZJ z4`$Xn`PBp=APysY?hki6uduLi^pxdg^=5#DQxzmb{lr$3fVxFUrKme?>|)`DSp_Zi z^}7I`Siz9v5sug(dVh^^8bH9`ckh^6F*5K`>K>!XwCpZ0b&M1OzCM}+pE~>HN9;~! zFfrcZTexrjT0Xkx;=nlPa_+>DyY%M(j_1q>j<$A3)2b3%W`Gz!8BCbaBZUMuMsIr9 zBd5VH`^Eq9Xh*5wcVfEXwEc6I6@S2CTelSSZ=W7 z;azAM0B$Y4V%6jX0T6O*VcH#OfoSPI6WhQdhxn~D$ z@;S|B(%)DwLT#%P+^qq49m}o87NG`6KMlX%<+?U>139Cx@1lgh_z^dFrr8lqz-=D^ zGFh5(YkC?yOtclTt}-)4Oevtk{}BmHT2-cl$lyRo%I1G;nSs)O)K}0b0saZ| w1i3E(ZEtSh-!_TcGUwI=^PkHcTj&{d?OKYPzRhb83;0u3(2%cu`TG5T0uXQyApigX literal 0 HcmV?d00001 diff --git a/packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-row-drag-in-progress-light-webkit-linux.png b/packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-row-drag-in-progress-light-webkit-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..e9b96ee7026e65b759ceded1edea2f8b62496753 GIT binary patch literal 36164 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 literal 0 HcmV?d00001 diff --git a/packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-row-preview-wrapped-text-chromium-linux.png b/packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-row-preview-wrapped-text-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..f1b7b2bb75a87d17c3019f61f87350522db2687c GIT binary patch literal 22624 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 literal 0 HcmV?d00001 diff --git a/packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-row-preview-wrapped-text-firefox-linux.png b/packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-row-preview-wrapped-text-firefox-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..34e1ba29110bdc5fdb4773db9bffd1016a50e0ec GIT binary patch literal 37932 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 KDw8k{`2PT{=3B%7 literal 0 HcmV?d00001 diff --git a/packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-row-preview-wrapped-text-webkit-linux.png b/packages/core/src/extensions/TableHandles/__screenshots__/dragPreview.browser.test.ts/table-row-preview-wrapped-text-webkit-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..5dbda6b5dbde0f5467077a62f1f67c2abb43bdde GIT binary patch literal 28615 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 literal 0 HcmV?d00001 diff --git a/packages/core/src/extensions/TableHandles/dragDecorations.test.ts b/packages/core/src/extensions/TableHandles/dragDecorations.test.ts new file mode 100644 index 0000000000..b786a635f8 --- /dev/null +++ b/packages/core/src/extensions/TableHandles/dragDecorations.test.ts @@ -0,0 +1,352 @@ +import { Decoration } from "prosemirror-view"; +import { describe, expect, it } from "vite-plus/test"; + +import { getNodeById } from "../../api/nodeUtil.js"; +import type { PartialBlock } from "../../blocks/defaultBlocks.js"; +import { BlockNoteEditor } from "../../editor/BlockNoteEditor.js"; +import { TableDragState, getTableDragDecorations } from "./dragDecorations.js"; + +/** + * | 1-1 | 1-2 | 1-3 | + * | 2-1 | 2-2 | 2-3 | + * | 3-1 | 3-2 | 3-3 | + */ +const simpleTable: PartialBlock[] = [ + { + id: "table-0", + type: "table", + content: { + type: "tableContent", + rows: [ + { cells: ["1-1", "1-2", "1-3"] }, + { cells: ["2-1", "2-2", "2-3"] }, + { cells: ["3-1", "3-2", "3-3"] }, + ], + }, + }, +]; + +const cell = (text: string, colspan = 1, rowspan = 1) => + ({ + type: "tableCell", + props: { colspan, rowspan }, + content: text, + }) as any; + +/** + * | 1-1 | 1-2 | + * | 2-1 | 2-2 | 2-3 | + * "1-2" spans two columns. + */ +const colspanTable: PartialBlock[] = [ + { + id: "table-0", + type: "table", + content: { + type: "tableContent", + rows: [ + { cells: [cell("1-1"), cell("1-2", 2)] }, + { cells: [cell("2-1"), cell("2-2"), cell("2-3")] }, + ], + }, + }, +]; + +/** + * | 1-1 | 1-2 | 1-3 | + * | 2-1 | | 2-3 | + * "1-2" spans two rows. + */ +const rowspanTable: PartialBlock[] = [ + { + id: "table-0", + type: "table", + content: { + type: "tableContent", + rows: [ + { cells: [cell("1-1"), cell("1-2", 1, 2), cell("1-3")] }, + { cells: [cell("2-1"), cell("2-3")] }, + ], + }, + }, +]; + +function setup(initialContent: PartialBlock[]) { + const editor = BlockNoteEditor.create({ initialContent }); + const doc = editor.prosemirrorState.doc; + const block = editor.getBlock("table-0")! as any; + const tablePos = getNodeById("table-0", doc)!.posBeforeNode + 1; + + const decorationsFor = (dragState: TableDragState) => + getTableDragDecorations(doc.resolve(tablePos + 1), block, dragState); + + return { editor, doc, block, tablePos, decorationsFor }; +} + +// Node decorations span the cell they highlight; widget decorations are a +// single point. +const sourceDecorations = (decorations: Decoration[]) => + decorations.filter((decoration) => decoration.from !== decoration.to); +const dropCursors = (decorations: Decoration[]) => + decorations.filter((decoration) => decoration.from === decoration.to); + +// `Decoration.type` isn't part of prosemirror-view's public typings. +const typeOf = (decoration: Decoration) => (decoration as any).type; + +const classesOf = (decorations: Decoration[]) => + decorations.map((decoration) => typeOf(decoration).attrs?.class); + +describe("getTableDragDecorations", () => { + describe("source highlight", () => { + it("highlights every cell of the dragged row", () => { + const { decorationsFor, doc } = setup(simpleTable); + + const source = sourceDecorations( + decorationsFor({ + draggedCellOrientation: "row", + originalIndex: 1, + newIndex: 2, + }), + ); + + expect(classesOf(source)).toEqual([ + "bn-table-drag-source-row", + "bn-table-drag-source-row", + "bn-table-drag-source-row", + ]); + expect(source.map((d) => doc.nodeAt(d.from)?.textContent)).toEqual([ + "2-1", + "2-2", + "2-3", + ]); + }); + + it("highlights every cell of the dragged column", () => { + const { decorationsFor, doc } = setup(simpleTable); + + const source = sourceDecorations( + decorationsFor({ + draggedCellOrientation: "col", + originalIndex: 1, + newIndex: 0, + }), + ); + + expect(classesOf(source)).toEqual([ + "bn-table-drag-source-col", + "bn-table-drag-source-col", + "bn-table-drag-source-col", + ]); + expect(source.map((d) => doc.nodeAt(d.from)?.textContent)).toEqual([ + "1-2", + "2-2", + "3-2", + ]); + }); + + // The drag image is set on `dragstart`, but the first `dragover` (which is + // what produces a target index) doesn't arrive until the cursor moves. + it("is shown before the drag has been over the table", () => { + const { decorationsFor } = setup(simpleTable); + + const decorations = decorationsFor({ + draggedCellOrientation: "row", + originalIndex: 0, + newIndex: undefined, + }); + + expect(sourceDecorations(decorations)).toHaveLength(3); + expect(dropCursors(decorations)).toHaveLength(0); + }); + + it("is shown when hovering the row's own position", () => { + const { decorationsFor } = setup(simpleTable); + + const decorations = decorationsFor({ + draggedCellOrientation: "row", + originalIndex: 1, + newIndex: 1, + }); + + expect(sourceDecorations(decorations)).toHaveLength(3); + expect(dropCursors(decorations)).toHaveLength(0); + }); + }); + + describe("drop cursor", () => { + it("is rendered across the target row", () => { + const { decorationsFor } = setup(simpleTable); + + expect( + dropCursors( + decorationsFor({ + draggedCellOrientation: "row", + originalIndex: 0, + newIndex: 2, + }), + ), + ).toHaveLength(3); + }); + + it("is rendered down the target column", () => { + const { decorationsFor } = setup(simpleTable); + + expect( + dropCursors( + decorationsFor({ + draggedCellOrientation: "col", + originalIndex: 2, + newIndex: 0, + }), + ), + ).toHaveLength(3); + }); + + it.each([ + { + orientation: "row", + from: 0, + to: 1, + edge: "bottom", + offset: "-2px", + size: "height", + }, + { + orientation: "row", + from: 1, + to: 0, + edge: "top", + offset: "-3px", + size: "height", + }, + { + orientation: "col", + from: 0, + to: 1, + edge: "right", + offset: "-2px", + size: "width", + }, + { + orientation: "col", + from: 1, + to: 0, + edge: "left", + offset: "-3px", + size: "width", + }, + ] as const)( + "centers a $orientation cursor on the $edge border", + ({ orientation, from, to, edge, offset, size }) => { + const { decorationsFor } = setup(simpleTable); + + const [widget] = dropCursors( + decorationsFor({ + draggedCellOrientation: orientation, + originalIndex: from, + newIndex: to, + }), + ); + const element = typeOf(widget).toDOM( + null, + () => widget.from, + ) as HTMLElement; + + expect(element.className).toBe("bn-table-drop-cursor"); + expect(element.style[size]).toBe("4px"); + expect(element.style[edge]).toBe(offset); + }, + ); + }); + + describe("merged cells", () => { + it("highlights the cell spanning the dragged column", () => { + const { decorationsFor, doc } = setup(colspanTable); + + const source = sourceDecorations( + decorationsFor({ + draggedCellOrientation: "col", + originalIndex: 1, + newIndex: undefined, + }), + ); + + // The spanning cell is part of both column 1 and column 2, so dragging + // column 1 highlights it alongside the regular cell below. + expect(source.map((d) => doc.nodeAt(d.from)?.textContent)).toEqual([ + "1-2", + "2-2", + ]); + }); + + it("highlights the cell spanning the dragged row", () => { + const { decorationsFor, doc } = setup(rowspanTable); + + const source = sourceDecorations( + decorationsFor({ + draggedCellOrientation: "row", + originalIndex: 1, + newIndex: undefined, + }), + ); + + expect(source.map((d) => doc.nodeAt(d.from)?.textContent)).toEqual([ + "2-1", + "1-2", + "2-3", + ]); + }); + + it("omits the drop cursor when the column can't be dropped there", () => { + const { decorationsFor } = setup(colspanTable); + + const decorations = decorationsFor({ + draggedCellOrientation: "col", + originalIndex: 0, + newIndex: 1, + }); + + // Dropping column 0 into the middle of the column-spanning cell would + // tear it in half, so the move is blocked and only the source highlight + // is shown. + expect(sourceDecorations(decorations).length).toBeGreaterThan(0); + expect(dropCursors(decorations)).toHaveLength(0); + }); + }); + + it.each(["row", "col"] as const)( + "skips deleted source and target cells during a %s drag", + (orientation) => { + const { editor, block } = setup(simpleTable); + // Decorations run before the view refreshes its cached block. + editor.updateBlock("table-0", { + type: "table", + content: { + type: "tableContent", + rows: [{ cells: ["remaining"] }], + }, + }); + const doc = editor.prosemirrorState.doc; + const tablePos = getNodeById("table-0", doc)!.posBeforeNode + 1; + for (const [originalIndex, newIndex] of [ + [0, 2], + [2, 0], + ]) { + const decorations = getTableDragDecorations( + doc.resolve(tablePos + 1), + block, + { + draggedCellOrientation: orientation, + originalIndex, + newIndex, + }, + ); + expect(decorations).toHaveLength(1); + expect(sourceDecorations(decorations)).toHaveLength( + originalIndex === 0 ? 1 : 0, + ); + } + editor._tiptapEditor.destroy(); + }, + ); +}); diff --git a/packages/core/src/extensions/TableHandles/dragDecorations.ts b/packages/core/src/extensions/TableHandles/dragDecorations.ts new file mode 100644 index 0000000000..989314eb4d --- /dev/null +++ b/packages/core/src/extensions/TableHandles/dragDecorations.ts @@ -0,0 +1,167 @@ +import type { Node, ResolvedPos } from "prosemirror-model"; +import { Decoration } from "prosemirror-view"; + +import { + canColumnBeDraggedInto, + canRowBeDraggedInto, + getCellsAtColumnHandle, + getCellsAtRowHandle, + getTableCellOccupancyGrid, +} from "../../api/blockManipulation/tables/tables.js"; +import { DefaultBlockSchema } from "../../blocks/defaultBlocks.js"; +import { BlockFromConfigNoChildren } from "../../schema/index.js"; + +/** Marks each cell of the row being dragged. */ +export const DRAG_SOURCE_ROW_CLASS = "bn-table-drag-source-row"; +/** Marks each cell of the column being dragged. */ +export const DRAG_SOURCE_COL_CLASS = "bn-table-drag-source-col"; +/** Marks the edge the dragged row/column would be dropped at. */ +export const DROP_CURSOR_CLASS = "bn-table-drop-cursor"; + +const DROP_CURSOR_THICKNESS = 4; +// Mirrors the 1px cell border in editor.css. +const CELL_BORDER_WIDTH = 1; +const cursorAxes = { + row: { + before: "top", + after: "bottom", + crossStart: "left", + crossEnd: "right", + size: "height", + }, + col: { + before: "left", + after: "right", + crossStart: "top", + crossEnd: "bottom", + size: "width", + }, +} as const; + +export type TableDragState = { + draggedCellOrientation: "row" | "col"; + /** + * The index of the row/column being dragged. + */ + originalIndex: number; + /** + * The index the row/column would be dropped into, or `undefined` if the drag + * hasn't been over the table yet. + */ + newIndex: number | undefined; +}; + +/** + * Builds the decorations shown while dragging a table row or column: + * + * - `bn-table-drag-source-row` / `bn-table-drag-source-col` on each cell of the + * row/column being dragged, so it's clear what's moving. Shown for the whole + * drag, including before the first `dragover` and while hovering a position + * the row/column can't be dropped into. + * - `bn-table-drop-cursor` widgets marking the edge the row/column would be + * dropped at. Only shown once the drag is over a valid, different position. + * + * `tableResolvedPos` points inside the table in the current document. + */ +export function getTableDragDecorations( + tableResolvedPos: ResolvedPos, + block: BlockFromConfigNoChildren, + { draggedCellOrientation, originalIndex, newIndex }: TableDragState, +): Decoration[] { + // Resolve the document path only once. Resolving every cell repeats the + // search through blocks before this table, while posAtIndex also scans all + // preceding rows/cells. A table-local pass gives constant-time cell lookups. + // These are physical child indices, not TableMap's logical (span-expanded) + // coordinates, matching the existing row/column handle helpers. + const cellPositions: { node: Node; pos: number }[][] = []; + tableResolvedPos.node().forEach((row, rowOffset) => { + const cells: { node: Node; pos: number }[] = []; + row.forEach((node, cellOffset) => { + cells.push({ + node, + pos: tableResolvedPos.start() + rowOffset + 1 + cellOffset, + }); + }); + cellPositions.push(cells); + }); + + const decorations: Decoration[] = []; + // Both helpers accept a prebuilt grid. Reuse it for the source and target + // rather than laying out the entire (possibly merged) table twice. + const occupancyGrid = getTableCellOccupancyGrid(block); + const getCellsAtHandle = + draggedCellOrientation === "row" + ? getCellsAtRowHandle + : getCellsAtColumnHandle; + const canBeDraggedInto = + draggedCellOrientation === "row" + ? canRowBeDraggedInto + : canColumnBeDraggedInto; + + const draggedCells = getCellsAtHandle(block, originalIndex, occupancyGrid); + draggedCells.forEach((cell) => { + const cellResolvedPos = cellPositions[cell.row]?.[cell.col]; + if (!cellResolvedPos) { + return; + } + const cellStart = cellResolvedPos.pos; + + decorations.push( + Decoration.node(cellStart, cellStart + cellResolvedPos.node.nodeSize, { + class: + draggedCellOrientation === "row" + ? DRAG_SOURCE_ROW_CLASS + : DRAG_SOURCE_COL_CLASS, + }), + ); + }); + + // Only the source highlight is shown until hovering a different, valid target. + if (newIndex === undefined || newIndex === originalIndex) { + return decorations; + } + + // Reuse the target cells for validation and decorations, as the occupancy + // lookup can be expensive for large tables. + const cellsAtNewIndex = getCellsAtHandle(block, newIndex, occupancyGrid); + if (!canBeDraggedInto(block, originalIndex, newIndex, cellsAtNewIndex)) { + return decorations; + } + + cellsAtNewIndex.forEach((cell) => { + const cellResolvedPos = cellPositions[cell.row]?.[cell.col]; + if (!cellResolvedPos) { + return; + } + + // Creates a decoration at the start or end of each cell, depending on + // whether the new index is before or after the original index. + const decorationPos = + cellResolvedPos.pos + + 1 + + (newIndex > originalIndex ? cellResolvedPos.node.nodeSize - 2 : 0); + + decorations.push( + // The widget is a small bar which spans the width (for a row) or height + // (for a column) of the cell. + Decoration.widget(decorationPos, () => { + const widget = document.createElement("div"); + widget.className = DROP_CURSOR_CLASS; + + const axis = cursorAxes[draggedCellOrientation]; + const after = newIndex > originalIndex; + widget.style[axis.crossStart] = "0"; + widget.style[axis.crossEnd] = "0"; + widget.style[axis.size] = `${DROP_CURSOR_THICKNESS}px`; + // Center the bar on the shared border; the leading edge includes the + // cell's own border, while the trailing edge is already outside it. + widget.style[after ? axis.after : axis.before] = + `${-DROP_CURSOR_THICKNESS / 2 - (after ? 0 : CELL_BORDER_WIDTH)}px`; + + return widget; + }), + ); + }); + + return decorations; +} diff --git a/packages/core/src/extensions/TableHandles/dragPreview.browser.test.ts b/packages/core/src/extensions/TableHandles/dragPreview.browser.test.ts new file mode 100644 index 0000000000..03125ddae3 --- /dev/null +++ b/packages/core/src/extensions/TableHandles/dragPreview.browser.test.ts @@ -0,0 +1,249 @@ +import { afterEach, expect, test } from "vite-plus/test"; + +import "../../style.css"; +import "../../fonts/inter.css"; +import "../../../../react/src/editor/styles.css"; +import type { PartialBlock } from "../../blocks/defaultBlocks.js"; +import { BlockNoteEditor } from "../../editor/BlockNoteEditor.js"; +import { TableHandlesExtension } from "./TableHandles.js"; + +const fixtures: { editor: BlockNoteEditor; container: HTMLElement }[] = []; + +// Bridge the browser matcher to the repository's bundled vitest typings. +const expectElement = ( + expect as unknown as { + element( + this: void, + element: Element, + ): { + toMatchScreenshot(name: string): Promise; + }; + } +).element; + +afterEach(() => { + for (const { editor, container } of fixtures.splice(0)) { + editor._tiptapEditor.destroy(); + container.remove(); + } +}); + +function createEditor() { + const container = document.createElement("div"); + container.className = "bn-root bn-container"; + document.body.appendChild(container); + const initialContent: PartialBlock[] = [ + { + id: "table", + type: "table", + props: { textColor: "red" }, + content: { + type: "tableContent", + columnWidths: [140, 160, 140], + rows: [ + { + cells: [ + { + type: "tableCell", + props: { backgroundColor: "blue" }, + content: "first line\nsecond line", + }, + { type: "tableCell", content: "https://example.com/".repeat(8) }, + { type: "tableCell", content: "last cell" }, + ], + }, + { cells: ["another\nmultiline cell", "middle", "right"] }, + { cells: ["bottom left", "bottom middle", "bottom right"] }, + ], + }, + }, + ]; + const editor = BlockNoteEditor.create({ initialContent }); + editor.mount(container); + fixtures.push({ editor, container }); + return editor; +} + +function startDrag(editor: BlockNoteEditor, orientation: "row" | "col") { + editor.prosemirrorView.dom + .querySelector("td, th")! + .dispatchEvent(new MouseEvent("mousemove", { bubbles: true })); + const handles = editor.getExtension(TableHandlesExtension)!; + const transfer = new DataTransfer(); + let preview: Element | undefined; + transfer.setDragImage = (image) => { + preview = image; + }; + const event = { dataTransfer: transfer, clientX: 0, clientY: 0 }; + if (orientation === "row") { + handles.rowDragStart(event); + } else { + handles.colDragStart(event); + } + if (!(preview instanceof HTMLElement)) { + throw new Error("Expected a table drag image"); + } + return { handles, transfer, preview }; +} + +function dragOver(cell: Element, dataTransfer: DataTransfer) { + const box = cell.getBoundingClientRect(); + cell.dispatchEvent( + new DragEvent("dragover", { + bubbles: true, + cancelable: true, + dataTransfer, + clientX: box.x + box.width / 2, + clientY: box.y + box.height / 2, + }), + ); +} + +for (const orientation of ["row", "col"] as const) { + test(`previews the ${orientation}, updates its drop cursor and cleans up`, async () => { + const editor = createEditor(); + await document.fonts.ready; + const root = editor.prosemirrorView.dom; + const rows = root.querySelectorAll("tr"); + const originals = + orientation === "row" + ? Array.from(rows[0].children) + : Array.from(rows, (row) => row.children[0]); + const source = originals[0]; + const background = getComputedStyle(source).backgroundColor; + source.classList.add("selectedCell"); + const handle = document.createElement("div"); + handle.className = "column-resize-handle"; + source.appendChild(handle); + const { handles, transfer, preview } = startDrag(editor, orientation); + const clones = Array.from(preview.querySelectorAll("td")); + expect(clones.map((cell) => cell.textContent)).toEqual( + originals.map((cell) => cell.textContent), + ); + expect(preview.parentElement).toBe(root.parentElement); + expect( + preview.querySelector( + ".selectedCell, .column-resize-handle, [contenteditable]", + ), + ).toBeNull(); + for (const [index, clone] of clones.entries()) { + const original = originals[index]; + expect(clone.getBoundingClientRect().width).toBeCloseTo( + original.getBoundingClientRect().width, + 0, + ); + expect(clone.scrollWidth).toBeLessThanOrEqual(clone.clientWidth); + expect(getComputedStyle(clone).backgroundColor).toBe( + getComputedStyle(original).backgroundColor, + ); + for (const property of ["whiteSpace", "overflowWrap", "color"] as const) { + expect(getComputedStyle(clone.querySelector("p")!)[property]).toBe( + getComputedStyle(original.querySelector("p")!)[property], + ); + } + } + const sourceSelector = `.bn-table-drag-source-${orientation}`; + expect(root.querySelectorAll(sourceSelector)).toHaveLength(3); + expect(preview.querySelector(sourceSelector)).toBeNull(); + expect(getComputedStyle(source).backgroundColor).toBe(background); + expect(getComputedStyle(source).backgroundImage).toContain( + "linear-gradient", + ); + dragOver( + orientation === "row" ? rows[2].children[0] : rows[0].children[2], + transfer, + ); + expect(root.querySelectorAll(".bn-table-drop-cursor")).toHaveLength(3); + dragOver(source, transfer); + expect(root.querySelector(".bn-table-drop-cursor")).toBeNull(); + expect(root.querySelectorAll(sourceSelector)).toHaveLength(3); + + // Photograph the native capture element on-screen, without the live table + // behind its transparent cells. Cleanup belongs to afterEach if this fails. + preview.style.cssText += ";position:fixed;top:20px;left:20px;z-index:9999"; + root.style.visibility = "hidden"; + await expectElement(preview).toMatchScreenshot( + `table-${orientation}-preview-wrapped-text`, + ); + handles.dragEnd(); + expect(preview.isConnected).toBe(false); + expect(root.querySelector(sourceSelector)).toBeNull(); + expect(getComputedStyle(root.querySelector("td")!).backgroundImage).toBe( + "none", + ); + }); +} + +test("replaces previews per editor and removes them when the table is deleted", () => { + const first = createEditor(); + const second = createEditor(); + const old = startDrag(first, "row").preview; + const replacement = startDrag(first, "row"); + expect(old.isConnected).toBe(false); + const other = startDrag(second, "col"); + other.handles.dragEnd(); + expect(other.preview.isConnected).toBe(false); + expect(replacement.preview.isConnected).toBe(true); + first.replaceBlocks( + ["table"], + [{ type: "paragraph", content: "replacement" }], + ); + expect(replacement.preview.isConnected).toBe(false); + expect(() => replacement.handles.dragEnd()).not.toThrow(); +}); + +test("keeps a merged header's dimensions without its spans", () => { + const editor = createEditor(); + editor.updateBlock("table", { + type: "table", + content: { + type: "tableContent", + headerRows: 1, + rows: [ + { + cells: [ + { + type: "tableCell", + props: { colspan: 2 }, + content: ["Merged header"], + }, + { type: "tableCell", content: ["Other header"] }, + ], + }, + { cells: ["one", "two", "three"] }, + ], + }, + }); + const original = editor.prosemirrorView.dom.querySelector("th")!; + const { preview } = startDrag(editor, "row"); + const clone = preview.querySelector("th")!; + expect(clone.textContent).toBe("Merged header"); + expect(clone.getBoundingClientRect().width).toBeCloseTo( + original.getBoundingClientRect().width, + 0, + ); + expect(clone.getBoundingClientRect().height).toBeCloseTo( + original.getBoundingClientRect().height, + 0, + ); + expect(clone.hasAttribute("colspan")).toBe(false); +}); + +test("renders the source tint and drop cursor in both themes", async () => { + const editor = createEditor(); + const root = editor.prosemirrorView.dom; + const themeRoot = root.closest(".bn-root")!; + await document.fonts.ready; + const { handles, transfer } = startDrag(editor, "row"); + dragOver(root.querySelectorAll("tr")[2].children[0], transfer); + for (const theme of ["light", "dark"] as const) { + themeRoot.dataset.colorScheme = theme; + expect(getComputedStyle(root).backgroundColor).toBe( + theme === "dark" ? "rgb(31, 31, 31)" : "rgb(255, 255, 255)", + ); + await expectElement(root.querySelector("table")!).toMatchScreenshot( + `table-row-drag-in-progress-${theme}`, + ); + } + handles.dragEnd(); +}); diff --git a/packages/core/src/extensions/TableHandles/dragPreview.ts b/packages/core/src/extensions/TableHandles/dragPreview.ts new file mode 100644 index 0000000000..e3be256d6d --- /dev/null +++ b/packages/core/src/extensions/TableHandles/dragPreview.ts @@ -0,0 +1,199 @@ +import type { EditorView } from "prosemirror-view"; +import { RelativeCellIndices } from "../../api/blockManipulation/tables/tables.js"; +import type { BlockNoteEditor } from "../../editor/BlockNoteEditor.js"; +import { + DRAG_SOURCE_COL_CLASS, + DRAG_SOURCE_ROW_CLASS, + DROP_CURSOR_CLASS, +} from "./dragDecorations.js"; + +const previews = new WeakMap(); + +export function removeDragPreview(view: EditorView) { + previews.get(view)?.remove(); + previews.delete(view); +} + +export function attachDragPreview(view: EditorView, preview: Element) { + removeDragPreview(view); + const parent = view.dom.parentElement; + const root = view.root; + const previewParent = parent?.isConnected + ? parent + : root instanceof ShadowRoot + ? root + : root.body; + previewParent.appendChild(preview); + previews.set(view, preview); +} + +// Clones a single table cell for use in the drag preview. The clone is pulled +// out of the real table, so it loses everything the table's own layout was +// giving it. +function cloneCellWithSize(cell: Element): HTMLElement { + // Read the size before cloning: column widths live on the table's + // `` and row heights are implied by the tallest cell in the row, + // neither of which survives into a table built from a handful of cells. + const { width, height } = cell.getBoundingClientRect(); + + const clone = cell.cloneNode(true) as HTMLElement; + clone.style.width = `${width}px`; + clone.style.height = `${height}px`; + clone.style.boxSizing = "border-box"; + + // The snapshot is taken after the drag decorations have been applied, so the + // cell being cloned is already marked up as the drag source (and may contain + // a drop cursor widget). The preview should look like the row/column itself, + // not like its drag state. + clone.classList.remove( + DRAG_SOURCE_ROW_CLASS, + DRAG_SOURCE_COL_CLASS, + "ProseMirror-selectednode", + "selectedCell", + ); + clone + .querySelectorAll(".ProseMirror-selectednode, .selectedCell") + .forEach((node) => { + node.classList.remove("ProseMirror-selectednode", "selectedCell"); + }); + clone + // Editing widgets and embeds are not part of the cell's content snapshot. + // As with whole-block previews, an embed can prevent native drag capture. + .querySelectorAll( + `.${DROP_CURSOR_CLASS}, .column-resize-handle, .ProseMirror-gapcursor, iframe, embed, object`, + ) + .forEach((widget) => widget.remove()); + + // The preview only holds the dragged row (or column), so a span pointing at + // cells that aren't in it would stretch the clone out of shape. The size set + // above already accounts for the space the span was taking up. + clone.removeAttribute("colspan"); + clone.removeAttribute("rowspan"); + + return clone; +} + +/** + * Builds the image shown next to the cursor while dragging a table row or + * column. Like whole-block previews, it keeps the editor's DOM/style context + * rather than approximating its appearance with a second set of table styles. + * + * `cells` are the cells making up the dragged row/column, as returned by + * `getCellsAtRowHandle` / `getCellsAtColumnHandle` - using those (rather than + * indexing the DOM directly) means merged cells resolve to the right elements. + * + * Returns the element to hand to `DataTransfer.setDragImage`, or `undefined` + * if the table's DOM couldn't be read, in which case the caller should fall + * back to the hidden drag image. + */ +export function setTableDragImage( + editor: BlockNoteEditor, + // The block container element for the table, i.e. `TableHandlesView`'s + // `tableElement`. + blockElement: HTMLElement, + cells: RelativeCellIndices[], + orientation: "row" | "col", +): HTMLElement | undefined { + const sourceTable = blockElement.querySelector("table"); + const tableBody = sourceTable?.querySelector("tbody"); + + if (!sourceTable || !tableBody) { + return undefined; + } + + const table = sourceTable.cloneNode(false) as HTMLTableElement; + // The original width/colgroup describe the whole table, not this subset. + table.style.removeProperty("width"); + table.style.removeProperty("min-width"); + const tableBodyClone = tableBody.cloneNode(false) as HTMLElement; + + for (const { row, col } of cells) { + // Relative cell indices line up with the DOM here for the same reason they + // line up with the ProseMirror node tree: one `` per row node, one + // cell element per cell node. + const rowElement = tableBody.children[row]; + const cell = rowElement?.children[col]; + + if (cell && rowElement) { + // Row previews share one row; column previews keep each cell's own row. + const rowClone = + (orientation === "row" && tableBodyClone.firstElementChild) || + tableBodyClone.appendChild(rowElement.cloneNode(false)); + rowClone.appendChild(cloneCellWithSize(cell)); + } + } + + if (tableBodyClone.childElementCount === 0) { + return undefined; + } + + table.appendChild(tableBodyClone); + + // Copy the actual ancestor chain through the editor. It carries inherited + // block colors/line height and selectors such as `.bn-editor + // [data-content-type="table"]`, including app overrides and custom frames. + // Only layout constraints are reset: this is a snapshot of a subset, not a + // second editor viewport or table scroller. + let content: HTMLElement = table; + const view = editor.prosemirrorView; + let ancestor = sourceTable.parentElement; + while (ancestor && view.dom.contains(ancestor)) { + const clone = ancestor.cloneNode(false) as HTMLElement; + clone.classList.remove("ProseMirror-selectednode"); + clone.removeAttribute("id"); + clone.removeAttribute("contenteditable"); + clone.removeAttribute("tabindex"); + Object.assign(clone.style, { + width: "max-content", + minWidth: "0", + maxWidth: "none", + height: "auto", + minHeight: "0", + maxHeight: "none", + margin: "0", + padding: "0", + overflow: "visible", + }); + clone.appendChild(content); + content = clone; + if (ancestor === view.dom) { + break; + } + ancestor = ancestor.parentElement; + } + + // Same themed outer wrapper and off-screen capture strategy as SideMenu's + // whole-block preview (#3235). Do not hide with opacity: Firefox/Safari also + // apply it to the native drag bitmap. + const container = view.dom.parentElement?.closest(".bn-root"); + const wrapper = + (container?.cloneNode(false) as HTMLElement | undefined) ?? + document.createElement("div"); + wrapper.removeAttribute("id"); + wrapper.classList.add("bn-drag-preview", "bn-table-drag-preview"); + wrapper.setAttribute("aria-hidden", "true"); + Object.assign(wrapper.style, { + background: "transparent", + position: "absolute", + top: "-10000px", + left: "0", + width: "max-content", + maxWidth: "none", + margin: "0", + padding: "10px", + height: "auto", + minHeight: "0", + maxHeight: "75vh", + overflow: "hidden", + pointerEvents: "none", + }); + wrapper.appendChild(content); + + // dataTransfer.setDragImage(element) only works if element is attached to the + // DOM. + // Keep the off-screen image attached until drag end: Firefox/Safari may + // capture after dragstart. Attach beside the editor to inherit its theme. + attachDragPreview(view, wrapper); + + return wrapper; +} diff --git a/playground/src/examples.gen.tsx b/playground/src/examples.gen.tsx index 6fa9173445..0dd1a19a6f 100644 --- a/playground/src/examples.gen.tsx +++ b/playground/src/examples.gen.tsx @@ -891,6 +891,31 @@ export const examples = { readme: "By default, BlockNote's floating components (formatting toolbar, slash menu, table handles, etc.) mount next to the editor, inside its `bn-container` (or inside whatever you render `BlockNoteViewEditor` into). The `portalElements` prop on `BlockNoteView` lets you change that: globally via `default`, or per component by key. The menus and popovers a floating component opens follow it wherever it mounts.\n\nThis example renders two editors side-by-side, both wrapped in a small `overflow: hidden` container. The left editor uses the default, so the slash menu is clipped by the editor's bounds. The right editor passes `portalElements={{ default: document.body }}` so the floating components escape the wrapper and render fully.\n\n```tsx\n\n```\n\n**Relevant Docs:**\n\n- [UI Components](/docs/react/components)\n- [Mobile Formatting Toolbar](/docs/react/components/formatting-toolbar#mobile-formatting-toolbar)", }, + { + projectSlug: "table-reordering-visualization", + fullSlug: "ui-components/table-reordering-visualization", + pathFromRoot: + "examples/03-ui-components/21-table-reordering-visualization", + config: { + playground: true, + docs: false, + author: "must", + tags: [ + "Intermediate", + "UI Components", + "Tables", + "Drag & Drop", + "Appearance & Styling", + ], + }, + title: "Table Reordering Visualization", + group: { + pathFromRoot: "examples/03-ui-components", + slug: "ui-components", + }, + readme: + "BlockNote gives table row/column dragging visual feedback out of the box: a\nsnapshot of the row/column follows the cursor, the row/column being dragged is\ntinted and outlined, and a drop indicator marks where it would land.\n\nThis example shows how to restyle a table - and those built-in drag\naffordances - to match your own product, using a Microsoft Loop-inspired look:\n\n- **Restyled tables**: rounded card look, muted header row, hairline\n borders, and a row-hover highlight instead of a harsh black grid.\n- **Retuned drag affordances**: the built-in drag source highlight, drop\n indicator and drag snapshot recolored to the same palette.\n\n## How It Works\n\nEverything here is CSS - no additional extensions or event handling.\nBlockNote's `TableHandlesExtension` owns the whole drag lifecycle and\nexposes it through classes you can target:\n\n| Class | What it's on |\n| -------------------------- | ---------------------------------------------- |\n| `bn-table-drag-source-row` | every cell of the row being dragged |\n| `bn-table-drag-source-col` | every cell of the column being dragged |\n| `bn-table-drop-cursor` | a bar on the edge the row/column would drop at |\n| `bn-table-drag-preview` | the snapshot shown next to the cursor |\n\nThe first three are ProseMirror decorations inside the editor, so they're\nscoped under `.bn-editor [data-content-type=\"table\"]` like any other table\nstyle. The snapshot lives outside the live editor, but copies its DOM styling\ncontext, so those same table styles apply to it. Its outer wrapper also carries\n`bn-table-drag-preview` for preview-specific overrides. The source tint uses\n`--bn-table-drag-source-color` so it layers over existing cell backgrounds.\n\n`tableStyles.css` does the restyling; `App.tsx` provides an initial table with\n`headerRows: 1` so the header styling is visible right away.\n\n## Known Limitations\n\n- **Keyboard and touch**: BlockNote's table drag handles are `draggable` +\n `onDragStart` only today (see `TableHandle.tsx`) - there's no\n keyboard-operable reorder path, and native HTML5 drag-and-drop isn't\n supported on touch browsers at all. Both are gaps in BlockNote's table-drag\n feature as a whole, not something this example introduces or fixes.\n- **Accessibility**: for the same reason, there's no keyboard focus\n restoration to verify after a reorder - the interaction can't be reached by\n keyboard in the first place yet.\n\n**Relevant Docs:**\n\n- [Tables](/docs/features/blocks/tables)\n- [Overriding CSS](/docs/react/styling-theming/overriding-css)\n- [Editor Setup](/docs/getting-started/editor-setup)", + }, ], }, theming: { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6f36d87bcc..7ebefcd6af 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2307,6 +2307,49 @@ importers: specifier: ^8.0.0 version: 8.0.8(@types/node@25.9.5)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.51.2)(tsx@4.21.0)(yaml@2.9.0) + examples/03-ui-components/21-table-reordering-visualization: + dependencies: + '@blocknote/ariakit': + specifier: latest + version: link:../../../packages/ariakit + '@blocknote/core': + specifier: latest + version: link:../../../packages/core + '@blocknote/mantine': + specifier: latest + version: link:../../../packages/mantine + '@blocknote/react': + specifier: latest + version: link:../../../packages/react + '@blocknote/shadcn': + specifier: latest + version: link:../../../packages/shadcn + '@mantine/core': + specifier: ^9.0.2 + version: 9.1.1(@mantine/hooks@9.1.1(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@mantine/hooks': + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) + react: + specifier: ^19.2.3 + version: 19.2.5 + react-dom: + specifier: ^19.2.3 + version: 19.2.5(react@19.2.5) + devDependencies: + '@types/react': + specifier: ^19.2.3 + version: 19.2.14 + '@types/react-dom': + specifier: ^19.2.3 + version: 19.2.3(@types/react@19.2.14) + '@vitejs/plugin-react': + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.9.5)(esbuild@0.27.5)(jiti@2.7.0)(terser@5.51.2)(tsx@4.21.0)(yaml@2.9.0)) + vite-plus: + specifier: 'catalog:' + version: 1.4.0(@opentelemetry/api@1.10.0)(@types/node@25.9.5)(@vitest/browser-playwright@5.0.5)(esbuild@0.27.5)(jiti@2.7.0)(jsdom@29.0.2(@noble/hashes@2.4.0)(canvas@3.1.0))(msw@2.11.5(@types/node@25.9.5)(typescript@7.0.2))(playwright@1.60.0)(terser@5.51.2)(tsx@4.21.0)(typescript@7.0.2)(yaml@2.9.0) + examples/04-theming/01-theming-dom-attributes: dependencies: '@blocknote/ariakit': diff --git a/tests/src/end-to-end/tables/tables.test.tsx b/tests/src/end-to-end/tables/tables.test.tsx index 354e015c49..8f4d7a5b23 100644 --- a/tests/src/end-to-end/tables/tables.test.tsx +++ b/tests/src/end-to-end/tables/tables.test.tsx @@ -71,6 +71,48 @@ beforeEach(async () => { }); describe("Check Table interactions", () => { + // Cancellation is a native drag lifecycle check; visual coverage lives in + // TableHandles/dragPreview.browser.test.ts alongside the preview implementation. + test.skipIf(browserName === "firefox")( + "Escape cancels a table drag and cleans up its visuals", + async () => { + await focusOnEditor(); + await insertParagraph(); + await executeSlashCommand("table"); + const rows = document.querySelectorAll(`${TABLE_SELECTOR} tr`); + const handle = await getTableHandle( + rows[0].querySelector("td, th")!, + "row", + ); + const box = handle.getBoundingClientRect(); + const target = rows[1].children[0].getBoundingClientRect(); + await mouseSequence([ + { type: "move", x: box.x + box.width / 2, y: box.y + box.height / 2 }, + { type: "down" }, + { + type: "move", + x: target.x + target.width / 2, + y: target.y + target.height / 2, + steps: 10, + }, + ]); + await vi.waitFor(() => + expect( + document.querySelector(".bn-table-drag-source-row"), + ).not.toBeNull(), + ); + await userEvent.keyboard("{Escape}"); + await mouseSequence([{ type: "up" }]); + await vi.waitFor(() => + expect( + document.querySelector( + ".bn-table-drag-source-row, .bn-table-drop-cursor, .bn-table-drag-preview", + ), + ).toBeNull(), + ); + }, + ); + test("Should be able to type in cell", async () => { await focusOnEditor(); await executeSlashCommand("table");