From 91d9d11c397c057f1d918c8d9feb8eaf43ea0ce5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Apr 2026 08:38:43 +0200 Subject: [PATCH 01/76] chore: bump undici from 6.22.0 to 6.25.0 (#2646) --- pnpm-lock.yaml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 11f7828f24..701d5a2df6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5315,7 +5315,7 @@ importers: version: 5.9.3 undici: specifier: ^6.22.0 - version: 6.22.0 + version: 6.25.0 vite: specifier: ^8.0.3 version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) @@ -5376,7 +5376,7 @@ importers: version: 5.9.3 undici: specifier: ^6.22.0 - version: 6.22.0 + version: 6.25.0 vite: specifier: ^8.0.3 version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) @@ -15974,8 +15974,8 @@ packages: undici-types@7.19.2: resolution: {integrity: sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==} - undici@6.22.0: - resolution: {integrity: sha512-hU/10obOIu62MGYjdskASR3CUAiYaFTtC9Pa6vHyf//mAipSvSQg6od2CnJswq7fvzNS3zJhxoRkgNVaHurWKw==} + undici@6.25.0: + resolution: {integrity: sha512-ZgpWDC5gmNiuY9CnLVXEH8rl50xhRCuLNA97fAUnKi8RRuV4E6KG31pDTsLVUKnohJE0I3XDrTeEydAXRw47xg==} engines: {node: '>=18.17'} unicode-canonical-property-names-ecmascript@2.0.1: @@ -23896,8 +23896,8 @@ snapshots: '@next/eslint-plugin-next': 16.2.2 eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-react: 7.37.5(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-react-hooks: 7.0.1(eslint@9.39.4(jiti@2.6.1)) @@ -23946,7 +23946,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 @@ -23957,7 +23957,7 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -23971,14 +23971,14 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -24019,7 +24019,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -24030,7 +24030,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -28438,7 +28438,7 @@ snapshots: undici-types@7.19.2: {} - undici@6.22.0: {} + undici@6.25.0: {} unicode-canonical-property-names-ecmascript@2.0.1: {} From 37df7227192bf58ddf5e69062bd3bdb07bd64b8d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Apr 2026 08:40:13 +0200 Subject: [PATCH 02/76] chore: bump hono from 4.12.10 to 4.12.14 (#2644) --- pnpm-lock.yaml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 701d5a2df6..6394499b2b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5354,13 +5354,13 @@ importers: version: link:../xl-ai '@hono/node-server': specifier: ^1.19.5 - version: 1.19.14(hono@4.12.10) + version: 1.19.14(hono@4.12.14) ai: specifier: 6.0.5 version: 6.0.5(zod@4.3.6) hono: specifier: ^4.10.3 - version: 4.12.10 + version: 4.12.14 devDependencies: eslint: specifier: ^8.57.1 @@ -13108,8 +13108,8 @@ packages: hoist-non-react-statics@3.3.2: resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} - hono@4.12.10: - resolution: {integrity: sha512-mx/p18PLy5og9ufies2GOSUqep98Td9q4i/EF6X7yJgAiIopxqdfIO3jbqsi3jRgTgw88jMDEzVKi+V2EF+27w==} + hono@4.12.14: + resolution: {integrity: sha512-am5zfg3yu6sqn5yjKBNqhnTX7Cv+m00ox+7jbaKkrLMRJ4rAdldd1xPd/JzbBWspqaQv6RSTrgFN95EsfhC+7w==} engines: {node: '>=16.9.0'} hsl-to-hex@1.0.0: @@ -18514,9 +18514,9 @@ snapshots: dependencies: '@hapi/hoek': 9.3.0 - '@hono/node-server@1.19.14(hono@4.12.10)': + '@hono/node-server@1.19.14(hono@4.12.14)': dependencies: - hono: 4.12.10 + hono: 4.12.14 '@humanfs/core@0.19.1': {} @@ -25009,7 +25009,7 @@ snapshots: dependencies: react-is: 16.13.1 - hono@4.12.10: {} + hono@4.12.14: {} hsl-to-hex@1.0.0: dependencies: From 219d9225bc8f6dbb534d3e86ccc351d33b747879 Mon Sep 17 00:00:00 2001 From: Nick Perez Date: Thu, 16 Apr 2026 12:47:22 +0200 Subject: [PATCH 03/76] fix: make CustomChange compatible with prosemirror-changeset 2.4.1 (#2647) * fix: make CustomChange compatible with prosemirror-changeset 2.4.1 prosemirror-changeset 2.4.1 added a toJSON() method to the Change class, causing fresh installs (without lockfile) to fail TypeScript compilation when creating plain objects typed as CustomChange. Co-Authored-By: Claude Opus 4.6 (1M context) * chore: update lockfile for @tiptap/* and prosemirror-changeset Bump locked versions within existing ranges: - @tiptap/* 3.22.1 -> 3.22.3 - prosemirror-changeset 2.3.1 -> 2.4.1 Skipped react/react-dom 19.2.5 (causes test failures). Co-Authored-By: Claude Opus 4.6 (1M context) --------- Co-authored-by: Claude Opus 4.6 (1M context) --- packages/xl-ai/src/prosemirror/changeset.ts | 10 +- pnpm-lock.yaml | 278 ++++++++++---------- 2 files changed, 147 insertions(+), 141 deletions(-) diff --git a/packages/xl-ai/src/prosemirror/changeset.ts b/packages/xl-ai/src/prosemirror/changeset.ts index 26e3099a89..7f40964016 100644 --- a/packages/xl-ai/src/prosemirror/changeset.ts +++ b/packages/xl-ai/src/prosemirror/changeset.ts @@ -1,14 +1,20 @@ import { getNodeById, PartialBlock, updateBlockTr } from "@blocknote/core"; import { - Change, ChangeSet, + Span, simplifyChanges, TokenEncoder, } from "prosemirror-changeset"; import { Node } from "prosemirror-model"; import { ReplaceStep, Transform } from "prosemirror-transform"; -type CustomChange = Change & { +type CustomChange = { + fromA: number; + toA: number; + fromB: number; + toB: number; + deleted: readonly Span[]; + inserted: readonly Span[]; type?: "mark-update" | "node-type-or-attr-update"; }; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6394499b2b..98e34d6237 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -131,10 +131,10 @@ importers: version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.4) '@liveblocks/react-blocknote': specifier: ^3.17.0 - version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30) + version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30) '@liveblocks/react-tiptap': specifier: ^3.17.0 - version: 3.17.0(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30)) + version: 3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30)) '@liveblocks/react-ui': specifier: ^3.17.0 version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -194,7 +194,7 @@ importers: version: 3.23.0 '@tiptap/core': specifier: ^3.13.0 - version: 3.22.1(@tiptap/pm@3.22.1) + version: 3.22.3(@tiptap/pm@3.22.3) '@uppy/core': specifier: ^3.13.1 version: 3.13.1 @@ -3665,10 +3665,10 @@ importers: version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.4) '@liveblocks/react-blocknote': specifier: ^3.17.0 - version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30) + version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30) '@liveblocks/react-tiptap': specifier: ^3.17.0 - version: 3.17.0(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30)) + version: 3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30)) '@liveblocks/react-ui': specifier: ^3.17.0 version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -4032,7 +4032,7 @@ importers: version: 6.0.22(react@19.2.4) '@tiptap/core': specifier: ^3.13.0 - version: 3.22.1(@tiptap/pm@3.22.1) + version: 3.22.3(@tiptap/pm@3.22.3) react: specifier: ^19.2.3 version: 19.2.4 @@ -4678,40 +4678,40 @@ importers: version: 0.7.7 '@tiptap/core': specifier: ^3.13.0 - version: 3.22.1(@tiptap/pm@3.22.1) + version: 3.22.3(@tiptap/pm@3.22.3) '@tiptap/extension-bold': specifier: ^3.13.0 - version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1)) + version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3)) '@tiptap/extension-code': specifier: ^3.13.0 - version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1)) + version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3)) '@tiptap/extension-horizontal-rule': specifier: ^3.13.0 - version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1) + version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3) '@tiptap/extension-italic': specifier: ^3.13.0 - version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1)) + version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3)) '@tiptap/extension-link': specifier: ^3.22.1 - version: 3.22.1(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1) + version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3) '@tiptap/extension-paragraph': specifier: ^3.13.0 - version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1)) + version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3)) '@tiptap/extension-strike': specifier: ^3.13.0 - version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1)) + version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3)) '@tiptap/extension-text': specifier: ^3.13.0 - version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1)) + version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3)) '@tiptap/extension-underline': specifier: ^3.13.0 - version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1)) + version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3)) '@tiptap/extensions': specifier: ^3.13.0 - version: 3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1) + version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3) '@tiptap/pm': specifier: ^3.13.0 - version: 3.22.1 + version: 3.22.3 emoji-mart: specifier: ^5.6.0 version: 5.6.0 @@ -4927,13 +4927,13 @@ importers: version: 0.7.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@tiptap/core': specifier: ^3.13.0 - version: 3.22.1(@tiptap/pm@3.22.1) + version: 3.22.3(@tiptap/pm@3.22.3) '@tiptap/pm': specifier: ^3.13.0 - version: 3.22.1 + version: 3.22.3 '@tiptap/react': specifier: ^3.13.0 - version: 3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@types/use-sync-external-store': specifier: 1.5.0 version: 1.5.0 @@ -5015,10 +5015,10 @@ importers: version: link:../react '@tiptap/core': specifier: ^3.13.0 - version: 3.22.1(@tiptap/pm@3.22.1) + version: 3.22.3(@tiptap/pm@3.22.3) '@tiptap/pm': specifier: ^3.13.0 - version: 3.22.1 + version: 3.22.3 jsdom: specifier: ^25.0.1 version: 25.0.1(canvas@2.11.2) @@ -5191,7 +5191,7 @@ importers: version: 0.1.8(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-transform@1.12.0)(prosemirror-view@1.41.8) '@tiptap/core': specifier: ^3.13.0 - version: 3.22.1(@tiptap/pm@3.22.1) + version: 3.22.3(@tiptap/pm@3.22.3) ai: specifier: 6.0.5 version: 6.0.5(zod@4.3.6) @@ -5203,7 +5203,7 @@ importers: version: 4.6.2 prosemirror-changeset: specifier: ^2.3.1 - version: 2.3.1 + version: 2.4.1 prosemirror-model: specifier: ^1.25.4 version: 1.25.4 @@ -5516,7 +5516,7 @@ importers: version: link:../react '@tiptap/core': specifier: ^3.13.0 - version: 3.22.1(@tiptap/pm@3.22.1) + version: 3.22.3(@tiptap/pm@3.22.3) prosemirror-model: specifier: ^1.25.4 version: 1.25.4 @@ -5762,10 +5762,10 @@ importers: version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.4) '@liveblocks/react-blocknote': specifier: ^3.17.0 - version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30) + version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30) '@liveblocks/react-tiptap': specifier: ^3.17.0 - version: 3.17.0(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30)) + version: 3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30)) '@liveblocks/react-ui': specifier: ^3.17.0 version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) @@ -5930,7 +5930,7 @@ importers: version: 1.51.1 '@tiptap/pm': specifier: ^3.13.0 - version: 3.22.1 + version: 3.22.3 '@types/node': specifier: ^20.19.22 version: 20.19.37 @@ -10355,85 +10355,85 @@ packages: '@types/react-dom': optional: true - '@tiptap/core@3.22.1': - resolution: {integrity: sha512-6wPNhkdLIGYiKAGqepDCRtR0TYGJxV40SwOEN2vlPhsXqAgzmyG37UyREj5pGH5xTekugqMCgCnyRg7m5nYoYQ==} + '@tiptap/core@3.22.3': + resolution: {integrity: sha512-Dv9MKK5BDWCF0N2l6/Pxv3JNCce2kwuWf2cKMBc2bEetx0Pn6o7zlFmSxMvYK4UtG1Tw9Yg/ZHi6QOFWK0Zm9Q==} peerDependencies: - '@tiptap/pm': ^3.22.1 + '@tiptap/pm': ^3.22.3 - '@tiptap/extension-bold@3.15.3': - resolution: {integrity: sha512-I8JYbkkUTNUXbHd/wCse2bR0QhQtJD7+0/lgrKOmGfv5ioLxcki079Nzuqqay3PjgYoJLIJQvm3RAGxT+4X91w==} + '@tiptap/extension-bold@3.22.3': + resolution: {integrity: sha512-tysipHla2zCWr8XNIWRaW9O+7i7/SoEqnRqSRUUi2ailcJjlia+RBy3RykhkgyThrQDStu5KGBS/UvrXwA+O1A==} peerDependencies: - '@tiptap/core': ^3.15.3 + '@tiptap/core': ^3.22.3 - '@tiptap/extension-bubble-menu@3.22.1': - resolution: {integrity: sha512-JJI63N55hLPjfqHgBnbG1ORZTXJiswnfBkfNd8YKytCC8D++g5qX3UMObxmJKLMBRGyqjEi6krzOyYtOix5ALA==} + '@tiptap/extension-bubble-menu@3.22.3': + resolution: {integrity: sha512-Y6zQjh0ypDg32HWgICEvmPSKjGLr39k3aDxxt/H0uQEZSfw4smT0hxUyyyjVjx68C6t6MTnwdfz0hPI5lL68vQ==} peerDependencies: - '@tiptap/core': ^3.22.1 - '@tiptap/pm': ^3.22.1 + '@tiptap/core': ^3.22.3 + '@tiptap/pm': ^3.22.3 - '@tiptap/extension-code@3.15.3': - resolution: {integrity: sha512-x6LFt3Og6MFINYpsMzrJnz7vaT9Yk1t4oXkbJsJRSavdIWBEBcoRudKZ4sSe/AnsYlRJs8FY2uR76mt9e+7xAQ==} + '@tiptap/extension-code@3.22.3': + resolution: {integrity: sha512-wafWTDQOuMKtXpZEuk1PFQmzopabBciNLryL90MB9S03MNLaQQZYLnmYkDBlzAaLAbgF5QiC+2XZQEBQuTVjFQ==} peerDependencies: - '@tiptap/core': ^3.15.3 + '@tiptap/core': ^3.22.3 - '@tiptap/extension-floating-menu@3.22.1': - resolution: {integrity: sha512-TaZqmaoKv36FzbKTrBkkv74o0t8dYTftNZ7NotBqfSki0BB2PupTCJHafdu1YI0zmJ3xEzjB/XKcKPz2+10sDA==} + '@tiptap/extension-floating-menu@3.22.3': + resolution: {integrity: sha512-0f8b4KZ3XKai8GXWseIYJGdOfQr3evtFbBo3U08zy2aYzMMXWG0zEF7qe5/oiYp2aZ95edjjITnEceviTsZkIg==} peerDependencies: '@floating-ui/dom': ^1.0.0 - '@tiptap/core': ^3.22.1 - '@tiptap/pm': ^3.22.1 + '@tiptap/core': ^3.22.3 + '@tiptap/pm': ^3.22.3 - '@tiptap/extension-horizontal-rule@3.15.3': - resolution: {integrity: sha512-FYkN7L6JsfwwNEntmLklCVKvgL0B0N47OXMacRk6kYKQmVQ4Nvc7q/VJLpD9sk4wh4KT1aiCBfhKEBTu5pv1fg==} + '@tiptap/extension-horizontal-rule@3.22.3': + resolution: {integrity: sha512-wI2bFzScs+KgWeBH/BtypcVKeYelCyqV0RG8nxsZMWtPrBhqixzNd0Oi3gEKtjSjKUqMQ/kjJAIRuESr5UzlHA==} peerDependencies: - '@tiptap/core': ^3.15.3 - '@tiptap/pm': ^3.15.3 + '@tiptap/core': ^3.22.3 + '@tiptap/pm': ^3.22.3 - '@tiptap/extension-italic@3.15.3': - resolution: {integrity: sha512-6XeuPjcWy7OBxpkgOV7bD6PATO5jhIxc8SEK4m8xn8nelGTBIbHGqK37evRv+QkC7E0MUryLtzwnmmiaxcKL0Q==} + '@tiptap/extension-italic@3.22.3': + resolution: {integrity: sha512-LteA4cb4EGCiUtrK2JHvDF/Zg0/YqV4DUyHhAAho+oGEQDupZlsS6m0ia5wQcclkiTLzsoPrwcSNu6RDGQ16wQ==} peerDependencies: - '@tiptap/core': ^3.15.3 + '@tiptap/core': ^3.22.3 - '@tiptap/extension-link@3.22.1': - resolution: {integrity: sha512-RHch/Bqv+QDvW3J1CXmiTB54pyrQYNQq8Vfa7is/O209dNPA8tdbkRP44rDjqn8NeDCriC/oJ4avWeXL4qNDVw==} + '@tiptap/extension-link@3.22.3': + resolution: {integrity: sha512-S8/P2o9pv6B3kqLjH2TRWwSAximGbciNc6R8/QcN6HWLYxp0N0JoqN3rZHl9VWIBAGRWc4zkt80dhqrl2xmgfQ==} peerDependencies: - '@tiptap/core': ^3.22.1 - '@tiptap/pm': ^3.22.1 + '@tiptap/core': ^3.22.3 + '@tiptap/pm': ^3.22.3 - '@tiptap/extension-paragraph@3.15.3': - resolution: {integrity: sha512-lc0Qu/1AgzcEfS67NJMj5tSHHhH6NtA6uUpvppEKGsvJwgE2wKG1onE4isrVXmcGRdxSMiCtyTDemPNMu6/ozQ==} + '@tiptap/extension-paragraph@3.22.3': + resolution: {integrity: sha512-oO7rhfyhEuwm+50s9K3GZPjYyEEEvFAvm1wXopvZnhbkBLydIWImBfrZoC5IQh4/sRDlTIjosV2C+ji5y0tUSg==} peerDependencies: - '@tiptap/core': ^3.15.3 + '@tiptap/core': ^3.22.3 - '@tiptap/extension-strike@3.15.3': - resolution: {integrity: sha512-Y1P3eGNY7RxQs2BcR6NfLo9VfEOplXXHAqkOM88oowWWOE7dMNeFFZM9H8HNxoQgXJ7H0aWW9B7ZTWM9hWli2Q==} + '@tiptap/extension-strike@3.22.3': + resolution: {integrity: sha512-jY2InoUlKkuk5KHoIDGdML1OCA2n6PRHAtxwHNkAmiYh0Khf0zaVPGFpx4dgQrN7W5Q1WE6oBZnjrvy6qb7w0g==} peerDependencies: - '@tiptap/core': ^3.15.3 + '@tiptap/core': ^3.22.3 - '@tiptap/extension-text@3.15.3': - resolution: {integrity: sha512-MhkBz8ZvrqOKtKNp+ZWISKkLUlTrDR7tbKZc2OnNcUTttL9dz0HwT+cg91GGz19fuo7ttDcfsPV6eVmflvGToA==} + '@tiptap/extension-text@3.22.3': + resolution: {integrity: sha512-Q9R7JsTdomP5uUjtPjNKxHT1xoh/i9OJZnmgJLe7FcgZEaPOQ3bWxmKZoLZQfDfZjyB8BtH+Hc7nUvhCMOePxw==} peerDependencies: - '@tiptap/core': ^3.15.3 + '@tiptap/core': ^3.22.3 - '@tiptap/extension-underline@3.15.3': - resolution: {integrity: sha512-r/IwcNN0W366jGu4Y0n2MiFq9jGa4aopOwtfWO4d+J0DyeS2m7Go3+KwoUqi0wQTiVU74yfi4DF6eRsMQ9/iHQ==} + '@tiptap/extension-underline@3.22.3': + resolution: {integrity: sha512-Ch6CBWRa5w90yYSPUW6x9Py9JdrXMqk3pZ9OIlMYD8A7BqyZGfiHerX7XDMYDS09KjyK3U9XH60/zxYOzXdDLA==} peerDependencies: - '@tiptap/core': ^3.15.3 + '@tiptap/core': ^3.22.3 - '@tiptap/extensions@3.15.3': - resolution: {integrity: sha512-ycx/BgxR4rc9tf3ZyTdI98Z19yKLFfqM3UN+v42ChuIwkzyr9zyp7kG8dB9xN2lNqrD+5y/HyJobz/VJ7T90gA==} + '@tiptap/extensions@3.22.3': + resolution: {integrity: sha512-s5eiMq0m5N6N+W7dU6rd60KgZyyCD7FvtPNNswISfPr12EQwJBfbjWwTqd0UKNzA4fNrhQEERXnzORkykttPeA==} peerDependencies: - '@tiptap/core': ^3.15.3 - '@tiptap/pm': ^3.15.3 + '@tiptap/core': ^3.22.3 + '@tiptap/pm': ^3.22.3 - '@tiptap/pm@3.22.1': - resolution: {integrity: sha512-OSqSg2974eLJT5PNKFLM7156lBXCUf/dsKTQXWSzsLTf6HOP4dYP6c0YbAk6lgbNI+BdszsHNClmLVLA8H/L9A==} + '@tiptap/pm@3.22.3': + resolution: {integrity: sha512-NjfWjZuvrqmpICT+GZWNIjtOdhPyqFKDMtQy7tsQ5rErM9L2ZQdy/+T/BKSO1JdTeBhdg9OP+0yfsqoYp2aT6A==} - '@tiptap/react@3.22.1': - resolution: {integrity: sha512-1pIRfgK9wape4nDXVJRfgUcYVZdPPkuECbGtz8bo0rgtdsVN7B8PBVCDyuitZ7acdLbMuuX5+TxeUOvME8np7Q==} + '@tiptap/react@3.22.3': + resolution: {integrity: sha512-6MNr6z0PxwfJFs+BKhHcvPNvY+UV1PXgqzTiTM4Z9guml84iVZxv7ZOCSj1dFYTr3Bf1MiOs4hT1yvBFlTfIaQ==} peerDependencies: - '@tiptap/core': ^3.22.1 - '@tiptap/pm': ^3.22.1 + '@tiptap/core': ^3.22.3 + '@tiptap/pm': ^3.22.3 '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 '@types/react-dom': ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -14752,8 +14752,8 @@ packages: property-information@7.1.0: resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==} - prosemirror-changeset@2.3.1: - resolution: {integrity: sha512-j0kORIBm8ayJNl3zQvD1TTPHJX3g042et6y/KQhZhnPrruO8exkTgG8X+NRpj7kIyMMEx74Xb3DyMIBtO0IKkQ==} + prosemirror-changeset@2.4.1: + resolution: {integrity: sha512-96WBLhOaYhJ+kPhLg3uW359Tz6I/MfcrQfL4EGv4SrcqKEMC1gmoGrXHecPE8eOwTVCJ4IwgfzM8fFad25wNfw==} prosemirror-collab@1.3.1: resolution: {integrity: sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==} @@ -18790,17 +18790,17 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@liveblocks/react-blocknote@3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)': + '@liveblocks/react-blocknote@3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)': dependencies: '@blocknote/core': link:packages/core '@blocknote/react': link:packages/react '@liveblocks/client': 3.17.0(@types/json-schema@7.0.15) '@liveblocks/core': 3.17.0(@types/json-schema@7.0.15) '@liveblocks/react': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.4) - '@liveblocks/react-tiptap': 3.17.0(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30)) + '@liveblocks/react-tiptap': 3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30)) '@liveblocks/react-ui': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@liveblocks/yjs': 3.17.0(@types/json-schema@7.0.15)(yjs@13.6.30) - '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1) + '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) react: 19.2.4 react-dom: 19.2.4(react@19.2.4) vitest-tsconfig-paths: 3.4.1 @@ -18819,7 +18819,7 @@ snapshots: - y-protocols - yjs - '@liveblocks/react-tiptap@3.17.0(@tiptap/pm@3.22.1)(@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30))': + '@liveblocks/react-tiptap@3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30))': dependencies: '@floating-ui/react-dom': 2.1.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@liveblocks/client': 3.17.0(@types/json-schema@7.0.15) @@ -18827,10 +18827,10 @@ snapshots: '@liveblocks/react': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.4) '@liveblocks/react-ui': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) '@liveblocks/yjs': 3.17.0(@types/json-schema@7.0.15)(yjs@13.6.30) - '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1) - '@tiptap/pm': 3.22.1 - '@tiptap/react': 3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@tiptap/suggestion': 2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1) + '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) + '@tiptap/pm': 3.22.3 + '@tiptap/react': 3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@tiptap/suggestion': 2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3) cmdk: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) radix-ui: 1.4.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) react: 19.2.4 @@ -21640,71 +21640,71 @@ snapshots: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@tiptap/core@3.22.1(@tiptap/pm@3.22.1)': + '@tiptap/core@3.22.3(@tiptap/pm@3.22.3)': dependencies: - '@tiptap/pm': 3.22.1 + '@tiptap/pm': 3.22.3 - '@tiptap/extension-bold@3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))': + '@tiptap/extension-bold@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))': dependencies: - '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1) + '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) - '@tiptap/extension-bubble-menu@3.22.1(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)': + '@tiptap/extension-bubble-menu@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)': dependencies: '@floating-ui/dom': 1.7.6 - '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1) - '@tiptap/pm': 3.22.1 + '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) + '@tiptap/pm': 3.22.3 optional: true - '@tiptap/extension-code@3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))': + '@tiptap/extension-code@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))': dependencies: - '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1) + '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) - '@tiptap/extension-floating-menu@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)': + '@tiptap/extension-floating-menu@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)': dependencies: '@floating-ui/dom': 1.7.6 - '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1) - '@tiptap/pm': 3.22.1 + '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) + '@tiptap/pm': 3.22.3 optional: true - '@tiptap/extension-horizontal-rule@3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)': + '@tiptap/extension-horizontal-rule@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)': dependencies: - '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1) - '@tiptap/pm': 3.22.1 + '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) + '@tiptap/pm': 3.22.3 - '@tiptap/extension-italic@3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))': + '@tiptap/extension-italic@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))': dependencies: - '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1) + '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) - '@tiptap/extension-link@3.22.1(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)': + '@tiptap/extension-link@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)': dependencies: - '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1) - '@tiptap/pm': 3.22.1 + '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) + '@tiptap/pm': 3.22.3 linkifyjs: 4.3.2 - '@tiptap/extension-paragraph@3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))': + '@tiptap/extension-paragraph@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))': dependencies: - '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1) + '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) - '@tiptap/extension-strike@3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))': + '@tiptap/extension-strike@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))': dependencies: - '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1) + '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) - '@tiptap/extension-text@3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))': + '@tiptap/extension-text@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))': dependencies: - '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1) + '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) - '@tiptap/extension-underline@3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))': + '@tiptap/extension-underline@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))': dependencies: - '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1) + '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) - '@tiptap/extensions@3.15.3(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)': + '@tiptap/extensions@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)': dependencies: - '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1) - '@tiptap/pm': 3.22.1 + '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) + '@tiptap/pm': 3.22.3 - '@tiptap/pm@3.22.1': + '@tiptap/pm@3.22.3': dependencies: - prosemirror-changeset: 2.3.1 + prosemirror-changeset: 2.4.1 prosemirror-collab: 1.3.1 prosemirror-commands: 1.7.1 prosemirror-dropcursor: 1.8.2 @@ -21723,10 +21723,10 @@ snapshots: prosemirror-transform: 1.12.0 prosemirror-view: 1.41.8 - '@tiptap/react@3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': dependencies: - '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1) - '@tiptap/pm': 3.22.1 + '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) + '@tiptap/pm': 3.22.3 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) '@types/use-sync-external-store': 0.0.6 @@ -21735,15 +21735,15 @@ snapshots: react-dom: 19.2.4(react@19.2.4) use-sync-external-store: 1.6.0(react@19.2.4) optionalDependencies: - '@tiptap/extension-bubble-menu': 3.22.1(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1) - '@tiptap/extension-floating-menu': 3.22.1(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1) + '@tiptap/extension-bubble-menu': 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3) + '@tiptap/extension-floating-menu': 3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3) transitivePeerDependencies: - '@floating-ui/dom' - '@tiptap/suggestion@2.27.2(@tiptap/core@3.22.1(@tiptap/pm@3.22.1))(@tiptap/pm@3.22.1)': + '@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)': dependencies: - '@tiptap/core': 3.22.1(@tiptap/pm@3.22.1) - '@tiptap/pm': 3.22.1 + '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) + '@tiptap/pm': 3.22.3 '@transloadit/prettier-bytes@0.3.5': {} @@ -23896,8 +23896,8 @@ snapshots: '@next/eslint-plugin-next': 16.2.2 eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-react: 7.37.5(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-react-hooks: 7.0.1(eslint@9.39.4(jiti@2.6.1)) @@ -23946,7 +23946,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 @@ -23957,7 +23957,7 @@ snapshots: tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -23971,14 +23971,14 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -24019,7 +24019,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -24030,7 +24030,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -26914,7 +26914,7 @@ snapshots: property-information@7.1.0: {} - prosemirror-changeset@2.3.1: + prosemirror-changeset@2.4.1: dependencies: prosemirror-transform: 1.12.0 From 43a99b9f168ea50dfd638d611102fe047c909a12 Mon Sep 17 00:00:00 2001 From: Nick Perez Date: Thu, 16 Apr 2026 16:54:33 +0200 Subject: [PATCH 04/76] chore(ci): add fresh-install failure Slack alert and ignore hono alerts (#2648) --- .github/dependabot.yml | 6 ++ .github/workflows/fresh-install-tests.yml | 73 ++++++++++++++++++++--- 2 files changed, 72 insertions(+), 7 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 4f0f140cad..3458bfff2a 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -40,6 +40,12 @@ updates: # yjs packages - dependency-name: "yjs" - dependency-name: "y-prosemirror" + ignore: + # Hono packages are used only in the demo AI server and are not part of + # the main editor/runtime surface area. + - dependency-name: "hono" + - dependency-name: "@hono/node-server" + - dependency-name: "@hono/*" groups: editor-dependencies: patterns: diff --git a/.github/workflows/fresh-install-tests.yml b/.github/workflows/fresh-install-tests.yml index a366d7d47a..0d922ebb4b 100644 --- a/.github/workflows/fresh-install-tests.yml +++ b/.github/workflows/fresh-install-tests.yml @@ -24,32 +24,91 @@ jobs: timeout-minutes: 30 steps: - - uses: actions/checkout@v6 + - id: checkout + uses: actions/checkout@v6 - - name: Install pnpm + - id: install_pnpm + name: Install pnpm uses: pnpm/action-setup@v5 - - uses: actions/setup-node@v6 + - id: setup_node + uses: actions/setup-node@v6 with: node-version-file: ".nvmrc" # Intentionally no pnpm cache — we want a genuinely fresh install - - name: Remove lockfile to force fresh dep resolution + - id: remove_lockfile + name: Remove lockfile to force fresh dep resolution # Removing pnpm-lock.yaml causes pnpm to resolve all dependencies to # the latest versions that satisfy the ranges declared in package.json # (including pnpm-workspace.yaml overrides). This is equivalent to what # a new user experiences when installing BlockNote in a blank project. run: rm pnpm-lock.yaml - - name: Install dependencies + - id: install_dependencies + name: Install dependencies run: pnpm install --no-frozen-lockfile - - name: Build packages + - id: build_packages + name: Build packages run: pnpm run build env: NX_SKIP_NX_CACHE: "true" - - name: Run unit tests + - id: run_unit_tests + name: Run unit tests run: pnpm run test env: NX_SKIP_NX_CACHE: "true" + + - name: Notify Slack on workflow failure + if: ${{ failure() }} + env: + SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }} + REPOSITORY: ${{ github.repository }} + WORKFLOW: ${{ github.workflow }} + RUN_ID: ${{ github.run_id }} + RUN_NUMBER: ${{ github.run_number }} + RUN_ATTEMPT: ${{ github.run_attempt }} + BRANCH: ${{ github.ref_name }} + run: | + if [ -z "$SLACK_WEBHOOK_URL" ]; then + echo "SLACK_WEBHOOK_URL is not configured; skipping Slack notification." + exit 0 + fi + + failed_step="Unknown step" + if [ "${{ steps.checkout.outcome }}" = "failure" ]; then + failed_step="Checkout repository" + elif [ "${{ steps.install_pnpm.outcome }}" = "failure" ]; then + failed_step="Install pnpm" + elif [ "${{ steps.setup_node.outcome }}" = "failure" ]; then + failed_step="Setup Node.js" + elif [ "${{ steps.remove_lockfile.outcome }}" = "failure" ]; then + failed_step="Remove lockfile to force fresh dep resolution" + elif [ "${{ steps.install_dependencies.outcome }}" = "failure" ]; then + failed_step="Install dependencies" + elif [ "${{ steps.build_packages.outcome }}" = "failure" ]; then + failed_step="Build packages" + elif [ "${{ steps.run_unit_tests.outcome }}" = "failure" ]; then + failed_step="Run unit tests" + fi + + run_url="https://github.com/${REPOSITORY}/actions/runs/${RUN_ID}" + message=$(printf '%s\n%s\n%s\n%s' \ + ":warning: Fresh Install Tests failed in *${REPOSITORY}* on branch *${BRANCH}*." \ + "*Workflow:* ${WORKFLOW}" \ + "*Run:* <${run_url}|#${RUN_NUMBER} (attempt ${RUN_ATTEMPT})>" \ + "*Failed step:* ${failed_step}") + payload=$(jq --compact-output --null-input --arg text "$message" '{text: $text}') + + curl -sS -X POST \ + --fail \ + --retry 4 \ + --retry-all-errors \ + --retry-max-time 60 \ + --connect-timeout 10 \ + --max-time 30 \ + -H "Content-type: application/json" \ + --data "$payload" \ + "$SLACK_WEBHOOK_URL" From f323c8b4ff3dcfacd4196cc1b320f087598c461b Mon Sep 17 00:00:00 2001 From: Nick the Sick Date: Thu, 16 Apr 2026 17:16:55 +0200 Subject: [PATCH 05/76] chore: update wait-on dep to avoid axios issue CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:L/VA:L/SC:H/SI:L/SA:L --- package.json | 2 +- pnpm-lock.yaml | 109 +++++++++++++++++++++++++++++-------------------- 2 files changed, 66 insertions(+), 45 deletions(-) diff --git a/package.json b/package.json index e0b97bd346..04d64da61b 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "serve": "14.2.6", "typescript": "^5.9.3", "vitest": "^4.1.2", - "wait-on": "8.0.3" + "wait-on": "9.0.5" }, "pnpm": { "ignoredBuiltDependencies": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 98e34d6237..adea560a4e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -64,8 +64,8 @@ importers: specifier: ^4.1.2 version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) wait-on: - specifier: 8.0.3 - version: 8.0.3 + specifier: 9.0.5 + version: 9.0.5 docs: dependencies: @@ -7612,11 +7612,25 @@ packages: prosemirror-transform: ^1.0.0 prosemirror-view: ^1.0.0 - '@hapi/hoek@9.3.0': - resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} + '@hapi/address@5.1.1': + resolution: {integrity: sha512-A+po2d/dVoY7cYajycYI43ZbYMXukuopIsqCjh5QzsBCipDtdofHntljDlpccMjIfTy6UOkg+5KPriwYch2bXA==} + engines: {node: '>=14.0.0'} + + '@hapi/formula@3.0.2': + resolution: {integrity: sha512-hY5YPNXzw1He7s0iqkRQi+uMGh383CGdyyIGYtB+W5N3KHPXoqychklvHhKCC9M3Xtv0OCs/IHw+r4dcHtBYWw==} + + '@hapi/hoek@11.0.7': + resolution: {integrity: sha512-HV5undWkKzcB4RZUusqOpcgxOaq6VOAH7zhhIr2g3G8NF/MlFO75SjOr2NfuSx0Mh40+1FqCkagKLJRykUWoFQ==} + + '@hapi/pinpoint@2.0.1': + resolution: {integrity: sha512-EKQmr16tM8s16vTT3cA5L0kZZcTMU5DUOZTuvpnY738m+jyP3JIUj+Mm1xc1rsLkGBQ/gVnfKYPwOmPg1tUR4Q==} - '@hapi/topo@5.1.0': - resolution: {integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==} + '@hapi/tlds@1.1.6': + resolution: {integrity: sha512-xdi7A/4NZokvV0ewovme3aUO5kQhW9pQ2YD1hRqZGhhSi5rBv4usHYidVocXSi9eihYsznZxLtAiEYYUL6VBGw==} + engines: {node: '>=14.0.0'} + + '@hapi/topo@6.0.2': + resolution: {integrity: sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==} '@hono/node-server@1.19.14': resolution: {integrity: sha512-GwtvgtXxnWsucXvbQXkRgqksiH2Qed37H9xHZocE5sA3N8O8O8/8FA3uclQXxXVzc9XBZuEOMK7+r02FmSpHtw==} @@ -9966,15 +9980,6 @@ packages: '@shikijs/vscode-textmate@10.0.2': resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} - '@sideway/address@4.1.5': - resolution: {integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==} - - '@sideway/formula@3.0.1': - resolution: {integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==} - - '@sideway/pinpoint@2.0.0': - resolution: {integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==} - '@sinclair/typebox@0.34.49': resolution: {integrity: sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==} @@ -11410,8 +11415,8 @@ packages: axios@1.12.0: resolution: {integrity: sha512-oXTDccv8PcfjZmPGlWsPSwtOJCZ/b6W5jAMCNcfwJbCzDckwG0jrYJFaWH1yvivfCXjVzV/SPDEhMB3Q+DSurg==} - axios@1.14.0: - resolution: {integrity: sha512-3Y8yrqLSwjuzpXuZ0oIYZ/XGgLwUIBU3uLvbcpb0pidD9ctpShJd43KSlEEkVQg6DS0G9NKyzOvBfUtDKEyHvQ==} + axios@1.15.0: + resolution: {integrity: sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==} axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} @@ -12687,6 +12692,15 @@ packages: debug: optional: true + follow-redirects@1.16.0: + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + fontkit@2.0.4: resolution: {integrity: sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==} @@ -13524,8 +13538,9 @@ packages: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true - joi@17.13.3: - resolution: {integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==} + joi@18.1.2: + resolution: {integrity: sha512-rF5MAmps5esSlhCA+N1b6IYHDw9j/btzGaqfgie522jS02Ju/HXBxamlXVlKEHAxoMKQL77HWI8jlqWsFuekZA==} + engines: {node: '>= 20'} jose@6.2.2: resolution: {integrity: sha512-d7kPDd34KO/YnzaDOlikGpOurfF0ByC2sEV4cANCtdqLlTfBlw2p14O/5d/zv40gJPbIQxfES3nSx1/oYNyuZQ==} @@ -16285,9 +16300,9 @@ packages: resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} engines: {node: '>=18'} - wait-on@8.0.3: - resolution: {integrity: sha512-nQFqAFzZDeRxsu7S3C7LbuxslHhk+gnJZHyethuGKAn2IVleIbTB9I3vJSQiSR+DifUqmdzfPMoMPJfLqMF2vw==} - engines: {node: '>=12.0.0'} + wait-on@9.0.5: + resolution: {integrity: sha512-qgnbHDfDTRIp73ANEJNRW/7kn8CrDUcvZz18xotJQku/P4saTGkbIzvnMZebPmVvVNUiRq1qWAPyqCH+W4H8KA==} + engines: {node: '>=20.0.0'} hasBin: true watchpack@2.5.1: @@ -18508,11 +18523,21 @@ snapshots: prosemirror-transform: 1.12.0 prosemirror-view: 1.41.8 - '@hapi/hoek@9.3.0': {} + '@hapi/address@5.1.1': + dependencies: + '@hapi/hoek': 11.0.7 + + '@hapi/formula@3.0.2': {} + + '@hapi/hoek@11.0.7': {} + + '@hapi/pinpoint@2.0.1': {} + + '@hapi/tlds@1.1.6': {} - '@hapi/topo@5.1.0': + '@hapi/topo@6.0.2': dependencies: - '@hapi/hoek': 9.3.0 + '@hapi/hoek': 11.0.7 '@hono/node-server@1.19.14(hono@4.12.14)': dependencies: @@ -21150,14 +21175,6 @@ snapshots: '@shikijs/vscode-textmate@10.0.2': {} - '@sideway/address@4.1.5': - dependencies: - '@hapi/hoek': 9.3.0 - - '@sideway/formula@3.0.1': {} - - '@sideway/pinpoint@2.0.0': {} - '@sinclair/typebox@0.34.49': {} '@smithy/chunked-blob-reader-native@4.2.3': @@ -22878,9 +22895,9 @@ snapshots: transitivePeerDependencies: - debug - axios@1.14.0: + axios@1.15.0: dependencies: - follow-redirects: 1.15.11 + follow-redirects: 1.16.0 form-data: 4.0.5 proxy-from-env: 2.1.0 transitivePeerDependencies: @@ -24474,6 +24491,8 @@ snapshots: follow-redirects@1.15.11: {} + follow-redirects@1.16.0: {} + fontkit@2.0.4: dependencies: '@swc/helpers': 0.5.21 @@ -25415,13 +25434,15 @@ snapshots: jiti@2.6.1: {} - joi@17.13.3: + joi@18.1.2: dependencies: - '@hapi/hoek': 9.3.0 - '@hapi/topo': 5.1.0 - '@sideway/address': 4.1.5 - '@sideway/formula': 3.0.1 - '@sideway/pinpoint': 2.0.0 + '@hapi/address': 5.1.1 + '@hapi/formula': 3.0.2 + '@hapi/hoek': 11.0.7 + '@hapi/pinpoint': 2.0.1 + '@hapi/tlds': 1.1.6 + '@hapi/topo': 6.0.2 + '@standard-schema/spec': 1.1.0 jose@6.2.2: {} @@ -28888,10 +28909,10 @@ snapshots: dependencies: xml-name-validator: 5.0.0 - wait-on@8.0.3: + wait-on@9.0.5: dependencies: - axios: 1.14.0 - joi: 17.13.3 + axios: 1.15.0 + joi: 18.1.2 lodash: 4.18.1 minimist: 1.2.8 rxjs: 7.8.2 From 66dfb4a757516cccbd0fd2265175a31097b661c7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 16 Apr 2026 18:03:57 +0200 Subject: [PATCH 06/76] chore: bump the editor-dependencies group across 1 directory with 2 updates (#2650) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nick the Sick --- docs/package.json | 4 +- packages/ariakit/package.json | 4 +- packages/dev-scripts/package.json | 4 +- packages/mantine/package.json | 4 +- packages/react/package.json | 4 +- packages/server-util/package.json | 4 +- packages/shadcn/package.json | 4 +- packages/xl-ai/package.json | 4 +- packages/xl-docx-exporter/package.json | 4 +- packages/xl-email-exporter/package.json | 8 +- packages/xl-multi-column/package.json | 4 +- packages/xl-odt-exporter/package.json | 4 +- packages/xl-pdf-exporter/package.json | 4 +- playground/package.json | 4 +- pnpm-lock.yaml | 3052 +++++++++++------------ tests/nextjs-test-app/package.json | 8 +- tests/package.json | 4 +- 17 files changed, 1562 insertions(+), 1562 deletions(-) diff --git a/docs/package.json b/docs/package.json index a650645353..92663722e7 100644 --- a/docs/package.json +++ b/docs/package.json @@ -87,8 +87,8 @@ "next-themes": "^0.4.6", "nodemailer": "^7.0.12", "pg": "^8.17.1", - "react": "^19.2.3", - "react-dom": "^19.2.3", + "react": "^19.2.5", + "react-dom": "^19.2.5", "react-email": "^5.2.5", "react-github-btn": "^1.4.0", "react-icons": "^5.5.0", diff --git a/packages/ariakit/package.json b/packages/ariakit/package.json index 8745119df6..201478652e 100644 --- a/packages/ariakit/package.json +++ b/packages/ariakit/package.json @@ -65,8 +65,8 @@ "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", "eslint": "^8.57.1", - "react": "^19.2.3", - "react-dom": "^19.2.3", + "react": "^19.2.5", + "react-dom": "^19.2.5", "rimraf": "^5.0.10", "rollup-plugin-webpack-stats": "^0.2.6", "typescript": "^5.9.3", diff --git a/packages/dev-scripts/package.json b/packages/dev-scripts/package.json index b2f591011a..3bb26f135f 100644 --- a/packages/dev-scripts/package.json +++ b/packages/dev-scripts/package.json @@ -23,8 +23,8 @@ "@types/react-dom": "^19.2.3", "eslint": "^8.57.1", "glob": "^10.5.0", - "react": "^19.2.3", - "react-dom": "^19.2.3", + "react": "^19.2.5", + "react-dom": "^19.2.5", "tinyglobby": "0.2.12", "tsx": "^4.20.6", "typescript": "^5.9.3" diff --git a/packages/mantine/package.json b/packages/mantine/package.json index 7f2a09044a..d44f963c2a 100644 --- a/packages/mantine/package.json +++ b/packages/mantine/package.json @@ -70,8 +70,8 @@ "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", "eslint": "^8.57.1", - "react": "^19.2.3", - "react-dom": "^19.2.3", + "react": "^19.2.5", + "react-dom": "^19.2.5", "rimraf": "^5.0.10", "rollup-plugin-webpack-stats": "^0.2.6", "typescript": "^5.9.3", diff --git a/packages/react/package.json b/packages/react/package.json index 31f3d0fbfb..5d81e7b8f8 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -82,8 +82,8 @@ "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", "eslint": "^8.57.1", - "react": "^19.2.3", - "react-dom": "^19.2.3", + "react": "^19.2.5", + "react-dom": "^19.2.5", "rimraf": "^5.0.10", "rollup-plugin-webpack-stats": "^0.2.6", "typescript": "^5.9.3", diff --git a/packages/server-util/package.json b/packages/server-util/package.json index a89f4cca78..a7784692ed 100644 --- a/packages/server-util/package.json +++ b/packages/server-util/package.json @@ -70,8 +70,8 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "eslint": "^8.57.1", - "react": "^19.2.3", - "react-dom": "^19.2.3", + "react": "^19.2.5", + "react-dom": "^19.2.5", "rollup-plugin-webpack-stats": "^0.2.6", "typescript": "^5.9.3", "vite": "^8.0.3", diff --git a/packages/shadcn/package.json b/packages/shadcn/package.json index 5455cb8d20..8a79fa5014 100644 --- a/packages/shadcn/package.json +++ b/packages/shadcn/package.json @@ -81,8 +81,8 @@ "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", "eslint": "^8.57.1", - "react": "^19.2.3", - "react-dom": "^19.2.3", + "react": "^19.2.5", + "react-dom": "^19.2.5", "rimraf": "^5.0.10", "rollup-plugin-webpack-stats": "^0.2.6", "typescript": "^5.9.3", diff --git a/packages/xl-ai/package.json b/packages/xl-ai/package.json index f363dfa732..39abee4d3a 100644 --- a/packages/xl-ai/package.json +++ b/packages/xl-ai/package.json @@ -86,8 +86,8 @@ "prosemirror-tables": "^1.8.3", "prosemirror-transform": "^1.11.0", "prosemirror-view": "^1.41.4", - "react": "^19.2.3", - "react-dom": "^19.2.3", + "react": "^19.2.5", + "react-dom": "^19.2.5", "react-icons": "^5.5.0", "remark-parse": "^11.0.0", "remark-stringify": "^11.0.0", diff --git a/packages/xl-docx-exporter/package.json b/packages/xl-docx-exporter/package.json index 70339ac16a..dc369e844f 100644 --- a/packages/xl-docx-exporter/package.json +++ b/packages/xl-docx-exporter/package.json @@ -68,8 +68,8 @@ "@types/react-dom": "^19.2.3", "@zip.js/zip.js": "^2.8.8", "eslint": "^8.57.1", - "react": "^19.2.3", - "react-dom": "^19.2.3", + "react": "^19.2.5", + "react-dom": "^19.2.5", "rollup-plugin-webpack-stats": "^0.2.6", "typescript": "^5.9.3", "vite": "^8.0.3", diff --git a/packages/xl-email-exporter/package.json b/packages/xl-email-exporter/package.json index b492f52a11..2caf73646e 100644 --- a/packages/xl-email-exporter/package.json +++ b/packages/xl-email-exporter/package.json @@ -54,15 +54,15 @@ "email": "email dev" }, "dependencies": { - "web-streams-polyfill": "^4.2.0", "@blocknote/core": "0.48.0", "@blocknote/react": "0.48.0", "@react-email/components": "^1.0.5", "@react-email/render": "^2.0.4", "buffer": "^6.0.3", - "react": "^19.2.3", - "react-dom": "^19.2.3", - "react-email": "^5.2.5" + "react": "^19.2.5", + "react-dom": "^19.2.5", + "react-email": "^5.2.5", + "web-streams-polyfill": "^4.2.0" }, "devDependencies": { "@types/jsdom": "^21.1.7", diff --git a/packages/xl-multi-column/package.json b/packages/xl-multi-column/package.json index e593356b41..0ec79e481b 100644 --- a/packages/xl-multi-column/package.json +++ b/packages/xl-multi-column/package.json @@ -66,8 +66,8 @@ "@types/react-dom": "^19.2.3", "eslint": "^8.57.1", "jsdom": "^25.0.1", - "react": "^19.2.3", - "react-dom": "^19.2.3", + "react": "^19.2.5", + "react-dom": "^19.2.5", "rimraf": "^5.0.10", "rollup-plugin-webpack-stats": "^0.2.6", "typescript": "^5.9.3", diff --git a/packages/xl-odt-exporter/package.json b/packages/xl-odt-exporter/package.json index d7a7a66b20..65abcee9d7 100644 --- a/packages/xl-odt-exporter/package.json +++ b/packages/xl-odt-exporter/package.json @@ -68,8 +68,8 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "eslint": "^8.57.1", - "react": "^19.2.3", - "react-dom": "^19.2.3", + "react": "^19.2.5", + "react-dom": "^19.2.5", "rollup-plugin-webpack-stats": "^0.2.6", "typescript": "^5.9.3", "vite": "^8.0.3", diff --git a/packages/xl-pdf-exporter/package.json b/packages/xl-pdf-exporter/package.json index 1251fa5538..cf847722ee 100644 --- a/packages/xl-pdf-exporter/package.json +++ b/packages/xl-pdf-exporter/package.json @@ -72,8 +72,8 @@ "eslint": "^8.57.1", "jest-image-snapshot": "^6.5.1", "pdf-to-img": "^4.5.0", - "react": "^19.2.3", - "react-dom": "^19.2.3", + "react": "^19.2.5", + "react-dom": "^19.2.5", "react-element-to-jsx-string": "^17.0.1", "rollup-plugin-webpack-stats": "^0.2.6", "typescript": "^5.9.3", diff --git a/playground/package.json b/playground/package.json index 7ab5283998..451e27721b 100644 --- a/playground/package.json +++ b/playground/package.json @@ -54,8 +54,8 @@ "ai": "^6.0.5", "autoprefixer": "10.4.21", "docx": "^9.5.1", - "react": "^19.2.3", - "react-dom": "^19.2.3", + "react": "^19.2.5", + "react-dom": "^19.2.5", "react-icons": "^5.5.0", "react-router-dom": "^6.30.1", "y-partykit": "^0.0.25", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index adea560a4e..34ce686bac 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -80,7 +80,7 @@ importers: version: 3.1022.0 '@base-ui/react': specifier: ^1.1.0 - version: 1.3.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 1.3.0(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@blocknote/ariakit': specifier: workspace:* version: link:../packages/ariakit @@ -122,61 +122,61 @@ importers: version: link:../packages/xl-pdf-exporter '@fumadocs/base-ui': specifier: 16.5.0 - version: 16.5.0(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.4))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tailwindcss@4.2.2) + version: 16.5.0(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tailwindcss@4.2.2) '@liveblocks/client': specifier: ^3.17.0 version: 3.17.0(@types/json-schema@7.0.15) '@liveblocks/react': specifier: ^3.17.0 - version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.4) + version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.5) '@liveblocks/react-blocknote': specifier: ^3.17.0 - version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30) + version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30) '@liveblocks/react-tiptap': specifier: ^3.17.0 - version: 3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30)) + version: 3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30)) '@liveblocks/react-ui': specifier: ^3.17.0 - version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) '@marsidev/react-turnstile': specifier: ^1.4.2 - version: 1.5.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 1.5.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@mui/icons-material': specifier: ^5.16.1 - version: 5.18.0(@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react@19.2.4) + version: 5.18.0(@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@types/react@19.2.14)(react@19.2.5) '@mui/material': specifier: ^5.16.1 - version: 5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@orama/orama': specifier: ^3.1.18 version: 3.1.18 '@polar-sh/better-auth': specifier: ^1.6.4 - version: 1.8.3(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(pg@8.20.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))))(react-dom@19.2.4(react@19.2.4))(react-is@19.2.4)(react@19.2.4)(redux@5.0.1)(zod@4.3.6) + version: 1.8.3(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))))(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1)(zod@4.3.6) '@polar-sh/sdk': specifier: ^0.42.2 version: 0.42.5 '@react-email/components': specifier: ^1.0.4 - version: 1.0.11(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 1.0.11(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@react-email/render': specifier: ^2.0.4 - version: 2.0.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 2.0.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@react-pdf/renderer': specifier: ^4.3.0 - version: 4.3.2(react@19.2.4) + version: 4.3.2(react@19.2.5) '@sentry/nextjs': specifier: ^10.34.0 - version: 10.47.0(@opentelemetry/context-async-hooks@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/core@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.1))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4)(webpack@5.105.4(esbuild@0.27.5)) + version: 10.47.0(@opentelemetry/context-async-hooks@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/core@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.1))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(webpack@5.105.4(esbuild@0.27.5)) '@shikijs/core': specifier: ^3.19.0 version: 3.23.0 @@ -215,7 +215,7 @@ importers: version: 3.1.1(@uppy/core@3.13.1) '@uppy/react': specifier: ^3.4.0 - version: 3.4.0(@uppy/core@3.13.1)(@uppy/dashboard@3.9.1(@uppy/core@3.13.1))(@uppy/drag-drop@3.1.1(@uppy/core@3.13.1))(@uppy/file-input@3.1.2(@uppy/core@3.13.1))(@uppy/progress-bar@3.1.1(@uppy/core@3.13.1))(@uppy/status-bar@3.3.3(@uppy/core@3.13.1))(react@19.2.4) + version: 3.4.0(@uppy/core@3.13.1)(@uppy/dashboard@3.9.1(@uppy/core@3.13.1))(@uppy/drag-drop@3.1.1(@uppy/core@3.13.1))(@uppy/file-input@3.1.2(@uppy/core@3.13.1))(@uppy/progress-bar@3.1.1(@uppy/core@3.13.1))(@uppy/status-bar@3.3.3(@uppy/core@3.13.1))(react@19.2.5) '@uppy/screen-capture': specifier: ^3.2.0 version: 3.2.0(@uppy/core@3.13.1) @@ -230,16 +230,16 @@ importers: version: 3.6.8(@uppy/core@3.13.1) '@vercel/analytics': specifier: ^1.6.1 - version: 1.6.1(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4) + version: 1.6.1(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5) '@y-sweet/react': specifier: ^0.6.3 - version: 0.6.4(react@19.2.4)(yjs@13.6.30) + version: 0.6.4(react@19.2.5)(yjs@13.6.30) ai: specifier: 6.0.5 version: 6.0.5(zod@4.3.6) better-auth: specifier: ~1.4.15 - version: 1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(pg@8.20.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))) + version: 1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))) better-sqlite3: specifier: ^12.6.2 version: 12.8.0 @@ -248,34 +248,34 @@ importers: version: 0.7.1 framer-motion: specifier: ^12.26.2 - version: 12.38.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 12.38.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) fumadocs-core: specifier: 16.5.0 - version: 16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.4))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6) + version: 16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6) fumadocs-mdx: specifier: ^14.2.6 - version: 14.2.11(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.4))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 14.2.11(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) fumadocs-twoslash: specifier: ^3.1.12 - version: 3.1.15(@fumadocs/base-ui@16.5.0(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.4))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tailwindcss@4.2.2))(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3) + version: 3.1.15(@fumadocs/base-ui@16.5.0(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tailwindcss@4.2.2))(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3) fumadocs-typescript: specifier: ^5.1.1 - version: 5.2.1(f62675999018dc077ad993bfc409ced5) + version: 5.2.1(22723fcc923da32003fad920c4a650ee) fumadocs-ui: specifier: npm:@fumadocs/base-ui@16.5.0 - version: '@fumadocs/base-ui@16.5.0(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.4))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tailwindcss@4.2.2)' + version: '@fumadocs/base-ui@16.5.0(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tailwindcss@4.2.2)' lucide-react: specifier: ^0.562.0 - version: 0.562.0(react@19.2.4) + version: 0.562.0(react@19.2.5) motion: specifier: ^12.28.1 - version: 12.38.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 12.38.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) next: specifier: ^16.1.6 - version: 16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) next-themes: specifier: ^0.4.6 - version: 0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 0.4.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5) nodemailer: specifier: ^7.0.12 version: 7.0.13 @@ -283,23 +283,23 @@ importers: specifier: ^8.17.1 version: 8.20.0 react: - specifier: ^19.2.3 - version: 19.2.4 + specifier: ^19.2.5 + version: 19.2.5 react-dom: - specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + specifier: ^19.2.5 + version: 19.2.5(react@19.2.5) react-email: specifier: ^5.2.5 version: 5.2.10 react-github-btn: specifier: ^1.4.0 - version: 1.4.0(react@19.2.4) + version: 1.4.0(react@19.2.5) react-icons: specifier: ^5.5.0 - version: 5.6.0(react@19.2.4) + version: 5.6.0(react@19.2.5) react-use-measure: specifier: ^2.1.7 - version: 2.1.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 2.1.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5) scroll-into-view-if-needed: specifier: ^3.1.0 version: 3.1.0 @@ -390,19 +390,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -436,19 +436,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -485,19 +485,19 @@ importers: version: link:../../../packages/xl-multi-column '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -531,19 +531,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -577,19 +577,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -623,19 +623,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -669,19 +669,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -715,19 +715,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -761,19 +761,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) tailwindcss: specifier: ^4.1.14 version: 4.2.2 @@ -816,19 +816,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -862,19 +862,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -908,19 +908,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -954,19 +954,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -1000,19 +1000,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -1046,19 +1046,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -1092,19 +1092,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -1138,19 +1138,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -1184,19 +1184,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -1230,19 +1230,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -1282,19 +1282,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -1331,19 +1331,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -1377,19 +1377,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -1423,19 +1423,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -1469,22 +1469,22 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) react-icons: specifier: ^5.5.0 - version: 5.6.0(react@19.2.4) + version: 5.6.0(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -1518,22 +1518,22 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) react-icons: specifier: ^5.5.0 - version: 5.6.0(react@19.2.4) + version: 5.6.0(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -1567,22 +1567,22 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) react-icons: specifier: ^5.5.0 - version: 5.6.0(react@19.2.4) + version: 5.6.0(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -1616,22 +1616,22 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) react-icons: specifier: ^5.5.0 - version: 5.6.0(react@19.2.4) + version: 5.6.0(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -1665,19 +1665,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -1711,19 +1711,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -1757,19 +1757,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -1803,19 +1803,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -1849,13 +1849,13 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) '@uppy/core': specifier: ^3.13.1 version: 3.13.1 @@ -1876,7 +1876,7 @@ importers: version: 3.1.1(@uppy/core@3.13.1) '@uppy/react': specifier: ^3.4.0 - version: 3.4.0(@uppy/core@3.13.1)(@uppy/dashboard@3.9.1(@uppy/core@3.13.1))(@uppy/drag-drop@3.1.1(@uppy/core@3.13.1))(@uppy/file-input@3.1.2(@uppy/core@3.13.1))(@uppy/progress-bar@3.1.1(@uppy/core@3.13.1))(@uppy/status-bar@3.3.3(@uppy/core@3.13.1))(react@19.2.4) + version: 3.4.0(@uppy/core@3.13.1)(@uppy/dashboard@3.9.1(@uppy/core@3.13.1))(@uppy/drag-drop@3.1.1(@uppy/core@3.13.1))(@uppy/file-input@3.1.2(@uppy/core@3.13.1))(@uppy/progress-bar@3.1.1(@uppy/core@3.13.1))(@uppy/status-bar@3.3.3(@uppy/core@3.13.1))(react@19.2.5) '@uppy/screen-capture': specifier: ^3.2.0 version: 3.2.0(@uppy/core@3.13.1) @@ -1891,13 +1891,13 @@ importers: version: 3.6.8(@uppy/core@3.13.1) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) react-icons: specifier: ^5.5.0 - version: 5.6.0(react@19.2.4) + version: 5.6.0(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -1931,19 +1931,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -1977,25 +1977,25 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) '@mui/icons-material': specifier: ^5.16.1 - version: 5.18.0(@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react@19.2.4) + version: 5.18.0(@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@types/react@19.2.14)(react@19.2.5) '@mui/material': specifier: ^5.16.1 - version: 5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -2029,19 +2029,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -2075,19 +2075,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -2121,19 +2121,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -2167,19 +2167,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -2213,19 +2213,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -2259,19 +2259,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -2305,19 +2305,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -2351,19 +2351,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -2397,19 +2397,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -2443,19 +2443,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -2492,19 +2492,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -2541,13 +2541,13 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) '@shikijs/core': specifier: ^3.19.0 version: 3.23.0 @@ -2565,10 +2565,10 @@ importers: version: 3.23.0 react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -2602,19 +2602,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -2648,19 +2648,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -2694,19 +2694,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -2740,19 +2740,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -2792,22 +2792,22 @@ importers: version: link:../../../packages/xl-pdf-exporter '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) '@react-pdf/renderer': specifier: ^4.3.0 - version: 4.3.2(react@19.2.4) + version: 4.3.2(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -2847,19 +2847,19 @@ importers: version: link:../../../packages/xl-multi-column '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -2899,19 +2899,19 @@ importers: version: link:../../../packages/xl-odt-exporter '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -2948,22 +2948,22 @@ importers: version: link:../../../packages/xl-email-exporter '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) '@react-email/render': specifier: ^2.0.4 - version: 2.0.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 2.0.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -2997,19 +2997,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -3043,19 +3043,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -3089,22 +3089,22 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) react-icons: specifier: ^5.5.0 - version: 5.6.0(react@19.2.4) + version: 5.6.0(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -3138,19 +3138,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -3184,22 +3184,22 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) react-icons: specifier: ^5.5.0 - version: 5.6.0(react@19.2.4) + version: 5.6.0(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -3233,22 +3233,22 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) react-icons: specifier: ^5.5.0 - version: 5.6.0(react@19.2.4) + version: 5.6.0(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -3282,22 +3282,22 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) react-icons: specifier: ^5.5.0 - version: 5.6.0(react@19.2.4) + version: 5.6.0(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -3331,19 +3331,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -3377,19 +3377,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -3423,19 +3423,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -3469,19 +3469,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -3515,19 +3515,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -3561,19 +3561,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -3607,19 +3607,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) y-partykit: specifier: ^0.0.25 version: 0.0.25 @@ -3662,31 +3662,31 @@ importers: version: 3.17.0(@types/json-schema@7.0.15) '@liveblocks/react': specifier: ^3.17.0 - version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.4) + version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.5) '@liveblocks/react-blocknote': specifier: ^3.17.0 - version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30) + version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30) '@liveblocks/react-tiptap': specifier: ^3.17.0 - version: 3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30)) + version: 3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30)) '@liveblocks/react-ui': specifier: ^3.17.0 - version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) yjs: specifier: ^13.6.27 version: 13.6.30 @@ -3723,22 +3723,22 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) '@y-sweet/react': specifier: ^0.6.3 - version: 0.6.4(react@19.2.4)(yjs@13.6.30) + version: 0.6.4(react@19.2.5)(yjs@13.6.30) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -3772,19 +3772,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -3818,22 +3818,22 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) '@y-sweet/react': specifier: ^0.6.3 - version: 0.6.4(react@19.2.4)(yjs@13.6.30) + version: 0.6.4(react@19.2.5)(yjs@13.6.30) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -3867,19 +3867,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) y-partykit: specifier: ^0.0.25 version: 0.0.25 @@ -3919,19 +3919,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) y-partykit: specifier: ^0.0.25 version: 0.0.25 @@ -3971,19 +3971,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) y-partykit: specifier: ^0.0.25 version: 0.0.25 @@ -4023,22 +4023,22 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) '@tiptap/core': specifier: ^3.13.0 version: 3.22.3(@tiptap/pm@3.22.3) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -4075,22 +4075,22 @@ importers: version: link:../../../packages/xl-ai '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) ai: specifier: 6.0.5 version: 6.0.5(zod@4.3.6) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -4127,22 +4127,22 @@ importers: version: link:../../../packages/xl-ai '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) ai: specifier: 6.0.5 version: 6.0.5(zod@4.3.6) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -4179,25 +4179,25 @@ importers: version: link:../../../packages/xl-ai '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) ai: specifier: 6.0.5 version: 6.0.5(zod@4.3.6) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) react-icons: specifier: ^5.5.0 - version: 5.6.0(react@19.2.4) + version: 5.6.0(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -4234,22 +4234,22 @@ importers: version: link:../../../packages/xl-ai '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) ai: specifier: 6.0.5 version: 6.0.5(zod@4.3.6) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) y-partykit: specifier: ^0.0.25 version: 0.0.25 @@ -4292,22 +4292,22 @@ importers: version: link:../../../packages/xl-ai '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) ai: specifier: 6.0.5 version: 6.0.5(zod@4.3.6) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) y-partykit: specifier: ^0.0.25 version: 0.0.25 @@ -4353,22 +4353,22 @@ importers: version: link:../../../packages/xl-ai '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) ai: specifier: 6.0.5 version: 6.0.5(zod@4.3.6) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -4405,22 +4405,22 @@ importers: version: link:../../../packages/xl-ai '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) ai: specifier: 6.0.5 version: 6.0.5(zod@4.3.6) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -4454,19 +4454,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -4500,19 +4500,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -4546,19 +4546,19 @@ importers: version: link:../../../packages/shadcn '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react: specifier: ^19.2.3 - version: 19.2.4 + version: 19.2.5 react-dom: specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + version: 19.2.5(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -4577,7 +4577,7 @@ importers: dependencies: '@ariakit/react': specifier: ^0.4.19 - version: 0.4.24(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 0.4.24(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@blocknote/core': specifier: 0.48.0 version: link:../core @@ -4598,11 +4598,11 @@ importers: specifier: ^8.57.1 version: 8.57.1 react: - specifier: ^19.2.3 - version: 19.2.4 + specifier: ^19.2.5 + version: 19.2.5 react-dom: - specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + specifier: ^19.2.5 + version: 19.2.5(react@19.2.5) rimraf: specifier: ^5.0.10 version: 5.0.10 @@ -4835,11 +4835,11 @@ importers: specifier: ^10.5.0 version: 10.5.0 react: - specifier: ^19.2.3 - version: 19.2.4 + specifier: ^19.2.5 + version: 19.2.5 react-dom: - specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + specifier: ^19.2.5 + version: 19.2.5(react@19.2.5) tinyglobby: specifier: 0.2.12 version: 0.2.12 @@ -4860,16 +4860,16 @@ importers: version: link:../react '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) react-icons: specifier: ^5.5.0 - version: 5.6.0(react@19.2.4) + version: 5.6.0(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -4884,11 +4884,11 @@ importers: specifier: ^8.57.1 version: 8.57.1 react: - specifier: ^19.2.3 - version: 19.2.4 + specifier: ^19.2.5 + version: 19.2.5 react-dom: - specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + specifier: ^19.2.5 + version: 19.2.5(react@19.2.5) rimraf: specifier: ^5.0.10 version: 5.0.10 @@ -4918,13 +4918,13 @@ importers: version: 1.2.1 '@floating-ui/react': specifier: ^0.27.18 - version: 0.27.19(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 0.27.19(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@floating-ui/utils': specifier: ^0.2.10 version: 0.2.11 '@tanstack/react-store': specifier: 0.7.7 - version: 0.7.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 0.7.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@tiptap/core': specifier: ^3.13.0 version: 3.22.3(@tiptap/pm@3.22.3) @@ -4933,7 +4933,7 @@ importers: version: 3.22.3 '@tiptap/react': specifier: ^3.13.0 - version: 3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@types/use-sync-external-store': specifier: 1.5.0 version: 1.5.0 @@ -4948,10 +4948,10 @@ importers: version: 4.6.2 react-icons: specifier: ^5.5.0 - version: 5.6.0(react@19.2.4) + version: 5.6.0(react@19.2.5) use-sync-external-store: specifier: 1.6.0 - version: 1.6.0(react@19.2.4) + version: 1.6.0(react@19.2.5) devDependencies: '@types/emoji-mart': specifier: ^3.0.14 @@ -4978,11 +4978,11 @@ importers: specifier: ^8.57.1 version: 8.57.1 react: - specifier: ^19.2.3 - version: 19.2.4 + specifier: ^19.2.5 + version: 19.2.5 react-dom: - specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + specifier: ^19.2.5 + version: 19.2.5(react@19.2.5) rimraf: specifier: ^5.0.10 version: 5.0.10 @@ -5045,11 +5045,11 @@ importers: specifier: ^8.57.1 version: 8.57.1 react: - specifier: ^19.2.3 - version: 19.2.4 + specifier: ^19.2.5 + version: 19.2.5 react-dom: - specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + specifier: ^19.2.5 + version: 19.2.5(react@19.2.5) rollup-plugin-webpack-stats: specifier: ^0.2.6 version: 0.2.6(rollup@4.60.1) @@ -5076,31 +5076,31 @@ importers: version: link:../react '@radix-ui/react-avatar': specifier: ^1.1.10 - version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-dropdown-menu': specifier: ^2.1.16 - version: 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-label': specifier: ^2.1.7 - version: 2.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 2.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-popover': specifier: ^1.1.15 - version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-select': specifier: ^2.2.6 - version: 2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-slot': specifier: ^1.2.3 - version: 1.2.4(@types/react@19.2.14)(react@19.2.4) + version: 1.2.4(@types/react@19.2.14)(react@19.2.5) '@radix-ui/react-tabs': specifier: ^1.1.13 - version: 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-toggle': specifier: ^1.1.10 - version: 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@radix-ui/react-tooltip': specifier: ^1.2.8 - version: 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) autoprefixer: specifier: ^10.4.21 version: 10.4.21(postcss@8.5.8) @@ -5112,10 +5112,10 @@ importers: version: 2.1.1 lucide-react: specifier: ^0.525.0 - version: 0.525.0(react@19.2.4) + version: 0.525.0(react@19.2.5) react-hook-form: specifier: ^7.65.0 - version: 7.72.0(react@19.2.4) + version: 7.72.0(react@19.2.5) tailwind-merge: specifier: ^2.6.0 version: 2.6.1 @@ -5142,11 +5142,11 @@ importers: specifier: ^8.57.1 version: 8.57.1 react: - specifier: ^19.2.3 - version: 19.2.4 + specifier: ^19.2.5 + version: 19.2.5 react-dom: - specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + specifier: ^19.2.5 + version: 19.2.5(react@19.2.5) rimraf: specifier: ^5.0.10 version: 5.0.10 @@ -5173,7 +5173,7 @@ importers: version: 4.0.2(zod@4.3.6) '@ai-sdk/react': specifier: 3.0.5 - version: 3.0.5(react@19.2.4)(zod@4.3.6) + version: 3.0.5(react@19.2.5)(zod@4.3.6) '@blocknote/core': specifier: 0.48.0 version: link:../core @@ -5185,7 +5185,7 @@ importers: version: link:../react '@floating-ui/react': specifier: ^0.27.18 - version: 0.27.19(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 0.27.19(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@handlewithcare/prosemirror-suggest-changes': specifier: ^0.1.8 version: 0.1.8(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-transform@1.12.0)(prosemirror-view@1.41.8) @@ -5220,14 +5220,14 @@ importers: specifier: ^1.41.4 version: 1.41.8 react: - specifier: ^19.2.3 - version: 19.2.4 + specifier: ^19.2.5 + version: 19.2.5 react-dom: - specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + specifier: ^19.2.5 + version: 19.2.5(react@19.2.5) react-icons: specifier: ^5.5.0 - version: 5.6.0(react@19.2.4) + version: 5.6.0(react@19.2.5) remark-parse: specifier: ^11.0.0 version: 11.0.0 @@ -5424,11 +5424,11 @@ importers: specifier: ^8.57.1 version: 8.57.1 react: - specifier: ^19.2.3 - version: 19.2.4 + specifier: ^19.2.5 + version: 19.2.5 react-dom: - specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + specifier: ^19.2.5 + version: 19.2.5(react@19.2.5) rollup-plugin-webpack-stats: specifier: ^0.2.6 version: 0.2.6(rollup@4.60.1) @@ -5458,19 +5458,19 @@ importers: version: link:../react '@react-email/components': specifier: ^1.0.5 - version: 1.0.11(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 1.0.11(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@react-email/render': specifier: ^2.0.4 - version: 2.0.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 2.0.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) buffer: specifier: ^6.0.3 version: 6.0.3 react: - specifier: ^19.2.3 - version: 19.2.4 + specifier: ^19.2.5 + version: 19.2.5 react-dom: - specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + specifier: ^19.2.5 + version: 19.2.5(react@19.2.5) react-email: specifier: ^5.2.5 version: 5.2.10 @@ -5534,7 +5534,7 @@ importers: version: 1.41.8 react-icons: specifier: ^5.5.0 - version: 5.6.0(react@19.2.4) + version: 5.6.0(react@19.2.5) devDependencies: '@types/react': specifier: ^19.2.3 @@ -5549,11 +5549,11 @@ importers: specifier: ^25.0.1 version: 25.0.1(canvas@2.11.2) react: - specifier: ^19.2.3 - version: 19.2.4 + specifier: ^19.2.5 + version: 19.2.5 react-dom: - specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + specifier: ^19.2.5 + version: 19.2.5(react@19.2.5) rimraf: specifier: ^5.0.10 version: 5.0.10 @@ -5593,7 +5593,7 @@ importers: devDependencies: '@testing-library/react': specifier: ^16.3.0 - version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@types/react': specifier: ^19.2.3 version: 19.2.14 @@ -5604,11 +5604,11 @@ importers: specifier: ^8.57.1 version: 8.57.1 react: - specifier: ^19.2.3 - version: 19.2.4 + specifier: ^19.2.5 + version: 19.2.5 react-dom: - specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + specifier: ^19.2.5 + version: 19.2.5(react@19.2.5) rollup-plugin-webpack-stats: specifier: ^0.2.6 version: 0.2.6(rollup@4.60.1) @@ -5641,7 +5641,7 @@ importers: version: link:../xl-multi-column '@react-pdf/renderer': specifier: ^4.3.0 - version: 4.3.2(react@19.2.4) + version: 4.3.2(react@19.2.5) buffer: specifier: ^6.0.3 version: 6.0.3 @@ -5651,7 +5651,7 @@ importers: devDependencies: '@testing-library/react': specifier: ^16.3.0 - version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@types/jest-image-snapshot': specifier: ^6.4.0 version: 6.4.1 @@ -5674,14 +5674,14 @@ importers: specifier: ^4.5.0 version: 4.5.0 react: - specifier: ^19.2.3 - version: 19.2.4 + specifier: ^19.2.5 + version: 19.2.5 react-dom: - specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + specifier: ^19.2.5 + version: 19.2.5(react@19.2.5) react-element-to-jsx-string: specifier: ^17.0.1 - version: 17.0.1(react-dom@19.2.4(react@19.2.4))(react-is@19.2.4)(react@19.2.4) + version: 17.0.1(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5) rollup-plugin-webpack-stats: specifier: ^0.2.6 version: 0.2.6(rollup@4.60.1) @@ -5750,40 +5750,40 @@ importers: version: link:../packages/xl-pdf-exporter '@emotion/react': specifier: 11.14.0 - version: 11.14.0(@types/react@19.2.14)(react@19.2.4) + version: 11.14.0(@types/react@19.2.14)(react@19.2.5) '@emotion/styled': specifier: 11.14.1 - version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4) + version: 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5) '@liveblocks/client': specifier: ^3.17.0 version: 3.17.0(@types/json-schema@7.0.15) '@liveblocks/react': specifier: ^3.17.0 - version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.4) + version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.5) '@liveblocks/react-blocknote': specifier: ^3.17.0 - version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30) + version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30) '@liveblocks/react-tiptap': specifier: ^3.17.0 - version: 3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30)) + version: 3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30)) '@liveblocks/react-ui': specifier: ^3.17.0 - version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@mantine/core': specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 - version: 8.3.18(react@19.2.4) + version: 8.3.18(react@19.2.5) '@mantine/utils': specifier: ^6.0.22 - version: 6.0.22(react@19.2.4) + version: 6.0.22(react@19.2.5) '@mui/icons-material': specifier: ^5.18.0 - version: 5.18.0(@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react@19.2.4) + version: 5.18.0(@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@types/react@19.2.14)(react@19.2.5) '@mui/material': specifier: ^5.18.0 - version: 5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@uppy/core': specifier: ^3.13.1 version: 3.13.1 @@ -5804,7 +5804,7 @@ importers: version: 3.1.1(@uppy/core@3.13.1) '@uppy/react': specifier: ^3.4.0 - version: 3.4.0(@uppy/core@3.13.1)(@uppy/dashboard@3.9.1(@uppy/core@3.13.1))(@uppy/drag-drop@3.1.1(@uppy/core@3.13.1))(@uppy/file-input@3.1.2(@uppy/core@3.13.1))(@uppy/progress-bar@3.1.1(@uppy/core@3.13.1))(@uppy/status-bar@3.3.3(@uppy/core@3.13.1))(react@19.2.4) + version: 3.4.0(@uppy/core@3.13.1)(@uppy/dashboard@3.9.1(@uppy/core@3.13.1))(@uppy/drag-drop@3.1.1(@uppy/core@3.13.1))(@uppy/file-input@3.1.2(@uppy/core@3.13.1))(@uppy/progress-bar@3.1.1(@uppy/core@3.13.1))(@uppy/status-bar@3.3.3(@uppy/core@3.13.1))(react@19.2.5) '@uppy/screen-capture': specifier: ^3.2.0 version: 3.2.0(@uppy/core@3.13.1) @@ -5819,7 +5819,7 @@ importers: version: 3.6.8(@uppy/core@3.13.1) '@y-sweet/react': specifier: ^0.6.4 - version: 0.6.4(react@19.2.4)(yjs@13.6.30) + version: 0.6.4(react@19.2.5)(yjs@13.6.30) ai: specifier: 6.0.5 version: 6.0.5(zod@4.3.6) @@ -5830,17 +5830,17 @@ importers: specifier: ^9.5.1 version: 9.5.1 react: - specifier: ^19.2.3 - version: 19.2.4 + specifier: ^19.2.5 + version: 19.2.5 react-dom: - specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + specifier: ^19.2.5 + version: 19.2.5(react@19.2.5) react-icons: specifier: ^5.5.0 - version: 5.6.0(react@19.2.4) + version: 5.6.0(react@19.2.5) react-router-dom: specifier: ^6.30.1 - version: 6.30.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + version: 6.30.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) y-partykit: specifier: ^0.0.25 version: 0.0.25 @@ -5947,14 +5947,14 @@ importers: specifier: ^0.6.7 version: 0.6.7 react: - specifier: ^19.2.3 - version: 19.2.4 + specifier: ^19.2.5 + version: 19.2.5 react-dom: - specifier: ^19.2.3 - version: 19.2.4(react@19.2.4) + specifier: ^19.2.5 + version: 19.2.5(react@19.2.5) react-icons: specifier: ^5.5.0 - version: 5.6.0(react@19.2.4) + version: 5.6.0(react@19.2.5) rimraf: specifier: ^5.0.10 version: 5.0.10 @@ -14917,10 +14917,10 @@ packages: peerDependencies: react: '>=16.8.0' - react-dom@19.2.4: - resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==} + react-dom@19.2.5: + resolution: {integrity: sha512-J5bAZz+DXMMwW/wV3xzKke59Af6CHY7G4uYLN1OvBcKEsWOs4pQExj86BBKamxl/Ik5bx9whOrvBlSDfWzgSag==} peerDependencies: - react: ^19.2.4 + react: ^19.2.5 react-element-to-jsx-string@17.0.1: resolution: {integrity: sha512-GMX16Yo+nuqDq4GlrHGaK/coQKEuiXaKEg8tCfKnOC34F2LiUYE6JeQKyirh0YgjhTXUxxONcj1gZa86OW1R6A==} @@ -15069,8 +15069,8 @@ packages: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} - react@19.2.4: - resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==} + react@19.2.5: + resolution: {integrity: sha512-llUJLzz1zTUBrskt2pwZgLq59AemifIftw4aB7JxOqf1HY2FDaGDxgwpAPVzHU1kdWabH7FauP4i1oEeer2WCA==} engines: {node: '>=0.10.0'} readable-stream@2.3.8: @@ -16611,12 +16611,12 @@ snapshots: dependencies: json-schema: 0.4.0 - '@ai-sdk/react@3.0.5(react@19.2.4)(zod@4.3.6)': + '@ai-sdk/react@3.0.5(react@19.2.5)(zod@4.3.6)': dependencies: '@ai-sdk/provider-utils': 4.0.2(zod@4.3.6) ai: 6.0.5(zod@4.3.6) - react: 19.2.4 - swr: 2.4.1(react@19.2.4) + react: 19.2.5 + swr: 2.4.1(react@19.2.5) throttleit: 2.1.0 transitivePeerDependencies: - zod @@ -16625,19 +16625,19 @@ snapshots: '@ariakit/core@0.4.18': {} - '@ariakit/react-core@0.4.24(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@ariakit/react-core@0.4.24(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@ariakit/core': 0.4.18 '@floating-ui/dom': 1.7.6 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - use-sync-external-store: 1.6.0(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + use-sync-external-store: 1.6.0(react@19.2.5) - '@ariakit/react@0.4.24(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@ariakit/react@0.4.24(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@ariakit/react-core': 0.4.24(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@ariakit/react-core': 0.4.24(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) '@asamuzakjp/css-color@3.2.0': dependencies: @@ -17974,27 +17974,27 @@ snapshots: '@babel/helper-string-parser': 7.27.1 '@babel/helper-validator-identifier': 7.28.5 - '@base-ui/react@1.3.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@base-ui/react@1.3.0(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@babel/runtime': 7.29.2 - '@base-ui/utils': 0.2.6(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@floating-ui/react-dom': 2.1.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@base-ui/utils': 0.2.6(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@floating-ui/react-dom': 2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@floating-ui/utils': 0.2.11 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) tabbable: 6.4.0 - use-sync-external-store: 1.6.0(react@19.2.4) + use-sync-external-store: 1.6.0(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 - '@base-ui/utils@0.2.6(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@base-ui/utils@0.2.6(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@babel/runtime': 7.29.2 '@floating-ui/utils': 0.2.11 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) reselect: 5.1.1 - use-sync-external-store: 1.6.0(react@19.2.4) + use-sync-external-store: 1.6.0(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 @@ -18094,17 +18094,17 @@ snapshots: '@emotion/memoize@0.9.0': {} - '@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4)': + '@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5)': dependencies: '@babel/runtime': 7.29.2 '@emotion/babel-plugin': 11.13.5 '@emotion/cache': 11.14.0 '@emotion/serialize': 1.3.3 - '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.4) + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.5) '@emotion/utils': 1.4.2 '@emotion/weak-memoize': 0.4.0 hoist-non-react-statics: 3.3.2 - react: 19.2.4 + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 transitivePeerDependencies: @@ -18120,16 +18120,16 @@ snapshots: '@emotion/sheet@1.4.0': {} - '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)': + '@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)': dependencies: '@babel/runtime': 7.29.2 '@emotion/babel-plugin': 11.13.5 '@emotion/is-prop-valid': 1.4.0 - '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.4) + '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.5) '@emotion/serialize': 1.3.3 - '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.4) + '@emotion/use-insertion-effect-with-fallbacks': 1.2.0(react@19.2.5) '@emotion/utils': 1.4.2 - react: 19.2.4 + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 transitivePeerDependencies: @@ -18137,9 +18137,9 @@ snapshots: '@emotion/unitless@0.10.0': {} - '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.2.4)': + '@emotion/use-insertion-effect-with-fallbacks@1.2.0(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 '@emotion/utils@1.4.2': {} @@ -18456,18 +18456,18 @@ snapshots: '@floating-ui/core': 1.7.5 '@floating-ui/utils': 0.2.11 - '@floating-ui/react-dom@2.1.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@floating-ui/react-dom@2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@floating-ui/dom': 1.7.6 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - '@floating-ui/react@0.27.19(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@floating-ui/react@0.27.19(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@floating-ui/react-dom': 2.1.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@floating-ui/react-dom': 2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@floating-ui/utils': 0.2.11 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) tabbable: 6.4.0 '@floating-ui/utils@0.2.11': {} @@ -18478,34 +18478,34 @@ snapshots: dependencies: '@formatjs/fast-memoize': 3.1.1 - '@fumadocs/base-ui@16.5.0(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.4))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tailwindcss@4.2.2)': + '@fumadocs/base-ui@16.5.0(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tailwindcss@4.2.2)': dependencies: - '@base-ui/react': 1.3.0(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@fumadocs/ui': 16.5.0(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.4))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tailwindcss@4.2.2) + '@base-ui/react': 1.3.0(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@fumadocs/ui': 16.5.0(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tailwindcss@4.2.2) class-variance-authority: 0.7.1 - fumadocs-core: 16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.4))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6) - lucide-react: 0.563.0(react@19.2.4) - next-themes: 0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - react-medium-image-zoom: 5.4.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + fumadocs-core: 16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6) + lucide-react: 0.563.0(react@19.2.5) + next-themes: 0.4.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + react-medium-image-zoom: 5.4.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) scroll-into-view-if-needed: 3.1.0 optionalDependencies: '@types/react': 19.2.14 - next: 16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + next: 16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) tailwindcss: 4.2.2 - '@fumadocs/ui@16.5.0(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.4))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tailwindcss@4.2.2)': + '@fumadocs/ui@16.5.0(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tailwindcss@4.2.2)': dependencies: - fumadocs-core: 16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.4))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6) - next-themes: 0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + fumadocs-core: 16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6) + next-themes: 0.4.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5) postcss-selector-parser: 7.1.1 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) tailwind-merge: 3.5.0 optionalDependencies: '@types/react': 19.2.14 - next: 16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + next: 16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) tailwindcss: 4.2.2 '@handlewithcare/prosemirror-inputrules@0.1.4(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)': @@ -18815,19 +18815,19 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@liveblocks/react-blocknote@3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)': + '@liveblocks/react-blocknote@3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)': dependencies: '@blocknote/core': link:packages/core '@blocknote/react': link:packages/react '@liveblocks/client': 3.17.0(@types/json-schema@7.0.15) '@liveblocks/core': 3.17.0(@types/json-schema@7.0.15) - '@liveblocks/react': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.4) - '@liveblocks/react-tiptap': 3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30)) - '@liveblocks/react-ui': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@liveblocks/react': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.5) + '@liveblocks/react-tiptap': 3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30)) + '@liveblocks/react-ui': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@liveblocks/yjs': 3.17.0(@types/json-schema@7.0.15)(yjs@13.6.30) '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) vitest-tsconfig-paths: 3.4.1 optionalDependencies: '@types/react': 19.2.14 @@ -18844,22 +18844,22 @@ snapshots: - y-protocols - yjs - '@liveblocks/react-tiptap@3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(y-protocols@1.0.7(yjs@13.6.30))': + '@liveblocks/react-tiptap@3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))': dependencies: - '@floating-ui/react-dom': 2.1.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@floating-ui/react-dom': 2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@liveblocks/client': 3.17.0(@types/json-schema@7.0.15) '@liveblocks/core': 3.17.0(@types/json-schema@7.0.15) - '@liveblocks/react': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.4) - '@liveblocks/react-ui': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@liveblocks/react': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.5) + '@liveblocks/react-ui': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@liveblocks/yjs': 3.17.0(@types/json-schema@7.0.15)(yjs@13.6.30) '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) '@tiptap/pm': 3.22.3 - '@tiptap/react': 3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@tiptap/react': 3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@tiptap/suggestion': 2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3) - cmdk: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - radix-ui: 1.4.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + cmdk: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + radix-ui: 1.4.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) y-prosemirror: 1.3.7(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30) yjs: 13.6.30 optionalDependencies: @@ -18872,32 +18872,32 @@ snapshots: - prosemirror-view - y-protocols - '@liveblocks/react-ui@3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@liveblocks/react-ui@3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@floating-ui/react-dom': 2.1.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@floating-ui/react-dom': 2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@liveblocks/client': 3.17.0(@types/json-schema@7.0.15) '@liveblocks/core': 3.17.0(@types/json-schema@7.0.15) - '@liveblocks/react': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.4) - frimousse: 0.2.0(react@19.2.4) + '@liveblocks/react': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.5) + frimousse: 0.2.0(react@19.2.5) marked: 15.0.12 - radix-ui: 1.4.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + radix-ui: 1.4.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) slate: 0.110.2 slate-history: 0.110.3(slate@0.110.2) slate-hyperscript: 0.100.0(slate@0.110.2) - slate-react: 0.110.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(slate@0.110.2) + slate-react: 0.110.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(slate@0.110.2) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) transitivePeerDependencies: - '@types/json-schema' - '@liveblocks/react@3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.4)': + '@liveblocks/react@3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.5)': dependencies: '@liveblocks/client': 3.17.0(@types/json-schema@7.0.15) '@liveblocks/core': 3.17.0(@types/json-schema@7.0.15) - react: 19.2.4 + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -18917,27 +18917,27 @@ snapshots: '@ltd/j-toml@1.38.0': {} - '@mantine/core@8.3.18(@mantine/hooks@8.3.18(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@mantine/core@8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@floating-ui/react': 0.27.19(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@mantine/hooks': 8.3.18(react@19.2.4) + '@floating-ui/react': 0.27.19(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@mantine/hooks': 8.3.18(react@19.2.5) clsx: 2.1.1 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - react-number-format: 5.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4) - react-textarea-autosize: 8.5.9(@types/react@19.2.14)(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + react-number-format: 5.4.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.5) + react-textarea-autosize: 8.5.9(@types/react@19.2.14)(react@19.2.5) type-fest: 4.41.0 transitivePeerDependencies: - '@types/react' - '@mantine/hooks@8.3.18(react@19.2.4)': + '@mantine/hooks@8.3.18(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 - '@mantine/utils@6.0.22(react@19.2.4)': + '@mantine/utils@6.0.22(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 '@mapbox/node-pre-gyp@1.0.11': dependencies: @@ -18955,10 +18955,10 @@ snapshots: - supports-color optional: true - '@marsidev/react-turnstile@1.5.0(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@marsidev/react-turnstile@1.5.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) '@mdx-js/mdx@3.1.1': dependencies: @@ -19010,84 +19010,84 @@ snapshots: '@mui/core-downloads-tracker@5.18.0': {} - '@mui/icons-material@5.18.0(@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)': + '@mui/icons-material@5.18.0(@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)': dependencies: '@babel/runtime': 7.29.2 - '@mui/material': 5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 + '@mui/material': 5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@babel/runtime': 7.29.2 '@mui/core-downloads-tracker': 5.18.0 - '@mui/system': 5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4) + '@mui/system': 5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5) '@mui/types': 7.2.24(@types/react@19.2.14) - '@mui/utils': 5.17.1(@types/react@19.2.14)(react@19.2.4) + '@mui/utils': 5.17.1(@types/react@19.2.14)(react@19.2.5) '@popperjs/core': 2.11.8 '@types/react-transition-group': 4.4.12(@types/react@19.2.14) clsx: 2.1.1 csstype: 3.2.3 prop-types: 15.8.1 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) react-is: 19.2.4 - react-transition-group: 4.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + react-transition-group: 4.4.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.4) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4) + '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.5) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5) '@types/react': 19.2.14 - '@mui/private-theming@5.17.1(@types/react@19.2.14)(react@19.2.4)': + '@mui/private-theming@5.17.1(@types/react@19.2.14)(react@19.2.5)': dependencies: '@babel/runtime': 7.29.2 - '@mui/utils': 5.17.1(@types/react@19.2.14)(react@19.2.4) + '@mui/utils': 5.17.1(@types/react@19.2.14)(react@19.2.5) prop-types: 15.8.1 - react: 19.2.4 + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@mui/styled-engine@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4)': + '@mui/styled-engine@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(react@19.2.5)': dependencies: '@babel/runtime': 7.29.2 '@emotion/cache': 11.14.0 '@emotion/serialize': 1.3.3 csstype: 3.2.3 prop-types: 15.8.1 - react: 19.2.4 + react: 19.2.5 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.4) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4) + '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.5) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5) - '@mui/system@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4)': + '@mui/system@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5)': dependencies: '@babel/runtime': 7.29.2 - '@mui/private-theming': 5.17.1(@types/react@19.2.14)(react@19.2.4) - '@mui/styled-engine': 5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4))(react@19.2.4) + '@mui/private-theming': 5.17.1(@types/react@19.2.14)(react@19.2.5) + '@mui/styled-engine': 5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(react@19.2.5) '@mui/types': 7.2.24(@types/react@19.2.14) - '@mui/utils': 5.17.1(@types/react@19.2.14)(react@19.2.4) + '@mui/utils': 5.17.1(@types/react@19.2.14)(react@19.2.5) clsx: 2.1.1 csstype: 3.2.3 prop-types: 15.8.1 - react: 19.2.4 + react: 19.2.5 optionalDependencies: - '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.4) - '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.4))(@types/react@19.2.14)(react@19.2.4) + '@emotion/react': 11.14.0(@types/react@19.2.14)(react@19.2.5) + '@emotion/styled': 11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5) '@types/react': 19.2.14 '@mui/types@7.2.24(@types/react@19.2.14)': optionalDependencies: '@types/react': 19.2.14 - '@mui/utils@5.17.1(@types/react@19.2.14)(react@19.2.4)': + '@mui/utils@5.17.1(@types/react@19.2.14)(react@19.2.5)': dependencies: '@babel/runtime': 7.29.2 '@mui/types': 7.2.24(@types/react@19.2.14) '@types/prop-types': 15.7.15 clsx: 2.1.1 prop-types: 15.8.1 - react: 19.2.4 + react: 19.2.5 react-is: 19.2.4 optionalDependencies: '@types/react': 19.2.14 @@ -19575,11 +19575,11 @@ snapshots: dependencies: playwright: 1.51.1 - '@polar-sh/better-auth@1.8.3(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(pg@8.20.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))))(react-dom@19.2.4(react@19.2.4))(react-is@19.2.4)(react@19.2.4)(redux@5.0.1)(zod@4.3.6)': + '@polar-sh/better-auth@1.8.3(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))))(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1)(zod@4.3.6)': dependencies: - '@polar-sh/checkout': 0.2.0(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react-is@19.2.4)(react@19.2.4)(redux@5.0.1) + '@polar-sh/checkout': 0.2.0(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1) '@polar-sh/sdk': 0.42.5 - better-auth: 1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(pg@8.20.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))) + better-auth: 1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))) zod: 4.3.6 transitivePeerDependencies: - '@stripe/react-stripe-js' @@ -19591,17 +19591,17 @@ snapshots: - react-is - redux - '@polar-sh/checkout@0.2.0(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react-is@19.2.4)(react@19.2.4)(redux@5.0.1)': + '@polar-sh/checkout@0.2.0(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1)': dependencies: '@polar-sh/sdk': 0.42.5 - '@polar-sh/ui': 0.1.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react-is@19.2.4)(react@19.2.4)(redux@5.0.1) - '@stripe/react-stripe-js': 4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@polar-sh/ui': 0.1.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1) + '@stripe/react-stripe-js': 4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@stripe/stripe-js': 7.9.0 event-source-plus: 0.1.15 eventemitter3: 5.0.4 - markdown-to-jsx: 8.0.0(react@19.2.4) - react: 19.2.4 - react-hook-form: 7.70.0(react@19.2.4) + markdown-to-jsx: 8.0.0(react@19.2.5) + react: 19.2.5 + react-hook-form: 7.70.0(react@19.2.5) transitivePeerDependencies: - '@types/react' - '@types/react-dom' @@ -19614,39 +19614,39 @@ snapshots: standardwebhooks: 1.0.0 zod: 4.3.6 - '@polar-sh/ui@0.1.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react-is@19.2.4)(react@19.2.4)(redux@5.0.1)': - dependencies: - '@radix-ui/react-accordion': 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-alert-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-checkbox': 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-dropdown-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-label': 2.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-popover': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-radio-group': 1.3.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-select': 2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-separator': 1.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-slot': 1.2.4(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-switch': 1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-toast': 1.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-tooltip': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@tanstack/react-table': 8.21.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@polar-sh/ui@0.1.2(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1)': + dependencies: + '@radix-ui/react-accordion': 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-alert-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-checkbox': 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-dropdown-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-label': 2.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-popover': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-radio-group': 1.3.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-select': 2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-separator': 1.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.2.4(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-switch': 1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-toast': 1.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-tooltip': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@tanstack/react-table': 8.21.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5) class-variance-authority: 0.7.1 clsx: 2.1.1 - cmdk: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + cmdk: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) countries-list: 3.3.0 date-fns: 4.1.0 - input-otp: 1.4.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - lucide-react: 0.547.0(react@19.2.4) - react: 19.2.4 - react-day-picker: 9.14.0(react@19.2.4) - react-dom: 19.2.4(react@19.2.4) - react-hook-form: 7.70.0(react@19.2.4) - react-timeago: 8.3.0(react@19.2.4) - recharts: 3.8.1(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react-is@19.2.4)(react@19.2.4)(redux@5.0.1) + input-otp: 1.4.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + lucide-react: 0.547.0(react@19.2.5) + react: 19.2.5 + react-day-picker: 9.14.0(react@19.2.5) + react-dom: 19.2.5(react@19.2.5) + react-hook-form: 7.70.0(react@19.2.5) + react-timeago: 8.3.0(react@19.2.5) + recharts: 3.8.1(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1) tailwind-merge: 3.5.0 transitivePeerDependencies: - '@types/react' @@ -19671,925 +19671,925 @@ snapshots: '@radix-ui/primitive@1.1.3': {} - '@radix-ui/react-accessible-icon@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-accessible-icon@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-accordion@1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-accordion@1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-alert-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-aspect-ratio@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-aspect-ratio@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-avatar@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-avatar@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-avatar@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-avatar@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-context': 1.1.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-context': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-checkbox@1.3.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-checkbox@1.3.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-collapsible@1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.14)(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-context-menu@2.2.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-context-menu@2.2.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-context@1.1.2(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-context@1.1.2(@types/react@19.2.14)(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-context@1.1.3(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-context@1.1.3(@types/react@19.2.14)(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-dialog@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) aria-hidden: 1.2.6 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-direction@1.1.1(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-direction@1.1.1(@types/react@19.2.14)(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-dropdown-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.14)(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-form@0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-form@0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-label': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-label': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-hover-card@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-hover-card@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-id@1.1.1(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-id@1.1.1(@types/react@19.2.14)(react@19.2.5)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-label@2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-label@2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-label@2.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-label@2.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-menu@2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) aria-hidden: 1.2.6 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-menubar@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-menubar@1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-navigation-menu@1.2.14(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-navigation-menu@1.2.14(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-one-time-password-field@0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-one-time-password-field@0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/number': 1.1.1 '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-password-toggle-field@0.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-password-toggle-field@0.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-popover@1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) aria-hidden: 1.2.6 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': - dependencies: - '@floating-ui/react-dom': 2.1.8(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4) + '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@floating-ui/react-dom': 2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.5) '@radix-ui/rect': 1.1.1 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-presence@1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-primitive@2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-primitive@2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-slot': 1.2.4(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-slot': 1.2.4(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-progress@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-progress@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-radio-group@1.3.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-radio-group@1.3.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-roving-focus@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-scroll-area@1.2.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-scroll-area@1.2.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/number': 1.1.1 '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-select@2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-select@2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/number': 1.1.1 '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) aria-hidden: 1.2.6 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-separator@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-separator@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-separator@1.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-separator@1.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-slider@1.3.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-slider@1.3.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/number': 1.1.1 '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-slot@1.2.3(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-slot@1.2.3(@types/react@19.2.14)(react@19.2.5)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-slot@1.2.4(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-slot@1.2.4(@types/react@19.2.14)(react@19.2.5)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-switch@1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-switch@1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-tabs@1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-toast@1.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-toast@1.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-toggle-group@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-toggle-group@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-toggle@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-toggle@1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-toolbar@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-toolbar@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-separator': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-separator': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-tooltip@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.14)(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.14)(react@19.2.5)': dependencies: - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.14)(react@19.2.5)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.14)(react@19.2.5)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-use-is-hydrated@0.1.0(@types/react@19.2.14)(react@19.2.5)': dependencies: - react: 19.2.4 - use-sync-external-store: 1.6.0(react@19.2.4) + react: 19.2.5 + use-sync-external-store: 1.6.0(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.14)(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.14)(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.14)(react@19.2.5)': dependencies: '@radix-ui/rect': 1.1.1 - react: 19.2.4 + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-use-size@1.1.1(@types/react@19.2.14)(react@19.2.4)': + '@radix-ui/react-use-size@1.1.1(@types/react@19.2.14)(react@19.2.5)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - react: 19.2.4 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) '@radix-ui/rect@1.1.1': {} - '@react-email/body@0.3.0(react@19.2.4)': + '@react-email/body@0.3.0(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 - '@react-email/button@0.2.1(react@19.2.4)': + '@react-email/button@0.2.1(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 - '@react-email/code-block@0.2.1(react@19.2.4)': + '@react-email/code-block@0.2.1(react@19.2.5)': dependencies: prismjs: 1.30.0 - react: 19.2.4 - - '@react-email/code-inline@0.0.6(react@19.2.4)': - dependencies: - react: 19.2.4 - - '@react-email/column@0.0.14(react@19.2.4)': - dependencies: - react: 19.2.4 - - '@react-email/components@1.0.11(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': - dependencies: - '@react-email/body': 0.3.0(react@19.2.4) - '@react-email/button': 0.2.1(react@19.2.4) - '@react-email/code-block': 0.2.1(react@19.2.4) - '@react-email/code-inline': 0.0.6(react@19.2.4) - '@react-email/column': 0.0.14(react@19.2.4) - '@react-email/container': 0.0.16(react@19.2.4) - '@react-email/font': 0.0.10(react@19.2.4) - '@react-email/head': 0.0.13(react@19.2.4) - '@react-email/heading': 0.0.16(react@19.2.4) - '@react-email/hr': 0.0.12(react@19.2.4) - '@react-email/html': 0.0.12(react@19.2.4) - '@react-email/img': 0.0.12(react@19.2.4) - '@react-email/link': 0.0.13(react@19.2.4) - '@react-email/markdown': 0.0.18(react@19.2.4) - '@react-email/preview': 0.0.14(react@19.2.4) - '@react-email/render': 2.0.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@react-email/row': 0.0.13(react@19.2.4) - '@react-email/section': 0.0.17(react@19.2.4) - '@react-email/tailwind': 2.0.7(@react-email/body@0.3.0(react@19.2.4))(@react-email/button@0.2.1(react@19.2.4))(@react-email/code-block@0.2.1(react@19.2.4))(@react-email/code-inline@0.0.6(react@19.2.4))(@react-email/container@0.0.16(react@19.2.4))(@react-email/heading@0.0.16(react@19.2.4))(@react-email/hr@0.0.12(react@19.2.4))(@react-email/img@0.0.12(react@19.2.4))(@react-email/link@0.0.13(react@19.2.4))(@react-email/preview@0.0.14(react@19.2.4))(@react-email/text@0.1.6(react@19.2.4))(react@19.2.4) - '@react-email/text': 0.1.6(react@19.2.4) - react: 19.2.4 + react: 19.2.5 + + '@react-email/code-inline@0.0.6(react@19.2.5)': + dependencies: + react: 19.2.5 + + '@react-email/column@0.0.14(react@19.2.5)': + dependencies: + react: 19.2.5 + + '@react-email/components@1.0.11(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + dependencies: + '@react-email/body': 0.3.0(react@19.2.5) + '@react-email/button': 0.2.1(react@19.2.5) + '@react-email/code-block': 0.2.1(react@19.2.5) + '@react-email/code-inline': 0.0.6(react@19.2.5) + '@react-email/column': 0.0.14(react@19.2.5) + '@react-email/container': 0.0.16(react@19.2.5) + '@react-email/font': 0.0.10(react@19.2.5) + '@react-email/head': 0.0.13(react@19.2.5) + '@react-email/heading': 0.0.16(react@19.2.5) + '@react-email/hr': 0.0.12(react@19.2.5) + '@react-email/html': 0.0.12(react@19.2.5) + '@react-email/img': 0.0.12(react@19.2.5) + '@react-email/link': 0.0.13(react@19.2.5) + '@react-email/markdown': 0.0.18(react@19.2.5) + '@react-email/preview': 0.0.14(react@19.2.5) + '@react-email/render': 2.0.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@react-email/row': 0.0.13(react@19.2.5) + '@react-email/section': 0.0.17(react@19.2.5) + '@react-email/tailwind': 2.0.7(@react-email/body@0.3.0(react@19.2.5))(@react-email/button@0.2.1(react@19.2.5))(@react-email/code-block@0.2.1(react@19.2.5))(@react-email/code-inline@0.0.6(react@19.2.5))(@react-email/container@0.0.16(react@19.2.5))(@react-email/heading@0.0.16(react@19.2.5))(@react-email/hr@0.0.12(react@19.2.5))(@react-email/img@0.0.12(react@19.2.5))(@react-email/link@0.0.13(react@19.2.5))(@react-email/preview@0.0.14(react@19.2.5))(@react-email/text@0.1.6(react@19.2.5))(react@19.2.5) + '@react-email/text': 0.1.6(react@19.2.5) + react: 19.2.5 transitivePeerDependencies: - react-dom - '@react-email/container@0.0.16(react@19.2.4)': + '@react-email/container@0.0.16(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 - '@react-email/font@0.0.10(react@19.2.4)': + '@react-email/font@0.0.10(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 - '@react-email/head@0.0.13(react@19.2.4)': + '@react-email/head@0.0.13(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 - '@react-email/heading@0.0.16(react@19.2.4)': + '@react-email/heading@0.0.16(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 - '@react-email/hr@0.0.12(react@19.2.4)': + '@react-email/hr@0.0.12(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 - '@react-email/html@0.0.12(react@19.2.4)': + '@react-email/html@0.0.12(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 - '@react-email/img@0.0.12(react@19.2.4)': + '@react-email/img@0.0.12(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 - '@react-email/link@0.0.13(react@19.2.4)': + '@react-email/link@0.0.13(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 - '@react-email/markdown@0.0.18(react@19.2.4)': + '@react-email/markdown@0.0.18(react@19.2.5)': dependencies: marked: 15.0.12 - react: 19.2.4 + react: 19.2.5 - '@react-email/preview@0.0.14(react@19.2.4)': + '@react-email/preview@0.0.14(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 - '@react-email/render@2.0.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@react-email/render@2.0.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: html-to-text: 9.0.5 prettier: 3.6.2 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - '@react-email/row@0.0.13(react@19.2.4)': + '@react-email/row@0.0.13(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 - '@react-email/section@0.0.17(react@19.2.4)': + '@react-email/section@0.0.17(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 - '@react-email/tailwind@2.0.7(@react-email/body@0.3.0(react@19.2.4))(@react-email/button@0.2.1(react@19.2.4))(@react-email/code-block@0.2.1(react@19.2.4))(@react-email/code-inline@0.0.6(react@19.2.4))(@react-email/container@0.0.16(react@19.2.4))(@react-email/heading@0.0.16(react@19.2.4))(@react-email/hr@0.0.12(react@19.2.4))(@react-email/img@0.0.12(react@19.2.4))(@react-email/link@0.0.13(react@19.2.4))(@react-email/preview@0.0.14(react@19.2.4))(@react-email/text@0.1.6(react@19.2.4))(react@19.2.4)': + '@react-email/tailwind@2.0.7(@react-email/body@0.3.0(react@19.2.5))(@react-email/button@0.2.1(react@19.2.5))(@react-email/code-block@0.2.1(react@19.2.5))(@react-email/code-inline@0.0.6(react@19.2.5))(@react-email/container@0.0.16(react@19.2.5))(@react-email/heading@0.0.16(react@19.2.5))(@react-email/hr@0.0.12(react@19.2.5))(@react-email/img@0.0.12(react@19.2.5))(@react-email/link@0.0.13(react@19.2.5))(@react-email/preview@0.0.14(react@19.2.5))(@react-email/text@0.1.6(react@19.2.5))(react@19.2.5)': dependencies: - '@react-email/text': 0.1.6(react@19.2.4) - react: 19.2.4 + '@react-email/text': 0.1.6(react@19.2.5) + react: 19.2.5 tailwindcss: 4.2.2 optionalDependencies: - '@react-email/body': 0.3.0(react@19.2.4) - '@react-email/button': 0.2.1(react@19.2.4) - '@react-email/code-block': 0.2.1(react@19.2.4) - '@react-email/code-inline': 0.0.6(react@19.2.4) - '@react-email/container': 0.0.16(react@19.2.4) - '@react-email/heading': 0.0.16(react@19.2.4) - '@react-email/hr': 0.0.12(react@19.2.4) - '@react-email/img': 0.0.12(react@19.2.4) - '@react-email/link': 0.0.13(react@19.2.4) - '@react-email/preview': 0.0.14(react@19.2.4) + '@react-email/body': 0.3.0(react@19.2.5) + '@react-email/button': 0.2.1(react@19.2.5) + '@react-email/code-block': 0.2.1(react@19.2.5) + '@react-email/code-inline': 0.0.6(react@19.2.5) + '@react-email/container': 0.0.16(react@19.2.5) + '@react-email/heading': 0.0.16(react@19.2.5) + '@react-email/hr': 0.0.12(react@19.2.5) + '@react-email/img': 0.0.12(react@19.2.5) + '@react-email/link': 0.0.13(react@19.2.5) + '@react-email/preview': 0.0.14(react@19.2.5) - '@react-email/text@0.1.6(react@19.2.4)': + '@react-email/text@0.1.6(react@19.2.5)': dependencies: - react: 19.2.4 + react: 19.2.5 '@react-pdf/fns@3.1.2': {} @@ -20634,10 +20634,10 @@ snapshots: '@react-pdf/primitives@4.1.1': {} - '@react-pdf/reconciler@2.0.0(react@19.2.4)': + '@react-pdf/reconciler@2.0.0(react@19.2.5)': dependencies: object-assign: 4.1.1 - react: 19.2.4 + react: 19.2.5 scheduler: 0.25.0-rc-603e6108-20241029 '@react-pdf/render@4.3.2': @@ -20653,7 +20653,7 @@ snapshots: parse-svg-path: 0.1.2 svg-arc-to-cubic-bezier: 3.2.0 - '@react-pdf/renderer@4.3.2(react@19.2.4)': + '@react-pdf/renderer@4.3.2(react@19.2.5)': dependencies: '@babel/runtime': 7.29.2 '@react-pdf/fns': 3.1.2 @@ -20661,14 +20661,14 @@ snapshots: '@react-pdf/layout': 4.4.2 '@react-pdf/pdfkit': 4.1.0 '@react-pdf/primitives': 4.1.1 - '@react-pdf/reconciler': 2.0.0(react@19.2.4) + '@react-pdf/reconciler': 2.0.0(react@19.2.5) '@react-pdf/render': 4.3.2 '@react-pdf/types': 2.9.2 events: 3.3.0 object-assign: 4.1.1 prop-types: 15.8.1 queue: 6.0.2 - react: 19.2.4 + react: 19.2.5 '@react-pdf/stylesheet@6.1.2': dependencies: @@ -20692,7 +20692,7 @@ snapshots: '@react-pdf/primitives': 4.1.1 '@react-pdf/stylesheet': 6.1.2 - '@reduxjs/toolkit@2.11.2(react-redux@9.2.0(@types/react@19.2.14)(react@19.2.4)(redux@5.0.1))(react@19.2.4)': + '@reduxjs/toolkit@2.11.2(react-redux@9.2.0(@types/react@19.2.14)(react@19.2.5)(redux@5.0.1))(react@19.2.5)': dependencies: '@standard-schema/spec': 1.1.0 '@standard-schema/utils': 0.3.0 @@ -20701,8 +20701,8 @@ snapshots: redux-thunk: 3.1.0(redux@5.0.1) reselect: 5.1.1 optionalDependencies: - react: 19.2.4 - react-redux: 9.2.0(@types/react@19.2.14)(react@19.2.4)(redux@5.0.1) + react: 19.2.5 + react-redux: 9.2.0(@types/react@19.2.14)(react@19.2.5)(redux@5.0.1) '@remirror/core-constants@3.0.0': {} @@ -20960,7 +20960,7 @@ snapshots: '@sentry/core@10.47.0': {} - '@sentry/nextjs@10.47.0(@opentelemetry/context-async-hooks@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/core@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.1))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4)(webpack@5.105.4(esbuild@0.27.5))': + '@sentry/nextjs@10.47.0(@opentelemetry/context-async-hooks@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/core@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.1))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(webpack@5.105.4(esbuild@0.27.5))': dependencies: '@opentelemetry/api': 1.9.1 '@opentelemetry/semantic-conventions': 1.40.0 @@ -20970,10 +20970,10 @@ snapshots: '@sentry/core': 10.47.0 '@sentry/node': 10.47.0 '@sentry/opentelemetry': 10.47.0(@opentelemetry/api@1.9.1)(@opentelemetry/context-async-hooks@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/core@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.40.0) - '@sentry/react': 10.47.0(react@19.2.4) + '@sentry/react': 10.47.0(react@19.2.5) '@sentry/vercel-edge': 10.47.0 '@sentry/webpack-plugin': 5.1.1(webpack@5.105.4(esbuild@0.27.5)) - next: 16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + next: 16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) rollup: 4.60.1 stacktrace-parser: 0.1.11 transitivePeerDependencies: @@ -21050,11 +21050,11 @@ snapshots: '@opentelemetry/semantic-conventions': 1.40.0 '@sentry/core': 10.47.0 - '@sentry/react@10.47.0(react@19.2.4)': + '@sentry/react@10.47.0(react@19.2.5)': dependencies: '@sentry/browser': 10.47.0 '@sentry/core': 10.47.0 - react: 19.2.4 + react: 19.2.5 '@sentry/vercel-edge@10.47.0': dependencies: @@ -21517,12 +21517,12 @@ snapshots: '@standard-schema/utils@0.3.0': {} - '@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@stripe/stripe-js': 7.9.0 prop-types: 15.8.1 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) '@stripe/stripe-js@7.9.0': {} @@ -21619,18 +21619,18 @@ snapshots: tailwindcss: 4.2.2 vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - '@tanstack/react-store@0.7.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@tanstack/react-store@0.7.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@tanstack/store': 0.7.7 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - use-sync-external-store: 1.6.0(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + use-sync-external-store: 1.6.0(react@19.2.5) - '@tanstack/react-table@8.21.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@tanstack/react-table@8.21.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@tanstack/table-core': 8.21.3 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) '@tanstack/store@0.7.7': {} @@ -21647,12 +21647,12 @@ snapshots: picocolors: 1.1.1 pretty-format: 27.5.1 - '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@testing-library/react@16.3.2(@testing-library/dom@10.4.1)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@babel/runtime': 7.29.2 '@testing-library/dom': 10.4.1 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -21740,7 +21740,7 @@ snapshots: prosemirror-transform: 1.12.0 prosemirror-view: 1.41.8 - '@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)': + '@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) '@tiptap/pm': 3.22.3 @@ -21748,9 +21748,9 @@ snapshots: '@types/react-dom': 19.2.3(@types/react@19.2.14) '@types/use-sync-external-store': 0.0.6 fast-equals: 5.4.0 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - use-sync-external-store: 1.6.0(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + use-sync-external-store: 1.6.0(react@19.2.5) optionalDependencies: '@tiptap/extension-bubble-menu': 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3) '@tiptap/extension-floating-menu': 3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3) @@ -22371,12 +22371,12 @@ snapshots: p-queue: 7.4.1 preact: 10.29.0 - '@uppy/react@3.4.0(@uppy/core@3.13.1)(@uppy/dashboard@3.9.1(@uppy/core@3.13.1))(@uppy/drag-drop@3.1.1(@uppy/core@3.13.1))(@uppy/file-input@3.1.2(@uppy/core@3.13.1))(@uppy/progress-bar@3.1.1(@uppy/core@3.13.1))(@uppy/status-bar@3.3.3(@uppy/core@3.13.1))(react@19.2.4)': + '@uppy/react@3.4.0(@uppy/core@3.13.1)(@uppy/dashboard@3.9.1(@uppy/core@3.13.1))(@uppy/drag-drop@3.1.1(@uppy/core@3.13.1))(@uppy/file-input@3.1.2(@uppy/core@3.13.1))(@uppy/progress-bar@3.1.1(@uppy/core@3.13.1))(@uppy/status-bar@3.3.3(@uppy/core@3.13.1))(react@19.2.5)': dependencies: '@uppy/core': 3.13.1 '@uppy/utils': 5.9.0 prop-types: 15.8.1 - react: 19.2.4 + react: 19.2.5 optionalDependencies: '@uppy/dashboard': 3.9.1(@uppy/core@3.13.1) '@uppy/drag-drop': 3.1.1(@uppy/core@3.13.1) @@ -22424,10 +22424,10 @@ snapshots: '@uppy/core': 3.13.1 '@uppy/utils': 5.9.0 - '@vercel/analytics@1.6.1(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4)': + '@vercel/analytics@1.6.1(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)': optionalDependencies: - next: 16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 + next: 16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 '@vercel/oidc@3.0.5': {} @@ -22638,11 +22638,11 @@ snapshots: y-protocols: 1.0.7(yjs@13.6.30) yjs: 13.6.30 - '@y-sweet/react@0.6.4(react@19.2.4)(yjs@13.6.30)': + '@y-sweet/react@0.6.4(react@19.2.5)(yjs@13.6.30)': dependencies: '@y-sweet/client': 0.6.4(yjs@13.6.30) '@y-sweet/sdk': 0.6.4 - react: 19.2.4 + react: 19.2.5 y-protocols: 1.0.7(yjs@13.6.30) yjs: 13.6.30 @@ -23001,7 +23001,7 @@ snapshots: baseline-browser-mapping@2.10.17: {} - better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(pg@8.20.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))): + better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))): dependencies: '@better-auth/core': 1.4.22(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.8(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0) '@better-auth/telemetry': 1.4.22(@better-auth/core@1.4.22(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.8(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0)) @@ -23017,10 +23017,10 @@ snapshots: zod: 4.3.6 optionalDependencies: better-sqlite3: 12.8.0 - next: 16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + next: 16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) pg: 8.20.0 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) vitest: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) better-call@1.1.8(zod@4.3.6): @@ -23251,14 +23251,14 @@ snapshots: clsx@2.1.1: {} - cmdk@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + cmdk@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-primitive': 2.1.4(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) transitivePeerDependencies: - '@types/react' - '@types/react-dom' @@ -24526,19 +24526,19 @@ snapshots: fraction.js@4.3.7: {} - framer-motion@12.38.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + framer-motion@12.38.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: motion-dom: 12.38.0 motion-utils: 12.36.0 tslib: 2.8.1 optionalDependencies: '@emotion/is-prop-valid': 1.4.0 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - frimousse@0.2.0(react@19.2.4): + frimousse@0.2.0(react@19.2.5): dependencies: - react: 19.2.4 + react: 19.2.5 front-matter@4.0.2: dependencies: @@ -24559,7 +24559,7 @@ snapshots: fsevents@2.3.3: optional: true - fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.4))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6): + fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6): dependencies: '@formatjs/intl-localematcher': 0.8.2 '@orama/orama': 3.1.18 @@ -24582,22 +24582,22 @@ snapshots: unist-util-visit: 5.1.0 optionalDependencies: '@types/react': 19.2.14 - lucide-react: 0.562.0(react@19.2.4) - next: 16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + lucide-react: 0.562.0(react@19.2.5) + next: 16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) zod: 4.3.6 transitivePeerDependencies: - supports-color - fumadocs-mdx@14.2.11(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.4))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react@19.2.4)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + fumadocs-mdx@14.2.11(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@mdx-js/mdx': 3.1.1 '@standard-schema/spec': 1.1.0 chokidar: 5.0.0 esbuild: 0.27.5 estree-util-value-to-estree: 3.5.0 - fumadocs-core: 16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.4))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6) + fumadocs-core: 16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6) js-yaml: 4.1.1 mdast-util-mdx: 3.0.0 mdast-util-to-markdown: 2.1.2 @@ -24614,21 +24614,21 @@ snapshots: '@types/mdast': 4.0.4 '@types/mdx': 2.0.13 '@types/react': 19.2.14 - next: 16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 + next: 16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - supports-color - fumadocs-twoslash@3.1.15(@fumadocs/base-ui@16.5.0(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.4))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tailwindcss@4.2.2))(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3): + fumadocs-twoslash@3.1.15(@fumadocs/base-ui@16.5.0(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tailwindcss@4.2.2))(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3): dependencies: - '@radix-ui/react-popover': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + '@radix-ui/react-popover': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@shikijs/twoslash': 4.0.2(typescript@5.9.3) - fumadocs-ui: '@fumadocs/base-ui@16.5.0(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.4))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tailwindcss@4.2.2)' + fumadocs-ui: '@fumadocs/base-ui@16.5.0(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tailwindcss@4.2.2)' mdast-util-from-markdown: 2.0.3 mdast-util-gfm: 3.1.0 mdast-util-to-hast: 13.2.1 - react: 19.2.4 + react: 19.2.5 shiki: 4.0.2 tailwind-merge: 3.5.0 twoslash: 0.3.6(typescript@5.9.3) @@ -24640,13 +24640,13 @@ snapshots: - supports-color - typescript - fumadocs-typescript@5.2.1(f62675999018dc077ad993bfc409ced5): + fumadocs-typescript@5.2.1(22723fcc923da32003fad920c4a650ee): dependencies: estree-util-value-to-estree: 3.5.0 - fumadocs-core: 16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.4))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6) + fumadocs-core: 16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6) hast-util-to-estree: 3.1.3 hast-util-to-jsx-runtime: 2.3.6 - react: 19.2.4 + react: 19.2.5 remark: 15.0.1 remark-rehype: 11.1.2 ts-morph: 27.0.2 @@ -24658,7 +24658,7 @@ snapshots: '@types/hast': 3.0.4 '@types/mdast': 4.0.4 '@types/react': 19.2.14 - fumadocs-ui: '@fumadocs/base-ui@16.5.0(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.4))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(tailwindcss@4.2.2)' + fumadocs-ui: '@fumadocs/base-ui@16.5.0(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tailwindcss@4.2.2)' shiki: 3.23.0 transitivePeerDependencies: - supports-color @@ -25138,10 +25138,10 @@ snapshots: inline-style-parser@0.2.7: {} - input-otp@1.4.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + input-otp@1.4.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) internal-slot@1.1.0: dependencies: @@ -25665,21 +25665,21 @@ snapshots: dependencies: yallist: 3.1.1 - lucide-react@0.525.0(react@19.2.4): + lucide-react@0.525.0(react@19.2.5): dependencies: - react: 19.2.4 + react: 19.2.5 - lucide-react@0.547.0(react@19.2.4): + lucide-react@0.547.0(react@19.2.5): dependencies: - react: 19.2.4 + react: 19.2.5 - lucide-react@0.562.0(react@19.2.4): + lucide-react@0.562.0(react@19.2.5): dependencies: - react: 19.2.4 + react: 19.2.5 - lucide-react@0.563.0(react@19.2.4): + lucide-react@0.563.0(react@19.2.5): dependencies: - react: 19.2.4 + react: 19.2.5 lz-string@1.5.0: {} @@ -25705,9 +25705,9 @@ snapshots: markdown-table@3.0.4: {} - markdown-to-jsx@8.0.0(react@19.2.4): + markdown-to-jsx@8.0.0(react@19.2.5): optionalDependencies: - react: 19.2.4 + react: 19.2.5 marked@15.0.12: {} @@ -26239,14 +26239,14 @@ snapshots: motion-utils@12.36.0: {} - motion@12.38.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + motion@12.38.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: - framer-motion: 12.38.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) + framer-motion: 12.38.0(@emotion/is-prop-valid@1.4.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) tslib: 2.8.1 optionalDependencies: '@emotion/is-prop-valid': 1.4.0 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) mrmime@2.0.1: {} @@ -26372,10 +26372,10 @@ snapshots: neo-async@2.6.2: {} - next-themes@0.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + next-themes@0.4.6(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) next-validate-link@1.6.4: dependencies: @@ -26389,16 +26389,16 @@ snapshots: transitivePeerDependencies: - supports-color - next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@next/env': 16.2.3 '@swc/helpers': 0.5.15 baseline-browser-mapping: 2.10.17 caniuse-lite: 1.0.30001787 postcss: 8.4.31 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - styled-jsx: 5.1.6(@babel/core@7.29.0)(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + styled-jsx: 5.1.6(@babel/core@7.29.0)(react@19.2.5) optionalDependencies: '@next/swc-darwin-arm64': 16.2.3 '@next/swc-darwin-x64': 16.2.3 @@ -27066,65 +27066,65 @@ snapshots: dependencies: inherits: 2.0.4 - radix-ui@1.4.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + radix-ui@1.4.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-accessible-icon': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-accordion': 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-alert-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-aspect-ratio': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-avatar': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-checkbox': 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-context-menu': 2.2.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-dropdown-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-form': 0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-hover-card': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-label': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-menubar': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-navigation-menu': 1.2.14(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-one-time-password-field': 0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-password-toggle-field': 0.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-popover': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-progress': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-radio-group': 1.3.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-scroll-area': 1.2.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-select': 2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-separator': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-slider': 1.3.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-switch': 1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-toast': 1.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-toolbar': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-tooltip': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.4) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react@19.2.4) - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + '@radix-ui/react-accessible-icon': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-accordion': 1.2.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-alert-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-aspect-ratio': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-avatar': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-checkbox': 1.3.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-collapsible': 1.1.12(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-context-menu': 2.2.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-dialog': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-dropdown-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-form': 0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-hover-card': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-label': 2.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-menu': 2.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-menubar': 1.1.16(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-navigation-menu': 1.2.14(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-one-time-password-field': 0.1.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-password-toggle-field': 0.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-popover': 1.1.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-presence': 1.1.5(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-progress': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-radio-group': 1.3.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-roving-focus': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-scroll-area': 1.2.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-select': 2.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-separator': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slider': 1.3.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-switch': 1.2.6(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-tabs': 1.1.13(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-toast': 1.2.15(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-toggle': 1.1.10(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-toggle-group': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-toolbar': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-tooltip': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-is-hydrated': 0.1.0(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.14)(react@19.2.5) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) @@ -27138,25 +27138,25 @@ snapshots: minimist: 1.2.8 strip-json-comments: 2.0.1 - react-day-picker@9.14.0(react@19.2.4): + react-day-picker@9.14.0(react@19.2.5): dependencies: '@date-fns/tz': 1.4.1 '@tabby_ai/hijri-converter': 1.0.5 date-fns: 4.1.0 date-fns-jalali: 4.1.0-0 - react: 19.2.4 + react: 19.2.5 - react-dom@19.2.4(react@19.2.4): + react-dom@19.2.5(react@19.2.5): dependencies: - react: 19.2.4 + react: 19.2.5 scheduler: 0.27.0 - react-element-to-jsx-string@17.0.1(react-dom@19.2.4(react@19.2.4))(react-is@19.2.4)(react@19.2.4): + react-element-to-jsx-string@17.0.1(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5): dependencies: '@base2/pretty-print-object': 1.0.2 is-plain-object: 5.0.0 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) react-is: 19.2.4 react-email@5.2.10: @@ -27183,22 +27183,22 @@ snapshots: - supports-color - utf-8-validate - react-github-btn@1.4.0(react@19.2.4): + react-github-btn@1.4.0(react@19.2.5): dependencies: github-buttons: 2.32.0 - react: 19.2.4 + react: 19.2.5 - react-hook-form@7.70.0(react@19.2.4): + react-hook-form@7.70.0(react@19.2.5): dependencies: - react: 19.2.4 + react: 19.2.5 - react-hook-form@7.72.0(react@19.2.4): + react-hook-form@7.72.0(react@19.2.5): dependencies: - react: 19.2.4 + react: 19.2.5 - react-icons@5.6.0(react@19.2.4): + react-icons@5.6.0(react@19.2.5): dependencies: - react: 19.2.4 + react: 19.2.5 react-is@16.13.1: {} @@ -27208,99 +27208,99 @@ snapshots: react-is@19.2.4: {} - react-medium-image-zoom@5.4.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + react-medium-image-zoom@5.4.2(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - react-number-format@5.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + react-number-format@5.4.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - react-redux@9.2.0(@types/react@19.2.14)(react@19.2.4)(redux@5.0.1): + react-redux@9.2.0(@types/react@19.2.14)(react@19.2.5)(redux@5.0.1): dependencies: '@types/use-sync-external-store': 0.0.6 - react: 19.2.4 - use-sync-external-store: 1.6.0(react@19.2.4) + react: 19.2.5 + use-sync-external-store: 1.6.0(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 redux: 5.0.1 react-refresh@0.17.0: {} - react-remove-scroll-bar@2.3.8(@types/react@19.2.14)(react@19.2.4): + react-remove-scroll-bar@2.3.8(@types/react@19.2.14)(react@19.2.5): dependencies: - react: 19.2.4 - react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.4) + react: 19.2.5 + react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.5) tslib: 2.8.1 optionalDependencies: '@types/react': 19.2.14 - react-remove-scroll@2.7.2(@types/react@19.2.14)(react@19.2.4): + react-remove-scroll@2.7.2(@types/react@19.2.14)(react@19.2.5): dependencies: - react: 19.2.4 - react-remove-scroll-bar: 2.3.8(@types/react@19.2.14)(react@19.2.4) - react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.4) + react: 19.2.5 + react-remove-scroll-bar: 2.3.8(@types/react@19.2.14)(react@19.2.5) + react-style-singleton: 2.2.3(@types/react@19.2.14)(react@19.2.5) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.2.14)(react@19.2.4) - use-sidecar: 1.1.3(@types/react@19.2.14)(react@19.2.4) + use-callback-ref: 1.3.3(@types/react@19.2.14)(react@19.2.5) + use-sidecar: 1.1.3(@types/react@19.2.14)(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 - react-router-dom@6.30.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + react-router-dom@6.30.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@remix-run/router': 1.23.2 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) - react-router: 6.30.3(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + react-router: 6.30.3(react@19.2.5) - react-router@6.30.3(react@19.2.4): + react-router@6.30.3(react@19.2.5): dependencies: '@remix-run/router': 1.23.2 - react: 19.2.4 + react: 19.2.5 - react-style-singleton@2.2.3(@types/react@19.2.14)(react@19.2.4): + react-style-singleton@2.2.3(@types/react@19.2.14)(react@19.2.5): dependencies: get-nonce: 1.0.1 - react: 19.2.4 + react: 19.2.5 tslib: 2.8.1 optionalDependencies: '@types/react': 19.2.14 - react-textarea-autosize@8.5.9(@types/react@19.2.14)(react@19.2.4): + react-textarea-autosize@8.5.9(@types/react@19.2.14)(react@19.2.5): dependencies: '@babel/runtime': 7.29.2 - react: 19.2.4 - use-composed-ref: 1.4.0(@types/react@19.2.14)(react@19.2.4) - use-latest: 1.3.0(@types/react@19.2.14)(react@19.2.4) + react: 19.2.5 + use-composed-ref: 1.4.0(@types/react@19.2.14)(react@19.2.5) + use-latest: 1.3.0(@types/react@19.2.14)(react@19.2.5) transitivePeerDependencies: - '@types/react' - react-timeago@8.3.0(react@19.2.4): + react-timeago@8.3.0(react@19.2.5): dependencies: - react: 19.2.4 + react: 19.2.5 - react-transition-group@4.4.5(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + react-transition-group@4.4.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: '@babel/runtime': 7.29.2 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) - react-use-measure@2.1.7(react-dom@19.2.4(react@19.2.4))(react@19.2.4): + react-use-measure@2.1.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5): dependencies: - react: 19.2.4 + react: 19.2.5 optionalDependencies: - react-dom: 19.2.4(react@19.2.4) + react-dom: 19.2.5(react@19.2.5) react@18.3.1: dependencies: loose-envify: 1.4.0 - react@19.2.4: {} + react@19.2.5: {} readable-stream@2.3.8: dependencies: @@ -27322,21 +27322,21 @@ snapshots: readdirp@5.0.0: {} - recharts@3.8.1(@types/react@19.2.14)(react-dom@19.2.4(react@19.2.4))(react-is@19.2.4)(react@19.2.4)(redux@5.0.1): + recharts@3.8.1(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1): dependencies: - '@reduxjs/toolkit': 2.11.2(react-redux@9.2.0(@types/react@19.2.14)(react@19.2.4)(redux@5.0.1))(react@19.2.4) + '@reduxjs/toolkit': 2.11.2(react-redux@9.2.0(@types/react@19.2.14)(react@19.2.5)(redux@5.0.1))(react@19.2.5) clsx: 2.1.1 decimal.js-light: 2.5.1 es-toolkit: 1.45.1 eventemitter3: 5.0.4 immer: 10.2.0 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) react-is: 19.2.4 - react-redux: 9.2.0(@types/react@19.2.14)(react@19.2.4)(redux@5.0.1) + react-redux: 9.2.0(@types/react@19.2.14)(react@19.2.5)(redux@5.0.1) reselect: 5.1.1 tiny-invariant: 1.3.3 - use-sync-external-store: 1.6.0(react@19.2.4) + use-sync-external-store: 1.6.0(react@19.2.5) victory-vendor: 37.3.6 transitivePeerDependencies: - '@types/react' @@ -27923,15 +27923,15 @@ snapshots: is-plain-object: 5.0.0 slate: 0.110.2 - slate-react@0.110.3(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(slate@0.110.2): + slate-react@0.110.3(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(slate@0.110.2): dependencies: '@juggle/resize-observer': 3.4.0 direction: 1.0.4 is-hotkey: 0.2.0 is-plain-object: 5.0.0 lodash: 4.18.1 - react: 19.2.4 - react-dom: 19.2.4(react@19.2.4) + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) scroll-into-view-if-needed: 3.1.0 slate: 0.110.2 tiny-invariant: 1.3.1 @@ -28147,10 +28147,10 @@ snapshots: dependencies: inline-style-parser: 0.2.7 - styled-jsx@5.1.6(@babel/core@7.29.0)(react@19.2.4): + styled-jsx@5.1.6(@babel/core@7.29.0)(react@19.2.5): dependencies: client-only: 0.0.1 - react: 19.2.4 + react: 19.2.5 optionalDependencies: '@babel/core': 7.29.0 @@ -28178,11 +28178,11 @@ snapshots: svg-arc-to-cubic-bezier@3.2.0: {} - swr@2.4.1(react@19.2.4): + swr@2.4.1(react@19.2.5): dependencies: dequal: 2.0.3 - react: 19.2.4 - use-sync-external-store: 1.6.0(react@19.2.4) + react: 19.2.5 + use-sync-external-store: 1.6.0(react@19.2.5) symbol-tree@3.2.4: {} @@ -28575,43 +28575,43 @@ snapshots: dependencies: punycode: 2.3.1 - use-callback-ref@1.3.3(@types/react@19.2.14)(react@19.2.4): + use-callback-ref@1.3.3(@types/react@19.2.14)(react@19.2.5): dependencies: - react: 19.2.4 + react: 19.2.5 tslib: 2.8.1 optionalDependencies: '@types/react': 19.2.14 - use-composed-ref@1.4.0(@types/react@19.2.14)(react@19.2.4): + use-composed-ref@1.4.0(@types/react@19.2.14)(react@19.2.5): dependencies: - react: 19.2.4 + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - use-isomorphic-layout-effect@1.2.1(@types/react@19.2.14)(react@19.2.4): + use-isomorphic-layout-effect@1.2.1(@types/react@19.2.14)(react@19.2.5): dependencies: - react: 19.2.4 + react: 19.2.5 optionalDependencies: '@types/react': 19.2.14 - use-latest@1.3.0(@types/react@19.2.14)(react@19.2.4): + use-latest@1.3.0(@types/react@19.2.14)(react@19.2.5): dependencies: - react: 19.2.4 - use-isomorphic-layout-effect: 1.2.1(@types/react@19.2.14)(react@19.2.4) + react: 19.2.5 + use-isomorphic-layout-effect: 1.2.1(@types/react@19.2.14)(react@19.2.5) optionalDependencies: '@types/react': 19.2.14 - use-sidecar@1.1.3(@types/react@19.2.14)(react@19.2.4): + use-sidecar@1.1.3(@types/react@19.2.14)(react@19.2.5): dependencies: detect-node-es: 1.1.0 - react: 19.2.4 + react: 19.2.5 tslib: 2.8.1 optionalDependencies: '@types/react': 19.2.14 - use-sync-external-store@1.6.0(react@19.2.4): + use-sync-external-store@1.6.0(react@19.2.5): dependencies: - react: 19.2.4 + react: 19.2.5 util-deprecate@1.0.2: {} diff --git a/tests/nextjs-test-app/package.json b/tests/nextjs-test-app/package.json index d9538e71e6..ca14347bab 100644 --- a/tests/nextjs-test-app/package.json +++ b/tests/nextjs-test-app/package.json @@ -3,10 +3,10 @@ "private": true, "version": "0.0.0", "dependencies": { - "@blocknote/core": "file:.tarballs/blocknote-core-0.47.3.tgz", - "@blocknote/mantine": "file:.tarballs/blocknote-mantine-0.47.3.tgz", - "@blocknote/react": "file:.tarballs/blocknote-react-0.47.3.tgz", - "@blocknote/server-util": "file:.tarballs/blocknote-server-util-0.47.3.tgz", + "@blocknote/core": "file:.tarballs/blocknote-core-0.48.0.tgz", + "@blocknote/mantine": "file:.tarballs/blocknote-mantine-0.48.0.tgz", + "@blocknote/react": "file:.tarballs/blocknote-react-0.48.0.tgz", + "@blocknote/server-util": "file:.tarballs/blocknote-server-util-0.48.0.tgz", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "next": "^16.0.0", diff --git a/tests/package.json b/tests/package.json index 2b65f3e306..35a3cef0de 100644 --- a/tests/package.json +++ b/tests/package.json @@ -26,8 +26,8 @@ "@types/react-dom": "^19.2.3", "eslint": "^8.57.1", "htmlfy": "^0.6.7", - "react": "^19.2.3", - "react-dom": "^19.2.3", + "react": "^19.2.5", + "react-dom": "^19.2.5", "react-icons": "^5.5.0", "rimraf": "^5.0.10", "vite": "^8.0.3", From bb7f0d26fe7e90d4fc8cdfcfdbe82f72135466e0 Mon Sep 17 00:00:00 2001 From: Stephan Meijer Date: Thu, 16 Apr 2026 18:13:44 +0200 Subject: [PATCH 07/76] fix(docx-exporter): omit w:lang when no locale provided instead of defaulting to en-US (#2651) --- .../docx/__snapshots__/noLocale/styles.xml | 984 +++++++++++++++++ .../docx/__snapshots__/withLocale/styles.xml | 985 ++++++++++++++++++ .../src/docx/docxExporter.test.ts | 47 + .../xl-docx-exporter/src/docx/docxExporter.ts | 29 +- 4 files changed, 2033 insertions(+), 12 deletions(-) create mode 100644 packages/xl-docx-exporter/src/docx/__snapshots__/noLocale/styles.xml create mode 100644 packages/xl-docx-exporter/src/docx/__snapshots__/withLocale/styles.xml diff --git a/packages/xl-docx-exporter/src/docx/__snapshots__/noLocale/styles.xml b/packages/xl-docx-exporter/src/docx/__snapshots__/noLocale/styles.xml new file mode 100644 index 0000000000..4c2e627de4 --- /dev/null +++ b/packages/xl-docx-exporter/src/docx/__snapshots__/noLocale/styles.xml @@ -0,0 +1,984 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/xl-docx-exporter/src/docx/__snapshots__/withLocale/styles.xml b/packages/xl-docx-exporter/src/docx/__snapshots__/withLocale/styles.xml new file mode 100644 index 0000000000..45edc06326 --- /dev/null +++ b/packages/xl-docx-exporter/src/docx/__snapshots__/withLocale/styles.xml @@ -0,0 +1,985 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/xl-docx-exporter/src/docx/docxExporter.test.ts b/packages/xl-docx-exporter/src/docx/docxExporter.test.ts index 4b2014931f..382521b6bb 100644 --- a/packages/xl-docx-exporter/src/docx/docxExporter.test.ts +++ b/packages/xl-docx-exporter/src/docx/docxExporter.test.ts @@ -217,6 +217,53 @@ describe("exporter", () => { ).toMatchFileSnapshot("__snapshots__/withMultiColumn/styles.xml"); }, ); + + async function exportAndGetStylesEntries( + locale?: string, + ) { + const exporter = new DOCXExporter( + BlockNoteSchema.create({ + blockSpecs: { + ...defaultBlockSpecs, + pageBreak: createPageBreakBlockSpec(), + }, + }), + docxDefaultSchemaMappings, + ); + const doc = await exporter.toDocxJsDocument(testDocument, { + sectionOptions: {}, + documentOptions: {}, + ...(locale && { locale }), + }); + + const blob = await Packer.toBlob(doc); + const zip = new ZipReader(new BlobReader(blob)); + return zip.getEntries(); + } + + it( + "should export a document without w:lang when no locale is provided", + { timeout: 10000 }, + async () => { + const entries = await exportAndGetStylesEntries(); + + await expect( + prettify(await getZIPEntryContent(entries, "word/styles.xml")), + ).toMatchFileSnapshot("__snapshots__/noLocale/styles.xml"); + }, + ); + + it( + "should export a document with w:lang when locale is provided", + { timeout: 10000 }, + async () => { + const entries = await exportAndGetStylesEntries("fr-FR"); + + await expect( + prettify(await getZIPEntryContent(entries, "word/styles.xml")), + ).toMatchFileSnapshot("__snapshots__/withLocale/styles.xml"); + }, + ); }); function prettify(sourceXml: string) { diff --git a/packages/xl-docx-exporter/src/docx/docxExporter.ts b/packages/xl-docx-exporter/src/docx/docxExporter.ts index 3c03c0937c..2467cebe1d 100644 --- a/packages/xl-docx-exporter/src/docx/docxExporter.ts +++ b/packages/xl-docx-exporter/src/docx/docxExporter.ts @@ -193,14 +193,19 @@ export class DOCXExporter< let externalStyles = (await import("./template/word/styles.xml?raw")) .default; - // Replace the default language in styles.xml with the provided locale. - // If not provided, default to en-US. - const resolvedLocale = (locale && locale.trim()) || "en-US"; - - externalStyles = externalStyles.replace( - /(]*\bw:val=")([^"]+)("[^>]*\/>)/g, - `$1${resolvedLocale}$3`, - ); + // Replace the language in styles.xml with the provided locale, or remove + // the w:lang element entirely if no locale is provided (per ECMA-376 + // §17.3.2.20: omitting w:lang lets the application auto-detect language). + const trimmedLocale = locale?.trim(); + if (trimmedLocale) { + externalStyles = externalStyles.replace( + /(]*\bw:val=")([^"]+)("[^>]*\/>)/g, + (_match, prefix, _oldVal, suffix) => + `${prefix}${trimmedLocale}${suffix}`, + ); + } else { + externalStyles = externalStyles.replace(/\s*]*\/>/g, ""); + } const bullets = ["•"]; //, "◦", "▪"]; (these don't look great, just use solid bullet for now) return { @@ -251,7 +256,7 @@ export class DOCXExporter< } /** - * Convert a document (array of Blocks to a Blob representing a .docx file) + * Converts blocks to a .docx Blob with optional locale support. */ public async toBlob( blocks: Block[], @@ -260,7 +265,7 @@ export class DOCXExporter< documentOptions: DocumentOptions; /** * The document locale in OOXML format (e.g. en-US, fr-FR, de-DE). - * If omitted, defaults to en-US. + * If omitted, no language is set and the consuming application will use its own default. */ locale?: string; } = { @@ -285,7 +290,7 @@ export class DOCXExporter< } /** - * Convert a document (array of Blocks to a docxjs Document) + * Converts blocks to a docxjs Document with optional locale support. */ public async toDocxJsDocument( blocks: Block[], @@ -294,7 +299,7 @@ export class DOCXExporter< documentOptions: DocumentOptions; /** * The document locale in OOXML format (e.g. en-US, fr-FR, de-DE). - * If omitted, defaults to en-US. + * If omitted, no language is set and the consuming application will use its own default. */ locale?: string; } = { From ad7467e83761bd96c515feffad416ba88b94a000 Mon Sep 17 00:00:00 2001 From: Nick the Sick Date: Thu, 16 Apr 2026 18:18:00 +0200 Subject: [PATCH 08/76] chore: upgrade Vite from v5.4.20 to v8.0.3 in all examples - Update vite from ^5.4.20 to ^8.0.3 across 86 examples - Update @vitejs/plugin-react from ^4.7.0 to ^6.0.1 for Vite 8 compatibility - Tested with clean install and build in isolated environments - Dev server startup: ~1 second - Production builds: ~2 seconds - Full backwards compatibility maintained --- examples/01-basic/01-minimal/package.json | 4 +- .../01-basic/02-block-objects/package.json | 4 +- .../01-basic/03-multi-column/package.json | 4 +- .../01-basic/04-default-blocks/package.json | 4 +- .../05-removing-default-blocks/package.json | 4 +- .../06-block-manipulation/package.json | 4 +- .../01-basic/07-selection-blocks/package.json | 4 +- examples/01-basic/08-ariakit/package.json | 4 +- examples/01-basic/09-shadcn/package.json | 4 +- .../01-basic/10-localization/package.json | 4 +- .../11-custom-placeholder/package.json | 4 +- .../01-basic/12-multi-editor/package.json | 4 +- .../13-custom-paste-handler/package.json | 4 +- .../14-editor-scrollable/package.json | 4 +- examples/01-basic/15-shadowdom/package.json | 4 +- .../01-basic/16-read-only-editor/package.json | 4 +- examples/01-basic/testing/package.json | 4 +- .../02-backend/01-file-uploading/package.json | 4 +- .../02-backend/02-saving-loading/package.json | 4 +- examples/02-backend/03-s3/package.json | 4 +- .../package.json | 4 +- .../01-ui-elements-remove/package.json | 4 +- .../package.json | 4 +- .../package.json | 4 +- .../04-side-menu-buttons/package.json | 4 +- .../package.json | 4 +- .../package.json | 4 +- .../package.json | 4 +- .../package.json | 4 +- .../package.json | 4 +- .../package.json | 4 +- .../11-uppy-file-panel/package.json | 4 +- .../12-static-formatting-toolbar/package.json | 4 +- .../13-custom-ui/package.json | 4 +- .../package.json | 4 +- .../15-advanced-tables/package.json | 4 +- .../16-link-toolbar-buttons/package.json | 4 +- .../17-advanced-tables-2/package.json | 4 +- .../18-drag-n-drop/package.json | 4 +- .../01-theming-dom-attributes/package.json | 4 +- .../04-theming/02-changing-font/package.json | 4 +- .../04-theming/03-theming-css/package.json | 4 +- .../04-theming-css-variables/package.json | 4 +- .../package.json | 4 +- .../04-theming/06-code-block/package.json | 4 +- .../07-custom-code-block/package.json | 4 +- .../01-converting-blocks-to-html/package.json | 4 +- .../package.json | 4 +- .../03-converting-blocks-to-md/package.json | 4 +- .../04-converting-blocks-from-md/package.json | 4 +- .../05-converting-blocks-to-pdf/package.json | 4 +- .../06-converting-blocks-to-docx/package.json | 4 +- .../07-converting-blocks-to-odt/package.json | 4 +- .../package.json | 4 +- .../package.json | 4 +- .../10-static-html-render/package.json | 4 +- .../01-alert-block/package.json | 4 +- .../02-suggestion-menus-mentions/package.json | 4 +- .../03-font-style/package.json | 4 +- .../04-pdf-file-block/package.json | 4 +- .../05-alert-block-full-ux/package.json | 4 +- .../06-toggleable-blocks/package.json | 4 +- .../07-configuring-blocks/package.json | 4 +- .../draggable-inline-content/package.json | 4 +- .../react-custom-blocks/package.json | 4 +- .../react-custom-inline-content/package.json | 4 +- .../react-custom-styles/package.json | 4 +- .../07-collaboration/01-partykit/package.json | 4 +- .../02-liveblocks/package.json | 4 +- .../07-collaboration/03-y-sweet/package.json | 4 +- .../04-electric-sql/package.json | 4 +- .../07-collaboration/05-comments/package.json | 4 +- .../06-comments-with-sidebar/package.json | 4 +- .../07-ghost-writer/package.json | 4 +- .../07-collaboration/08-forking/package.json | 4 +- .../01-tiptap-arrow-conversion/package.json | 4 +- examples/09-ai/01-minimal/package.json | 4 +- examples/09-ai/02-playground/package.json | 4 +- .../03-custom-ai-menu-items/package.json | 4 +- .../09-ai/04-with-collaboration/package.json | 4 +- .../09-ai/05-manual-execution/package.json | 4 +- .../06-client-side-transport/package.json | 4 +- .../09-ai/07-server-persistence/package.json | 4 +- .../react-vanilla-custom-blocks/package.json | 4 +- .../package.json | 4 +- .../react-vanilla-custom-styles/package.json | 4 +- pnpm-lock.yaml | 720 +++++++++--------- 87 files changed, 517 insertions(+), 547 deletions(-) diff --git a/examples/01-basic/01-minimal/package.json b/examples/01-basic/01-minimal/package.json index af406c6b8f..89224f97e4 100644 --- a/examples/01-basic/01-minimal/package.json +++ b/examples/01-basic/01-minimal/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/01-basic/02-block-objects/package.json b/examples/01-basic/02-block-objects/package.json index 8b3ca5bf72..ed0dc5836b 100644 --- a/examples/01-basic/02-block-objects/package.json +++ b/examples/01-basic/02-block-objects/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/01-basic/03-multi-column/package.json b/examples/01-basic/03-multi-column/package.json index dbcada18f2..21b9e8a0c5 100644 --- a/examples/01-basic/03-multi-column/package.json +++ b/examples/01-basic/03-multi-column/package.json @@ -26,7 +26,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/01-basic/04-default-blocks/package.json b/examples/01-basic/04-default-blocks/package.json index bec32ddecb..08793e49b4 100644 --- a/examples/01-basic/04-default-blocks/package.json +++ b/examples/01-basic/04-default-blocks/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/01-basic/05-removing-default-blocks/package.json b/examples/01-basic/05-removing-default-blocks/package.json index 4970fe877a..138ad8b165 100644 --- a/examples/01-basic/05-removing-default-blocks/package.json +++ b/examples/01-basic/05-removing-default-blocks/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/01-basic/06-block-manipulation/package.json b/examples/01-basic/06-block-manipulation/package.json index 362df04dd3..6b9084c282 100644 --- a/examples/01-basic/06-block-manipulation/package.json +++ b/examples/01-basic/06-block-manipulation/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/01-basic/07-selection-blocks/package.json b/examples/01-basic/07-selection-blocks/package.json index 8bcccee05f..ddf2d33972 100644 --- a/examples/01-basic/07-selection-blocks/package.json +++ b/examples/01-basic/07-selection-blocks/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/01-basic/08-ariakit/package.json b/examples/01-basic/08-ariakit/package.json index 75c7713c06..ef8e104039 100644 --- a/examples/01-basic/08-ariakit/package.json +++ b/examples/01-basic/08-ariakit/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/01-basic/09-shadcn/package.json b/examples/01-basic/09-shadcn/package.json index 2968b91d44..a14726d04f 100644 --- a/examples/01-basic/09-shadcn/package.json +++ b/examples/01-basic/09-shadcn/package.json @@ -28,7 +28,7 @@ "@tailwindcss/vite": "^4.1.14", "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/01-basic/10-localization/package.json b/examples/01-basic/10-localization/package.json index 39828f74fd..199657a3b6 100644 --- a/examples/01-basic/10-localization/package.json +++ b/examples/01-basic/10-localization/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/01-basic/11-custom-placeholder/package.json b/examples/01-basic/11-custom-placeholder/package.json index 4cde94a58d..c9e2821e4b 100644 --- a/examples/01-basic/11-custom-placeholder/package.json +++ b/examples/01-basic/11-custom-placeholder/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/01-basic/12-multi-editor/package.json b/examples/01-basic/12-multi-editor/package.json index ab6428dc8b..f22167ce00 100644 --- a/examples/01-basic/12-multi-editor/package.json +++ b/examples/01-basic/12-multi-editor/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/01-basic/13-custom-paste-handler/package.json b/examples/01-basic/13-custom-paste-handler/package.json index 15dc905cb7..d1769c38b7 100644 --- a/examples/01-basic/13-custom-paste-handler/package.json +++ b/examples/01-basic/13-custom-paste-handler/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/01-basic/14-editor-scrollable/package.json b/examples/01-basic/14-editor-scrollable/package.json index df436a2643..badd216fa5 100644 --- a/examples/01-basic/14-editor-scrollable/package.json +++ b/examples/01-basic/14-editor-scrollable/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/01-basic/15-shadowdom/package.json b/examples/01-basic/15-shadowdom/package.json index 07d63662c1..5c6f67ebce 100644 --- a/examples/01-basic/15-shadowdom/package.json +++ b/examples/01-basic/15-shadowdom/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/01-basic/16-read-only-editor/package.json b/examples/01-basic/16-read-only-editor/package.json index bfefd7dc58..ae15be4b1f 100644 --- a/examples/01-basic/16-read-only-editor/package.json +++ b/examples/01-basic/16-read-only-editor/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/01-basic/testing/package.json b/examples/01-basic/testing/package.json index 909248d480..ed8674862a 100644 --- a/examples/01-basic/testing/package.json +++ b/examples/01-basic/testing/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/02-backend/01-file-uploading/package.json b/examples/02-backend/01-file-uploading/package.json index cd75ed5462..5032aa352f 100644 --- a/examples/02-backend/01-file-uploading/package.json +++ b/examples/02-backend/01-file-uploading/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/02-backend/02-saving-loading/package.json b/examples/02-backend/02-saving-loading/package.json index 95f0aa24f7..cb5fbdd0ea 100644 --- a/examples/02-backend/02-saving-loading/package.json +++ b/examples/02-backend/02-saving-loading/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/02-backend/03-s3/package.json b/examples/02-backend/03-s3/package.json index bd1a31aa01..b2a2462be8 100644 --- a/examples/02-backend/03-s3/package.json +++ b/examples/02-backend/03-s3/package.json @@ -27,7 +27,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/02-backend/04-rendering-static-documents/package.json b/examples/02-backend/04-rendering-static-documents/package.json index 17927198a8..65c6508e17 100644 --- a/examples/02-backend/04-rendering-static-documents/package.json +++ b/examples/02-backend/04-rendering-static-documents/package.json @@ -26,7 +26,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/03-ui-components/01-ui-elements-remove/package.json b/examples/03-ui-components/01-ui-elements-remove/package.json index 70aa1a2265..4a1609b9a2 100644 --- a/examples/03-ui-components/01-ui-elements-remove/package.json +++ b/examples/03-ui-components/01-ui-elements-remove/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/03-ui-components/02-formatting-toolbar-buttons/package.json b/examples/03-ui-components/02-formatting-toolbar-buttons/package.json index bbdc0d592c..9f58b875fb 100644 --- a/examples/03-ui-components/02-formatting-toolbar-buttons/package.json +++ b/examples/03-ui-components/02-formatting-toolbar-buttons/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/03-ui-components/03-formatting-toolbar-block-type-items/package.json b/examples/03-ui-components/03-formatting-toolbar-block-type-items/package.json index 64b3352fb2..6d55111a4c 100644 --- a/examples/03-ui-components/03-formatting-toolbar-block-type-items/package.json +++ b/examples/03-ui-components/03-formatting-toolbar-block-type-items/package.json @@ -26,7 +26,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/03-ui-components/04-side-menu-buttons/package.json b/examples/03-ui-components/04-side-menu-buttons/package.json index c3f63ce21a..38f7cbed6a 100644 --- a/examples/03-ui-components/04-side-menu-buttons/package.json +++ b/examples/03-ui-components/04-side-menu-buttons/package.json @@ -26,7 +26,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/03-ui-components/05-side-menu-drag-handle-items/package.json b/examples/03-ui-components/05-side-menu-drag-handle-items/package.json index 1f9c75200d..48adc9aaf8 100644 --- a/examples/03-ui-components/05-side-menu-drag-handle-items/package.json +++ b/examples/03-ui-components/05-side-menu-drag-handle-items/package.json @@ -26,7 +26,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/03-ui-components/06-suggestion-menus-slash-menu-items/package.json b/examples/03-ui-components/06-suggestion-menus-slash-menu-items/package.json index 4e1e364c94..ec9d8626bc 100644 --- a/examples/03-ui-components/06-suggestion-menus-slash-menu-items/package.json +++ b/examples/03-ui-components/06-suggestion-menus-slash-menu-items/package.json @@ -26,7 +26,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/03-ui-components/07-suggestion-menus-slash-menu-component/package.json b/examples/03-ui-components/07-suggestion-menus-slash-menu-component/package.json index e47e7b3eb0..5f9dd237d7 100644 --- a/examples/03-ui-components/07-suggestion-menus-slash-menu-component/package.json +++ b/examples/03-ui-components/07-suggestion-menus-slash-menu-component/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/03-ui-components/08-suggestion-menus-emoji-picker-columns/package.json b/examples/03-ui-components/08-suggestion-menus-emoji-picker-columns/package.json index 1da0bd93ff..34e74a368e 100644 --- a/examples/03-ui-components/08-suggestion-menus-emoji-picker-columns/package.json +++ b/examples/03-ui-components/08-suggestion-menus-emoji-picker-columns/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/03-ui-components/09-suggestion-menus-emoji-picker-component/package.json b/examples/03-ui-components/09-suggestion-menus-emoji-picker-component/package.json index 305056b4ec..3d5e2e73a2 100644 --- a/examples/03-ui-components/09-suggestion-menus-emoji-picker-component/package.json +++ b/examples/03-ui-components/09-suggestion-menus-emoji-picker-component/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/03-ui-components/10-suggestion-menus-grid-mentions/package.json b/examples/03-ui-components/10-suggestion-menus-grid-mentions/package.json index c1fef484c3..f34e554756 100644 --- a/examples/03-ui-components/10-suggestion-menus-grid-mentions/package.json +++ b/examples/03-ui-components/10-suggestion-menus-grid-mentions/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/03-ui-components/11-uppy-file-panel/package.json b/examples/03-ui-components/11-uppy-file-panel/package.json index 8955ce5b72..6554773fc5 100644 --- a/examples/03-ui-components/11-uppy-file-panel/package.json +++ b/examples/03-ui-components/11-uppy-file-panel/package.json @@ -37,7 +37,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/03-ui-components/12-static-formatting-toolbar/package.json b/examples/03-ui-components/12-static-formatting-toolbar/package.json index 8b455ffe0e..acdd1c436e 100644 --- a/examples/03-ui-components/12-static-formatting-toolbar/package.json +++ b/examples/03-ui-components/12-static-formatting-toolbar/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/03-ui-components/13-custom-ui/package.json b/examples/03-ui-components/13-custom-ui/package.json index 1ea4e67783..31f6bfb567 100644 --- a/examples/03-ui-components/13-custom-ui/package.json +++ b/examples/03-ui-components/13-custom-ui/package.json @@ -27,7 +27,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/03-ui-components/14-experimental-mobile-formatting-toolbar/package.json b/examples/03-ui-components/14-experimental-mobile-formatting-toolbar/package.json index 60265f345c..0524771b08 100644 --- a/examples/03-ui-components/14-experimental-mobile-formatting-toolbar/package.json +++ b/examples/03-ui-components/14-experimental-mobile-formatting-toolbar/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/03-ui-components/15-advanced-tables/package.json b/examples/03-ui-components/15-advanced-tables/package.json index 38e68d10e4..08d1c49b3c 100644 --- a/examples/03-ui-components/15-advanced-tables/package.json +++ b/examples/03-ui-components/15-advanced-tables/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/03-ui-components/16-link-toolbar-buttons/package.json b/examples/03-ui-components/16-link-toolbar-buttons/package.json index 8e5263cf56..c6033b6cde 100644 --- a/examples/03-ui-components/16-link-toolbar-buttons/package.json +++ b/examples/03-ui-components/16-link-toolbar-buttons/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/03-ui-components/17-advanced-tables-2/package.json b/examples/03-ui-components/17-advanced-tables-2/package.json index 0b759efc24..626ab74ae8 100644 --- a/examples/03-ui-components/17-advanced-tables-2/package.json +++ b/examples/03-ui-components/17-advanced-tables-2/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/03-ui-components/18-drag-n-drop/package.json b/examples/03-ui-components/18-drag-n-drop/package.json index 354348292d..beab8775dc 100644 --- a/examples/03-ui-components/18-drag-n-drop/package.json +++ b/examples/03-ui-components/18-drag-n-drop/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/04-theming/01-theming-dom-attributes/package.json b/examples/04-theming/01-theming-dom-attributes/package.json index e507bf0891..4813aab27f 100644 --- a/examples/04-theming/01-theming-dom-attributes/package.json +++ b/examples/04-theming/01-theming-dom-attributes/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/04-theming/02-changing-font/package.json b/examples/04-theming/02-changing-font/package.json index 012ea4a389..6f1e492bda 100644 --- a/examples/04-theming/02-changing-font/package.json +++ b/examples/04-theming/02-changing-font/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/04-theming/03-theming-css/package.json b/examples/04-theming/03-theming-css/package.json index 946f29cfab..2bcb06c4bd 100644 --- a/examples/04-theming/03-theming-css/package.json +++ b/examples/04-theming/03-theming-css/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/04-theming/04-theming-css-variables/package.json b/examples/04-theming/04-theming-css-variables/package.json index 2d3fb8fd37..3db574639e 100644 --- a/examples/04-theming/04-theming-css-variables/package.json +++ b/examples/04-theming/04-theming-css-variables/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/04-theming/05-theming-css-variables-code/package.json b/examples/04-theming/05-theming-css-variables-code/package.json index e391fc873d..8837b9cc91 100644 --- a/examples/04-theming/05-theming-css-variables-code/package.json +++ b/examples/04-theming/05-theming-css-variables-code/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/04-theming/06-code-block/package.json b/examples/04-theming/06-code-block/package.json index d1122bd3ac..96b5dcc7a1 100644 --- a/examples/04-theming/06-code-block/package.json +++ b/examples/04-theming/06-code-block/package.json @@ -26,7 +26,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/04-theming/07-custom-code-block/package.json b/examples/04-theming/07-custom-code-block/package.json index 153b1c160c..1987c4f5be 100644 --- a/examples/04-theming/07-custom-code-block/package.json +++ b/examples/04-theming/07-custom-code-block/package.json @@ -31,7 +31,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/05-interoperability/01-converting-blocks-to-html/package.json b/examples/05-interoperability/01-converting-blocks-to-html/package.json index 0f0316000f..f44ad7407a 100644 --- a/examples/05-interoperability/01-converting-blocks-to-html/package.json +++ b/examples/05-interoperability/01-converting-blocks-to-html/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/05-interoperability/02-converting-blocks-from-html/package.json b/examples/05-interoperability/02-converting-blocks-from-html/package.json index d62b8e0f42..209df539e9 100644 --- a/examples/05-interoperability/02-converting-blocks-from-html/package.json +++ b/examples/05-interoperability/02-converting-blocks-from-html/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/05-interoperability/03-converting-blocks-to-md/package.json b/examples/05-interoperability/03-converting-blocks-to-md/package.json index f6b0651c0d..6e87a51ce6 100644 --- a/examples/05-interoperability/03-converting-blocks-to-md/package.json +++ b/examples/05-interoperability/03-converting-blocks-to-md/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/05-interoperability/04-converting-blocks-from-md/package.json b/examples/05-interoperability/04-converting-blocks-from-md/package.json index 3ca496c50d..afe2cdd8c4 100644 --- a/examples/05-interoperability/04-converting-blocks-from-md/package.json +++ b/examples/05-interoperability/04-converting-blocks-from-md/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/05-interoperability/05-converting-blocks-to-pdf/package.json b/examples/05-interoperability/05-converting-blocks-to-pdf/package.json index 3af24b9f75..ca44049852 100644 --- a/examples/05-interoperability/05-converting-blocks-to-pdf/package.json +++ b/examples/05-interoperability/05-converting-blocks-to-pdf/package.json @@ -28,7 +28,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/05-interoperability/06-converting-blocks-to-docx/package.json b/examples/05-interoperability/06-converting-blocks-to-docx/package.json index af8c76e04b..b9be624d8e 100644 --- a/examples/05-interoperability/06-converting-blocks-to-docx/package.json +++ b/examples/05-interoperability/06-converting-blocks-to-docx/package.json @@ -27,7 +27,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/05-interoperability/07-converting-blocks-to-odt/package.json b/examples/05-interoperability/07-converting-blocks-to-odt/package.json index aae892d407..29c39b7784 100644 --- a/examples/05-interoperability/07-converting-blocks-to-odt/package.json +++ b/examples/05-interoperability/07-converting-blocks-to-odt/package.json @@ -27,7 +27,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/05-interoperability/08-converting-blocks-to-react-email/package.json b/examples/05-interoperability/08-converting-blocks-to-react-email/package.json index 10e8836f84..bee26df4ba 100644 --- a/examples/05-interoperability/08-converting-blocks-to-react-email/package.json +++ b/examples/05-interoperability/08-converting-blocks-to-react-email/package.json @@ -27,7 +27,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/05-interoperability/09-blocks-to-html-static-render/package.json b/examples/05-interoperability/09-blocks-to-html-static-render/package.json index 52926421b4..e81a7c7cd2 100644 --- a/examples/05-interoperability/09-blocks-to-html-static-render/package.json +++ b/examples/05-interoperability/09-blocks-to-html-static-render/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/05-interoperability/10-static-html-render/package.json b/examples/05-interoperability/10-static-html-render/package.json index 6343ac6efc..4e53a9b53c 100644 --- a/examples/05-interoperability/10-static-html-render/package.json +++ b/examples/05-interoperability/10-static-html-render/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/06-custom-schema/01-alert-block/package.json b/examples/06-custom-schema/01-alert-block/package.json index b02510a70f..99571398f4 100644 --- a/examples/06-custom-schema/01-alert-block/package.json +++ b/examples/06-custom-schema/01-alert-block/package.json @@ -26,7 +26,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/06-custom-schema/02-suggestion-menus-mentions/package.json b/examples/06-custom-schema/02-suggestion-menus-mentions/package.json index ea836ebabe..21ce0ea399 100644 --- a/examples/06-custom-schema/02-suggestion-menus-mentions/package.json +++ b/examples/06-custom-schema/02-suggestion-menus-mentions/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/06-custom-schema/03-font-style/package.json b/examples/06-custom-schema/03-font-style/package.json index ab031bf380..7c8d9ed3c6 100644 --- a/examples/06-custom-schema/03-font-style/package.json +++ b/examples/06-custom-schema/03-font-style/package.json @@ -26,7 +26,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/06-custom-schema/04-pdf-file-block/package.json b/examples/06-custom-schema/04-pdf-file-block/package.json index d5f5615cd0..c0d01b863a 100644 --- a/examples/06-custom-schema/04-pdf-file-block/package.json +++ b/examples/06-custom-schema/04-pdf-file-block/package.json @@ -26,7 +26,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/06-custom-schema/05-alert-block-full-ux/package.json b/examples/06-custom-schema/05-alert-block-full-ux/package.json index 55dc8b0bf1..f76fa036ec 100644 --- a/examples/06-custom-schema/05-alert-block-full-ux/package.json +++ b/examples/06-custom-schema/05-alert-block-full-ux/package.json @@ -26,7 +26,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/06-custom-schema/06-toggleable-blocks/package.json b/examples/06-custom-schema/06-toggleable-blocks/package.json index 5449c535a2..b876e1e27d 100644 --- a/examples/06-custom-schema/06-toggleable-blocks/package.json +++ b/examples/06-custom-schema/06-toggleable-blocks/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/06-custom-schema/07-configuring-blocks/package.json b/examples/06-custom-schema/07-configuring-blocks/package.json index edf107c487..8a4cf21a45 100644 --- a/examples/06-custom-schema/07-configuring-blocks/package.json +++ b/examples/06-custom-schema/07-configuring-blocks/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/06-custom-schema/draggable-inline-content/package.json b/examples/06-custom-schema/draggable-inline-content/package.json index 98db481029..64c0c8ffd2 100644 --- a/examples/06-custom-schema/draggable-inline-content/package.json +++ b/examples/06-custom-schema/draggable-inline-content/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/06-custom-schema/react-custom-blocks/package.json b/examples/06-custom-schema/react-custom-blocks/package.json index 0372b1c809..efccb6cdff 100644 --- a/examples/06-custom-schema/react-custom-blocks/package.json +++ b/examples/06-custom-schema/react-custom-blocks/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/06-custom-schema/react-custom-inline-content/package.json b/examples/06-custom-schema/react-custom-inline-content/package.json index 98abca8461..c374ec7298 100644 --- a/examples/06-custom-schema/react-custom-inline-content/package.json +++ b/examples/06-custom-schema/react-custom-inline-content/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/06-custom-schema/react-custom-styles/package.json b/examples/06-custom-schema/react-custom-styles/package.json index eb88b335ff..3268d5a870 100644 --- a/examples/06-custom-schema/react-custom-styles/package.json +++ b/examples/06-custom-schema/react-custom-styles/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/07-collaboration/01-partykit/package.json b/examples/07-collaboration/01-partykit/package.json index c29a4981a9..783f846b0c 100644 --- a/examples/07-collaboration/01-partykit/package.json +++ b/examples/07-collaboration/01-partykit/package.json @@ -27,7 +27,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/07-collaboration/02-liveblocks/package.json b/examples/07-collaboration/02-liveblocks/package.json index defc9277d1..b31214a2c6 100644 --- a/examples/07-collaboration/02-liveblocks/package.json +++ b/examples/07-collaboration/02-liveblocks/package.json @@ -31,7 +31,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/07-collaboration/03-y-sweet/package.json b/examples/07-collaboration/03-y-sweet/package.json index ca2e4b0097..34f28d0324 100644 --- a/examples/07-collaboration/03-y-sweet/package.json +++ b/examples/07-collaboration/03-y-sweet/package.json @@ -26,7 +26,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/07-collaboration/04-electric-sql/package.json b/examples/07-collaboration/04-electric-sql/package.json index dd9d538875..e0a7659418 100644 --- a/examples/07-collaboration/04-electric-sql/package.json +++ b/examples/07-collaboration/04-electric-sql/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/07-collaboration/05-comments/package.json b/examples/07-collaboration/05-comments/package.json index 27897406ce..8b7c734b09 100644 --- a/examples/07-collaboration/05-comments/package.json +++ b/examples/07-collaboration/05-comments/package.json @@ -26,7 +26,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/07-collaboration/06-comments-with-sidebar/package.json b/examples/07-collaboration/06-comments-with-sidebar/package.json index c1a6c49f9a..284754cb51 100644 --- a/examples/07-collaboration/06-comments-with-sidebar/package.json +++ b/examples/07-collaboration/06-comments-with-sidebar/package.json @@ -27,7 +27,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/07-collaboration/07-ghost-writer/package.json b/examples/07-collaboration/07-ghost-writer/package.json index a45bc3a305..aea7f687a2 100644 --- a/examples/07-collaboration/07-ghost-writer/package.json +++ b/examples/07-collaboration/07-ghost-writer/package.json @@ -27,7 +27,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/07-collaboration/08-forking/package.json b/examples/07-collaboration/08-forking/package.json index 08ca3f389d..4334bf1c93 100644 --- a/examples/07-collaboration/08-forking/package.json +++ b/examples/07-collaboration/08-forking/package.json @@ -27,7 +27,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/08-extensions/01-tiptap-arrow-conversion/package.json b/examples/08-extensions/01-tiptap-arrow-conversion/package.json index 7eaeaf3eaa..0646d11c8a 100644 --- a/examples/08-extensions/01-tiptap-arrow-conversion/package.json +++ b/examples/08-extensions/01-tiptap-arrow-conversion/package.json @@ -26,7 +26,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/09-ai/01-minimal/package.json b/examples/09-ai/01-minimal/package.json index b244123bd7..e084fc9c36 100644 --- a/examples/09-ai/01-minimal/package.json +++ b/examples/09-ai/01-minimal/package.json @@ -27,7 +27,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/09-ai/02-playground/package.json b/examples/09-ai/02-playground/package.json index 9bfc984a4a..87eac698a0 100644 --- a/examples/09-ai/02-playground/package.json +++ b/examples/09-ai/02-playground/package.json @@ -27,7 +27,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/09-ai/03-custom-ai-menu-items/package.json b/examples/09-ai/03-custom-ai-menu-items/package.json index 1385ceab9b..9e9ad4a716 100644 --- a/examples/09-ai/03-custom-ai-menu-items/package.json +++ b/examples/09-ai/03-custom-ai-menu-items/package.json @@ -28,7 +28,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/09-ai/04-with-collaboration/package.json b/examples/09-ai/04-with-collaboration/package.json index fe17faaa59..b22bc18e53 100644 --- a/examples/09-ai/04-with-collaboration/package.json +++ b/examples/09-ai/04-with-collaboration/package.json @@ -29,7 +29,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/09-ai/05-manual-execution/package.json b/examples/09-ai/05-manual-execution/package.json index b23f7678a0..53cce0227e 100644 --- a/examples/09-ai/05-manual-execution/package.json +++ b/examples/09-ai/05-manual-execution/package.json @@ -29,7 +29,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/09-ai/06-client-side-transport/package.json b/examples/09-ai/06-client-side-transport/package.json index 4a143fbef3..1d40f3c896 100644 --- a/examples/09-ai/06-client-side-transport/package.json +++ b/examples/09-ai/06-client-side-transport/package.json @@ -28,7 +28,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/09-ai/07-server-persistence/package.json b/examples/09-ai/07-server-persistence/package.json index b379364817..123c3896e4 100644 --- a/examples/09-ai/07-server-persistence/package.json +++ b/examples/09-ai/07-server-persistence/package.json @@ -27,7 +27,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/vanilla-js/react-vanilla-custom-blocks/package.json b/examples/vanilla-js/react-vanilla-custom-blocks/package.json index caf42e11e5..3415a29afd 100644 --- a/examples/vanilla-js/react-vanilla-custom-blocks/package.json +++ b/examples/vanilla-js/react-vanilla-custom-blocks/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/vanilla-js/react-vanilla-custom-inline-content/package.json b/examples/vanilla-js/react-vanilla-custom-inline-content/package.json index 2eb0b9a64f..8bec01b7ad 100644 --- a/examples/vanilla-js/react-vanilla-custom-inline-content/package.json +++ b/examples/vanilla-js/react-vanilla-custom-inline-content/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/examples/vanilla-js/react-vanilla-custom-styles/package.json b/examples/vanilla-js/react-vanilla-custom-styles/package.json index f192b05a60..f32a8be790 100644 --- a/examples/vanilla-js/react-vanilla-custom-styles/package.json +++ b/examples/vanilla-js/react-vanilla-custom-styles/package.json @@ -25,7 +25,7 @@ "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - "vite": "^5.4.20" + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.3" } } \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 34ce686bac..f4a1285250 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -411,11 +411,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/02-block-objects: dependencies: @@ -457,11 +457,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/03-multi-column: dependencies: @@ -506,11 +506,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/04-default-blocks: dependencies: @@ -552,11 +552,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/05-removing-default-blocks: dependencies: @@ -598,11 +598,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/06-block-manipulation: dependencies: @@ -644,11 +644,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/07-selection-blocks: dependencies: @@ -690,11 +690,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/08-ariakit: dependencies: @@ -736,11 +736,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/09-shadcn: dependencies: @@ -783,7 +783,7 @@ importers: devDependencies: '@tailwindcss/vite': specifier: ^4.1.14 - version: 4.2.2(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + version: 4.2.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@types/react': specifier: ^19.2.3 version: 19.2.14 @@ -791,11 +791,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/10-localization: dependencies: @@ -837,11 +837,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/11-custom-placeholder: dependencies: @@ -883,11 +883,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/12-multi-editor: dependencies: @@ -929,11 +929,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/13-custom-paste-handler: dependencies: @@ -975,11 +975,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/14-editor-scrollable: dependencies: @@ -1021,11 +1021,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/15-shadowdom: dependencies: @@ -1067,11 +1067,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/16-read-only-editor: dependencies: @@ -1113,11 +1113,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/testing: dependencies: @@ -1159,11 +1159,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/02-backend/01-file-uploading: dependencies: @@ -1205,11 +1205,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/02-backend/02-saving-loading: dependencies: @@ -1251,11 +1251,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/02-backend/03-s3: dependencies: @@ -1303,11 +1303,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/02-backend/04-rendering-static-documents: dependencies: @@ -1352,11 +1352,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/01-ui-elements-remove: dependencies: @@ -1398,11 +1398,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/02-formatting-toolbar-buttons: dependencies: @@ -1444,11 +1444,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/03-formatting-toolbar-block-type-items: dependencies: @@ -1493,11 +1493,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/04-side-menu-buttons: dependencies: @@ -1542,11 +1542,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/05-side-menu-drag-handle-items: dependencies: @@ -1591,11 +1591,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/06-suggestion-menus-slash-menu-items: dependencies: @@ -1640,11 +1640,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/07-suggestion-menus-slash-menu-component: dependencies: @@ -1686,11 +1686,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/08-suggestion-menus-emoji-picker-columns: dependencies: @@ -1732,11 +1732,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/09-suggestion-menus-emoji-picker-component: dependencies: @@ -1778,11 +1778,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/10-suggestion-menus-grid-mentions: dependencies: @@ -1824,11 +1824,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/11-uppy-file-panel: dependencies: @@ -1906,11 +1906,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/12-static-formatting-toolbar: dependencies: @@ -1952,11 +1952,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/13-custom-ui: dependencies: @@ -2004,11 +2004,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/14-experimental-mobile-formatting-toolbar: dependencies: @@ -2050,11 +2050,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/15-advanced-tables: dependencies: @@ -2096,11 +2096,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/16-link-toolbar-buttons: dependencies: @@ -2142,11 +2142,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/17-advanced-tables-2: dependencies: @@ -2188,11 +2188,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/18-drag-n-drop: dependencies: @@ -2234,11 +2234,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/01-theming-dom-attributes: dependencies: @@ -2280,11 +2280,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/02-changing-font: dependencies: @@ -2326,11 +2326,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/03-theming-css: dependencies: @@ -2372,11 +2372,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/04-theming-css-variables: dependencies: @@ -2418,11 +2418,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/05-theming-css-variables-code: dependencies: @@ -2464,11 +2464,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/06-code-block: dependencies: @@ -2513,11 +2513,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/07-custom-code-block: dependencies: @@ -2577,11 +2577,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/01-converting-blocks-to-html: dependencies: @@ -2623,11 +2623,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/02-converting-blocks-from-html: dependencies: @@ -2669,11 +2669,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/03-converting-blocks-to-md: dependencies: @@ -2715,11 +2715,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/04-converting-blocks-from-md: dependencies: @@ -2761,11 +2761,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/05-converting-blocks-to-pdf: dependencies: @@ -2816,11 +2816,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/06-converting-blocks-to-docx: dependencies: @@ -2868,11 +2868,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/07-converting-blocks-to-odt: dependencies: @@ -2920,11 +2920,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/08-converting-blocks-to-react-email: dependencies: @@ -2972,11 +2972,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/09-blocks-to-html-static-render: dependencies: @@ -3018,11 +3018,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/10-static-html-render: dependencies: @@ -3064,11 +3064,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/01-alert-block: dependencies: @@ -3113,11 +3113,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/02-suggestion-menus-mentions: dependencies: @@ -3159,11 +3159,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/03-font-style: dependencies: @@ -3208,11 +3208,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/04-pdf-file-block: dependencies: @@ -3257,11 +3257,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/05-alert-block-full-ux: dependencies: @@ -3306,11 +3306,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/06-toggleable-blocks: dependencies: @@ -3352,11 +3352,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/07-configuring-blocks: dependencies: @@ -3398,11 +3398,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/draggable-inline-content: dependencies: @@ -3444,11 +3444,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/react-custom-blocks: dependencies: @@ -3490,11 +3490,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/react-custom-inline-content: dependencies: @@ -3536,11 +3536,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/react-custom-styles: dependencies: @@ -3582,11 +3582,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/01-partykit: dependencies: @@ -3634,11 +3634,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/02-liveblocks: dependencies: @@ -3698,11 +3698,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/03-y-sweet: dependencies: @@ -3747,11 +3747,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/04-electric-sql: dependencies: @@ -3793,11 +3793,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/05-comments: dependencies: @@ -3842,11 +3842,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/06-comments-with-sidebar: dependencies: @@ -3894,11 +3894,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/07-ghost-writer: dependencies: @@ -3946,11 +3946,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/08-forking: dependencies: @@ -3998,11 +3998,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/08-extensions/01-tiptap-arrow-conversion: dependencies: @@ -4047,11 +4047,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/01-minimal: dependencies: @@ -4099,11 +4099,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/02-playground: dependencies: @@ -4151,11 +4151,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/03-custom-ai-menu-items: dependencies: @@ -4206,11 +4206,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/04-with-collaboration: dependencies: @@ -4264,11 +4264,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/05-manual-execution: dependencies: @@ -4322,11 +4322,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/06-client-side-transport: dependencies: @@ -4377,11 +4377,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/07-server-persistence: dependencies: @@ -4429,11 +4429,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/vanilla-js/react-vanilla-custom-blocks: dependencies: @@ -4475,11 +4475,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/vanilla-js/react-vanilla-custom-inline-content: dependencies: @@ -4521,11 +4521,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/vanilla-js/react-vanilla-custom-styles: dependencies: @@ -4567,11 +4567,11 @@ importers: specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) '@vitejs/plugin-react': - specifier: ^4.7.0 - version: 4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1)) + specifier: ^6.0.1 + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^5.4.20 - version: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) + specifier: ^8.0.3 + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) packages/ariakit: dependencies: @@ -21605,13 +21605,6 @@ snapshots: postcss: 8.5.8 tailwindcss: 4.2.2 - '@tailwindcss/vite@4.2.2(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1))': - dependencies: - '@tailwindcss/node': 4.2.2 - '@tailwindcss/oxide': 4.2.2 - tailwindcss: 4.2.2 - vite: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) - '@tailwindcss/vite@4.2.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@tailwindcss/node': 4.2.2 @@ -22453,18 +22446,6 @@ snapshots: transitivePeerDependencies: - typescript - '@vitejs/plugin-react@4.7.0(vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1))': - dependencies: - '@babel/core': 7.29.0 - '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) - '@babel/plugin-transform-react-jsx-source': 7.27.1(@babel/core@7.29.0) - '@rolldown/pluginutils': 1.0.0-beta.27 - '@types/babel__core': 7.20.5 - react-refresh: 0.17.0 - vite: 5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1) - transitivePeerDependencies: - - supports-color - '@vitejs/plugin-react@4.7.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@babel/core': 7.29.0 @@ -28737,17 +28718,6 @@ snapshots: lightningcss: 1.32.0 terser: 5.46.1 - vite@5.4.21(@types/node@25.6.0)(lightningcss@1.32.0)(terser@5.46.1): - dependencies: - esbuild: 0.21.5 - postcss: 8.5.8 - rollup: 4.60.1 - optionalDependencies: - '@types/node': 25.6.0 - fsevents: 2.3.3 - lightningcss: 1.32.0 - terser: 5.46.1 - vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): dependencies: lightningcss: 1.32.0 From c1ef3018a1137b25655894969cbf20b36b83240f Mon Sep 17 00:00:00 2001 From: Nick the Sick Date: Thu, 16 Apr 2026 18:21:39 +0200 Subject: [PATCH 09/76] fix(deps): upgrade nx to 22.6.5 to resolve axios security vulnerability (CVE-2025-62718) --- package.json | 4 +- pnpm-lock.yaml | 860 +++++++++++++++++++++++-------------------------- 2 files changed, 410 insertions(+), 454 deletions(-) diff --git a/package.json b/package.json index 04d64da61b..e9bb26f510 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "root", "type": "module", "devDependencies": { - "@nx/js": "22.6.4", + "@nx/js": "22.6.5", "@typescript-eslint/eslint-plugin": "^5.62.0", "@typescript-eslint/parser": "^5.62.0", "concurrently": "9.1.2", @@ -10,7 +10,7 @@ "eslint-config-react-app": "^7.0.1", "eslint-plugin-import": "^2.32.0", "glob": "^10.5.0", - "nx": "22.6.4", + "nx": "22.6.5", "prettier": "3.6.2", "prettier-plugin-tailwindcss": "^0.6.14", "serve": "14.2.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f4a1285250..49baa3aca3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,8 +22,8 @@ importers: .: devDependencies: '@nx/js': - specifier: 22.6.4 - version: 22.6.4(@babel/traverse@7.29.0)(nx@22.6.4) + specifier: 22.6.5 + version: 22.6.5(@babel/traverse@7.29.0)(nx@22.6.5) '@typescript-eslint/eslint-plugin': specifier: ^5.62.0 version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) @@ -46,8 +46,8 @@ importers: specifier: ^10.5.0 version: 10.5.0 nx: - specifier: 22.6.4 - version: 22.6.4 + specifier: 22.6.5 + version: 22.6.5 prettier: specifier: 3.6.2 version: 3.6.2 @@ -62,7 +62,7 @@ importers: version: 5.9.3 vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) wait-on: specifier: 9.0.5 version: 9.0.5 @@ -161,7 +161,7 @@ importers: version: 3.1.18 '@polar-sh/better-auth': specifier: ^1.6.4 - version: 1.8.3(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))))(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1)(zod@4.3.6) + version: 1.8.3(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))))(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1)(zod@4.3.6) '@polar-sh/sdk': specifier: ^0.42.2 version: 0.42.5 @@ -239,7 +239,7 @@ importers: version: 6.0.5(zod@4.3.6) better-auth: specifier: ~1.4.15 - version: 1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))) + version: 1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))) better-sqlite3: specifier: ^12.6.2 version: 12.8.0 @@ -254,7 +254,7 @@ importers: version: 16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6) fumadocs-mdx: specifier: ^14.2.6 - version: 14.2.11(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 14.2.11(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) fumadocs-twoslash: specifier: ^3.1.12 version: 3.1.15(@fumadocs/base-ui@16.5.0(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tailwindcss@4.2.2))(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3) @@ -412,10 +412,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/02-block-objects: dependencies: @@ -458,10 +458,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/03-multi-column: dependencies: @@ -507,10 +507,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/04-default-blocks: dependencies: @@ -553,10 +553,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/05-removing-default-blocks: dependencies: @@ -599,10 +599,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/06-block-manipulation: dependencies: @@ -645,10 +645,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/07-selection-blocks: dependencies: @@ -691,10 +691,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/08-ariakit: dependencies: @@ -737,10 +737,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/09-shadcn: dependencies: @@ -783,7 +783,7 @@ importers: devDependencies: '@tailwindcss/vite': specifier: ^4.1.14 - version: 4.2.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.2.2(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@types/react': specifier: ^19.2.3 version: 19.2.14 @@ -792,10 +792,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/10-localization: dependencies: @@ -838,10 +838,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/11-custom-placeholder: dependencies: @@ -884,10 +884,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/12-multi-editor: dependencies: @@ -930,10 +930,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/13-custom-paste-handler: dependencies: @@ -976,10 +976,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/14-editor-scrollable: dependencies: @@ -1022,10 +1022,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/15-shadowdom: dependencies: @@ -1068,10 +1068,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/16-read-only-editor: dependencies: @@ -1114,10 +1114,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/testing: dependencies: @@ -1160,10 +1160,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/02-backend/01-file-uploading: dependencies: @@ -1206,10 +1206,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/02-backend/02-saving-loading: dependencies: @@ -1252,10 +1252,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/02-backend/03-s3: dependencies: @@ -1304,10 +1304,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/02-backend/04-rendering-static-documents: dependencies: @@ -1353,10 +1353,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/01-ui-elements-remove: dependencies: @@ -1399,10 +1399,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/02-formatting-toolbar-buttons: dependencies: @@ -1445,10 +1445,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/03-formatting-toolbar-block-type-items: dependencies: @@ -1494,10 +1494,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/04-side-menu-buttons: dependencies: @@ -1543,10 +1543,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/05-side-menu-drag-handle-items: dependencies: @@ -1592,10 +1592,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/06-suggestion-menus-slash-menu-items: dependencies: @@ -1641,10 +1641,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/07-suggestion-menus-slash-menu-component: dependencies: @@ -1687,10 +1687,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/08-suggestion-menus-emoji-picker-columns: dependencies: @@ -1733,10 +1733,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/09-suggestion-menus-emoji-picker-component: dependencies: @@ -1779,10 +1779,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/10-suggestion-menus-grid-mentions: dependencies: @@ -1825,10 +1825,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/11-uppy-file-panel: dependencies: @@ -1907,10 +1907,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/12-static-formatting-toolbar: dependencies: @@ -1953,10 +1953,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/13-custom-ui: dependencies: @@ -2005,10 +2005,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/14-experimental-mobile-formatting-toolbar: dependencies: @@ -2051,10 +2051,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/15-advanced-tables: dependencies: @@ -2097,10 +2097,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/16-link-toolbar-buttons: dependencies: @@ -2143,10 +2143,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/17-advanced-tables-2: dependencies: @@ -2189,10 +2189,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/18-drag-n-drop: dependencies: @@ -2235,10 +2235,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/01-theming-dom-attributes: dependencies: @@ -2281,10 +2281,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/02-changing-font: dependencies: @@ -2327,10 +2327,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/03-theming-css: dependencies: @@ -2373,10 +2373,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/04-theming-css-variables: dependencies: @@ -2419,10 +2419,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/05-theming-css-variables-code: dependencies: @@ -2465,10 +2465,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/06-code-block: dependencies: @@ -2514,10 +2514,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/07-custom-code-block: dependencies: @@ -2578,10 +2578,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/01-converting-blocks-to-html: dependencies: @@ -2624,10 +2624,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/02-converting-blocks-from-html: dependencies: @@ -2670,10 +2670,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/03-converting-blocks-to-md: dependencies: @@ -2716,10 +2716,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/04-converting-blocks-from-md: dependencies: @@ -2762,10 +2762,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/05-converting-blocks-to-pdf: dependencies: @@ -2817,10 +2817,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/06-converting-blocks-to-docx: dependencies: @@ -2869,10 +2869,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/07-converting-blocks-to-odt: dependencies: @@ -2921,10 +2921,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/08-converting-blocks-to-react-email: dependencies: @@ -2973,10 +2973,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/09-blocks-to-html-static-render: dependencies: @@ -3019,10 +3019,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/10-static-html-render: dependencies: @@ -3065,10 +3065,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/01-alert-block: dependencies: @@ -3114,10 +3114,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/02-suggestion-menus-mentions: dependencies: @@ -3160,10 +3160,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/03-font-style: dependencies: @@ -3209,10 +3209,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/04-pdf-file-block: dependencies: @@ -3258,10 +3258,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/05-alert-block-full-ux: dependencies: @@ -3307,10 +3307,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/06-toggleable-blocks: dependencies: @@ -3353,10 +3353,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/07-configuring-blocks: dependencies: @@ -3399,10 +3399,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/draggable-inline-content: dependencies: @@ -3445,10 +3445,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/react-custom-blocks: dependencies: @@ -3491,10 +3491,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/react-custom-inline-content: dependencies: @@ -3537,10 +3537,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/react-custom-styles: dependencies: @@ -3583,10 +3583,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/01-partykit: dependencies: @@ -3635,10 +3635,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/02-liveblocks: dependencies: @@ -3699,10 +3699,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/03-y-sweet: dependencies: @@ -3748,10 +3748,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/04-electric-sql: dependencies: @@ -3794,10 +3794,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/05-comments: dependencies: @@ -3843,10 +3843,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/06-comments-with-sidebar: dependencies: @@ -3895,10 +3895,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/07-ghost-writer: dependencies: @@ -3947,10 +3947,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/08-forking: dependencies: @@ -3999,10 +3999,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/08-extensions/01-tiptap-arrow-conversion: dependencies: @@ -4048,10 +4048,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/01-minimal: dependencies: @@ -4100,10 +4100,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/02-playground: dependencies: @@ -4152,10 +4152,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/03-custom-ai-menu-items: dependencies: @@ -4207,10 +4207,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/04-with-collaboration: dependencies: @@ -4265,10 +4265,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/05-manual-execution: dependencies: @@ -4323,10 +4323,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/06-client-side-transport: dependencies: @@ -4378,10 +4378,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/07-server-persistence: dependencies: @@ -4430,10 +4430,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/vanilla-js/react-vanilla-custom-blocks: dependencies: @@ -4476,10 +4476,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/vanilla-js/react-vanilla-custom-inline-content: dependencies: @@ -4522,10 +4522,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/vanilla-js/react-vanilla-custom-styles: dependencies: @@ -4568,10 +4568,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) packages/ariakit: dependencies: @@ -4593,7 +4593,7 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -4614,13 +4614,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/code-block: dependencies: @@ -4654,13 +4654,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/core: dependencies: @@ -4808,13 +4808,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/dev-scripts: dependencies: @@ -4879,7 +4879,7 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -4900,13 +4900,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/react: dependencies: @@ -4973,7 +4973,7 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -4994,16 +4994,16 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/server-util: dependencies: @@ -5058,13 +5058,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/shadcn: dependencies: @@ -5137,7 +5137,7 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -5158,13 +5158,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/xl-ai: dependencies: @@ -5285,7 +5285,7 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/runner': specifier: ^4.1.2 version: 4.1.2 @@ -5318,16 +5318,16 @@ importers: version: 6.25.0 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/xl-ai-server: dependencies: @@ -5379,19 +5379,19 @@ importers: version: 6.25.0 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-node: specifier: ^6.0.0 - version: 6.0.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 6.0.0(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/xl-docx-exporter: dependencies: @@ -5437,13 +5437,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) xml-formatter: specifier: ^3.6.7 version: 3.7.0 @@ -5498,13 +5498,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/xl-multi-column: dependencies: @@ -5565,13 +5565,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/xl-odt-exporter: dependencies: @@ -5617,13 +5617,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) xml-formatter: specifier: ^3.6.7 version: 3.7.0 @@ -5690,13 +5690,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) playground: dependencies: @@ -5850,7 +5850,7 @@ importers: devDependencies: '@tailwindcss/vite': specifier: ^4.1.14 - version: 4.2.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.2.2(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@types/react': specifier: ^19.2.3 version: 19.2.14 @@ -5859,7 +5859,7 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -5877,13 +5877,13 @@ importers: version: 1.4.0 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-inspect: specifier: 12.0.0-beta.1 - version: 12.0.0-beta.1(typescript@5.9.3)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0) + version: 12.0.0-beta.1(typescript@5.9.3)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0) shared: dependencies: @@ -5924,7 +5924,7 @@ importers: version: link:../packages/shadcn '@playwright/experimental-ct-react': specifier: 1.51.1 - version: 1.51.1(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.51.1(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@playwright/test': specifier: 1.51.1 version: 1.51.1 @@ -5960,13 +5960,13 @@ importers: version: 5.0.10 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@20.19.37)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@20.19.37)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages: @@ -6969,11 +6969,11 @@ packages: '@date-fns/tz@1.4.1': resolution: {integrity: sha512-P5LUNhtbj6YfI3iJjw5EL9eUAG6OitD0W3fWQcpQjDRc/QIsL0tRNuO1PcDvPccWL1fSTXXdE1ds+l95DV/OFA==} - '@emnapi/core@1.9.2': - resolution: {integrity: sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==} + '@emnapi/core@1.10.0': + resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} - '@emnapi/runtime@1.9.2': - resolution: {integrity: sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==} + '@emnapi/runtime@1.10.0': + resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} '@emnapi/wasi-threads@1.2.1': resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} @@ -7955,9 +7955,6 @@ packages: peerDependencies: yjs: ^13.6.1 - '@ltd/j-toml@1.38.0': - resolution: {integrity: sha512-lYtBcmvHustHQtg4X7TXUu1Xa/tbLC3p2wLvgQI+fWVySguVZJF60Snxijw5EiohumxZbR10kWYFFebh1zotiw==} - '@mantine/core@8.3.18': resolution: {integrity: sha512-9tph1lTVogKPjTx02eUxDUOdXacPzK62UuSqb4TdGliI54/Xgxftq0Dfqu6XuhCxn9J5MDJaNiLDvL/1KRkYqA==} peerDependencies: @@ -8181,71 +8178,71 @@ packages: resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} engines: {node: '>=12.4.0'} - '@nx/devkit@22.6.4': - resolution: {integrity: sha512-4VRND4Hl+zWSPvs68cJn0PUoxi1ADS1iqXy3VJNtUlVqjE7Y5LtZxKUC05w5OKP+2jMfU3viPTZIGwHnHuIaYA==} + '@nx/devkit@22.6.5': + resolution: {integrity: sha512-9kvAI+kk2pfEXLqS8OyjI9XvWmp+Gdn7jPfxDAz8BOqxMyPy3p5hYl+jc4TIsLOWunAFl8azqrcYsHzEpaWCIA==} peerDependencies: nx: '>= 21 <= 23 || ^22.0.0-0' - '@nx/js@22.6.4': - resolution: {integrity: sha512-5437z2lHT1Xq+xuzn9WjcaYcUnTh6qHfICO6d/rY6n9x34pYYTNdNPdabekL1pEEAeKcFAh6fCV7O8E8vIFBLQ==} + '@nx/js@22.6.5': + resolution: {integrity: sha512-bmikz6qaBHfuAgsqPB/TfLIKfvI4g+EKIRAiU2FHnEtVWOKDAmSQXHFwE3rMS49jl2JLgxkdNjZHpg4g/OLy0g==} peerDependencies: verdaccio: ^6.0.5 peerDependenciesMeta: verdaccio: optional: true - '@nx/nx-darwin-arm64@22.6.4': - resolution: {integrity: sha512-KuUQ9t8pxIO+Px1kbjA0XDLOU6XoAsijl0ssIMRYN1w5ly+0k/KglWt7qgwDockkaLRHkQ3YSR8I2LJXJE+Vig==} + '@nx/nx-darwin-arm64@22.6.5': + resolution: {integrity: sha512-qT77Omkg5xQuL2+pDbneX2tI+XW5ZeayMylu7UUgK8OhTrAkJLKjpuYRH4xT5XBipxbDtlxmO3aLS3Ib1pKzJQ==} cpu: [arm64] os: [darwin] - '@nx/nx-darwin-x64@22.6.4': - resolution: {integrity: sha512-FB2XL2+ixbRI1fddz4oW+9MhoJASoTD8Ai4q5+B1OUPftgarIPLxaqI8TWba30Bos2AiYDofMJPf9uhBmLDH5Q==} + '@nx/nx-darwin-x64@22.6.5': + resolution: {integrity: sha512-9jICxb7vfJ56y/7Yuh3b/n1QJqWxO9xnXKYEs6SO8xPoW/KomVckILGc1C6RQSs6/3ixVJC7k1Dh1wm5tKPFrg==} cpu: [x64] os: [darwin] - '@nx/nx-freebsd-x64@22.6.4': - resolution: {integrity: sha512-qNsXhlflc77afjcRKCn7bqI8l/HPEjKhQRFs8wfKbAfNw3XEASc0EZtBV/TStLGV6PEZQldVBaId5FBMp8GW6Q==} + '@nx/nx-freebsd-x64@22.6.5': + resolution: {integrity: sha512-6B1wEKpqz5dI3AGMqttAVnA6M3DB/besAtuGyQiymK9ROlta1iuWgCcIYwcCQyhLn2Rx7vqj447KKcgCa8HlVw==} cpu: [x64] os: [freebsd] - '@nx/nx-linux-arm-gnueabihf@22.6.4': - resolution: {integrity: sha512-rjfnii0xGe8SQqsO/DDHeJSjbqp2H5fOEgZlaYXDGOwQeLZ1TQplEdx8hyI/ErAUwVO3YHnzoMtmachBQOlspw==} + '@nx/nx-linux-arm-gnueabihf@22.6.5': + resolution: {integrity: sha512-xV50B8mnDPboct7JkAHftajI02s+8FszA8WTzhore+YGR+lEKHTLpucwGEaQuMlSdLplH7pQix4B4uK5pcMhZw==} cpu: [arm] os: [linux] - '@nx/nx-linux-arm64-gnu@22.6.4': - resolution: {integrity: sha512-x6Zim1STewCXuHBCgoy2TO0586UlwH4RNCobn0mTiPd1jt7nU+fNqo3SpY8RzY1KmBfgcO48BBrfykPE9YWMpg==} + '@nx/nx-linux-arm64-gnu@22.6.5': + resolution: {integrity: sha512-2JkWuMGj+HpW6oPAvU5VdAx1afTnEbiM10Y3YOrl3fipWV4BiP5VDx762QTrfCraP4hl6yqTgvTe7F9xaby+jQ==} cpu: [arm64] os: [linux] - '@nx/nx-linux-arm64-musl@22.6.4': - resolution: {integrity: sha512-vYOqdgXIhtHFWdtnonp/jFfmfkyNPTu1JEdXuJpSxwUQdV2dWqS/l3HVPVWHXDrVKofPafK3M72jMvoWoaOQ6g==} + '@nx/nx-linux-arm64-musl@22.6.5': + resolution: {integrity: sha512-Z/zMqFClnEyqDXouJKEPoWVhMQIif5F0YuECWBYjd3ZLwQsXGTItoh+6Wm3XF/nGMA2uLOHyTq/X7iFXQY3RzA==} cpu: [arm64] os: [linux] - '@nx/nx-linux-x64-gnu@22.6.4': - resolution: {integrity: sha512-UfWUDlOzlvQNVa1mnqOFxzvUwoGfM2o9ruhwYRoFm3XJbVYnjINyQsdcHwwDJItJP04LZzLPxA1+O8sU+Oqg6A==} + '@nx/nx-linux-x64-gnu@22.6.5': + resolution: {integrity: sha512-FlotSyqNnaXSn0K+yWw+hRdYBwusABrPgKLyixfJIYRzsy+xPKN6pON6vZfqGwzuWF/9mEGReRz+iM8PiW0XSg==} cpu: [x64] os: [linux] - '@nx/nx-linux-x64-musl@22.6.4': - resolution: {integrity: sha512-dwXpcyin4ScD5gH9FdhiNnOqFXclXLFBDTyRCEOlRUbOPayF9YEcH0PPIf9uWmwP3tshhAdr5sg9DLN+r7M3xg==} + '@nx/nx-linux-x64-musl@22.6.5': + resolution: {integrity: sha512-RVOe2qcwhoIx6mxQURPjUfAW5SEOmT2gdhewvdcvX9ICq1hj5B2VarmkhTg0qroO7xiyqOqwq26mCzoV2I3NgQ==} cpu: [x64] os: [linux] - '@nx/nx-win32-arm64-msvc@22.6.4': - resolution: {integrity: sha512-KqjJbFWhKJaKjET3Ep8hltXPizO0EstF4yfmp3oepWVn11poagc2MT1pf/tnRf6cdD88wd0bmw/83Ng6WUQ3Uw==} + '@nx/nx-win32-arm64-msvc@22.6.5': + resolution: {integrity: sha512-ZqurqI8VuYnsr2Kn4K4t+Gx6j/BZdf6qz/6Tv4A7XQQ6oNYVQgTqoNEFj+CCkVaIe6aIdCWpousFLqs+ZgBqYQ==} cpu: [arm64] os: [win32] - '@nx/nx-win32-x64-msvc@22.6.4': - resolution: {integrity: sha512-CIL9m6uilGGr/eU+41/+aVWUnEcq+j1EDynUX2A4InLTbAN0ylte4Af+72mvipNiqJgDkjKaNzOCQDnp8QBjEQ==} + '@nx/nx-win32-x64-msvc@22.6.5': + resolution: {integrity: sha512-i2QFBJIuaYg9BHxrrnBV4O7W9rVL2k0pSIdk/rRp3EYJEU93iUng+qbZiY9wh1xvmXuUCE2G7TRd+8/SG/RFKg==} cpu: [x64] os: [win32] - '@nx/workspace@22.6.4': - resolution: {integrity: sha512-7t7sEjTjhINUC2aOze0K/hLuK6s6lyg+mH+/dSnkePfMVauZoodxhknHwZ3n50+lW9jyYEd7GqeiXn45TqpTpQ==} + '@nx/workspace@22.6.5': + resolution: {integrity: sha512-/CZtv1ESSfZ1MVqSlCsmnBWysU1z5VdNlwANlqL6BV2X6RUHKDPVj4YuNPvCK+0LsqyzfJdUt3pcnBYxnT5TIg==} '@open-draft/deferred-promise@2.2.0': resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} @@ -11388,9 +11385,6 @@ packages: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} - async@3.2.6: - resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} - asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -11412,9 +11406,6 @@ packages: resolution: {integrity: sha512-byD6KPdvo72y/wj2T/4zGEvvlis+PsZsn/yPS3pEO+sFpcrqRpX/TJCxvVaEsNeMrfQbCr7w163YqoD9IYwHXw==} engines: {node: '>=4'} - axios@1.12.0: - resolution: {integrity: sha512-oXTDccv8PcfjZmPGlWsPSwtOJCZ/b6W5jAMCNcfwJbCzDckwG0jrYJFaWH1yvivfCXjVzV/SPDEhMB3Q+DSurg==} - axios@1.15.0: resolution: {integrity: sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==} @@ -12190,9 +12181,9 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - ejs@3.1.10: - resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} - engines: {node: '>=0.10.0'} + ejs@5.0.1: + resolution: {integrity: sha512-COqBPFMxuPTPspXl2DkVYaDS3HtrD1GpzOGkNTJ1IYkifq/r9h8SVEFrjA3D9/VJGOEoMQcrlhpntcSUrM8k6A==} + engines: {node: '>=0.12.18'} hasBin: true electron-to-chromium@1.5.331: @@ -12654,9 +12645,6 @@ packages: file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - filelist@1.0.6: - resolution: {integrity: sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==} - fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -12683,15 +12671,6 @@ packages: flatted@3.4.2: resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} - follow-redirects@1.15.11: - resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - follow-redirects@1.16.0: resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} engines: {node: '>=4.0'} @@ -13485,11 +13464,6 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jake@10.9.4: - resolution: {integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==} - engines: {node: '>=10'} - hasBin: true - jay-peg@1.1.1: resolution: {integrity: sha512-D62KEuBxz/ip2gQKOEhk/mx14o7eiFRaU+VNNSP4MOiIkwb/D6B3G1Mfas7C/Fit8EsSV2/IWjZElx/Gs6A4ww==} @@ -14076,10 +14050,6 @@ packages: minimatch@3.1.5: resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} - minimatch@5.1.9: - resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} - engines: {node: '>=10'} - minimatch@9.0.9: resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} engines: {node: '>=16 || 14 >=14.17'} @@ -14311,8 +14281,8 @@ packages: nwsapi@2.2.23: resolution: {integrity: sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==} - nx@22.6.4: - resolution: {integrity: sha512-WEaCnLKeO9RhQAOBMfXgYO/Lx5wL4ARCtRGiYCjJtAJIZ5kcVn4uPKL2Xz1xekpF7ef/+YNrUQSrblx47Ms9Rg==} + nx@22.6.5: + resolution: {integrity: sha512-VRKhDAt684dXNSz9MNjE7MekkCfQF41P2PSx5jEWQjDEP1Z4jFZbyeygWs5ZyOroG7/n0MoWAJTe6ftvIcBOAg==} hasBin: true peerDependencies: '@swc-node/register': ^1.11.1 @@ -15159,8 +15129,8 @@ packages: regjsgen@0.8.0: resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} - regjsparser@0.13.0: - resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==} + regjsparser@0.13.1: + resolution: {integrity: sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==} hasBin: true rehype-format@5.0.1: @@ -15225,8 +15195,8 @@ packages: resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} engines: {node: '>=10'} - resolve@1.22.11: - resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} + resolve@1.22.12: + resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} engines: {node: '>= 0.4'} hasBin: true @@ -15488,6 +15458,10 @@ packages: slate@0.110.2: resolution: {integrity: sha512-4xGULnyMCiEQ0Ml7JAC1A6HVE6MNpPJU7Eq4cXh1LxlrR0dFXC3XC+rNfQtUJ7chHoPkws57x7DDiWiZAt+PBA==} + smol-toml@1.6.1: + resolution: {integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==} + engines: {node: '>= 18'} + socket.io-adapter@2.5.6: resolution: {integrity: sha512-DkkO/dz7MGln0dHn5bmN3pPy+JmywNICWrJqVWiVOyvXjWQFIv9c2h24JrQLLFJ2aQVQf/Cvl1vblnd4r2apLQ==} @@ -15800,6 +15774,10 @@ packages: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} + tinyglobby@0.2.16: + resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} + engines: {node: '>=12.0.0'} + tinyrainbow@3.1.0: resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} engines: {node: '>=14.0.0'} @@ -17192,7 +17170,7 @@ snapshots: '@babel/helper-plugin-utils': 7.28.6 debug: 4.4.3 lodash.debounce: 4.0.8 - resolve: 1.22.11 + resolve: 1.22.12 transitivePeerDependencies: - supports-color @@ -18047,12 +18025,12 @@ snapshots: '@date-fns/tz@1.4.1': {} - '@emnapi/core@1.9.2': + '@emnapi/core@1.10.0': dependencies: '@emnapi/wasi-threads': 1.2.1 tslib: 2.8.1 - '@emnapi/runtime@1.9.2': + '@emnapi/runtime@1.10.0': dependencies: tslib: 2.8.1 @@ -18649,7 +18627,7 @@ snapshots: '@img/sharp-wasm32@0.34.5': dependencies: - '@emnapi/runtime': 1.9.2 + '@emnapi/runtime': 1.10.0 optional: true '@img/sharp-win32-arm64@0.34.5': @@ -18915,8 +18893,6 @@ snapshots: transitivePeerDependencies: - '@types/json-schema' - '@ltd/j-toml@1.38.0': {} - '@mantine/core@8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@floating-ui/react': 0.27.19(react-dom@19.2.5(react@19.2.5))(react@19.2.5) @@ -19094,21 +19070,21 @@ snapshots: '@napi-rs/wasm-runtime@0.2.12': dependencies: - '@emnapi/core': 1.9.2 - '@emnapi/runtime': 1.9.2 + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 '@tybys/wasm-util': 0.10.1 optional: true '@napi-rs/wasm-runtime@0.2.4': dependencies: - '@emnapi/core': 1.9.2 - '@emnapi/runtime': 1.9.2 + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 '@tybys/wasm-util': 0.9.0 - '@napi-rs/wasm-runtime@1.1.2(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': + '@napi-rs/wasm-runtime@1.1.2(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': dependencies: - '@emnapi/core': 1.9.2 - '@emnapi/runtime': 1.9.2 + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 '@tybys/wasm-util': 0.10.1 optional: true @@ -19166,18 +19142,18 @@ snapshots: '@nolyfill/is-core-module@1.0.39': {} - '@nx/devkit@22.6.4(nx@22.6.4)': + '@nx/devkit@22.6.5(nx@22.6.5)': dependencies: '@zkochan/js-yaml': 0.0.7 - ejs: 3.1.10 + ejs: 5.0.1 enquirer: 2.3.6 minimatch: 10.2.4 - nx: 22.6.4 + nx: 22.6.5 semver: 7.7.4 tslib: 2.8.1 yargs-parser: 21.1.1 - '@nx/js@22.6.4(@babel/traverse@7.29.0)(nx@22.6.4)': + '@nx/js@22.6.5(@babel/traverse@7.29.0)(nx@22.6.5)': dependencies: '@babel/core': 7.29.0 '@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.29.0) @@ -19186,8 +19162,8 @@ snapshots: '@babel/preset-env': 7.29.2(@babel/core@7.29.0) '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) '@babel/runtime': 7.29.2 - '@nx/devkit': 22.6.4(nx@22.6.4) - '@nx/workspace': 22.6.4 + '@nx/devkit': 22.6.5(nx@22.6.5) + '@nx/workspace': 22.6.5 '@zkochan/js-yaml': 0.0.7 babel-plugin-const-enum: 1.2.0(@babel/core@7.29.0) babel-plugin-macros: 3.1.0 @@ -19203,7 +19179,7 @@ snapshots: picomatch: 4.0.4 semver: 7.7.4 source-map-support: 0.5.19 - tinyglobby: 0.2.12 + tinyglobby: 0.2.16 tslib: 2.8.1 transitivePeerDependencies: - '@babel/traverse' @@ -19213,43 +19189,43 @@ snapshots: - nx - supports-color - '@nx/nx-darwin-arm64@22.6.4': + '@nx/nx-darwin-arm64@22.6.5': optional: true - '@nx/nx-darwin-x64@22.6.4': + '@nx/nx-darwin-x64@22.6.5': optional: true - '@nx/nx-freebsd-x64@22.6.4': + '@nx/nx-freebsd-x64@22.6.5': optional: true - '@nx/nx-linux-arm-gnueabihf@22.6.4': + '@nx/nx-linux-arm-gnueabihf@22.6.5': optional: true - '@nx/nx-linux-arm64-gnu@22.6.4': + '@nx/nx-linux-arm64-gnu@22.6.5': optional: true - '@nx/nx-linux-arm64-musl@22.6.4': + '@nx/nx-linux-arm64-musl@22.6.5': optional: true - '@nx/nx-linux-x64-gnu@22.6.4': + '@nx/nx-linux-x64-gnu@22.6.5': optional: true - '@nx/nx-linux-x64-musl@22.6.4': + '@nx/nx-linux-x64-musl@22.6.5': optional: true - '@nx/nx-win32-arm64-msvc@22.6.4': + '@nx/nx-win32-arm64-msvc@22.6.5': optional: true - '@nx/nx-win32-x64-msvc@22.6.4': + '@nx/nx-win32-x64-msvc@22.6.5': optional: true - '@nx/workspace@22.6.4': + '@nx/workspace@22.6.5': dependencies: - '@nx/devkit': 22.6.4(nx@22.6.4) + '@nx/devkit': 22.6.5(nx@22.6.5) '@zkochan/js-yaml': 0.0.7 chalk: 4.1.2 enquirer: 2.3.6 - nx: 22.6.4 + nx: 22.6.5 picomatch: 4.0.4 semver: 7.7.4 tslib: 2.8.1 @@ -19555,10 +19531,10 @@ snapshots: - sugarss - terser - '@playwright/experimental-ct-react@1.51.1(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@playwright/experimental-ct-react@1.51.1(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@playwright/experimental-ct-core': 1.51.1(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.1) - '@vitejs/plugin-react': 4.7.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitejs/plugin-react': 4.7.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) transitivePeerDependencies: - '@types/node' - less @@ -19575,11 +19551,11 @@ snapshots: dependencies: playwright: 1.51.1 - '@polar-sh/better-auth@1.8.3(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))))(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1)(zod@4.3.6)': + '@polar-sh/better-auth@1.8.3(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))))(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1)(zod@4.3.6)': dependencies: '@polar-sh/checkout': 0.2.0(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1) '@polar-sh/sdk': 0.42.5 - better-auth: 1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))) + better-auth: 1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))) zod: 4.3.6 transitivePeerDependencies: - '@stripe/react-stripe-js' @@ -20744,9 +20720,9 @@ snapshots: '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': dependencies: - '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -21605,12 +21581,12 @@ snapshots: postcss: 8.5.8 tailwindcss: 4.2.2 - '@tailwindcss/vite@4.2.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@tailwindcss/vite@4.2.2(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@tailwindcss/node': 4.2.2 '@tailwindcss/oxide': 4.2.2 tailwindcss: 4.2.2 - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) '@tanstack/react-store@0.7.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: @@ -21761,7 +21737,7 @@ snapshots: dependencies: minimatch: 10.2.5 path-browserify: 1.0.1 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 '@tybys/wasm-util@0.10.1': dependencies: @@ -22180,7 +22156,7 @@ snapshots: debug: 4.4.3 minimatch: 10.2.5 semver: 7.7.4 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -22424,12 +22400,12 @@ snapshots: '@vercel/oidc@3.0.5': {} - '@vitejs/devtools-kit@0.1.13(typescript@5.9.3)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0)': + '@vitejs/devtools-kit@0.1.13(typescript@5.9.3)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0)': dependencies: '@vitejs/devtools-rpc': 0.1.13(typescript@5.9.3)(ws@8.20.0) birpc: 4.0.0 ohash: 2.0.11 - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - typescript - ws @@ -22446,7 +22422,7 @@ snapshots: transitivePeerDependencies: - typescript - '@vitejs/plugin-react@4.7.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitejs/plugin-react@4.7.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) @@ -22454,21 +22430,21 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitejs/plugin-react@6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.7 - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) optionalDependencies: babel-plugin-react-compiler: 1.0.0 - '@vitejs/plugin-react@6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitejs/plugin-react@6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.7 - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) optionalDependencies: babel-plugin-react-compiler: 1.0.0 @@ -22481,33 +22457,33 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@vitest/spy': 4.1.2 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.11.5(@types/node@20.19.37)(typescript@5.9.3) - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@vitest/spy': 4.1.2 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.11.5(@types/node@25.5.0)(typescript@5.9.3) - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) optional: true - '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@vitest/spy': 4.1.2 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.11.5(@types/node@25.6.0)(typescript@5.9.3) - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) '@vitest/pretty-format@4.1.2': dependencies: @@ -22843,8 +22819,6 @@ snapshots: async-function@1.0.0: {} - async@3.2.6: {} - asynckit@0.4.0: {} atomically@2.1.1: @@ -22868,14 +22842,6 @@ snapshots: axe-core@4.11.2: {} - axios@1.12.0: - dependencies: - follow-redirects: 1.15.11 - form-data: 4.0.5 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - axios@1.15.0: dependencies: follow-redirects: 1.16.0 @@ -22899,7 +22865,7 @@ snapshots: dependencies: '@babel/runtime': 7.29.2 cosmiconfig: 7.1.0 - resolve: 1.22.11 + resolve: 1.22.12 babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.0): dependencies: @@ -22982,7 +22948,7 @@ snapshots: baseline-browser-mapping@2.10.17: {} - better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))): + better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))): dependencies: '@better-auth/core': 1.4.22(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.8(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0) '@better-auth/telemetry': 1.4.22(@better-auth/core@1.4.22(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.8(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0)) @@ -23002,7 +22968,7 @@ snapshots: pg: 8.20.0 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - vitest: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + vitest: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) better-call@1.1.8(zod@4.3.6): dependencies: @@ -23601,7 +23567,7 @@ snapshots: dotenv-expand@11.0.7: dependencies: - dotenv: 16.6.1 + dotenv: 16.4.7 dotenv@16.4.7: {} @@ -23615,9 +23581,7 @@ snapshots: eastasianwidth@0.2.0: {} - ejs@3.1.10: - dependencies: - jake: 10.9.4 + ejs@5.0.1: {} electron-to-chromium@1.5.331: {} @@ -23952,7 +23916,7 @@ snapshots: get-tsconfig: 4.13.7 is-bun-module: 2.0.0 stable-hash: 0.0.5 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 unrs-resolver: 1.11.1 optionalDependencies: eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) @@ -24440,10 +24404,6 @@ snapshots: file-uri-to-path@1.0.0: {} - filelist@1.0.6: - dependencies: - minimatch: 5.1.9 - fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -24470,8 +24430,6 @@ snapshots: flatted@3.4.2: {} - follow-redirects@1.15.11: {} - follow-redirects@1.16.0: {} fontkit@2.0.4: @@ -24571,7 +24529,7 @@ snapshots: transitivePeerDependencies: - supports-color - fumadocs-mdx@14.2.11(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + fumadocs-mdx@14.2.11(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@mdx-js/mdx': 3.1.1 '@standard-schema/spec': 1.1.0 @@ -24597,7 +24555,7 @@ snapshots: '@types/react': 19.2.14 next: 16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - supports-color @@ -25342,12 +25300,6 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jake@10.9.4: - dependencies: - async: 3.2.6 - filelist: 1.0.6 - picocolors: 1.1.1 - jay-peg@1.1.1: dependencies: restructure: 3.0.2 @@ -26181,10 +26133,6 @@ snapshots: dependencies: brace-expansion: 1.1.13 - minimatch@5.1.9: - dependencies: - brace-expansion: 2.0.3 - minimatch@9.0.9: dependencies: brace-expansion: 2.0.3 @@ -26449,20 +26397,19 @@ snapshots: nwsapi@2.2.23: {} - nx@22.6.4: + nx@22.6.5: dependencies: - '@ltd/j-toml': 1.38.0 '@napi-rs/wasm-runtime': 0.2.4 '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.2 '@zkochan/js-yaml': 0.0.7 - axios: 1.12.0 + axios: 1.15.0 cli-cursor: 3.1.0 cli-spinners: 2.6.1 cliui: 8.0.1 dotenv: 16.4.7 dotenv-expand: 11.0.7 - ejs: 3.1.10 + ejs: 5.0.1 enquirer: 2.3.6 figures: 3.2.0 flat: 5.0.2 @@ -26478,6 +26425,7 @@ snapshots: picocolors: 1.1.1 resolve.exports: 2.0.3 semver: 7.7.4 + smol-toml: 1.6.1 string-width: 4.2.3 tar-stream: 2.2.0 tmp: 0.2.5 @@ -26488,16 +26436,16 @@ snapshots: yargs: 17.7.2 yargs-parser: 21.1.1 optionalDependencies: - '@nx/nx-darwin-arm64': 22.6.4 - '@nx/nx-darwin-x64': 22.6.4 - '@nx/nx-freebsd-x64': 22.6.4 - '@nx/nx-linux-arm-gnueabihf': 22.6.4 - '@nx/nx-linux-arm64-gnu': 22.6.4 - '@nx/nx-linux-arm64-musl': 22.6.4 - '@nx/nx-linux-x64-gnu': 22.6.4 - '@nx/nx-linux-x64-musl': 22.6.4 - '@nx/nx-win32-arm64-msvc': 22.6.4 - '@nx/nx-win32-x64-msvc': 22.6.4 + '@nx/nx-darwin-arm64': 22.6.5 + '@nx/nx-darwin-x64': 22.6.5 + '@nx/nx-freebsd-x64': 22.6.5 + '@nx/nx-linux-arm-gnueabihf': 22.6.5 + '@nx/nx-linux-arm64-gnu': 22.6.5 + '@nx/nx-linux-arm64-musl': 22.6.5 + '@nx/nx-linux-x64-gnu': 22.6.5 + '@nx/nx-linux-x64-musl': 22.6.5 + '@nx/nx-win32-arm64-msvc': 22.6.5 + '@nx/nx-win32-x64-msvc': 22.6.5 transitivePeerDependencies: - debug @@ -26612,7 +26560,7 @@ snapshots: bl: 4.1.0 chalk: 4.1.2 cli-cursor: 3.1.0 - cli-spinners: 2.9.2 + cli-spinners: 2.6.1 is-interactive: 1.0.0 log-symbols: 4.1.0 strip-ansi: 6.0.1 @@ -27407,7 +27355,7 @@ snapshots: regenerate: 1.4.2 regenerate-unicode-properties: 10.2.2 regjsgen: 0.8.0 - regjsparser: 0.13.0 + regjsparser: 0.13.1 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.2.1 @@ -27422,7 +27370,7 @@ snapshots: regjsgen@0.8.0: {} - regjsparser@0.13.0: + regjsparser@0.13.1: dependencies: jsesc: 3.1.0 @@ -27533,8 +27481,9 @@ snapshots: resolve.exports@2.0.3: {} - resolve@1.22.11: + resolve@1.22.12: dependencies: + es-errors: 1.3.0 is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -27574,7 +27523,7 @@ snapshots: dependencies: glob: 10.5.0 - rolldown@1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2): + rolldown@1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0): dependencies: '@oxc-project/types': 0.122.0 '@rolldown/pluginutils': 1.0.0-rc.12 @@ -27591,7 +27540,7 @@ snapshots: '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.12 '@rolldown/binding-linux-x64-musl': 1.0.0-rc.12 '@rolldown/binding-openharmony-arm64': 1.0.0-rc.12 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.12 '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.12 transitivePeerDependencies: @@ -27923,6 +27872,8 @@ snapshots: is-plain-object: 5.0.0 tiny-warning: 1.0.3 + smol-toml@1.6.1: {} + socket.io-adapter@2.5.6: dependencies: debug: 4.4.3 @@ -28144,7 +28095,7 @@ snapshots: lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.7 - tinyglobby: 0.2.12 + tinyglobby: 0.2.16 ts-interface-checker: 0.1.13 supports-color@7.2.0: @@ -28255,6 +28206,11 @@ snapshots: fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 + tinyglobby@0.2.16: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + tinyrainbow@3.1.0: {} tldts-core@6.1.86: {} @@ -28644,13 +28600,13 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 - vite-node@6.0.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): + vite-node@6.0.0(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): dependencies: cac: 7.0.0 es-module-lexer: 2.0.0 obug: 2.1.1 pathe: 2.0.3 - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -28667,33 +28623,33 @@ snapshots: - tsx - yaml - vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@rollup/pluginutils': 4.2.1 '@types/eslint': 8.56.12 eslint: 8.57.1 rollup: 2.80.0 - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@rollup/pluginutils': 4.2.1 '@types/eslint': 8.56.12 eslint: 8.57.1 rollup: 2.80.0 - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vite-plugin-externalize-deps@0.10.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vite-plugin-externalize-deps@0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vite-plugin-externalize-deps@0.10.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vite-plugin-externalize-deps@0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vite-plugin-inspect@12.0.0-beta.1(typescript@5.9.3)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0): + vite-plugin-inspect@12.0.0-beta.1(typescript@5.9.3)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0): dependencies: - '@vitejs/devtools-kit': 0.1.13(typescript@5.9.3)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0) + '@vitejs/devtools-kit': 0.1.13(typescript@5.9.3)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0) ansis: 4.2.0 error-stack-parser-es: 1.0.5 obug: 2.1.1 @@ -28702,7 +28658,7 @@ snapshots: perfect-debounce: 2.1.0 sirv: 3.0.2 unplugin-utils: 0.3.1 - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - typescript - ws @@ -28718,12 +28674,12 @@ snapshots: lightningcss: 1.32.0 terser: 5.46.1 - vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): + vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 postcss: 8.5.8 - rolldown: 1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + rolldown: 1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) tinyglobby: 0.2.15 optionalDependencies: '@types/node': 20.19.37 @@ -28737,12 +28693,12 @@ snapshots: - '@emnapi/core' - '@emnapi/runtime' - vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): + vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 postcss: 8.5.8 - rolldown: 1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + rolldown: 1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) tinyglobby: 0.2.15 optionalDependencies: '@types/node': 25.5.0 @@ -28757,12 +28713,12 @@ snapshots: - '@emnapi/runtime' optional: true - vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): + vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 postcss: 8.5.8 - rolldown: 1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + rolldown: 1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) tinyglobby: 0.2.15 optionalDependencies: '@types/node': 25.6.0 @@ -28785,10 +28741,10 @@ snapshots: transitivePeerDependencies: - supports-color - vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@20.19.37)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@20.19.37)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@vitest/expect': 4.1.2 - '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/pretty-format': 4.1.2 '@vitest/runner': 4.1.2 '@vitest/snapshot': 4.1.2 @@ -28805,7 +28761,7 @@ snapshots: tinyexec: 1.0.4 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.1 @@ -28814,10 +28770,10 @@ snapshots: transitivePeerDependencies: - msw - vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@vitest/expect': 4.1.2 - '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/pretty-format': 4.1.2 '@vitest/runner': 4.1.2 '@vitest/snapshot': 4.1.2 @@ -28834,7 +28790,7 @@ snapshots: tinyexec: 1.0.4 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.1 @@ -28844,10 +28800,10 @@ snapshots: - msw optional: true - vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@vitest/expect': 4.1.2 - '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/pretty-format': 4.1.2 '@vitest/runner': 4.1.2 '@vitest/snapshot': 4.1.2 @@ -28864,7 +28820,7 @@ snapshots: tinyexec: 1.0.4 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.1 From 51e6bcd4dfce8af770961b423e83c836a23edd73 Mon Sep 17 00:00:00 2001 From: Nick the Sick Date: Thu, 16 Apr 2026 18:54:42 +0200 Subject: [PATCH 10/76] Revert "fix(deps): upgrade nx to 22.6.5 to resolve axios security vulnerability (CVE-2025-62718)" This reverts commit c1ef3018a1137b25655894969cbf20b36b83240f. --- package.json | 4 +- pnpm-lock.yaml | 860 ++++++++++++++++++++++++++----------------------- 2 files changed, 454 insertions(+), 410 deletions(-) diff --git a/package.json b/package.json index e9bb26f510..04d64da61b 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "root", "type": "module", "devDependencies": { - "@nx/js": "22.6.5", + "@nx/js": "22.6.4", "@typescript-eslint/eslint-plugin": "^5.62.0", "@typescript-eslint/parser": "^5.62.0", "concurrently": "9.1.2", @@ -10,7 +10,7 @@ "eslint-config-react-app": "^7.0.1", "eslint-plugin-import": "^2.32.0", "glob": "^10.5.0", - "nx": "22.6.5", + "nx": "22.6.4", "prettier": "3.6.2", "prettier-plugin-tailwindcss": "^0.6.14", "serve": "14.2.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 49baa3aca3..f4a1285250 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,8 +22,8 @@ importers: .: devDependencies: '@nx/js': - specifier: 22.6.5 - version: 22.6.5(@babel/traverse@7.29.0)(nx@22.6.5) + specifier: 22.6.4 + version: 22.6.4(@babel/traverse@7.29.0)(nx@22.6.4) '@typescript-eslint/eslint-plugin': specifier: ^5.62.0 version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) @@ -46,8 +46,8 @@ importers: specifier: ^10.5.0 version: 10.5.0 nx: - specifier: 22.6.5 - version: 22.6.5 + specifier: 22.6.4 + version: 22.6.4 prettier: specifier: 3.6.2 version: 3.6.2 @@ -62,7 +62,7 @@ importers: version: 5.9.3 vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) wait-on: specifier: 9.0.5 version: 9.0.5 @@ -161,7 +161,7 @@ importers: version: 3.1.18 '@polar-sh/better-auth': specifier: ^1.6.4 - version: 1.8.3(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))))(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1)(zod@4.3.6) + version: 1.8.3(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))))(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1)(zod@4.3.6) '@polar-sh/sdk': specifier: ^0.42.2 version: 0.42.5 @@ -239,7 +239,7 @@ importers: version: 6.0.5(zod@4.3.6) better-auth: specifier: ~1.4.15 - version: 1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))) + version: 1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))) better-sqlite3: specifier: ^12.6.2 version: 12.8.0 @@ -254,7 +254,7 @@ importers: version: 16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6) fumadocs-mdx: specifier: ^14.2.6 - version: 14.2.11(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 14.2.11(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) fumadocs-twoslash: specifier: ^3.1.12 version: 3.1.15(@fumadocs/base-ui@16.5.0(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tailwindcss@4.2.2))(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3) @@ -412,10 +412,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/02-block-objects: dependencies: @@ -458,10 +458,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/03-multi-column: dependencies: @@ -507,10 +507,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/04-default-blocks: dependencies: @@ -553,10 +553,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/05-removing-default-blocks: dependencies: @@ -599,10 +599,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/06-block-manipulation: dependencies: @@ -645,10 +645,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/07-selection-blocks: dependencies: @@ -691,10 +691,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/08-ariakit: dependencies: @@ -737,10 +737,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/09-shadcn: dependencies: @@ -783,7 +783,7 @@ importers: devDependencies: '@tailwindcss/vite': specifier: ^4.1.14 - version: 4.2.2(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.2.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@types/react': specifier: ^19.2.3 version: 19.2.14 @@ -792,10 +792,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/10-localization: dependencies: @@ -838,10 +838,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/11-custom-placeholder: dependencies: @@ -884,10 +884,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/12-multi-editor: dependencies: @@ -930,10 +930,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/13-custom-paste-handler: dependencies: @@ -976,10 +976,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/14-editor-scrollable: dependencies: @@ -1022,10 +1022,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/15-shadowdom: dependencies: @@ -1068,10 +1068,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/16-read-only-editor: dependencies: @@ -1114,10 +1114,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/testing: dependencies: @@ -1160,10 +1160,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/02-backend/01-file-uploading: dependencies: @@ -1206,10 +1206,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/02-backend/02-saving-loading: dependencies: @@ -1252,10 +1252,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/02-backend/03-s3: dependencies: @@ -1304,10 +1304,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/02-backend/04-rendering-static-documents: dependencies: @@ -1353,10 +1353,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/01-ui-elements-remove: dependencies: @@ -1399,10 +1399,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/02-formatting-toolbar-buttons: dependencies: @@ -1445,10 +1445,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/03-formatting-toolbar-block-type-items: dependencies: @@ -1494,10 +1494,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/04-side-menu-buttons: dependencies: @@ -1543,10 +1543,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/05-side-menu-drag-handle-items: dependencies: @@ -1592,10 +1592,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/06-suggestion-menus-slash-menu-items: dependencies: @@ -1641,10 +1641,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/07-suggestion-menus-slash-menu-component: dependencies: @@ -1687,10 +1687,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/08-suggestion-menus-emoji-picker-columns: dependencies: @@ -1733,10 +1733,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/09-suggestion-menus-emoji-picker-component: dependencies: @@ -1779,10 +1779,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/10-suggestion-menus-grid-mentions: dependencies: @@ -1825,10 +1825,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/11-uppy-file-panel: dependencies: @@ -1907,10 +1907,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/12-static-formatting-toolbar: dependencies: @@ -1953,10 +1953,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/13-custom-ui: dependencies: @@ -2005,10 +2005,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/14-experimental-mobile-formatting-toolbar: dependencies: @@ -2051,10 +2051,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/15-advanced-tables: dependencies: @@ -2097,10 +2097,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/16-link-toolbar-buttons: dependencies: @@ -2143,10 +2143,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/17-advanced-tables-2: dependencies: @@ -2189,10 +2189,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/18-drag-n-drop: dependencies: @@ -2235,10 +2235,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/01-theming-dom-attributes: dependencies: @@ -2281,10 +2281,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/02-changing-font: dependencies: @@ -2327,10 +2327,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/03-theming-css: dependencies: @@ -2373,10 +2373,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/04-theming-css-variables: dependencies: @@ -2419,10 +2419,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/05-theming-css-variables-code: dependencies: @@ -2465,10 +2465,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/06-code-block: dependencies: @@ -2514,10 +2514,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/07-custom-code-block: dependencies: @@ -2578,10 +2578,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/01-converting-blocks-to-html: dependencies: @@ -2624,10 +2624,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/02-converting-blocks-from-html: dependencies: @@ -2670,10 +2670,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/03-converting-blocks-to-md: dependencies: @@ -2716,10 +2716,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/04-converting-blocks-from-md: dependencies: @@ -2762,10 +2762,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/05-converting-blocks-to-pdf: dependencies: @@ -2817,10 +2817,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/06-converting-blocks-to-docx: dependencies: @@ -2869,10 +2869,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/07-converting-blocks-to-odt: dependencies: @@ -2921,10 +2921,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/08-converting-blocks-to-react-email: dependencies: @@ -2973,10 +2973,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/09-blocks-to-html-static-render: dependencies: @@ -3019,10 +3019,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/10-static-html-render: dependencies: @@ -3065,10 +3065,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/01-alert-block: dependencies: @@ -3114,10 +3114,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/02-suggestion-menus-mentions: dependencies: @@ -3160,10 +3160,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/03-font-style: dependencies: @@ -3209,10 +3209,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/04-pdf-file-block: dependencies: @@ -3258,10 +3258,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/05-alert-block-full-ux: dependencies: @@ -3307,10 +3307,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/06-toggleable-blocks: dependencies: @@ -3353,10 +3353,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/07-configuring-blocks: dependencies: @@ -3399,10 +3399,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/draggable-inline-content: dependencies: @@ -3445,10 +3445,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/react-custom-blocks: dependencies: @@ -3491,10 +3491,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/react-custom-inline-content: dependencies: @@ -3537,10 +3537,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/react-custom-styles: dependencies: @@ -3583,10 +3583,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/01-partykit: dependencies: @@ -3635,10 +3635,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/02-liveblocks: dependencies: @@ -3699,10 +3699,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/03-y-sweet: dependencies: @@ -3748,10 +3748,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/04-electric-sql: dependencies: @@ -3794,10 +3794,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/05-comments: dependencies: @@ -3843,10 +3843,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/06-comments-with-sidebar: dependencies: @@ -3895,10 +3895,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/07-ghost-writer: dependencies: @@ -3947,10 +3947,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/08-forking: dependencies: @@ -3999,10 +3999,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/08-extensions/01-tiptap-arrow-conversion: dependencies: @@ -4048,10 +4048,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/01-minimal: dependencies: @@ -4100,10 +4100,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/02-playground: dependencies: @@ -4152,10 +4152,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/03-custom-ai-menu-items: dependencies: @@ -4207,10 +4207,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/04-with-collaboration: dependencies: @@ -4265,10 +4265,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/05-manual-execution: dependencies: @@ -4323,10 +4323,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/06-client-side-transport: dependencies: @@ -4378,10 +4378,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/07-server-persistence: dependencies: @@ -4430,10 +4430,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/vanilla-js/react-vanilla-custom-blocks: dependencies: @@ -4476,10 +4476,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/vanilla-js/react-vanilla-custom-inline-content: dependencies: @@ -4522,10 +4522,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/vanilla-js/react-vanilla-custom-styles: dependencies: @@ -4568,10 +4568,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) packages/ariakit: dependencies: @@ -4593,7 +4593,7 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -4614,13 +4614,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/code-block: dependencies: @@ -4654,13 +4654,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/core: dependencies: @@ -4808,13 +4808,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/dev-scripts: dependencies: @@ -4879,7 +4879,7 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -4900,13 +4900,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/react: dependencies: @@ -4973,7 +4973,7 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -4994,16 +4994,16 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/server-util: dependencies: @@ -5058,13 +5058,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/shadcn: dependencies: @@ -5137,7 +5137,7 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -5158,13 +5158,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/xl-ai: dependencies: @@ -5285,7 +5285,7 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/runner': specifier: ^4.1.2 version: 4.1.2 @@ -5318,16 +5318,16 @@ importers: version: 6.25.0 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/xl-ai-server: dependencies: @@ -5379,19 +5379,19 @@ importers: version: 6.25.0 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-node: specifier: ^6.0.0 - version: 6.0.0(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 6.0.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/xl-docx-exporter: dependencies: @@ -5437,13 +5437,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) xml-formatter: specifier: ^3.6.7 version: 3.7.0 @@ -5498,13 +5498,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/xl-multi-column: dependencies: @@ -5565,13 +5565,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/xl-odt-exporter: dependencies: @@ -5617,13 +5617,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) xml-formatter: specifier: ^3.6.7 version: 3.7.0 @@ -5690,13 +5690,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) playground: dependencies: @@ -5850,7 +5850,7 @@ importers: devDependencies: '@tailwindcss/vite': specifier: ^4.1.14 - version: 4.2.2(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.2.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@types/react': specifier: ^19.2.3 version: 19.2.14 @@ -5859,7 +5859,7 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -5877,13 +5877,13 @@ importers: version: 1.4.0 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-inspect: specifier: 12.0.0-beta.1 - version: 12.0.0-beta.1(typescript@5.9.3)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0) + version: 12.0.0-beta.1(typescript@5.9.3)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0) shared: dependencies: @@ -5924,7 +5924,7 @@ importers: version: link:../packages/shadcn '@playwright/experimental-ct-react': specifier: 1.51.1 - version: 1.51.1(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.51.1(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@playwright/test': specifier: 1.51.1 version: 1.51.1 @@ -5960,13 +5960,13 @@ importers: version: 5.0.10 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@20.19.37)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@20.19.37)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages: @@ -6969,11 +6969,11 @@ packages: '@date-fns/tz@1.4.1': resolution: {integrity: sha512-P5LUNhtbj6YfI3iJjw5EL9eUAG6OitD0W3fWQcpQjDRc/QIsL0tRNuO1PcDvPccWL1fSTXXdE1ds+l95DV/OFA==} - '@emnapi/core@1.10.0': - resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} + '@emnapi/core@1.9.2': + resolution: {integrity: sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==} - '@emnapi/runtime@1.10.0': - resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} + '@emnapi/runtime@1.9.2': + resolution: {integrity: sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==} '@emnapi/wasi-threads@1.2.1': resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} @@ -7955,6 +7955,9 @@ packages: peerDependencies: yjs: ^13.6.1 + '@ltd/j-toml@1.38.0': + resolution: {integrity: sha512-lYtBcmvHustHQtg4X7TXUu1Xa/tbLC3p2wLvgQI+fWVySguVZJF60Snxijw5EiohumxZbR10kWYFFebh1zotiw==} + '@mantine/core@8.3.18': resolution: {integrity: sha512-9tph1lTVogKPjTx02eUxDUOdXacPzK62UuSqb4TdGliI54/Xgxftq0Dfqu6XuhCxn9J5MDJaNiLDvL/1KRkYqA==} peerDependencies: @@ -8178,71 +8181,71 @@ packages: resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} engines: {node: '>=12.4.0'} - '@nx/devkit@22.6.5': - resolution: {integrity: sha512-9kvAI+kk2pfEXLqS8OyjI9XvWmp+Gdn7jPfxDAz8BOqxMyPy3p5hYl+jc4TIsLOWunAFl8azqrcYsHzEpaWCIA==} + '@nx/devkit@22.6.4': + resolution: {integrity: sha512-4VRND4Hl+zWSPvs68cJn0PUoxi1ADS1iqXy3VJNtUlVqjE7Y5LtZxKUC05w5OKP+2jMfU3viPTZIGwHnHuIaYA==} peerDependencies: nx: '>= 21 <= 23 || ^22.0.0-0' - '@nx/js@22.6.5': - resolution: {integrity: sha512-bmikz6qaBHfuAgsqPB/TfLIKfvI4g+EKIRAiU2FHnEtVWOKDAmSQXHFwE3rMS49jl2JLgxkdNjZHpg4g/OLy0g==} + '@nx/js@22.6.4': + resolution: {integrity: sha512-5437z2lHT1Xq+xuzn9WjcaYcUnTh6qHfICO6d/rY6n9x34pYYTNdNPdabekL1pEEAeKcFAh6fCV7O8E8vIFBLQ==} peerDependencies: verdaccio: ^6.0.5 peerDependenciesMeta: verdaccio: optional: true - '@nx/nx-darwin-arm64@22.6.5': - resolution: {integrity: sha512-qT77Omkg5xQuL2+pDbneX2tI+XW5ZeayMylu7UUgK8OhTrAkJLKjpuYRH4xT5XBipxbDtlxmO3aLS3Ib1pKzJQ==} + '@nx/nx-darwin-arm64@22.6.4': + resolution: {integrity: sha512-KuUQ9t8pxIO+Px1kbjA0XDLOU6XoAsijl0ssIMRYN1w5ly+0k/KglWt7qgwDockkaLRHkQ3YSR8I2LJXJE+Vig==} cpu: [arm64] os: [darwin] - '@nx/nx-darwin-x64@22.6.5': - resolution: {integrity: sha512-9jICxb7vfJ56y/7Yuh3b/n1QJqWxO9xnXKYEs6SO8xPoW/KomVckILGc1C6RQSs6/3ixVJC7k1Dh1wm5tKPFrg==} + '@nx/nx-darwin-x64@22.6.4': + resolution: {integrity: sha512-FB2XL2+ixbRI1fddz4oW+9MhoJASoTD8Ai4q5+B1OUPftgarIPLxaqI8TWba30Bos2AiYDofMJPf9uhBmLDH5Q==} cpu: [x64] os: [darwin] - '@nx/nx-freebsd-x64@22.6.5': - resolution: {integrity: sha512-6B1wEKpqz5dI3AGMqttAVnA6M3DB/besAtuGyQiymK9ROlta1iuWgCcIYwcCQyhLn2Rx7vqj447KKcgCa8HlVw==} + '@nx/nx-freebsd-x64@22.6.4': + resolution: {integrity: sha512-qNsXhlflc77afjcRKCn7bqI8l/HPEjKhQRFs8wfKbAfNw3XEASc0EZtBV/TStLGV6PEZQldVBaId5FBMp8GW6Q==} cpu: [x64] os: [freebsd] - '@nx/nx-linux-arm-gnueabihf@22.6.5': - resolution: {integrity: sha512-xV50B8mnDPboct7JkAHftajI02s+8FszA8WTzhore+YGR+lEKHTLpucwGEaQuMlSdLplH7pQix4B4uK5pcMhZw==} + '@nx/nx-linux-arm-gnueabihf@22.6.4': + resolution: {integrity: sha512-rjfnii0xGe8SQqsO/DDHeJSjbqp2H5fOEgZlaYXDGOwQeLZ1TQplEdx8hyI/ErAUwVO3YHnzoMtmachBQOlspw==} cpu: [arm] os: [linux] - '@nx/nx-linux-arm64-gnu@22.6.5': - resolution: {integrity: sha512-2JkWuMGj+HpW6oPAvU5VdAx1afTnEbiM10Y3YOrl3fipWV4BiP5VDx762QTrfCraP4hl6yqTgvTe7F9xaby+jQ==} + '@nx/nx-linux-arm64-gnu@22.6.4': + resolution: {integrity: sha512-x6Zim1STewCXuHBCgoy2TO0586UlwH4RNCobn0mTiPd1jt7nU+fNqo3SpY8RzY1KmBfgcO48BBrfykPE9YWMpg==} cpu: [arm64] os: [linux] - '@nx/nx-linux-arm64-musl@22.6.5': - resolution: {integrity: sha512-Z/zMqFClnEyqDXouJKEPoWVhMQIif5F0YuECWBYjd3ZLwQsXGTItoh+6Wm3XF/nGMA2uLOHyTq/X7iFXQY3RzA==} + '@nx/nx-linux-arm64-musl@22.6.4': + resolution: {integrity: sha512-vYOqdgXIhtHFWdtnonp/jFfmfkyNPTu1JEdXuJpSxwUQdV2dWqS/l3HVPVWHXDrVKofPafK3M72jMvoWoaOQ6g==} cpu: [arm64] os: [linux] - '@nx/nx-linux-x64-gnu@22.6.5': - resolution: {integrity: sha512-FlotSyqNnaXSn0K+yWw+hRdYBwusABrPgKLyixfJIYRzsy+xPKN6pON6vZfqGwzuWF/9mEGReRz+iM8PiW0XSg==} + '@nx/nx-linux-x64-gnu@22.6.4': + resolution: {integrity: sha512-UfWUDlOzlvQNVa1mnqOFxzvUwoGfM2o9ruhwYRoFm3XJbVYnjINyQsdcHwwDJItJP04LZzLPxA1+O8sU+Oqg6A==} cpu: [x64] os: [linux] - '@nx/nx-linux-x64-musl@22.6.5': - resolution: {integrity: sha512-RVOe2qcwhoIx6mxQURPjUfAW5SEOmT2gdhewvdcvX9ICq1hj5B2VarmkhTg0qroO7xiyqOqwq26mCzoV2I3NgQ==} + '@nx/nx-linux-x64-musl@22.6.4': + resolution: {integrity: sha512-dwXpcyin4ScD5gH9FdhiNnOqFXclXLFBDTyRCEOlRUbOPayF9YEcH0PPIf9uWmwP3tshhAdr5sg9DLN+r7M3xg==} cpu: [x64] os: [linux] - '@nx/nx-win32-arm64-msvc@22.6.5': - resolution: {integrity: sha512-ZqurqI8VuYnsr2Kn4K4t+Gx6j/BZdf6qz/6Tv4A7XQQ6oNYVQgTqoNEFj+CCkVaIe6aIdCWpousFLqs+ZgBqYQ==} + '@nx/nx-win32-arm64-msvc@22.6.4': + resolution: {integrity: sha512-KqjJbFWhKJaKjET3Ep8hltXPizO0EstF4yfmp3oepWVn11poagc2MT1pf/tnRf6cdD88wd0bmw/83Ng6WUQ3Uw==} cpu: [arm64] os: [win32] - '@nx/nx-win32-x64-msvc@22.6.5': - resolution: {integrity: sha512-i2QFBJIuaYg9BHxrrnBV4O7W9rVL2k0pSIdk/rRp3EYJEU93iUng+qbZiY9wh1xvmXuUCE2G7TRd+8/SG/RFKg==} + '@nx/nx-win32-x64-msvc@22.6.4': + resolution: {integrity: sha512-CIL9m6uilGGr/eU+41/+aVWUnEcq+j1EDynUX2A4InLTbAN0ylte4Af+72mvipNiqJgDkjKaNzOCQDnp8QBjEQ==} cpu: [x64] os: [win32] - '@nx/workspace@22.6.5': - resolution: {integrity: sha512-/CZtv1ESSfZ1MVqSlCsmnBWysU1z5VdNlwANlqL6BV2X6RUHKDPVj4YuNPvCK+0LsqyzfJdUt3pcnBYxnT5TIg==} + '@nx/workspace@22.6.4': + resolution: {integrity: sha512-7t7sEjTjhINUC2aOze0K/hLuK6s6lyg+mH+/dSnkePfMVauZoodxhknHwZ3n50+lW9jyYEd7GqeiXn45TqpTpQ==} '@open-draft/deferred-promise@2.2.0': resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} @@ -11385,6 +11388,9 @@ packages: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -11406,6 +11412,9 @@ packages: resolution: {integrity: sha512-byD6KPdvo72y/wj2T/4zGEvvlis+PsZsn/yPS3pEO+sFpcrqRpX/TJCxvVaEsNeMrfQbCr7w163YqoD9IYwHXw==} engines: {node: '>=4'} + axios@1.12.0: + resolution: {integrity: sha512-oXTDccv8PcfjZmPGlWsPSwtOJCZ/b6W5jAMCNcfwJbCzDckwG0jrYJFaWH1yvivfCXjVzV/SPDEhMB3Q+DSurg==} + axios@1.15.0: resolution: {integrity: sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==} @@ -12181,9 +12190,9 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - ejs@5.0.1: - resolution: {integrity: sha512-COqBPFMxuPTPspXl2DkVYaDS3HtrD1GpzOGkNTJ1IYkifq/r9h8SVEFrjA3D9/VJGOEoMQcrlhpntcSUrM8k6A==} - engines: {node: '>=0.12.18'} + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} hasBin: true electron-to-chromium@1.5.331: @@ -12645,6 +12654,9 @@ packages: file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + filelist@1.0.6: + resolution: {integrity: sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -12671,6 +12683,15 @@ packages: flatted@3.4.2: resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + follow-redirects@1.16.0: resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} engines: {node: '>=4.0'} @@ -13464,6 +13485,11 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jake@10.9.4: + resolution: {integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==} + engines: {node: '>=10'} + hasBin: true + jay-peg@1.1.1: resolution: {integrity: sha512-D62KEuBxz/ip2gQKOEhk/mx14o7eiFRaU+VNNSP4MOiIkwb/D6B3G1Mfas7C/Fit8EsSV2/IWjZElx/Gs6A4ww==} @@ -14050,6 +14076,10 @@ packages: minimatch@3.1.5: resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} + minimatch@5.1.9: + resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} + engines: {node: '>=10'} + minimatch@9.0.9: resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} engines: {node: '>=16 || 14 >=14.17'} @@ -14281,8 +14311,8 @@ packages: nwsapi@2.2.23: resolution: {integrity: sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==} - nx@22.6.5: - resolution: {integrity: sha512-VRKhDAt684dXNSz9MNjE7MekkCfQF41P2PSx5jEWQjDEP1Z4jFZbyeygWs5ZyOroG7/n0MoWAJTe6ftvIcBOAg==} + nx@22.6.4: + resolution: {integrity: sha512-WEaCnLKeO9RhQAOBMfXgYO/Lx5wL4ARCtRGiYCjJtAJIZ5kcVn4uPKL2Xz1xekpF7ef/+YNrUQSrblx47Ms9Rg==} hasBin: true peerDependencies: '@swc-node/register': ^1.11.1 @@ -15129,8 +15159,8 @@ packages: regjsgen@0.8.0: resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} - regjsparser@0.13.1: - resolution: {integrity: sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==} + regjsparser@0.13.0: + resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==} hasBin: true rehype-format@5.0.1: @@ -15195,8 +15225,8 @@ packages: resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} engines: {node: '>=10'} - resolve@1.22.12: - resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} + resolve@1.22.11: + resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} engines: {node: '>= 0.4'} hasBin: true @@ -15458,10 +15488,6 @@ packages: slate@0.110.2: resolution: {integrity: sha512-4xGULnyMCiEQ0Ml7JAC1A6HVE6MNpPJU7Eq4cXh1LxlrR0dFXC3XC+rNfQtUJ7chHoPkws57x7DDiWiZAt+PBA==} - smol-toml@1.6.1: - resolution: {integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==} - engines: {node: '>= 18'} - socket.io-adapter@2.5.6: resolution: {integrity: sha512-DkkO/dz7MGln0dHn5bmN3pPy+JmywNICWrJqVWiVOyvXjWQFIv9c2h24JrQLLFJ2aQVQf/Cvl1vblnd4r2apLQ==} @@ -15774,10 +15800,6 @@ packages: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} - tinyglobby@0.2.16: - resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} - engines: {node: '>=12.0.0'} - tinyrainbow@3.1.0: resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} engines: {node: '>=14.0.0'} @@ -17170,7 +17192,7 @@ snapshots: '@babel/helper-plugin-utils': 7.28.6 debug: 4.4.3 lodash.debounce: 4.0.8 - resolve: 1.22.12 + resolve: 1.22.11 transitivePeerDependencies: - supports-color @@ -18025,12 +18047,12 @@ snapshots: '@date-fns/tz@1.4.1': {} - '@emnapi/core@1.10.0': + '@emnapi/core@1.9.2': dependencies: '@emnapi/wasi-threads': 1.2.1 tslib: 2.8.1 - '@emnapi/runtime@1.10.0': + '@emnapi/runtime@1.9.2': dependencies: tslib: 2.8.1 @@ -18627,7 +18649,7 @@ snapshots: '@img/sharp-wasm32@0.34.5': dependencies: - '@emnapi/runtime': 1.10.0 + '@emnapi/runtime': 1.9.2 optional: true '@img/sharp-win32-arm64@0.34.5': @@ -18893,6 +18915,8 @@ snapshots: transitivePeerDependencies: - '@types/json-schema' + '@ltd/j-toml@1.38.0': {} + '@mantine/core@8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@floating-ui/react': 0.27.19(react-dom@19.2.5(react@19.2.5))(react@19.2.5) @@ -19070,21 +19094,21 @@ snapshots: '@napi-rs/wasm-runtime@0.2.12': dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 + '@emnapi/core': 1.9.2 + '@emnapi/runtime': 1.9.2 '@tybys/wasm-util': 0.10.1 optional: true '@napi-rs/wasm-runtime@0.2.4': dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 + '@emnapi/core': 1.9.2 + '@emnapi/runtime': 1.9.2 '@tybys/wasm-util': 0.9.0 - '@napi-rs/wasm-runtime@1.1.2(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + '@napi-rs/wasm-runtime@1.1.2(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 + '@emnapi/core': 1.9.2 + '@emnapi/runtime': 1.9.2 '@tybys/wasm-util': 0.10.1 optional: true @@ -19142,18 +19166,18 @@ snapshots: '@nolyfill/is-core-module@1.0.39': {} - '@nx/devkit@22.6.5(nx@22.6.5)': + '@nx/devkit@22.6.4(nx@22.6.4)': dependencies: '@zkochan/js-yaml': 0.0.7 - ejs: 5.0.1 + ejs: 3.1.10 enquirer: 2.3.6 minimatch: 10.2.4 - nx: 22.6.5 + nx: 22.6.4 semver: 7.7.4 tslib: 2.8.1 yargs-parser: 21.1.1 - '@nx/js@22.6.5(@babel/traverse@7.29.0)(nx@22.6.5)': + '@nx/js@22.6.4(@babel/traverse@7.29.0)(nx@22.6.4)': dependencies: '@babel/core': 7.29.0 '@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.29.0) @@ -19162,8 +19186,8 @@ snapshots: '@babel/preset-env': 7.29.2(@babel/core@7.29.0) '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) '@babel/runtime': 7.29.2 - '@nx/devkit': 22.6.5(nx@22.6.5) - '@nx/workspace': 22.6.5 + '@nx/devkit': 22.6.4(nx@22.6.4) + '@nx/workspace': 22.6.4 '@zkochan/js-yaml': 0.0.7 babel-plugin-const-enum: 1.2.0(@babel/core@7.29.0) babel-plugin-macros: 3.1.0 @@ -19179,7 +19203,7 @@ snapshots: picomatch: 4.0.4 semver: 7.7.4 source-map-support: 0.5.19 - tinyglobby: 0.2.16 + tinyglobby: 0.2.12 tslib: 2.8.1 transitivePeerDependencies: - '@babel/traverse' @@ -19189,43 +19213,43 @@ snapshots: - nx - supports-color - '@nx/nx-darwin-arm64@22.6.5': + '@nx/nx-darwin-arm64@22.6.4': optional: true - '@nx/nx-darwin-x64@22.6.5': + '@nx/nx-darwin-x64@22.6.4': optional: true - '@nx/nx-freebsd-x64@22.6.5': + '@nx/nx-freebsd-x64@22.6.4': optional: true - '@nx/nx-linux-arm-gnueabihf@22.6.5': + '@nx/nx-linux-arm-gnueabihf@22.6.4': optional: true - '@nx/nx-linux-arm64-gnu@22.6.5': + '@nx/nx-linux-arm64-gnu@22.6.4': optional: true - '@nx/nx-linux-arm64-musl@22.6.5': + '@nx/nx-linux-arm64-musl@22.6.4': optional: true - '@nx/nx-linux-x64-gnu@22.6.5': + '@nx/nx-linux-x64-gnu@22.6.4': optional: true - '@nx/nx-linux-x64-musl@22.6.5': + '@nx/nx-linux-x64-musl@22.6.4': optional: true - '@nx/nx-win32-arm64-msvc@22.6.5': + '@nx/nx-win32-arm64-msvc@22.6.4': optional: true - '@nx/nx-win32-x64-msvc@22.6.5': + '@nx/nx-win32-x64-msvc@22.6.4': optional: true - '@nx/workspace@22.6.5': + '@nx/workspace@22.6.4': dependencies: - '@nx/devkit': 22.6.5(nx@22.6.5) + '@nx/devkit': 22.6.4(nx@22.6.4) '@zkochan/js-yaml': 0.0.7 chalk: 4.1.2 enquirer: 2.3.6 - nx: 22.6.5 + nx: 22.6.4 picomatch: 4.0.4 semver: 7.7.4 tslib: 2.8.1 @@ -19531,10 +19555,10 @@ snapshots: - sugarss - terser - '@playwright/experimental-ct-react@1.51.1(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@playwright/experimental-ct-react@1.51.1(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@playwright/experimental-ct-core': 1.51.1(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.1) - '@vitejs/plugin-react': 4.7.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitejs/plugin-react': 4.7.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) transitivePeerDependencies: - '@types/node' - less @@ -19551,11 +19575,11 @@ snapshots: dependencies: playwright: 1.51.1 - '@polar-sh/better-auth@1.8.3(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))))(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1)(zod@4.3.6)': + '@polar-sh/better-auth@1.8.3(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))))(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1)(zod@4.3.6)': dependencies: '@polar-sh/checkout': 0.2.0(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1) '@polar-sh/sdk': 0.42.5 - better-auth: 1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))) + better-auth: 1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))) zod: 4.3.6 transitivePeerDependencies: - '@stripe/react-stripe-js' @@ -20720,9 +20744,9 @@ snapshots: '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': dependencies: - '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -21581,12 +21605,12 @@ snapshots: postcss: 8.5.8 tailwindcss: 4.2.2 - '@tailwindcss/vite@4.2.2(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@tailwindcss/vite@4.2.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@tailwindcss/node': 4.2.2 '@tailwindcss/oxide': 4.2.2 tailwindcss: 4.2.2 - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) '@tanstack/react-store@0.7.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: @@ -21737,7 +21761,7 @@ snapshots: dependencies: minimatch: 10.2.5 path-browserify: 1.0.1 - tinyglobby: 0.2.16 + tinyglobby: 0.2.15 '@tybys/wasm-util@0.10.1': dependencies: @@ -22156,7 +22180,7 @@ snapshots: debug: 4.4.3 minimatch: 10.2.5 semver: 7.7.4 - tinyglobby: 0.2.16 + tinyglobby: 0.2.15 ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -22400,12 +22424,12 @@ snapshots: '@vercel/oidc@3.0.5': {} - '@vitejs/devtools-kit@0.1.13(typescript@5.9.3)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0)': + '@vitejs/devtools-kit@0.1.13(typescript@5.9.3)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0)': dependencies: '@vitejs/devtools-rpc': 0.1.13(typescript@5.9.3)(ws@8.20.0) birpc: 4.0.0 ohash: 2.0.11 - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - typescript - ws @@ -22422,7 +22446,7 @@ snapshots: transitivePeerDependencies: - typescript - '@vitejs/plugin-react@4.7.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitejs/plugin-react@4.7.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) @@ -22430,21 +22454,21 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitejs/plugin-react@6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.7 - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) optionalDependencies: babel-plugin-react-compiler: 1.0.0 - '@vitejs/plugin-react@6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitejs/plugin-react@6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.7 - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) optionalDependencies: babel-plugin-react-compiler: 1.0.0 @@ -22457,33 +22481,33 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@vitest/spy': 4.1.2 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.11.5(@types/node@20.19.37)(typescript@5.9.3) - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@vitest/spy': 4.1.2 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.11.5(@types/node@25.5.0)(typescript@5.9.3) - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) optional: true - '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@vitest/spy': 4.1.2 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.11.5(@types/node@25.6.0)(typescript@5.9.3) - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) '@vitest/pretty-format@4.1.2': dependencies: @@ -22819,6 +22843,8 @@ snapshots: async-function@1.0.0: {} + async@3.2.6: {} + asynckit@0.4.0: {} atomically@2.1.1: @@ -22842,6 +22868,14 @@ snapshots: axe-core@4.11.2: {} + axios@1.12.0: + dependencies: + follow-redirects: 1.15.11 + form-data: 4.0.5 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + axios@1.15.0: dependencies: follow-redirects: 1.16.0 @@ -22865,7 +22899,7 @@ snapshots: dependencies: '@babel/runtime': 7.29.2 cosmiconfig: 7.1.0 - resolve: 1.22.12 + resolve: 1.22.11 babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.0): dependencies: @@ -22948,7 +22982,7 @@ snapshots: baseline-browser-mapping@2.10.17: {} - better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))): + better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))): dependencies: '@better-auth/core': 1.4.22(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.8(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0) '@better-auth/telemetry': 1.4.22(@better-auth/core@1.4.22(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.8(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0)) @@ -22968,7 +23002,7 @@ snapshots: pg: 8.20.0 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - vitest: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + vitest: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) better-call@1.1.8(zod@4.3.6): dependencies: @@ -23567,7 +23601,7 @@ snapshots: dotenv-expand@11.0.7: dependencies: - dotenv: 16.4.7 + dotenv: 16.6.1 dotenv@16.4.7: {} @@ -23581,7 +23615,9 @@ snapshots: eastasianwidth@0.2.0: {} - ejs@5.0.1: {} + ejs@3.1.10: + dependencies: + jake: 10.9.4 electron-to-chromium@1.5.331: {} @@ -23916,7 +23952,7 @@ snapshots: get-tsconfig: 4.13.7 is-bun-module: 2.0.0 stable-hash: 0.0.5 - tinyglobby: 0.2.16 + tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) @@ -24404,6 +24440,10 @@ snapshots: file-uri-to-path@1.0.0: {} + filelist@1.0.6: + dependencies: + minimatch: 5.1.9 + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -24430,6 +24470,8 @@ snapshots: flatted@3.4.2: {} + follow-redirects@1.15.11: {} + follow-redirects@1.16.0: {} fontkit@2.0.4: @@ -24529,7 +24571,7 @@ snapshots: transitivePeerDependencies: - supports-color - fumadocs-mdx@14.2.11(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + fumadocs-mdx@14.2.11(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@mdx-js/mdx': 3.1.1 '@standard-schema/spec': 1.1.0 @@ -24555,7 +24597,7 @@ snapshots: '@types/react': 19.2.14 next: 16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - supports-color @@ -25300,6 +25342,12 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 + jake@10.9.4: + dependencies: + async: 3.2.6 + filelist: 1.0.6 + picocolors: 1.1.1 + jay-peg@1.1.1: dependencies: restructure: 3.0.2 @@ -26133,6 +26181,10 @@ snapshots: dependencies: brace-expansion: 1.1.13 + minimatch@5.1.9: + dependencies: + brace-expansion: 2.0.3 + minimatch@9.0.9: dependencies: brace-expansion: 2.0.3 @@ -26397,19 +26449,20 @@ snapshots: nwsapi@2.2.23: {} - nx@22.6.5: + nx@22.6.4: dependencies: + '@ltd/j-toml': 1.38.0 '@napi-rs/wasm-runtime': 0.2.4 '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.2 '@zkochan/js-yaml': 0.0.7 - axios: 1.15.0 + axios: 1.12.0 cli-cursor: 3.1.0 cli-spinners: 2.6.1 cliui: 8.0.1 dotenv: 16.4.7 dotenv-expand: 11.0.7 - ejs: 5.0.1 + ejs: 3.1.10 enquirer: 2.3.6 figures: 3.2.0 flat: 5.0.2 @@ -26425,7 +26478,6 @@ snapshots: picocolors: 1.1.1 resolve.exports: 2.0.3 semver: 7.7.4 - smol-toml: 1.6.1 string-width: 4.2.3 tar-stream: 2.2.0 tmp: 0.2.5 @@ -26436,16 +26488,16 @@ snapshots: yargs: 17.7.2 yargs-parser: 21.1.1 optionalDependencies: - '@nx/nx-darwin-arm64': 22.6.5 - '@nx/nx-darwin-x64': 22.6.5 - '@nx/nx-freebsd-x64': 22.6.5 - '@nx/nx-linux-arm-gnueabihf': 22.6.5 - '@nx/nx-linux-arm64-gnu': 22.6.5 - '@nx/nx-linux-arm64-musl': 22.6.5 - '@nx/nx-linux-x64-gnu': 22.6.5 - '@nx/nx-linux-x64-musl': 22.6.5 - '@nx/nx-win32-arm64-msvc': 22.6.5 - '@nx/nx-win32-x64-msvc': 22.6.5 + '@nx/nx-darwin-arm64': 22.6.4 + '@nx/nx-darwin-x64': 22.6.4 + '@nx/nx-freebsd-x64': 22.6.4 + '@nx/nx-linux-arm-gnueabihf': 22.6.4 + '@nx/nx-linux-arm64-gnu': 22.6.4 + '@nx/nx-linux-arm64-musl': 22.6.4 + '@nx/nx-linux-x64-gnu': 22.6.4 + '@nx/nx-linux-x64-musl': 22.6.4 + '@nx/nx-win32-arm64-msvc': 22.6.4 + '@nx/nx-win32-x64-msvc': 22.6.4 transitivePeerDependencies: - debug @@ -26560,7 +26612,7 @@ snapshots: bl: 4.1.0 chalk: 4.1.2 cli-cursor: 3.1.0 - cli-spinners: 2.6.1 + cli-spinners: 2.9.2 is-interactive: 1.0.0 log-symbols: 4.1.0 strip-ansi: 6.0.1 @@ -27355,7 +27407,7 @@ snapshots: regenerate: 1.4.2 regenerate-unicode-properties: 10.2.2 regjsgen: 0.8.0 - regjsparser: 0.13.1 + regjsparser: 0.13.0 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.2.1 @@ -27370,7 +27422,7 @@ snapshots: regjsgen@0.8.0: {} - regjsparser@0.13.1: + regjsparser@0.13.0: dependencies: jsesc: 3.1.0 @@ -27481,9 +27533,8 @@ snapshots: resolve.exports@2.0.3: {} - resolve@1.22.12: + resolve@1.22.11: dependencies: - es-errors: 1.3.0 is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -27523,7 +27574,7 @@ snapshots: dependencies: glob: 10.5.0 - rolldown@1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0): + rolldown@1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2): dependencies: '@oxc-project/types': 0.122.0 '@rolldown/pluginutils': 1.0.0-rc.12 @@ -27540,7 +27591,7 @@ snapshots: '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.12 '@rolldown/binding-linux-x64-musl': 1.0.0-rc.12 '@rolldown/binding-openharmony-arm64': 1.0.0-rc.12 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.12 '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.12 transitivePeerDependencies: @@ -27872,8 +27923,6 @@ snapshots: is-plain-object: 5.0.0 tiny-warning: 1.0.3 - smol-toml@1.6.1: {} - socket.io-adapter@2.5.6: dependencies: debug: 4.4.3 @@ -28095,7 +28144,7 @@ snapshots: lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.7 - tinyglobby: 0.2.16 + tinyglobby: 0.2.12 ts-interface-checker: 0.1.13 supports-color@7.2.0: @@ -28206,11 +28255,6 @@ snapshots: fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 - tinyglobby@0.2.16: - dependencies: - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 - tinyrainbow@3.1.0: {} tldts-core@6.1.86: {} @@ -28600,13 +28644,13 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 - vite-node@6.0.0(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): + vite-node@6.0.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): dependencies: cac: 7.0.0 es-module-lexer: 2.0.0 obug: 2.1.1 pathe: 2.0.3 - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -28623,33 +28667,33 @@ snapshots: - tsx - yaml - vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@rollup/pluginutils': 4.2.1 '@types/eslint': 8.56.12 eslint: 8.57.1 rollup: 2.80.0 - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@rollup/pluginutils': 4.2.1 '@types/eslint': 8.56.12 eslint: 8.57.1 rollup: 2.80.0 - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vite-plugin-externalize-deps@0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vite-plugin-externalize-deps@0.10.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vite-plugin-externalize-deps@0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vite-plugin-externalize-deps@0.10.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vite-plugin-inspect@12.0.0-beta.1(typescript@5.9.3)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0): + vite-plugin-inspect@12.0.0-beta.1(typescript@5.9.3)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0): dependencies: - '@vitejs/devtools-kit': 0.1.13(typescript@5.9.3)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0) + '@vitejs/devtools-kit': 0.1.13(typescript@5.9.3)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0) ansis: 4.2.0 error-stack-parser-es: 1.0.5 obug: 2.1.1 @@ -28658,7 +28702,7 @@ snapshots: perfect-debounce: 2.1.0 sirv: 3.0.2 unplugin-utils: 0.3.1 - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - typescript - ws @@ -28674,12 +28718,12 @@ snapshots: lightningcss: 1.32.0 terser: 5.46.1 - vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): + vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 postcss: 8.5.8 - rolldown: 1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + rolldown: 1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) tinyglobby: 0.2.15 optionalDependencies: '@types/node': 20.19.37 @@ -28693,12 +28737,12 @@ snapshots: - '@emnapi/core' - '@emnapi/runtime' - vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): + vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 postcss: 8.5.8 - rolldown: 1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + rolldown: 1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) tinyglobby: 0.2.15 optionalDependencies: '@types/node': 25.5.0 @@ -28713,12 +28757,12 @@ snapshots: - '@emnapi/runtime' optional: true - vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): + vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 postcss: 8.5.8 - rolldown: 1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) + rolldown: 1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) tinyglobby: 0.2.15 optionalDependencies: '@types/node': 25.6.0 @@ -28741,10 +28785,10 @@ snapshots: transitivePeerDependencies: - supports-color - vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@20.19.37)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@20.19.37)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@vitest/expect': 4.1.2 - '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/pretty-format': 4.1.2 '@vitest/runner': 4.1.2 '@vitest/snapshot': 4.1.2 @@ -28761,7 +28805,7 @@ snapshots: tinyexec: 1.0.4 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.1 @@ -28770,10 +28814,10 @@ snapshots: transitivePeerDependencies: - msw - vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@vitest/expect': 4.1.2 - '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/pretty-format': 4.1.2 '@vitest/runner': 4.1.2 '@vitest/snapshot': 4.1.2 @@ -28790,7 +28834,7 @@ snapshots: tinyexec: 1.0.4 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.1 @@ -28800,10 +28844,10 @@ snapshots: - msw optional: true - vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@vitest/expect': 4.1.2 - '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/pretty-format': 4.1.2 '@vitest/runner': 4.1.2 '@vitest/snapshot': 4.1.2 @@ -28820,7 +28864,7 @@ snapshots: tinyexec: 1.0.4 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.1 From 0c02871d2076dbb8b62443b78ef864bf196e229a Mon Sep 17 00:00:00 2001 From: Nick Perez Date: Thu, 16 Apr 2026 18:59:35 +0200 Subject: [PATCH 11/76] fix(deps): upgrade nx to 22.6.5 to resolve axios security vulnerability (#2653) --- package.json | 4 +- pnpm-lock.yaml | 860 +++++++++++++++++++++++-------------------------- 2 files changed, 410 insertions(+), 454 deletions(-) diff --git a/package.json b/package.json index 04d64da61b..e9bb26f510 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "root", "type": "module", "devDependencies": { - "@nx/js": "22.6.4", + "@nx/js": "22.6.5", "@typescript-eslint/eslint-plugin": "^5.62.0", "@typescript-eslint/parser": "^5.62.0", "concurrently": "9.1.2", @@ -10,7 +10,7 @@ "eslint-config-react-app": "^7.0.1", "eslint-plugin-import": "^2.32.0", "glob": "^10.5.0", - "nx": "22.6.4", + "nx": "22.6.5", "prettier": "3.6.2", "prettier-plugin-tailwindcss": "^0.6.14", "serve": "14.2.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f4a1285250..49baa3aca3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -22,8 +22,8 @@ importers: .: devDependencies: '@nx/js': - specifier: 22.6.4 - version: 22.6.4(@babel/traverse@7.29.0)(nx@22.6.4) + specifier: 22.6.5 + version: 22.6.5(@babel/traverse@7.29.0)(nx@22.6.5) '@typescript-eslint/eslint-plugin': specifier: ^5.62.0 version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.9.3))(eslint@8.57.1)(typescript@5.9.3) @@ -46,8 +46,8 @@ importers: specifier: ^10.5.0 version: 10.5.0 nx: - specifier: 22.6.4 - version: 22.6.4 + specifier: 22.6.5 + version: 22.6.5 prettier: specifier: 3.6.2 version: 3.6.2 @@ -62,7 +62,7 @@ importers: version: 5.9.3 vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) wait-on: specifier: 9.0.5 version: 9.0.5 @@ -161,7 +161,7 @@ importers: version: 3.1.18 '@polar-sh/better-auth': specifier: ^1.6.4 - version: 1.8.3(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))))(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1)(zod@4.3.6) + version: 1.8.3(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))))(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1)(zod@4.3.6) '@polar-sh/sdk': specifier: ^0.42.2 version: 0.42.5 @@ -239,7 +239,7 @@ importers: version: 6.0.5(zod@4.3.6) better-auth: specifier: ~1.4.15 - version: 1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))) + version: 1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))) better-sqlite3: specifier: ^12.6.2 version: 12.8.0 @@ -254,7 +254,7 @@ importers: version: 16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6) fumadocs-mdx: specifier: ^14.2.6 - version: 14.2.11(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 14.2.11(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) fumadocs-twoslash: specifier: ^3.1.12 version: 3.1.15(@fumadocs/base-ui@16.5.0(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tailwindcss@4.2.2))(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3) @@ -412,10 +412,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/02-block-objects: dependencies: @@ -458,10 +458,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/03-multi-column: dependencies: @@ -507,10 +507,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/04-default-blocks: dependencies: @@ -553,10 +553,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/05-removing-default-blocks: dependencies: @@ -599,10 +599,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/06-block-manipulation: dependencies: @@ -645,10 +645,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/07-selection-blocks: dependencies: @@ -691,10 +691,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/08-ariakit: dependencies: @@ -737,10 +737,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/09-shadcn: dependencies: @@ -783,7 +783,7 @@ importers: devDependencies: '@tailwindcss/vite': specifier: ^4.1.14 - version: 4.2.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.2.2(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@types/react': specifier: ^19.2.3 version: 19.2.14 @@ -792,10 +792,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/10-localization: dependencies: @@ -838,10 +838,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/11-custom-placeholder: dependencies: @@ -884,10 +884,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/12-multi-editor: dependencies: @@ -930,10 +930,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/13-custom-paste-handler: dependencies: @@ -976,10 +976,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/14-editor-scrollable: dependencies: @@ -1022,10 +1022,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/15-shadowdom: dependencies: @@ -1068,10 +1068,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/16-read-only-editor: dependencies: @@ -1114,10 +1114,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/testing: dependencies: @@ -1160,10 +1160,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/02-backend/01-file-uploading: dependencies: @@ -1206,10 +1206,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/02-backend/02-saving-loading: dependencies: @@ -1252,10 +1252,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/02-backend/03-s3: dependencies: @@ -1304,10 +1304,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/02-backend/04-rendering-static-documents: dependencies: @@ -1353,10 +1353,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/01-ui-elements-remove: dependencies: @@ -1399,10 +1399,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/02-formatting-toolbar-buttons: dependencies: @@ -1445,10 +1445,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/03-formatting-toolbar-block-type-items: dependencies: @@ -1494,10 +1494,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/04-side-menu-buttons: dependencies: @@ -1543,10 +1543,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/05-side-menu-drag-handle-items: dependencies: @@ -1592,10 +1592,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/06-suggestion-menus-slash-menu-items: dependencies: @@ -1641,10 +1641,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/07-suggestion-menus-slash-menu-component: dependencies: @@ -1687,10 +1687,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/08-suggestion-menus-emoji-picker-columns: dependencies: @@ -1733,10 +1733,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/09-suggestion-menus-emoji-picker-component: dependencies: @@ -1779,10 +1779,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/10-suggestion-menus-grid-mentions: dependencies: @@ -1825,10 +1825,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/11-uppy-file-panel: dependencies: @@ -1907,10 +1907,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/12-static-formatting-toolbar: dependencies: @@ -1953,10 +1953,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/13-custom-ui: dependencies: @@ -2005,10 +2005,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/14-experimental-mobile-formatting-toolbar: dependencies: @@ -2051,10 +2051,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/15-advanced-tables: dependencies: @@ -2097,10 +2097,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/16-link-toolbar-buttons: dependencies: @@ -2143,10 +2143,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/17-advanced-tables-2: dependencies: @@ -2189,10 +2189,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/18-drag-n-drop: dependencies: @@ -2235,10 +2235,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/01-theming-dom-attributes: dependencies: @@ -2281,10 +2281,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/02-changing-font: dependencies: @@ -2327,10 +2327,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/03-theming-css: dependencies: @@ -2373,10 +2373,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/04-theming-css-variables: dependencies: @@ -2419,10 +2419,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/05-theming-css-variables-code: dependencies: @@ -2465,10 +2465,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/06-code-block: dependencies: @@ -2514,10 +2514,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/07-custom-code-block: dependencies: @@ -2578,10 +2578,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/01-converting-blocks-to-html: dependencies: @@ -2624,10 +2624,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/02-converting-blocks-from-html: dependencies: @@ -2670,10 +2670,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/03-converting-blocks-to-md: dependencies: @@ -2716,10 +2716,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/04-converting-blocks-from-md: dependencies: @@ -2762,10 +2762,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/05-converting-blocks-to-pdf: dependencies: @@ -2817,10 +2817,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/06-converting-blocks-to-docx: dependencies: @@ -2869,10 +2869,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/07-converting-blocks-to-odt: dependencies: @@ -2921,10 +2921,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/08-converting-blocks-to-react-email: dependencies: @@ -2973,10 +2973,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/09-blocks-to-html-static-render: dependencies: @@ -3019,10 +3019,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/10-static-html-render: dependencies: @@ -3065,10 +3065,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/01-alert-block: dependencies: @@ -3114,10 +3114,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/02-suggestion-menus-mentions: dependencies: @@ -3160,10 +3160,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/03-font-style: dependencies: @@ -3209,10 +3209,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/04-pdf-file-block: dependencies: @@ -3258,10 +3258,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/05-alert-block-full-ux: dependencies: @@ -3307,10 +3307,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/06-toggleable-blocks: dependencies: @@ -3353,10 +3353,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/07-configuring-blocks: dependencies: @@ -3399,10 +3399,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/draggable-inline-content: dependencies: @@ -3445,10 +3445,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/react-custom-blocks: dependencies: @@ -3491,10 +3491,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/react-custom-inline-content: dependencies: @@ -3537,10 +3537,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/react-custom-styles: dependencies: @@ -3583,10 +3583,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/01-partykit: dependencies: @@ -3635,10 +3635,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/02-liveblocks: dependencies: @@ -3699,10 +3699,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/03-y-sweet: dependencies: @@ -3748,10 +3748,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/04-electric-sql: dependencies: @@ -3794,10 +3794,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/05-comments: dependencies: @@ -3843,10 +3843,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/06-comments-with-sidebar: dependencies: @@ -3895,10 +3895,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/07-ghost-writer: dependencies: @@ -3947,10 +3947,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/08-forking: dependencies: @@ -3999,10 +3999,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/08-extensions/01-tiptap-arrow-conversion: dependencies: @@ -4048,10 +4048,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/01-minimal: dependencies: @@ -4100,10 +4100,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/02-playground: dependencies: @@ -4152,10 +4152,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/03-custom-ai-menu-items: dependencies: @@ -4207,10 +4207,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/04-with-collaboration: dependencies: @@ -4265,10 +4265,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/05-manual-execution: dependencies: @@ -4323,10 +4323,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/06-client-side-transport: dependencies: @@ -4378,10 +4378,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/07-server-persistence: dependencies: @@ -4430,10 +4430,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/vanilla-js/react-vanilla-custom-blocks: dependencies: @@ -4476,10 +4476,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/vanilla-js/react-vanilla-custom-inline-content: dependencies: @@ -4522,10 +4522,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/vanilla-js/react-vanilla-custom-styles: dependencies: @@ -4568,10 +4568,10 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) packages/ariakit: dependencies: @@ -4593,7 +4593,7 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -4614,13 +4614,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/code-block: dependencies: @@ -4654,13 +4654,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/core: dependencies: @@ -4808,13 +4808,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/dev-scripts: dependencies: @@ -4879,7 +4879,7 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -4900,13 +4900,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/react: dependencies: @@ -4973,7 +4973,7 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -4994,16 +4994,16 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/server-util: dependencies: @@ -5058,13 +5058,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/shadcn: dependencies: @@ -5137,7 +5137,7 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -5158,13 +5158,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/xl-ai: dependencies: @@ -5285,7 +5285,7 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/runner': specifier: ^4.1.2 version: 4.1.2 @@ -5318,16 +5318,16 @@ importers: version: 6.25.0 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/xl-ai-server: dependencies: @@ -5379,19 +5379,19 @@ importers: version: 6.25.0 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-node: specifier: ^6.0.0 - version: 6.0.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 6.0.0(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/xl-docx-exporter: dependencies: @@ -5437,13 +5437,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) xml-formatter: specifier: ^3.6.7 version: 3.7.0 @@ -5498,13 +5498,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/xl-multi-column: dependencies: @@ -5565,13 +5565,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/xl-odt-exporter: dependencies: @@ -5617,13 +5617,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) xml-formatter: specifier: ^3.6.7 version: 3.7.0 @@ -5690,13 +5690,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) playground: dependencies: @@ -5850,7 +5850,7 @@ importers: devDependencies: '@tailwindcss/vite': specifier: ^4.1.14 - version: 4.2.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.2.2(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@types/react': specifier: ^19.2.3 version: 19.2.14 @@ -5859,7 +5859,7 @@ importers: 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.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -5877,13 +5877,13 @@ importers: version: 1.4.0 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-inspect: specifier: 12.0.0-beta.1 - version: 12.0.0-beta.1(typescript@5.9.3)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0) + version: 12.0.0-beta.1(typescript@5.9.3)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0) shared: dependencies: @@ -5924,7 +5924,7 @@ importers: version: link:../packages/shadcn '@playwright/experimental-ct-react': specifier: 1.51.1 - version: 1.51.1(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.51.1(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@playwright/test': specifier: 1.51.1 version: 1.51.1 @@ -5960,13 +5960,13 @@ importers: version: 5.0.10 vite: specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@20.19.37)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@20.19.37)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages: @@ -6969,11 +6969,11 @@ packages: '@date-fns/tz@1.4.1': resolution: {integrity: sha512-P5LUNhtbj6YfI3iJjw5EL9eUAG6OitD0W3fWQcpQjDRc/QIsL0tRNuO1PcDvPccWL1fSTXXdE1ds+l95DV/OFA==} - '@emnapi/core@1.9.2': - resolution: {integrity: sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==} + '@emnapi/core@1.10.0': + resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} - '@emnapi/runtime@1.9.2': - resolution: {integrity: sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==} + '@emnapi/runtime@1.10.0': + resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} '@emnapi/wasi-threads@1.2.1': resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} @@ -7955,9 +7955,6 @@ packages: peerDependencies: yjs: ^13.6.1 - '@ltd/j-toml@1.38.0': - resolution: {integrity: sha512-lYtBcmvHustHQtg4X7TXUu1Xa/tbLC3p2wLvgQI+fWVySguVZJF60Snxijw5EiohumxZbR10kWYFFebh1zotiw==} - '@mantine/core@8.3.18': resolution: {integrity: sha512-9tph1lTVogKPjTx02eUxDUOdXacPzK62UuSqb4TdGliI54/Xgxftq0Dfqu6XuhCxn9J5MDJaNiLDvL/1KRkYqA==} peerDependencies: @@ -8181,71 +8178,71 @@ packages: resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} engines: {node: '>=12.4.0'} - '@nx/devkit@22.6.4': - resolution: {integrity: sha512-4VRND4Hl+zWSPvs68cJn0PUoxi1ADS1iqXy3VJNtUlVqjE7Y5LtZxKUC05w5OKP+2jMfU3viPTZIGwHnHuIaYA==} + '@nx/devkit@22.6.5': + resolution: {integrity: sha512-9kvAI+kk2pfEXLqS8OyjI9XvWmp+Gdn7jPfxDAz8BOqxMyPy3p5hYl+jc4TIsLOWunAFl8azqrcYsHzEpaWCIA==} peerDependencies: nx: '>= 21 <= 23 || ^22.0.0-0' - '@nx/js@22.6.4': - resolution: {integrity: sha512-5437z2lHT1Xq+xuzn9WjcaYcUnTh6qHfICO6d/rY6n9x34pYYTNdNPdabekL1pEEAeKcFAh6fCV7O8E8vIFBLQ==} + '@nx/js@22.6.5': + resolution: {integrity: sha512-bmikz6qaBHfuAgsqPB/TfLIKfvI4g+EKIRAiU2FHnEtVWOKDAmSQXHFwE3rMS49jl2JLgxkdNjZHpg4g/OLy0g==} peerDependencies: verdaccio: ^6.0.5 peerDependenciesMeta: verdaccio: optional: true - '@nx/nx-darwin-arm64@22.6.4': - resolution: {integrity: sha512-KuUQ9t8pxIO+Px1kbjA0XDLOU6XoAsijl0ssIMRYN1w5ly+0k/KglWt7qgwDockkaLRHkQ3YSR8I2LJXJE+Vig==} + '@nx/nx-darwin-arm64@22.6.5': + resolution: {integrity: sha512-qT77Omkg5xQuL2+pDbneX2tI+XW5ZeayMylu7UUgK8OhTrAkJLKjpuYRH4xT5XBipxbDtlxmO3aLS3Ib1pKzJQ==} cpu: [arm64] os: [darwin] - '@nx/nx-darwin-x64@22.6.4': - resolution: {integrity: sha512-FB2XL2+ixbRI1fddz4oW+9MhoJASoTD8Ai4q5+B1OUPftgarIPLxaqI8TWba30Bos2AiYDofMJPf9uhBmLDH5Q==} + '@nx/nx-darwin-x64@22.6.5': + resolution: {integrity: sha512-9jICxb7vfJ56y/7Yuh3b/n1QJqWxO9xnXKYEs6SO8xPoW/KomVckILGc1C6RQSs6/3ixVJC7k1Dh1wm5tKPFrg==} cpu: [x64] os: [darwin] - '@nx/nx-freebsd-x64@22.6.4': - resolution: {integrity: sha512-qNsXhlflc77afjcRKCn7bqI8l/HPEjKhQRFs8wfKbAfNw3XEASc0EZtBV/TStLGV6PEZQldVBaId5FBMp8GW6Q==} + '@nx/nx-freebsd-x64@22.6.5': + resolution: {integrity: sha512-6B1wEKpqz5dI3AGMqttAVnA6M3DB/besAtuGyQiymK9ROlta1iuWgCcIYwcCQyhLn2Rx7vqj447KKcgCa8HlVw==} cpu: [x64] os: [freebsd] - '@nx/nx-linux-arm-gnueabihf@22.6.4': - resolution: {integrity: sha512-rjfnii0xGe8SQqsO/DDHeJSjbqp2H5fOEgZlaYXDGOwQeLZ1TQplEdx8hyI/ErAUwVO3YHnzoMtmachBQOlspw==} + '@nx/nx-linux-arm-gnueabihf@22.6.5': + resolution: {integrity: sha512-xV50B8mnDPboct7JkAHftajI02s+8FszA8WTzhore+YGR+lEKHTLpucwGEaQuMlSdLplH7pQix4B4uK5pcMhZw==} cpu: [arm] os: [linux] - '@nx/nx-linux-arm64-gnu@22.6.4': - resolution: {integrity: sha512-x6Zim1STewCXuHBCgoy2TO0586UlwH4RNCobn0mTiPd1jt7nU+fNqo3SpY8RzY1KmBfgcO48BBrfykPE9YWMpg==} + '@nx/nx-linux-arm64-gnu@22.6.5': + resolution: {integrity: sha512-2JkWuMGj+HpW6oPAvU5VdAx1afTnEbiM10Y3YOrl3fipWV4BiP5VDx762QTrfCraP4hl6yqTgvTe7F9xaby+jQ==} cpu: [arm64] os: [linux] - '@nx/nx-linux-arm64-musl@22.6.4': - resolution: {integrity: sha512-vYOqdgXIhtHFWdtnonp/jFfmfkyNPTu1JEdXuJpSxwUQdV2dWqS/l3HVPVWHXDrVKofPafK3M72jMvoWoaOQ6g==} + '@nx/nx-linux-arm64-musl@22.6.5': + resolution: {integrity: sha512-Z/zMqFClnEyqDXouJKEPoWVhMQIif5F0YuECWBYjd3ZLwQsXGTItoh+6Wm3XF/nGMA2uLOHyTq/X7iFXQY3RzA==} cpu: [arm64] os: [linux] - '@nx/nx-linux-x64-gnu@22.6.4': - resolution: {integrity: sha512-UfWUDlOzlvQNVa1mnqOFxzvUwoGfM2o9ruhwYRoFm3XJbVYnjINyQsdcHwwDJItJP04LZzLPxA1+O8sU+Oqg6A==} + '@nx/nx-linux-x64-gnu@22.6.5': + resolution: {integrity: sha512-FlotSyqNnaXSn0K+yWw+hRdYBwusABrPgKLyixfJIYRzsy+xPKN6pON6vZfqGwzuWF/9mEGReRz+iM8PiW0XSg==} cpu: [x64] os: [linux] - '@nx/nx-linux-x64-musl@22.6.4': - resolution: {integrity: sha512-dwXpcyin4ScD5gH9FdhiNnOqFXclXLFBDTyRCEOlRUbOPayF9YEcH0PPIf9uWmwP3tshhAdr5sg9DLN+r7M3xg==} + '@nx/nx-linux-x64-musl@22.6.5': + resolution: {integrity: sha512-RVOe2qcwhoIx6mxQURPjUfAW5SEOmT2gdhewvdcvX9ICq1hj5B2VarmkhTg0qroO7xiyqOqwq26mCzoV2I3NgQ==} cpu: [x64] os: [linux] - '@nx/nx-win32-arm64-msvc@22.6.4': - resolution: {integrity: sha512-KqjJbFWhKJaKjET3Ep8hltXPizO0EstF4yfmp3oepWVn11poagc2MT1pf/tnRf6cdD88wd0bmw/83Ng6WUQ3Uw==} + '@nx/nx-win32-arm64-msvc@22.6.5': + resolution: {integrity: sha512-ZqurqI8VuYnsr2Kn4K4t+Gx6j/BZdf6qz/6Tv4A7XQQ6oNYVQgTqoNEFj+CCkVaIe6aIdCWpousFLqs+ZgBqYQ==} cpu: [arm64] os: [win32] - '@nx/nx-win32-x64-msvc@22.6.4': - resolution: {integrity: sha512-CIL9m6uilGGr/eU+41/+aVWUnEcq+j1EDynUX2A4InLTbAN0ylte4Af+72mvipNiqJgDkjKaNzOCQDnp8QBjEQ==} + '@nx/nx-win32-x64-msvc@22.6.5': + resolution: {integrity: sha512-i2QFBJIuaYg9BHxrrnBV4O7W9rVL2k0pSIdk/rRp3EYJEU93iUng+qbZiY9wh1xvmXuUCE2G7TRd+8/SG/RFKg==} cpu: [x64] os: [win32] - '@nx/workspace@22.6.4': - resolution: {integrity: sha512-7t7sEjTjhINUC2aOze0K/hLuK6s6lyg+mH+/dSnkePfMVauZoodxhknHwZ3n50+lW9jyYEd7GqeiXn45TqpTpQ==} + '@nx/workspace@22.6.5': + resolution: {integrity: sha512-/CZtv1ESSfZ1MVqSlCsmnBWysU1z5VdNlwANlqL6BV2X6RUHKDPVj4YuNPvCK+0LsqyzfJdUt3pcnBYxnT5TIg==} '@open-draft/deferred-promise@2.2.0': resolution: {integrity: sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==} @@ -11388,9 +11385,6 @@ packages: resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} engines: {node: '>= 0.4'} - async@3.2.6: - resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} - asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} @@ -11412,9 +11406,6 @@ packages: resolution: {integrity: sha512-byD6KPdvo72y/wj2T/4zGEvvlis+PsZsn/yPS3pEO+sFpcrqRpX/TJCxvVaEsNeMrfQbCr7w163YqoD9IYwHXw==} engines: {node: '>=4'} - axios@1.12.0: - resolution: {integrity: sha512-oXTDccv8PcfjZmPGlWsPSwtOJCZ/b6W5jAMCNcfwJbCzDckwG0jrYJFaWH1yvivfCXjVzV/SPDEhMB3Q+DSurg==} - axios@1.15.0: resolution: {integrity: sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==} @@ -12190,9 +12181,9 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - ejs@3.1.10: - resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} - engines: {node: '>=0.10.0'} + ejs@5.0.1: + resolution: {integrity: sha512-COqBPFMxuPTPspXl2DkVYaDS3HtrD1GpzOGkNTJ1IYkifq/r9h8SVEFrjA3D9/VJGOEoMQcrlhpntcSUrM8k6A==} + engines: {node: '>=0.12.18'} hasBin: true electron-to-chromium@1.5.331: @@ -12654,9 +12645,6 @@ packages: file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} - filelist@1.0.6: - resolution: {integrity: sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==} - fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -12683,15 +12671,6 @@ packages: flatted@3.4.2: resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} - follow-redirects@1.15.11: - resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} - engines: {node: '>=4.0'} - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - follow-redirects@1.16.0: resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} engines: {node: '>=4.0'} @@ -13485,11 +13464,6 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jake@10.9.4: - resolution: {integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==} - engines: {node: '>=10'} - hasBin: true - jay-peg@1.1.1: resolution: {integrity: sha512-D62KEuBxz/ip2gQKOEhk/mx14o7eiFRaU+VNNSP4MOiIkwb/D6B3G1Mfas7C/Fit8EsSV2/IWjZElx/Gs6A4ww==} @@ -14076,10 +14050,6 @@ packages: minimatch@3.1.5: resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} - minimatch@5.1.9: - resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} - engines: {node: '>=10'} - minimatch@9.0.9: resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} engines: {node: '>=16 || 14 >=14.17'} @@ -14311,8 +14281,8 @@ packages: nwsapi@2.2.23: resolution: {integrity: sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==} - nx@22.6.4: - resolution: {integrity: sha512-WEaCnLKeO9RhQAOBMfXgYO/Lx5wL4ARCtRGiYCjJtAJIZ5kcVn4uPKL2Xz1xekpF7ef/+YNrUQSrblx47Ms9Rg==} + nx@22.6.5: + resolution: {integrity: sha512-VRKhDAt684dXNSz9MNjE7MekkCfQF41P2PSx5jEWQjDEP1Z4jFZbyeygWs5ZyOroG7/n0MoWAJTe6ftvIcBOAg==} hasBin: true peerDependencies: '@swc-node/register': ^1.11.1 @@ -15159,8 +15129,8 @@ packages: regjsgen@0.8.0: resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} - regjsparser@0.13.0: - resolution: {integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==} + regjsparser@0.13.1: + resolution: {integrity: sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==} hasBin: true rehype-format@5.0.1: @@ -15225,8 +15195,8 @@ packages: resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} engines: {node: '>=10'} - resolve@1.22.11: - resolution: {integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==} + resolve@1.22.12: + resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} engines: {node: '>= 0.4'} hasBin: true @@ -15488,6 +15458,10 @@ packages: slate@0.110.2: resolution: {integrity: sha512-4xGULnyMCiEQ0Ml7JAC1A6HVE6MNpPJU7Eq4cXh1LxlrR0dFXC3XC+rNfQtUJ7chHoPkws57x7DDiWiZAt+PBA==} + smol-toml@1.6.1: + resolution: {integrity: sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==} + engines: {node: '>= 18'} + socket.io-adapter@2.5.6: resolution: {integrity: sha512-DkkO/dz7MGln0dHn5bmN3pPy+JmywNICWrJqVWiVOyvXjWQFIv9c2h24JrQLLFJ2aQVQf/Cvl1vblnd4r2apLQ==} @@ -15800,6 +15774,10 @@ packages: resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==} engines: {node: '>=12.0.0'} + tinyglobby@0.2.16: + resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} + engines: {node: '>=12.0.0'} + tinyrainbow@3.1.0: resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} engines: {node: '>=14.0.0'} @@ -17192,7 +17170,7 @@ snapshots: '@babel/helper-plugin-utils': 7.28.6 debug: 4.4.3 lodash.debounce: 4.0.8 - resolve: 1.22.11 + resolve: 1.22.12 transitivePeerDependencies: - supports-color @@ -18047,12 +18025,12 @@ snapshots: '@date-fns/tz@1.4.1': {} - '@emnapi/core@1.9.2': + '@emnapi/core@1.10.0': dependencies: '@emnapi/wasi-threads': 1.2.1 tslib: 2.8.1 - '@emnapi/runtime@1.9.2': + '@emnapi/runtime@1.10.0': dependencies: tslib: 2.8.1 @@ -18649,7 +18627,7 @@ snapshots: '@img/sharp-wasm32@0.34.5': dependencies: - '@emnapi/runtime': 1.9.2 + '@emnapi/runtime': 1.10.0 optional: true '@img/sharp-win32-arm64@0.34.5': @@ -18915,8 +18893,6 @@ snapshots: transitivePeerDependencies: - '@types/json-schema' - '@ltd/j-toml@1.38.0': {} - '@mantine/core@8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: '@floating-ui/react': 0.27.19(react-dom@19.2.5(react@19.2.5))(react@19.2.5) @@ -19094,21 +19070,21 @@ snapshots: '@napi-rs/wasm-runtime@0.2.12': dependencies: - '@emnapi/core': 1.9.2 - '@emnapi/runtime': 1.9.2 + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 '@tybys/wasm-util': 0.10.1 optional: true '@napi-rs/wasm-runtime@0.2.4': dependencies: - '@emnapi/core': 1.9.2 - '@emnapi/runtime': 1.9.2 + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 '@tybys/wasm-util': 0.9.0 - '@napi-rs/wasm-runtime@1.1.2(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': + '@napi-rs/wasm-runtime@1.1.2(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': dependencies: - '@emnapi/core': 1.9.2 - '@emnapi/runtime': 1.9.2 + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 '@tybys/wasm-util': 0.10.1 optional: true @@ -19166,18 +19142,18 @@ snapshots: '@nolyfill/is-core-module@1.0.39': {} - '@nx/devkit@22.6.4(nx@22.6.4)': + '@nx/devkit@22.6.5(nx@22.6.5)': dependencies: '@zkochan/js-yaml': 0.0.7 - ejs: 3.1.10 + ejs: 5.0.1 enquirer: 2.3.6 minimatch: 10.2.4 - nx: 22.6.4 + nx: 22.6.5 semver: 7.7.4 tslib: 2.8.1 yargs-parser: 21.1.1 - '@nx/js@22.6.4(@babel/traverse@7.29.0)(nx@22.6.4)': + '@nx/js@22.6.5(@babel/traverse@7.29.0)(nx@22.6.5)': dependencies: '@babel/core': 7.29.0 '@babel/plugin-proposal-decorators': 7.29.0(@babel/core@7.29.0) @@ -19186,8 +19162,8 @@ snapshots: '@babel/preset-env': 7.29.2(@babel/core@7.29.0) '@babel/preset-typescript': 7.28.5(@babel/core@7.29.0) '@babel/runtime': 7.29.2 - '@nx/devkit': 22.6.4(nx@22.6.4) - '@nx/workspace': 22.6.4 + '@nx/devkit': 22.6.5(nx@22.6.5) + '@nx/workspace': 22.6.5 '@zkochan/js-yaml': 0.0.7 babel-plugin-const-enum: 1.2.0(@babel/core@7.29.0) babel-plugin-macros: 3.1.0 @@ -19203,7 +19179,7 @@ snapshots: picomatch: 4.0.4 semver: 7.7.4 source-map-support: 0.5.19 - tinyglobby: 0.2.12 + tinyglobby: 0.2.16 tslib: 2.8.1 transitivePeerDependencies: - '@babel/traverse' @@ -19213,43 +19189,43 @@ snapshots: - nx - supports-color - '@nx/nx-darwin-arm64@22.6.4': + '@nx/nx-darwin-arm64@22.6.5': optional: true - '@nx/nx-darwin-x64@22.6.4': + '@nx/nx-darwin-x64@22.6.5': optional: true - '@nx/nx-freebsd-x64@22.6.4': + '@nx/nx-freebsd-x64@22.6.5': optional: true - '@nx/nx-linux-arm-gnueabihf@22.6.4': + '@nx/nx-linux-arm-gnueabihf@22.6.5': optional: true - '@nx/nx-linux-arm64-gnu@22.6.4': + '@nx/nx-linux-arm64-gnu@22.6.5': optional: true - '@nx/nx-linux-arm64-musl@22.6.4': + '@nx/nx-linux-arm64-musl@22.6.5': optional: true - '@nx/nx-linux-x64-gnu@22.6.4': + '@nx/nx-linux-x64-gnu@22.6.5': optional: true - '@nx/nx-linux-x64-musl@22.6.4': + '@nx/nx-linux-x64-musl@22.6.5': optional: true - '@nx/nx-win32-arm64-msvc@22.6.4': + '@nx/nx-win32-arm64-msvc@22.6.5': optional: true - '@nx/nx-win32-x64-msvc@22.6.4': + '@nx/nx-win32-x64-msvc@22.6.5': optional: true - '@nx/workspace@22.6.4': + '@nx/workspace@22.6.5': dependencies: - '@nx/devkit': 22.6.4(nx@22.6.4) + '@nx/devkit': 22.6.5(nx@22.6.5) '@zkochan/js-yaml': 0.0.7 chalk: 4.1.2 enquirer: 2.3.6 - nx: 22.6.4 + nx: 22.6.5 picomatch: 4.0.4 semver: 7.7.4 tslib: 2.8.1 @@ -19555,10 +19531,10 @@ snapshots: - sugarss - terser - '@playwright/experimental-ct-react@1.51.1(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@playwright/experimental-ct-react@1.51.1(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@playwright/experimental-ct-core': 1.51.1(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.1) - '@vitejs/plugin-react': 4.7.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitejs/plugin-react': 4.7.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) transitivePeerDependencies: - '@types/node' - less @@ -19575,11 +19551,11 @@ snapshots: dependencies: playwright: 1.51.1 - '@polar-sh/better-auth@1.8.3(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))))(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1)(zod@4.3.6)': + '@polar-sh/better-auth@1.8.3(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))))(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1)(zod@4.3.6)': dependencies: '@polar-sh/checkout': 0.2.0(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1) '@polar-sh/sdk': 0.42.5 - better-auth: 1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))) + better-auth: 1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))) zod: 4.3.6 transitivePeerDependencies: - '@stripe/react-stripe-js' @@ -20744,9 +20720,9 @@ snapshots: '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': dependencies: - '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -21605,12 +21581,12 @@ snapshots: postcss: 8.5.8 tailwindcss: 4.2.2 - '@tailwindcss/vite@4.2.2(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@tailwindcss/vite@4.2.2(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@tailwindcss/node': 4.2.2 '@tailwindcss/oxide': 4.2.2 tailwindcss: 4.2.2 - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) '@tanstack/react-store@0.7.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: @@ -21761,7 +21737,7 @@ snapshots: dependencies: minimatch: 10.2.5 path-browserify: 1.0.1 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 '@tybys/wasm-util@0.10.1': dependencies: @@ -22180,7 +22156,7 @@ snapshots: debug: 4.4.3 minimatch: 10.2.5 semver: 7.7.4 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: @@ -22424,12 +22400,12 @@ snapshots: '@vercel/oidc@3.0.5': {} - '@vitejs/devtools-kit@0.1.13(typescript@5.9.3)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0)': + '@vitejs/devtools-kit@0.1.13(typescript@5.9.3)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0)': dependencies: '@vitejs/devtools-rpc': 0.1.13(typescript@5.9.3)(ws@8.20.0) birpc: 4.0.0 ohash: 2.0.11 - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - typescript - ws @@ -22446,7 +22422,7 @@ snapshots: transitivePeerDependencies: - typescript - '@vitejs/plugin-react@4.7.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitejs/plugin-react@4.7.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) @@ -22454,21 +22430,21 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitejs/plugin-react@6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.7 - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) optionalDependencies: babel-plugin-react-compiler: 1.0.0 - '@vitejs/plugin-react@6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitejs/plugin-react@6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.7 - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) optionalDependencies: babel-plugin-react-compiler: 1.0.0 @@ -22481,33 +22457,33 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@vitest/spy': 4.1.2 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.11.5(@types/node@20.19.37)(typescript@5.9.3) - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@vitest/spy': 4.1.2 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.11.5(@types/node@25.5.0)(typescript@5.9.3) - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) optional: true - '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@vitest/spy': 4.1.2 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.11.5(@types/node@25.6.0)(typescript@5.9.3) - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) '@vitest/pretty-format@4.1.2': dependencies: @@ -22843,8 +22819,6 @@ snapshots: async-function@1.0.0: {} - async@3.2.6: {} - asynckit@0.4.0: {} atomically@2.1.1: @@ -22868,14 +22842,6 @@ snapshots: axe-core@4.11.2: {} - axios@1.12.0: - dependencies: - follow-redirects: 1.15.11 - form-data: 4.0.5 - proxy-from-env: 1.1.0 - transitivePeerDependencies: - - debug - axios@1.15.0: dependencies: follow-redirects: 1.16.0 @@ -22899,7 +22865,7 @@ snapshots: dependencies: '@babel/runtime': 7.29.2 cosmiconfig: 7.1.0 - resolve: 1.22.11 + resolve: 1.22.12 babel-plugin-polyfill-corejs2@0.4.17(@babel/core@7.29.0): dependencies: @@ -22982,7 +22948,7 @@ snapshots: baseline-browser-mapping@2.10.17: {} - better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))): + better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))): dependencies: '@better-auth/core': 1.4.22(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.8(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0) '@better-auth/telemetry': 1.4.22(@better-auth/core@1.4.22(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.8(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0)) @@ -23002,7 +22968,7 @@ snapshots: pg: 8.20.0 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - vitest: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + vitest: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) better-call@1.1.8(zod@4.3.6): dependencies: @@ -23601,7 +23567,7 @@ snapshots: dotenv-expand@11.0.7: dependencies: - dotenv: 16.6.1 + dotenv: 16.4.7 dotenv@16.4.7: {} @@ -23615,9 +23581,7 @@ snapshots: eastasianwidth@0.2.0: {} - ejs@3.1.10: - dependencies: - jake: 10.9.4 + ejs@5.0.1: {} electron-to-chromium@1.5.331: {} @@ -23952,7 +23916,7 @@ snapshots: get-tsconfig: 4.13.7 is-bun-module: 2.0.0 stable-hash: 0.0.5 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 unrs-resolver: 1.11.1 optionalDependencies: eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) @@ -24440,10 +24404,6 @@ snapshots: file-uri-to-path@1.0.0: {} - filelist@1.0.6: - dependencies: - minimatch: 5.1.9 - fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -24470,8 +24430,6 @@ snapshots: flatted@3.4.2: {} - follow-redirects@1.15.11: {} - follow-redirects@1.16.0: {} fontkit@2.0.4: @@ -24571,7 +24529,7 @@ snapshots: transitivePeerDependencies: - supports-color - fumadocs-mdx@14.2.11(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + fumadocs-mdx@14.2.11(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@mdx-js/mdx': 3.1.1 '@standard-schema/spec': 1.1.0 @@ -24597,7 +24555,7 @@ snapshots: '@types/react': 19.2.14 next: 16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - supports-color @@ -25342,12 +25300,6 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jake@10.9.4: - dependencies: - async: 3.2.6 - filelist: 1.0.6 - picocolors: 1.1.1 - jay-peg@1.1.1: dependencies: restructure: 3.0.2 @@ -26181,10 +26133,6 @@ snapshots: dependencies: brace-expansion: 1.1.13 - minimatch@5.1.9: - dependencies: - brace-expansion: 2.0.3 - minimatch@9.0.9: dependencies: brace-expansion: 2.0.3 @@ -26449,20 +26397,19 @@ snapshots: nwsapi@2.2.23: {} - nx@22.6.4: + nx@22.6.5: dependencies: - '@ltd/j-toml': 1.38.0 '@napi-rs/wasm-runtime': 0.2.4 '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.2 '@zkochan/js-yaml': 0.0.7 - axios: 1.12.0 + axios: 1.15.0 cli-cursor: 3.1.0 cli-spinners: 2.6.1 cliui: 8.0.1 dotenv: 16.4.7 dotenv-expand: 11.0.7 - ejs: 3.1.10 + ejs: 5.0.1 enquirer: 2.3.6 figures: 3.2.0 flat: 5.0.2 @@ -26478,6 +26425,7 @@ snapshots: picocolors: 1.1.1 resolve.exports: 2.0.3 semver: 7.7.4 + smol-toml: 1.6.1 string-width: 4.2.3 tar-stream: 2.2.0 tmp: 0.2.5 @@ -26488,16 +26436,16 @@ snapshots: yargs: 17.7.2 yargs-parser: 21.1.1 optionalDependencies: - '@nx/nx-darwin-arm64': 22.6.4 - '@nx/nx-darwin-x64': 22.6.4 - '@nx/nx-freebsd-x64': 22.6.4 - '@nx/nx-linux-arm-gnueabihf': 22.6.4 - '@nx/nx-linux-arm64-gnu': 22.6.4 - '@nx/nx-linux-arm64-musl': 22.6.4 - '@nx/nx-linux-x64-gnu': 22.6.4 - '@nx/nx-linux-x64-musl': 22.6.4 - '@nx/nx-win32-arm64-msvc': 22.6.4 - '@nx/nx-win32-x64-msvc': 22.6.4 + '@nx/nx-darwin-arm64': 22.6.5 + '@nx/nx-darwin-x64': 22.6.5 + '@nx/nx-freebsd-x64': 22.6.5 + '@nx/nx-linux-arm-gnueabihf': 22.6.5 + '@nx/nx-linux-arm64-gnu': 22.6.5 + '@nx/nx-linux-arm64-musl': 22.6.5 + '@nx/nx-linux-x64-gnu': 22.6.5 + '@nx/nx-linux-x64-musl': 22.6.5 + '@nx/nx-win32-arm64-msvc': 22.6.5 + '@nx/nx-win32-x64-msvc': 22.6.5 transitivePeerDependencies: - debug @@ -26612,7 +26560,7 @@ snapshots: bl: 4.1.0 chalk: 4.1.2 cli-cursor: 3.1.0 - cli-spinners: 2.9.2 + cli-spinners: 2.6.1 is-interactive: 1.0.0 log-symbols: 4.1.0 strip-ansi: 6.0.1 @@ -27407,7 +27355,7 @@ snapshots: regenerate: 1.4.2 regenerate-unicode-properties: 10.2.2 regjsgen: 0.8.0 - regjsparser: 0.13.0 + regjsparser: 0.13.1 unicode-match-property-ecmascript: 2.0.0 unicode-match-property-value-ecmascript: 2.2.1 @@ -27422,7 +27370,7 @@ snapshots: regjsgen@0.8.0: {} - regjsparser@0.13.0: + regjsparser@0.13.1: dependencies: jsesc: 3.1.0 @@ -27533,8 +27481,9 @@ snapshots: resolve.exports@2.0.3: {} - resolve@1.22.11: + resolve@1.22.12: dependencies: + es-errors: 1.3.0 is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -27574,7 +27523,7 @@ snapshots: dependencies: glob: 10.5.0 - rolldown@1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2): + rolldown@1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0): dependencies: '@oxc-project/types': 0.122.0 '@rolldown/pluginutils': 1.0.0-rc.12 @@ -27591,7 +27540,7 @@ snapshots: '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.12 '@rolldown/binding-linux-x64-musl': 1.0.0-rc.12 '@rolldown/binding-openharmony-arm64': 1.0.0-rc.12 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.12 '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.12 transitivePeerDependencies: @@ -27923,6 +27872,8 @@ snapshots: is-plain-object: 5.0.0 tiny-warning: 1.0.3 + smol-toml@1.6.1: {} + socket.io-adapter@2.5.6: dependencies: debug: 4.4.3 @@ -28144,7 +28095,7 @@ snapshots: lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.7 - tinyglobby: 0.2.12 + tinyglobby: 0.2.16 ts-interface-checker: 0.1.13 supports-color@7.2.0: @@ -28255,6 +28206,11 @@ snapshots: fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 + tinyglobby@0.2.16: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + tinyrainbow@3.1.0: {} tldts-core@6.1.86: {} @@ -28644,13 +28600,13 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 - vite-node@6.0.0(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): + vite-node@6.0.0(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): dependencies: cac: 7.0.0 es-module-lexer: 2.0.0 obug: 2.1.1 pathe: 2.0.3 - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - '@emnapi/core' - '@emnapi/runtime' @@ -28667,33 +28623,33 @@ snapshots: - tsx - yaml - vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@rollup/pluginutils': 4.2.1 '@types/eslint': 8.56.12 eslint: 8.57.1 rollup: 2.80.0 - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@rollup/pluginutils': 4.2.1 '@types/eslint': 8.56.12 eslint: 8.57.1 rollup: 2.80.0 - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vite-plugin-externalize-deps@0.10.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vite-plugin-externalize-deps@0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vite-plugin-externalize-deps@0.10.0(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vite-plugin-externalize-deps@0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vite-plugin-inspect@12.0.0-beta.1(typescript@5.9.3)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0): + vite-plugin-inspect@12.0.0-beta.1(typescript@5.9.3)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0): dependencies: - '@vitejs/devtools-kit': 0.1.13(typescript@5.9.3)(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0) + '@vitejs/devtools-kit': 0.1.13(typescript@5.9.3)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0) ansis: 4.2.0 error-stack-parser-es: 1.0.5 obug: 2.1.1 @@ -28702,7 +28658,7 @@ snapshots: perfect-debounce: 2.1.0 sirv: 3.0.2 unplugin-utils: 0.3.1 - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - typescript - ws @@ -28718,12 +28674,12 @@ snapshots: lightningcss: 1.32.0 terser: 5.46.1 - vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): + vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 postcss: 8.5.8 - rolldown: 1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + rolldown: 1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) tinyglobby: 0.2.15 optionalDependencies: '@types/node': 20.19.37 @@ -28737,12 +28693,12 @@ snapshots: - '@emnapi/core' - '@emnapi/runtime' - vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): + vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 postcss: 8.5.8 - rolldown: 1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + rolldown: 1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) tinyglobby: 0.2.15 optionalDependencies: '@types/node': 25.5.0 @@ -28757,12 +28713,12 @@ snapshots: - '@emnapi/runtime' optional: true - vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): + vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 postcss: 8.5.8 - rolldown: 1.0.0-rc.12(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) + rolldown: 1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) tinyglobby: 0.2.15 optionalDependencies: '@types/node': 25.6.0 @@ -28785,10 +28741,10 @@ snapshots: transitivePeerDependencies: - supports-color - vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@20.19.37)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@20.19.37)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@vitest/expect': 4.1.2 - '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/pretty-format': 4.1.2 '@vitest/runner': 4.1.2 '@vitest/snapshot': 4.1.2 @@ -28805,7 +28761,7 @@ snapshots: tinyexec: 1.0.4 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.1 @@ -28814,10 +28770,10 @@ snapshots: transitivePeerDependencies: - msw - vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@vitest/expect': 4.1.2 - '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/pretty-format': 4.1.2 '@vitest/runner': 4.1.2 '@vitest/snapshot': 4.1.2 @@ -28834,7 +28790,7 @@ snapshots: tinyexec: 1.0.4 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.1 @@ -28844,10 +28800,10 @@ snapshots: - msw optional: true - vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@vitest/expect': 4.1.2 - '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/pretty-format': 4.1.2 '@vitest/runner': 4.1.2 '@vitest/snapshot': 4.1.2 @@ -28864,7 +28820,7 @@ snapshots: tinyexec: 1.0.4 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vite: 8.0.3(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.1 From cb51b286dc253dbf4d1b229e63fcd234d9e01169 Mon Sep 17 00:00:00 2001 From: Nick the Sick Date: Thu, 16 Apr 2026 19:09:04 +0200 Subject: [PATCH 12/76] chore(release): publish 0.48.1 --- CHANGELOG.md | 16 ++++++++ packages/ariakit/package.json | 6 +-- packages/code-block/package.json | 6 +-- packages/core/package.json | 2 +- packages/dev-scripts/package.json | 2 +- packages/mantine/package.json | 6 +-- packages/react/package.json | 4 +- packages/server-util/package.json | 6 +-- packages/shadcn/package.json | 6 +-- packages/xl-ai-server/package.json | 4 +- packages/xl-ai/package.json | 8 ++-- packages/xl-docx-exporter/package.json | 6 +-- packages/xl-email-exporter/package.json | 6 +-- packages/xl-multi-column/package.json | 6 +-- packages/xl-odt-exporter/package.json | 6 +-- packages/xl-pdf-exporter/package.json | 8 ++-- pnpm-lock.yaml | 50 ++++++++++++------------- 17 files changed, 82 insertions(+), 66 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 85c250a9b8..1731c4b7ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,19 @@ +## 0.48.1 (2026-04-16) + +### 🩹 Fixes + +- make CustomChange compatible with prosemirror-changeset 2.4.1 ([#2647](https://github.com/TypeCellOS/BlockNote/pull/2647)) +- **deps:** upgrade nx to 22.6.5 to resolve axios security vulnerability (CVE-2025-62718) ([c1ef3018a](https://github.com/TypeCellOS/BlockNote/commit/c1ef3018a)) +- **deps:** upgrade nx to 22.6.5 to resolve axios security vulnerability ([#2653](https://github.com/TypeCellOS/BlockNote/pull/2653)) +- **docx-exporter:** omit w:lang when no locale provided instead of defaulting to en-US ([#2651](https://github.com/TypeCellOS/BlockNote/pull/2651)) + +### ❤️ Thank You + +- Claude Opus 4.6 (1M context) +- Nick Perez +- Nick the Sick +- Stephan Meijer @StephanMeijer + ## 0.48.0 (2026-04-13) ### 🚀 Features diff --git a/packages/ariakit/package.json b/packages/ariakit/package.json index 201478652e..fc9af085c2 100644 --- a/packages/ariakit/package.json +++ b/packages/ariakit/package.json @@ -11,7 +11,7 @@ "directory": "packages/ariakit" }, "license": "MPL-2.0", - "version": "0.48.0", + "version": "0.48.1", "files": [ "dist", "types", @@ -57,8 +57,8 @@ }, "dependencies": { "@ariakit/react": "^0.4.19", - "@blocknote/core": "0.48.0", - "@blocknote/react": "0.48.0" + "@blocknote/core": "0.48.1", + "@blocknote/react": "0.48.1" }, "devDependencies": { "@types/react": "^19.2.3", diff --git a/packages/code-block/package.json b/packages/code-block/package.json index f71bbef191..bc2b626fca 100644 --- a/packages/code-block/package.json +++ b/packages/code-block/package.json @@ -9,7 +9,7 @@ "directory": "packages/code-block" }, "license": "MPL-2.0", - "version": "0.48.0", + "version": "0.48.1", "files": [ "dist", "types", @@ -49,7 +49,7 @@ "test-watch": "vitest watch" }, "dependencies": { - "@blocknote/core": "0.48.0", + "@blocknote/core": "0.48.1", "@shikijs/core": "^4", "@shikijs/engine-javascript": "^4", "@shikijs/langs-precompiled": "^4", @@ -65,7 +65,7 @@ "vitest": "^4.1.2" }, "peerDependencies": { - "@blocknote/core": "0.48.0" + "@blocknote/core": "0.48.1" }, "eslintConfig": { "extends": [ diff --git a/packages/core/package.json b/packages/core/package.json index 7e8879f54e..96381f9e9b 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -11,7 +11,7 @@ "directory": "packages/core" }, "license": "MPL-2.0", - "version": "0.48.0", + "version": "0.48.1", "files": [ "dist", "types", diff --git a/packages/dev-scripts/package.json b/packages/dev-scripts/package.json index 3bb26f135f..11dbed3d91 100644 --- a/packages/dev-scripts/package.json +++ b/packages/dev-scripts/package.json @@ -8,7 +8,7 @@ "directory": "packages/dev-scripts" }, "license": "MPL-2.0", - "version": "0.48.0", + "version": "0.48.1", "description": "", "type": "module", "scripts": { diff --git a/packages/mantine/package.json b/packages/mantine/package.json index d44f963c2a..4d65cd11e6 100644 --- a/packages/mantine/package.json +++ b/packages/mantine/package.json @@ -11,7 +11,7 @@ "directory": "packages/mantine" }, "license": "MPL-2.0", - "version": "0.48.0", + "version": "0.48.1", "files": [ "dist", "types", @@ -61,8 +61,8 @@ "clean": "rimraf dist && rimraf types" }, "dependencies": { - "@blocknote/core": "0.48.0", - "@blocknote/react": "0.48.0", + "@blocknote/core": "0.48.1", + "@blocknote/react": "0.48.1", "react-icons": "^5.5.0" }, "devDependencies": { diff --git a/packages/react/package.json b/packages/react/package.json index 5d81e7b8f8..06f6d45956 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -11,7 +11,7 @@ "directory": "packages/react" }, "license": "MPL-2.0", - "version": "0.48.0", + "version": "0.48.1", "files": [ "dist", "types", @@ -58,7 +58,7 @@ "clean": "rimraf dist && rimraf types" }, "dependencies": { - "@blocknote/core": "0.48.0", + "@blocknote/core": "0.48.1", "@emoji-mart/data": "^1.2.1", "@floating-ui/react": "^0.27.18", "@floating-ui/utils": "^0.2.10", diff --git a/packages/server-util/package.json b/packages/server-util/package.json index a7784692ed..490ac6e7b8 100644 --- a/packages/server-util/package.json +++ b/packages/server-util/package.json @@ -11,7 +11,7 @@ "directory": "packages/server-util" }, "license": "MPL-2.0", - "version": "0.48.0", + "version": "0.48.1", "files": [ "dist", "types", @@ -56,8 +56,8 @@ "test-watch": "vitest watch" }, "dependencies": { - "@blocknote/core": "0.48.0", - "@blocknote/react": "0.48.0", + "@blocknote/core": "0.48.1", + "@blocknote/react": "0.48.1", "@tiptap/core": "^3.13.0", "@tiptap/pm": "^3.13.0", "jsdom": "^25.0.1", diff --git a/packages/shadcn/package.json b/packages/shadcn/package.json index 8a79fa5014..6c785e8899 100644 --- a/packages/shadcn/package.json +++ b/packages/shadcn/package.json @@ -11,7 +11,7 @@ "directory": "packages/shadcn" }, "license": "MPL-2.0", - "version": "0.48.0", + "version": "0.48.1", "files": [ "dist", "types", @@ -56,8 +56,8 @@ "clean": "rimraf dist && rimraf types" }, "dependencies": { - "@blocknote/core": "0.48.0", - "@blocknote/react": "0.48.0", + "@blocknote/core": "0.48.1", + "@blocknote/react": "0.48.1", "@radix-ui/react-avatar": "^1.1.10", "@radix-ui/react-dropdown-menu": "^2.1.16", "@radix-ui/react-label": "^2.1.7", diff --git a/packages/xl-ai-server/package.json b/packages/xl-ai-server/package.json index d972877f1e..a8806e46f4 100644 --- a/packages/xl-ai-server/package.json +++ b/packages/xl-ai-server/package.json @@ -3,7 +3,7 @@ "homepage": "https://github.com/TypeCellOS/BlockNote", "private": true, "license": "GPL-3.0 OR PROPRIETARY", - "version": "0.48.0", + "version": "0.48.1", "files": [ "dist", "types", @@ -49,7 +49,7 @@ "@ai-sdk/mistral": "^3.0.2", "@ai-sdk/openai": "^3.0.2", "@ai-sdk/openai-compatible": "^2.0.2", - "@blocknote/xl-ai": "0.48.0", + "@blocknote/xl-ai": "0.48.1", "@hono/node-server": "^1.19.5", "ai": "^6.0.5", "hono": "^4.10.3" diff --git a/packages/xl-ai/package.json b/packages/xl-ai/package.json index 39abee4d3a..e2b4fb93dc 100644 --- a/packages/xl-ai/package.json +++ b/packages/xl-ai/package.json @@ -11,7 +11,7 @@ "directory": "packages/xl-ai" }, "license": "GPL-3.0 OR PROPRIETARY", - "version": "0.48.0", + "version": "0.48.1", "files": [ "dist", "types", @@ -71,9 +71,9 @@ "dependencies": { "@ai-sdk/provider-utils": "^4.0.2", "@ai-sdk/react": "^3.0.5", - "@blocknote/core": "0.48.0", - "@blocknote/mantine": "0.48.0", - "@blocknote/react": "0.48.0", + "@blocknote/core": "0.48.1", + "@blocknote/mantine": "0.48.1", + "@blocknote/react": "0.48.1", "@floating-ui/react": "^0.27.18", "@handlewithcare/prosemirror-suggest-changes": "^0.1.8", "@tiptap/core": "^3.13.0", diff --git a/packages/xl-docx-exporter/package.json b/packages/xl-docx-exporter/package.json index dc369e844f..abcdc0b945 100644 --- a/packages/xl-docx-exporter/package.json +++ b/packages/xl-docx-exporter/package.json @@ -9,7 +9,7 @@ "directory": "packages/xl-docx-exporter" }, "license": "GPL-3.0 OR PROPRIETARY", - "version": "0.48.0", + "version": "0.48.1", "files": [ "dist", "types", @@ -57,8 +57,8 @@ "email": "email dev" }, "dependencies": { - "@blocknote/core": "0.48.0", - "@blocknote/xl-multi-column": "0.48.0", + "@blocknote/core": "0.48.1", + "@blocknote/xl-multi-column": "0.48.1", "buffer": "^6.0.3", "docx": "^9.5.1", "image-meta": "^0.2.2" diff --git a/packages/xl-email-exporter/package.json b/packages/xl-email-exporter/package.json index 2caf73646e..a9f9a6a646 100644 --- a/packages/xl-email-exporter/package.json +++ b/packages/xl-email-exporter/package.json @@ -9,7 +9,7 @@ "directory": "packages/xl-email-exporter" }, "license": "GPL-3.0 OR PROPRIETARY", - "version": "0.48.0", + "version": "0.48.1", "files": [ "dist", "types", @@ -54,8 +54,8 @@ "email": "email dev" }, "dependencies": { - "@blocknote/core": "0.48.0", - "@blocknote/react": "0.48.0", + "@blocknote/core": "0.48.1", + "@blocknote/react": "0.48.1", "@react-email/components": "^1.0.5", "@react-email/render": "^2.0.4", "buffer": "^6.0.3", diff --git a/packages/xl-multi-column/package.json b/packages/xl-multi-column/package.json index 0ec79e481b..42dd5bc6ed 100644 --- a/packages/xl-multi-column/package.json +++ b/packages/xl-multi-column/package.json @@ -9,7 +9,7 @@ "directory": "packages/xl-multi-column" }, "license": "GPL-3.0 OR PROPRIETARY", - "version": "0.48.0", + "version": "0.48.1", "files": [ "dist", "types", @@ -51,8 +51,8 @@ "clean": "rimraf dist && rimraf types" }, "dependencies": { - "@blocknote/core": "0.48.0", - "@blocknote/react": "0.48.0", + "@blocknote/core": "0.48.1", + "@blocknote/react": "0.48.1", "@tiptap/core": "^3.13.0", "prosemirror-model": "^1.25.4", "prosemirror-state": "^1.4.4", diff --git a/packages/xl-odt-exporter/package.json b/packages/xl-odt-exporter/package.json index 65abcee9d7..193480fc0d 100644 --- a/packages/xl-odt-exporter/package.json +++ b/packages/xl-odt-exporter/package.json @@ -9,7 +9,7 @@ "directory": "packages/xl-odt-exporter" }, "license": "GPL-3.0 OR PROPRIETARY", - "version": "0.48.0", + "version": "0.48.1", "files": [ "dist", "types", @@ -57,8 +57,8 @@ "clean": "rimraf dist && rimraf types" }, "dependencies": { - "@blocknote/core": "0.48.0", - "@blocknote/xl-multi-column": "0.48.0", + "@blocknote/core": "0.48.1", + "@blocknote/xl-multi-column": "0.48.1", "@zip.js/zip.js": "^2.8.8", "buffer": "^6.0.3", "image-meta": "^0.2.2" diff --git a/packages/xl-pdf-exporter/package.json b/packages/xl-pdf-exporter/package.json index cf847722ee..f877e92a46 100644 --- a/packages/xl-pdf-exporter/package.json +++ b/packages/xl-pdf-exporter/package.json @@ -9,7 +9,7 @@ "directory": "packages/xl-pdf-exporter" }, "license": "GPL-3.0 OR PROPRIETARY", - "version": "0.48.0", + "version": "0.48.1", "files": [ "dist", "types", @@ -56,9 +56,9 @@ "email": "email dev" }, "dependencies": { - "@blocknote/core": "0.48.0", - "@blocknote/react": "0.48.0", - "@blocknote/xl-multi-column": "0.48.0", + "@blocknote/core": "0.48.1", + "@blocknote/react": "0.48.1", + "@blocknote/xl-multi-column": "0.48.1", "@react-pdf/renderer": "^4.3.0", "buffer": "^6.0.3", "docx": "^9.5.1" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 49baa3aca3..cb94f16b80 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4579,10 +4579,10 @@ importers: specifier: ^0.4.19 version: 0.4.24(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@blocknote/core': - specifier: 0.48.0 + specifier: 0.48.1 version: link:../core '@blocknote/react': - specifier: 0.48.0 + specifier: 0.48.1 version: link:../react devDependencies: '@types/react': @@ -4625,7 +4625,7 @@ importers: packages/code-block: dependencies: '@blocknote/core': - specifier: 0.48.0 + specifier: 0.48.1 version: link:../core '@shikijs/core': specifier: ^4 @@ -4853,10 +4853,10 @@ importers: packages/mantine: dependencies: '@blocknote/core': - specifier: 0.48.0 + specifier: 0.48.1 version: link:../core '@blocknote/react': - specifier: 0.48.0 + specifier: 0.48.1 version: link:../react '@mantine/core': specifier: ^8.3.11 @@ -4911,7 +4911,7 @@ importers: packages/react: dependencies: '@blocknote/core': - specifier: 0.48.0 + specifier: 0.48.1 version: link:../core '@emoji-mart/data': specifier: ^1.2.1 @@ -5008,10 +5008,10 @@ importers: packages/server-util: dependencies: '@blocknote/core': - specifier: 0.48.0 + specifier: 0.48.1 version: link:../core '@blocknote/react': - specifier: 0.48.0 + specifier: 0.48.1 version: link:../react '@tiptap/core': specifier: ^3.13.0 @@ -5069,10 +5069,10 @@ importers: packages/shadcn: dependencies: '@blocknote/core': - specifier: 0.48.0 + specifier: 0.48.1 version: link:../core '@blocknote/react': - specifier: 0.48.0 + specifier: 0.48.1 version: link:../react '@radix-ui/react-avatar': specifier: ^1.1.10 @@ -5175,13 +5175,13 @@ importers: specifier: 3.0.5 version: 3.0.5(react@19.2.5)(zod@4.3.6) '@blocknote/core': - specifier: 0.48.0 + specifier: 0.48.1 version: link:../core '@blocknote/mantine': - specifier: 0.48.0 + specifier: 0.48.1 version: link:../mantine '@blocknote/react': - specifier: 0.48.0 + specifier: 0.48.1 version: link:../react '@floating-ui/react': specifier: ^0.27.18 @@ -5350,7 +5350,7 @@ importers: specifier: 2.0.2 version: 2.0.2(zod@4.3.6) '@blocknote/xl-ai': - specifier: 0.48.0 + specifier: 0.48.1 version: link:../xl-ai '@hono/node-server': specifier: ^1.19.5 @@ -5396,10 +5396,10 @@ importers: packages/xl-docx-exporter: dependencies: '@blocknote/core': - specifier: 0.48.0 + specifier: 0.48.1 version: link:../core '@blocknote/xl-multi-column': - specifier: 0.48.0 + specifier: 0.48.1 version: link:../xl-multi-column buffer: specifier: ^6.0.3 @@ -5451,10 +5451,10 @@ importers: packages/xl-email-exporter: dependencies: '@blocknote/core': - specifier: 0.48.0 + specifier: 0.48.1 version: link:../core '@blocknote/react': - specifier: 0.48.0 + specifier: 0.48.1 version: link:../react '@react-email/components': specifier: ^1.0.5 @@ -5509,10 +5509,10 @@ importers: packages/xl-multi-column: dependencies: '@blocknote/core': - specifier: 0.48.0 + specifier: 0.48.1 version: link:../core '@blocknote/react': - specifier: 0.48.0 + specifier: 0.48.1 version: link:../react '@tiptap/core': specifier: ^3.13.0 @@ -5576,10 +5576,10 @@ importers: packages/xl-odt-exporter: dependencies: '@blocknote/core': - specifier: 0.48.0 + specifier: 0.48.1 version: link:../core '@blocknote/xl-multi-column': - specifier: 0.48.0 + specifier: 0.48.1 version: link:../xl-multi-column '@zip.js/zip.js': specifier: ^2.8.8 @@ -5631,13 +5631,13 @@ importers: packages/xl-pdf-exporter: dependencies: '@blocknote/core': - specifier: 0.48.0 + specifier: 0.48.1 version: link:../core '@blocknote/react': - specifier: 0.48.0 + specifier: 0.48.1 version: link:../react '@blocknote/xl-multi-column': - specifier: 0.48.0 + specifier: 0.48.1 version: link:../xl-multi-column '@react-pdf/renderer': specifier: ^4.3.0 From 40ddec425e7af0a85aaabc580be2a8dbb7ba1301 Mon Sep 17 00:00:00 2001 From: Nick Perez Date: Sat, 18 Apr 2026 09:52:07 +0200 Subject: [PATCH 13/76] build(deps): upgrade package dependencies (#2654) --- .github/workflows/build.yml | 1 + .github/workflows/fresh-install-tests.yml | 50 +- .github/workflows/publish.yaml | 1 + docs/package.json | 14 +- examples/01-basic/01-minimal/package.json | 2 +- .../01-basic/02-block-objects/package.json | 2 +- .../01-basic/03-multi-column/package.json | 6 +- .../01-basic/04-default-blocks/package.json | 2 +- .../05-removing-default-blocks/package.json | 2 +- .../06-block-manipulation/package.json | 2 +- .../01-basic/07-selection-blocks/package.json | 2 +- examples/01-basic/08-ariakit/package.json | 2 +- examples/01-basic/09-shadcn/package.json | 2 +- .../01-basic/10-localization/package.json | 2 +- .../11-custom-placeholder/package.json | 2 +- .../01-basic/12-multi-editor/package.json | 2 +- .../13-custom-paste-handler/package.json | 2 +- .../14-editor-scrollable/package.json | 2 +- examples/01-basic/15-shadowdom/package.json | 2 +- .../01-basic/16-read-only-editor/package.json | 2 +- examples/01-basic/testing/package.json | 2 +- .../02-backend/01-file-uploading/package.json | 2 +- .../02-backend/02-saving-loading/package.json | 2 +- examples/02-backend/03-s3/package.json | 8 +- .../package.json | 6 +- .../01-ui-elements-remove/package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../04-side-menu-buttons/package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../11-uppy-file-panel/package.json | 6 +- .../12-static-formatting-toolbar/package.json | 2 +- .../13-custom-ui/package.json | 8 +- .../package.json | 2 +- .../15-advanced-tables/package.json | 2 +- .../16-link-toolbar-buttons/package.json | 2 +- .../17-advanced-tables-2/package.json | 2 +- .../18-drag-n-drop/package.json | 2 +- .../01-theming-dom-attributes/package.json | 2 +- .../04-theming/02-changing-font/package.json | 2 +- .../04-theming/03-theming-css/package.json | 2 +- .../04-theming-css-variables/package.json | 2 +- .../package.json | 2 +- .../04-theming/06-code-block/package.json | 6 +- .../07-custom-code-block/package.json | 18 +- .../01-converting-blocks-to-html/package.json | 2 +- .../package.json | 2 +- .../03-converting-blocks-to-md/package.json | 2 +- .../04-converting-blocks-from-md/package.json | 2 +- .../05-converting-blocks-to-pdf/package.json | 10 +- .../06-converting-blocks-to-docx/package.json | 8 +- .../07-converting-blocks-to-odt/package.json | 8 +- .../package.json | 8 +- .../package.json | 2 +- .../10-static-html-render/package.json | 2 +- .../01-alert-block/package.json | 2 +- .../02-suggestion-menus-mentions/package.json | 2 +- .../03-font-style/package.json | 2 +- .../04-pdf-file-block/package.json | 2 +- .../05-alert-block-full-ux/package.json | 2 +- .../06-toggleable-blocks/package.json | 2 +- .../07-configuring-blocks/package.json | 2 +- .../draggable-inline-content/package.json | 2 +- .../react-custom-blocks/package.json | 2 +- .../react-custom-inline-content/package.json | 2 +- .../react-custom-styles/package.json | 2 +- .../07-collaboration/01-partykit/package.json | 2 +- .../02-liveblocks/package.json | 12 +- .../07-collaboration/03-y-sweet/package.json | 6 +- .../04-electric-sql/package.json | 2 +- .../07-collaboration/05-comments/package.json | 6 +- .../06-comments-with-sidebar/package.json | 2 +- .../07-ghost-writer/package.json | 2 +- .../07-collaboration/08-forking/package.json | 2 +- .../01-tiptap-arrow-conversion/package.json | 6 +- examples/09-ai/01-minimal/package.json | 8 +- examples/09-ai/02-playground/package.json | 8 +- .../03-custom-ai-menu-items/package.json | 6 +- .../09-ai/04-with-collaboration/package.json | 6 +- .../09-ai/05-manual-execution/package.json | 6 +- .../06-client-side-transport/package.json | 10 +- .../09-ai/07-server-persistence/package.json | 8 +- .../react-vanilla-custom-blocks/package.json | 2 +- .../package.json | 2 +- .../react-vanilla-custom-styles/package.json | 2 +- package.json | 2 + packages/ariakit/package.json | 2 +- packages/code-block/package.json | 2 +- packages/core/package.json | 8 +- .../threadstore/yjs/YjsThreadStore.test.ts | 5 +- .../threadstore/yjs/YjsThreadStore.ts | 8 +- .../src/extensions/Placeholder/Placeholder.ts | 4 +- .../tiptap-extensions/UniqueID/UniqueID.ts | 8 +- packages/mantine/package.json | 2 +- packages/react/package.json | 3 +- packages/server-util/package.json | 2 +- packages/shadcn/package.json | 2 +- packages/xl-ai-server/package.json | 2 +- packages/xl-ai/package.json | 2 +- packages/xl-docx-exporter/package.json | 4 +- .../src/docx/__snapshots__/basic/document.xml | 4 +- .../src/docx/__snapshots__/basic/styles.xml | 175 ++ .../docx/__snapshots__/noLocale/styles.xml | 175 ++ .../withCustomOptions/document.xml.rels | 1 + .../docx/__snapshots__/withLocale/styles.xml | 175 ++ .../__snapshots__/withMultiColumn/styles.xml | 175 ++ packages/xl-email-exporter/package.json | 2 +- packages/xl-multi-column/package.json | 2 +- packages/xl-odt-exporter/package.json | 2 +- packages/xl-pdf-exporter/package.json | 2 +- playground/package.json | 2 +- pnpm-lock.yaml | 1428 ++++++++++------- pnpm-workspace.yaml | 1 - tests/nextjs-test-app/setup.sh | 4 +- tests/package.json | 2 +- 120 files changed, 1771 insertions(+), 803 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d84674e284..91b5ca0414 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -10,6 +10,7 @@ env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true NX_SELF_HOSTED_REMOTE_CACHE_ACCESS_TOKEN: ${{ secrets.NX_SELF_HOSTED_REMOTE_CACHE_ACCESS_TOKEN }} NX_SELF_HOSTED_REMOTE_CACHE_SERVER: ${{ secrets.NX_SELF_HOSTED_REMOTE_CACHE_SERVER }} + pnpm_config_store_dir: ./node_modules/.pnpm-store jobs: build: diff --git a/.github/workflows/fresh-install-tests.yml b/.github/workflows/fresh-install-tests.yml index 0d922ebb4b..6596724f76 100644 --- a/.github/workflows/fresh-install-tests.yml +++ b/.github/workflows/fresh-install-tests.yml @@ -1,21 +1,26 @@ name: Fresh Install Tests -# Periodically tests BlockNote with the latest versions of its dependencies -# (within declared ranges), without a lockfile. This catches breakage when a +# Periodically tests BlockNote with the latest versions of its production +# dependencies (within declared semver ranges). This catches breakage when a # new release of a dep like @tiptap/* or prosemirror-* ships and conflicts # with BlockNote's declared ranges — the kind of failure a user would hit when # running `npm install @blocknote/react` in a fresh project. # -# DevDependencies (vitest, vite, typescript, etc.) are still bounded by their -# declared ranges in package.json; only prod/peer deps get freshly resolved. +# Only production dependencies of published (non-private) packages are updated. +# DevDependencies (vitest, vite, typescript, etc.) stay pinned to the lockfile, +# so test tooling churn doesn't cause false positives. on: + push: + branches: + - package-upgrades schedule: - cron: "0 2 * * *" # Daily at 02:00 UTC workflow_dispatch: # Allow manual runs env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true + pnpm_config_store_dir: ./node_modules/.pnpm-store jobs: fresh-install-unit-tests: @@ -35,19 +40,32 @@ jobs: uses: actions/setup-node@v6 with: node-version-file: ".nvmrc" - # Intentionally no pnpm cache — we want a genuinely fresh install - - - id: remove_lockfile - name: Remove lockfile to force fresh dep resolution - # Removing pnpm-lock.yaml causes pnpm to resolve all dependencies to - # the latest versions that satisfy the ranges declared in package.json - # (including pnpm-workspace.yaml overrides). This is equivalent to what - # a new user experiences when installing BlockNote in a blank project. - run: rm pnpm-lock.yaml + # Intentionally no pnpm cache — we want fresh prod dep resolution - id: install_dependencies name: Install dependencies - run: pnpm install --no-frozen-lockfile + run: pnpm install + + - id: update_prod_deps + name: Update prod deps of published packages + # Resolves production dependencies of every published (non-private) + # workspace package to the latest version within their declared semver + # ranges. This simulates what a user gets when running + # `npm install @blocknote/react` in a fresh project. + # DevDependencies are left at their lockfile versions. + run: | + FILTERS=$(node -e " + const fs = require('fs'); + const path = require('path'); + fs.readdirSync('packages').forEach(dir => { + try { + const pkg = JSON.parse(fs.readFileSync(path.join('packages', dir, 'package.json'), 'utf8')); + if (!pkg.private && pkg.name) process.stdout.write('--filter ' + pkg.name + ' '); + } catch {} + }); + ") + echo "Updating prod deps for: $FILTERS" + eval pnpm update --prod $FILTERS - id: build_packages name: Build packages @@ -84,10 +102,10 @@ jobs: failed_step="Install pnpm" elif [ "${{ steps.setup_node.outcome }}" = "failure" ]; then failed_step="Setup Node.js" - elif [ "${{ steps.remove_lockfile.outcome }}" = "failure" ]; then - failed_step="Remove lockfile to force fresh dep resolution" elif [ "${{ steps.install_dependencies.outcome }}" = "failure" ]; then failed_step="Install dependencies" + elif [ "${{ steps.update_prod_deps.outcome }}" = "failure" ]; then + failed_step="Update prod deps of published packages" elif [ "${{ steps.build_packages.outcome }}" = "failure" ]; then failed_step="Build packages" elif [ "${{ steps.run_unit_tests.outcome }}" = "failure" ]; then diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index df34bafa81..280d5a5af1 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -17,6 +17,7 @@ env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true NX_SELF_HOSTED_REMOTE_CACHE_ACCESS_TOKEN: ${{ secrets.NX_SELF_HOSTED_REMOTE_CACHE_ACCESS_TOKEN }} NX_SELF_HOSTED_REMOTE_CACHE_SERVER: ${{ secrets.NX_SELF_HOSTED_REMOTE_CACHE_SERVER }} + pnpm_config_store_dir: ./node_modules/.pnpm-store jobs: publish: diff --git a/docs/package.json b/docs/package.json index 92663722e7..0ffbc251cc 100644 --- a/docs/package.json +++ b/docs/package.json @@ -52,11 +52,11 @@ "@react-email/render": "^2.0.4", "@react-pdf/renderer": "^4.3.0", "@sentry/nextjs": "^10.34.0", - "@shikijs/core": "^3.19.0", - "@shikijs/engine-javascript": "^3.19.0", - "@shikijs/langs-precompiled": "^3.19.0", - "@shikijs/themes": "^3.19.0", - "@shikijs/types": "^3.19.0", + "@shikijs/core": "^4", + "@shikijs/engine-javascript": "^4", + "@shikijs/langs-precompiled": "^4", + "@shikijs/themes": "^4", + "@shikijs/types": "^4", "@tiptap/core": "^3.13.0", "@uppy/core": "^3.13.1", "@uppy/dashboard": "^3.9.1", @@ -94,7 +94,7 @@ "react-icons": "^5.5.0", "react-use-measure": "^2.1.7", "scroll-into-view-if-needed": "^3.1.0", - "shiki": "^3.21.0", + "shiki": "^4", "tailwind-merge": "^3.4.0", "y-partykit": "^0.0.25", "yjs": "^13.6.27", @@ -131,4 +131,4 @@ "tw-animate-css": "^1.4.0", "typescript": "^5.9.3" } -} \ No newline at end of file +} diff --git a/examples/01-basic/01-minimal/package.json b/examples/01-basic/01-minimal/package.json index 89224f97e4..a4654f1055 100644 --- a/examples/01-basic/01-minimal/package.json +++ b/examples/01-basic/01-minimal/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/01-basic/02-block-objects/package.json b/examples/01-basic/02-block-objects/package.json index ed0dc5836b..511eabc477 100644 --- a/examples/01-basic/02-block-objects/package.json +++ b/examples/01-basic/02-block-objects/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/01-basic/03-multi-column/package.json b/examples/01-basic/03-multi-column/package.json index 21b9e8a0c5..482c7409d8 100644 --- a/examples/01-basic/03-multi-column/package.json +++ b/examples/01-basic/03-multi-column/package.json @@ -16,17 +16,17 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", + "@blocknote/xl-multi-column": "latest", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", "react": "^19.2.3", - "react-dom": "^19.2.3", - "@blocknote/xl-multi-column": "latest" + "react-dom": "^19.2.3" }, "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/01-basic/04-default-blocks/package.json b/examples/01-basic/04-default-blocks/package.json index 08793e49b4..6a9647e3b3 100644 --- a/examples/01-basic/04-default-blocks/package.json +++ b/examples/01-basic/04-default-blocks/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/01-basic/05-removing-default-blocks/package.json b/examples/01-basic/05-removing-default-blocks/package.json index 138ad8b165..da2fcfb430 100644 --- a/examples/01-basic/05-removing-default-blocks/package.json +++ b/examples/01-basic/05-removing-default-blocks/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/01-basic/06-block-manipulation/package.json b/examples/01-basic/06-block-manipulation/package.json index 6b9084c282..ed320860bf 100644 --- a/examples/01-basic/06-block-manipulation/package.json +++ b/examples/01-basic/06-block-manipulation/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/01-basic/07-selection-blocks/package.json b/examples/01-basic/07-selection-blocks/package.json index ddf2d33972..1a14f12c53 100644 --- a/examples/01-basic/07-selection-blocks/package.json +++ b/examples/01-basic/07-selection-blocks/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/01-basic/08-ariakit/package.json b/examples/01-basic/08-ariakit/package.json index ef8e104039..97458bab4e 100644 --- a/examples/01-basic/08-ariakit/package.json +++ b/examples/01-basic/08-ariakit/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/01-basic/09-shadcn/package.json b/examples/01-basic/09-shadcn/package.json index a14726d04f..6a9a4be944 100644 --- a/examples/01-basic/09-shadcn/package.json +++ b/examples/01-basic/09-shadcn/package.json @@ -29,6 +29,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/01-basic/10-localization/package.json b/examples/01-basic/10-localization/package.json index 199657a3b6..e48b4958d0 100644 --- a/examples/01-basic/10-localization/package.json +++ b/examples/01-basic/10-localization/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/01-basic/11-custom-placeholder/package.json b/examples/01-basic/11-custom-placeholder/package.json index c9e2821e4b..c0f5029e30 100644 --- a/examples/01-basic/11-custom-placeholder/package.json +++ b/examples/01-basic/11-custom-placeholder/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/01-basic/12-multi-editor/package.json b/examples/01-basic/12-multi-editor/package.json index f22167ce00..1abcaa9561 100644 --- a/examples/01-basic/12-multi-editor/package.json +++ b/examples/01-basic/12-multi-editor/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/01-basic/13-custom-paste-handler/package.json b/examples/01-basic/13-custom-paste-handler/package.json index d1769c38b7..45baefa7b3 100644 --- a/examples/01-basic/13-custom-paste-handler/package.json +++ b/examples/01-basic/13-custom-paste-handler/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/01-basic/14-editor-scrollable/package.json b/examples/01-basic/14-editor-scrollable/package.json index badd216fa5..f4da16d073 100644 --- a/examples/01-basic/14-editor-scrollable/package.json +++ b/examples/01-basic/14-editor-scrollable/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/01-basic/15-shadowdom/package.json b/examples/01-basic/15-shadowdom/package.json index 5c6f67ebce..ce14967311 100644 --- a/examples/01-basic/15-shadowdom/package.json +++ b/examples/01-basic/15-shadowdom/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/01-basic/16-read-only-editor/package.json b/examples/01-basic/16-read-only-editor/package.json index ae15be4b1f..d5546c3d18 100644 --- a/examples/01-basic/16-read-only-editor/package.json +++ b/examples/01-basic/16-read-only-editor/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/01-basic/testing/package.json b/examples/01-basic/testing/package.json index ed8674862a..65638711f8 100644 --- a/examples/01-basic/testing/package.json +++ b/examples/01-basic/testing/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/02-backend/01-file-uploading/package.json b/examples/02-backend/01-file-uploading/package.json index 5032aa352f..0693ef33b2 100644 --- a/examples/02-backend/01-file-uploading/package.json +++ b/examples/02-backend/01-file-uploading/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/02-backend/02-saving-loading/package.json b/examples/02-backend/02-saving-loading/package.json index cb5fbdd0ea..9f1892a12b 100644 --- a/examples/02-backend/02-saving-loading/package.json +++ b/examples/02-backend/02-saving-loading/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/02-backend/03-s3/package.json b/examples/02-backend/03-s3/package.json index b2a2462be8..32f939f061 100644 --- a/examples/02-backend/03-s3/package.json +++ b/examples/02-backend/03-s3/package.json @@ -11,6 +11,8 @@ "preview": "vite preview" }, "dependencies": { + "@aws-sdk/client-s3": "^3.609.0", + "@aws-sdk/s3-request-presigner": "^3.609.0", "@blocknote/ariakit": "latest", "@blocknote/core": "latest", "@blocknote/mantine": "latest", @@ -20,14 +22,12 @@ "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", "react": "^19.2.3", - "react-dom": "^19.2.3", - "@aws-sdk/client-s3": "^3.609.0", - "@aws-sdk/s3-request-presigner": "^3.609.0" + "react-dom": "^19.2.3" }, "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/02-backend/04-rendering-static-documents/package.json b/examples/02-backend/04-rendering-static-documents/package.json index 65c6508e17..14c1dd6aa7 100644 --- a/examples/02-backend/04-rendering-static-documents/package.json +++ b/examples/02-backend/04-rendering-static-documents/package.json @@ -15,18 +15,18 @@ "@blocknote/core": "latest", "@blocknote/mantine": "latest", "@blocknote/react": "latest", + "@blocknote/server-util": "latest", "@blocknote/shadcn": "latest", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", "react": "^19.2.3", - "react-dom": "^19.2.3", - "@blocknote/server-util": "latest" + "react-dom": "^19.2.3" }, "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/03-ui-components/01-ui-elements-remove/package.json b/examples/03-ui-components/01-ui-elements-remove/package.json index 4a1609b9a2..8f2fdb8819 100644 --- a/examples/03-ui-components/01-ui-elements-remove/package.json +++ b/examples/03-ui-components/01-ui-elements-remove/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/03-ui-components/02-formatting-toolbar-buttons/package.json b/examples/03-ui-components/02-formatting-toolbar-buttons/package.json index 9f58b875fb..b8590ff2f0 100644 --- a/examples/03-ui-components/02-formatting-toolbar-buttons/package.json +++ b/examples/03-ui-components/02-formatting-toolbar-buttons/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/03-ui-components/03-formatting-toolbar-block-type-items/package.json b/examples/03-ui-components/03-formatting-toolbar-block-type-items/package.json index 6d55111a4c..cbca1df3e9 100644 --- a/examples/03-ui-components/03-formatting-toolbar-block-type-items/package.json +++ b/examples/03-ui-components/03-formatting-toolbar-block-type-items/package.json @@ -27,6 +27,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/03-ui-components/04-side-menu-buttons/package.json b/examples/03-ui-components/04-side-menu-buttons/package.json index 38f7cbed6a..3f15032a06 100644 --- a/examples/03-ui-components/04-side-menu-buttons/package.json +++ b/examples/03-ui-components/04-side-menu-buttons/package.json @@ -27,6 +27,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/03-ui-components/05-side-menu-drag-handle-items/package.json b/examples/03-ui-components/05-side-menu-drag-handle-items/package.json index 48adc9aaf8..496e00e475 100644 --- a/examples/03-ui-components/05-side-menu-drag-handle-items/package.json +++ b/examples/03-ui-components/05-side-menu-drag-handle-items/package.json @@ -27,6 +27,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/03-ui-components/06-suggestion-menus-slash-menu-items/package.json b/examples/03-ui-components/06-suggestion-menus-slash-menu-items/package.json index ec9d8626bc..50c28fb92b 100644 --- a/examples/03-ui-components/06-suggestion-menus-slash-menu-items/package.json +++ b/examples/03-ui-components/06-suggestion-menus-slash-menu-items/package.json @@ -27,6 +27,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/03-ui-components/07-suggestion-menus-slash-menu-component/package.json b/examples/03-ui-components/07-suggestion-menus-slash-menu-component/package.json index 5f9dd237d7..8c083a5b44 100644 --- a/examples/03-ui-components/07-suggestion-menus-slash-menu-component/package.json +++ b/examples/03-ui-components/07-suggestion-menus-slash-menu-component/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/03-ui-components/08-suggestion-menus-emoji-picker-columns/package.json b/examples/03-ui-components/08-suggestion-menus-emoji-picker-columns/package.json index 34e74a368e..03d7498571 100644 --- a/examples/03-ui-components/08-suggestion-menus-emoji-picker-columns/package.json +++ b/examples/03-ui-components/08-suggestion-menus-emoji-picker-columns/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/03-ui-components/09-suggestion-menus-emoji-picker-component/package.json b/examples/03-ui-components/09-suggestion-menus-emoji-picker-component/package.json index 3d5e2e73a2..245cf75557 100644 --- a/examples/03-ui-components/09-suggestion-menus-emoji-picker-component/package.json +++ b/examples/03-ui-components/09-suggestion-menus-emoji-picker-component/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/03-ui-components/10-suggestion-menus-grid-mentions/package.json b/examples/03-ui-components/10-suggestion-menus-grid-mentions/package.json index f34e554756..0e2a969572 100644 --- a/examples/03-ui-components/10-suggestion-menus-grid-mentions/package.json +++ b/examples/03-ui-components/10-suggestion-menus-grid-mentions/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/03-ui-components/11-uppy-file-panel/package.json b/examples/03-ui-components/11-uppy-file-panel/package.json index 6554773fc5..d65faa9792 100644 --- a/examples/03-ui-components/11-uppy-file-panel/package.json +++ b/examples/03-ui-components/11-uppy-file-panel/package.json @@ -19,8 +19,6 @@ "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", - "react": "^19.2.3", - "react-dom": "^19.2.3", "@uppy/core": "^3.13.1", "@uppy/dashboard": "^3.9.1", "@uppy/drag-drop": "^3.1.1", @@ -32,12 +30,14 @@ "@uppy/status-bar": "^3.1.1", "@uppy/webcam": "^3.4.2", "@uppy/xhr-upload": "^3.4.0", + "react": "^19.2.3", + "react-dom": "^19.2.3", "react-icons": "^5.5.0" }, "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/03-ui-components/12-static-formatting-toolbar/package.json b/examples/03-ui-components/12-static-formatting-toolbar/package.json index acdd1c436e..0aac0b8018 100644 --- a/examples/03-ui-components/12-static-formatting-toolbar/package.json +++ b/examples/03-ui-components/12-static-formatting-toolbar/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/03-ui-components/13-custom-ui/package.json b/examples/03-ui-components/13-custom-ui/package.json index 31f6bfb567..1c45dea04a 100644 --- a/examples/03-ui-components/13-custom-ui/package.json +++ b/examples/03-ui-components/13-custom-ui/package.json @@ -19,15 +19,15 @@ "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", - "react": "^19.2.3", - "react-dom": "^19.2.3", "@mui/icons-material": "^5.16.1", - "@mui/material": "^5.16.1" + "@mui/material": "^5.16.1", + "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": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/03-ui-components/14-experimental-mobile-formatting-toolbar/package.json b/examples/03-ui-components/14-experimental-mobile-formatting-toolbar/package.json index 0524771b08..b6e6ffc841 100644 --- a/examples/03-ui-components/14-experimental-mobile-formatting-toolbar/package.json +++ b/examples/03-ui-components/14-experimental-mobile-formatting-toolbar/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/03-ui-components/15-advanced-tables/package.json b/examples/03-ui-components/15-advanced-tables/package.json index 08d1c49b3c..751bd1f24a 100644 --- a/examples/03-ui-components/15-advanced-tables/package.json +++ b/examples/03-ui-components/15-advanced-tables/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/03-ui-components/16-link-toolbar-buttons/package.json b/examples/03-ui-components/16-link-toolbar-buttons/package.json index c6033b6cde..8846d27e37 100644 --- a/examples/03-ui-components/16-link-toolbar-buttons/package.json +++ b/examples/03-ui-components/16-link-toolbar-buttons/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/03-ui-components/17-advanced-tables-2/package.json b/examples/03-ui-components/17-advanced-tables-2/package.json index 626ab74ae8..a4e92048fd 100644 --- a/examples/03-ui-components/17-advanced-tables-2/package.json +++ b/examples/03-ui-components/17-advanced-tables-2/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/03-ui-components/18-drag-n-drop/package.json b/examples/03-ui-components/18-drag-n-drop/package.json index beab8775dc..b2e4aedc64 100644 --- a/examples/03-ui-components/18-drag-n-drop/package.json +++ b/examples/03-ui-components/18-drag-n-drop/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/04-theming/01-theming-dom-attributes/package.json b/examples/04-theming/01-theming-dom-attributes/package.json index 4813aab27f..a8ad97733b 100644 --- a/examples/04-theming/01-theming-dom-attributes/package.json +++ b/examples/04-theming/01-theming-dom-attributes/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/04-theming/02-changing-font/package.json b/examples/04-theming/02-changing-font/package.json index 6f1e492bda..44eaeed6aa 100644 --- a/examples/04-theming/02-changing-font/package.json +++ b/examples/04-theming/02-changing-font/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/04-theming/03-theming-css/package.json b/examples/04-theming/03-theming-css/package.json index 2bcb06c4bd..5179136589 100644 --- a/examples/04-theming/03-theming-css/package.json +++ b/examples/04-theming/03-theming-css/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/04-theming/04-theming-css-variables/package.json b/examples/04-theming/04-theming-css-variables/package.json index 3db574639e..1ade051cac 100644 --- a/examples/04-theming/04-theming-css-variables/package.json +++ b/examples/04-theming/04-theming-css-variables/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/04-theming/05-theming-css-variables-code/package.json b/examples/04-theming/05-theming-css-variables-code/package.json index 8837b9cc91..b0cd56da5c 100644 --- a/examples/04-theming/05-theming-css-variables-code/package.json +++ b/examples/04-theming/05-theming-css-variables-code/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/04-theming/06-code-block/package.json b/examples/04-theming/06-code-block/package.json index 96b5dcc7a1..dd4d7472f5 100644 --- a/examples/04-theming/06-code-block/package.json +++ b/examples/04-theming/06-code-block/package.json @@ -12,6 +12,7 @@ }, "dependencies": { "@blocknote/ariakit": "latest", + "@blocknote/code-block": "latest", "@blocknote/core": "latest", "@blocknote/mantine": "latest", "@blocknote/react": "latest", @@ -20,13 +21,12 @@ "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", "react": "^19.2.3", - "react-dom": "^19.2.3", - "@blocknote/code-block": "latest" + "react-dom": "^19.2.3" }, "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/04-theming/07-custom-code-block/package.json b/examples/04-theming/07-custom-code-block/package.json index 1987c4f5be..df3d173512 100644 --- a/examples/04-theming/07-custom-code-block/package.json +++ b/examples/04-theming/07-custom-code-block/package.json @@ -12,6 +12,7 @@ }, "dependencies": { "@blocknote/ariakit": "latest", + "@blocknote/code-block": "latest", "@blocknote/core": "latest", "@blocknote/mantine": "latest", "@blocknote/react": "latest", @@ -19,19 +20,18 @@ "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", + "@shikijs/core": "^4", + "@shikijs/engine-javascript": "^4", + "@shikijs/langs-precompiled": "^4", + "@shikijs/themes": "^4", + "@shikijs/types": "^4", "react": "^19.2.3", - "react-dom": "^19.2.3", - "@blocknote/code-block": "latest", - "@shikijs/core": "^3.19.0", - "@shikijs/engine-javascript": "^3.19.0", - "@shikijs/langs-precompiled": "^3.19.0", - "@shikijs/themes": "^3.19.0", - "@shikijs/types": "^3.19.0" + "react-dom": "^19.2.3" }, "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } -} \ No newline at end of file +} diff --git a/examples/05-interoperability/01-converting-blocks-to-html/package.json b/examples/05-interoperability/01-converting-blocks-to-html/package.json index f44ad7407a..a799c20758 100644 --- a/examples/05-interoperability/01-converting-blocks-to-html/package.json +++ b/examples/05-interoperability/01-converting-blocks-to-html/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/05-interoperability/02-converting-blocks-from-html/package.json b/examples/05-interoperability/02-converting-blocks-from-html/package.json index 209df539e9..b12bb5efd9 100644 --- a/examples/05-interoperability/02-converting-blocks-from-html/package.json +++ b/examples/05-interoperability/02-converting-blocks-from-html/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/05-interoperability/03-converting-blocks-to-md/package.json b/examples/05-interoperability/03-converting-blocks-to-md/package.json index 6e87a51ce6..408cb8dac9 100644 --- a/examples/05-interoperability/03-converting-blocks-to-md/package.json +++ b/examples/05-interoperability/03-converting-blocks-to-md/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/05-interoperability/04-converting-blocks-from-md/package.json b/examples/05-interoperability/04-converting-blocks-from-md/package.json index afe2cdd8c4..0d4bbb2359 100644 --- a/examples/05-interoperability/04-converting-blocks-from-md/package.json +++ b/examples/05-interoperability/04-converting-blocks-from-md/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/05-interoperability/05-converting-blocks-to-pdf/package.json b/examples/05-interoperability/05-converting-blocks-to-pdf/package.json index ca44049852..a470b3892e 100644 --- a/examples/05-interoperability/05-converting-blocks-to-pdf/package.json +++ b/examples/05-interoperability/05-converting-blocks-to-pdf/package.json @@ -16,19 +16,19 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", + "@blocknote/xl-multi-column": "latest", + "@blocknote/xl-pdf-exporter": "latest", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", + "@react-pdf/renderer": "^4.3.0", "react": "^19.2.3", - "react-dom": "^19.2.3", - "@blocknote/xl-pdf-exporter": "latest", - "@blocknote/xl-multi-column": "latest", - "@react-pdf/renderer": "^4.3.0" + "react-dom": "^19.2.3" }, "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/05-interoperability/06-converting-blocks-to-docx/package.json b/examples/05-interoperability/06-converting-blocks-to-docx/package.json index b9be624d8e..dead9892bb 100644 --- a/examples/05-interoperability/06-converting-blocks-to-docx/package.json +++ b/examples/05-interoperability/06-converting-blocks-to-docx/package.json @@ -16,18 +16,18 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", + "@blocknote/xl-docx-exporter": "latest", + "@blocknote/xl-multi-column": "latest", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", "react": "^19.2.3", - "react-dom": "^19.2.3", - "@blocknote/xl-docx-exporter": "latest", - "@blocknote/xl-multi-column": "latest" + "react-dom": "^19.2.3" }, "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/05-interoperability/07-converting-blocks-to-odt/package.json b/examples/05-interoperability/07-converting-blocks-to-odt/package.json index 29c39b7784..afc26ae220 100644 --- a/examples/05-interoperability/07-converting-blocks-to-odt/package.json +++ b/examples/05-interoperability/07-converting-blocks-to-odt/package.json @@ -16,18 +16,18 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", + "@blocknote/xl-multi-column": "latest", + "@blocknote/xl-odt-exporter": "latest", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", "react": "^19.2.3", - "react-dom": "^19.2.3", - "@blocknote/xl-odt-exporter": "latest", - "@blocknote/xl-multi-column": "latest" + "react-dom": "^19.2.3" }, "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/05-interoperability/08-converting-blocks-to-react-email/package.json b/examples/05-interoperability/08-converting-blocks-to-react-email/package.json index bee26df4ba..d5a60f1f1e 100644 --- a/examples/05-interoperability/08-converting-blocks-to-react-email/package.json +++ b/examples/05-interoperability/08-converting-blocks-to-react-email/package.json @@ -16,18 +16,18 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", + "@blocknote/xl-email-exporter": "latest", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", + "@react-email/render": "^2.0.4", "react": "^19.2.3", - "react-dom": "^19.2.3", - "@blocknote/xl-email-exporter": "latest", - "@react-email/render": "^2.0.4" + "react-dom": "^19.2.3" }, "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/05-interoperability/09-blocks-to-html-static-render/package.json b/examples/05-interoperability/09-blocks-to-html-static-render/package.json index e81a7c7cd2..c946e12a7c 100644 --- a/examples/05-interoperability/09-blocks-to-html-static-render/package.json +++ b/examples/05-interoperability/09-blocks-to-html-static-render/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/05-interoperability/10-static-html-render/package.json b/examples/05-interoperability/10-static-html-render/package.json index 4e53a9b53c..b49d1f5981 100644 --- a/examples/05-interoperability/10-static-html-render/package.json +++ b/examples/05-interoperability/10-static-html-render/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/06-custom-schema/01-alert-block/package.json b/examples/06-custom-schema/01-alert-block/package.json index 99571398f4..e35a932761 100644 --- a/examples/06-custom-schema/01-alert-block/package.json +++ b/examples/06-custom-schema/01-alert-block/package.json @@ -27,6 +27,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/06-custom-schema/02-suggestion-menus-mentions/package.json b/examples/06-custom-schema/02-suggestion-menus-mentions/package.json index 21ce0ea399..07e4d59f5b 100644 --- a/examples/06-custom-schema/02-suggestion-menus-mentions/package.json +++ b/examples/06-custom-schema/02-suggestion-menus-mentions/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/06-custom-schema/03-font-style/package.json b/examples/06-custom-schema/03-font-style/package.json index 7c8d9ed3c6..dc3cd9dd43 100644 --- a/examples/06-custom-schema/03-font-style/package.json +++ b/examples/06-custom-schema/03-font-style/package.json @@ -27,6 +27,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/06-custom-schema/04-pdf-file-block/package.json b/examples/06-custom-schema/04-pdf-file-block/package.json index c0d01b863a..8008b54fe3 100644 --- a/examples/06-custom-schema/04-pdf-file-block/package.json +++ b/examples/06-custom-schema/04-pdf-file-block/package.json @@ -27,6 +27,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/06-custom-schema/05-alert-block-full-ux/package.json b/examples/06-custom-schema/05-alert-block-full-ux/package.json index f76fa036ec..c93d048860 100644 --- a/examples/06-custom-schema/05-alert-block-full-ux/package.json +++ b/examples/06-custom-schema/05-alert-block-full-ux/package.json @@ -27,6 +27,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/06-custom-schema/06-toggleable-blocks/package.json b/examples/06-custom-schema/06-toggleable-blocks/package.json index b876e1e27d..e684cd374f 100644 --- a/examples/06-custom-schema/06-toggleable-blocks/package.json +++ b/examples/06-custom-schema/06-toggleable-blocks/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/06-custom-schema/07-configuring-blocks/package.json b/examples/06-custom-schema/07-configuring-blocks/package.json index 8a4cf21a45..ba937508ac 100644 --- a/examples/06-custom-schema/07-configuring-blocks/package.json +++ b/examples/06-custom-schema/07-configuring-blocks/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/06-custom-schema/draggable-inline-content/package.json b/examples/06-custom-schema/draggable-inline-content/package.json index 64c0c8ffd2..4ca27aa621 100644 --- a/examples/06-custom-schema/draggable-inline-content/package.json +++ b/examples/06-custom-schema/draggable-inline-content/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/06-custom-schema/react-custom-blocks/package.json b/examples/06-custom-schema/react-custom-blocks/package.json index efccb6cdff..38f6da8c26 100644 --- a/examples/06-custom-schema/react-custom-blocks/package.json +++ b/examples/06-custom-schema/react-custom-blocks/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/06-custom-schema/react-custom-inline-content/package.json b/examples/06-custom-schema/react-custom-inline-content/package.json index c374ec7298..af2eec603b 100644 --- a/examples/06-custom-schema/react-custom-inline-content/package.json +++ b/examples/06-custom-schema/react-custom-inline-content/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/06-custom-schema/react-custom-styles/package.json b/examples/06-custom-schema/react-custom-styles/package.json index 3268d5a870..0234a12b26 100644 --- a/examples/06-custom-schema/react-custom-styles/package.json +++ b/examples/06-custom-schema/react-custom-styles/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/07-collaboration/01-partykit/package.json b/examples/07-collaboration/01-partykit/package.json index 783f846b0c..99ffd8432f 100644 --- a/examples/07-collaboration/01-partykit/package.json +++ b/examples/07-collaboration/01-partykit/package.json @@ -28,6 +28,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/07-collaboration/02-liveblocks/package.json b/examples/07-collaboration/02-liveblocks/package.json index b31214a2c6..8da1946fac 100644 --- a/examples/07-collaboration/02-liveblocks/package.json +++ b/examples/07-collaboration/02-liveblocks/package.json @@ -16,22 +16,22 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", - "react": "^19.2.3", - "react-dom": "^19.2.3", "@liveblocks/client": "^3.17.0", "@liveblocks/react": "^3.17.0", "@liveblocks/react-blocknote": "^3.17.0", "@liveblocks/react-tiptap": "^3.17.0", "@liveblocks/react-ui": "^3.17.0", + "@mantine/core": "^8.3.11", + "@mantine/hooks": "^8.3.11", + "@mantine/utils": "^6.0.22", + "react": "^19.2.3", + "react-dom": "^19.2.3", "yjs": "^13.6.27" }, "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/07-collaboration/03-y-sweet/package.json b/examples/07-collaboration/03-y-sweet/package.json index 34f28d0324..8270d8195d 100644 --- a/examples/07-collaboration/03-y-sweet/package.json +++ b/examples/07-collaboration/03-y-sweet/package.json @@ -19,14 +19,14 @@ "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", + "@y-sweet/react": "^0.6.3", "react": "^19.2.3", - "react-dom": "^19.2.3", - "@y-sweet/react": "^0.6.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": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/07-collaboration/04-electric-sql/package.json b/examples/07-collaboration/04-electric-sql/package.json index e0a7659418..ed30197d66 100644 --- a/examples/07-collaboration/04-electric-sql/package.json +++ b/examples/07-collaboration/04-electric-sql/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/07-collaboration/05-comments/package.json b/examples/07-collaboration/05-comments/package.json index 8b7c734b09..7f675d3e2d 100644 --- a/examples/07-collaboration/05-comments/package.json +++ b/examples/07-collaboration/05-comments/package.json @@ -19,14 +19,14 @@ "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", + "@y-sweet/react": "^0.6.3", "react": "^19.2.3", - "react-dom": "^19.2.3", - "@y-sweet/react": "^0.6.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": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/07-collaboration/06-comments-with-sidebar/package.json b/examples/07-collaboration/06-comments-with-sidebar/package.json index 284754cb51..67f4ead0b9 100644 --- a/examples/07-collaboration/06-comments-with-sidebar/package.json +++ b/examples/07-collaboration/06-comments-with-sidebar/package.json @@ -28,6 +28,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/07-collaboration/07-ghost-writer/package.json b/examples/07-collaboration/07-ghost-writer/package.json index aea7f687a2..a8f3e4d13d 100644 --- a/examples/07-collaboration/07-ghost-writer/package.json +++ b/examples/07-collaboration/07-ghost-writer/package.json @@ -28,6 +28,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/07-collaboration/08-forking/package.json b/examples/07-collaboration/08-forking/package.json index 4334bf1c93..3702a49a69 100644 --- a/examples/07-collaboration/08-forking/package.json +++ b/examples/07-collaboration/08-forking/package.json @@ -28,6 +28,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/08-extensions/01-tiptap-arrow-conversion/package.json b/examples/08-extensions/01-tiptap-arrow-conversion/package.json index 0646d11c8a..5bca11ea17 100644 --- a/examples/08-extensions/01-tiptap-arrow-conversion/package.json +++ b/examples/08-extensions/01-tiptap-arrow-conversion/package.json @@ -19,14 +19,14 @@ "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", + "@tiptap/core": "^3.13.0", "react": "^19.2.3", - "react-dom": "^19.2.3", - "@tiptap/core": "^3.13.0" + "react-dom": "^19.2.3" }, "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/09-ai/01-minimal/package.json b/examples/09-ai/01-minimal/package.json index e084fc9c36..92c27364e7 100644 --- a/examples/09-ai/01-minimal/package.json +++ b/examples/09-ai/01-minimal/package.json @@ -16,18 +16,18 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", + "@blocknote/xl-ai": "latest", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", + "ai": "^6.0.5", "react": "^19.2.3", - "react-dom": "^19.2.3", - "@blocknote/xl-ai": "latest", - "ai": "^6.0.5" + "react-dom": "^19.2.3" }, "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/09-ai/02-playground/package.json b/examples/09-ai/02-playground/package.json index 87eac698a0..ed3c58dab8 100644 --- a/examples/09-ai/02-playground/package.json +++ b/examples/09-ai/02-playground/package.json @@ -16,18 +16,18 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", + "@blocknote/xl-ai": "latest", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", + "ai": "^6.0.5", "react": "^19.2.3", - "react-dom": "^19.2.3", - "@blocknote/xl-ai": "latest", - "ai": "^6.0.5" + "react-dom": "^19.2.3" }, "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/09-ai/03-custom-ai-menu-items/package.json b/examples/09-ai/03-custom-ai-menu-items/package.json index 9e9ad4a716..fb628a4aa9 100644 --- a/examples/09-ai/03-custom-ai-menu-items/package.json +++ b/examples/09-ai/03-custom-ai-menu-items/package.json @@ -16,19 +16,19 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", + "@blocknote/xl-ai": "latest", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", + "ai": "^6.0.5", "react": "^19.2.3", "react-dom": "^19.2.3", - "@blocknote/xl-ai": "latest", - "ai": "^6.0.5", "react-icons": "^5.5.0" }, "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/09-ai/04-with-collaboration/package.json b/examples/09-ai/04-with-collaboration/package.json index b22bc18e53..75daec4c9f 100644 --- a/examples/09-ai/04-with-collaboration/package.json +++ b/examples/09-ai/04-with-collaboration/package.json @@ -16,13 +16,13 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", + "@blocknote/xl-ai": "latest", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", + "ai": "^6.0.5", "react": "^19.2.3", "react-dom": "^19.2.3", - "@blocknote/xl-ai": "latest", - "ai": "^6.0.5", "y-partykit": "^0.0.25", "yjs": "^13.6.27" }, @@ -30,6 +30,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/09-ai/05-manual-execution/package.json b/examples/09-ai/05-manual-execution/package.json index 53cce0227e..a1b130faa8 100644 --- a/examples/09-ai/05-manual-execution/package.json +++ b/examples/09-ai/05-manual-execution/package.json @@ -16,13 +16,13 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", + "@blocknote/xl-ai": "latest", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", + "ai": "^6.0.5", "react": "^19.2.3", "react-dom": "^19.2.3", - "@blocknote/xl-ai": "latest", - "ai": "^6.0.5", "y-partykit": "^0.0.25", "yjs": "^13.6.27" }, @@ -30,6 +30,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/09-ai/06-client-side-transport/package.json b/examples/09-ai/06-client-side-transport/package.json index 1d40f3c896..8cc1777300 100644 --- a/examples/09-ai/06-client-side-transport/package.json +++ b/examples/09-ai/06-client-side-transport/package.json @@ -11,24 +11,24 @@ "preview": "vite preview" }, "dependencies": { + "@ai-sdk/groq": "^3.0.2", "@blocknote/ariakit": "latest", "@blocknote/core": "latest", "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", + "@blocknote/xl-ai": "latest", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", + "ai": "^6.0.5", "react": "^19.2.3", - "react-dom": "^19.2.3", - "@ai-sdk/groq": "^3.0.2", - "@blocknote/xl-ai": "latest", - "ai": "^6.0.5" + "react-dom": "^19.2.3" }, "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/09-ai/07-server-persistence/package.json b/examples/09-ai/07-server-persistence/package.json index 123c3896e4..0ee494038b 100644 --- a/examples/09-ai/07-server-persistence/package.json +++ b/examples/09-ai/07-server-persistence/package.json @@ -16,18 +16,18 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", + "@blocknote/xl-ai": "latest", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", + "ai": "^6.0.5", "react": "^19.2.3", - "react-dom": "^19.2.3", - "@blocknote/xl-ai": "latest", - "ai": "^6.0.5" + "react-dom": "^19.2.3" }, "devDependencies": { "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/vanilla-js/react-vanilla-custom-blocks/package.json b/examples/vanilla-js/react-vanilla-custom-blocks/package.json index 3415a29afd..11a3db66c0 100644 --- a/examples/vanilla-js/react-vanilla-custom-blocks/package.json +++ b/examples/vanilla-js/react-vanilla-custom-blocks/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/vanilla-js/react-vanilla-custom-inline-content/package.json b/examples/vanilla-js/react-vanilla-custom-inline-content/package.json index 8bec01b7ad..61cc3e1e6a 100644 --- a/examples/vanilla-js/react-vanilla-custom-inline-content/package.json +++ b/examples/vanilla-js/react-vanilla-custom-inline-content/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/examples/vanilla-js/react-vanilla-custom-styles/package.json b/examples/vanilla-js/react-vanilla-custom-styles/package.json index f32a8be790..7fd6ab2160 100644 --- a/examples/vanilla-js/react-vanilla-custom-styles/package.json +++ b/examples/vanilla-js/react-vanilla-custom-styles/package.json @@ -26,6 +26,6 @@ "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", "@vitejs/plugin-react": "^6.0.1", - "vite": "^8.0.3" + "vite": "^8.0.8" } } \ No newline at end of file diff --git a/package.json b/package.json index e9bb26f510..f28cc4977b 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,8 @@ "unrs-resolver" ], "overrides": { + "vitest": "4.1.2", + "@vitest/runner": "4.1.2", "msw": "2.11.5", "ai": "6.0.5", "@ai-sdk/anthropic": "3.0.2", diff --git a/packages/ariakit/package.json b/packages/ariakit/package.json index fc9af085c2..856fc52e8b 100644 --- a/packages/ariakit/package.json +++ b/packages/ariakit/package.json @@ -70,7 +70,7 @@ "rimraf": "^5.0.10", "rollup-plugin-webpack-stats": "^0.2.6", "typescript": "^5.9.3", - "vite": "^8.0.3", + "vite": "^8.0.8", "vite-plugin-eslint": "^1.8.1", "vite-plugin-externalize-deps": "^0.10.0" }, diff --git a/packages/code-block/package.json b/packages/code-block/package.json index bc2b626fca..10a4c925ac 100644 --- a/packages/code-block/package.json +++ b/packages/code-block/package.json @@ -60,7 +60,7 @@ "eslint": "^8.57.1", "rollup-plugin-webpack-stats": "^0.2.6", "typescript": "^5.9.3", - "vite": "^8.0.3", + "vite": "^8.0.8", "vite-plugin-eslint": "^1.8.1", "vitest": "^4.1.2" }, diff --git a/packages/core/package.json b/packages/core/package.json index 96381f9e9b..f20292ad57 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -108,6 +108,7 @@ "emoji-mart": "^5.6.0", "fast-deep-equal": "^3.1.3", "hast-util-from-dom": "^5.0.1", + "lib0": "^0.2.99", "prosemirror-highlight": "^0.15.1", "prosemirror-model": "^1.25.4", "prosemirror-state": "^1.4.4", @@ -124,21 +125,18 @@ "remark-stringify": "^11.0.0", "unified": "^11.0.5", "unist-util-visit": "^5.0.0", - "uuid": "^8.3.2", "y-prosemirror": "^1.3.7", "y-protocols": "^1.0.6", "yjs": "^13.6.27" }, "devDependencies": { - "@types/emoji-mart": "^3.0.14", "@types/hast": "^3.0.4", - "@types/uuid": "^8.3.4", "eslint": "^8.57.1", - "jsdom": "^25.0.1", + "jsdom": "^29.0.2", "rimraf": "^5.0.10", "rollup-plugin-webpack-stats": "^0.2.6", "typescript": "^5.9.3", - "vite": "^8.0.3", + "vite": "^8.0.8", "vite-plugin-eslint": "^1.8.1", "vitest": "^4.1.2" }, diff --git a/packages/core/src/comments/threadstore/yjs/YjsThreadStore.test.ts b/packages/core/src/comments/threadstore/yjs/YjsThreadStore.test.ts index 8f967eb547..b73b7c1ec8 100644 --- a/packages/core/src/comments/threadstore/yjs/YjsThreadStore.test.ts +++ b/packages/core/src/comments/threadstore/yjs/YjsThreadStore.test.ts @@ -6,8 +6,9 @@ import { YjsThreadStore } from "./YjsThreadStore.js"; // Mock UUID to generate sequential IDs let mockUuidCounter = 0; -vi.mock("uuid", () => ({ - v4: () => `mocked-uuid-${++mockUuidCounter}`, +vi.mock("lib0/random", async (importOriginal) => ({ + ...(await importOriginal()), + uuidv4: () => `mocked-uuid-${++mockUuidCounter}`, })); describe("YjsThreadStore", () => { diff --git a/packages/core/src/comments/threadstore/yjs/YjsThreadStore.ts b/packages/core/src/comments/threadstore/yjs/YjsThreadStore.ts index 7504e43fb1..f9754c6063 100644 --- a/packages/core/src/comments/threadstore/yjs/YjsThreadStore.ts +++ b/packages/core/src/comments/threadstore/yjs/YjsThreadStore.ts @@ -1,4 +1,4 @@ -import { v4 } from "uuid"; +import { uuidv4 } from "lib0/random"; import * as Y from "yjs"; import { CommentBody, CommentData, ThreadData } from "../../types.js"; import { ThreadStoreAuth } from "../ThreadStoreAuth.js"; @@ -57,7 +57,7 @@ export class YjsThreadStore extends YjsThreadStoreBase { const comment: CommentData = { type: "comment", - id: v4(), + id: uuidv4(), userId: this.userId, createdAt: date, updatedAt: date, @@ -68,7 +68,7 @@ export class YjsThreadStore extends YjsThreadStoreBase { const thread: ThreadData = { type: "thread", - id: v4(), + id: uuidv4(), createdAt: date, updatedAt: date, comments: [comment], @@ -105,7 +105,7 @@ export class YjsThreadStore extends YjsThreadStoreBase { const date = new Date(); const comment: CommentData = { type: "comment", - id: v4(), + id: uuidv4(), userId: this.userId, createdAt: date, updatedAt: date, diff --git a/packages/core/src/extensions/Placeholder/Placeholder.ts b/packages/core/src/extensions/Placeholder/Placeholder.ts index 4a3185e353..b8ff2e14ed 100644 --- a/packages/core/src/extensions/Placeholder/Placeholder.ts +++ b/packages/core/src/extensions/Placeholder/Placeholder.ts @@ -1,6 +1,6 @@ import { Plugin, PluginKey } from "prosemirror-state"; import { Decoration, DecorationSet } from "prosemirror-view"; -import { v4 } from "uuid"; +import { uuidv4 } from "lib0/random"; import { createExtension, ExtensionOptions, @@ -23,7 +23,7 @@ export const PlaceholderExtension = createExtension( new Plugin({ key: PLUGIN_KEY, view: (view) => { - const uniqueEditorSelector = `placeholder-selector-${v4()}`; + const uniqueEditorSelector = `placeholder-selector-${uuidv4()}`; view.dom.classList.add(uniqueEditorSelector); const styleEl = document.createElement("style"); diff --git a/packages/core/src/extensions/tiptap-extensions/UniqueID/UniqueID.ts b/packages/core/src/extensions/tiptap-extensions/UniqueID/UniqueID.ts index 2f19981f89..a3ce6f3828 100644 --- a/packages/core/src/extensions/tiptap-extensions/UniqueID/UniqueID.ts +++ b/packages/core/src/extensions/tiptap-extensions/UniqueID/UniqueID.ts @@ -6,7 +6,7 @@ import { } from "@tiptap/core"; import { Fragment, Slice } from "prosemirror-model"; import { Plugin, PluginKey } from "prosemirror-state"; -import { v4 } from "uuid"; +import { uuidv4 } from "lib0/random"; /** * Code from Tiptap UniqueID extension (https://tiptap.dev/api/extensions/unique-id) @@ -51,9 +51,7 @@ const UniqueID = Extension.create({ attributeName: "id", types: [], setIdAttribute: false, - isWithinEditor: undefined as - | ((element: Element) => boolean) - | undefined, + isWithinEditor: undefined as ((element: Element) => boolean) | undefined, generateID: () => { // Use mock ID if tests are running. if (typeof window !== "undefined" && (window as any).__TEST_OPTIONS) { @@ -67,7 +65,7 @@ const UniqueID = Extension.create({ return testOptions.mockID.toString() as string; } - return v4(); + return uuidv4(); }, filterTransaction: null, }; diff --git a/packages/mantine/package.json b/packages/mantine/package.json index 4d65cd11e6..4dd1d60a54 100644 --- a/packages/mantine/package.json +++ b/packages/mantine/package.json @@ -75,7 +75,7 @@ "rimraf": "^5.0.10", "rollup-plugin-webpack-stats": "^0.2.6", "typescript": "^5.9.3", - "vite": "^8.0.3", + "vite": "^8.0.8", "vite-plugin-eslint": "^1.8.1", "vite-plugin-externalize-deps": "^0.10.0" }, diff --git a/packages/react/package.json b/packages/react/package.json index 06f6d45956..3d006e0c51 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -74,7 +74,6 @@ "use-sync-external-store": "1.6.0" }, "devDependencies": { - "@types/emoji-mart": "^3.0.14", "@types/lodash.foreach": "^4.5.9", "@types/lodash.groupby": "^4.6.9", "@types/lodash.merge": "^4.6.9", @@ -87,7 +86,7 @@ "rimraf": "^5.0.10", "rollup-plugin-webpack-stats": "^0.2.6", "typescript": "^5.9.3", - "vite": "^8.0.3", + "vite": "^8.0.8", "vite-plugin-eslint": "^1.8.1", "vite-plugin-externalize-deps": "^0.10.0", "vitest": "^4.1.2" diff --git a/packages/server-util/package.json b/packages/server-util/package.json index 490ac6e7b8..2488074ef8 100644 --- a/packages/server-util/package.json +++ b/packages/server-util/package.json @@ -74,7 +74,7 @@ "react-dom": "^19.2.5", "rollup-plugin-webpack-stats": "^0.2.6", "typescript": "^5.9.3", - "vite": "^8.0.3", + "vite": "^8.0.8", "vite-plugin-eslint": "^1.8.1", "vitest": "^4.1.2" }, diff --git a/packages/shadcn/package.json b/packages/shadcn/package.json index 6c785e8899..b88d7f6024 100644 --- a/packages/shadcn/package.json +++ b/packages/shadcn/package.json @@ -86,7 +86,7 @@ "rimraf": "^5.0.10", "rollup-plugin-webpack-stats": "^0.2.6", "typescript": "^5.9.3", - "vite": "^8.0.3", + "vite": "^8.0.8", "vite-plugin-eslint": "^1.8.1", "vite-plugin-externalize-deps": "^0.10.0" }, diff --git a/packages/xl-ai-server/package.json b/packages/xl-ai-server/package.json index a8806e46f4..fe781e4ecb 100644 --- a/packages/xl-ai-server/package.json +++ b/packages/xl-ai-server/package.json @@ -60,7 +60,7 @@ "rollup-plugin-webpack-stats": "^0.2.6", "typescript": "^5.9.3", "undici": "^6.22.0", - "vite": "^8.0.3", + "vite": "^8.0.8", "vite-node": "^6.0.0", "vite-plugin-eslint": "^1.8.1", "vite-plugin-externalize-deps": "^0.10.0", diff --git a/packages/xl-ai/package.json b/packages/xl-ai/package.json index e2b4fb93dc..81e74f0479 100644 --- a/packages/xl-ai/package.json +++ b/packages/xl-ai/package.json @@ -120,7 +120,7 @@ "rollup-plugin-webpack-stats": "^0.2.6", "typescript": "^5.9.3", "undici": "^6.22.0", - "vite": "^8.0.3", + "vite": "^8.0.8", "vite-plugin-eslint": "^1.8.1", "vite-plugin-externalize-deps": "^0.10.0", "vitest": "^4.1.2" diff --git a/packages/xl-docx-exporter/package.json b/packages/xl-docx-exporter/package.json index abcdc0b945..fe45561eda 100644 --- a/packages/xl-docx-exporter/package.json +++ b/packages/xl-docx-exporter/package.json @@ -60,7 +60,7 @@ "@blocknote/core": "0.48.1", "@blocknote/xl-multi-column": "0.48.1", "buffer": "^6.0.3", - "docx": "^9.5.1", + "docx": "^9.6.1", "image-meta": "^0.2.2" }, "devDependencies": { @@ -72,7 +72,7 @@ "react-dom": "^19.2.5", "rollup-plugin-webpack-stats": "^0.2.6", "typescript": "^5.9.3", - "vite": "^8.0.3", + "vite": "^8.0.8", "vite-plugin-eslint": "^1.8.1", "vitest": "^4.1.2", "xml-formatter": "^3.6.7" diff --git a/packages/xl-docx-exporter/src/docx/__snapshots__/basic/document.xml b/packages/xl-docx-exporter/src/docx/__snapshots__/basic/document.xml index a0c8f43c77..4a9074e6eb 100644 --- a/packages/xl-docx-exporter/src/docx/__snapshots__/basic/document.xml +++ b/packages/xl-docx-exporter/src/docx/__snapshots__/basic/document.xml @@ -386,7 +386,7 @@ - + @@ -439,7 +439,7 @@ - + diff --git a/packages/xl-docx-exporter/src/docx/__snapshots__/basic/styles.xml b/packages/xl-docx-exporter/src/docx/__snapshots__/basic/styles.xml index 5eabb2d389..aa72ae1b8c 100644 --- a/packages/xl-docx-exporter/src/docx/__snapshots__/basic/styles.xml +++ b/packages/xl-docx-exporter/src/docx/__snapshots__/basic/styles.xml @@ -1,5 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/xl-docx-exporter/src/docx/__snapshots__/noLocale/styles.xml b/packages/xl-docx-exporter/src/docx/__snapshots__/noLocale/styles.xml index 4c2e627de4..37afb1a8c4 100644 --- a/packages/xl-docx-exporter/src/docx/__snapshots__/noLocale/styles.xml +++ b/packages/xl-docx-exporter/src/docx/__snapshots__/noLocale/styles.xml @@ -1,5 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/xl-docx-exporter/src/docx/__snapshots__/withCustomOptions/document.xml.rels b/packages/xl-docx-exporter/src/docx/__snapshots__/withCustomOptions/document.xml.rels index 327b4255a1..0cbc6a3c32 100644 --- a/packages/xl-docx-exporter/src/docx/__snapshots__/withCustomOptions/document.xml.rels +++ b/packages/xl-docx-exporter/src/docx/__snapshots__/withCustomOptions/document.xml.rels @@ -3,6 +3,7 @@ + diff --git a/packages/xl-docx-exporter/src/docx/__snapshots__/withLocale/styles.xml b/packages/xl-docx-exporter/src/docx/__snapshots__/withLocale/styles.xml index 45edc06326..f7a7f79498 100644 --- a/packages/xl-docx-exporter/src/docx/__snapshots__/withLocale/styles.xml +++ b/packages/xl-docx-exporter/src/docx/__snapshots__/withLocale/styles.xml @@ -1,5 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/xl-docx-exporter/src/docx/__snapshots__/withMultiColumn/styles.xml b/packages/xl-docx-exporter/src/docx/__snapshots__/withMultiColumn/styles.xml index 5eabb2d389..aa72ae1b8c 100644 --- a/packages/xl-docx-exporter/src/docx/__snapshots__/withMultiColumn/styles.xml +++ b/packages/xl-docx-exporter/src/docx/__snapshots__/withMultiColumn/styles.xml @@ -1,5 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/xl-email-exporter/package.json b/packages/xl-email-exporter/package.json index a9f9a6a646..62e25401d3 100644 --- a/packages/xl-email-exporter/package.json +++ b/packages/xl-email-exporter/package.json @@ -71,7 +71,7 @@ "eslint": "^8.57.1", "rollup-plugin-webpack-stats": "^0.2.6", "typescript": "^5.9.3", - "vite": "^8.0.3", + "vite": "^8.0.8", "vite-plugin-eslint": "^1.8.1", "vitest": "^4.1.2" }, diff --git a/packages/xl-multi-column/package.json b/packages/xl-multi-column/package.json index 42dd5bc6ed..e8bee8b8ba 100644 --- a/packages/xl-multi-column/package.json +++ b/packages/xl-multi-column/package.json @@ -71,7 +71,7 @@ "rimraf": "^5.0.10", "rollup-plugin-webpack-stats": "^0.2.6", "typescript": "^5.9.3", - "vite": "^8.0.3", + "vite": "^8.0.8", "vite-plugin-eslint": "^1.8.1", "vitest": "^4.1.2" }, diff --git a/packages/xl-odt-exporter/package.json b/packages/xl-odt-exporter/package.json index 193480fc0d..253eef7cc7 100644 --- a/packages/xl-odt-exporter/package.json +++ b/packages/xl-odt-exporter/package.json @@ -72,7 +72,7 @@ "react-dom": "^19.2.5", "rollup-plugin-webpack-stats": "^0.2.6", "typescript": "^5.9.3", - "vite": "^8.0.3", + "vite": "^8.0.8", "vite-plugin-eslint": "^1.8.1", "vitest": "^4.1.2", "xml-formatter": "^3.6.7" diff --git a/packages/xl-pdf-exporter/package.json b/packages/xl-pdf-exporter/package.json index f877e92a46..1d3477e2cd 100644 --- a/packages/xl-pdf-exporter/package.json +++ b/packages/xl-pdf-exporter/package.json @@ -77,7 +77,7 @@ "react-element-to-jsx-string": "^17.0.1", "rollup-plugin-webpack-stats": "^0.2.6", "typescript": "^5.9.3", - "vite": "^8.0.3", + "vite": "^8.0.8", "vite-plugin-eslint": "^1.8.1", "vitest": "^4.1.2" }, diff --git a/playground/package.json b/playground/package.json index 451e27721b..5468c5ed6f 100644 --- a/playground/package.json +++ b/playground/package.json @@ -71,7 +71,7 @@ "rollup-plugin-webpack-stats": "^0.2.6", "tailwindcss": "^4.1.14", "tw-animate-css": "^1.4.0", - "vite": "^8.0.3", + "vite": "^8.0.8", "vite-plugin-eslint": "^1.8.1", "vite-plugin-inspect": "12.0.0-beta.1" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cb94f16b80..d2cd8b1127 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,6 +5,8 @@ settings: excludeLinksFromLockfile: false overrides: + vitest: 4.1.2 + '@vitest/runner': 4.1.2 msw: 2.11.5 ai: 6.0.5 '@ai-sdk/anthropic': 3.0.2 @@ -61,8 +63,8 @@ importers: specifier: ^5.9.3 version: 5.9.3 vitest: - specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + specifier: 4.1.2 + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) wait-on: specifier: 9.0.5 version: 9.0.5 @@ -161,7 +163,7 @@ importers: version: 3.1.18 '@polar-sh/better-auth': specifier: ^1.6.4 - version: 1.8.3(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))))(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1)(zod@4.3.6) + version: 1.8.3(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))))(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1)(zod@4.3.6) '@polar-sh/sdk': specifier: ^0.42.2 version: 0.42.5 @@ -178,20 +180,20 @@ importers: specifier: ^10.34.0 version: 10.47.0(@opentelemetry/context-async-hooks@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/core@2.6.1(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.6.1(@opentelemetry/api@1.9.1))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(webpack@5.105.4(esbuild@0.27.5)) '@shikijs/core': - specifier: ^3.19.0 - version: 3.23.0 + specifier: ^4 + version: 4.0.2 '@shikijs/engine-javascript': - specifier: ^3.19.0 - version: 3.23.0 + specifier: ^4 + version: 4.0.2 '@shikijs/langs-precompiled': - specifier: ^3.19.0 - version: 3.23.0 + specifier: ^4 + version: 4.0.2 '@shikijs/themes': - specifier: ^3.19.0 - version: 3.23.0 + specifier: ^4 + version: 4.0.2 '@shikijs/types': - specifier: ^3.19.0 - version: 3.23.0 + specifier: ^4 + version: 4.0.2 '@tiptap/core': specifier: ^3.13.0 version: 3.22.3(@tiptap/pm@3.22.3) @@ -239,7 +241,7 @@ importers: version: 6.0.5(zod@4.3.6) better-auth: specifier: ~1.4.15 - version: 1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))) + version: 1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))) better-sqlite3: specifier: ^12.6.2 version: 12.8.0 @@ -254,13 +256,13 @@ importers: version: 16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6) fumadocs-mdx: specifier: ^14.2.6 - version: 14.2.11(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 14.2.11(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) fumadocs-twoslash: specifier: ^3.1.12 version: 3.1.15(@fumadocs/base-ui@16.5.0(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tailwindcss@4.2.2))(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3) fumadocs-typescript: specifier: ^5.1.1 - version: 5.2.1(22723fcc923da32003fad920c4a650ee) + version: 5.2.1(69d97b303e997e0c43bfefdd885c07a0) fumadocs-ui: specifier: npm:@fumadocs/base-ui@16.5.0 version: '@fumadocs/base-ui@16.5.0(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tailwindcss@4.2.2)' @@ -304,8 +306,8 @@ importers: specifier: ^3.1.0 version: 3.1.0 shiki: - specifier: ^3.21.0 - version: 3.23.0 + specifier: ^4 + version: 4.0.2 tailwind-merge: specifier: ^3.4.0 version: 3.5.0 @@ -412,10 +414,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/02-block-objects: dependencies: @@ -458,10 +460,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/03-multi-column: dependencies: @@ -507,10 +509,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/04-default-blocks: dependencies: @@ -553,10 +555,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/05-removing-default-blocks: dependencies: @@ -599,10 +601,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/06-block-manipulation: dependencies: @@ -645,10 +647,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/07-selection-blocks: dependencies: @@ -691,10 +693,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/08-ariakit: dependencies: @@ -737,10 +739,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/09-shadcn: dependencies: @@ -783,7 +785,7 @@ importers: devDependencies: '@tailwindcss/vite': specifier: ^4.1.14 - version: 4.2.2(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.2.2(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@types/react': specifier: ^19.2.3 version: 19.2.14 @@ -792,10 +794,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/10-localization: dependencies: @@ -838,10 +840,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/11-custom-placeholder: dependencies: @@ -884,10 +886,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/12-multi-editor: dependencies: @@ -930,10 +932,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/13-custom-paste-handler: dependencies: @@ -976,10 +978,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/14-editor-scrollable: dependencies: @@ -1022,10 +1024,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/15-shadowdom: dependencies: @@ -1068,10 +1070,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/16-read-only-editor: dependencies: @@ -1114,10 +1116,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/testing: dependencies: @@ -1160,10 +1162,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/02-backend/01-file-uploading: dependencies: @@ -1206,10 +1208,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/02-backend/02-saving-loading: dependencies: @@ -1252,10 +1254,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/02-backend/03-s3: dependencies: @@ -1304,10 +1306,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/02-backend/04-rendering-static-documents: dependencies: @@ -1353,10 +1355,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/01-ui-elements-remove: dependencies: @@ -1399,10 +1401,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/02-formatting-toolbar-buttons: dependencies: @@ -1445,10 +1447,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/03-formatting-toolbar-block-type-items: dependencies: @@ -1494,10 +1496,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/04-side-menu-buttons: dependencies: @@ -1543,10 +1545,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/05-side-menu-drag-handle-items: dependencies: @@ -1592,10 +1594,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/06-suggestion-menus-slash-menu-items: dependencies: @@ -1641,10 +1643,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/07-suggestion-menus-slash-menu-component: dependencies: @@ -1687,10 +1689,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/08-suggestion-menus-emoji-picker-columns: dependencies: @@ -1733,10 +1735,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/09-suggestion-menus-emoji-picker-component: dependencies: @@ -1779,10 +1781,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/10-suggestion-menus-grid-mentions: dependencies: @@ -1825,10 +1827,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/11-uppy-file-panel: dependencies: @@ -1907,10 +1909,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/12-static-formatting-toolbar: dependencies: @@ -1953,10 +1955,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/13-custom-ui: dependencies: @@ -2005,10 +2007,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/14-experimental-mobile-formatting-toolbar: dependencies: @@ -2051,10 +2053,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/15-advanced-tables: dependencies: @@ -2097,10 +2099,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/16-link-toolbar-buttons: dependencies: @@ -2143,10 +2145,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/17-advanced-tables-2: dependencies: @@ -2189,10 +2191,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/18-drag-n-drop: dependencies: @@ -2235,10 +2237,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/01-theming-dom-attributes: dependencies: @@ -2281,10 +2283,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/02-changing-font: dependencies: @@ -2327,10 +2329,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/03-theming-css: dependencies: @@ -2373,10 +2375,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/04-theming-css-variables: dependencies: @@ -2419,10 +2421,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/05-theming-css-variables-code: dependencies: @@ -2465,10 +2467,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/06-code-block: dependencies: @@ -2514,10 +2516,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/07-custom-code-block: dependencies: @@ -2549,20 +2551,20 @@ importers: specifier: ^6.0.22 version: 6.0.22(react@19.2.5) '@shikijs/core': - specifier: ^3.19.0 - version: 3.23.0 + specifier: ^4 + version: 4.0.2 '@shikijs/engine-javascript': - specifier: ^3.19.0 - version: 3.23.0 + specifier: ^4 + version: 4.0.2 '@shikijs/langs-precompiled': - specifier: ^3.19.0 - version: 3.23.0 + specifier: ^4 + version: 4.0.2 '@shikijs/themes': - specifier: ^3.19.0 - version: 3.23.0 + specifier: ^4 + version: 4.0.2 '@shikijs/types': - specifier: ^3.19.0 - version: 3.23.0 + specifier: ^4 + version: 4.0.2 react: specifier: ^19.2.3 version: 19.2.5 @@ -2578,10 +2580,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/01-converting-blocks-to-html: dependencies: @@ -2624,10 +2626,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/02-converting-blocks-from-html: dependencies: @@ -2670,10 +2672,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/03-converting-blocks-to-md: dependencies: @@ -2716,10 +2718,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/04-converting-blocks-from-md: dependencies: @@ -2762,10 +2764,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/05-converting-blocks-to-pdf: dependencies: @@ -2817,10 +2819,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/06-converting-blocks-to-docx: dependencies: @@ -2869,10 +2871,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/07-converting-blocks-to-odt: dependencies: @@ -2921,10 +2923,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/08-converting-blocks-to-react-email: dependencies: @@ -2973,10 +2975,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/09-blocks-to-html-static-render: dependencies: @@ -3019,10 +3021,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/10-static-html-render: dependencies: @@ -3065,10 +3067,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/01-alert-block: dependencies: @@ -3114,10 +3116,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/02-suggestion-menus-mentions: dependencies: @@ -3160,10 +3162,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/03-font-style: dependencies: @@ -3209,10 +3211,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/04-pdf-file-block: dependencies: @@ -3258,10 +3260,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/05-alert-block-full-ux: dependencies: @@ -3307,10 +3309,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/06-toggleable-blocks: dependencies: @@ -3353,10 +3355,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/07-configuring-blocks: dependencies: @@ -3399,10 +3401,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/draggable-inline-content: dependencies: @@ -3445,10 +3447,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/react-custom-blocks: dependencies: @@ -3491,10 +3493,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/react-custom-inline-content: dependencies: @@ -3537,10 +3539,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/react-custom-styles: dependencies: @@ -3583,10 +3585,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/01-partykit: dependencies: @@ -3635,10 +3637,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/02-liveblocks: dependencies: @@ -3699,10 +3701,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/03-y-sweet: dependencies: @@ -3748,10 +3750,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/04-electric-sql: dependencies: @@ -3794,10 +3796,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/05-comments: dependencies: @@ -3843,10 +3845,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/06-comments-with-sidebar: dependencies: @@ -3895,10 +3897,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/07-ghost-writer: dependencies: @@ -3947,10 +3949,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/08-forking: dependencies: @@ -3999,10 +4001,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/08-extensions/01-tiptap-arrow-conversion: dependencies: @@ -4048,10 +4050,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/01-minimal: dependencies: @@ -4100,10 +4102,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/02-playground: dependencies: @@ -4152,10 +4154,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/03-custom-ai-menu-items: dependencies: @@ -4207,10 +4209,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/04-with-collaboration: dependencies: @@ -4265,10 +4267,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/05-manual-execution: dependencies: @@ -4323,10 +4325,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/06-client-side-transport: dependencies: @@ -4378,10 +4380,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/07-server-persistence: dependencies: @@ -4430,10 +4432,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/vanilla-js/react-vanilla-custom-blocks: dependencies: @@ -4476,10 +4478,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/vanilla-js/react-vanilla-custom-inline-content: dependencies: @@ -4522,10 +4524,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) examples/vanilla-js/react-vanilla-custom-styles: dependencies: @@ -4568,10 +4570,10 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) packages/ariakit: dependencies: @@ -4593,7 +4595,7 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -4613,14 +4615,14 @@ importers: specifier: ^5.9.3 version: 5.9.3 vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/code-block: dependencies: @@ -4653,14 +4655,14 @@ importers: specifier: ^5.9.3 version: 5.9.3 vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: - specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + specifier: 4.1.2 + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/core: dependencies: @@ -4721,6 +4723,9 @@ importers: hast-util-from-dom: specifier: ^5.0.1 version: 5.0.1 + lib0: + specifier: ^0.2.99 + version: 0.2.117 prosemirror-highlight: specifier: ^0.15.1 version: 0.15.1(@shikijs/types@4.0.2)(@types/hast@3.0.4)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-transform@1.12.0)(prosemirror-view@1.41.8) @@ -4769,9 +4774,6 @@ importers: unist-util-visit: specifier: ^5.0.0 version: 5.1.0 - uuid: - specifier: ^8.3.2 - version: 8.3.2 y-prosemirror: specifier: ^1.3.7 version: 1.3.7(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30) @@ -4782,21 +4784,15 @@ importers: specifier: ^13.6.27 version: 13.6.30 devDependencies: - '@types/emoji-mart': - specifier: ^3.0.14 - version: 3.0.14 '@types/hast': specifier: ^3.0.4 version: 3.0.4 - '@types/uuid': - specifier: ^8.3.4 - version: 8.3.4 eslint: specifier: ^8.57.1 version: 8.57.1 jsdom: - specifier: ^25.0.1 - version: 25.0.1(canvas@2.11.2) + specifier: ^29.0.2 + version: 29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0) rimraf: specifier: ^5.0.10 version: 5.0.10 @@ -4807,14 +4803,14 @@ importers: specifier: ^5.9.3 version: 5.9.3 vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: - specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + specifier: 4.1.2 + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/dev-scripts: dependencies: @@ -4879,7 +4875,7 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -4899,14 +4895,14 @@ importers: specifier: ^5.9.3 version: 5.9.3 vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/react: dependencies: @@ -4953,9 +4949,6 @@ importers: specifier: 1.6.0 version: 1.6.0(react@19.2.5) devDependencies: - '@types/emoji-mart': - specifier: ^3.0.14 - version: 3.0.14 '@types/lodash.foreach': specifier: ^4.5.9 version: 4.5.9 @@ -4973,7 +4966,7 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -4993,17 +4986,17 @@ importers: specifier: ^5.9.3 version: 5.9.3 vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: - specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + specifier: 4.1.2 + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/server-util: dependencies: @@ -5057,14 +5050,14 @@ importers: specifier: ^5.9.3 version: 5.9.3 vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: - specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + specifier: 4.1.2 + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/shadcn: dependencies: @@ -5137,7 +5130,7 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -5157,14 +5150,14 @@ importers: specifier: ^5.9.3 version: 5.9.3 vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/xl-ai: dependencies: @@ -5285,9 +5278,9 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/runner': - specifier: ^4.1.2 + specifier: 4.1.2 version: 4.1.2 eslint: specifier: ^8.57.1 @@ -5317,17 +5310,17 @@ importers: specifier: ^6.22.0 version: 6.25.0 vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: - specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + specifier: 4.1.2 + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/xl-ai-server: dependencies: @@ -5378,20 +5371,20 @@ importers: specifier: ^6.22.0 version: 6.25.0 vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-node: specifier: ^6.0.0 - version: 6.0.0(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 6.0.0(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: - specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + specifier: 4.1.2 + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/xl-docx-exporter: dependencies: @@ -5405,8 +5398,8 @@ importers: specifier: ^6.0.3 version: 6.0.3 docx: - specifier: ^9.5.1 - version: 9.5.1 + specifier: ^9.6.1 + version: 9.6.1 image-meta: specifier: ^0.2.2 version: 0.2.2 @@ -5436,14 +5429,14 @@ importers: specifier: ^5.9.3 version: 5.9.3 vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: - specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + specifier: 4.1.2 + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) xml-formatter: specifier: ^3.6.7 version: 3.7.0 @@ -5497,14 +5490,14 @@ importers: specifier: ^5.9.3 version: 5.9.3 vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: - specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + specifier: 4.1.2 + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/xl-multi-column: dependencies: @@ -5564,14 +5557,14 @@ importers: specifier: ^5.9.3 version: 5.9.3 vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: - specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + specifier: 4.1.2 + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages/xl-odt-exporter: dependencies: @@ -5616,14 +5609,14 @@ importers: specifier: ^5.9.3 version: 5.9.3 vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: - specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + specifier: 4.1.2 + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) xml-formatter: specifier: ^3.6.7 version: 3.7.0 @@ -5689,14 +5682,14 @@ importers: specifier: ^5.9.3 version: 5.9.3 vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: - specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + specifier: 4.1.2 + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) playground: dependencies: @@ -5850,7 +5843,7 @@ importers: devDependencies: '@tailwindcss/vite': specifier: ^4.1.14 - version: 4.2.2(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.2.2(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@types/react': specifier: ^19.2.3 version: 19.2.14 @@ -5859,7 +5852,7 @@ importers: 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.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -5876,14 +5869,14 @@ importers: specifier: ^1.4.0 version: 1.4.0 vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-inspect: specifier: 12.0.0-beta.1 - version: 12.0.0-beta.1(typescript@5.9.3)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0) + version: 12.0.0-beta.1(typescript@5.9.3)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0) shared: dependencies: @@ -5924,7 +5917,7 @@ importers: version: link:../packages/shadcn '@playwright/experimental-ct-react': specifier: 1.51.1 - version: 1.51.1(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.51.1(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.1)(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@playwright/test': specifier: 1.51.1 version: 1.51.1 @@ -5959,14 +5952,14 @@ importers: specifier: ^5.0.10 version: 5.0.10 vite: - specifier: ^8.0.3 - version: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + specifier: ^8.0.8 + version: 8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) vitest: - specifier: ^4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@20.19.37)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + specifier: 4.1.2 + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@20.19.37)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) packages: @@ -6050,6 +6043,21 @@ packages: '@asamuzakjp/css-color@3.2.0': resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} + '@asamuzakjp/css-color@5.1.11': + resolution: {integrity: sha512-KVw6qIiCTUQhByfTd78h2yD1/00waTmm9uy/R7Ck/ctUyAPj+AEDLkQIdJW0T8+qGgj3j5bpNKK7Q3G+LedJWg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + '@asamuzakjp/dom-selector@7.0.10': + resolution: {integrity: sha512-KyOb19eytNSELkmdqzZZUXWCU25byIlOld5qVFg0RYdS0T3tt7jeDByxk9hIAC73frclD8GKrHttr0SUjKCCdQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + '@asamuzakjp/generational-cache@1.0.1': + resolution: {integrity: sha512-wajfB8KqzMCN2KGNFdLkReeHncd0AslUSrvHVvvYWuU8ghncRJoA50kT3zP9MVL0+9g4/67H+cdvBskj9THPzg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + '@asamuzakjp/nwsapi@2.3.9': + resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} + '@aws-crypto/crc32@5.2.0': resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} engines: {node: '>=16.0.0'} @@ -6935,10 +6943,18 @@ packages: '@better-fetch/fetch@1.1.21': resolution: {integrity: sha512-/ImESw0sskqlVR94jB+5+Pxjf+xBwDZF/N5+y2/q4EqD7IARUTSpPfIo8uf39SYpCxyOCtbyYpUrZ3F/k0zT4A==} + '@bramus/specificity@2.4.2': + resolution: {integrity: sha512-ctxtJ/eA+t+6q2++vj5j7FYX3nRu311q1wfYH3xjlLOsczhlhxAg2FWNUXhpGvAw3BWo1xBcvOV6/YLc2r5FJw==} + hasBin: true + '@csstools/color-helpers@5.1.0': resolution: {integrity: sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==} engines: {node: '>=18'} + '@csstools/color-helpers@6.0.2': + resolution: {integrity: sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==} + engines: {node: '>=20.19.0'} + '@csstools/css-calc@2.1.4': resolution: {integrity: sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==} engines: {node: '>=18'} @@ -6946,6 +6962,13 @@ packages: '@csstools/css-parser-algorithms': ^3.0.5 '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-calc@3.2.0': + resolution: {integrity: sha512-bR9e6o2BDB12jzN/gIbjHa5wLJ4UjD1CB9pM7ehlc0ddk6EBz+yYS1EV2MF55/HUxrHcB/hehAyt5vhsA3hx7w==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + '@csstools/css-color-parser@3.1.0': resolution: {integrity: sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==} engines: {node: '>=18'} @@ -6953,16 +6976,41 @@ packages: '@csstools/css-parser-algorithms': ^3.0.5 '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-color-parser@4.1.0': + resolution: {integrity: sha512-U0KhLYmy2GVj6q4T3WaAe6NPuFYCPQoE3b0dRGxejWDgcPp8TP7S5rVdM5ZrFaqu4N67X8YaPBw14dQSYx3IyQ==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + '@csstools/css-parser-algorithms@3.0.5': resolution: {integrity: sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==} engines: {node: '>=18'} peerDependencies: '@csstools/css-tokenizer': ^3.0.4 + '@csstools/css-parser-algorithms@4.0.0': + resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.1.3': + resolution: {integrity: sha512-SH60bMfrRCJF3morcdk57WklujF4Jr/EsQUzqkarfHXEFcAR1gg7fS/chAE922Sehgzc1/+Tz5H3Ypa1HiEKrg==} + peerDependencies: + css-tree: ^3.2.1 + peerDependenciesMeta: + css-tree: + optional: true + '@csstools/css-tokenizer@3.0.4': resolution: {integrity: sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==} engines: {node: '>=18'} + '@csstools/css-tokenizer@4.0.0': + resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} + engines: {node: '>=20.19.0'} + '@cush/relative@1.0.0': resolution: {integrity: sha512-RpfLEtTlyIxeNPGKcokS+p3BZII/Q3bYxryFRglh5H3A3T8q9fsLYm72VYAMEOOIBLEa8o93kFLiBDUWKrwXZA==} @@ -6972,9 +7020,15 @@ packages: '@emnapi/core@1.10.0': resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} + '@emnapi/core@1.9.2': + resolution: {integrity: sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==} + '@emnapi/runtime@1.10.0': resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} + '@emnapi/runtime@1.9.2': + resolution: {integrity: sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==} + '@emnapi/wasi-threads@1.2.1': resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} @@ -7531,6 +7585,15 @@ packages: resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@exodus/bytes@1.15.0': + resolution: {integrity: sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + peerDependencies: + '@noble/hashes': ^1.8.0 || ^2.0.0 + peerDependenciesMeta: + '@noble/hashes': + optional: true + '@fastify/otel@0.18.0': resolution: {integrity: sha512-3TASCATfw+ctICSb4ymrv7iCm0qJ0N9CarB+CZ7zIJ7KqNbwI5JjyDL1/sxoC0ccTO1Zyd1iQ+oqncPg5FJXaA==} peerDependencies: @@ -8087,8 +8150,8 @@ packages: '@napi-rs/wasm-runtime@0.2.4': resolution: {integrity: sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==} - '@napi-rs/wasm-runtime@1.1.2': - resolution: {integrity: sha512-sNXv5oLJ7ob93xkZ1XnxisYhGYXfaG9f65/ZgYuAu3qt7b3NadcOEhLvx28hv31PgX8SZJRYrAIPQilQmFpLVw==} + '@napi-rs/wasm-runtime@1.1.4': + resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==} peerDependencies: '@emnapi/core': ^1.7.1 '@emnapi/runtime': ^1.7.1 @@ -8465,8 +8528,8 @@ packages: resolution: {integrity: sha512-a61ljmRVVyG5MC/698C8/FfFDw5a8LOIvyOLW5fztgUXqUpc1jOfQzOitSCbge657OgXXThmY3Tk8fpiDb4UcA==} engines: {node: '>= 20.0.0'} - '@oxc-project/types@0.122.0': - resolution: {integrity: sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA==} + '@oxc-project/types@0.124.0': + resolution: {integrity: sha512-VBFWMTBvHxS11Z5Lvlr3IWgrwhMTXV+Md+EQF0Xf60+wAdsGFTBx7X7K/hP4pi8N7dcm1RvcHwDxZ16Qx8keUg==} '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} @@ -9504,91 +9567,91 @@ packages: resolution: {integrity: sha512-Ic6m2U/rMjTkhERIa/0ZtXJP17QUi2CbWE7cqx4J58M8aA3QTfW+2UlQ4psvTX9IO1RfNVhK3pcpdjej7L+t2w==} engines: {node: '>=14.0.0'} - '@rolldown/binding-android-arm64@1.0.0-rc.12': - resolution: {integrity: sha512-pv1y2Fv0JybcykuiiD3qBOBdz6RteYojRFY1d+b95WVuzx211CRh+ytI/+9iVyWQ6koTh5dawe4S/yRfOFjgaA==} + '@rolldown/binding-android-arm64@1.0.0-rc.15': + resolution: {integrity: sha512-YYe6aWruPZDtHNpwu7+qAHEMbQ/yRl6atqb/AhznLTnD3UY99Q1jE7ihLSahNWkF4EqRPVC4SiR4O0UkLK02tA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.0.0-rc.12': - resolution: {integrity: sha512-cFYr6zTG/3PXXF3pUO+umXxt1wkRK/0AYT8lDwuqvRC+LuKYWSAQAQZjCWDQpAH172ZV6ieYrNnFzVVcnSflAg==} + '@rolldown/binding-darwin-arm64@1.0.0-rc.15': + resolution: {integrity: sha512-oArR/ig8wNTPYsXL+Mzhs0oxhxfuHRfG7Ikw7jXsw8mYOtk71W0OkF2VEVh699pdmzjPQsTjlD1JIOoHkLP1Fg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.0.0-rc.12': - resolution: {integrity: sha512-ZCsYknnHzeXYps0lGBz8JrF37GpE9bFVefrlmDrAQhOEi4IOIlcoU1+FwHEtyXGx2VkYAvhu7dyBf75EJQffBw==} + '@rolldown/binding-darwin-x64@1.0.0-rc.15': + resolution: {integrity: sha512-YzeVqOqjPYvUbJSWJ4EDL8ahbmsIXQpgL3JVipmN+MX0XnXMeWomLN3Fb+nwCmP/jfyqte5I3XRSm7OfQrbyxw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.0.0-rc.12': - resolution: {integrity: sha512-dMLeprcVsyJsKolRXyoTH3NL6qtsT0Y2xeuEA8WQJquWFXkEC4bcu1rLZZSnZRMtAqwtrF/Ib9Ddtpa/Gkge9Q==} + '@rolldown/binding-freebsd-x64@1.0.0-rc.15': + resolution: {integrity: sha512-9Erhx956jeQ0nNTyif1+QWAXDRD38ZNjr//bSHrt6wDwB+QkAfl2q6Mn1k6OBPerznjRmbM10lgRb1Pli4xZPw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12': - resolution: {integrity: sha512-YqWjAgGC/9M1lz3GR1r1rP79nMgo3mQiiA+Hfo+pvKFK1fAJ1bCi0ZQVh8noOqNacuY1qIcfyVfP6HoyBRZ85Q==} + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.15': + resolution: {integrity: sha512-cVwk0w8QbZJGTnP/AHQBs5yNwmpgGYStL88t4UIaqcvYJWBfS0s3oqVLZPwsPU6M0zlW4GqjP0Zq5MnAGwFeGA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12': - resolution: {integrity: sha512-/I5AS4cIroLpslsmzXfwbe5OmWvSsrFuEw3mwvbQ1kDxJ822hFHIx+vsN/TAzNVyepI/j/GSzrtCIwQPeKCLIg==} + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.15': + resolution: {integrity: sha512-eBZ/u8iAK9SoHGanqe/jrPnY0JvBN6iXbVOsbO38mbz+ZJsaobExAm1Iu+rxa4S1l2FjG0qEZn4Rc6X8n+9M+w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.12': - resolution: {integrity: sha512-V6/wZztnBqlx5hJQqNWwFdxIKN0m38p8Jas+VoSfgH54HSj9tKTt1dZvG6JRHcjh6D7TvrJPWFGaY9UBVOaWPw==} + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.15': + resolution: {integrity: sha512-ZvRYMGrAklV9PEkgt4LQM6MjQX2P58HPAuecwYObY2DhS2t35R0I810bKi0wmaYORt6m/2Sm+Z+nFgb0WhXNcQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12': - resolution: {integrity: sha512-AP3E9BpcUYliZCxa3w5Kwj9OtEVDYK6sVoUzy4vTOJsjPOgdaJZKFmN4oOlX0Wp0RPV2ETfmIra9x1xuayFB7g==} + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.15': + resolution: {integrity: sha512-VDpgGBzgfg5hLg+uBpCLoFG5kVvEyafmfxGUV0UHLcL5irxAK7PKNeC2MwClgk6ZAiNhmo9FLhRYgvMmedLtnQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12': - resolution: {integrity: sha512-nWwpvUSPkoFmZo0kQazZYOrT7J5DGOJ/+QHHzjvNlooDZED8oH82Yg67HvehPPLAg5fUff7TfWFHQS8IV1n3og==} + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.15': + resolution: {integrity: sha512-y1uXY3qQWCzcPgRJATPSOUP4tCemh4uBdY7e3EZbVwCJTY3gLJWnQABgeUetvED+bt1FQ01OeZwvhLS2bpNrAQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.12': - resolution: {integrity: sha512-RNrafz5bcwRy+O9e6P8Z/OCAJW/A+qtBczIqVYwTs14pf4iV1/+eKEjdOUta93q2TsT/FI0XYDP3TCky38LMAg==} + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.15': + resolution: {integrity: sha512-023bTPBod7J3Y/4fzAN6QtpkSABR0rigtrwaP+qSEabUh5zf6ELr9Nc7GujaROuPY3uwdSIXWrvhn1KxOvurWA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@rolldown/binding-linux-x64-musl@1.0.0-rc.12': - resolution: {integrity: sha512-Jpw/0iwoKWx3LJ2rc1yjFrj+T7iHZn2JDg1Yny1ma0luviFS4mhAIcd1LFNxK3EYu3DHWCps0ydXQ5i/rrJ2ig==} + '@rolldown/binding-linux-x64-musl@1.0.0-rc.15': + resolution: {integrity: sha512-witB2O0/hU4CgfOOKUoeFgQ4GktPi1eEbAhaLAIpgD6+ZnhcPkUtPsoKKHRzmOoWPZue46IThdSgdo4XneOLYw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] - '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': - resolution: {integrity: sha512-vRugONE4yMfVn0+7lUKdKvN4D5YusEiPilaoO2sgUWpCvrncvWgPMzK00ZFFJuiPgLwgFNP5eSiUlv2tfc+lpA==} + '@rolldown/binding-openharmony-arm64@1.0.0-rc.15': + resolution: {integrity: sha512-UCL68NJ0Ud5zRipXZE9dF5PmirzJE4E4BCIOOssEnM7wLDsxjc6Qb0sGDxTNRTP53I6MZpygyCpY8Aa8sPfKPg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-wasm32-wasi@1.0.0-rc.12': - resolution: {integrity: sha512-ykGiLr/6kkiHc0XnBfmFJuCjr5ZYKKofkx+chJWDjitX+KsJuAmrzWhwyOMSHzPhzOHOy7u9HlFoa5MoAOJ/Zg==} + '@rolldown/binding-wasm32-wasi@1.0.0-rc.15': + resolution: {integrity: sha512-ApLruZq/ig+nhaE7OJm4lDjayUnOHVUa77zGeqnqZ9pn0ovdVbbNPerVibLXDmWeUZXjIYIT8V3xkT58Rm9u5Q==} engines: {node: '>=14.0.0'} cpu: [wasm32] - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12': - resolution: {integrity: sha512-5eOND4duWkwx1AzCxadcOrNeighiLwMInEADT0YM7xeEOOFcovWZCq8dadXgcRHSf3Ulh1kFo/qvzoFiCLOL1Q==} + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.15': + resolution: {integrity: sha512-KmoUoU7HnN+Si5YWJigfTws1jz1bKBYDQKdbLspz0UaqjjFkddHsqorgiW1mxcAj88lYUE6NC/zJNwT+SloqtA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.12': - resolution: {integrity: sha512-PyqoipaswDLAZtot351MLhrlrh6lcZPo2LSYE+VDxbVk24LVKAGOuE4hb8xZQmrPAuEtTZW8E6D2zc5EUZX4Lw==} + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.15': + resolution: {integrity: sha512-3P2A8L+x75qavWLe/Dll3EYBJLQmtkJN8rfh+U/eR3MqMgL/h98PhYI+JFfXuDPgPeCB7iZAKiqii5vqOvnA0g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -9596,8 +9659,8 @@ packages: '@rolldown/pluginutils@1.0.0-beta.27': resolution: {integrity: sha512-+d0F4MKMCbeVUJwG96uQ4SgAznZNSq93I3V+9NHA4OpvqG8mRCpGdKmK8l/dl02h2CCDHwW2FqilnTyDcAnqjA==} - '@rolldown/pluginutils@1.0.0-rc.12': - resolution: {integrity: sha512-HHMwmarRKvoFsJorqYlFeFRzXZqCt2ETQlEDOb9aqssrnVBB1/+xgTGtuTrIk5vzLNX1MjMtTf7W9z3tsSbrxw==} + '@rolldown/pluginutils@1.0.0-rc.15': + resolution: {integrity: sha512-UromN0peaE53IaBRe9W7CjrZgXl90fqGpK+mIZbA3qSTeYqg3pqpROBdIPvOG3F5ereDHNwoHBI2e50n1BDr1g==} '@rolldown/pluginutils@1.0.0-rc.7': resolution: {integrity: sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==} @@ -9929,10 +9992,6 @@ packages: resolution: {integrity: sha512-UpCB9Y2sUKlS9z8juFSKz7ZtysmeXCgnRF0dlhXBkmQnek7lAToPte8DkxmEYGNTMii72zU/lyXiCB6StuZeJg==} engines: {node: '>=20'} - '@shikijs/langs-precompiled@3.23.0': - resolution: {integrity: sha512-NVFZ+aosM+a90oUmlM8pRZkVZPFgMabCPicOaP0xklM7Lo6U6J9JqKs+ld1Z9K85k1mfQITc6r7VfZiifitPDA==} - engines: {node: '>=20'} - '@shikijs/langs-precompiled@4.0.2': resolution: {integrity: sha512-I7uqbU58tSTgChNtu7dTnJWOo0lAsZMyv1RT9DCb+qlcQu5fkp2lAeISo+2qxunYSX+l81nI83lYp75OoqYzqg==} engines: {node: '>=20'} @@ -10522,9 +10581,6 @@ packages: '@types/diff@6.0.0': resolution: {integrity: sha512-dhVCYGv3ZSbzmQaBSagrv1WJ6rXCdkyTcDyoNu1MD8JohI7pR7k8wdZEm+mvdxRKXyHVwckFzWU1vJc+Z29MlA==} - '@types/emoji-mart@3.0.14': - resolution: {integrity: sha512-/vMkVnet466bK37ugf2jry9ldCZklFPXYMB2m+qNo3vkP2I7L0cvtNFPKAjfcHgPg9Z8pbYqVqZn7AgsC0qf+g==} - '@types/eslint-scope@3.7.7': resolution: {integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==} @@ -10609,6 +10665,9 @@ packages: '@types/node@20.19.37': resolution: {integrity: sha512-8kzdPJ3FsNsVIurqBs7oodNnCEVbni9yUEkaHbgptDACOPW04jimGagZ51E6+lXUwJjgnBw+hyko/lkFWCldqw==} + '@types/node@20.19.39': + resolution: {integrity: sha512-orrrD74MBUyK8jOAD/r0+lfa1I2MO6I+vAkmAWzMYbCcgrN4lCrmK52gRFQq/JRxfYPfonkr4b0jcY7Olqdqbw==} + '@types/node@22.13.13': resolution: {integrity: sha512-ClsL5nMwKaBRwPcCvH8E7+nU4GxHVx1axNvMZTFHMEfNI7oahimt26P5zjVCRrjiIWj6YFXfE1v3dEp94wLcGQ==} @@ -10685,9 +10744,6 @@ packages: '@types/use-sync-external-store@1.5.0': resolution: {integrity: sha512-5dyB8nLC/qogMrlCizZnYWQTA4lnb/v+It+sqNl5YnSRAPMlIqY/X0Xn+gZw8vOL+TgTTr28VEbn3uf8fUtAkw==} - '@types/uuid@8.3.4': - resolution: {integrity: sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==} - '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} @@ -11506,7 +11562,7 @@ packages: react-dom: ^18.0.0 || ^19.0.0 solid-js: ^1.0.0 svelte: ^4.0.0 || ^5.0.0 - vitest: ^2.0.0 || ^3.0.0 || ^4.0.0 + vitest: 4.1.2 vue: ^3.0.0 peerDependenciesMeta: '@lynx-js/react': @@ -11915,6 +11971,10 @@ packages: crypto-js@4.2.0: resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + css-tree@3.2.1: + resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} @@ -11978,6 +12038,10 @@ packages: resolution: {integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==} engines: {node: '>=18'} + data-urls@7.0.0: + resolution: {integrity: sha512-23XHcCF+coGYevirZceTVD7NdJOqVn+49IHyxgszm+JIiHLoB2TkmPtsYkNWT1pvRSGkc35L6NHs0yHkN2SumA==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + data-view-buffer@1.0.2: resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} engines: {node: '>= 0.4'} @@ -12139,6 +12203,10 @@ packages: resolution: {integrity: sha512-ABDI7JEirFD2+bHhOBlsGZxaG1UgZb2M/QMKhLSDGgVNhxDesTCDcP+qoDnDGjZ4EOXTRfUjUgwHVuZ6VSTfWQ==} engines: {node: '>=10'} + docx@9.6.1: + resolution: {integrity: sha512-ZJja9/KBUuFC109sCMzovoq2GR2wCG/AuxivjA+OHj/q0TEgJIm3S7yrlUxIy3B+bV8YDj/BiHfWyrRFmyWpDQ==} + engines: {node: '>=10'} + dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} @@ -13115,6 +13183,10 @@ packages: resolution: {integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==} engines: {node: '>=18'} + html-encoding-sniffer@6.0.0: + resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + html-to-text@9.0.5: resolution: {integrity: sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==} engines: {node: '>=14'} @@ -13542,6 +13614,15 @@ packages: canvas: optional: true + jsdom@29.0.2: + resolution: {integrity: sha512-9VnGEBosc/ZpwyOsJBCQ/3I5p7Q5ngOY14a9bf5btenAORmZfDse1ZEheMiWcJ3h81+Fv7HmJFdS0szo/waF2w==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24.0.0} + peerDependencies: + canvas: ^3.0.0 + peerDependenciesMeta: + canvas: + optional: true + jsesc@3.1.0: resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} engines: {node: '>=6'} @@ -13868,6 +13949,9 @@ packages: mdast-util-to-string@4.0.0: resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} + mdn-data@2.27.1: + resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} + mdurl@2.0.0: resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} @@ -14440,6 +14524,9 @@ packages: parse5@7.3.0: resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + parse5@8.0.0: + resolution: {integrity: sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==} + parseley@0.12.1: resolution: {integrity: sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==} @@ -15236,8 +15323,8 @@ packages: resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} hasBin: true - rolldown@1.0.0-rc.12: - resolution: {integrity: sha512-yP4USLIMYrwpPHEFB5JGH1uxhcslv6/hL0OyvTuY+3qlOSJvZ7ntYnoWpehBxufkgN0cvXxppuTu5hHa/zPh+A==} + rolldown@1.0.0-rc.15: + resolution: {integrity: sha512-Ff31guA5zT6WjnGp0SXw76X6hzGRk/OQq2hE+1lcDe+lJdHSgnSX6nK3erbONHyCbpSj9a9E+uX/OvytZoWp2g==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -15823,6 +15910,10 @@ packages: resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==} engines: {node: '>=18'} + tr46@6.0.0: + resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} + engines: {node: '>=20'} + tree-kill@1.2.2: resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} hasBin: true @@ -15971,6 +16062,10 @@ packages: resolution: {integrity: sha512-ZgpWDC5gmNiuY9CnLVXEH8rl50xhRCuLNA97fAUnKi8RRuV4E6KG31pDTsLVUKnohJE0I3XDrTeEydAXRw47xg==} engines: {node: '>=18.17'} + undici@7.25.0: + resolution: {integrity: sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ==} + engines: {node: '>=20.18.1'} + unicode-canonical-property-names-ecmascript@2.0.1: resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} engines: {node: '>=4'} @@ -16097,10 +16192,6 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} - uuid@8.3.2: - resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} - hasBin: true - uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} hasBin: true @@ -16190,14 +16281,14 @@ packages: terser: optional: true - vite@8.0.3: - resolution: {integrity: sha512-B9ifbFudT1TFhfltfaIPgjo9Z3mDynBTJSUYxTjOQruf/zHH+ezCQKcoqO+h7a9Pw9Nm/OtlXAiGT1axBgwqrQ==} + vite@8.0.8: + resolution: {integrity: sha512-dbU7/iLVa8KZALJyLOBOQ88nOXtNG8vxKuOT4I2mD+Ya70KPceF4IAmDsmU0h1Qsn5bPrvsY9HJstCRh3hG6Uw==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: '@types/node': ^20.19.0 || >=22.12.0 '@vitejs/devtools': ^0.1.0 - esbuild: ^0.27.0 + esbuild: ^0.27.0 || ^0.28.0 jiti: '>=1.21.0' less: ^4.0.0 sass: ^1.70.0 @@ -16304,6 +16395,10 @@ packages: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} + webidl-conversions@8.0.1: + resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} + engines: {node: '>=20'} + webpack-sources@3.3.4: resolution: {integrity: sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==} engines: {node: '>=10.13.0'} @@ -16327,10 +16422,18 @@ packages: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} + whatwg-mimetype@5.0.0: + resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} + engines: {node: '>=20'} + whatwg-url@14.2.0: resolution: {integrity: sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==} engines: {node: '>=18'} + whatwg-url@16.0.1: + resolution: {integrity: sha512-1to4zXBxmXHV3IiSSEInrreIlu02vUOvrhxJJH5vcxYTBDAx51cqZiKdyTxlecdKNSjj8EcxGBxNf6Vg+945gw==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -16625,6 +16728,26 @@ snapshots: '@csstools/css-tokenizer': 3.0.4 lru-cache: 10.4.3 + '@asamuzakjp/css-color@5.1.11': + dependencies: + '@asamuzakjp/generational-cache': 1.0.1 + '@csstools/css-calc': 3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-color-parser': 4.1.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@asamuzakjp/dom-selector@7.0.10': + dependencies: + '@asamuzakjp/generational-cache': 1.0.1 + '@asamuzakjp/nwsapi': 2.3.9 + bidi-js: 1.0.3 + css-tree: 3.2.1 + is-potential-custom-element-name: 1.0.1 + + '@asamuzakjp/generational-cache@1.0.1': {} + + '@asamuzakjp/nwsapi@2.3.9': {} + '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 @@ -18001,13 +18124,24 @@ snapshots: '@better-fetch/fetch@1.1.21': {} + '@bramus/specificity@2.4.2': + dependencies: + css-tree: 3.2.1 + '@csstools/color-helpers@5.1.0': {} + '@csstools/color-helpers@6.0.2': {} + '@csstools/css-calc@2.1.4(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-calc@3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + '@csstools/css-color-parser@3.1.0(@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4))(@csstools/css-tokenizer@3.0.4)': dependencies: '@csstools/color-helpers': 5.1.0 @@ -18015,12 +18149,29 @@ snapshots: '@csstools/css-parser-algorithms': 3.0.5(@csstools/css-tokenizer@3.0.4) '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-color-parser@4.1.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/color-helpers': 6.0.2 + '@csstools/css-calc': 3.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + '@csstools/css-parser-algorithms@3.0.5(@csstools/css-tokenizer@3.0.4)': dependencies: '@csstools/css-tokenizer': 3.0.4 + '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.1.3(css-tree@3.2.1)': + optionalDependencies: + css-tree: 3.2.1 + '@csstools/css-tokenizer@3.0.4': {} + '@csstools/css-tokenizer@4.0.0': {} + '@cush/relative@1.0.0': {} '@date-fns/tz@1.4.1': {} @@ -18030,10 +18181,21 @@ snapshots: '@emnapi/wasi-threads': 1.2.1 tslib: 2.8.1 + '@emnapi/core@1.9.2': + dependencies: + '@emnapi/wasi-threads': 1.2.1 + tslib: 2.8.1 + optional: true + '@emnapi/runtime@1.10.0': dependencies: tslib: 2.8.1 + '@emnapi/runtime@1.9.2': + dependencies: + tslib: 2.8.1 + optional: true + '@emnapi/wasi-threads@1.2.1': dependencies: tslib: 2.8.1 @@ -18415,6 +18577,10 @@ snapshots: '@eslint/core': 0.17.0 levn: 0.4.1 + '@exodus/bytes@1.15.0(@noble/hashes@2.0.1)': + optionalDependencies: + '@noble/hashes': 2.0.1 + '@fastify/otel@0.18.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 @@ -18740,7 +18906,7 @@ snapshots: '@jest/pattern@30.0.1': dependencies: - '@types/node': 25.5.0 + '@types/node': 25.6.0 jest-regex-util: 30.0.1 '@jest/schemas@30.0.5': @@ -18753,7 +18919,7 @@ snapshots: '@jest/schemas': 30.0.5 '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 25.5.0 + '@types/node': 25.6.0 '@types/yargs': 17.0.35 chalk: 4.1.2 @@ -19081,10 +19247,10 @@ snapshots: '@emnapi/runtime': 1.10.0 '@tybys/wasm-util': 0.9.0 - '@napi-rs/wasm-runtime@1.1.2(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + '@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)': dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 + '@emnapi/core': 1.9.2 + '@emnapi/runtime': 1.9.2 '@tybys/wasm-util': 0.10.1 optional: true @@ -19511,7 +19677,7 @@ snapshots: '@orama/orama@3.1.18': {} - '@oxc-project/types@0.122.0': {} + '@oxc-project/types@0.124.0': {} '@pkgjs/parseargs@0.11.0': optional: true @@ -19531,10 +19697,10 @@ snapshots: - sugarss - terser - '@playwright/experimental-ct-react@1.51.1(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@playwright/experimental-ct-react@1.51.1(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.1)(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@playwright/experimental-ct-core': 1.51.1(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.1) - '@vitejs/plugin-react': 4.7.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitejs/plugin-react': 4.7.0(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) transitivePeerDependencies: - '@types/node' - less @@ -19551,11 +19717,11 @@ snapshots: dependencies: playwright: 1.51.1 - '@polar-sh/better-auth@1.8.3(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))))(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1)(zod@4.3.6)': + '@polar-sh/better-auth@1.8.3(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))))(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1)(zod@4.3.6)': dependencies: '@polar-sh/checkout': 0.2.0(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1) '@polar-sh/sdk': 0.42.5 - better-auth: 1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))) + better-auth: 1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))) zod: 4.3.6 transitivePeerDependencies: - '@stripe/react-stripe-js' @@ -20684,59 +20850,58 @@ snapshots: '@remix-run/router@1.23.2': {} - '@rolldown/binding-android-arm64@1.0.0-rc.12': + '@rolldown/binding-android-arm64@1.0.0-rc.15': optional: true - '@rolldown/binding-darwin-arm64@1.0.0-rc.12': + '@rolldown/binding-darwin-arm64@1.0.0-rc.15': optional: true - '@rolldown/binding-darwin-x64@1.0.0-rc.12': + '@rolldown/binding-darwin-x64@1.0.0-rc.15': optional: true - '@rolldown/binding-freebsd-x64@1.0.0-rc.12': + '@rolldown/binding-freebsd-x64@1.0.0-rc.15': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12': + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.15': optional: true - '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12': + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.15': optional: true - '@rolldown/binding-linux-arm64-musl@1.0.0-rc.12': + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.15': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12': + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.15': optional: true - '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12': + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.15': optional: true - '@rolldown/binding-linux-x64-gnu@1.0.0-rc.12': + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.15': optional: true - '@rolldown/binding-linux-x64-musl@1.0.0-rc.12': + '@rolldown/binding-linux-x64-musl@1.0.0-rc.15': optional: true - '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': + '@rolldown/binding-openharmony-arm64@1.0.0-rc.15': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.15': dependencies: - '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' + '@emnapi/core': 1.9.2 + '@emnapi/runtime': 1.9.2 + '@napi-rs/wasm-runtime': 1.1.4(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2) optional: true - '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12': + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.15': optional: true - '@rolldown/binding-win32-x64-msvc@1.0.0-rc.12': + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.15': optional: true '@rolldown/pluginutils@1.0.0-beta.27': {} - '@rolldown/pluginutils@1.0.0-rc.12': {} + '@rolldown/pluginutils@1.0.0-rc.15': {} '@rolldown/pluginutils@1.0.0-rc.7': {} @@ -21084,11 +21249,6 @@ snapshots: '@shikijs/types': 4.0.2 '@shikijs/vscode-textmate': 10.0.2 - '@shikijs/langs-precompiled@3.23.0': - dependencies: - '@shikijs/types': 3.23.0 - oniguruma-to-es: 4.3.5 - '@shikijs/langs-precompiled@4.0.2': dependencies: '@shikijs/types': 4.0.2 @@ -21581,12 +21741,12 @@ snapshots: postcss: 8.5.8 tailwindcss: 4.2.2 - '@tailwindcss/vite@4.2.2(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@tailwindcss/vite@4.2.2(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@tailwindcss/node': 4.2.2 '@tailwindcss/oxide': 4.2.2 tailwindcss: 4.2.2 - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) '@tanstack/react-store@0.7.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: @@ -21786,7 +21946,7 @@ snapshots: '@types/cors@2.8.19': dependencies: - '@types/node': 25.5.0 + '@types/node': 25.6.0 '@types/d3-array@3.2.2': {} @@ -21820,10 +21980,6 @@ snapshots: '@types/diff@6.0.0': {} - '@types/emoji-mart@3.0.14': - dependencies: - '@types/react': 19.2.14 - '@types/eslint-scope@3.7.7': dependencies: '@types/eslint': 9.6.1 @@ -21925,6 +22081,10 @@ snapshots: dependencies: undici-types: 6.21.0 + '@types/node@20.19.39': + dependencies: + undici-types: 6.21.0 + '@types/node@22.13.13': dependencies: undici-types: 6.20.0 @@ -21965,7 +22125,7 @@ snapshots: '@types/pixelmatch@5.2.6': dependencies: - '@types/node': 25.5.0 + '@types/node': 25.6.0 '@types/prop-types@15.7.15': {} @@ -22003,11 +22163,9 @@ snapshots: '@types/use-sync-external-store@1.5.0': {} - '@types/uuid@8.3.4': {} - '@types/ws@8.18.1': dependencies: - '@types/node': 25.5.0 + '@types/node': 25.6.0 '@types/yargs-parser@21.0.3': {} @@ -22400,12 +22558,12 @@ snapshots: '@vercel/oidc@3.0.5': {} - '@vitejs/devtools-kit@0.1.13(typescript@5.9.3)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0)': + '@vitejs/devtools-kit@0.1.13(typescript@5.9.3)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0)': dependencies: '@vitejs/devtools-rpc': 0.1.13(typescript@5.9.3)(ws@8.20.0) birpc: 4.0.0 ohash: 2.0.11 - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - typescript - ws @@ -22422,7 +22580,7 @@ snapshots: transitivePeerDependencies: - typescript - '@vitejs/plugin-react@4.7.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitejs/plugin-react@4.7.0(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) @@ -22430,21 +22588,21 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitejs/plugin-react@6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.7 - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) optionalDependencies: babel-plugin-react-compiler: 1.0.0 - '@vitejs/plugin-react@6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitejs/plugin-react@6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.7 - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) optionalDependencies: babel-plugin-react-compiler: 1.0.0 @@ -22457,33 +22615,33 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@vitest/spy': 4.1.2 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.11.5(@types/node@20.19.37)(typescript@5.9.3) - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@vitest/spy': 4.1.2 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.11.5(@types/node@25.5.0)(typescript@5.9.3) - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) optional: true - '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@vitest/spy': 4.1.2 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.11.5(@types/node@25.6.0)(typescript@5.9.3) - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) '@vitest/pretty-format@4.1.2': dependencies: @@ -22605,7 +22763,7 @@ snapshots: '@y-sweet/sdk@0.6.4': dependencies: - '@types/node': 20.19.37 + '@types/node': 20.19.39 '@yarnpkg/lockfile@1.1.0': {} @@ -22948,7 +23106,7 @@ snapshots: baseline-browser-mapping@2.10.17: {} - better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))): + better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))): dependencies: '@better-auth/core': 1.4.22(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.8(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0) '@better-auth/telemetry': 1.4.22(@better-auth/core@1.4.22(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.8(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0)) @@ -22968,7 +23126,7 @@ snapshots: pg: 8.20.0 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - vitest: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + vitest: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) better-call@1.1.8(zod@4.3.6): dependencies: @@ -23341,6 +23499,11 @@ snapshots: crypto-js@4.2.0: {} + css-tree@3.2.1: + dependencies: + mdn-data: 2.27.1 + source-map-js: 1.2.1 + cssesc@3.0.0: {} cssstyle@4.6.0: @@ -23395,6 +23558,13 @@ snapshots: whatwg-mimetype: 4.0.0 whatwg-url: 14.2.0 + data-urls@7.0.0(@noble/hashes@2.0.1): + dependencies: + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.1(@noble/hashes@2.0.1) + transitivePeerDependencies: + - '@noble/hashes' + data-view-buffer@1.0.2: dependencies: call-bound: 1.0.4 @@ -23536,6 +23706,15 @@ snapshots: xml: 1.0.1 xml-js: 1.6.11 + docx@9.6.1: + dependencies: + '@types/node': 25.6.0 + hash.js: 1.1.7 + jszip: 3.10.1 + nanoid: 5.1.7 + xml: 1.0.1 + xml-js: 1.6.11 + dom-accessibility-api@0.5.16: {} dom-helpers@5.2.1: @@ -23604,7 +23783,7 @@ snapshots: engine.io@6.6.6: dependencies: '@types/cors': 2.8.19 - '@types/node': 25.5.0 + '@types/node': 25.6.0 '@types/ws': 8.18.1 accepts: 1.3.8 base64id: 2.0.0 @@ -24529,7 +24708,7 @@ snapshots: transitivePeerDependencies: - supports-color - fumadocs-mdx@14.2.11(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + fumadocs-mdx@14.2.11(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@mdx-js/mdx': 3.1.1 '@standard-schema/spec': 1.1.0 @@ -24555,7 +24734,7 @@ snapshots: '@types/react': 19.2.14 next: 16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - supports-color @@ -24579,7 +24758,7 @@ snapshots: - supports-color - typescript - fumadocs-typescript@5.2.1(22723fcc923da32003fad920c4a650ee): + fumadocs-typescript@5.2.1(69d97b303e997e0c43bfefdd885c07a0): dependencies: estree-util-value-to-estree: 3.5.0 fumadocs-core: 16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6) @@ -24598,7 +24777,7 @@ snapshots: '@types/mdast': 4.0.4 '@types/react': 19.2.14 fumadocs-ui: '@fumadocs/base-ui@16.5.0(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tailwindcss@4.2.2)' - shiki: 3.23.0 + shiki: 4.0.2 transitivePeerDependencies: - supports-color @@ -24979,6 +25158,12 @@ snapshots: dependencies: whatwg-encoding: 3.1.1 + html-encoding-sniffer@6.0.0(@noble/hashes@2.0.1): + dependencies: + '@exodus/bytes': 1.15.0(@noble/hashes@2.0.1) + transitivePeerDependencies: + - '@noble/hashes' + html-to-text@9.0.5: dependencies: '@selderee/plugin-htmlparser2': 0.11.0 @@ -25343,7 +25528,7 @@ snapshots: jest-mock@30.3.0: dependencies: '@jest/types': 30.3.0 - '@types/node': 25.5.0 + '@types/node': 25.6.0 jest-util: 30.3.0 jest-regex-util@30.0.1: {} @@ -25351,7 +25536,7 @@ snapshots: jest-util@30.3.0: dependencies: '@jest/types': 30.3.0 - '@types/node': 25.5.0 + '@types/node': 25.6.0 chalk: 4.1.2 ci-info: 4.4.0 graceful-fs: 4.2.11 @@ -25422,6 +25607,34 @@ snapshots: - supports-color - utf-8-validate + jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0): + dependencies: + '@asamuzakjp/css-color': 5.1.11 + '@asamuzakjp/dom-selector': 7.0.10 + '@bramus/specificity': 2.4.2 + '@csstools/css-syntax-patches-for-csstree': 1.1.3(css-tree@3.2.1) + '@exodus/bytes': 1.15.0(@noble/hashes@2.0.1) + css-tree: 3.2.1 + data-urls: 7.0.0(@noble/hashes@2.0.1) + decimal.js: 10.6.0 + html-encoding-sniffer: 6.0.0(@noble/hashes@2.0.1) + is-potential-custom-element-name: 1.0.1 + lru-cache: 11.2.7 + parse5: 8.0.0 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 6.0.1 + undici: 7.25.0 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 8.0.1 + whatwg-mimetype: 5.0.0 + whatwg-url: 16.0.1(@noble/hashes@2.0.1) + xml-name-validator: 5.0.0 + optionalDependencies: + canvas: 3.1.0 + transitivePeerDependencies: + - '@noble/hashes' + jsesc@3.1.0: {} json-buffer@3.0.1: {} @@ -25809,6 +26022,8 @@ snapshots: dependencies: '@types/mdast': 4.0.4 + mdn-data@2.27.1: {} + mdurl@2.0.0: {} media-engine@1.0.3: {} @@ -26646,6 +26861,10 @@ snapshots: dependencies: entities: 6.0.1 + parse5@8.0.0: + dependencies: + entities: 6.0.1 + parseley@0.12.1: dependencies: leac: 0.6.0 @@ -27523,29 +27742,26 @@ snapshots: dependencies: glob: 10.5.0 - rolldown@1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0): + rolldown@1.0.0-rc.15: dependencies: - '@oxc-project/types': 0.122.0 - '@rolldown/pluginutils': 1.0.0-rc.12 + '@oxc-project/types': 0.124.0 + '@rolldown/pluginutils': 1.0.0-rc.15 optionalDependencies: - '@rolldown/binding-android-arm64': 1.0.0-rc.12 - '@rolldown/binding-darwin-arm64': 1.0.0-rc.12 - '@rolldown/binding-darwin-x64': 1.0.0-rc.12 - '@rolldown/binding-freebsd-x64': 1.0.0-rc.12 - '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.12 - '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.12 - '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.12 - '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.12 - '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.12 - '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.12 - '@rolldown/binding-linux-x64-musl': 1.0.0-rc.12 - '@rolldown/binding-openharmony-arm64': 1.0.0-rc.12 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) - '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.12 - '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.12 - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' + '@rolldown/binding-android-arm64': 1.0.0-rc.15 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.15 + '@rolldown/binding-darwin-x64': 1.0.0-rc.15 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.15 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.15 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.15 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.15 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.15 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.15 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.15 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.15 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.15 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.15 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.15 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.15 rollup-plugin-webpack-stats@0.2.6(rollup@4.60.1): dependencies: @@ -28095,7 +28311,7 @@ snapshots: lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.7 - tinyglobby: 0.2.16 + tinyglobby: 0.2.12 ts-interface-checker: 0.1.13 supports-color@7.2.0: @@ -28247,6 +28463,10 @@ snapshots: dependencies: punycode: 2.3.1 + tr46@6.0.0: + dependencies: + punycode: 2.3.1 + tree-kill@1.2.2: {} trim-lines@3.0.1: {} @@ -28398,6 +28618,8 @@ snapshots: undici@6.25.0: {} + undici@7.25.0: {} + unicode-canonical-property-names-ecmascript@2.0.1: {} unicode-match-property-ecmascript@2.0.0: @@ -28552,8 +28774,6 @@ snapshots: util-deprecate@1.0.2: {} - uuid@8.3.2: {} - uuid@9.0.1: {} valibot@1.3.1(typescript@5.9.3): @@ -28600,16 +28820,14 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 - vite-node@6.0.0(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): + vite-node@6.0.0(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): dependencies: cac: 7.0.0 es-module-lexer: 2.0.0 obug: 2.1.1 pathe: 2.0.3 - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - '@types/node' - '@vitejs/devtools' - esbuild @@ -28623,33 +28841,33 @@ snapshots: - tsx - yaml - vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@rollup/pluginutils': 4.2.1 '@types/eslint': 8.56.12 eslint: 8.57.1 rollup: 2.80.0 - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@rollup/pluginutils': 4.2.1 '@types/eslint': 8.56.12 eslint: 8.57.1 rollup: 2.80.0 - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vite-plugin-externalize-deps@0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vite-plugin-externalize-deps@0.10.0(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vite-plugin-externalize-deps@0.10.0(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vite-plugin-externalize-deps@0.10.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) - vite-plugin-inspect@12.0.0-beta.1(typescript@5.9.3)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0): + vite-plugin-inspect@12.0.0-beta.1(typescript@5.9.3)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0): dependencies: - '@vitejs/devtools-kit': 0.1.13(typescript@5.9.3)(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0) + '@vitejs/devtools-kit': 0.1.13(typescript@5.9.3)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0) ansis: 4.2.0 error-stack-parser-es: 1.0.5 obug: 2.1.1 @@ -28658,7 +28876,7 @@ snapshots: perfect-debounce: 2.1.0 sirv: 3.0.2 unplugin-utils: 0.3.1 - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - typescript - ws @@ -28674,13 +28892,13 @@ snapshots: lightningcss: 1.32.0 terser: 5.46.1 - vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): + vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 postcss: 8.5.8 - rolldown: 1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) - tinyglobby: 0.2.15 + rolldown: 1.0.0-rc.15 + tinyglobby: 0.2.16 optionalDependencies: '@types/node': 20.19.37 esbuild: 0.27.5 @@ -28689,17 +28907,14 @@ snapshots: terser: 5.46.1 tsx: 4.21.0 yaml: 2.8.3 - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' - vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): + vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 postcss: 8.5.8 - rolldown: 1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) - tinyglobby: 0.2.15 + rolldown: 1.0.0-rc.15 + tinyglobby: 0.2.16 optionalDependencies: '@types/node': 25.5.0 esbuild: 0.27.5 @@ -28708,18 +28923,15 @@ snapshots: terser: 5.46.1 tsx: 4.21.0 yaml: 2.8.3 - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' optional: true - vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): + vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 postcss: 8.5.8 - rolldown: 1.0.0-rc.12(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) - tinyglobby: 0.2.15 + rolldown: 1.0.0-rc.15 + tinyglobby: 0.2.16 optionalDependencies: '@types/node': 25.6.0 esbuild: 0.27.5 @@ -28728,9 +28940,6 @@ snapshots: terser: 5.46.1 tsx: 4.21.0 yaml: 2.8.3 - transitivePeerDependencies: - - '@emnapi/core' - - '@emnapi/runtime' vitest-tsconfig-paths@3.4.1: dependencies: @@ -28741,10 +28950,10 @@ snapshots: transitivePeerDependencies: - supports-color - vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@20.19.37)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@20.19.37)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@vitest/expect': 4.1.2 - '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/pretty-format': 4.1.2 '@vitest/runner': 4.1.2 '@vitest/snapshot': 4.1.2 @@ -28759,21 +28968,21 @@ snapshots: std-env: 4.0.0 tinybench: 2.9.0 tinyexec: 1.0.4 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 tinyrainbow: 3.1.0 - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.1 '@types/node': 20.19.37 - jsdom: 25.0.1(canvas@2.11.2) + jsdom: 29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0) transitivePeerDependencies: - msw - vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@vitest/expect': 4.1.2 - '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/pretty-format': 4.1.2 '@vitest/runner': 4.1.2 '@vitest/snapshot': 4.1.2 @@ -28788,22 +28997,22 @@ snapshots: std-env: 4.0.0 tinybench: 2.9.0 tinyexec: 1.0.4 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 tinyrainbow: 3.1.0 - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.1 '@types/node': 25.5.0 - jsdom: 25.0.1(canvas@2.11.2) + jsdom: 29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0) transitivePeerDependencies: - msw optional: true - vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@vitest/expect': 4.1.2 - '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/pretty-format': 4.1.2 '@vitest/runner': 4.1.2 '@vitest/snapshot': 4.1.2 @@ -28818,9 +29027,9 @@ snapshots: std-env: 4.0.0 tinybench: 2.9.0 tinyexec: 1.0.4 - tinyglobby: 0.2.15 + tinyglobby: 0.2.16 tinyrainbow: 3.1.0 - vite: 8.0.3(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.1 @@ -28829,6 +29038,35 @@ snapshots: transitivePeerDependencies: - msw + vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + dependencies: + '@vitest/expect': 4.1.2 + '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/pretty-format': 4.1.2 + '@vitest/runner': 4.1.2 + '@vitest/snapshot': 4.1.2 + '@vitest/spy': 4.1.2 + '@vitest/utils': 4.1.2 + es-module-lexer: 2.0.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.4 + std-env: 4.0.0 + tinybench: 2.9.0 + tinyexec: 1.0.4 + tinyglobby: 0.2.16 + tinyrainbow: 3.1.0 + vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + why-is-node-running: 2.3.0 + optionalDependencies: + '@opentelemetry/api': 1.9.1 + '@types/node': 25.6.0 + jsdom: 29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0) + transitivePeerDependencies: + - msw + w3c-keyname@2.2.8: {} w3c-xmlserializer@5.0.0: @@ -28862,6 +29100,8 @@ snapshots: webidl-conversions@7.0.0: {} + webidl-conversions@8.0.1: {} + webpack-sources@3.3.4: {} webpack@5.105.4(esbuild@0.27.5): @@ -28902,11 +29142,21 @@ snapshots: whatwg-mimetype@4.0.0: {} + whatwg-mimetype@5.0.0: {} + whatwg-url@14.2.0: dependencies: tr46: 5.1.1 webidl-conversions: 7.0.0 + whatwg-url@16.0.1(@noble/hashes@2.0.1): + dependencies: + '@exodus/bytes': 1.15.0(@noble/hashes@2.0.1) + tr46: 6.0.0 + webidl-conversions: 8.0.1 + transitivePeerDependencies: + - '@noble/hashes' + whatwg-url@5.0.0: dependencies: tr46: 0.0.3 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 2d36a69c91..d922a5b796 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -9,7 +9,6 @@ packages: preferWorkspacePackages: true linkWorkspacePackages: true gitChecks: false -storeDir: ./node_modules/.pnpm-store publicHoistPattern: # We have been preferring to use `prosemirror-*` packages instead of `@tiptap/pm` packages - "prosemirror-*" diff --git a/tests/nextjs-test-app/setup.sh b/tests/nextjs-test-app/setup.sh index 20c0abeddc..7eefa2f8a4 100755 --- a/tests/nextjs-test-app/setup.sh +++ b/tests/nextjs-test-app/setup.sh @@ -23,10 +23,10 @@ fi rm -rf "$TARBALLS_DIR" mkdir -p "$TARBALLS_DIR" -# Pack each package +# Pack each package (use pnpm pack so workspace:* refs are resolved to versions) for pkg in core react server-util mantine; do cd "$PACKAGES_DIR/$pkg" - npm pack --pack-destination "$TARBALLS_DIR" 2>/dev/null + pnpm pack --pack-destination "$TARBALLS_DIR" 2>/dev/null done # Update package.json to point to tarballs diff --git a/tests/package.json b/tests/package.json index 35a3cef0de..ea7da9e138 100644 --- a/tests/package.json +++ b/tests/package.json @@ -30,7 +30,7 @@ "react-dom": "^19.2.5", "react-icons": "^5.5.0", "rimraf": "^5.0.10", - "vite": "^8.0.3", + "vite": "^8.0.8", "vite-plugin-eslint": "^1.8.1", "vitest": "^4.1.2" }, From 050ec3028c7cb71a08efff61e75b2728bc8154ee Mon Sep 17 00:00:00 2001 From: Nick Perez Date: Mon, 20 Apr 2026 14:21:43 +0200 Subject: [PATCH 14/76] ci(fresh-install): bump examples & playground in lockstep with packages (#2660) --- .github/workflows/fresh-install-tests.yml | 18 +++++++++++++++--- .../NumberedListItem/IndexingPlugin.test.ts | 15 ++++++++++++++- 2 files changed, 29 insertions(+), 4 deletions(-) diff --git a/.github/workflows/fresh-install-tests.yml b/.github/workflows/fresh-install-tests.yml index 6596724f76..6d6ed4a452 100644 --- a/.github/workflows/fresh-install-tests.yml +++ b/.github/workflows/fresh-install-tests.yml @@ -11,9 +11,6 @@ name: Fresh Install Tests # so test tooling churn doesn't cause false positives. on: - push: - branches: - - package-upgrades schedule: - cron: "0 2 * * *" # Daily at 02:00 UTC workflow_dispatch: # Allow manual runs @@ -67,6 +64,19 @@ jobs: echo "Updating prod deps for: $FILTERS" eval pnpm update --prod $FILTERS + - id: dedupe_deps + name: Dedupe transitive dependencies + # After bumping the publishable packages' prod deps, collapse any + # duplicate transitive resolutions (e.g. @tiptap/core + @tiptap/pm) + # that would otherwise differ between the updated publishable packages + # and the un-updated examples/playground. Without this, TypeScript + # treats the two copies' exports as unrelated types and example-editor + # fails to build (TS2322 on Extension vs AnyExtension). + # Dedupe only rewrites the lockfile — it does NOT modify package.json, + # so the examples' "@blocknote/*": "latest" specs (which is what + # CodeSandbox users see) stay intact. + run: pnpm dedupe + - id: build_packages name: Build packages run: pnpm run build @@ -106,6 +116,8 @@ jobs: failed_step="Install dependencies" elif [ "${{ steps.update_prod_deps.outcome }}" = "failure" ]; then failed_step="Update prod deps of published packages" + elif [ "${{ steps.dedupe_deps.outcome }}" = "failure" ]; then + failed_step="Dedupe transitive dependencies" elif [ "${{ steps.build_packages.outcome }}" = "failure" ]; then failed_step="Build packages" elif [ "${{ steps.run_unit_tests.outcome }}" = "failure" ]; then diff --git a/packages/core/src/blocks/ListItem/NumberedListItem/IndexingPlugin.test.ts b/packages/core/src/blocks/ListItem/NumberedListItem/IndexingPlugin.test.ts index d10d4b08f1..433fa47806 100644 --- a/packages/core/src/blocks/ListItem/NumberedListItem/IndexingPlugin.test.ts +++ b/packages/core/src/blocks/ListItem/NumberedListItem/IndexingPlugin.test.ts @@ -1,5 +1,5 @@ import { Selection } from "prosemirror-state"; -import { describe, expect, it } from "vitest"; +import { afterEach, describe, expect, it } from "vitest"; import { BlockNoteEditor } from "../../../editor/BlockNoteEditor.js"; @@ -9,9 +9,22 @@ import { BlockNoteEditor } from "../../../editor/BlockNoteEditor.js"; const PLUGIN_KEY = "numbered-list-indexing-decorations$"; +// Track editors created in each test so we can unmount them in afterEach — +// otherwise prosemirror-view's DOMObserver leaves a setTimeout alive that +// fires after vitest tears down jsdom, throwing +// `ReferenceError: document is not defined` and failing the run. +const activeEditors: BlockNoteEditor[] = []; + +afterEach(() => { + while (activeEditors.length) { + activeEditors.pop()!.unmount(); + } +}); + function createEditor() { const editor = BlockNoteEditor.create(); editor.mount(document.createElement("div")); + activeEditors.push(editor); return editor; } From 96ae499c8d9878da1ca68c0489654b8ffa2e7b0c Mon Sep 17 00:00:00 2001 From: Matthew Lipski <50169049+matthewlipski@users.noreply.github.com> Date: Mon, 20 Apr 2026 18:51:51 +0200 Subject: [PATCH 15/76] fix: Inserting link removes comment & add comment button click buggy (#2620) * Made inserting links not call `insertText` when text is the same * test: add e2e test for preserving marks when editing a link (#2573) * Fixed some comments UI issues, updated test and added comments testing example * Updated test * Fixed failing link toolbar tests * Small fix * Implemented PR feedback * Fixed example generated `package.json` files * Updated lock file * Changed example number * Updated lock file --------- Co-authored-by: mianguyen --- docs/package.json | 2 +- .../01-basic/03-multi-column/package.json | 4 +- examples/02-backend/03-s3/package.json | 6 +-- .../package.json | 4 +- .../11-uppy-file-panel/package.json | 4 +- .../13-custom-ui/package.json | 6 +-- .../04-theming/06-code-block/package.json | 4 +- .../07-custom-code-block/.bnexample.json | 10 ++-- .../07-custom-code-block/package.json | 10 ++-- .../05-converting-blocks-to-pdf/package.json | 8 +-- .../06-converting-blocks-to-docx/package.json | 6 +-- .../07-converting-blocks-to-odt/package.json | 6 +-- .../package.json | 6 +-- .../02-liveblocks/package.json | 10 ++-- .../07-collaboration/03-y-sweet/package.json | 4 +- .../07-collaboration/05-comments/package.json | 4 +- .../09-comments-testing/.bnexample.json | 9 ++++ .../09-comments-testing/README.md | 3 ++ .../09-comments-testing/index.html | 14 ++++++ .../09-comments-testing/main.tsx | 11 +++++ .../09-comments-testing/package.json | 32 ++++++++++++ .../09-comments-testing/src/App.tsx | 44 +++++++++++++++++ .../09-comments-testing/tsconfig.json | 36 ++++++++++++++ .../09-comments-testing/vite.config.ts | 32 ++++++++++++ .../01-tiptap-arrow-conversion/package.json | 4 +- examples/09-ai/01-minimal/package.json | 6 +-- examples/09-ai/02-playground/package.json | 6 +-- .../03-custom-ai-menu-items/package.json | 4 +- .../09-ai/04-with-collaboration/package.json | 4 +- .../09-ai/05-manual-execution/package.json | 4 +- .../06-client-side-transport/package.json | 8 +-- .../09-ai/07-server-persistence/package.json | 6 +-- packages/core/src/comments/extension.ts | 5 ++ .../core/src/editor/managers/StyleManager.ts | 7 ++- .../src/extensions/LinkToolbar/LinkToolbar.ts | 7 ++- .../template-react/package.json.template.tsx | 4 +- .../components/Comments/FloatingComposer.tsx | 26 +++++++++- playground/src/examples.gen.tsx | 34 +++++++++++-- pnpm-lock.yaml | 49 +++++++++++++++++++ tests/src/end-to-end/ariakit/ariakit.test.ts | 2 + .../src/end-to-end/comments/comments.test.ts | 35 +++++++++++++ tests/src/end-to-end/shadcn/shadcn.test.ts | 2 + tests/src/end-to-end/theming/theming.test.ts | 2 + tests/src/utils/const.ts | 4 ++ 44 files changed, 415 insertions(+), 79 deletions(-) create mode 100644 examples/07-collaboration/09-comments-testing/.bnexample.json create mode 100644 examples/07-collaboration/09-comments-testing/README.md create mode 100644 examples/07-collaboration/09-comments-testing/index.html create mode 100644 examples/07-collaboration/09-comments-testing/main.tsx create mode 100644 examples/07-collaboration/09-comments-testing/package.json create mode 100644 examples/07-collaboration/09-comments-testing/src/App.tsx create mode 100644 examples/07-collaboration/09-comments-testing/tsconfig.json create mode 100644 examples/07-collaboration/09-comments-testing/vite.config.ts create mode 100644 tests/src/end-to-end/comments/comments.test.ts diff --git a/docs/package.json b/docs/package.json index 0ffbc251cc..bcd31a57ea 100644 --- a/docs/package.json +++ b/docs/package.json @@ -131,4 +131,4 @@ "tw-animate-css": "^1.4.0", "typescript": "^5.9.3" } -} +} \ No newline at end of file diff --git a/examples/01-basic/03-multi-column/package.json b/examples/01-basic/03-multi-column/package.json index 482c7409d8..590b6adc07 100644 --- a/examples/01-basic/03-multi-column/package.json +++ b/examples/01-basic/03-multi-column/package.json @@ -16,12 +16,12 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@blocknote/xl-multi-column": "latest", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", "react": "^19.2.3", - "react-dom": "^19.2.3" + "react-dom": "^19.2.3", + "@blocknote/xl-multi-column": "latest" }, "devDependencies": { "@types/react": "^19.2.3", diff --git a/examples/02-backend/03-s3/package.json b/examples/02-backend/03-s3/package.json index 32f939f061..2c2c249b08 100644 --- a/examples/02-backend/03-s3/package.json +++ b/examples/02-backend/03-s3/package.json @@ -11,8 +11,6 @@ "preview": "vite preview" }, "dependencies": { - "@aws-sdk/client-s3": "^3.609.0", - "@aws-sdk/s3-request-presigner": "^3.609.0", "@blocknote/ariakit": "latest", "@blocknote/core": "latest", "@blocknote/mantine": "latest", @@ -22,7 +20,9 @@ "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", "react": "^19.2.3", - "react-dom": "^19.2.3" + "react-dom": "^19.2.3", + "@aws-sdk/client-s3": "^3.609.0", + "@aws-sdk/s3-request-presigner": "^3.609.0" }, "devDependencies": { "@types/react": "^19.2.3", diff --git a/examples/02-backend/04-rendering-static-documents/package.json b/examples/02-backend/04-rendering-static-documents/package.json index 14c1dd6aa7..41aeab8c5c 100644 --- a/examples/02-backend/04-rendering-static-documents/package.json +++ b/examples/02-backend/04-rendering-static-documents/package.json @@ -15,13 +15,13 @@ "@blocknote/core": "latest", "@blocknote/mantine": "latest", "@blocknote/react": "latest", - "@blocknote/server-util": "latest", "@blocknote/shadcn": "latest", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", "react": "^19.2.3", - "react-dom": "^19.2.3" + "react-dom": "^19.2.3", + "@blocknote/server-util": "latest" }, "devDependencies": { "@types/react": "^19.2.3", diff --git a/examples/03-ui-components/11-uppy-file-panel/package.json b/examples/03-ui-components/11-uppy-file-panel/package.json index d65faa9792..5523df0951 100644 --- a/examples/03-ui-components/11-uppy-file-panel/package.json +++ b/examples/03-ui-components/11-uppy-file-panel/package.json @@ -19,6 +19,8 @@ "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", + "react": "^19.2.3", + "react-dom": "^19.2.3", "@uppy/core": "^3.13.1", "@uppy/dashboard": "^3.9.1", "@uppy/drag-drop": "^3.1.1", @@ -30,8 +32,6 @@ "@uppy/status-bar": "^3.1.1", "@uppy/webcam": "^3.4.2", "@uppy/xhr-upload": "^3.4.0", - "react": "^19.2.3", - "react-dom": "^19.2.3", "react-icons": "^5.5.0" }, "devDependencies": { diff --git a/examples/03-ui-components/13-custom-ui/package.json b/examples/03-ui-components/13-custom-ui/package.json index 1c45dea04a..97585870e0 100644 --- a/examples/03-ui-components/13-custom-ui/package.json +++ b/examples/03-ui-components/13-custom-ui/package.json @@ -19,10 +19,10 @@ "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", - "@mui/icons-material": "^5.16.1", - "@mui/material": "^5.16.1", "react": "^19.2.3", - "react-dom": "^19.2.3" + "react-dom": "^19.2.3", + "@mui/icons-material": "^5.16.1", + "@mui/material": "^5.16.1" }, "devDependencies": { "@types/react": "^19.2.3", diff --git a/examples/04-theming/06-code-block/package.json b/examples/04-theming/06-code-block/package.json index dd4d7472f5..037641e740 100644 --- a/examples/04-theming/06-code-block/package.json +++ b/examples/04-theming/06-code-block/package.json @@ -12,7 +12,6 @@ }, "dependencies": { "@blocknote/ariakit": "latest", - "@blocknote/code-block": "latest", "@blocknote/core": "latest", "@blocknote/mantine": "latest", "@blocknote/react": "latest", @@ -21,7 +20,8 @@ "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", "react": "^19.2.3", - "react-dom": "^19.2.3" + "react-dom": "^19.2.3", + "@blocknote/code-block": "latest" }, "devDependencies": { "@types/react": "^19.2.3", diff --git a/examples/04-theming/07-custom-code-block/.bnexample.json b/examples/04-theming/07-custom-code-block/.bnexample.json index 5776d2de67..84166710e3 100644 --- a/examples/04-theming/07-custom-code-block/.bnexample.json +++ b/examples/04-theming/07-custom-code-block/.bnexample.json @@ -5,10 +5,10 @@ "tags": ["Basic"], "dependencies": { "@blocknote/code-block": "latest", - "@shikijs/core": "^3.19.0", - "@shikijs/engine-javascript": "^3.19.0", - "@shikijs/langs-precompiled": "^3.19.0", - "@shikijs/themes": "^3.19.0", - "@shikijs/types": "^3.19.0" + "@shikijs/core": "^4", + "@shikijs/engine-javascript": "^4", + "@shikijs/langs-precompiled": "^4", + "@shikijs/themes": "^4", + "@shikijs/types": "^4" } } diff --git a/examples/04-theming/07-custom-code-block/package.json b/examples/04-theming/07-custom-code-block/package.json index df3d173512..d381ab18f1 100644 --- a/examples/04-theming/07-custom-code-block/package.json +++ b/examples/04-theming/07-custom-code-block/package.json @@ -12,7 +12,6 @@ }, "dependencies": { "@blocknote/ariakit": "latest", - "@blocknote/code-block": "latest", "@blocknote/core": "latest", "@blocknote/mantine": "latest", "@blocknote/react": "latest", @@ -20,13 +19,14 @@ "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", + "react": "^19.2.3", + "react-dom": "^19.2.3", + "@blocknote/code-block": "latest", "@shikijs/core": "^4", "@shikijs/engine-javascript": "^4", "@shikijs/langs-precompiled": "^4", "@shikijs/themes": "^4", - "@shikijs/types": "^4", - "react": "^19.2.3", - "react-dom": "^19.2.3" + "@shikijs/types": "^4" }, "devDependencies": { "@types/react": "^19.2.3", @@ -34,4 +34,4 @@ "@vitejs/plugin-react": "^6.0.1", "vite": "^8.0.8" } -} +} \ No newline at end of file diff --git a/examples/05-interoperability/05-converting-blocks-to-pdf/package.json b/examples/05-interoperability/05-converting-blocks-to-pdf/package.json index a470b3892e..f402e292d7 100644 --- a/examples/05-interoperability/05-converting-blocks-to-pdf/package.json +++ b/examples/05-interoperability/05-converting-blocks-to-pdf/package.json @@ -16,14 +16,14 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@blocknote/xl-multi-column": "latest", - "@blocknote/xl-pdf-exporter": "latest", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", - "@react-pdf/renderer": "^4.3.0", "react": "^19.2.3", - "react-dom": "^19.2.3" + "react-dom": "^19.2.3", + "@blocknote/xl-pdf-exporter": "latest", + "@blocknote/xl-multi-column": "latest", + "@react-pdf/renderer": "^4.3.0" }, "devDependencies": { "@types/react": "^19.2.3", diff --git a/examples/05-interoperability/06-converting-blocks-to-docx/package.json b/examples/05-interoperability/06-converting-blocks-to-docx/package.json index dead9892bb..9f29639db1 100644 --- a/examples/05-interoperability/06-converting-blocks-to-docx/package.json +++ b/examples/05-interoperability/06-converting-blocks-to-docx/package.json @@ -16,13 +16,13 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@blocknote/xl-docx-exporter": "latest", - "@blocknote/xl-multi-column": "latest", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", "react": "^19.2.3", - "react-dom": "^19.2.3" + "react-dom": "^19.2.3", + "@blocknote/xl-docx-exporter": "latest", + "@blocknote/xl-multi-column": "latest" }, "devDependencies": { "@types/react": "^19.2.3", diff --git a/examples/05-interoperability/07-converting-blocks-to-odt/package.json b/examples/05-interoperability/07-converting-blocks-to-odt/package.json index afc26ae220..4c30dd0d65 100644 --- a/examples/05-interoperability/07-converting-blocks-to-odt/package.json +++ b/examples/05-interoperability/07-converting-blocks-to-odt/package.json @@ -16,13 +16,13 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@blocknote/xl-multi-column": "latest", - "@blocknote/xl-odt-exporter": "latest", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", "react": "^19.2.3", - "react-dom": "^19.2.3" + "react-dom": "^19.2.3", + "@blocknote/xl-odt-exporter": "latest", + "@blocknote/xl-multi-column": "latest" }, "devDependencies": { "@types/react": "^19.2.3", diff --git a/examples/05-interoperability/08-converting-blocks-to-react-email/package.json b/examples/05-interoperability/08-converting-blocks-to-react-email/package.json index d5a60f1f1e..15b4292fd7 100644 --- a/examples/05-interoperability/08-converting-blocks-to-react-email/package.json +++ b/examples/05-interoperability/08-converting-blocks-to-react-email/package.json @@ -16,13 +16,13 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@blocknote/xl-email-exporter": "latest", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", - "@react-email/render": "^2.0.4", "react": "^19.2.3", - "react-dom": "^19.2.3" + "react-dom": "^19.2.3", + "@blocknote/xl-email-exporter": "latest", + "@react-email/render": "^2.0.4" }, "devDependencies": { "@types/react": "^19.2.3", diff --git a/examples/07-collaboration/02-liveblocks/package.json b/examples/07-collaboration/02-liveblocks/package.json index 8da1946fac..52e5f94320 100644 --- a/examples/07-collaboration/02-liveblocks/package.json +++ b/examples/07-collaboration/02-liveblocks/package.json @@ -16,16 +16,16 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@liveblocks/client": "^3.17.0", - "@liveblocks/react": "^3.17.0", - "@liveblocks/react-blocknote": "^3.17.0", - "@liveblocks/react-tiptap": "^3.17.0", - "@liveblocks/react-ui": "^3.17.0", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", "react": "^19.2.3", "react-dom": "^19.2.3", + "@liveblocks/client": "^3.17.0", + "@liveblocks/react": "^3.17.0", + "@liveblocks/react-blocknote": "^3.17.0", + "@liveblocks/react-tiptap": "^3.17.0", + "@liveblocks/react-ui": "^3.17.0", "yjs": "^13.6.27" }, "devDependencies": { diff --git a/examples/07-collaboration/03-y-sweet/package.json b/examples/07-collaboration/03-y-sweet/package.json index 8270d8195d..e1dcc579ca 100644 --- a/examples/07-collaboration/03-y-sweet/package.json +++ b/examples/07-collaboration/03-y-sweet/package.json @@ -19,9 +19,9 @@ "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", - "@y-sweet/react": "^0.6.3", "react": "^19.2.3", - "react-dom": "^19.2.3" + "react-dom": "^19.2.3", + "@y-sweet/react": "^0.6.3" }, "devDependencies": { "@types/react": "^19.2.3", diff --git a/examples/07-collaboration/05-comments/package.json b/examples/07-collaboration/05-comments/package.json index 7f675d3e2d..e1902158f5 100644 --- a/examples/07-collaboration/05-comments/package.json +++ b/examples/07-collaboration/05-comments/package.json @@ -19,9 +19,9 @@ "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", - "@y-sweet/react": "^0.6.3", "react": "^19.2.3", - "react-dom": "^19.2.3" + "react-dom": "^19.2.3", + "@y-sweet/react": "^0.6.3" }, "devDependencies": { "@types/react": "^19.2.3", diff --git a/examples/07-collaboration/09-comments-testing/.bnexample.json b/examples/07-collaboration/09-comments-testing/.bnexample.json new file mode 100644 index 0000000000..5d7d986420 --- /dev/null +++ b/examples/07-collaboration/09-comments-testing/.bnexample.json @@ -0,0 +1,9 @@ +{ + "playground": true, + "docs": false, + "author": "matthewlipski", + "tags": ["Advanced", "Comments", "Testing"], + "dependencies": { + "yjs": "^13.6.27" + } +} diff --git a/examples/07-collaboration/09-comments-testing/README.md b/examples/07-collaboration/09-comments-testing/README.md new file mode 100644 index 0000000000..b59f2ecd1b --- /dev/null +++ b/examples/07-collaboration/09-comments-testing/README.md @@ -0,0 +1,3 @@ +# Comments Testing + +A minimal comments example used for end-to-end testing. Uses a local Y.Doc (no collaboration provider) with a single hardcoded editor user. diff --git a/examples/07-collaboration/09-comments-testing/index.html b/examples/07-collaboration/09-comments-testing/index.html new file mode 100644 index 0000000000..f50976be79 --- /dev/null +++ b/examples/07-collaboration/09-comments-testing/index.html @@ -0,0 +1,14 @@ + + + + + Comments Testing + + + +
+ + + diff --git a/examples/07-collaboration/09-comments-testing/main.tsx b/examples/07-collaboration/09-comments-testing/main.tsx new file mode 100644 index 0000000000..677c7f7eed --- /dev/null +++ b/examples/07-collaboration/09-comments-testing/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/07-collaboration/09-comments-testing/package.json b/examples/07-collaboration/09-comments-testing/package.json new file mode 100644 index 0000000000..070af0d48e --- /dev/null +++ b/examples/07-collaboration/09-comments-testing/package.json @@ -0,0 +1,32 @@ +{ + "name": "@blocknote/example-collaboration-comments-testing", + "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY", + "type": "module", + "private": true, + "version": "0.12.4", + "scripts": { + "start": "vite", + "dev": "vite", + "build:prod": "tsc && vite build", + "preview": "vite preview" + }, + "dependencies": { + "@blocknote/ariakit": "latest", + "@blocknote/core": "latest", + "@blocknote/mantine": "latest", + "@blocknote/react": "latest", + "@blocknote/shadcn": "latest", + "@mantine/core": "^8.3.11", + "@mantine/hooks": "^8.3.11", + "@mantine/utils": "^6.0.22", + "react": "^19.2.3", + "react-dom": "^19.2.3", + "yjs": "^13.6.27" + }, + "devDependencies": { + "@types/react": "^19.2.3", + "@types/react-dom": "^19.2.3", + "@vitejs/plugin-react": "^6.0.1", + "vite": "^8.0.8" + } +} \ No newline at end of file diff --git a/examples/07-collaboration/09-comments-testing/src/App.tsx b/examples/07-collaboration/09-comments-testing/src/App.tsx new file mode 100644 index 0000000000..3bada358c1 --- /dev/null +++ b/examples/07-collaboration/09-comments-testing/src/App.tsx @@ -0,0 +1,44 @@ +"use client"; + +import { + CommentsExtension, + DefaultThreadStoreAuth, + YjsThreadStore, +} from "@blocknote/core/comments"; +import { BlockNoteView } from "@blocknote/mantine"; +import "@blocknote/mantine/style.css"; +import { useCreateBlockNote } from "@blocknote/react"; +import { useMemo } from "react"; +import * as Y from "yjs"; + +const USER = { + id: "1", + username: "John Doe", + avatarUrl: "https://placehold.co/100x100?text=John", + role: "editor" as const, +}; + +async function resolveUsers(userIds: string[]) { + return [USER].filter((user) => userIds.includes(user.id)); +} + +export default function App() { + const doc = useMemo(() => new Y.Doc(), []); + + const threadStore = useMemo(() => { + return new YjsThreadStore( + USER.id, + doc.getMap("threads"), + new DefaultThreadStoreAuth(USER.id, USER.role), + ); + }, [doc]); + + const editor = useCreateBlockNote( + { + extensions: [CommentsExtension({ threadStore, resolveUsers })], + }, + [threadStore], + ); + + return ; +} diff --git a/examples/07-collaboration/09-comments-testing/tsconfig.json b/examples/07-collaboration/09-comments-testing/tsconfig.json new file mode 100644 index 0000000000..dbe3e6f62d --- /dev/null +++ b/examples/07-collaboration/09-comments-testing/tsconfig.json @@ -0,0 +1,36 @@ +{ + "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY", + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "lib": [ + "DOM", + "DOM.Iterable", + "ESNext" + ], + "allowJs": false, + "skipLibCheck": true, + "esModuleInterop": false, + "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/" + } + ] +} \ No newline at end of file diff --git a/examples/07-collaboration/09-comments-testing/vite.config.ts b/examples/07-collaboration/09-comments-testing/vite.config.ts new file mode 100644 index 0000000000..f62ab20bc2 --- /dev/null +++ b/examples/07-collaboration/09-comments-testing/vite.config.ts @@ -0,0 +1,32 @@ +// 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"; +// import eslintPlugin from "vite-plugin-eslint"; +// https://vitejs.dev/config/ +export default defineConfig((conf) => ({ + 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), + }, +})); diff --git a/examples/08-extensions/01-tiptap-arrow-conversion/package.json b/examples/08-extensions/01-tiptap-arrow-conversion/package.json index 5bca11ea17..b1055a283f 100644 --- a/examples/08-extensions/01-tiptap-arrow-conversion/package.json +++ b/examples/08-extensions/01-tiptap-arrow-conversion/package.json @@ -19,9 +19,9 @@ "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", - "@tiptap/core": "^3.13.0", "react": "^19.2.3", - "react-dom": "^19.2.3" + "react-dom": "^19.2.3", + "@tiptap/core": "^3.13.0" }, "devDependencies": { "@types/react": "^19.2.3", diff --git a/examples/09-ai/01-minimal/package.json b/examples/09-ai/01-minimal/package.json index 92c27364e7..d78b179eb4 100644 --- a/examples/09-ai/01-minimal/package.json +++ b/examples/09-ai/01-minimal/package.json @@ -16,13 +16,13 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@blocknote/xl-ai": "latest", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", - "ai": "^6.0.5", "react": "^19.2.3", - "react-dom": "^19.2.3" + "react-dom": "^19.2.3", + "@blocknote/xl-ai": "latest", + "ai": "^6.0.5" }, "devDependencies": { "@types/react": "^19.2.3", diff --git a/examples/09-ai/02-playground/package.json b/examples/09-ai/02-playground/package.json index ed3c58dab8..7824de1c5b 100644 --- a/examples/09-ai/02-playground/package.json +++ b/examples/09-ai/02-playground/package.json @@ -16,13 +16,13 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@blocknote/xl-ai": "latest", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", - "ai": "^6.0.5", "react": "^19.2.3", - "react-dom": "^19.2.3" + "react-dom": "^19.2.3", + "@blocknote/xl-ai": "latest", + "ai": "^6.0.5" }, "devDependencies": { "@types/react": "^19.2.3", diff --git a/examples/09-ai/03-custom-ai-menu-items/package.json b/examples/09-ai/03-custom-ai-menu-items/package.json index fb628a4aa9..d6a2573f8e 100644 --- a/examples/09-ai/03-custom-ai-menu-items/package.json +++ b/examples/09-ai/03-custom-ai-menu-items/package.json @@ -16,13 +16,13 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@blocknote/xl-ai": "latest", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", - "ai": "^6.0.5", "react": "^19.2.3", "react-dom": "^19.2.3", + "@blocknote/xl-ai": "latest", + "ai": "^6.0.5", "react-icons": "^5.5.0" }, "devDependencies": { diff --git a/examples/09-ai/04-with-collaboration/package.json b/examples/09-ai/04-with-collaboration/package.json index 75daec4c9f..ef36c46e88 100644 --- a/examples/09-ai/04-with-collaboration/package.json +++ b/examples/09-ai/04-with-collaboration/package.json @@ -16,13 +16,13 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@blocknote/xl-ai": "latest", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", - "ai": "^6.0.5", "react": "^19.2.3", "react-dom": "^19.2.3", + "@blocknote/xl-ai": "latest", + "ai": "^6.0.5", "y-partykit": "^0.0.25", "yjs": "^13.6.27" }, diff --git a/examples/09-ai/05-manual-execution/package.json b/examples/09-ai/05-manual-execution/package.json index a1b130faa8..dd5e66ef92 100644 --- a/examples/09-ai/05-manual-execution/package.json +++ b/examples/09-ai/05-manual-execution/package.json @@ -16,13 +16,13 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@blocknote/xl-ai": "latest", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", - "ai": "^6.0.5", "react": "^19.2.3", "react-dom": "^19.2.3", + "@blocknote/xl-ai": "latest", + "ai": "^6.0.5", "y-partykit": "^0.0.25", "yjs": "^13.6.27" }, diff --git a/examples/09-ai/06-client-side-transport/package.json b/examples/09-ai/06-client-side-transport/package.json index 8cc1777300..64b09bc543 100644 --- a/examples/09-ai/06-client-side-transport/package.json +++ b/examples/09-ai/06-client-side-transport/package.json @@ -11,19 +11,19 @@ "preview": "vite preview" }, "dependencies": { - "@ai-sdk/groq": "^3.0.2", "@blocknote/ariakit": "latest", "@blocknote/core": "latest", "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@blocknote/xl-ai": "latest", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", - "ai": "^6.0.5", "react": "^19.2.3", - "react-dom": "^19.2.3" + "react-dom": "^19.2.3", + "@ai-sdk/groq": "^3.0.2", + "@blocknote/xl-ai": "latest", + "ai": "^6.0.5" }, "devDependencies": { "@types/react": "^19.2.3", diff --git a/examples/09-ai/07-server-persistence/package.json b/examples/09-ai/07-server-persistence/package.json index 0ee494038b..0ac67163a2 100644 --- a/examples/09-ai/07-server-persistence/package.json +++ b/examples/09-ai/07-server-persistence/package.json @@ -16,13 +16,13 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@blocknote/xl-ai": "latest", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "@mantine/utils": "^6.0.22", - "ai": "^6.0.5", "react": "^19.2.3", - "react-dom": "^19.2.3" + "react-dom": "^19.2.3", + "@blocknote/xl-ai": "latest", + "ai": "^6.0.5" }, "devDependencies": { "@types/react": "^19.2.3", diff --git a/packages/core/src/comments/extension.ts b/packages/core/src/comments/extension.ts index 4e8e566cef..515a740c34 100644 --- a/packages/core/src/comments/extension.ts +++ b/packages/core/src/comments/extension.ts @@ -306,6 +306,11 @@ export const CommentsExtension = createExtension( selectedThreadId: undefined, pendingComment: true, })); + // Use `editor.domElement` as `editor.focus()` doesn't do anything if + // the editor is non-editable. Editor needs to be focused as + // `showSelection` will otherwise trigger a selection update which + // triggers `stopPendingComment`. + editor.domElement?.focus(); editor .getExtension(ShowSelectionExtension) ?.showSelection(true, "comments"); diff --git a/packages/core/src/editor/managers/StyleManager.ts b/packages/core/src/editor/managers/StyleManager.ts index e03c46a6d1..e8ffa99881 100644 --- a/packages/core/src/editor/managers/StyleManager.ts +++ b/packages/core/src/editor/managers/StyleManager.ts @@ -169,7 +169,12 @@ export class StyleManager< const { from, to } = tr.selection; if (text) { - tr.insertText(text, from, to).addMark(from, from + text.length, mark); + const existingText = tr.doc.textBetween(from, to); + if (text !== existingText) { + tr.insertText(text, from, to); + } + + tr.addMark(from, from + text.length, mark); } else { tr.setSelection(TextSelection.create(tr.doc, to)).addMark( from, diff --git a/packages/core/src/extensions/LinkToolbar/LinkToolbar.ts b/packages/core/src/extensions/LinkToolbar/LinkToolbar.ts index 1a61d67d44..f190bc97e6 100644 --- a/packages/core/src/extensions/LinkToolbar/LinkToolbar.ts +++ b/packages/core/src/extensions/LinkToolbar/LinkToolbar.ts @@ -88,7 +88,12 @@ export const LinkToolbarExtension = createExtension(({ editor }) => { if (!range) { return; } - tr.insertText(text, range.from, range.to); + + const existingText = tr.doc.textBetween(range.from, range.to); + if (text !== existingText) { + tr.insertText(text, range.from, range.to); + } + tr.addMark( range.from, range.from + text.length, diff --git a/packages/dev-scripts/examples/template-react/package.json.template.tsx b/packages/dev-scripts/examples/template-react/package.json.template.tsx index a08cdc93ad..98c67f3e50 100644 --- a/packages/dev-scripts/examples/template-react/package.json.template.tsx +++ b/packages/dev-scripts/examples/template-react/package.json.template.tsx @@ -39,8 +39,8 @@ const template = (project: Project) => ({ : {}), "@types/react": "^19.2.3", "@types/react-dom": "^19.2.3", - "@vitejs/plugin-react": "^4.7.0", - vite: "^5.4.20", + "@vitejs/plugin-react": "^6.0.1", + vite: "^8.0.8", ...(project.config?.devDependencies || {}), }, }); diff --git a/packages/react/src/components/Comments/FloatingComposer.tsx b/packages/react/src/components/Comments/FloatingComposer.tsx index 1cc72d634d..aa3e786dd9 100644 --- a/packages/react/src/components/Comments/FloatingComposer.tsx +++ b/packages/react/src/components/Comments/FloatingComposer.tsx @@ -1,4 +1,12 @@ -import { mergeCSSClasses } from "@blocknote/core"; +import { + BlockSchema, + DefaultBlockSchema, + DefaultInlineContentSchema, + DefaultStyleSchema, + InlineContentSchema, + mergeCSSClasses, + StyleSchema, +} from "@blocknote/core"; import { CommentsExtension } from "@blocknote/core/comments"; import { useComponentsContext } from "../../editor/ComponentsContext.js"; @@ -7,13 +15,21 @@ import { useExtension } from "../../hooks/useExtension.js"; import { useDictionary } from "../../i18n/dictionary.js"; import { CommentEditor } from "./CommentEditor.js"; import { defaultCommentEditorSchema } from "./defaultCommentEditorSchema.js"; +import { useBlockNoteEditor } from "../../hooks/useBlockNoteEditor.js"; +import { TextSelection } from "@tiptap/pm/state"; /** * The FloatingComposer component displays a comment editor "floating" card. * * It's used when the user highlights a parts of the document to create a new comment / thread. */ -export function FloatingComposer() { +export function FloatingComposer< + B extends BlockSchema = DefaultBlockSchema, + I extends InlineContentSchema = DefaultInlineContentSchema, + S extends StyleSchema = DefaultStyleSchema, +>() { + const editor = useBlockNoteEditor(); + const comments = useExtension(CommentsExtension); const Components = useComponentsContext()!; @@ -57,6 +73,12 @@ export function FloatingComposer() { }, }); comments.stopPendingComment(); + editor.transact((tr) => { + tr.setSelection( + TextSelection.create(tr.doc, tr.selection.to), + ); + }); + editor.focus(); }} > Save diff --git a/playground/src/examples.gen.tsx b/playground/src/examples.gen.tsx index 00a2e5afe5..5f219ff7fa 100644 --- a/playground/src/examples.gen.tsx +++ b/playground/src/examples.gen.tsx @@ -997,11 +997,11 @@ ], "dependencies": { "@blocknote/code-block": "latest", - "@shikijs/core": "^3.19.0", - "@shikijs/engine-javascript": "^3.19.0", - "@shikijs/langs-precompiled": "^3.19.0", - "@shikijs/themes": "^3.19.0", - "@shikijs/types": "^3.19.0" + "@shikijs/core": "^4", + "@shikijs/engine-javascript": "^4", + "@shikijs/langs-precompiled": "^4", + "@shikijs/themes": "^4", + "@shikijs/types": "^4" } as any }, "title": "Custom Code Block Theme & Language", @@ -1687,6 +1687,30 @@ "slug": "collaboration" }, "readme": "In this example, we can fork a document and edit it independently of other collaborators. Then, we can choose to merge the changes back into the original document, or discard the changes.\n\n**Try it out:** Open this page in a new browser tab or window to see it in action!\n\n**Relevant Docs:**\n\n- [Editor Setup](/docs/getting-started/editor-setup)" + }, + { + "projectSlug": "comments-testing", + "fullSlug": "collaboration/comments-testing", + "pathFromRoot": "examples/07-collaboration/09-comments-testing", + "config": { + "playground": true, + "docs": false, + "author": "matthewlipski", + "tags": [ + "Advanced", + "Comments", + "Testing" + ], + "dependencies": { + "yjs": "^13.6.27" + } as any + }, + "title": "Comments Testing", + "group": { + "pathFromRoot": "examples/07-collaboration", + "slug": "collaboration" + }, + "readme": "A minimal comments example used for end-to-end testing. Uses a local Y.Doc (no collaboration provider) with a single hardcoded editor user." } ] }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d2cd8b1127..202a26aeda 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4006,6 +4006,55 @@ importers: specifier: ^8.0.8 version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + examples/07-collaboration/09-comments-testing: + 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: ^8.3.11 + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 + version: 8.3.18(react@19.2.5) + '@mantine/utils': + specifier: ^6.0.22 + version: 6.0.22(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) + yjs: + specifier: ^13.6.27 + version: 13.6.30 + 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + vite: + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + examples/08-extensions/01-tiptap-arrow-conversion: dependencies: '@blocknote/ariakit': diff --git a/tests/src/end-to-end/ariakit/ariakit.test.ts b/tests/src/end-to-end/ariakit/ariakit.test.ts index aa8c05c7d6..dd5fa0eccf 100644 --- a/tests/src/end-to-end/ariakit/ariakit.test.ts +++ b/tests/src/end-to-end/ariakit/ariakit.test.ts @@ -35,7 +35,9 @@ test.describe("Check Ariakit UI", () => { await page.keyboard.type("link"); await page.keyboard.press("Enter"); + await page.waitForTimeout(500); await page.keyboard.press("ArrowLeft"); + await page.keyboard.press("ArrowRight"); await page.waitForTimeout(500); expect(await page.screenshot()).toMatchSnapshot("ariakit-link-toolbar.png"); diff --git a/tests/src/end-to-end/comments/comments.test.ts b/tests/src/end-to-end/comments/comments.test.ts new file mode 100644 index 0000000000..db29498359 --- /dev/null +++ b/tests/src/end-to-end/comments/comments.test.ts @@ -0,0 +1,35 @@ +import { expect } from "@playwright/test"; +import { test } from "../../setup/setupScript.js"; +import { COMMENTS_URL, LINK_BUTTON_SELECTOR } from "../../utils/const.js"; +import { focusOnEditor } from "../../utils/editor.js"; + +test.beforeEach(async ({ page }) => { + await page.goto(COMMENTS_URL); +}); + +test.describe("Check Comments functionality", () => { + test("Should preserve existing comments when adding a link", async ({ + page, + }) => { + await focusOnEditor(page); + + await page.keyboard.type("hello"); + await page.locator("text=hello").dblclick(); + + await page.click('[data-test="addcomment"]'); + await page.waitForSelector(".bn-thread"); + + await page.keyboard.type("test comment"); + await page.click('button[data-test="save"]'); + + await page.locator("span.bn-thread-mark").first().dblclick(); + + await expect(page.locator(LINK_BUTTON_SELECTOR)).toBeVisible(); + await page.click(LINK_BUTTON_SELECTOR); + + await page.keyboard.type("https://example.com"); + await page.keyboard.press("Enter"); + + await expect(await page.locator("span.bn-thread-mark")).toBeVisible(); + }); +}); diff --git a/tests/src/end-to-end/shadcn/shadcn.test.ts b/tests/src/end-to-end/shadcn/shadcn.test.ts index c4a46ed8cc..fe1a2e385f 100644 --- a/tests/src/end-to-end/shadcn/shadcn.test.ts +++ b/tests/src/end-to-end/shadcn/shadcn.test.ts @@ -35,7 +35,9 @@ test.describe("Check ShadCN UI", () => { await page.keyboard.type("link"); await page.keyboard.press("Enter"); + await page.waitForTimeout(500); await page.keyboard.press("ArrowLeft"); + await page.keyboard.press("ArrowRight"); await page.waitForTimeout(700); expect(await page.screenshot()).toMatchSnapshot("shadcn-link-toolbar.png"); diff --git a/tests/src/end-to-end/theming/theming.test.ts b/tests/src/end-to-end/theming/theming.test.ts index 8bc75a6fab..1647cda1a9 100644 --- a/tests/src/end-to-end/theming/theming.test.ts +++ b/tests/src/end-to-end/theming/theming.test.ts @@ -46,7 +46,9 @@ test.describe("Check Dark Theme is Automatically Applied", () => { await page.waitForTimeout(500); await page.keyboard.type("link"); await page.keyboard.press("Enter"); + await page.waitForTimeout(500); await page.keyboard.press("ArrowLeft"); + await page.keyboard.press("ArrowRight"); await page.waitForTimeout(500); expect(await page.screenshot()).toMatchSnapshot("dark-link-toolbar.png"); diff --git a/tests/src/utils/const.ts b/tests/src/utils/const.ts index 61cedc194d..b04b77d6a2 100644 --- a/tests/src/utils/const.ts +++ b/tests/src/utils/const.ts @@ -43,6 +43,10 @@ export const ALERT_BLOCK_URL = !process.env.RUN_IN_DOCKER ? `http://localhost:${PORT}/custom-schema/alert-block?hideMenu` : `http://host.docker.internal:${PORT}/custom-schema/alert-block?hideMenu`; +export const COMMENTS_URL = !process.env.RUN_IN_DOCKER + ? `http://localhost:${PORT}/collaboration/comments-testing?hideMenu` + : `http://host.docker.internal:${PORT}/collaboration/comments-testing?hideMenu`; + export const PASTE_ZONE_SELECTOR = "#pasteZone"; export const EDITOR_SELECTOR = `.bn-editor`; From 46355c00640ebcefbb38cc7c8bf7c8fae106da90 Mon Sep 17 00:00:00 2001 From: Matthew Lipski <50169049+matthewlipski@users.noreply.github.com> Date: Mon, 20 Apr 2026 18:52:38 +0200 Subject: [PATCH 16/76] chore: Export `PartialInlineContentElement` (#2662) --- packages/core/src/schema/inlineContent/types.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/schema/inlineContent/types.ts b/packages/core/src/schema/inlineContent/types.ts index 1e5e2dbd63..b8e922502a 100644 --- a/packages/core/src/schema/inlineContent/types.ts +++ b/packages/core/src/schema/inlineContent/types.ts @@ -145,7 +145,7 @@ export type InlineContent< T extends StyleSchema, > = InlineContentFromConfig; -type PartialInlineContentElement< +export type PartialInlineContentElement< I extends InlineContentSchema, T extends StyleSchema, > = PartialInlineContentFromConfig; From 64b47d0442decb40c34899e396f328c7cfca2d52 Mon Sep 17 00:00:00 2001 From: Matthew Lipski <50169049+matthewlipski@users.noreply.github.com> Date: Wed, 22 Apr 2026 15:15:44 +0200 Subject: [PATCH 17/76] fix: `useEditorDOMElement` hook (#2619) --- packages/core/src/editor/BlockNoteEditor.ts | 15 ++++++++----- .../DefaultButtons/CreateLinkButton.tsx | 9 ++++---- .../LinkToolbar/LinkToolbarController.tsx | 11 +++++----- .../components/Popovers/PositionPopover.tsx | 6 ++++-- .../GridSuggestionMenuController.tsx | 4 +++- ...useGridSuggestionMenuKeyboardNavigation.ts | 13 ++++++++---- .../SuggestionMenuController.tsx | 4 +++- .../useSuggestionMenuKeyboardNavigation.ts | 8 ++++--- .../react/src/hooks/useEditorDomElement.ts | 19 +++++++++++++++++ packages/react/src/hooks/useEditorState.ts | 21 ++++++++++++------- packages/react/src/index.ts | 1 + 11 files changed, 79 insertions(+), 32 deletions(-) create mode 100644 packages/react/src/hooks/useEditorDomElement.ts diff --git a/packages/core/src/editor/BlockNoteEditor.ts b/packages/core/src/editor/BlockNoteEditor.ts index 561f77b158..51c54be196 100644 --- a/packages/core/src/editor/BlockNoteEditor.ts +++ b/packages/core/src/editor/BlockNoteEditor.ts @@ -562,6 +562,13 @@ export class BlockNoteEditor< }; this.pmSchema.cached.blockNoteEditor = this; + this._tiptapEditor.on("mount", () => { + this.headless = false; + }); + this._tiptapEditor.on("unmount", () => { + this.headless = true; + }); + // Initialize managers this._blockManager = new BlockManager(this as any); @@ -758,9 +765,7 @@ export class BlockNoteEditor< return this.prosemirrorView?.hasFocus() || false; } - public get headless() { - return !this._tiptapEditor.isInitialized; - } + public headless = true; /** * Focus on the editor @@ -1296,7 +1301,7 @@ export class BlockNoteEditor< editor: BlockNoteEditor; }) => void, ) { - this._eventManager.onMount(callback); + return this._eventManager.onMount(callback); } /** @@ -1312,7 +1317,7 @@ export class BlockNoteEditor< editor: BlockNoteEditor; }) => void, ) { - this._eventManager.onUnmount(callback); + return this._eventManager.onUnmount(callback); } /** diff --git a/packages/react/src/components/FormattingToolbar/DefaultButtons/CreateLinkButton.tsx b/packages/react/src/components/FormattingToolbar/DefaultButtons/CreateLinkButton.tsx index 925c6b7d12..e3a7b736b1 100644 --- a/packages/react/src/components/FormattingToolbar/DefaultButtons/CreateLinkButton.tsx +++ b/packages/react/src/components/FormattingToolbar/DefaultButtons/CreateLinkButton.tsx @@ -15,6 +15,7 @@ import { import { useComponentsContext } from "../../../editor/ComponentsContext.js"; import { useBlockNoteEditor } from "../../../hooks/useBlockNoteEditor.js"; +import { useEditorDOMElement } from "../../../hooks/useEditorDomElement.js"; import { useEditorState } from "../../../hooks/useEditorState.js"; import { useExtension } from "../../../hooks/useExtension.js"; import { useDictionary } from "../../../i18n/dictionary.js"; @@ -41,6 +42,7 @@ function checkLinkInSchema( export const CreateLinkButton = () => { const editor = useBlockNoteEditor(); + const editorDOMElement = useEditorDOMElement(); const Components = useComponentsContext()!; const dict = useDictionary(); @@ -97,13 +99,12 @@ export const CreateLinkButton = () => { } }; - const domElement = editor.domElement; - domElement?.addEventListener("keydown", callback); + editorDOMElement?.addEventListener("keydown", callback); return () => { - domElement?.removeEventListener("keydown", callback); + editorDOMElement?.removeEventListener("keydown", callback); }; - }, [editor.domElement]); + }, [editorDOMElement]); if (state === undefined) { return null; diff --git a/packages/react/src/components/LinkToolbar/LinkToolbarController.tsx b/packages/react/src/components/LinkToolbar/LinkToolbarController.tsx index ea876c24f8..9e7fe42d07 100644 --- a/packages/react/src/components/LinkToolbar/LinkToolbarController.tsx +++ b/packages/react/src/components/LinkToolbar/LinkToolbarController.tsx @@ -4,6 +4,7 @@ import { Range } from "@tiptap/core"; import { FC, useEffect, useMemo, useState } from "react"; import { useBlockNoteEditor } from "../../hooks/useBlockNoteEditor.js"; +import { useEditorDOMElement } from "../../hooks/useEditorDomElement.js"; import { useExtension } from "../../hooks/useExtension.js"; import { FloatingUIOptions } from "../Popovers/FloatingUIOptions.js"; import { @@ -22,6 +23,8 @@ export const LinkToolbarController = (props: { const [toolbarOpen, setToolbarOpen] = useState(false); const [toolbarPositionFrozen, setToolbarPositionFrozen] = useState(false); + const editorDOMElement = useEditorDOMElement(); + const linkToolbar = useExtension(LinkToolbarExtension); // Because the toolbar opens with a delay when a link is hovered by the mouse @@ -98,16 +101,14 @@ export const LinkToolbarController = (props: { const destroyOnSelectionChangeHandler = editor.onSelectionChange(textCursorCallback); - const domElement = editor.domElement; - - domElement?.addEventListener("mouseover", mouseCursorCallback); + editorDOMElement?.addEventListener("mouseover", mouseCursorCallback); return () => { destroyOnChangeHandler(); destroyOnSelectionChangeHandler(); - domElement?.removeEventListener("mouseover", mouseCursorCallback); + editorDOMElement?.removeEventListener("mouseover", mouseCursorCallback); }; - }, [editor, editor.domElement, linkToolbar, link, toolbarPositionFrozen]); + }, [editor, editorDOMElement, linkToolbar, link, toolbarPositionFrozen]); const floatingUIOptions = useMemo( () => ({ diff --git a/packages/react/src/components/Popovers/PositionPopover.tsx b/packages/react/src/components/Popovers/PositionPopover.tsx index fafebd45b7..93ef837f61 100644 --- a/packages/react/src/components/Popovers/PositionPopover.tsx +++ b/packages/react/src/components/Popovers/PositionPopover.tsx @@ -2,6 +2,7 @@ import { posToDOMRect } from "@tiptap/core"; import { ReactNode, useMemo } from "react"; import { useBlockNoteEditor } from "../../hooks/useBlockNoteEditor.js"; +import { useEditorDOMElement } from "../../hooks/useEditorDomElement.js"; import { FloatingUIOptions } from "./FloatingUIOptions.js"; import { GenericPopover, GenericPopoverReference } from "./GenericPopover.js"; @@ -15,6 +16,7 @@ export const PositionPopover = ( const { from, to } = position || {}; const editor = useBlockNoteEditor(); + const editorDOMElement = useEditorDOMElement(); const reference = useMemo(() => { if (from === undefined || to === undefined) { @@ -25,11 +27,11 @@ export const PositionPopover = ( // Use first child as the editor DOM element may itself be scrollable. // For FloatingUI to auto-update the position during scrolling, the // `contextElement` must be a descendant of the scroll container. - element: editor.domElement?.firstElementChild || undefined, + element: editorDOMElement?.firstElementChild || undefined, getBoundingClientRect: () => posToDOMRect(editor.prosemirrorView, from, to ?? from), }; - }, [editor, from, to]); + }, [editor, editorDOMElement, from, to]); return ( diff --git a/packages/react/src/components/SuggestionMenu/GridSuggestionMenu/GridSuggestionMenuController.tsx b/packages/react/src/components/SuggestionMenu/GridSuggestionMenu/GridSuggestionMenuController.tsx index b2af2c55e5..a0fdcb61d4 100644 --- a/packages/react/src/components/SuggestionMenu/GridSuggestionMenu/GridSuggestionMenuController.tsx +++ b/packages/react/src/components/SuggestionMenu/GridSuggestionMenu/GridSuggestionMenuController.tsx @@ -7,6 +7,7 @@ import { autoPlacement, offset, shift, size } from "@floating-ui/react"; import { FC, useEffect, useMemo } from "react"; import { useBlockNoteEditor } from "../../../hooks/useBlockNoteEditor.js"; +import { useEditorDOMElement } from "../../../hooks/useEditorDomElement.js"; import { useExtension, useExtensionState, @@ -64,6 +65,7 @@ export function GridSuggestionMenuController< InlineContentSchema, StyleSchema >(); + const editorDOMElement = useEditorDOMElement(); const { triggerCharacter, @@ -108,7 +110,7 @@ export function GridSuggestionMenuController< // Use first child as the editor DOM element may itself be scrollable. // For FloatingUI to auto-update the position during scrolling, the // `contextElement` must be a descendant of the scroll container. - element: (editor.domElement?.firstChild || undefined) as + element: (editorDOMElement?.firstChild || undefined) as | Element | undefined, getBoundingClientRect: () => state?.referencePos || new DOMRect(), diff --git a/packages/react/src/components/SuggestionMenu/GridSuggestionMenu/hooks/useGridSuggestionMenuKeyboardNavigation.ts b/packages/react/src/components/SuggestionMenu/GridSuggestionMenu/hooks/useGridSuggestionMenuKeyboardNavigation.ts index e2b27f60e3..c21fc326ad 100644 --- a/packages/react/src/components/SuggestionMenu/GridSuggestionMenu/hooks/useGridSuggestionMenuKeyboardNavigation.ts +++ b/packages/react/src/components/SuggestionMenu/GridSuggestionMenu/hooks/useGridSuggestionMenuKeyboardNavigation.ts @@ -1,5 +1,6 @@ import { BlockNoteEditor } from "@blocknote/core"; import { useEffect, useState } from "react"; +import { useEditorDOMElement } from "../../../../hooks/useEditorDomElement.js"; // Hook which handles keyboard navigation of a grid suggestion menu. Arrow keys // are used to select a menu item, enter is used to execute it. @@ -10,6 +11,7 @@ export function useGridSuggestionMenuKeyboardNavigation( columns: number, onItemClick?: (item: Item) => void, ) { + const editorDOMElement = useEditorDOMElement(editor); const [selectedIndex, setSelectedIndex] = useState(0); const isGrid = columns !== undefined && columns > 1; @@ -66,17 +68,20 @@ export function useGridSuggestionMenuKeyboardNavigation( return false; }; - const domElement = editor.domElement; - domElement?.addEventListener("keydown", handleMenuNavigationKeys, true); + editorDOMElement?.addEventListener( + "keydown", + handleMenuNavigationKeys, + true, + ); return () => { - domElement?.removeEventListener( + editorDOMElement?.removeEventListener( "keydown", handleMenuNavigationKeys, true, ); }; - }, [editor.domElement, items, selectedIndex, onItemClick, columns, isGrid]); + }, [editorDOMElement, items, selectedIndex, onItemClick, columns, isGrid]); // Resets index when items change useEffect(() => { diff --git a/packages/react/src/components/SuggestionMenu/SuggestionMenuController.tsx b/packages/react/src/components/SuggestionMenu/SuggestionMenuController.tsx index 6efb18c845..8b4c81e6f7 100644 --- a/packages/react/src/components/SuggestionMenu/SuggestionMenuController.tsx +++ b/packages/react/src/components/SuggestionMenu/SuggestionMenuController.tsx @@ -8,6 +8,7 @@ import { autoPlacement, offset, shift, size } from "@floating-ui/react"; import { FC, useEffect, useMemo } from "react"; import { useBlockNoteEditor } from "../../hooks/useBlockNoteEditor.js"; +import { useEditorDOMElement } from "../../hooks/useEditorDomElement.js"; import { useExtension, useExtensionState } from "../../hooks/useExtension.js"; import { FloatingUIOptions } from "../Popovers/FloatingUIOptions.js"; import { @@ -58,6 +59,7 @@ export function SuggestionMenuController< InlineContentSchema, StyleSchema >(); + const editorDOMElement = useEditorDOMElement(); const { triggerCharacter, @@ -101,7 +103,7 @@ export function SuggestionMenuController< // Use first child as the editor DOM element may itself be scrollable. // For FloatingUI to auto-update the position during scrolling, the // `contextElement` must be a descendant of the scroll container. - element: (editor.domElement?.firstChild || undefined) as + element: (editorDOMElement?.firstChild || undefined) as | Element | undefined, getBoundingClientRect: () => state?.referencePos || new DOMRect(), diff --git a/packages/react/src/components/SuggestionMenu/hooks/useSuggestionMenuKeyboardNavigation.ts b/packages/react/src/components/SuggestionMenu/hooks/useSuggestionMenuKeyboardNavigation.ts index 6972c67f1f..8984dbb5bf 100644 --- a/packages/react/src/components/SuggestionMenu/hooks/useSuggestionMenuKeyboardNavigation.ts +++ b/packages/react/src/components/SuggestionMenu/hooks/useSuggestionMenuKeyboardNavigation.ts @@ -1,27 +1,29 @@ import { BlockNoteEditor } from "@blocknote/core"; import { useEffect } from "react"; +import { useEditorDOMElement } from "../../../hooks/useEditorDomElement.js"; import { useSuggestionMenuKeyboardHandler } from "./useSuggestionMenuKeyboardHandler.js"; // Hook which handles keyboard navigation of a suggestion menu. Up & down arrow // keys are used to select a menu item, enter is used to execute it. export function useSuggestionMenuKeyboardNavigation( - editor: BlockNoteEditor, + _editor: BlockNoteEditor, query: string, items: Item[], onItemClick?: (item: Item) => void, element?: HTMLElement, ) { + const editorDOMElement = useEditorDOMElement(); const { selectedIndex, setSelectedIndex, handler } = useSuggestionMenuKeyboardHandler(items, onItemClick); useEffect(() => { - const el = element || editor.domElement; + const el = element || editorDOMElement; el?.addEventListener("keydown", handler, true); return () => { el?.removeEventListener("keydown", handler, true); }; - }, [editor.domElement, items, selectedIndex, onItemClick, element, handler]); + }, [editorDOMElement, items, selectedIndex, onItemClick, element, handler]); // Resets index when items change useEffect(() => { diff --git a/packages/react/src/hooks/useEditorDomElement.ts b/packages/react/src/hooks/useEditorDomElement.ts new file mode 100644 index 0000000000..856765a056 --- /dev/null +++ b/packages/react/src/hooks/useEditorDomElement.ts @@ -0,0 +1,19 @@ +import { BlockNoteEditor } from "@blocknote/core"; + +import { useBlockNoteContext } from "../editor/BlockNoteContext.js"; +import { useEditorState } from "./useEditorState.js"; + +// Returns the editor's DOM element reactively. +export function useEditorDOMElement(editor?: BlockNoteEditor) { + const editorContext = useBlockNoteContext(); + if (!editor) { + editor = editorContext?.editor; + } + + return useEditorState({ + editor, + selector: (ctx) => ctx.editor?.domElement, + equalityFn: (a, b) => a === b, + on: "mount", + }); +} diff --git a/packages/react/src/hooks/useEditorState.ts b/packages/react/src/hooks/useEditorState.ts index c739d2f6b3..6b63c8c4c1 100644 --- a/packages/react/src/hooks/useEditorState.ts +++ b/packages/react/src/hooks/useEditorState.ts @@ -46,7 +46,7 @@ export type UseEditorStateOptions< * The event to subscribe to. * @default "all" */ - on?: "all" | "selection" | "change"; + on?: "all" | "mount" | "selection" | "change"; }; /** @@ -117,7 +117,7 @@ class EditorStateManager< */ watch( nextEditor: BlockNoteEditor | null, - on: "all" | "selection" | "change", + on: "all" | "mount" | "selection" | "change", ): undefined | (() => void) { this.editor = nextEditor as TEditor; @@ -135,14 +135,21 @@ class EditorStateManager< const currentTiptapEditor = this.editor._tiptapEditor; const EVENT_TYPES = { - all: "transaction", - selection: "selectionUpdate", - change: "update", + all: ["transaction", "create", "mount", "unmount"], + // Listen for "create" as "mount" may fire before the hook is run. + mount: ["create", "mount", "unmount"], + selection: ["selectionUpdate"], + change: ["update"], } as const; - currentTiptapEditor.on(EVENT_TYPES[on], fn); + for (const eventType of EVENT_TYPES[on]) { + currentTiptapEditor.on(eventType, fn); + } + return () => { - currentTiptapEditor.off(EVENT_TYPES[on], fn); + for (const eventType of EVENT_TYPES[on]) { + currentTiptapEditor.off(eventType, fn); + } }; } diff --git a/packages/react/src/index.ts b/packages/react/src/index.ts index fdefed5e49..6ed745a789 100644 --- a/packages/react/src/index.ts +++ b/packages/react/src/index.ts @@ -117,6 +117,7 @@ export * from "./hooks/useActiveStyles.js"; export * from "./hooks/useBlockNoteEditor.js"; export * from "./hooks/useCreateBlockNote.js"; export * from "./hooks/useEditorChange.js"; +export * from "./hooks/useEditorDomElement.js"; export * from "./hooks/useEditorSelectionBoundingBox.js"; export * from "./hooks/useEditorSelectionChange.js"; export * from "./hooks/useFocusWithin.js"; From 666ee1ebe7c239ceb93acda56ac6f8f4079989bb Mon Sep 17 00:00:00 2001 From: Matthew Lipski <50169049+matthewlipski@users.noreply.github.com> Date: Wed, 22 Apr 2026 15:16:17 +0200 Subject: [PATCH 18/76] fix: text color was not applying to table block (#2663) --- packages/core/src/blocks/Table/block.ts | 26 ++++++++++++++++++ tests/src/end-to-end/colors/colors.test.ts | 24 ++++++++++++++++ .../blockTextColorTable-chromium-linux.png | Bin 0 -> 8518 bytes .../blockTextColorTable-firefox-linux.png | Bin 0 -> 25404 bytes .../blockTextColorTable-webkit-linux.png | Bin 0 -> 28499 bytes 5 files changed, 50 insertions(+) create mode 100644 tests/src/end-to-end/colors/colors.test.ts-snapshots/blockTextColorTable-chromium-linux.png create mode 100644 tests/src/end-to-end/colors/colors.test.ts-snapshots/blockTextColorTable-firefox-linux.png create mode 100644 tests/src/end-to-end/colors/colors.test.ts-snapshots/blockTextColorTable-webkit-linux.png diff --git a/packages/core/src/blocks/Table/block.ts b/packages/core/src/blocks/Table/block.ts index 9a23d227aa..c71d9ffb7d 100644 --- a/packages/core/src/blocks/Table/block.ts +++ b/packages/core/src/blocks/Table/block.ts @@ -10,6 +10,7 @@ import { TableContent, } from "../../schema/index.js"; import { mergeCSSClasses } from "../../util/browser.js"; +import { camelToDataKebab } from "../../util/string.js"; import { createDefaultBlockDOMOutputSpec } from "../defaultBlockHelpers.js"; import { defaultProps } from "../defaultProps.js"; import { EMPTY_CELL_WIDTH, TableExtension } from "./TableExtension.js"; @@ -252,6 +253,31 @@ const TiptapTableNode = Node.create({ super.ignoreMutation(record) ); } + + // `TableView` implements its own `update` method, as the view needs to + // be persisted across updates for column resizing to work properly. + // However, it doesn't do anything else, so we have to re-apply the + // HTML attributes from props manually. This isn't an issue for node + // views created e.g. by custom blocks, as those aren't persisted + // across updates (they are reinstantiated each time), and so + // `HTMLAttributes` is always up-to-date for those. + update(updatedNode: PMNode): boolean { + if (!super.update(updatedNode)) { + return false; + } + + for (const [propName, propSpec] of Object.entries(tablePropSchema)) { + const attrName = camelToDataKebab(propName); + const value = updatedNode.attrs[propName]; + if (value !== propSpec.default) { + this.dom.setAttribute(attrName, String(value)); + } else { + this.dom.removeAttribute(attrName); + } + } + + return true; + } } return new BlockNoteTableView(node, EMPTY_CELL_WIDTH, { diff --git a/tests/src/end-to-end/colors/colors.test.ts b/tests/src/end-to-end/colors/colors.test.ts index 7751a72cf9..6c8f00f2b7 100644 --- a/tests/src/end-to-end/colors/colors.test.ts +++ b/tests/src/end-to-end/colors/colors.test.ts @@ -7,10 +7,12 @@ import { DRAG_HANDLE_MENU_SELECTOR, DRAG_HANDLE_SELECTOR, H_TWO_BLOCK_SELECTOR, + TABLE_SELECTOR, TEXT_COLOR_SELECTOR, } from "../../utils/const.js"; import { insertHeading, insertParagraph } from "../../utils/copypaste.js"; import { focusOnEditor } from "../../utils/editor.js"; +import { executeSlashCommand } from "../../utils/slashmenu.js"; test.beforeEach(async ({ page }) => { await page.goto(BASE_URL, { waitUntil: "networkidle" }); @@ -109,4 +111,26 @@ test.describe("Check Background & Text Color Functionality", () => { expect(await page.screenshot()).toMatchSnapshot("blockBackgroundColor.png"); }); + // Regression test: prosemirror-tables' TableView.update() preserves the + // NodeView's DOM without re-applying node attrs, so prop changes (e.g. + // textColor) wouldn't propagate to the blockContent wrapper. BlockNoteTableView + // overrides update() to sync prop-derived data-* attributes. + test("Should be able to set block text color on a table", async ({ + page, + }) => { + await focusOnEditor(page); + await executeSlashCommand(page, "table"); + await page.keyboard.type("Table Cell"); + + await page.hover(TABLE_SELECTOR); + await page.click(DRAG_HANDLE_SELECTOR); + await page.waitForSelector(DRAG_HANDLE_MENU_SELECTOR); + await page.hover("text=Colors"); + + const element = page.locator(TEXT_COLOR_SELECTOR("red")); + const boundingBox = (await element.boundingBox())!; + await page.mouse.click(boundingBox.x + 10, boundingBox.y + 10); + + expect(await page.screenshot()).toMatchSnapshot("blockTextColorTable.png"); + }); }); diff --git a/tests/src/end-to-end/colors/colors.test.ts-snapshots/blockTextColorTable-chromium-linux.png b/tests/src/end-to-end/colors/colors.test.ts-snapshots/blockTextColorTable-chromium-linux.png new file mode 100644 index 0000000000000000000000000000000000000000..ae74e34095dd421a69dc348a3fa1a164440117e6 GIT binary patch literal 8518 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 ncMtG5N;;qNpW@C`aw>dJB5IWB#oVxX%`Cg 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%0D-l%;GA?jy7acK>#~6EG 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 H{`EfqDDob7 literal 0 HcmV?d00001 From 5edeb54ce3100fbe96681f162cbedbcba4ddb429 Mon Sep 17 00:00:00 2001 From: Matthew Lipski <50169049+matthewlipski@users.noreply.github.com> Date: Thu, 23 Apr 2026 10:52:41 +0200 Subject: [PATCH 19/76] fix: Drag preview blocking drops when overlapping the editor (BLO-996) (#2670) --- packages/core/src/editor/editor.css | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/core/src/editor/editor.css b/packages/core/src/editor/editor.css index 11b0e66841..a1a3dda7b0 100644 --- a/packages/core/src/editor/editor.css +++ b/packages/core/src/editor/editor.css @@ -80,6 +80,11 @@ hidden. So setting it to an extremely low value instead makes the element functionally invisible while not affecting the drag preview itself. */ opacity: 0.001; + /* The element is kept in the DOM after setDragImage captures its snapshot, + so it can overlap the editor and block drops in that area. Disabling + pointer-events lets drag/drop events pass through to the editor while + leaving the captured preview unaffected. */ + pointer-events: none; } .bn-editor .bn-collaboration-cursor__base { From fc44d00902db34006a196369c962c7bdd1bc3629 Mon Sep 17 00:00:00 2001 From: miadnguyen <108504003+miadnguyen@users.noreply.github.com> Date: Thu, 23 Apr 2026 04:05:09 -0500 Subject: [PATCH 20/76] fix: Drag & drop of blocks without inline content opens formatting toolbar (BLO-1116) (#2628) * fix: move an image doesn't work with drag and drop (#2603) * Removed redundant check in formatting toolbar `shouldShow` * Moved/refactored tests * Implemented PR feedback --------- Co-authored-by: Matthew Lipski --- .../FormattingToolbar/FormattingToolbar.ts | 39 ++++++++++-------- .../src/end-to-end/dragdrop/dragdrop.test.ts | 41 +++++++++++++++++++ .../dragImage-chromium-linux.json | 0 .../dragImage-firefox-linux.json | 0 .../dragImage-webkit-linux.json | 0 tests/src/end-to-end/images/images.test.ts | 21 +--------- 6 files changed, 65 insertions(+), 36 deletions(-) rename tests/src/end-to-end/{images/images.test.ts-snapshots => dragdrop/dragdrop.test.ts-snapshots}/dragImage-chromium-linux.json (100%) rename tests/src/end-to-end/{images/images.test.ts-snapshots => dragdrop/dragdrop.test.ts-snapshots}/dragImage-firefox-linux.json (100%) rename tests/src/end-to-end/{images/images.test.ts-snapshots => dragdrop/dragdrop.test.ts-snapshots}/dragImage-webkit-linux.json (100%) diff --git a/packages/core/src/extensions/FormattingToolbar/FormattingToolbar.ts b/packages/core/src/extensions/FormattingToolbar/FormattingToolbar.ts index 021c20ea3d..84524eee2e 100644 --- a/packages/core/src/extensions/FormattingToolbar/FormattingToolbar.ts +++ b/packages/core/src/extensions/FormattingToolbar/FormattingToolbar.ts @@ -1,4 +1,4 @@ -import { NodeSelection, TextSelection } from "prosemirror-state"; +import { TextSelection } from "prosemirror-state"; import { createExtension, @@ -16,15 +16,6 @@ export const FormattingToolbarExtension = createExtension(({ editor }) => { return false; } - // Don't show if a block with inline content is selected. - if ( - tr.selection instanceof NodeSelection && - (tr.selection.node.type.spec.content === "inline*" || - tr.selection.node.firstChild?.type.spec.content === "inline*") - ) { - return false; - } - // Don't show if the selection is a text selection but contains no text. if ( tr.selection instanceof TextSelection && @@ -61,16 +52,17 @@ export const FormattingToolbarExtension = createExtension(({ editor }) => { * We want to mimic the Notion behavior of not showing the toolbar while the user is holding down the mouse button (to create a selection) */ let preventShowWhileMouseDown = false; + let preventShowWhileDragging = false; const unsubscribeOnChange = editor.onChange(() => { - if (preventShowWhileMouseDown) { + if (preventShowWhileMouseDown || preventShowWhileDragging) { return; } // re-evaluate whether the toolbar should be shown store.setState(shouldShow()); }); const unsubscribeOnSelectionChange = editor.onSelectionChange(() => { - if (preventShowWhileMouseDown) { + if (preventShowWhileMouseDown || preventShowWhileDragging) { return; } // re-evaluate whether the toolbar should be shown @@ -91,6 +83,7 @@ export const FormattingToolbarExtension = createExtension(({ editor }) => { "pointerup", () => { preventShowWhileMouseDown = false; + // We only want to re-show the toolbar if the mouse made the selection if (editor.isFocused()) { store.setState(shouldShow()); @@ -102,12 +95,26 @@ export const FormattingToolbarExtension = createExtension(({ editor }) => { dom.addEventListener( "pointercancel", () => { - preventShowWhileMouseDown = false; + preventShowWhileMouseDown = true; }, - { - signal, - capture: true, + { signal, capture: true }, + ); + + editor.prosemirrorView.root.addEventListener( + "dragstart", + () => { + preventShowWhileDragging = true; + store.setState(false); + }, + { signal }, + ); + + editor.prosemirrorView.root.addEventListener( + "dragend", + () => { + preventShowWhileDragging = false; }, + { signal }, ); signal.addEventListener("abort", () => { diff --git a/tests/src/end-to-end/dragdrop/dragdrop.test.ts b/tests/src/end-to-end/dragdrop/dragdrop.test.ts index aad78548c7..45a3e4a3db 100644 --- a/tests/src/end-to-end/dragdrop/dragdrop.test.ts +++ b/tests/src/end-to-end/dragdrop/dragdrop.test.ts @@ -1,14 +1,17 @@ +import { expect } from "@playwright/test"; import { test } from "../../setup/setupScript.js"; import { BASE_URL, H_ONE_BLOCK_SELECTOR, H_THREE_BLOCK_SELECTOR, H_TWO_BLOCK_SELECTOR, + IMAGE_SELECTOR, PARAGRAPH_SELECTOR, } from "../../utils/const.js"; import { insertHeading, insertParagraph } from "../../utils/copypaste.js"; import { compareDocToSnapshot, focusOnEditor } from "../../utils/editor.js"; import { dragAndDropBlock } from "../../utils/mouse.js"; +import { executeSlashCommand } from "../../utils/slashmenu.js"; test.describe.configure({ mode: "serial" }); @@ -80,4 +83,42 @@ test.describe("Check Block Dragging Functionality", () => { await compareDocToSnapshot(page, "dragdropnested"); }); + + test("Should be able to drag image", async ({ page, browserName }) => { + test.skip( + browserName === "firefox", + "Playwright doesn't correctly simulate drag events in Firefox.", + ); + await focusOnEditor(page); + await executeSlashCommand(page, "image"); + + await insertHeading(page, 1); + + const dragTarget = await page.locator(IMAGE_SELECTOR); + const dropTarget = await page.locator(H_ONE_BLOCK_SELECTOR); + await page.pause(); + await dragAndDropBlock(page, dragTarget, dropTarget, false); + + await compareDocToSnapshot(page, "dragImage"); + }); + + test("Formatting toolbar should not appear when dragging image block", async ({ + page, + browserName, + }) => { + test.skip( + browserName === "firefox", + "Playwright doesn't correctly simulate drag events in Firefox.", + ); + await focusOnEditor(page); + await executeSlashCommand(page, "image"); + await insertHeading(page, 1); + + const dragTarget = page.locator(IMAGE_SELECTOR); + const dropTarget = page.locator(H_ONE_BLOCK_SELECTOR); + await dragAndDropBlock(page, dragTarget, dropTarget, false); + + const toolbar = page.locator(".bn-formatting-toolbar"); + await expect(toolbar).not.toBeVisible(); + }); }); diff --git a/tests/src/end-to-end/images/images.test.ts-snapshots/dragImage-chromium-linux.json b/tests/src/end-to-end/dragdrop/dragdrop.test.ts-snapshots/dragImage-chromium-linux.json similarity index 100% rename from tests/src/end-to-end/images/images.test.ts-snapshots/dragImage-chromium-linux.json rename to tests/src/end-to-end/dragdrop/dragdrop.test.ts-snapshots/dragImage-chromium-linux.json diff --git a/tests/src/end-to-end/images/images.test.ts-snapshots/dragImage-firefox-linux.json b/tests/src/end-to-end/dragdrop/dragdrop.test.ts-snapshots/dragImage-firefox-linux.json similarity index 100% rename from tests/src/end-to-end/images/images.test.ts-snapshots/dragImage-firefox-linux.json rename to tests/src/end-to-end/dragdrop/dragdrop.test.ts-snapshots/dragImage-firefox-linux.json diff --git a/tests/src/end-to-end/images/images.test.ts-snapshots/dragImage-webkit-linux.json b/tests/src/end-to-end/dragdrop/dragdrop.test.ts-snapshots/dragImage-webkit-linux.json similarity index 100% rename from tests/src/end-to-end/images/images.test.ts-snapshots/dragImage-webkit-linux.json rename to tests/src/end-to-end/dragdrop/dragdrop.test.ts-snapshots/dragImage-webkit-linux.json diff --git a/tests/src/end-to-end/images/images.test.ts b/tests/src/end-to-end/images/images.test.ts index 7e1a862a18..b4c7dd2910 100644 --- a/tests/src/end-to-end/images/images.test.ts +++ b/tests/src/end-to-end/images/images.test.ts @@ -1,13 +1,7 @@ import { FileChooser, expect } from "@playwright/test"; import { test } from "../../setup/setupScript.js"; -import { - BASE_URL, - H_ONE_BLOCK_SELECTOR, - IMAGE_SELECTOR, -} from "../../utils/const.js"; -import { insertHeading } from "../../utils/copypaste.js"; +import { BASE_URL } from "../../utils/const.js"; import { compareDocToSnapshot, focusOnEditor } from "../../utils/editor.js"; -import { dragAndDropBlock } from "../../utils/mouse.js"; import { executeSlashCommand } from "../../utils/slashmenu.js"; const IMAGE_UPLOAD_PATH = "src/end-to-end/images/placeholder.png"; @@ -115,17 +109,4 @@ test.describe("Check Image Block and Toolbar functionality", () => { await compareDocToSnapshot(page, "deleteImage"); }); - test("Should be able to drag image", async ({ page }) => { - await focusOnEditor(page); - await executeSlashCommand(page, "image"); - - await insertHeading(page, 1); - - const dragTarget = await page.locator(IMAGE_SELECTOR); - const dropTarget = await page.locator(H_ONE_BLOCK_SELECTOR); - await page.pause(); - await dragAndDropBlock(page, dragTarget, dropTarget, false); - - await compareDocToSnapshot(page, "dragImage"); - }); }); From 73c785e4c50830addff764468823278a6b567463 Mon Sep 17 00:00:00 2001 From: Yousef Date: Thu, 23 Apr 2026 11:52:03 +0200 Subject: [PATCH 21/76] fix: save file caption/name on every keystroke instead of on close (#2575) Previously, caption/name values were stored in local state and only saved to the block on Enter. Clicking outside the popover discarded input, and Enter didn't close the popover. Now handleChange calls editor.updateBlock directly, input reads from block props, and the popover is controlled so Enter closes it. --- .../DefaultButtons/FileCaptionButton.tsx | 44 ++++++++---------- .../DefaultButtons/FileRenameButton.tsx | 45 ++++++++----------- 2 files changed, 38 insertions(+), 51 deletions(-) diff --git a/packages/react/src/components/FormattingToolbar/DefaultButtons/FileCaptionButton.tsx b/packages/react/src/components/FormattingToolbar/DefaultButtons/FileCaptionButton.tsx index 8d1ff3d343..309cc10e13 100644 --- a/packages/react/src/components/FormattingToolbar/DefaultButtons/FileCaptionButton.tsx +++ b/packages/react/src/components/FormattingToolbar/DefaultButtons/FileCaptionButton.tsx @@ -9,7 +9,6 @@ import { ChangeEvent, KeyboardEvent, useCallback, - useEffect, useState, } from "react"; import { RiInputField } from "react-icons/ri"; @@ -59,54 +58,49 @@ export const FileCaptionButton = () => { }, }); - const [currentEditingCaption, setCurrentEditingCaption] = useState(); - - useEffect(() => { - if (block === undefined) { - return; - } - setCurrentEditingCaption(block.props.caption); - }, [block]); + const [popoverOpen, setPopoverOpen] = useState(false); const handleChange = useCallback( - (event: ChangeEvent) => - setCurrentEditingCaption(event.currentTarget.value), - [], - ); - - const handleEnter = useCallback( - (event: KeyboardEvent) => { + (event: ChangeEvent) => { if ( block !== undefined && editorHasBlockWithType(editor, block.type, { caption: "string", - }) && - event.key === "Enter" && - !event.nativeEvent.isComposing + }) ) { - event.preventDefault(); editor.updateBlock(block.id, { props: { - caption: currentEditingCaption, + caption: event.currentTarget.value, }, }); } }, - [block, currentEditingCaption, editor], + [block, editor], ); + const handleKeyDown = useCallback((event: KeyboardEvent) => { + if (event.key === "Enter" && !event.nativeEvent.isComposing) { + event.preventDefault(); + setPopoverOpen(false); + } + }, []); + if (block === undefined) { return null; } return ( - + } + onClick={() => setPopoverOpen((open) => !open)} /> { } - value={currentEditingCaption || ""} + value={block.props.caption} autoFocus={true} placeholder={dict.formatting_toolbar.file_caption.input_placeholder} - onKeyDown={handleEnter} + onKeyDown={handleKeyDown} onChange={handleChange} /> diff --git a/packages/react/src/components/FormattingToolbar/DefaultButtons/FileRenameButton.tsx b/packages/react/src/components/FormattingToolbar/DefaultButtons/FileRenameButton.tsx index 863febd7d4..87c30fef22 100644 --- a/packages/react/src/components/FormattingToolbar/DefaultButtons/FileRenameButton.tsx +++ b/packages/react/src/components/FormattingToolbar/DefaultButtons/FileRenameButton.tsx @@ -9,7 +9,6 @@ import { ChangeEvent, KeyboardEvent, useCallback, - useEffect, useState, } from "react"; import { RiFontFamily } from "react-icons/ri"; @@ -59,49 +58,42 @@ export const FileRenameButton = () => { }, }); - const [currentEditingName, setCurrentEditingName] = useState(); - - useEffect(() => { - if (block === undefined) { - return; - } - - setCurrentEditingName(block.props.name); - }, [block]); + const [popoverOpen, setPopoverOpen] = useState(false); const handleChange = useCallback( - (event: ChangeEvent) => - setCurrentEditingName(event.currentTarget.value), - [], - ); - - const handleEnter = useCallback( - (event: KeyboardEvent) => { + (event: ChangeEvent) => { if ( block !== undefined && editorHasBlockWithType(editor, block.type, { name: "string", - }) && - event.key === "Enter" && - !event.nativeEvent.isComposing + }) ) { - event.preventDefault(); editor.updateBlock(block.id, { props: { - name: currentEditingName, + name: event.currentTarget.value, }, }); } }, - [block, currentEditingName, editor], + [block, editor], ); + const handleKeyDown = useCallback((event: KeyboardEvent) => { + if (event.key === "Enter" && !event.nativeEvent.isComposing) { + event.preventDefault(); + setPopoverOpen(false); + } + }, []); + if (block === undefined) { return null; } return ( - + { dict.formatting_toolbar.file_rename.tooltip["file"] } icon={} + onClick={() => setPopoverOpen((open) => !open)} /> { } - value={currentEditingName || ""} + value={block.props.name} autoFocus={true} placeholder={ dict.formatting_toolbar.file_rename.input_placeholder[ block.type ] || dict.formatting_toolbar.file_rename.input_placeholder["file"] } - onKeyDown={handleEnter} + onKeyDown={handleKeyDown} onChange={handleChange} /> From bb49890a50314874c3859a0ae3c4c31c2f5bf6bb Mon Sep 17 00:00:00 2001 From: Yousef Date: Fri, 24 Apr 2026 12:19:20 +0200 Subject: [PATCH 22/76] fix: prevent FloatingFocusManager from resetting editor selection (#2525) (#2664) --- .../components/Popovers/GenericPopover.tsx | 15 +++++- tests/src/end-to-end/ai/ai-selection.test.ts | 54 +++++++++++++++++++ 2 files changed, 67 insertions(+), 2 deletions(-) create mode 100644 tests/src/end-to-end/ai/ai-selection.test.ts diff --git a/packages/react/src/components/Popovers/GenericPopover.tsx b/packages/react/src/components/Popovers/GenericPopover.tsx index 88defa0607..5eb08edc4d 100644 --- a/packages/react/src/components/Popovers/GenericPopover.tsx +++ b/packages/react/src/components/Popovers/GenericPopover.tsx @@ -155,7 +155,18 @@ export const GenericPopover = ( const element = "element" in props.reference ? props.reference.element : undefined; - if (element !== undefined) { + if ( + element !== undefined && + (props.focusManagerProps?.disabled || + !editor.isWithinEditor(element)) + ) { + // Only set domReference when FloatingFocusManager is disabled. + // When FloatingFocusManager is active (disabled !== false) and the + // reference is inside the ProseMirror editor, setting domReference + // causes floating-ui to call insertAdjacentElement on the reference, + // inserting a focus-return into the PM contenteditable. This + // triggers PM's MutationObserver and resets the editor selection. + // (issue #2525) refs.setReference(element); } @@ -166,7 +177,7 @@ export const GenericPopover = ( contextElement: element, }); } - }, [props.reference, refs]); + }, [props.reference, refs, props.focusManagerProps?.disabled, editor]); // Stores the last rendered `innerHTML` of the popover while it was open. The // `innerHTML` is used while the popover is closing, as the React children diff --git a/tests/src/end-to-end/ai/ai-selection.test.ts b/tests/src/end-to-end/ai/ai-selection.test.ts new file mode 100644 index 0000000000..b27dd8dbc4 --- /dev/null +++ b/tests/src/end-to-end/ai/ai-selection.test.ts @@ -0,0 +1,54 @@ +import { expect } from "@playwright/test"; +import { test } from "../../setup/setupScript.js"; +import { AI_URL } from "../../utils/const.js"; +import { focusOnEditor } from "../../utils/editor.js"; + +const AI_BUTTON_SELECTOR = `[data-test="editwithAI"]`; + +test.beforeEach(async ({ page }) => { + await page.goto(AI_URL); +}); + +test.describe("AI toolbar button should preserve selection (issue #2525)", () => { + test("Editor selection must be preserved after clicking the AI toolbar button", async ({ + page, + }) => { + await focusOnEditor(page); + + // Select text in the first paragraph + await page.keyboard.press("Home"); + await page.keyboard.press("Shift+End"); + await page.waitForTimeout(500); + + // Record the PM selection before clicking + const selBefore = await page.evaluate(() => { + const pm = (window as any).ProseMirror; + return { from: pm.state.selection.from, to: pm.state.selection.to }; + }); + expect(selBefore.to - selBefore.from).toBeGreaterThan(0); + + // Click the AI button using page.mouse to trigger real browser + // focus-shift behavior (Playwright's locator.click() bypasses it) + const aiButton = page.locator(AI_BUTTON_SELECTOR); + await expect(aiButton).toBeVisible(); + const box = (await aiButton.boundingBox())!; + await page.mouse.click(box.x + box.width / 2, box.y + box.height / 2); + + // Wait for AI menu to appear + await page + .locator(".bn-combobox-input input, .bn-combobox input") + .waitFor({ state: "visible", timeout: 3000 }); + + // The PM selection must match what we had before clicking. + // Without skipping refs.setReference for in-editor references while + // FloatingFocusManager is active, floating-ui inserts a focus-return + // element into the PM contenteditable, triggering its MutationObserver + // and resetting the selection. + const selAfter = await page.evaluate(() => { + const pm = (window as any).ProseMirror; + return { from: pm.state.selection.from, to: pm.state.selection.to }; + }); + expect(selAfter.from).toBe(selBefore.from); + expect(selAfter.to).toBe(selBefore.to); + }); +}); From a5ff04ddcf8b02eba695ff50d6884bca92c60b21 Mon Sep 17 00:00:00 2001 From: Nick Perez Date: Fri, 24 Apr 2026 14:35:08 +0200 Subject: [PATCH 23/76] feat: simplify links by inlining it to BlockNote (#2623) --- .github/dependabot.yml | 2 +- .../docs/features/blocks/inline-content.mdx | 49 + docs/content/docs/react/overview.mdx | 4 +- .../docs/reference/editor/overview.mdx | 4 +- package.json | 40 +- packages/core/package.json | 4 +- packages/core/scripts/update-tlds.mjs | 135 +++ packages/core/src/editor/BlockNoteEditor.ts | 74 ++ .../managers/ExtensionManager/extensions.ts | 34 +- .../core/src/editor/managers/StyleManager.ts | 105 +- .../src/extensions/LinkToolbar/LinkToolbar.ts | 110 +- .../Link/helpers/autolink.ts | 179 ++++ .../Link/helpers/clickHandler.ts | 82 ++ .../Link/helpers/linkDetector.ts | 414 ++++++++ .../Link/helpers/pasteHandler.ts | 53 + .../tiptap-extensions/Link/helpers/tlds.ts | 7 + .../Link/helpers/whitespace.ts | 13 + .../tiptap-extensions/Link/index.ts | 2 + .../tiptap-extensions/Link/link.test.ts | 941 ++++++++++++++++++ .../extensions/tiptap-extensions/Link/link.ts | 207 ++++ ...h_1_801ad86e0c3a4562338793805e66a52f.json} | 2 +- ...n_1_b6ecf36636295d284db3ba7243cd4835.json} | 2 +- ...h_1_3c276441275032fe98b12356026537a0.json} | 2 +- ...n_1_0207de852025d2c0a1d417a7d66fa03c.json} | 2 +- ...h_1_937647a13580b4dbb611e3de3b2c8788.json} | 2 +- ...n_1_d9ea724851130649f405ff50190452b5.json} | 2 +- ...k_1_afd5ee1bda075c7482d1861d03ad0a29.json} | 2 +- ...k_1_9a26ba1fa4692c62b4f519ed3669fdc5.json} | 2 +- ...k_1_2fd92a4c2642fff1ef49d65014aa1ac3.json} | 2 +- ...k_1_fd54b2fefac722ab5057252b68c4faec.json} | 2 +- ...k_1_93038afbc107d8439571e6287fc76a8f.json} | 2 +- ...n_1_7035efab1f6d9e5a46dde12d39f9ed19.json} | 2 +- ...e_1_467258028a5a6bef3542c1a5417d4b3d.json} | 2 +- ...k_1_90c0b37bad31f3b9b0d15c492c610d0b.json} | 2 +- ...n_1_3e8b04b91ca15c467180df1c60c9e1b2.json} | 2 +- ...t_1_3551fccc96307281574c2c96eaa05002.json} | 2 +- ...p_1_e7ef562479ab33624bfa2bd75c4d1f5e.json} | 2 +- ...t_1_3a3fa0950f819e8073475e78106b353d.json} | 2 +- ...)_1_7a05ed5acf369206dda586e41235430b.json} | 2 +- ...)_1_0d9c02b01414a68a2dab4af392179183.json} | 2 +- ...n_1_ade79bca32d420b4323b2a888817b5d5.json} | 2 +- ...t_1_f90879213f18f8b8e13748443299b6dc.json} | 2 +- ...p_1_3f8e13d1cfa75e24cd4e0dfb0eab9ef4.json} | 2 +- ...t_1_07d3d8730ff541c3a2bf5e53c6707dac.json} | 2 +- ...e_1_6cc7ad0b6e2c278095f03deb353e4c9b.json} | 0 ...k_1_17fe180166622808ade902a2eccad8aa.json} | 2 +- ...k_1_a055d5e9dcf9d3ce1e1cddf57b441dc1.json} | 2 +- ...n_1_7692c767dc159df75724f2a49cc38b0e.json} | 2 +- ...e_1_b81e76afad4cf5e84bd6815d2bc8d069.json} | 2 +- ...k_1_da7d1e5e03db624c6007dc8137fc3588.json} | 2 +- ...n_1_758855f114117cd6c8f70c7caa84cc68.json} | 2 +- ...t_1_222775b0c617ba9bcada86cd238b6d64.json} | 2 +- ...p_1_ad74c153b3f0beb850955148f0a42c78.json} | 2 +- ...t_1_4bf0b01b1e009966973599ebc2194362.json} | 2 +- ...)_1_5ce19f53eaf195c6e284c91b0db7d586.json} | 2 +- ...)_1_0f8ce96b644d6bd531f0558208cf5790.json} | 2 +- ...n_1_1cf9377128e689feac5e5e13a1d0e26f.json} | 2 +- ...t_1_260e8bc6dd5c9cbd0650701e6d95ada3.json} | 2 +- ...p_1_339e6b8d82d281185c6ccbcd1809374f.json} | 2 +- ...t_1_ff26ae30546f4e0d4279e60e4b7a1fbf.json} | 2 +- ...e_1_d9cbf71a8b55c8be0b247c3bb200c59c.json} | 2 +- ...k_1_d1f45ba6fee8787529137c920d6bc58e.json} | 2 +- ...k_1_c9489269d9a2d4353eda54289ed7f395.json} | 2 +- ...n_1_416931598559b3e7e906647a66f0b8b1.json} | 2 +- ...e_1_9728e4dd714a6a14ce441d72378dd67a.json} | 2 +- ...k_1_198059a270dbbb88db8f1cba97503205.json} | 2 +- ...n_1_9313219c085c3b39c7c14c00f388b4be.json} | 2 +- ...t_1_f7a4c2a7fc5e362c3484586f45b2501d.json} | 2 +- ...p_1_38090ebbfaca38fca97b1e4f0a0dd942.json} | 2 +- ...t_1_6374879c3f8fbc16db7c43304d2faacd.json} | 2 +- ...)_1_0afac4d00d3f0bbdfd251a8394b6ff28.json} | 2 +- ...)_1_00156bb4dd5722d44e0ff5332561928a.json} | 2 +- ...n_1_24abe901176e9d834f9542d0b26e82ae.json} | 2 +- ...t_1_3f479c81e81f4f9460df3af74ddd2207.json} | 2 +- ...p_1_6012638796e6e00b242b43642bb90a7a.json} | 2 +- ...t_1_04e027a89c6d4e69a0f805d5c8987e2c.json} | 2 +- ...e_1_72aecf62b6c9c807411d248d46a62eea.json} | 2 +- .../__snapshots__/agent.test.ts.snap | 238 ++--- .../__snapshots__/changeset.test.ts.snap | 2 - pnpm-lock.yaml | 93 +- tests/nextjs-test-app/package.json | 8 +- .../hardbreak/between-links.html | 4 + .../blocknoteHTML/hardbreak/link.html | 4 + .../blocknoteHTML/link/adjacent.html | 4 + .../blocknoteHTML/link/basic.html | 2 + .../blocknoteHTML/link/styled.html | 4 + .../html/hardbreak/between-links.html | 4 + .../__snapshots__/html/hardbreak/link.html | 4 + .../__snapshots__/html/link/adjacent.html | 4 + .../export/__snapshots__/html/link/basic.html | 2 + .../__snapshots__/html/link/styled.html | 4 + .../nodes/hardbreak/between-links.json | 2 - .../__snapshots__/nodes/hardbreak/link.json | 2 - .../__snapshots__/nodes/link/adjacent.json | 2 - .../__snapshots__/nodes/link/basic.json | 1 - .../__snapshots__/nodes/link/styled.json | 2 - 96 files changed, 2564 insertions(+), 393 deletions(-) create mode 100644 packages/core/scripts/update-tlds.mjs create mode 100644 packages/core/src/extensions/tiptap-extensions/Link/helpers/autolink.ts create mode 100644 packages/core/src/extensions/tiptap-extensions/Link/helpers/clickHandler.ts create mode 100644 packages/core/src/extensions/tiptap-extensions/Link/helpers/linkDetector.ts create mode 100644 packages/core/src/extensions/tiptap-extensions/Link/helpers/pasteHandler.ts create mode 100644 packages/core/src/extensions/tiptap-extensions/Link/helpers/tlds.ts create mode 100644 packages/core/src/extensions/tiptap-extensions/Link/helpers/whitespace.ts create mode 100644 packages/core/src/extensions/tiptap-extensions/Link/index.ts create mode 100644 packages/core/src/extensions/tiptap-extensions/Link/link.test.ts create mode 100644 packages/core/src/extensions/tiptap-extensions/Link/link.ts rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{add and update paragraph_1_380a0c02b5089b38247457135c044cf7.json => add and update paragraph_1_801ad86e0c3a4562338793805e66a52f.json} (81%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{add paragraph and update selection_1_298b51bb28c5f95ab9a00205d4e38460.json => add paragraph and update selection_1_b6ecf36636295d284db3ba7243cd4835.json} (80%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{add and update paragraph_1_f6253c11196abdbeae0f898cc9df85eb.json => add and update paragraph_1_3c276441275032fe98b12356026537a0.json} (69%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{add paragraph and update selection_1_dc29d735348684d1ec3e290ad8c03a71.json => add paragraph and update selection_1_0207de852025d2c0a1d417a7d66fa03c.json} (69%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{add and update paragraph_1_a27ae10badcc3913a00eb86f77ac64db.json => add and update paragraph_1_937647a13580b4dbb611e3de3b2c8788.json} (93%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{add paragraph and update selection_1_86f10ca461ee44e74ae571fb9f214338.json => add paragraph and update selection_1_d9ea724851130649f405ff50190452b5.json} (93%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{delete first block_1_91346200727a71ab9ad8c5d014835688.json => delete first block_1_afd5ee1bda075c7482d1861d03ad0a29.json} (73%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{delete first block_1_150a539024aa981c9f6bcb068875a6c9.json => delete first block_1_9a26ba1fa4692c62b4f519ed3669fdc5.json} (69%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{delete first block_1_1b3c4ac85d448677697457098332ceba.json => delete first block_1_2fd92a4c2642fff1ef49d65014aa1ac3.json} (89%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{drop mark and link and change text within mark_1_fe3cac9da9d1e17a20ee8c0c4380d925.json => drop mark and link and change text within mark_1_fd54b2fefac722ab5057252b68c4faec.json} (76%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{drop mark and link_1_f6ee881e6d3b4cd9553256523e67683a.json => drop mark and link_1_93038afbc107d8439571e6287fc76a8f.json} (76%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{plain source block, add mention_1_ccd752aefdbc2252a5a09bebac393afb.json => plain source block, add mention_1_7035efab1f6d9e5a46dde12d39f9ed19.json} (79%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{standard update_1_c44a31a1631a3a10efcd5e17645998f1.json => standard update_1_467258028a5a6bef3542c1a5417d4b3d.json} (74%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{styles + ic in source block, remove mark_1_df177a6a4f26b0fbcba307c6d21cab76.json => styles + ic in source block, remove mark_1_90c0b37bad31f3b9b0d15c492c610d0b.json} (82%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{styles + ic in source block, remove mention_1_4ba9f3411694f807e85e8e33f4b3c8cd.json => styles + ic in source block, remove mention_1_3e8b04b91ca15c467180df1c60c9e1b2.json} (80%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{styles + ic in source block, replace content_1_f5b001d0f8415a00e8b043f3e3e33535.json => styles + ic in source block, replace content_1_3551fccc96307281574c2c96eaa05002.json} (75%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{styles + ic in source block, update mention prop_1_c197e3f5ce1dbc1a68765acbd198881a.json => styles + ic in source block, update mention prop_1_e7ef562479ab33624bfa2bd75c4d1f5e.json} (82%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{styles + ic in source block, update text_1_a0b93418bb2a5c0049e0a5c896f72191.json => styles + ic in source block, update text_1_3a3fa0950f819e8073475e78106b353d.json} (82%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{styles + ic in target block, add mark (paragraph)_1_fb2285b8d362cb8adcf78f6039ad3058.json => styles + ic in target block, add mark (paragraph)_1_7a05ed5acf369206dda586e41235430b.json} (76%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{styles + ic in target block, add mark (word)_1_e0087b91327576eaff9f8d4d368e0a03.json => styles + ic in target block, add mark (word)_1_0d9c02b01414a68a2dab4af392179183.json} (77%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{translate selection_1_4706b49daa5ad7afe9dfadded2e335c5.json => translate selection_1_ade79bca32d420b4323b2a888817b5d5.json} (76%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{update block prop and content_1_5bb684c9ae46815b5367a39bd42d5257.json => update block prop and content_1_f90879213f18f8b8e13748443299b6dc.json} (76%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{update block prop_1_8469a78802d46f3d9ec74dd1fbf49fd8.json => update block prop_1_3f8e13d1cfa75e24cd4e0dfb0eab9ef4.json} (76%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{update block type and content_1_226cc5d7352c8c7e58a15d064543518c.json => update block type and content_1_07d3d8730ff541c3a2bf5e53c6707dac.json} (76%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{update block type_1_c4cc00889532e0baa73998da5e79c303.json => update block type_1_6cc7ad0b6e2c278095f03deb353e4c9b.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{drop mark and link and change text within mark_1_e5c77f0f881e77f6ee27a25f203ffdcb.json => drop mark and link and change text within mark_1_17fe180166622808ade902a2eccad8aa.json} (69%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{drop mark and link_1_b93576392cb38dc57acd85f7fc55c6cd.json => drop mark and link_1_a055d5e9dcf9d3ce1e1cddf57b441dc1.json} (69%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{plain source block, add mention_1_b18afae076d7f7f423477f1e1bc5813a.json => plain source block, add mention_1_7692c767dc159df75724f2a49cc38b0e.json} (70%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{standard update_1_529e09ae665507a31316cb632f5cabcd.json => standard update_1_b81e76afad4cf5e84bd6815d2bc8d069.json} (69%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{styles + ic in source block, remove mark_1_20036398e12cf4a20b50024ad5f30018.json => styles + ic in source block, remove mark_1_da7d1e5e03db624c6007dc8137fc3588.json} (71%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{styles + ic in source block, remove mention_1_ed131f0383e7709a4e5fae2df28af29a.json => styles + ic in source block, remove mention_1_758855f114117cd6c8f70c7caa84cc68.json} (70%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{styles + ic in source block, replace content_1_51bfdc443e43bbf18599fcc3a16c5683.json => styles + ic in source block, replace content_1_222775b0c617ba9bcada86cd238b6d64.json} (69%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{styles + ic in source block, update mention prop_1_7641f5691799d2666855c113b6659b71.json => styles + ic in source block, update mention prop_1_ad74c153b3f0beb850955148f0a42c78.json} (71%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{styles + ic in source block, update text_1_8fcb24a91437026c480205de77507871.json => styles + ic in source block, update text_1_4bf0b01b1e009966973599ebc2194362.json} (71%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{styles + ic in target block, add mark (paragraph)_1_be126322b804c53145dbd35a6aa1131f.json => styles + ic in target block, add mark (paragraph)_1_5ce19f53eaf195c6e284c91b0db7d586.json} (70%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{styles + ic in target block, add mark (word)_1_ec13a3b1d4f97b79148833b507295ffa.json => styles + ic in target block, add mark (word)_1_0f8ce96b644d6bd531f0558208cf5790.json} (69%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{translate selection_1_f1a2ffb178b441d40625b8f110e3290f.json => translate selection_1_1cf9377128e689feac5e5e13a1d0e26f.json} (69%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{update block prop and content_1_8557c5a4249c324adfff5d243645e3de.json => update block prop and content_1_260e8bc6dd5c9cbd0650701e6d95ada3.json} (69%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{update block prop_1_16dda1caa1f43ab624eb28a605179dd3.json => update block prop_1_339e6b8d82d281185c6ccbcd1809374f.json} (69%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{update block type and content_1_8b167672c96bf3c69b9b146eb4f26451.json => update block type and content_1_ff26ae30546f4e0d4279e60e4b7a1fbf.json} (69%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{update block type_1_7326b3d0db43c8f399aba2bc44c80194.json => update block type_1_d9cbf71a8b55c8be0b247c3bb200c59c.json} (69%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{drop mark and link and change text within mark_1_94f36faff958747b5d66a185e268bba7.json => drop mark and link and change text within mark_1_d1f45ba6fee8787529137c920d6bc58e.json} (91%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{drop mark and link_1_60bf97139612cd25b1f99502383df8aa.json => drop mark and link_1_c9489269d9a2d4353eda54289ed7f395.json} (91%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{plain source block, add mention_1_d5759fe9868f60a47538d31361c68b3c.json => plain source block, add mention_1_416931598559b3e7e906647a66f0b8b1.json} (92%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{standard update_1_f6a167a6ea376d70d84dd9aac6ac7bb3.json => standard update_1_9728e4dd714a6a14ce441d72378dd67a.json} (91%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{styles + ic in source block, remove mark_1_990c696cfe9af87de056328060fd1f93.json => styles + ic in source block, remove mark_1_198059a270dbbb88db8f1cba97503205.json} (95%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{styles + ic in source block, remove mention_1_fd4deb4dce4d79ae14939fda71c510fd.json => styles + ic in source block, remove mention_1_9313219c085c3b39c7c14c00f388b4be.json} (94%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{styles + ic in source block, replace content_1_6cd810cd03bff509578637fe27d13a92.json => styles + ic in source block, replace content_1_f7a4c2a7fc5e362c3484586f45b2501d.json} (91%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{styles + ic in source block, update mention prop_1_f0e30d1d6cbc94e6b7dcb8abb7e0221f.json => styles + ic in source block, update mention prop_1_38090ebbfaca38fca97b1e4f0a0dd942.json} (95%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{styles + ic in source block, update text_1_1104dff815f18f8f786fb7d4e4522d47.json => styles + ic in source block, update text_1_6374879c3f8fbc16db7c43304d2faacd.json} (95%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{styles + ic in target block, add mark (paragraph)_1_e2f4cdb3df42b17c74cd1d2d00d2f8d5.json => styles + ic in target block, add mark (paragraph)_1_0afac4d00d3f0bbdfd251a8394b6ff28.json} (91%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{styles + ic in target block, add mark (word)_1_6b5073ce92485be7974a344d50247b4a.json => styles + ic in target block, add mark (word)_1_00156bb4dd5722d44e0ff5332561928a.json} (91%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{translate selection_1_d343e10867cc7b3d9850847c99826b61.json => translate selection_1_24abe901176e9d834f9542d0b26e82ae.json} (91%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{update block prop and content_1_780bfe04d42dd48e9115cba7c4582c01.json => update block prop and content_1_3f479c81e81f4f9460df3af74ddd2207.json} (91%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{update block prop_1_667c03220ba6e678d0c91b9de092484b.json => update block prop_1_6012638796e6e00b242b43642bb90a7a.json} (91%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{update block type and content_1_f3c6521f6f12dc50dc16d0bbc277a858.json => update block type and content_1_04e027a89c6d4e69a0f805d5c8987e2c.json} (91%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{update block type_1_7c4fbdcabcec0568ade27d2b47afbaab.json => update block type_1_72aecf62b6c9c807411d248d46a62eea.json} (91%) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 3458bfff2a..165dad4e01 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -21,7 +21,7 @@ updates: - dependency-name: "@tiptap/extension-code" - dependency-name: "@tiptap/extension-horizontal-rule" - dependency-name: "@tiptap/extension-italic" - - dependency-name: "@tiptap/extension-link" + - dependency-name: "@tiptap/extension-paragraph" - dependency-name: "@tiptap/extension-strike" - dependency-name: "@tiptap/extension-text" diff --git a/docs/content/docs/features/blocks/inline-content.mdx b/docs/content/docs/features/blocks/inline-content.mdx index ca7799d841..a22e93f19c 100644 --- a/docs/content/docs/features/blocks/inline-content.mdx +++ b/docs/content/docs/features/blocks/inline-content.mdx @@ -79,6 +79,55 @@ type Link = { }; ``` +### Customizing Links + +You can customize how links are rendered and how they respond to clicks with the `links` editor option. + +```ts +const editor = BlockNoteEditor.create({ + links: { + HTMLAttributes: { + class: "my-link-class", + target: "_blank", + }, + onClick: (event) => { + // Custom click logic, e.g. routing without a page reload. + }, + }, +}); +``` + +#### `HTMLAttributes` + +Additional HTML attributes that should be added to rendered link elements. + +```ts +const editor = BlockNoteEditor.create({ + links: { + HTMLAttributes: { + class: "my-link-class", + target: "_blank", + }, + }, +}); +``` + +#### `onClick` + +Custom handler invoked when a link is clicked. If left `undefined`, links are opened in a new window on click (the default behavior). If provided, that default behavior is disabled and this function is called instead. + +Returning `false` will let BlockNote run other click handlers after this one. Returning `true` or nothing (the default) marks the event as handled. + +```ts +const editor = BlockNoteEditor.create({ + links: { + onClick: (event) => { + // Do something when a link is clicked. + }, + }, +}); +``` + ## Default Styles The default text formatting options in BlockNote are represented by the `Styles` in the default schema: diff --git a/docs/content/docs/react/overview.mdx b/docs/content/docs/react/overview.mdx index da09fe2a3c..b85d29ab21 100644 --- a/docs/content/docs/react/overview.mdx +++ b/docs/content/docs/react/overview.mdx @@ -45,8 +45,8 @@ The `` component is used to render the editor. It also provides a ### Props - diff --git a/docs/content/docs/reference/editor/overview.mdx b/docs/content/docs/reference/editor/overview.mdx index 5230aeff02..086d91c754 100644 --- a/docs/content/docs/reference/editor/overview.mdx +++ b/docs/content/docs/reference/editor/overview.mdx @@ -113,8 +113,8 @@ editor.pasteMarkdown("# Hello\n\nThis is **bold** text."); The editor can be configured with the following options when using `BlockNoteEditor.create`: - diff --git a/package.json b/package.json index f28cc4977b..d0f2875eec 100644 --- a/package.json +++ b/package.json @@ -36,18 +36,7 @@ ], "overrides": { "vitest": "4.1.2", - "@vitest/runner": "4.1.2", - "msw": "2.11.5", - "ai": "6.0.5", - "@ai-sdk/anthropic": "3.0.2", - "@ai-sdk/openai": "3.0.2", - "@ai-sdk/groq": "3.0.2", - "@ai-sdk/google": "3.0.2", - "@ai-sdk/mistral": "3.0.2", - "@ai-sdk/openai-compatible": "2.0.2", - "@ai-sdk/provider-utils": "4.0.2", - "@ai-sdk/react": "3.0.5", - "@ai-sdk/gateway": "3.0.4" + "@vitest/runner": "4.1.2" } }, "packageManager": "pnpm@10.23.0+sha512.21c4e5698002ade97e4efe8b8b4a89a8de3c85a37919f957e7a0f30f38fbc5bbdd05980ffe29179b2fb6e6e691242e098d945d1601772cad0fef5fb6411e2a4b", @@ -71,5 +60,30 @@ "start": "serve playground/dist -c ../serve.json", "test": "nx run-many --target=test", "format": "prettier --write \"**/*.{js,jsx,ts,tsx,css,scss,md}\"" - } + }, + "overrides": { + "msw": "2.11.5", + "ai": "6.0.5", + "@ai-sdk/anthropic": "3.0.2", + "@ai-sdk/openai": "3.0.2", + "@ai-sdk/groq": "3.0.2", + "@ai-sdk/google": "3.0.2", + "@ai-sdk/mistral": "3.0.2", + "@ai-sdk/openai-compatible": "2.0.2", + "@ai-sdk/provider-utils": "4.0.2", + "@ai-sdk/react": "3.0.5", + "@ai-sdk/gateway": "3.0.4", + "@headlessui/react": "^2.2.4", + "@tiptap/core": "^3.0.0", + "@tiptap/pm": "^3.0.0" + }, + "workspaces": [ + "packages/*", + "examples/*/*", + "playground", + "fumadocs", + "docs", + "shared", + "tests" + ] } diff --git a/packages/core/package.json b/packages/core/package.json index f20292ad57..0cc8f53bc0 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -86,7 +86,8 @@ "lint": "eslint src --max-warnings 0", "test": "vitest --run", "test-watch": "vitest watch", - "clean": "rimraf dist && rimraf types" + "clean": "rimraf dist && rimraf types", + "update-tlds": "node scripts/update-tlds.mjs" }, "dependencies": { "@emoji-mart/data": "^1.2.1", @@ -98,7 +99,6 @@ "@tiptap/extension-code": "^3.13.0", "@tiptap/extension-horizontal-rule": "^3.13.0", "@tiptap/extension-italic": "^3.13.0", - "@tiptap/extension-link": "^3.22.1", "@tiptap/extension-paragraph": "^3.13.0", "@tiptap/extension-strike": "^3.13.0", "@tiptap/extension-text": "^3.13.0", diff --git a/packages/core/scripts/update-tlds.mjs b/packages/core/scripts/update-tlds.mjs new file mode 100644 index 0000000000..43f4d02e15 --- /dev/null +++ b/packages/core/scripts/update-tlds.mjs @@ -0,0 +1,135 @@ +#!/usr/bin/env node +/** + * Regenerate src/extensions/tiptap-extensions/Link/helpers/tlds.ts from IANA's + * authoritative TLD list. + * + * Run with: pnpm --filter @blocknote/core update-tlds + * + * Encoding format ported from linkifyjs (MIT, https://github.com/nfrasser/linkifyjs): + * a sorted TLD list is built into a trie, then serialized as an ASCII string + * where letters descend the trie and digit runs mean "emit a word and pop N + * levels back up." Shared TLD prefixes (e.g. construction/consulting/ + * contractors) collapse, producing a payload smaller than a flat list. + * + * IDN punycode entries (XN--...) are skipped: the schemeless URL regex in + * linkDetector.ts requires ASCII-only TLDs, so unicode TLDs would never reach + * the validation step. + */ + +import { writeFileSync } from "node:fs"; +import { fileURLToPath } from "node:url"; +import { dirname, resolve } from "node:path"; + +const TLDS_URL = "https://data.iana.org/TLD/tlds-alpha-by-domain.txt"; + +const __dirname = dirname(fileURLToPath(import.meta.url)); +const OUT_PATH = resolve( + __dirname, + "../src/extensions/tiptap-extensions/Link/helpers/tlds.ts", +); + +function createTrie(words) { + const root = {}; + for (const word of words) { + let current = root; + for (const letter of word) { + if (!(letter in current)) { + current[letter] = {}; + } + current = current[letter]; + } + current.isWord = true; + } + return root; +} + +function encodeTrieHelper(trie) { + const output = []; + for (const k in trie) { + if (k === "isWord") { + output.push(0); + continue; + } + output.push(k); + output.push(...encodeTrieHelper(trie[k])); + if (typeof output[output.length - 1] === "number") { + output[output.length - 1] += 1; + } else { + output.push(1); + } + } + return output; +} + +function encodeTlds(tlds) { + return encodeTrieHelper(createTrie(tlds)).join(""); +} + +function decodeTlds(encoded) { + const words = []; + const stack = []; + let i = 0; + const digits = "0123456789"; + while (i < encoded.length) { + let popDigitCount = 0; + while (digits.indexOf(encoded[i + popDigitCount]) >= 0) { + popDigitCount++; + } + if (popDigitCount > 0) { + words.push(stack.join("")); + let popCount = parseInt(encoded.substring(i, i + popDigitCount), 10); + while (popCount-- > 0) { + stack.pop(); + } + i += popDigitCount; + } else { + stack.push(encoded[i]); + i++; + } + } + return words; +} + +async function main() { + console.log(`Fetching ${TLDS_URL}...`); + const response = await fetch(TLDS_URL); + if (!response.ok) { + throw new Error(`Failed to fetch IANA TLDs: ${response.status}`); + } + const body = await response.text(); + + const tlds = body + .split("\n") + .map((line) => line.trim()) + .filter((line) => line && !line.startsWith("#") && !/^XN--/i.test(line)) + .map((line) => line.toLowerCase()) + .sort(); + + console.log(`Encoding ${tlds.length} TLDs...`); + const encoded = encodeTlds(tlds); + + console.log("Round-trip asserting..."); + const decoded = decodeTlds(encoded); + if (JSON.stringify(decoded) !== JSON.stringify(tlds)) { + throw new Error("Encode/decode round-trip mismatch"); + } + + const fileContents = `// THIS FILE IS AUTO-GENERATED. DO NOT EDIT DIRECTLY. +// Source: ${TLDS_URL} +// Regenerate with: pnpm --filter @blocknote/core update-tlds +// Encoding format ported from linkifyjs (MIT) — trie collapsed into ASCII. + +export const ENCODED_TLDS = + "${encoded}"; +`; + + writeFileSync(OUT_PATH, fileContents); + console.log( + `Wrote ${OUT_PATH} (${encoded.length} chars, ${tlds.length} TLDs)`, + ); +} + +main().catch((err) => { + console.error(err); + process.exit(1); +}); diff --git a/packages/core/src/editor/BlockNoteEditor.ts b/packages/core/src/editor/BlockNoteEditor.ts index 51c54be196..ca6e0b4817 100644 --- a/packages/core/src/editor/BlockNoteEditor.ts +++ b/packages/core/src/editor/BlockNoteEditor.ts @@ -140,6 +140,54 @@ export interface BlockNoteEditorOptions< NoInfer >[]; + /** + * Options for configuring how links behave in the editor. + */ + links?: { + /** + * HTML attributes to add to rendered link elements. + * + * @default {} + * @example { class: "my-link-class", target: "_blank" } + */ + HTMLAttributes?: Record; + /** + * Custom handler invoked when a link is clicked. If left `undefined`, + * links are opened in a new window on click. If provided, the default + * open-on-click behavior is disabled and this function is called instead. + * + * Return `false` to let ProseMirror continue handling the click event. + * Returning `true` or nothing (the default) marks the event as handled. + */ + onClick?: ( + event: MouseEvent, + editor: BlockNoteEditor, + ) => boolean | void; + /** + * Callback that decides whether a given `href` is a valid link. Applied at + * every gate where a link enters the document: HTML import, HTML export, + * paste, and autolink. Useful for supporting additional URI schemes (e.g. + * `vscode:`, `myapp:`) or tightening the default allowlist. + * + * Defaults to `isAllowedUri`, which allows + * `http|https|ftp|ftps|mailto|tel|callto|sms|cid|xmpp`. Import + * `isAllowedUri` from `@blocknote/core` to layer on top of the default. + * + * @example + * ```ts + * import { isAllowedUri } from "@blocknote/core"; + * + * BlockNoteEditor.create({ + * links: { + * isValidLink: (href) => + * isAllowedUri(href) || href.startsWith("myapp:"), + * }, + * }); + * ``` + */ + isValidLink?: (href: string) => boolean; + }; + /** * @deprecated, provide placeholders via dictionary instead * @internal @@ -1135,6 +1183,32 @@ export class BlockNoteEditor< this._styleManager.createLink(url, text); } + /** + * Find the link mark and its range at the given position. + * Returns undefined if there is no link at that position. + */ + public getLinkMarkAtPos(pos: number) { + return this._styleManager.getLinkMarkAtPos(pos); + } + + /** + * Updates the link at the given position with a new URL and text. + * @param url The new link URL. + * @param text The new text to display. + * @param position The position inside the link to edit. Defaults to the current selection anchor. + */ + public editLink(url: string, text: string, position?: number) { + this._styleManager.editLink(url, text, position); + } + + /** + * Removes the link at the given position, keeping the text. + * @param position The position inside the link to remove. Defaults to the current selection anchor. + */ + public deleteLink(position?: number) { + this._styleManager.deleteLink(position); + } + /** * Checks if the block containing the text cursor can be nested. */ diff --git a/packages/core/src/editor/managers/ExtensionManager/extensions.ts b/packages/core/src/editor/managers/ExtensionManager/extensions.ts index 4364afaaa0..21d2d86f91 100644 --- a/packages/core/src/editor/managers/ExtensionManager/extensions.ts +++ b/packages/core/src/editor/managers/ExtensionManager/extensions.ts @@ -5,7 +5,7 @@ import { Extension as TiptapExtension, } from "@tiptap/core"; import { Gapcursor } from "@tiptap/extensions/gap-cursor"; -import { Link } from "@tiptap/extension-link"; +import { Link } from "../../../extensions/tiptap-extensions/Link/link.js"; import { Text } from "@tiptap/extension-text"; import { createDropFileExtension } from "../../../api/clipboard/fromClipboard/fileDropExtension.js"; import { createPasteFromClipboardExtension } from "../../../api/clipboard/fromClipboard/pasteExtension.js"; @@ -26,10 +26,6 @@ import { TableHandlesExtension, TrailingNodeExtension, } from "../../../extensions/index.js"; -import { - DEFAULT_LINK_PROTOCOL, - VALID_LINK_PROTOCOLS, -} from "../../../extensions/LinkToolbar/protocols.js"; import { BackgroundColorExtension, HardBreak, @@ -49,9 +45,6 @@ import { import { ExtensionFactoryInstance } from "../../BlockNoteExtension.js"; import { CollaborationExtension } from "../../../extensions/Collaboration/Collaboration.js"; -// TODO remove linkify completely by vendoring the link extension & dropping linkifyjs as a dependency -let LINKIFY_INITIALIZED = false; - /** * Get all the Tiptap extensions BlockNote is configured with by default */ @@ -80,22 +73,13 @@ export function getDefaultTiptapExtensions( SuggestionAddMark, SuggestionDeleteMark, SuggestionModificationMark, - Link.extend({ - inclusive: false, - }) - .extend({ - // Remove the title attribute added in newer versions of @tiptap/extension-link - // to avoid unnecessary null attributes in serialized output - addAttributes() { - const attrs = this.parent?.() || {}; - delete (attrs as Record).title; - return attrs; - }, - }) - .configure({ - defaultProtocol: DEFAULT_LINK_PROTOCOL, - // only call this once if we have multiple editors installed. Or fix https://github.com/ueberdosis/tiptap/issues/5450 - protocols: LINKIFY_INITIALIZED ? [] : VALID_LINK_PROTOCOLS, + Link.configure({ + HTMLAttributes: options.links?.HTMLAttributes ?? {}, + editor, + onClick: options.links?.onClick, + ...(options.links?.isValidLink + ? { isValidLink: options.links.isValidLink } + : {}), }), ...(Object.values(editor.schema.styleSpecs).map((styleSpec) => { return styleSpec.implementation.mark.configure({ @@ -173,8 +157,6 @@ export function getDefaultTiptapExtensions( createDropFileExtension(editor), ]; - LINKIFY_INITIALIZED = true; - return tiptapExtensions; } diff --git a/packages/core/src/editor/managers/StyleManager.ts b/packages/core/src/editor/managers/StyleManager.ts index e8ffa99881..123ac6187b 100644 --- a/packages/core/src/editor/managers/StyleManager.ts +++ b/packages/core/src/editor/managers/StyleManager.ts @@ -1,3 +1,4 @@ +import { getMarkRange } from "@tiptap/core"; import { insertContentAt } from "../../api/blockManipulation/insertContentAt.js"; import { inlineContentToNodes } from "../../api/nodeConversions/blockToNode.js"; import { @@ -12,7 +13,6 @@ import { DefaultInlineContentSchema, DefaultStyleSchema, } from "../../blocks/defaultBlocks.js"; -import { TextSelection } from "@tiptap/pm/state"; import { UnreachableCaseError } from "../../util/typescript.js"; import { BlockNoteEditor } from "../BlockNoteEditor.js"; @@ -146,13 +146,42 @@ export class StyleManager< }); } + /** + * Find the link mark and its range at the given position. + * Returns undefined if there is no link at that position. + */ + public getLinkMarkAtPos(pos: number) { + return this.editor.transact((tr) => { + const resolvedPos = tr.doc.resolve(pos); + const linkMark = resolvedPos + .marks() + .find((mark) => mark.type.name === "link"); + + if (!linkMark) { + return undefined; + } + + const range = getMarkRange(resolvedPos, linkMark.type); + if (!range) { + return undefined; + } + + return { + href: linkMark.attrs.href as string, + from: range.from, + to: range.to, + text: tr.doc.textBetween(range.from, range.to), + }; + }); + } + /** * Gets the URL of the last link in the current selection, or `undefined` if there are no links in the selection. */ public getSelectedLinkUrl() { - return this.editor._tiptapEditor.getAttributes("link").href as - | string - | undefined; + return this.editor.transact((tr) => { + return this.getLinkMarkAtPos(tr.selection.from)?.href; + }); } /** @@ -164,24 +193,70 @@ export class StyleManager< if (url === "") { return; } - const mark = this.editor.pmSchema.mark("link", { href: url }); + this.editor.transact((tr) => { const { from, to } = tr.selection; + const linkMark = this.editor.pmSchema.mark("link", { href: url }); if (text) { - const existingText = tr.doc.textBetween(from, to); - if (text !== existingText) { - tr.insertText(text, from, to); - } - - tr.addMark(from, from + text.length, mark); - } else { - tr.setSelection(TextSelection.create(tr.doc, to)).addMark( + tr.insertText(text, from, to).addMark( from, - to, - mark, + from + text.length, + linkMark, ); + } else { + tr.addMark(from, to, linkMark); } }); } + + /** + * Updates the link at the given position with a new URL and text. + * @param url The new link URL. + * @param text The new text to display. + * @param position The position inside the link to edit. Defaults to the current selection anchor. + */ + public editLink( + url: string, + text: string, + position = this.editor.transact((tr) => tr.selection.anchor), + ) { + this.editor.transact((tr) => { + const linkData = this.getLinkMarkAtPos(position + 1); + const { from, to } = linkData || { + from: tr.selection.from, + to: tr.selection.to, + }; + + const linkMark = this.editor.pmSchema.mark("link", { href: url }); + const existingText = tr.doc.textBetween(from, to); + if (text !== existingText) { + tr.insertText(text, from, to); + } + tr.addMark(from, from + text.length, linkMark); + }); + this.editor.prosemirrorView.focus(); + } + + /** + * Removes the link at the given position, keeping the text. + * @param position The position inside the link to remove. Defaults to the current selection anchor. + */ + public deleteLink( + position = this.editor.transact((tr) => tr.selection.anchor), + ) { + this.editor.transact((tr) => { + const linkData = this.getLinkMarkAtPos(position + 1); + const { from, to } = linkData || { + from: tr.selection.from, + to: tr.selection.to, + }; + + tr.removeMark(from, to, this.editor.pmSchema.marks["link"]).setMeta( + "preventAutolink", + true, + ); + }); + this.editor.prosemirrorView.focus(); + } } diff --git a/packages/core/src/extensions/LinkToolbar/LinkToolbar.ts b/packages/core/src/extensions/LinkToolbar/LinkToolbar.ts index f190bc97e6..a4377ab599 100644 --- a/packages/core/src/extensions/LinkToolbar/LinkToolbar.ts +++ b/packages/core/src/extensions/LinkToolbar/LinkToolbar.ts @@ -1,5 +1,4 @@ -import { getMarkRange, posToDOMRect } from "@tiptap/core"; -import { getPmSchema } from "../../api/pmUtil.js"; +import { posToDOMRect } from "@tiptap/core"; import { createExtension } from "../../editor/BlockNoteExtension.js"; export const LinkToolbarExtension = createExtension(({ editor }) => { @@ -14,47 +13,35 @@ export const LinkToolbarExtension = createExtension(({ editor }) => { return null; } - function getMarkAtPos(pos: number, markType: string) { - return editor.transact((tr) => { - const resolvedPos = tr.doc.resolve(pos); - const mark = resolvedPos - .marks() - .find((mark) => mark.type.name === markType); - - if (!mark) { - return; - } - - const markRange = getMarkRange(resolvedPos, mark.type); - if (!markRange) { - return; - } + function getLinkAtPos(pos: number) { + const linkData = editor.getLinkMarkAtPos(pos); + if (!linkData) { + return undefined; + } - return { - range: markRange, - mark, - get text() { - return tr.doc.textBetween(markRange.from, markRange.to); - }, - get position() { - // to minimize re-renders, we convert to JSON, which is the same shape anyway - return posToDOMRect( - editor.prosemirrorView, - markRange.from, - markRange.to, - ).toJSON() as DOMRect; - }, - }; - }); + return { + range: { from: linkData.from, to: linkData.to }, + // Expose mark-like attrs for backward compat with React LinkToolbarController + mark: { attrs: { href: linkData.href } }, + get text() { + return linkData.text; + }, + get position() { + return posToDOMRect( + editor.prosemirrorView, + linkData.from, + linkData.to, + ).toJSON() as DOMRect; + }, + }; } function getLinkAtSelection() { return editor.transact((tr) => { - const selection = tr.selection; - if (!selection.empty) { + if (!tr.selection.empty) { return undefined; } - return getMarkAtPos(selection.anchor, "link"); + return getLinkAtPos(tr.selection.anchor); }); } @@ -63,12 +50,14 @@ export const LinkToolbarExtension = createExtension(({ editor }) => { getLinkAtSelection, getLinkElementAtPos, - getMarkAtPos, + getMarkAtPos(pos: number, _markType: string) { + return getLinkAtPos(pos); + }, getLinkAtElement(element: HTMLElement) { return editor.transact(() => { const posAtElement = editor.prosemirrorView.posAtDOM(element, 0) + 1; - return getMarkAtPos(posAtElement, "link"); + return getLinkAtPos(posAtElement); }); }, @@ -77,50 +66,11 @@ export const LinkToolbarExtension = createExtension(({ editor }) => { text: string, position = editor.transact((tr) => tr.selection.anchor), ) { - editor.transact((tr) => { - const pmSchema = getPmSchema(tr); - const { range } = getMarkAtPos(position + 1, "link") || { - range: { - from: tr.selection.from, - to: tr.selection.to, - }, - }; - if (!range) { - return; - } - - const existingText = tr.doc.textBetween(range.from, range.to); - if (text !== existingText) { - tr.insertText(text, range.from, range.to); - } - - tr.addMark( - range.from, - range.from + text.length, - pmSchema.mark("link", { href: url }), - ); - }); - editor.prosemirrorView.focus(); + editor.editLink(url, text, position); }, - deleteLink(position = editor.transact((tr) => tr.selection.anchor)) { - editor.transact((tr) => { - const pmSchema = getPmSchema(tr); - const { range } = getMarkAtPos(position + 1, "link") || { - range: { - from: tr.selection.from, - to: tr.selection.to, - }, - }; - if (!range) { - return; - } - tr.removeMark(range.from, range.to, pmSchema.marks["link"]).setMeta( - "preventAutolink", - true, - ); - }); - editor.prosemirrorView.focus(); + deleteLink(position = editor.transact((tr) => tr.selection.anchor)) { + editor.deleteLink(position); }, } as const; }); diff --git a/packages/core/src/extensions/tiptap-extensions/Link/helpers/autolink.ts b/packages/core/src/extensions/tiptap-extensions/Link/helpers/autolink.ts new file mode 100644 index 0000000000..88ca510c2a --- /dev/null +++ b/packages/core/src/extensions/tiptap-extensions/Link/helpers/autolink.ts @@ -0,0 +1,179 @@ +import type { NodeWithPos } from "@tiptap/core"; +import { + combineTransactionSteps, + findChildrenInRange, + getChangedRanges, + getMarksBetween, +} from "@tiptap/core"; +import type { MarkType } from "@tiptap/pm/model"; +import { Plugin, PluginKey } from "@tiptap/pm/state"; +import type { LinkMatch } from "./linkDetector.js"; +import { tokenizeLink } from "./linkDetector.js"; + +import { + UNICODE_WHITESPACE_REGEX, + UNICODE_WHITESPACE_REGEX_END, +} from "./whitespace.js"; + +/** + * Check if the provided tokens form a valid link structure, which can either be a single link token + * or a link token surrounded by parentheses or square brackets. + */ +function isValidLinkStructure(tokens: LinkMatch[]) { + if (tokens.length === 1) { + return tokens[0].isLink; + } + + if (tokens.length === 3 && tokens[1].isLink) { + return ["()", "[]"].includes(tokens[0].value + tokens[2].value); + } + + return false; +} + +type AutolinkOptions = { + type: MarkType; + defaultProtocol: string; + validate: (url: string) => boolean; + shouldAutoLink: (url: string) => boolean; +}; + +/** + * Plugin that automatically adds link marks when typing URLs. + */ +export function autolink(options: AutolinkOptions): Plugin { + return new Plugin({ + key: new PluginKey("autolink"), + appendTransaction: (transactions, oldState, newState) => { + const docChanges = + transactions.some((transaction) => transaction.docChanged) && + !oldState.doc.eq(newState.doc); + + const preventAutolink = transactions.some((transaction) => + transaction.getMeta("preventAutolink") + ); + + if (!docChanges || preventAutolink) { + return; + } + + const { tr } = newState; + const transform = combineTransactionSteps(oldState.doc, [ + ...transactions, + ]); + const changes = getChangedRanges(transform); + + changes.forEach(({ newRange }) => { + const nodesInChangedRanges = findChildrenInRange( + newState.doc, + newRange, + (node) => node.isTextblock + ); + + let textBlock: NodeWithPos | undefined; + let textBeforeWhitespace: string | undefined; + + if (nodesInChangedRanges.length > 1) { + textBlock = nodesInChangedRanges[0]; + textBeforeWhitespace = newState.doc.textBetween( + textBlock.pos, + textBlock.pos + textBlock.node.nodeSize, + undefined, + " " + ); + } else if (nodesInChangedRanges.length) { + const endText = newState.doc.textBetween( + newRange.from, + newRange.to, + " ", + " " + ); + if (!UNICODE_WHITESPACE_REGEX_END.test(endText)) { + return; + } + textBlock = nodesInChangedRanges[0]; + textBeforeWhitespace = newState.doc.textBetween( + textBlock.pos, + newRange.to, + undefined, + " " + ); + } + + if (textBlock && textBeforeWhitespace) { + const wordsBeforeWhitespace = textBeforeWhitespace + .split(UNICODE_WHITESPACE_REGEX) + .filter(Boolean); + + if (wordsBeforeWhitespace.length <= 0) { + return; + } + + const lastWordBeforeSpace = + wordsBeforeWhitespace[wordsBeforeWhitespace.length - 1]; + const lastWordAndBlockOffset = + textBlock.pos + + textBeforeWhitespace.lastIndexOf(lastWordBeforeSpace); + + if (!lastWordBeforeSpace) { + return; + } + + const linksBeforeSpace = tokenizeLink( + lastWordBeforeSpace, + options.defaultProtocol + ); + + if (!isValidLinkStructure(linksBeforeSpace)) { + return; + } + + linksBeforeSpace + .filter((link) => link.isLink) + .map((link) => ({ + ...link, + from: lastWordAndBlockOffset + link.start + 1, + to: lastWordAndBlockOffset + link.end + 1, + })) + // ignore link inside code mark + .filter((link) => { + if (!newState.schema.marks.code) { + return true; + } + + return !newState.doc.rangeHasMark( + link.from, + link.to, + newState.schema.marks.code + ); + }) + .filter((link) => options.validate(link.value)) + .filter((link) => options.shouldAutoLink(link.value)) + .forEach((link) => { + if ( + getMarksBetween(link.from, link.to, newState.doc).some( + (item) => item.mark.type === options.type + ) + ) { + return; + } + + tr.addMark( + link.from, + link.to, + options.type.create({ + href: link.href, + }) + ); + }); + } + }); + + if (!tr.steps.length) { + return; + } + + return tr; + }, + }); +} diff --git a/packages/core/src/extensions/tiptap-extensions/Link/helpers/clickHandler.ts b/packages/core/src/extensions/tiptap-extensions/Link/helpers/clickHandler.ts new file mode 100644 index 0000000000..d41082cc17 --- /dev/null +++ b/packages/core/src/extensions/tiptap-extensions/Link/helpers/clickHandler.ts @@ -0,0 +1,82 @@ +import type { Editor } from "@tiptap/core"; +import { getAttributes } from "@tiptap/core"; +import type { MarkType } from "@tiptap/pm/model"; +import { Plugin, PluginKey } from "@tiptap/pm/state"; +import type { BlockNoteEditor } from "../../../../editor/BlockNoteEditor.js"; + +type ClickHandlerOptions = { + type: MarkType; + tiptapEditor: Editor; + editor?: BlockNoteEditor; + onClick?: ( + event: MouseEvent, + editor: BlockNoteEditor, + ) => boolean | void; +}; + +export function clickHandler(options: ClickHandlerOptions): Plugin { + return new Plugin({ + key: new PluginKey("handleClickLink"), + props: { + handleClick: (view, _pos, event) => { + if (event.button !== 0) { + return false; + } + + if (!view.editable) { + return false; + } + + let link: HTMLAnchorElement | null = null; + + if ( + event.target instanceof HTMLAnchorElement && + // Differentiate between link inline content and read-only links. + event.target.getAttribute("data-inline-content-type") === "link" + ) { + link = event.target; + } else { + const target = event.target as HTMLElement | null; + if (!target) { + return false; + } + + const root = options.tiptapEditor.view.dom; + + // Intentionally limit the lookup to the editor root. + // Using tag names like DIV as boundaries breaks with custom NodeViews, + link = target.closest( + 'a[data-inline-content-type="link"]', + ); + + if (link && !root.contains(link)) { + link = null; + } + } + + if (!link) { + return false; + } + + if (options.onClick) { + if (!options.editor) { + throw new Error("BlockNoteEditor not found in Link click handler"); + } + const result = options.onClick(event, options.editor); + return result ?? true; + } + + const attrs = getAttributes(view.state, options.type.name); + const href = link.href ?? attrs.href; + const target = link.target ?? attrs.target; + + if (href) { + window.open(href, target); + return true; + } + + return false; + }, + }, + }); +} diff --git a/packages/core/src/extensions/tiptap-extensions/Link/helpers/linkDetector.ts b/packages/core/src/extensions/tiptap-extensions/Link/helpers/linkDetector.ts new file mode 100644 index 0000000000..310bb9a5d8 --- /dev/null +++ b/packages/core/src/extensions/tiptap-extensions/Link/helpers/linkDetector.ts @@ -0,0 +1,414 @@ +/** + * Lightweight URL detection module replacing linkifyjs. + * + * Provides two functions: + * - findLinks(): find all URLs/emails in arbitrary text (replaces linkifyjs find()) + * - tokenizeLink(): tokenize a single word for autolink validation (replaces linkifyjs tokenize()) + */ + +import { ENCODED_TLDS } from "./tlds.js"; + +export interface LinkMatch { + type: string; + value: string; + isLink: boolean; + href: string; + start: number; + end: number; +} + +// --------------------------------------------------------------------------- +// TLD set – used only for schemeless URL validation. +// Protocol URLs (http://, https://, etc.) skip TLD checks. +// Decoded once at module load from the trie-encoded IANA list in tlds.ts. +// --------------------------------------------------------------------------- + +function decodeTlds(encoded: string): string[] { + const words: string[] = []; + const stack: string[] = []; + let i = 0; + while (i < encoded.length) { + let popDigitCount = 0; + while ( + i + popDigitCount < encoded.length && + encoded.charCodeAt(i + popDigitCount) >= 48 && + encoded.charCodeAt(i + popDigitCount) <= 57 + ) { + popDigitCount++; + } + if (popDigitCount > 0) { + words.push(stack.join("")); + let popCount = parseInt(encoded.substring(i, i + popDigitCount), 10); + while (popCount-- > 0) { + stack.pop(); + } + i += popDigitCount; + } else { + stack.push(encoded[i]); + i++; + } + } + return words; +} + +const TLD_SET = new Set(decodeTlds(ENCODED_TLDS)); + +// Special hostnames recognized without a TLD +const SPECIAL_HOSTS = new Set(["localhost"]); + +// --------------------------------------------------------------------------- +// Regex building blocks +// --------------------------------------------------------------------------- + +// Characters that are unlikely to be part of a URL when they appear at the end +const TRAILING_PUNCT = /[.,;:!?"']+$/; + +// Protocol URLs: http:// https:// ftp:// ftps:// +const PROTOCOL_RE = + /(?:https?|ftp|ftps):\/\/[^\s]+/g; + +// Mailto URLs: mailto:... +const MAILTO_RE = /mailto:[^\s]+/g; + +// Bare email addresses: user@domain.tld +const EMAIL_RE = + /[a-zA-Z0-9._%+-]+@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}/g; + +// Schemeless URLs: domain.tld with optional port and path +// Hostname: one or more labels separated by dots, TLD is alpha-only 2+ chars +const SCHEMELESS_RE = + /(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}(?::\d{1,5})?(?:[/?#][^\s]*)?/g; + +// --------------------------------------------------------------------------- +// Post-processing helpers +// --------------------------------------------------------------------------- + +/** + * Trim trailing punctuation and unbalanced closing brackets from a URL match. + */ +function trimTrailing(value: string): string { + let v = value; + + // Iteratively trim trailing punctuation and unbalanced brackets + let changed = true; + while (changed) { + changed = false; + + // Trim trailing punctuation chars + const before = v; + v = v.replace(TRAILING_PUNCT, ""); + if (v !== before) { + changed = true; + } + + // Trim unbalanced closing brackets from the end + for (const [open, close] of [ + ["(", ")"], + ["[", "]"], + ] as const) { + while (v.endsWith(close)) { + const openCount = countChar(v, open); + const closeCount = countChar(v, close); + if (closeCount > openCount) { + v = v.slice(0, -1); + changed = true; + } else { + break; + } + } + } + } + + return v; +} + +function countChar(str: string, ch: string): number { + let count = 0; + for (let i = 0; i < str.length; i++) { + if (str[i] === ch) { + count++; + } + } + return count; +} + +/** + * Extract the TLD from a hostname string. + * Returns the last dot-separated segment. + */ +function extractTld(hostname: string): string { + const parts = hostname.split("."); + return parts[parts.length - 1].toLowerCase(); +} + +function isValidTld(hostname: string): boolean { + const tld = extractTld(hostname); + return TLD_SET.has(tld); +} + +/** + * Build the href for a URL value, prepending the default protocol if needed. + */ +function buildHref( + value: string, + type: string, + defaultProtocol: string +): string { + if (type === "email") { + return "mailto:" + value; + } + if (/^[a-zA-Z][a-zA-Z0-9+.-]*:\/\//.test(value) || /^mailto:/i.test(value)) { + // Already has a protocol + return value; + } + return defaultProtocol + "://" + value; +} + +// --------------------------------------------------------------------------- +// findLinks() +// --------------------------------------------------------------------------- + +export interface FindOptions { + defaultProtocol?: string; +} + +interface RawMatch { + type: string; + value: string; + start: number; + end: number; +} + +/** + * Find all URLs and email addresses in the given text. + * Drop-in replacement for linkifyjs find(). + */ +export function findLinks( + text: string, + options?: FindOptions +): LinkMatch[] { + if (!text) { + return []; + } + + const defaultProtocol = options?.defaultProtocol || "http"; + const rawMatches: RawMatch[] = []; + + // 1. Protocol URLs + for (const m of text.matchAll(PROTOCOL_RE)) { + rawMatches.push({ + type: "url", + value: m[0], + start: m.index!, + end: m.index! + m[0].length, + }); + } + + // 2. Mailto URLs + for (const m of text.matchAll(MAILTO_RE)) { + rawMatches.push({ + type: "url", + value: m[0], + start: m.index!, + end: m.index! + m[0].length, + }); + } + + // 3. Bare email addresses + for (const m of text.matchAll(EMAIL_RE)) { + rawMatches.push({ + type: "email", + value: m[0], + start: m.index!, + end: m.index! + m[0].length, + }); + } + + // 4. Schemeless URLs + for (const m of text.matchAll(SCHEMELESS_RE)) { + rawMatches.push({ + type: "url", + value: m[0], + start: m.index!, + end: m.index! + m[0].length, + }); + } + + // Sort by start position + rawMatches.sort((a, b) => a.start - b.start || b.end - a.end); + + // Deduplicate overlapping matches (prefer earlier & longer) + const deduped: RawMatch[] = []; + let lastEnd = -1; + for (const match of rawMatches) { + if (match.start >= lastEnd) { + deduped.push(match); + lastEnd = match.end; + } + } + + // Post-process each match + const results: LinkMatch[] = []; + for (const raw of deduped) { + const value = trimTrailing(raw.value); + if (!value) { + continue; + } + + const start = raw.start; + const end = start + value.length; + + // For schemeless URLs, validate TLD + if (raw.type === "url" && !/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(value)) { + const hostname = new URL("http://" + value).hostname; + if (!isValidTld(hostname)) { + continue; + } + } + + // For emails, validate TLD + if (raw.type === "email") { + const hostname = value.split("@")[1]; + if (!isValidTld(hostname)) { + continue; + } + } + + const href = buildHref(value, raw.type, defaultProtocol); + + results.push({ + type: raw.type, + value, + isLink: true, + href, + start, + end, + }); + } + + return results; +} + +// --------------------------------------------------------------------------- +// tokenizeLink() +// --------------------------------------------------------------------------- + +/** + * Tokenize a single word for autolink validation. + * Drop-in replacement for: tokenize(word).map(t => t.toObject(defaultProtocol)) + * + * Returns an array of LinkMatch tokens. The autolink code checks: + * - 1 token with isLink=true → valid single link + * - 3 tokens with middle isLink=true and outer brackets → valid wrapped link + */ +export function tokenizeLink( + text: string, + defaultProtocol = "http" +): LinkMatch[] { + if (!text) { + return [nonLinkToken(text, 0, 0)]; + } + + // Check for bracket wrapping: (url), [url], {url} + const brackets: Array<[string, string]> = [ + ["(", ")"], + ["[", "]"], + ["{", "}"], + ]; + for (const [open, close] of brackets) { + if (text.startsWith(open) && text.endsWith(close) && text.length > 2) { + const inner = text.slice(1, -1); + if (isSingleUrl(inner)) { + return [ + nonLinkToken(open, 0, 1), + linkToken(inner, 1, 1 + inner.length, defaultProtocol), + nonLinkToken(close, 1 + inner.length, text.length), + ]; + } + } + } + + // Check for trailing punctuation (e.g., "example.com." → link + dot) + if (text.endsWith(".") && text.length > 1) { + const withoutDot = text.slice(0, -1); + if (isSingleUrl(withoutDot)) { + return [ + linkToken(withoutDot, 0, withoutDot.length, defaultProtocol), + nonLinkToken(".", withoutDot.length, text.length), + ]; + } + } + + // Check if the whole text is a single URL + if (isSingleUrl(text)) { + return [linkToken(text, 0, text.length, defaultProtocol)]; + } + + // Not a link + return [nonLinkToken(text, 0, text.length)]; +} + +/** + * Check if a string is a single complete URL (no extra chars). + */ +function isSingleUrl(text: string): boolean { + // Protocol URLs + if (/^(?:https?|ftp|ftps):\/\/[^\s]+$/.test(text)) { + return true; + } + + // Mailto URLs + if (/^mailto:[^\s]+$/.test(text)) { + return true; + } + + // Special hosts (e.g., localhost) + if (SPECIAL_HOSTS.has(text.toLowerCase())) { + return true; + } + + // Schemeless URLs: hostname.tld with optional port and path + const schemelessFull = + /^(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+([a-zA-Z]{2,})(?::\d{1,5})?(?:[/?#][^\s]*)?$/; + const match = text.match(schemelessFull); + if (match) { + const tld = match[1].toLowerCase(); + // TLD must be a-z only (no numbers) and recognized + if (TLD_SET.has(tld)) { + return true; + } + } + + return false; +} + +function linkToken( + value: string, + start: number, + end: number, + defaultProtocol: string +): LinkMatch { + const type = + value.includes("@") && !value.includes("://") && !value.startsWith("mailto:") + ? "email" + : "url"; + return { + type, + value, + isLink: true, + href: buildHref(value, type, defaultProtocol), + start, + end, + }; +} + +function nonLinkToken(value: string, start: number, end: number): LinkMatch { + return { + type: "text", + value, + isLink: false, + href: value, + start, + end, + }; +} diff --git a/packages/core/src/extensions/tiptap-extensions/Link/helpers/pasteHandler.ts b/packages/core/src/extensions/tiptap-extensions/Link/helpers/pasteHandler.ts new file mode 100644 index 0000000000..f318d08b61 --- /dev/null +++ b/packages/core/src/extensions/tiptap-extensions/Link/helpers/pasteHandler.ts @@ -0,0 +1,53 @@ +import type { Editor } from "@tiptap/core"; +import type { MarkType } from "@tiptap/pm/model"; +import { Plugin, PluginKey } from "@tiptap/pm/state"; +import { findLinks } from "./linkDetector.js"; + +type PasteHandlerOptions = { + editor: Editor; + defaultProtocol: string; + type: MarkType; + shouldAutoLink?: (url: string) => boolean; + isValidLink: (href: string) => boolean; +}; + +export function pasteHandler(options: PasteHandlerOptions): Plugin { + return new Plugin({ + key: new PluginKey("handlePasteLink"), + props: { + handlePaste: (view, _event, slice) => { + const { shouldAutoLink, isValidLink } = options; + const { state } = view; + const { selection } = state; + const { empty } = selection; + + if (empty) { + return false; + } + + let textContent = ""; + + slice.content.forEach((node) => { + textContent += node.textContent; + }); + + const link = findLinks(textContent, { + defaultProtocol: options.defaultProtocol, + }).find((item) => item.isLink && item.value === textContent); + + if ( + !textContent || + !link || + !isValidLink(link.value) || + (shouldAutoLink !== undefined && !shouldAutoLink(link.value)) + ) { + return false; + } + + return options.editor.commands.setMark(options.type, { + href: link.href, + }); + }, + }, + }); +} diff --git a/packages/core/src/extensions/tiptap-extensions/Link/helpers/tlds.ts b/packages/core/src/extensions/tiptap-extensions/Link/helpers/tlds.ts new file mode 100644 index 0000000000..a1377f505a --- /dev/null +++ b/packages/core/src/extensions/tiptap-extensions/Link/helpers/tlds.ts @@ -0,0 +1,7 @@ +// THIS FILE IS AUTO-GENERATED. DO NOT EDIT DIRECTLY. +// Source: https://data.iana.org/TLD/tlds-alpha-by-domain.txt +// Regenerate with: pnpm --filter @blocknote/core update-tlds +// Encoding format ported from linkifyjs (MIT) — trie collapsed into ASCII. + +export const ENCODED_TLDS = + "aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4w0s2x0a2z0ure5ba0by2idu3namex4d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dad1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2odyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3nd0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rck0msd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0axi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp3ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2oodside6rk0s2ld3w2s1tc1f3xbox3erox4ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2"; diff --git a/packages/core/src/extensions/tiptap-extensions/Link/helpers/whitespace.ts b/packages/core/src/extensions/tiptap-extensions/Link/helpers/whitespace.ts new file mode 100644 index 0000000000..70d6612ae1 --- /dev/null +++ b/packages/core/src/extensions/tiptap-extensions/Link/helpers/whitespace.ts @@ -0,0 +1,13 @@ +// From DOMPurify +// https://github.com/cure53/DOMPurify/blob/main/src/regexp.ts +export const UNICODE_WHITESPACE_PATTERN = + "[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]"; + +export const UNICODE_WHITESPACE_REGEX = new RegExp(UNICODE_WHITESPACE_PATTERN); +export const UNICODE_WHITESPACE_REGEX_END = new RegExp( + `${UNICODE_WHITESPACE_PATTERN}$` +); +export const UNICODE_WHITESPACE_REGEX_GLOBAL = new RegExp( + UNICODE_WHITESPACE_PATTERN, + "g" +); diff --git a/packages/core/src/extensions/tiptap-extensions/Link/index.ts b/packages/core/src/extensions/tiptap-extensions/Link/index.ts new file mode 100644 index 0000000000..5324cbbe38 --- /dev/null +++ b/packages/core/src/extensions/tiptap-extensions/Link/index.ts @@ -0,0 +1,2 @@ +export { Link } from "./link.js"; +export { isAllowedUri } from "./link.js"; diff --git a/packages/core/src/extensions/tiptap-extensions/Link/link.test.ts b/packages/core/src/extensions/tiptap-extensions/Link/link.test.ts new file mode 100644 index 0000000000..3af3046078 --- /dev/null +++ b/packages/core/src/extensions/tiptap-extensions/Link/link.test.ts @@ -0,0 +1,941 @@ +import { afterEach, describe, expect, it } from "vitest"; +import { TextSelection } from "@tiptap/pm/state"; +import { Slice, Fragment } from "@tiptap/pm/model"; + +import { BlockNoteEditor } from "../../../editor/BlockNoteEditor.js"; +import { findLinks, tokenizeLink } from "./helpers/linkDetector.js"; +import { isAllowedUri } from "./link.js"; + +/** + * @vitest-environment jsdom + */ + +// ============================================================================ +// Helpers +// ============================================================================ + +/** Wrapper matching the old tokenize().map(t => t.toObject(defaultProtocol)) pattern */ +function tokenizeToObjects(text: string, defaultProtocol = "http") { + return tokenizeLink(text, defaultProtocol); +} + +/** + * Mirrors the isValidLinkStructure function from autolink.ts. + * A valid structure is either: + * - A single link token + * - A link token wrapped in () or [] + */ +function isValidLinkStructure( + tokens: Array<{ isLink: boolean; value: string }> +) { + if (tokens.length === 1) { + return tokens[0].isLink; + } + if (tokens.length === 3 && tokens[1].isLink) { + return ["()", "[]"].includes(tokens[0].value + tokens[2].value); + } + return false; +} + +function createEditor(links?: { isValidLink?: (href: string) => boolean }) { + const editor = BlockNoteEditor.create(links ? { links } : undefined); + const div = document.createElement("div"); + editor.mount(div); + return editor; +} + +/** + * Insert text at the end of a block, followed by a space to trigger autolink. + * Returns the link marks found in that block afterward. + */ +function typeTextThenSpace( + editor: BlockNoteEditor, + blockId: string, + text: string +) { + editor.setTextCursorPosition(blockId, "end"); + const view = editor._tiptapEditor.view; + const { from } = view.state.selection; + + // Insert the text + view.dispatch(view.state.tr.insertText(text, from)); + + // Now insert a space to trigger autolink + const afterInsert = view.state.selection.from; + view.dispatch(view.state.tr.insertText(" ", afterInsert)); + + return getLinksInDocument(editor); +} + +/** + * Walk the ProseMirror doc and collect all link marks with their text and href. + */ +function getLinksInDocument(editor: BlockNoteEditor) { + const links: Array<{ text: string; href: string; from: number; to: number }> = + []; + const doc = editor._tiptapEditor.state.doc; + const linkType = editor._tiptapEditor.schema.marks.link; + + doc.descendants((node, pos) => { + if (node.isText && node.marks.length > 0) { + const linkMark = node.marks.find((m) => m.type === linkType); + if (linkMark) { + links.push({ + text: node.text || "", + href: linkMark.attrs.href, + from: pos, + to: pos + node.nodeSize, + }); + } + } + }); + return links; +} + +// ============================================================================ +// Level 1: Unit tests for findLinks() and tokenizeLink() +// ============================================================================ + +describe("findLinks() baseline behavior", () => { + describe("basic URL detection", () => { + it("detects https URLs", () => { + const results = findLinks("https://example.com"); + expect(results).toHaveLength(1); + expect(results[0]).toMatchObject({ + isLink: true, + value: "https://example.com", + href: "https://example.com", + start: 0, + end: 19, + }); + }); + + it("detects http URLs", () => { + const results = findLinks("http://example.com"); + expect(results).toHaveLength(1); + expect(results[0]).toMatchObject({ + isLink: true, + value: "http://example.com", + href: "http://example.com", + }); + }); + + it("detects schemeless URLs and prepends default protocol", () => { + const results = findLinks("example.com"); + expect(results).toHaveLength(1); + expect(results[0]).toMatchObject({ + isLink: true, + value: "example.com", + href: "http://example.com", + start: 0, + end: 11, + }); + }); + + it("respects defaultProtocol option", () => { + const results = findLinks("example.com", { defaultProtocol: "https" }); + expect(results).toHaveLength(1); + expect(results[0].href).toBe("https://example.com"); + }); + + it("detects www URLs", () => { + const results = findLinks("www.example.com"); + expect(results).toHaveLength(1); + expect(results[0]).toMatchObject({ + isLink: true, + value: "www.example.com", + href: "http://www.example.com", + }); + }); + }); + + describe("multiple URLs in text", () => { + it("finds multiple URLs with correct positions", () => { + const results = findLinks("Visit https://a.com and https://b.com"); + expect(results).toHaveLength(2); + expect(results[0]).toMatchObject({ + value: "https://a.com", + start: 6, + end: 19, + }); + expect(results[1]).toMatchObject({ + value: "https://b.com", + start: 24, + end: 37, + }); + }); + + it("finds multiple schemeless URLs", () => { + const results = findLinks("Check example.com or test.org"); + expect(results).toHaveLength(2); + expect(results[0].value).toBe("example.com"); + expect(results[1].value).toBe("test.org"); + }); + }); + + describe("URLs with paths, queries, and fragments", () => { + it("includes full path", () => { + const results = findLinks("https://example.com/path/to/page"); + expect(results).toHaveLength(1); + expect(results[0].value).toBe("https://example.com/path/to/page"); + }); + + it("includes query string", () => { + const results = findLinks("https://example.com?q=hello&b=world"); + expect(results).toHaveLength(1); + expect(results[0].value).toBe("https://example.com?q=hello&b=world"); + }); + + it("includes fragment", () => { + const results = findLinks("https://example.com#section"); + expect(results).toHaveLength(1); + expect(results[0].value).toBe("https://example.com#section"); + }); + + it("includes path + query + fragment", () => { + const results = findLinks("https://example.com/path?q=1#frag"); + expect(results).toHaveLength(1); + expect(results[0].value).toBe("https://example.com/path?q=1#frag"); + }); + + it("includes encoded characters", () => { + const results = findLinks("https://example.com/path%20name"); + expect(results).toHaveLength(1); + expect(results[0].value).toBe("https://example.com/path%20name"); + }); + + it("includes trailing slash", () => { + const results = findLinks("https://example.com/"); + expect(results).toHaveLength(1); + expect(results[0].value).toBe("https://example.com/"); + }); + }); + + describe("URLs with ports", () => { + it("detects URL with port", () => { + const results = findLinks("https://example.com:8080"); + expect(results).toHaveLength(1); + expect(results[0].value).toBe("https://example.com:8080"); + }); + + it("detects schemeless URL with port and path", () => { + const results = findLinks("example.com:3000/path"); + expect(results).toHaveLength(1); + expect(results[0]).toMatchObject({ + value: "example.com:3000/path", + href: "http://example.com:3000/path", + }); + }); + }); + + describe("trailing punctuation handling", () => { + it("excludes trailing period", () => { + const results = findLinks("Visit https://example.com."); + expect(results).toHaveLength(1); + expect(results[0].value).toBe("https://example.com"); + }); + + it("excludes trailing comma", () => { + const results = findLinks("See https://example.com, and more"); + expect(results).toHaveLength(1); + expect(results[0].value).toBe("https://example.com"); + }); + + it("excludes surrounding parentheses", () => { + const results = findLinks("(https://example.com)"); + expect(results).toHaveLength(1); + expect(results[0]).toMatchObject({ + value: "https://example.com", + start: 1, + end: 20, + }); + }); + + it("keeps balanced parentheses in path (Wikipedia-style)", () => { + const results = findLinks( + "https://en.wikipedia.org/wiki/Foo_(bar)" + ); + expect(results).toHaveLength(1); + expect(results[0].value).toBe( + "https://en.wikipedia.org/wiki/Foo_(bar)" + ); + }); + }); + + describe("non-links", () => { + it("returns empty for plain text", () => { + expect(findLinks("not a link")).toHaveLength(0); + }); + + it("returns empty for single word", () => { + expect(findLinks("hello")).toHaveLength(0); + }); + + it("returns empty for empty string", () => { + expect(findLinks("")).toHaveLength(0); + }); + + it("returns empty for just a protocol", () => { + expect(findLinks("https://")).toHaveLength(0); + }); + + it("does not detect bare IP addresses", () => { + expect(findLinks("192.168.1.1")).toHaveLength(0); + }); + }); + + describe("domain variations", () => { + it("detects hyphenated domains", () => { + const results = findLinks("my-site.example.com"); + expect(results).toHaveLength(1); + expect(results[0].value).toBe("my-site.example.com"); + }); + + it("detects subdomains", () => { + const results = findLinks("sub.domain.example.com"); + expect(results).toHaveLength(1); + expect(results[0].value).toBe("sub.domain.example.com"); + }); + }); + + describe("URL position in text", () => { + it("detects URL at end of text", () => { + const results = findLinks("go to example.com"); + expect(results).toHaveLength(1); + expect(results[0]).toMatchObject({ + value: "example.com", + start: 6, + end: 17, + }); + }); + + it("detects URL at start of text", () => { + const results = findLinks("example.com is great"); + expect(results).toHaveLength(1); + expect(results[0]).toMatchObject({ + value: "example.com", + start: 0, + end: 11, + }); + }); + }); + + describe("protocol variations", () => { + it("detects ftp URLs", () => { + const results = findLinks("ftp://files.example.com"); + expect(results).toHaveLength(1); + expect(results[0].value).toBe("ftp://files.example.com"); + }); + + it("detects mailto URLs", () => { + const results = findLinks("mailto:user@example.com"); + expect(results).toHaveLength(1); + expect(results[0]).toMatchObject({ + value: "mailto:user@example.com", + href: "mailto:user@example.com", + }); + }); + + it("detects bare email addresses as links", () => { + const results = findLinks("user@example.com"); + expect(results).toHaveLength(1); + expect(results[0]).toMatchObject({ + isLink: true, + value: "user@example.com", + href: "mailto:user@example.com", + }); + }); + }); + + describe("boundary handling", () => { + it("stops at whitespace", () => { + const results = findLinks("https://example.com/path with spaces"); + expect(results).toHaveLength(1); + expect(results[0].value).toBe("https://example.com/path"); + }); + }); +}); + +describe("tokenizeLink() baseline behavior", () => { + describe("single valid links", () => { + it("tokenizes schemeless URL as single link token", () => { + const tokens = tokenizeToObjects("example.com"); + expect(tokens).toHaveLength(1); + expect(tokens[0]).toMatchObject({ + isLink: true, + value: "example.com", + href: "http://example.com", + start: 0, + end: 11, + }); + }); + + it("tokenizes https URL as single link token", () => { + const tokens = tokenizeToObjects("https://example.com"); + expect(tokens).toHaveLength(1); + expect(tokens[0]).toMatchObject({ + isLink: true, + value: "https://example.com", + href: "https://example.com", + }); + }); + + it("tokenizes URL with path as single link token", () => { + const tokens = tokenizeToObjects("example.com/path"); + expect(tokens).toHaveLength(1); + expect(tokens[0]).toMatchObject({ + isLink: true, + value: "example.com/path", + href: "http://example.com/path", + }); + }); + + it("tokenizes www URL as single link token", () => { + const tokens = tokenizeToObjects("www.example.com"); + expect(tokens).toHaveLength(1); + expect(tokens[0]).toMatchObject({ + isLink: true, + value: "www.example.com", + href: "http://www.example.com", + }); + }); + + it("tokenizes URL with https and path as single link token", () => { + const tokens = tokenizeToObjects("https://example.com/path"); + expect(tokens).toHaveLength(1); + expect(tokens[0]).toMatchObject({ + isLink: true, + value: "https://example.com/path", + href: "https://example.com/path", + }); + }); + + it("tokenizes short TLD (2 chars) as link", () => { + const tokens = tokenizeToObjects("test.co"); + expect(tokens).toHaveLength(1); + expect(tokens[0].isLink).toBe(true); + }); + }); + + describe("bracket-wrapped links", () => { + it("tokenizes (url) as 3 tokens with link in middle", () => { + const tokens = tokenizeToObjects("(example.com)"); + expect(tokens).toHaveLength(3); + expect(tokens[0]).toMatchObject({ + isLink: false, + value: "(", + start: 0, + end: 1, + }); + expect(tokens[1]).toMatchObject({ + isLink: true, + value: "example.com", + href: "http://example.com", + start: 1, + end: 12, + }); + expect(tokens[2]).toMatchObject({ + isLink: false, + value: ")", + start: 12, + end: 13, + }); + }); + + it("tokenizes [url] as 3 tokens with link in middle", () => { + const tokens = tokenizeToObjects("[example.com]"); + expect(tokens).toHaveLength(3); + expect(tokens[0]).toMatchObject({ isLink: false, value: "[" }); + expect(tokens[1]).toMatchObject({ + isLink: true, + value: "example.com", + }); + expect(tokens[2]).toMatchObject({ isLink: false, value: "]" }); + }); + + it("tokenizes (https://url) as 3 tokens", () => { + const tokens = tokenizeToObjects("(https://example.com)"); + expect(tokens).toHaveLength(3); + expect(tokens[0]).toMatchObject({ isLink: false, value: "(" }); + expect(tokens[1]).toMatchObject({ + isLink: true, + value: "https://example.com", + href: "https://example.com", + }); + expect(tokens[2]).toMatchObject({ isLink: false, value: ")" }); + }); + }); + + describe("non-links", () => { + it("tokenizes plain word as non-link", () => { + const tokens = tokenizeToObjects("notaurl"); + expect(tokens).toHaveLength(1); + expect(tokens[0].isLink).toBe(false); + }); + + it("tokenizes domain with trailing number as non-link", () => { + // This is a key behavior: example.com1 is NOT a valid link + // because the TLD is "com1" which is not valid + const tokens = tokenizeToObjects("example.com1"); + expect(tokens).toHaveLength(1); + expect(tokens[0].isLink).toBe(false); + }); + + it("tokenizes single-char TLD as non-link", () => { + const tokens = tokenizeToObjects("test.x"); + expect(tokens).toHaveLength(1); + expect(tokens[0].isLink).toBe(false); + }); + + it("tokenizes single-char hostname as non-link", () => { + const tokens = tokenizeToObjects("a.bc"); + expect(tokens).toHaveLength(1); + expect(tokens[0].isLink).toBe(false); + }); + }); + + describe("edge cases", () => { + it("tokenizes IP address as non-link", () => { + const tokens = tokenizeToObjects("192.168.1.1"); + expect(tokens).toHaveLength(1); + expect(tokens[0].isLink).toBe(false); + }); + + it("tokenizes localhost as link (filtered downstream by shouldAutoLink)", () => { + const tokens = tokenizeToObjects("localhost"); + expect(tokens).toHaveLength(1); + expect(tokens[0].isLink).toBe(true); + }); + + it("tokenizes url with trailing dot as url + dot tokens", () => { + const tokens = tokenizeToObjects("example.com."); + expect(tokens).toHaveLength(2); + expect(tokens[0]).toMatchObject({ + isLink: true, + value: "example.com", + }); + expect(tokens[1]).toMatchObject({ + isLink: false, + value: ".", + }); + }); + + it("tokenizes {url} as 3 tokens (curly braces)", () => { + const tokens = tokenizeToObjects("{example.com}"); + expect(tokens).toHaveLength(3); + expect(tokens[0]).toMatchObject({ isLink: false, value: "{" }); + expect(tokens[1]).toMatchObject({ isLink: true, value: "example.com" }); + expect(tokens[2]).toMatchObject({ isLink: false, value: "}" }); + }); + + it("respects defaultProtocol parameter", () => { + const tokens = tokenizeToObjects("example.com", "https"); + expect(tokens[0].href).toBe("https://example.com"); + }); + }); +}); + +describe("isValidLinkStructure baseline", () => { + it("accepts single link token", () => { + const tokens = tokenizeToObjects("example.com"); + expect(isValidLinkStructure(tokens)).toBe(true); + }); + + it("accepts link wrapped in parentheses", () => { + const tokens = tokenizeToObjects("(example.com)"); + expect(isValidLinkStructure(tokens)).toBe(true); + }); + + it("accepts link wrapped in square brackets", () => { + const tokens = tokenizeToObjects("[example.com]"); + expect(isValidLinkStructure(tokens)).toBe(true); + }); + + it("rejects link wrapped in curly braces", () => { + // {url} tokenizes to 3 tokens but {} is not in the accepted list + const tokens = tokenizeToObjects("{example.com}"); + expect(isValidLinkStructure(tokens)).toBe(false); + }); + + it("rejects non-link single token", () => { + const tokens = tokenizeToObjects("notaurl"); + expect(isValidLinkStructure(tokens)).toBe(false); + }); + + it("rejects url with trailing dot (2 tokens)", () => { + const tokens = tokenizeToObjects("example.com."); + expect(isValidLinkStructure(tokens)).toBe(false); + }); + + it("rejects example.com1 (invalid TLD)", () => { + const tokens = tokenizeToObjects("example.com1"); + expect(isValidLinkStructure(tokens)).toBe(false); + }); +}); + +// ============================================================================ +// Level 2: Integration tests through the editor +// ============================================================================ + +describe("Link extension autolink behavior", () => { + let editor: BlockNoteEditor; + + afterEach(() => { + if (editor) { + editor._tiptapEditor.destroy(); + } + }); + + function setupEditorWithBlock(content = "") { + editor = createEditor(); + editor.replaceBlocks(editor.document, [ + { + id: "test-block", + type: "paragraph", + content: content || undefined, + }, + ]); + return editor; + } + + describe("should autolink", () => { + it("autolinks https URL when followed by space", () => { + setupEditorWithBlock(); + const links = typeTextThenSpace(editor, "test-block", "https://example.com"); + expect(links).toHaveLength(1); + expect(links[0].href).toBe("https://example.com"); + expect(links[0].text).toBe("https://example.com"); + }); + + it("autolinks http URL when followed by space", () => { + setupEditorWithBlock(); + const links = typeTextThenSpace(editor, "test-block", "http://example.com"); + expect(links).toHaveLength(1); + expect(links[0].href).toBe("http://example.com"); + }); + + it("autolinks schemeless URL with default protocol (https in BlockNote)", () => { + setupEditorWithBlock(); + const links = typeTextThenSpace(editor, "test-block", "example.com"); + expect(links).toHaveLength(1); + // BlockNote overrides the tiptap default to "https" via DEFAULT_LINK_PROTOCOL + expect(links[0].href).toBe("https://example.com"); + expect(links[0].text).toBe("example.com"); + }); + + it("autolinks www URL", () => { + setupEditorWithBlock(); + const links = typeTextThenSpace(editor, "test-block", "www.example.com"); + expect(links).toHaveLength(1); + expect(links[0].href).toBe("https://www.example.com"); + }); + + it("autolinks URL with path and query", () => { + setupEditorWithBlock(); + const links = typeTextThenSpace( + editor, + "test-block", + "https://example.com/path?q=1" + ); + expect(links).toHaveLength(1); + expect(links[0].href).toBe("https://example.com/path?q=1"); + }); + }); + + describe("should NOT autolink", () => { + it("does not autolink plain text", () => { + setupEditorWithBlock(); + const links = typeTextThenSpace(editor, "test-block", "notaurl"); + expect(links).toHaveLength(0); + }); + + it("does not autolink single word", () => { + setupEditorWithBlock(); + const links = typeTextThenSpace(editor, "test-block", "hello"); + expect(links).toHaveLength(0); + }); + + it("does not autolink IP address without protocol", () => { + setupEditorWithBlock(); + const links = typeTextThenSpace(editor, "test-block", "192.168.1.1"); + expect(links).toHaveLength(0); + }); + + it("does not autolink localhost (single-word hostname)", () => { + setupEditorWithBlock(); + const links = typeTextThenSpace(editor, "test-block", "localhost"); + expect(links).toHaveLength(0); + }); + + it("does not autolink domain with trailing number (invalid TLD)", () => { + setupEditorWithBlock(); + const links = typeTextThenSpace(editor, "test-block", "example.com1"); + expect(links).toHaveLength(0); + }); + }); + + describe("bracket-wrapped URLs", () => { + it("autolinks URL in parentheses, linking only the URL", () => { + setupEditorWithBlock(); + const links = typeTextThenSpace( + editor, + "test-block", + "(https://example.com)" + ); + expect(links).toHaveLength(1); + expect(links[0].href).toBe("https://example.com"); + expect(links[0].text).toBe("https://example.com"); + }); + + it("autolinks URL in square brackets, linking only the URL", () => { + setupEditorWithBlock(); + const links = typeTextThenSpace( + editor, + "test-block", + "[https://example.com]" + ); + expect(links).toHaveLength(1); + expect(links[0].href).toBe("https://example.com"); + expect(links[0].text).toBe("https://example.com"); + }); + }); +}); + +describe("Link extension paste handler behavior", () => { + let editor: BlockNoteEditor; + + afterEach(() => { + if (editor) { + editor._tiptapEditor.destroy(); + } + }); + + it("applies link mark when pasting URL over selected text", () => { + editor = createEditor(); + editor.replaceBlocks(editor.document, [ + { + id: "test-block", + type: "paragraph", + content: "click here", + }, + ]); + + // Select "click here" + editor.setTextCursorPosition("test-block", "start"); + const view = editor._tiptapEditor.view; + const doc = view.state.doc; + + // Find the text node position + let textStart = 0; + let textEnd = 0; + doc.descendants((node, pos) => { + if (node.isText && node.text === "click here") { + textStart = pos; + textEnd = pos + node.nodeSize; + } + }); + + // Create selection over the text + const tr = view.state.tr.setSelection( + TextSelection.create(view.state.doc, textStart, textEnd) + ); + view.dispatch(tr); + + // Create a minimal slice that looks like pasted URL text + const textNode = view.state.schema.text("https://example.com"); + const slice = new Slice(Fragment.from(textNode), 0, 0); + + // Dispatch paste through the editor view + const handled = view.someProp("handlePaste", (f) => + f(view, new ClipboardEvent("paste"), slice) + ); + + expect(handled).toBeTruthy(); + // Check that link mark was applied + const links = getLinksInDocument(editor); + expect(links).toHaveLength(1); + expect(links[0].href).toBe("https://example.com"); + expect(links[0].text).toBe("click here"); + }); + + it("does not apply link when pasting non-URL text over selection", () => { + editor = createEditor(); + editor.replaceBlocks(editor.document, [ + { + id: "test-block", + type: "paragraph", + content: "click here", + }, + ]); + + editor.setTextCursorPosition("test-block", "start"); + const view = editor._tiptapEditor.view; + const doc = view.state.doc; + + let textStart = 0; + let textEnd = 0; + doc.descendants((node, pos) => { + if (node.isText && node.text === "click here") { + textStart = pos; + textEnd = pos + node.nodeSize; + } + }); + + const tr = view.state.tr.setSelection( + TextSelection.create(view.state.doc, textStart, textEnd) + ); + view.dispatch(tr); + + const textNode = view.state.schema.text("not a url"); + const slice = new Slice(Fragment.from(textNode), 0, 0); + + const handled = view.someProp("handlePaste", (f) => + f(view, new ClipboardEvent("paste"), slice) + ); + + // Should not be handled (not a URL) + expect(handled).toBeFalsy(); + + // No links should exist + const links = getLinksInDocument(editor); + expect(links).toHaveLength(0); + }); + + it("does not apply link when pasting URL with empty selection", () => { + editor = createEditor(); + editor.replaceBlocks(editor.document, [ + { + id: "test-block", + type: "paragraph", + content: "some text", + }, + ]); + + // Place cursor without selection + editor.setTextCursorPosition("test-block", "end"); + const view = editor._tiptapEditor.view; + + const textNode = view.state.schema.text("https://example.com"); + const slice = new Slice(Fragment.from(textNode), 0, 0); + + const handled = view.someProp("handlePaste", (f) => + f(view, new ClipboardEvent("paste"), slice) + ); + + // Should not be handled because selection is empty + expect(handled).toBeFalsy(); + }); +}); + +describe("Link extension isValidLink option", () => { + let editor: BlockNoteEditor; + + afterEach(() => { + if (editor) { + editor._tiptapEditor.destroy(); + } + }); + + it("autolink: restrictive override blocks normally-valid URLs on typing", () => { + editor = createEditor({ isValidLink: () => false }); + editor.replaceBlocks(editor.document, [ + { + id: "test-block", + type: "paragraph", + content: "", + }, + ]); + + const links = typeTextThenSpace( + editor, + "test-block", + "https://example.com" + ); + expect(links).toHaveLength(0); + }); + + it("paste-rule: restrictive override blocks pasted URL text", () => { + editor = createEditor({ isValidLink: () => false }); + editor.replaceBlocks(editor.document, [ + { + id: "test-block", + type: "paragraph", + content: "some text here", + }, + ]); + + editor._tiptapEditor.commands.insertContent("https://example.com "); + + const links = getLinksInDocument(editor); + expect(links).toHaveLength(0); + }); + + it("paste-handler: restrictive override blocks URL pasted over selection", () => { + editor = createEditor({ isValidLink: () => false }); + editor.replaceBlocks(editor.document, [ + { + id: "test-block", + type: "paragraph", + content: "click here", + }, + ]); + + editor.setTextCursorPosition("test-block", "start"); + const view = editor._tiptapEditor.view; + const doc = view.state.doc; + + let textStart = 0; + let textEnd = 0; + doc.descendants((node, pos) => { + if (node.isText && node.text === "click here") { + textStart = pos; + textEnd = pos + node.nodeSize; + } + }); + + const tr = view.state.tr.setSelection( + TextSelection.create(view.state.doc, textStart, textEnd) + ); + view.dispatch(tr); + + const textNode = view.state.schema.text("https://example.com"); + const slice = new Slice(Fragment.from(textNode), 0, 0); + + const handled = view.someProp("handlePaste", (f) => + f(view, new ClipboardEvent("paste"), slice) + ); + + expect(handled).toBeFalsy(); + const links = getLinksInDocument(editor); + expect(links).toHaveLength(0); + }); + + it("parseHTML: permissive override accepts custom-scheme links", () => { + editor = createEditor({ + isValidLink: (href) => isAllowedUri(href) || href.startsWith("myapp:"), + }); + editor.pasteHTML(`

click

`); + + const links = getLinksInDocument(editor); + expect(links).toHaveLength(1); + expect(links[0].href).toBe("myapp://foo"); + }); + + it("parseHTML: default rejects unknown-scheme links", () => { + editor = createEditor(); + editor.pasteHTML(`

click

`); + + const links = getLinksInDocument(editor); + expect(links).toHaveLength(0); + }); + + it("renderHTML: permissive override preserves custom-scheme href on export", () => { + editor = createEditor({ + isValidLink: (href) => isAllowedUri(href) || href.startsWith("myapp:"), + }); + editor.pasteHTML(`

click

`); + + const html = editor.blocksToFullHTML(editor.document); + expect(html).toContain('href="myapp://foo"'); + }); +}); diff --git a/packages/core/src/extensions/tiptap-extensions/Link/link.ts b/packages/core/src/extensions/tiptap-extensions/Link/link.ts new file mode 100644 index 0000000000..9b3405d536 --- /dev/null +++ b/packages/core/src/extensions/tiptap-extensions/Link/link.ts @@ -0,0 +1,207 @@ +import type { PasteRuleMatch } from "@tiptap/core"; +import { Mark, markPasteRule, mergeAttributes } from "@tiptap/core"; +import type { Plugin } from "@tiptap/pm/state"; +import type { BlockNoteEditor } from "../../../editor/BlockNoteEditor.js"; +import { autolink } from "./helpers/autolink.js"; +import { findLinks } from "./helpers/linkDetector.js"; +import { clickHandler } from "./helpers/clickHandler.js"; +import { pasteHandler } from "./helpers/pasteHandler.js"; +import { UNICODE_WHITESPACE_REGEX_GLOBAL } from "./helpers/whitespace.js"; + +const DEFAULT_PROTOCOL = "https"; + +const HTML_ATTRIBUTES = { + target: "_blank", + rel: "noopener noreferrer nofollow", + className: "bn-inline-content-section", + "data-inline-content-type": "link", +}; + +// Pre-compiled regex for URI protocol validation. +// Allows: http, https, ftp, ftps, mailto, tel, callto, sms, cid, xmpp +const ALLOWED_URI_REGEX = + // eslint-disable-next-line no-useless-escape + /^(?:(?:http|https|ftp|ftps|mailto|tel|callto|sms|cid|xmpp):|[^a-z]|[a-z0-9+.\-]+(?:[^a-z+.\-:]|$))/i; + +export function isAllowedUri(uri: string | undefined): boolean { + if (!uri) { + return true; + } + const cleaned = uri.replace(UNICODE_WHITESPACE_REGEX_GLOBAL, ""); + return ALLOWED_URI_REGEX.test(cleaned); +} + +/** + * Determine whether a detected URL should be auto-linked. + * URLs with explicit protocols are always auto-linked. + * Bare hostnames must have a TLD (no IP addresses or single words). + */ +function shouldAutoLink(url: string): boolean { + const hasProtocol = /^[a-z][a-z0-9+.-]*:\/\//i.test(url); + const hasMaybeProtocol = /^[a-z][a-z0-9+.-]*:/i.test(url); + + if (hasProtocol || (hasMaybeProtocol && !url.includes("@"))) { + return true; + } + // Strip userinfo (user:pass@) if present, then extract hostname + const urlWithoutUserinfo = url.includes("@") ? url.split("@").pop()! : url; + const hostname = urlWithoutUserinfo.split(/[/?#:]/)[0]; + + // Don't auto-link IP addresses without protocol + if (/^\d{1,3}(\.\d{1,3}){3}$/.test(hostname)) { + return false; + } + // Don't auto-link single-word hostnames without TLD (e.g., "localhost") + if (!/\./.test(hostname)) { + return false; + } + return true; +} + +export type LinkOptions = { + HTMLAttributes: Record; + editor?: BlockNoteEditor; + onClick?: ( + event: MouseEvent, + editor: BlockNoteEditor, + ) => boolean | void; + isValidLink: (href: string) => boolean; +}; + +/** + * BlockNote Link mark extension. + */ +export const Link = Mark.create({ + name: "link", + + priority: 1000, + + keepOnSplit: false, + + exitable: true, + + inclusive: false, + + addOptions() { + return { + HTMLAttributes: {}, + editor: undefined, + onClick: undefined, + isValidLink: isAllowedUri, + }; + }, + + addAttributes() { + return { + href: { + default: null, + parseHTML(element) { + return element.getAttribute("href"); + }, + }, + target: { + default: HTML_ATTRIBUTES.target, + }, + rel: { + default: HTML_ATTRIBUTES.rel, + }, + }; + }, + + parseHTML() { + const isValidLink = this.options.isValidLink; + return [ + { + tag: "a[href]", + getAttrs: (dom) => { + const href = (dom as HTMLElement).getAttribute("href"); + if (!href || !isValidLink(href)) { + return false; + } + return null; + }, + }, + ]; + }, + + renderHTML({ HTMLAttributes }) { + if (!this.options.isValidLink(HTMLAttributes.href)) { + return [ + "a", + mergeAttributes(HTML_ATTRIBUTES, { ...HTMLAttributes, href: "" }), + 0, + ]; + } + + return ["a", mergeAttributes(HTML_ATTRIBUTES, HTMLAttributes), 0]; + }, + + addPasteRules() { + const isValidLink = this.options.isValidLink; + return [ + markPasteRule({ + find: (text) => { + const foundLinks: PasteRuleMatch[] = []; + + if (text) { + const links = findLinks(text, { + defaultProtocol: DEFAULT_PROTOCOL, + }).filter((item) => item.isLink && isValidLink(item.value)); + + for (const link of links) { + if (!shouldAutoLink(link.value)) { + continue; + } + + foundLinks.push({ + text: link.value, + data: { href: link.href }, + index: link.start, + }); + } + } + + return foundLinks; + }, + type: this.type, + getAttributes: (match) => ({ + href: match.data?.href, + }), + }), + ]; + }, + + addProseMirrorPlugins() { + const plugins: Plugin[] = []; + + plugins.push( + autolink({ + type: this.type, + defaultProtocol: DEFAULT_PROTOCOL, + validate: this.options.isValidLink, + shouldAutoLink, + }), + ); + + plugins.push( + clickHandler({ + type: this.type, + tiptapEditor: this.editor, + editor: this.options.editor, + onClick: this.options.onClick, + }), + ); + + plugins.push( + pasteHandler({ + editor: this.editor, + defaultProtocol: DEFAULT_PROTOCOL, + type: this.type, + shouldAutoLink, + isValidLink: this.options.isValidLink, + }), + ); + + return plugins; + }, +}); diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add and update paragraph_1_380a0c02b5089b38247457135c044cf7.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add and update paragraph_1_801ad86e0c3a4562338793805e66a52f.json similarity index 81% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add and update paragraph_1_380a0c02b5089b38247457135c044cf7.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add and update paragraph_1_801ad86e0c3a4562338793805e66a52f.json index f27c0f4cbd..a13940c3ca 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add and update paragraph_1_380a0c02b5089b38247457135c044cf7.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add and update paragraph_1_801ad86e0c3a4562338793805e66a52f.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.anthropic.com/v1/messages", - "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"add a new paragraph with the text 'You look great today!' after the first paragraph and translate first 'Hello, world' to dutch\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", + "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"add a new paragraph with the text 'You look great today!' after the first paragraph and translate first 'Hello, world' to dutch\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add paragraph and update selection_1_298b51bb28c5f95ab9a00205d4e38460.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add paragraph and update selection_1_b6ecf36636295d284db3ba7243cd4835.json similarity index 80% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add paragraph and update selection_1_298b51bb28c5f95ab9a00205d4e38460.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add paragraph and update selection_1_b6ecf36636295d284db3ba7243cd4835.json index 4c5381201b..6954af0437 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add paragraph and update selection_1_298b51bb28c5f95ab9a00205d4e38460.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add paragraph and update selection_1_b6ecf36636295d284db3ba7243cd4835.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.anthropic.com/v1/messages", - "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello,

\\\"}]\"},{\"type\":\"text\",\"text\":\"This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):\"},{\"type\":\"text\",\"text\":\"[{\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"add a paragraph with the text 'You look great today!' before the selection and translate selection to German\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", + "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello,

\\\"}]\"},{\"type\":\"text\",\"text\":\"This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):\"},{\"type\":\"text\",\"text\":\"[{\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"add a paragraph with the text 'You look great today!' before the selection and translate selection to German\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add and update paragraph_1_f6253c11196abdbeae0f898cc9df85eb.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add and update paragraph_1_3c276441275032fe98b12356026537a0.json similarity index 69% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add and update paragraph_1_f6253c11196abdbeae0f898cc9df85eb.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add and update paragraph_1_3c276441275032fe98b12356026537a0.json index 369dab7df1..560da57620 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add and update paragraph_1_f6253c11196abdbeae0f898cc9df85eb.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add and update paragraph_1_3c276441275032fe98b12356026537a0.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.groq.com/openai/v1/chat/completions", - "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"add a new paragraph with the text 'You look great today!' after the first paragraph and translate first 'Hello, world' to dutch\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"add a new paragraph with the text 'You look great today!' after the first paragraph and translate first 'Hello, world' to dutch\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add paragraph and update selection_1_dc29d735348684d1ec3e290ad8c03a71.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add paragraph and update selection_1_0207de852025d2c0a1d417a7d66fa03c.json similarity index 69% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add paragraph and update selection_1_dc29d735348684d1ec3e290ad8c03a71.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add paragraph and update selection_1_0207de852025d2c0a1d417a7d66fa03c.json index a1215c6d16..90d8cd376f 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add paragraph and update selection_1_dc29d735348684d1ec3e290ad8c03a71.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add paragraph and update selection_1_0207de852025d2c0a1d417a7d66fa03c.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.groq.com/openai/v1/chat/completions", - "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello,

\\\"}]This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):[{\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"add a paragraph with the text 'You look great today!' before the selection and translate selection to German\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello,

\\\"}]This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):[{\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"add a paragraph with the text 'You look great today!' before the selection and translate selection to German\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add and update paragraph_1_a27ae10badcc3913a00eb86f77ac64db.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add and update paragraph_1_937647a13580b4dbb611e3de3b2c8788.json similarity index 93% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add and update paragraph_1_a27ae10badcc3913a00eb86f77ac64db.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add and update paragraph_1_937647a13580b4dbb611e3de3b2c8788.json index 3c8c38137a..172301e1c3 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add and update paragraph_1_a27ae10badcc3913a00eb86f77ac64db.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add and update paragraph_1_937647a13580b4dbb611e3de3b2c8788.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.openai.com/v1/responses", - "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"add a new paragraph with the text 'You look great today!' after the first paragraph and translate first 'Hello, world' to dutch\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"add a new paragraph with the text 'You look great today!' after the first paragraph and translate first 'Hello, world' to dutch\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add paragraph and update selection_1_86f10ca461ee44e74ae571fb9f214338.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add paragraph and update selection_1_d9ea724851130649f405ff50190452b5.json similarity index 93% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add paragraph and update selection_1_86f10ca461ee44e74ae571fb9f214338.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add paragraph and update selection_1_d9ea724851130649f405ff50190452b5.json index 41e7f245f4..9fde0b3b35 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add paragraph and update selection_1_86f10ca461ee44e74ae571fb9f214338.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add paragraph and update selection_1_d9ea724851130649f405ff50190452b5.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.openai.com/v1/responses", - "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello,

\\\"}]\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"add a paragraph with the text 'You look great today!' before the selection and translate selection to German\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello,

\\\"}]\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"add a paragraph with the text 'You look great today!' before the selection and translate selection to German\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/delete first block_1_91346200727a71ab9ad8c5d014835688.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/delete first block_1_afd5ee1bda075c7482d1861d03ad0a29.json similarity index 73% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/delete first block_1_91346200727a71ab9ad8c5d014835688.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/delete first block_1_afd5ee1bda075c7482d1861d03ad0a29.json index cd9f61961f..d779faf1ce 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/delete first block_1_91346200727a71ab9ad8c5d014835688.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/delete first block_1_afd5ee1bda075c7482d1861d03ad0a29.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.anthropic.com/v1/messages", - "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"delete the first paragraph\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", + "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"delete the first paragraph\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/delete first block_1_150a539024aa981c9f6bcb068875a6c9.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/delete first block_1_9a26ba1fa4692c62b4f519ed3669fdc5.json similarity index 69% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/delete first block_1_150a539024aa981c9f6bcb068875a6c9.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/delete first block_1_9a26ba1fa4692c62b4f519ed3669fdc5.json index 7295e28681..a5df8e290a 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/delete first block_1_150a539024aa981c9f6bcb068875a6c9.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/delete first block_1_9a26ba1fa4692c62b4f519ed3669fdc5.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.groq.com/openai/v1/chat/completions", - "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"delete the first paragraph\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"delete the first paragraph\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/delete first block_1_1b3c4ac85d448677697457098332ceba.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/delete first block_1_2fd92a4c2642fff1ef49d65014aa1ac3.json similarity index 89% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/delete first block_1_1b3c4ac85d448677697457098332ceba.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/delete first block_1_2fd92a4c2642fff1ef49d65014aa1ac3.json index c6665d1949..4623687a48 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/delete first block_1_1b3c4ac85d448677697457098332ceba.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/delete first block_1_2fd92a4c2642fff1ef49d65014aa1ac3.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.openai.com/v1/responses", - "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"delete the first paragraph\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"delete the first paragraph\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link and change text within mark_1_fe3cac9da9d1e17a20ee8c0c4380d925.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link and change text within mark_1_fd54b2fefac722ab5057252b68c4faec.json similarity index 76% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link and change text within mark_1_fe3cac9da9d1e17a20ee8c0c4380d925.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link and change text within mark_1_fd54b2fefac722ab5057252b68c4faec.json index 8eb74d80fb..2a0016ad79 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link and change text within mark_1_fe3cac9da9d1e17a20ee8c0c4380d925.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link and change text within mark_1_fd54b2fefac722ab5057252b68c4faec.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.anthropic.com/v1/messages", - "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"change the last paragraph to 'Hi, world! Bold the text. Link.' without any markup like bold or link\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", + "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"change the last paragraph to 'Hi, world! Bold the text. Link.' without any markup like bold or link\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link_1_f6ee881e6d3b4cd9553256523e67683a.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link_1_93038afbc107d8439571e6287fc76a8f.json similarity index 76% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link_1_f6ee881e6d3b4cd9553256523e67683a.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link_1_93038afbc107d8439571e6287fc76a8f.json index 7c544f01e8..cf26b5ee4e 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link_1_f6ee881e6d3b4cd9553256523e67683a.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link_1_93038afbc107d8439571e6287fc76a8f.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.anthropic.com/v1/messages", - "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"remove the formatting (turn into plain text without styles or urls) from the last paragraph\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", + "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"remove the formatting (turn into plain text without styles or urls) from the last paragraph\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/plain source block, add mention_1_ccd752aefdbc2252a5a09bebac393afb.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/plain source block, add mention_1_7035efab1f6d9e5a46dde12d39f9ed19.json similarity index 79% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/plain source block, add mention_1_ccd752aefdbc2252a5a09bebac393afb.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/plain source block, add mention_1_7035efab1f6d9e5a46dde12d39f9ed19.json index 583f74e72f..37d66c3a0f 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/plain source block, add mention_1_ccd752aefdbc2252a5a09bebac393afb.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/plain source block, add mention_1_7035efab1f6d9e5a46dde12d39f9ed19.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.anthropic.com/v1/messages", - "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"Change the first paragraph to Hello, Jane Doe! (use a mention)\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", + "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"Change the first paragraph to Hello, Jane Doe! (use a mention)\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/standard update_1_c44a31a1631a3a10efcd5e17645998f1.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/standard update_1_467258028a5a6bef3542c1a5417d4b3d.json similarity index 74% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/standard update_1_c44a31a1631a3a10efcd5e17645998f1.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/standard update_1_467258028a5a6bef3542c1a5417d4b3d.json index 6c661ae541..47b40ced02 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/standard update_1_c44a31a1631a3a10efcd5e17645998f1.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/standard update_1_467258028a5a6bef3542c1a5417d4b3d.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.anthropic.com/v1/messages", - "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"translate the first paragraph to german\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", + "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"translate the first paragraph to german\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mark_1_df177a6a4f26b0fbcba307c6d21cab76.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mark_1_90c0b37bad31f3b9b0d15c492c610d0b.json similarity index 82% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mark_1_df177a6a4f26b0fbcba307c6d21cab76.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mark_1_90c0b37bad31f3b9b0d15c492c610d0b.json index 9d99a67db6..a571792edd 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mark_1_df177a6a4f26b0fbcba307c6d21cab76.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mark_1_90c0b37bad31f3b9b0d15c492c610d0b.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.anthropic.com/v1/messages", - "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"remove the bold style from the second block\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", + "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"remove the bold style from the second block\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mention_1_4ba9f3411694f807e85e8e33f4b3c8cd.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mention_1_3e8b04b91ca15c467180df1c60c9e1b2.json similarity index 80% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mention_1_4ba9f3411694f807e85e8e33f4b3c8cd.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mention_1_3e8b04b91ca15c467180df1c60c9e1b2.json index 20f13a4e94..a538f8cbed 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mention_1_4ba9f3411694f807e85e8e33f4b3c8cd.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mention_1_3e8b04b91ca15c467180df1c60c9e1b2.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.anthropic.com/v1/messages", - "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"change to say 'Hello! How are you doing? This text is blue!' (remove mention but keep bold text)\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", + "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"change to say 'Hello! How are you doing? This text is blue!' (remove mention but keep bold text)\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, replace content_1_f5b001d0f8415a00e8b043f3e3e33535.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, replace content_1_3551fccc96307281574c2c96eaa05002.json similarity index 75% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, replace content_1_f5b001d0f8415a00e8b043f3e3e33535.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, replace content_1_3551fccc96307281574c2c96eaa05002.json index 44f04c2711..cc1fda50fd 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, replace content_1_f5b001d0f8415a00e8b043f3e3e33535.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, replace content_1_3551fccc96307281574c2c96eaa05002.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.anthropic.com/v1/messages", - "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"update the content of the second block to 'Hello, updated content'\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", + "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"update the content of the second block to 'Hello, updated content'\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update mention prop_1_c197e3f5ce1dbc1a68765acbd198881a.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update mention prop_1_e7ef562479ab33624bfa2bd75c4d1f5e.json similarity index 82% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update mention prop_1_c197e3f5ce1dbc1a68765acbd198881a.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update mention prop_1_e7ef562479ab33624bfa2bd75c4d1f5e.json index 2d719ce333..32cc521cab 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update mention prop_1_c197e3f5ce1dbc1a68765acbd198881a.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update mention prop_1_e7ef562479ab33624bfa2bd75c4d1f5e.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.anthropic.com/v1/messages", - "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"update the mention to Jane Doe\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", + "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"update the mention to Jane Doe\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update text_1_a0b93418bb2a5c0049e0a5c896f72191.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update text_1_3a3fa0950f819e8073475e78106b353d.json similarity index 82% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update text_1_a0b93418bb2a5c0049e0a5c896f72191.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update text_1_3a3fa0950f819e8073475e78106b353d.json index b6ed9fe796..ea892aa5f8 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update text_1_a0b93418bb2a5c0049e0a5c896f72191.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update text_1_3a3fa0950f819e8073475e78106b353d.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.anthropic.com/v1/messages", - "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"translate second block including the greeting to German (use dir instead of Ihnen)\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", + "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"translate second block including the greeting to German (use dir instead of Ihnen)\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (paragraph)_1_fb2285b8d362cb8adcf78f6039ad3058.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (paragraph)_1_7a05ed5acf369206dda586e41235430b.json similarity index 76% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (paragraph)_1_fb2285b8d362cb8adcf78f6039ad3058.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (paragraph)_1_7a05ed5acf369206dda586e41235430b.json index 06890c2090..2cd852de24 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (paragraph)_1_fb2285b8d362cb8adcf78f6039ad3058.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (paragraph)_1_7a05ed5acf369206dda586e41235430b.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.anthropic.com/v1/messages", - "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"make first paragraph bold\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", + "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"make first paragraph bold\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (word)_1_e0087b91327576eaff9f8d4d368e0a03.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (word)_1_0d9c02b01414a68a2dab4af392179183.json similarity index 77% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (word)_1_e0087b91327576eaff9f8d4d368e0a03.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (word)_1_0d9c02b01414a68a2dab4af392179183.json index bf9a4944f5..6398c3e50a 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (word)_1_e0087b91327576eaff9f8d4d368e0a03.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (word)_1_0d9c02b01414a68a2dab4af392179183.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.anthropic.com/v1/messages", - "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"make 'world!' (in the first block) bold\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", + "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"make 'world!' (in the first block) bold\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/translate selection_1_4706b49daa5ad7afe9dfadded2e335c5.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/translate selection_1_ade79bca32d420b4323b2a888817b5d5.json similarity index 76% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/translate selection_1_4706b49daa5ad7afe9dfadded2e335c5.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/translate selection_1_ade79bca32d420b4323b2a888817b5d5.json index 3a897ed622..a6de21617f 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/translate selection_1_4706b49daa5ad7afe9dfadded2e335c5.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/translate selection_1_ade79bca32d420b4323b2a888817b5d5.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.anthropic.com/v1/messages", - "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello,

\\\"}]\"},{\"type\":\"text\",\"text\":\"This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):\"},{\"type\":\"text\",\"text\":\"[{\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"translate to German\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", + "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello,

\\\"}]\"},{\"type\":\"text\",\"text\":\"This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):\"},{\"type\":\"text\",\"text\":\"[{\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"translate to German\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop and content_1_5bb684c9ae46815b5367a39bd42d5257.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop and content_1_f90879213f18f8b8e13748443299b6dc.json similarity index 76% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop and content_1_5bb684c9ae46815b5367a39bd42d5257.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop and content_1_f90879213f18f8b8e13748443299b6dc.json index 50078a7a22..495ce50897 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop and content_1_5bb684c9ae46815b5367a39bd42d5257.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop and content_1_f90879213f18f8b8e13748443299b6dc.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.anthropic.com/v1/messages", - "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"make the first paragraph right aligned and update the content to 'What's up, world!'\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", + "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"make the first paragraph right aligned and update the content to 'What's up, world!'\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop_1_8469a78802d46f3d9ec74dd1fbf49fd8.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop_1_3f8e13d1cfa75e24cd4e0dfb0eab9ef4.json similarity index 76% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop_1_8469a78802d46f3d9ec74dd1fbf49fd8.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop_1_3f8e13d1cfa75e24cd4e0dfb0eab9ef4.json index bc2bae4de7..3238970c3d 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop_1_8469a78802d46f3d9ec74dd1fbf49fd8.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop_1_3f8e13d1cfa75e24cd4e0dfb0eab9ef4.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.anthropic.com/v1/messages", - "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"make the first paragraph right aligned\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", + "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"make the first paragraph right aligned\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type and content_1_226cc5d7352c8c7e58a15d064543518c.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type and content_1_07d3d8730ff541c3a2bf5e53c6707dac.json similarity index 76% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type and content_1_226cc5d7352c8c7e58a15d064543518c.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type and content_1_07d3d8730ff541c3a2bf5e53c6707dac.json index 08e8d0a896..0bc6d38170 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type and content_1_226cc5d7352c8c7e58a15d064543518c.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type and content_1_07d3d8730ff541c3a2bf5e53c6707dac.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.anthropic.com/v1/messages", - "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"make the first paragraph a heading and update the content to 'What's up, world!'\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", + "body": "{\"model\":\"claude-3-7-sonnet-latest\",\"max_tokens\":64000,\"system\":[{\"type\":\"text\",\"text\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"}],\"messages\":[{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"},{\"type\":\"text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"make the first paragraph a heading and update the content to 'What's up, world!'\"}]}],\"tools\":[{\"name\":\"applyDocumentOperations\",\"input_schema\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":{\"type\":\"any\"},\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type_1_c4cc00889532e0baa73998da5e79c303.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type_1_6cc7ad0b6e2c278095f03deb353e4c9b.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type_1_c4cc00889532e0baa73998da5e79c303.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type_1_6cc7ad0b6e2c278095f03deb353e4c9b.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link and change text within mark_1_e5c77f0f881e77f6ee27a25f203ffdcb.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link and change text within mark_1_17fe180166622808ade902a2eccad8aa.json similarity index 69% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link and change text within mark_1_e5c77f0f881e77f6ee27a25f203ffdcb.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link and change text within mark_1_17fe180166622808ade902a2eccad8aa.json index 44277745ba..047fcba079 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link and change text within mark_1_e5c77f0f881e77f6ee27a25f203ffdcb.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link and change text within mark_1_17fe180166622808ade902a2eccad8aa.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.groq.com/openai/v1/chat/completions", - "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"change the last paragraph to 'Hi, world! Bold the text. Link.' without any markup like bold or link\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"change the last paragraph to 'Hi, world! Bold the text. Link.' without any markup like bold or link\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link_1_b93576392cb38dc57acd85f7fc55c6cd.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link_1_a055d5e9dcf9d3ce1e1cddf57b441dc1.json similarity index 69% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link_1_b93576392cb38dc57acd85f7fc55c6cd.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link_1_a055d5e9dcf9d3ce1e1cddf57b441dc1.json index 66510ce8dc..129adc84b8 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link_1_b93576392cb38dc57acd85f7fc55c6cd.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link_1_a055d5e9dcf9d3ce1e1cddf57b441dc1.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.groq.com/openai/v1/chat/completions", - "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"remove the formatting (turn into plain text without styles or urls) from the last paragraph\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"remove the formatting (turn into plain text without styles or urls) from the last paragraph\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/plain source block, add mention_1_b18afae076d7f7f423477f1e1bc5813a.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/plain source block, add mention_1_7692c767dc159df75724f2a49cc38b0e.json similarity index 70% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/plain source block, add mention_1_b18afae076d7f7f423477f1e1bc5813a.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/plain source block, add mention_1_7692c767dc159df75724f2a49cc38b0e.json index 62bfe269be..baa60153ab 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/plain source block, add mention_1_b18afae076d7f7f423477f1e1bc5813a.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/plain source block, add mention_1_7692c767dc159df75724f2a49cc38b0e.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.groq.com/openai/v1/chat/completions", - "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"Change the first paragraph to Hello, Jane Doe! (use a mention)\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"Change the first paragraph to Hello, Jane Doe! (use a mention)\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/standard update_1_529e09ae665507a31316cb632f5cabcd.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/standard update_1_b81e76afad4cf5e84bd6815d2bc8d069.json similarity index 69% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/standard update_1_529e09ae665507a31316cb632f5cabcd.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/standard update_1_b81e76afad4cf5e84bd6815d2bc8d069.json index c5b665e689..e92f32e21e 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/standard update_1_529e09ae665507a31316cb632f5cabcd.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/standard update_1_b81e76afad4cf5e84bd6815d2bc8d069.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.groq.com/openai/v1/chat/completions", - "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"translate the first paragraph to german\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"translate the first paragraph to german\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mark_1_20036398e12cf4a20b50024ad5f30018.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mark_1_da7d1e5e03db624c6007dc8137fc3588.json similarity index 71% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mark_1_20036398e12cf4a20b50024ad5f30018.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mark_1_da7d1e5e03db624c6007dc8137fc3588.json index 8b12b184b5..c46f82c3fe 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mark_1_20036398e12cf4a20b50024ad5f30018.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mark_1_da7d1e5e03db624c6007dc8137fc3588.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.groq.com/openai/v1/chat/completions", - "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"remove the bold style from the second block\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"remove the bold style from the second block\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mention_1_ed131f0383e7709a4e5fae2df28af29a.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mention_1_758855f114117cd6c8f70c7caa84cc68.json similarity index 70% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mention_1_ed131f0383e7709a4e5fae2df28af29a.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mention_1_758855f114117cd6c8f70c7caa84cc68.json index 3038e2a09a..e4d28f7a0c 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mention_1_ed131f0383e7709a4e5fae2df28af29a.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mention_1_758855f114117cd6c8f70c7caa84cc68.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.groq.com/openai/v1/chat/completions", - "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"change to say 'Hello! How are you doing? This text is blue!' (remove mention but keep bold text)\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"change to say 'Hello! How are you doing? This text is blue!' (remove mention but keep bold text)\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, replace content_1_51bfdc443e43bbf18599fcc3a16c5683.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, replace content_1_222775b0c617ba9bcada86cd238b6d64.json similarity index 69% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, replace content_1_51bfdc443e43bbf18599fcc3a16c5683.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, replace content_1_222775b0c617ba9bcada86cd238b6d64.json index 812efd8c9d..b8846d247a 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, replace content_1_51bfdc443e43bbf18599fcc3a16c5683.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, replace content_1_222775b0c617ba9bcada86cd238b6d64.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.groq.com/openai/v1/chat/completions", - "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"update the content of the second block to 'Hello, updated content'\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"update the content of the second block to 'Hello, updated content'\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update mention prop_1_7641f5691799d2666855c113b6659b71.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update mention prop_1_ad74c153b3f0beb850955148f0a42c78.json similarity index 71% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update mention prop_1_7641f5691799d2666855c113b6659b71.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update mention prop_1_ad74c153b3f0beb850955148f0a42c78.json index 05452f7742..ea41351a31 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update mention prop_1_7641f5691799d2666855c113b6659b71.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update mention prop_1_ad74c153b3f0beb850955148f0a42c78.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.groq.com/openai/v1/chat/completions", - "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"update the mention to Jane Doe\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"update the mention to Jane Doe\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update text_1_8fcb24a91437026c480205de77507871.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update text_1_4bf0b01b1e009966973599ebc2194362.json similarity index 71% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update text_1_8fcb24a91437026c480205de77507871.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update text_1_4bf0b01b1e009966973599ebc2194362.json index 04e06bbde4..0ef8a20a64 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update text_1_8fcb24a91437026c480205de77507871.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update text_1_4bf0b01b1e009966973599ebc2194362.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.groq.com/openai/v1/chat/completions", - "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"translate second block including the greeting to German (use dir instead of Ihnen)\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"translate second block including the greeting to German (use dir instead of Ihnen)\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (paragraph)_1_be126322b804c53145dbd35a6aa1131f.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (paragraph)_1_5ce19f53eaf195c6e284c91b0db7d586.json similarity index 70% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (paragraph)_1_be126322b804c53145dbd35a6aa1131f.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (paragraph)_1_5ce19f53eaf195c6e284c91b0db7d586.json index 3760882743..fe97cf21ae 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (paragraph)_1_be126322b804c53145dbd35a6aa1131f.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (paragraph)_1_5ce19f53eaf195c6e284c91b0db7d586.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.groq.com/openai/v1/chat/completions", - "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"make first paragraph bold\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"make first paragraph bold\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (word)_1_ec13a3b1d4f97b79148833b507295ffa.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (word)_1_0f8ce96b644d6bd531f0558208cf5790.json similarity index 69% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (word)_1_ec13a3b1d4f97b79148833b507295ffa.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (word)_1_0f8ce96b644d6bd531f0558208cf5790.json index 245e84c358..551f482c07 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (word)_1_ec13a3b1d4f97b79148833b507295ffa.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (word)_1_0f8ce96b644d6bd531f0558208cf5790.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.groq.com/openai/v1/chat/completions", - "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"make 'world!' (in the first block) bold\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"make 'world!' (in the first block) bold\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/translate selection_1_f1a2ffb178b441d40625b8f110e3290f.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/translate selection_1_1cf9377128e689feac5e5e13a1d0e26f.json similarity index 69% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/translate selection_1_f1a2ffb178b441d40625b8f110e3290f.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/translate selection_1_1cf9377128e689feac5e5e13a1d0e26f.json index f972d7a861..5e95bd637b 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/translate selection_1_f1a2ffb178b441d40625b8f110e3290f.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/translate selection_1_1cf9377128e689feac5e5e13a1d0e26f.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.groq.com/openai/v1/chat/completions", - "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello,

\\\"}]This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):[{\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"translate to German\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello,

\\\"}]This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):[{\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"translate to German\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop and content_1_8557c5a4249c324adfff5d243645e3de.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop and content_1_260e8bc6dd5c9cbd0650701e6d95ada3.json similarity index 69% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop and content_1_8557c5a4249c324adfff5d243645e3de.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop and content_1_260e8bc6dd5c9cbd0650701e6d95ada3.json index 23dd266599..e5c9bc26e2 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop and content_1_8557c5a4249c324adfff5d243645e3de.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop and content_1_260e8bc6dd5c9cbd0650701e6d95ada3.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.groq.com/openai/v1/chat/completions", - "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"make the first paragraph right aligned and update the content to 'What's up, world!'\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"make the first paragraph right aligned and update the content to 'What's up, world!'\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop_1_16dda1caa1f43ab624eb28a605179dd3.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop_1_339e6b8d82d281185c6ccbcd1809374f.json similarity index 69% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop_1_16dda1caa1f43ab624eb28a605179dd3.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop_1_339e6b8d82d281185c6ccbcd1809374f.json index 8c5740dc72..ce84d2dd94 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop_1_16dda1caa1f43ab624eb28a605179dd3.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop_1_339e6b8d82d281185c6ccbcd1809374f.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.groq.com/openai/v1/chat/completions", - "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"make the first paragraph right aligned\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"make the first paragraph right aligned\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type and content_1_8b167672c96bf3c69b9b146eb4f26451.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type and content_1_ff26ae30546f4e0d4279e60e4b7a1fbf.json similarity index 69% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type and content_1_8b167672c96bf3c69b9b146eb4f26451.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type and content_1_ff26ae30546f4e0d4279e60e4b7a1fbf.json index 8e578c399a..a022adac06 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type and content_1_8b167672c96bf3c69b9b146eb4f26451.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type and content_1_ff26ae30546f4e0d4279e60e4b7a1fbf.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.groq.com/openai/v1/chat/completions", - "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"make the first paragraph a heading and update the content to 'What's up, world!'\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"make the first paragraph a heading and update the content to 'What's up, world!'\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type_1_7326b3d0db43c8f399aba2bc44c80194.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type_1_d9cbf71a8b55c8be0b247c3bb200c59c.json similarity index 69% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type_1_7326b3d0db43c8f399aba2bc44c80194.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type_1_d9cbf71a8b55c8be0b247c3bb200c59c.json index c7d2c8b42d..3e59eeb97b 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type_1_7326b3d0db43c8f399aba2bc44c80194.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type_1_d9cbf71a8b55c8be0b247c3bb200c59c.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.groq.com/openai/v1/chat/completions", - "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"make the first paragraph a heading\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"llama-3.3-70b-versatile\",\"messages\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"},{\"role\":\"user\",\"content\":\"make the first paragraph a heading\"}],\"tools\":[{\"type\":\"function\",\"function\":{\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link and change text within mark_1_94f36faff958747b5d66a185e268bba7.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link and change text within mark_1_d1f45ba6fee8787529137c920d6bc58e.json similarity index 91% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link and change text within mark_1_94f36faff958747b5d66a185e268bba7.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link and change text within mark_1_d1f45ba6fee8787529137c920d6bc58e.json index b618e169d5..2b259a1162 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link and change text within mark_1_94f36faff958747b5d66a185e268bba7.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link and change text within mark_1_d1f45ba6fee8787529137c920d6bc58e.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.openai.com/v1/responses", - "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"change the last paragraph to 'Hi, world! Bold the text. Link.' without any markup like bold or link\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"change the last paragraph to 'Hi, world! Bold the text. Link.' without any markup like bold or link\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link_1_60bf97139612cd25b1f99502383df8aa.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link_1_c9489269d9a2d4353eda54289ed7f395.json similarity index 91% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link_1_60bf97139612cd25b1f99502383df8aa.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link_1_c9489269d9a2d4353eda54289ed7f395.json index 57739d10bc..9959e8debf 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link_1_60bf97139612cd25b1f99502383df8aa.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link_1_c9489269d9a2d4353eda54289ed7f395.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.openai.com/v1/responses", - "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"remove the formatting (turn into plain text without styles or urls) from the last paragraph\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"remove the formatting (turn into plain text without styles or urls) from the last paragraph\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/plain source block, add mention_1_d5759fe9868f60a47538d31361c68b3c.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/plain source block, add mention_1_416931598559b3e7e906647a66f0b8b1.json similarity index 92% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/plain source block, add mention_1_d5759fe9868f60a47538d31361c68b3c.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/plain source block, add mention_1_416931598559b3e7e906647a66f0b8b1.json index 3a823cb720..3fe6710506 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/plain source block, add mention_1_d5759fe9868f60a47538d31361c68b3c.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/plain source block, add mention_1_416931598559b3e7e906647a66f0b8b1.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.openai.com/v1/responses", - "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"Change the first paragraph to Hello, Jane Doe! (use a mention)\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"Change the first paragraph to Hello, Jane Doe! (use a mention)\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/standard update_1_f6a167a6ea376d70d84dd9aac6ac7bb3.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/standard update_1_9728e4dd714a6a14ce441d72378dd67a.json similarity index 91% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/standard update_1_f6a167a6ea376d70d84dd9aac6ac7bb3.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/standard update_1_9728e4dd714a6a14ce441d72378dd67a.json index e147797b0f..23218a2a7a 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/standard update_1_f6a167a6ea376d70d84dd9aac6ac7bb3.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/standard update_1_9728e4dd714a6a14ce441d72378dd67a.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.openai.com/v1/responses", - "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"translate the first paragraph to german\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"translate the first paragraph to german\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mark_1_990c696cfe9af87de056328060fd1f93.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mark_1_198059a270dbbb88db8f1cba97503205.json similarity index 95% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mark_1_990c696cfe9af87de056328060fd1f93.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mark_1_198059a270dbbb88db8f1cba97503205.json index 48cab99917..6c351e480f 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mark_1_990c696cfe9af87de056328060fd1f93.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mark_1_198059a270dbbb88db8f1cba97503205.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.openai.com/v1/responses", - "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"remove the bold style from the second block\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"remove the bold style from the second block\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mention_1_fd4deb4dce4d79ae14939fda71c510fd.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mention_1_9313219c085c3b39c7c14c00f388b4be.json similarity index 94% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mention_1_fd4deb4dce4d79ae14939fda71c510fd.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mention_1_9313219c085c3b39c7c14c00f388b4be.json index fc2363fdf3..23a80634d8 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mention_1_fd4deb4dce4d79ae14939fda71c510fd.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mention_1_9313219c085c3b39c7c14c00f388b4be.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.openai.com/v1/responses", - "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"change to say 'Hello! How are you doing? This text is blue!' (remove mention but keep bold text)\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"change to say 'Hello! How are you doing? This text is blue!' (remove mention but keep bold text)\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, replace content_1_6cd810cd03bff509578637fe27d13a92.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, replace content_1_f7a4c2a7fc5e362c3484586f45b2501d.json similarity index 91% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, replace content_1_6cd810cd03bff509578637fe27d13a92.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, replace content_1_f7a4c2a7fc5e362c3484586f45b2501d.json index f789eb926d..1393f867cc 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, replace content_1_6cd810cd03bff509578637fe27d13a92.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, replace content_1_f7a4c2a7fc5e362c3484586f45b2501d.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.openai.com/v1/responses", - "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"update the content of the second block to 'Hello, updated content'\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"update the content of the second block to 'Hello, updated content'\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update mention prop_1_f0e30d1d6cbc94e6b7dcb8abb7e0221f.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update mention prop_1_38090ebbfaca38fca97b1e4f0a0dd942.json similarity index 95% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update mention prop_1_f0e30d1d6cbc94e6b7dcb8abb7e0221f.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update mention prop_1_38090ebbfaca38fca97b1e4f0a0dd942.json index b234cbca44..47630e82dc 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update mention prop_1_f0e30d1d6cbc94e6b7dcb8abb7e0221f.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update mention prop_1_38090ebbfaca38fca97b1e4f0a0dd942.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.openai.com/v1/responses", - "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"update the mention to Jane Doe\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"update the mention to Jane Doe\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update text_1_1104dff815f18f8f786fb7d4e4522d47.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update text_1_6374879c3f8fbc16db7c43304d2faacd.json similarity index 95% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update text_1_1104dff815f18f8f786fb7d4e4522d47.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update text_1_6374879c3f8fbc16db7c43304d2faacd.json index 6ed1009ec7..0b039d4534 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update text_1_1104dff815f18f8f786fb7d4e4522d47.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update text_1_6374879c3f8fbc16db7c43304d2faacd.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.openai.com/v1/responses", - "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"translate second block including the greeting to German (use dir instead of Ihnen)\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"translate second block including the greeting to German (use dir instead of Ihnen)\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (paragraph)_1_e2f4cdb3df42b17c74cd1d2d00d2f8d5.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (paragraph)_1_0afac4d00d3f0bbdfd251a8394b6ff28.json similarity index 91% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (paragraph)_1_e2f4cdb3df42b17c74cd1d2d00d2f8d5.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (paragraph)_1_0afac4d00d3f0bbdfd251a8394b6ff28.json index 2b47f33773..2afc4287e4 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (paragraph)_1_e2f4cdb3df42b17c74cd1d2d00d2f8d5.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (paragraph)_1_0afac4d00d3f0bbdfd251a8394b6ff28.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.openai.com/v1/responses", - "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make first paragraph bold\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make first paragraph bold\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (word)_1_6b5073ce92485be7974a344d50247b4a.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (word)_1_00156bb4dd5722d44e0ff5332561928a.json similarity index 91% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (word)_1_6b5073ce92485be7974a344d50247b4a.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (word)_1_00156bb4dd5722d44e0ff5332561928a.json index 9d2eece130..c4a11396f5 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (word)_1_6b5073ce92485be7974a344d50247b4a.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (word)_1_00156bb4dd5722d44e0ff5332561928a.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.openai.com/v1/responses", - "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make 'world!' (in the first block) bold\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make 'world!' (in the first block) bold\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/translate selection_1_d343e10867cc7b3d9850847c99826b61.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/translate selection_1_24abe901176e9d834f9542d0b26e82ae.json similarity index 91% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/translate selection_1_d343e10867cc7b3d9850847c99826b61.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/translate selection_1_24abe901176e9d834f9542d0b26e82ae.json index c6d53c61e5..26d38da62e 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/translate selection_1_d343e10867cc7b3d9850847c99826b61.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/translate selection_1_24abe901176e9d834f9542d0b26e82ae.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.openai.com/v1/responses", - "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello,

\\\"}]\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"translate to German\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"This is the latest state of the selection (ignore previous selections, you MUST issue operations against this latest version of the selection):\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello,

\\\"}]\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"This is the latest state of the entire document (INCLUDING the selected text), \\nyou can use this to find the selected text to understand the context (but you MUST NOT issue operations against this document, you MUST issue operations against the selection):\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"translate to German\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop and content_1_780bfe04d42dd48e9115cba7c4582c01.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop and content_1_3f479c81e81f4f9460df3af74ddd2207.json similarity index 91% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop and content_1_780bfe04d42dd48e9115cba7c4582c01.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop and content_1_3f479c81e81f4f9460df3af74ddd2207.json index 7d6aa02461..b05a2da52c 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop and content_1_780bfe04d42dd48e9115cba7c4582c01.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop and content_1_3f479c81e81f4f9460df3af74ddd2207.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.openai.com/v1/responses", - "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make the first paragraph right aligned and update the content to 'What's up, world!'\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make the first paragraph right aligned and update the content to 'What's up, world!'\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop_1_667c03220ba6e678d0c91b9de092484b.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop_1_6012638796e6e00b242b43642bb90a7a.json similarity index 91% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop_1_667c03220ba6e678d0c91b9de092484b.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop_1_6012638796e6e00b242b43642bb90a7a.json index 6192ff50d7..20786e18a6 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop_1_667c03220ba6e678d0c91b9de092484b.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop_1_6012638796e6e00b242b43642bb90a7a.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.openai.com/v1/responses", - "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make the first paragraph right aligned\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make the first paragraph right aligned\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type and content_1_f3c6521f6f12dc50dc16d0bbc277a858.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type and content_1_04e027a89c6d4e69a0f805d5c8987e2c.json similarity index 91% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type and content_1_f3c6521f6f12dc50dc16d0bbc277a858.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type and content_1_04e027a89c6d4e69a0f805d5c8987e2c.json index 396b47c075..96ce64c058 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type and content_1_f3c6521f6f12dc50dc16d0bbc277a858.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type and content_1_04e027a89c6d4e69a0f805d5c8987e2c.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.openai.com/v1/responses", - "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make the first paragraph a heading and update the content to 'What's up, world!'\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make the first paragraph a heading and update the content to 'What's up, world!'\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type_1_7c4fbdcabcec0568ade27d2b47afbaab.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type_1_72aecf62b6c9c807411d248d46a62eea.json similarity index 91% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type_1_7c4fbdcabcec0568ade27d2b47afbaab.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type_1_72aecf62b6c9c807411d248d46a62eea.json index 0f834059e8..765dc3458e 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type_1_7c4fbdcabcec0568ade27d2b47afbaab.json +++ b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type_1_72aecf62b6c9c807411d248d46a62eea.json @@ -2,7 +2,7 @@ "request": { "method": "POST", "url": "https://api.openai.com/v1/responses", - "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make the first paragraph a heading\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", + "body": "{\"model\":\"gpt-4o-2024-08-06\",\"input\":[{\"role\":\"system\",\"content\":\"You're manipulating a text document using HTML blocks. \\nMake sure to follow the json schema provided. When referencing ids they MUST be EXACTLY the same (including the trailing $). \\nList items are 1 block with 1 list item each, so block content `
  • item1
` is valid, but `
  • item1
  • item2
` is invalid. We'll merge them automatically.\\nFor code blocks, you can use the `data-language` attribute on a block (wrapped with
) to specify the language.\\n\\nIf the user requests updates to the document, use the \\\"applyDocumentOperations\\\" tool to update the document.\\n---\\nIF there is no selection active in the latest state, first, determine what part of the document the user is talking about. You SHOULD probably take cursor info into account if needed.\\n  EXAMPLE: if user says \\\"below\\\" (without pointing to a specific part of the document) he / she probably indicates the block(s) after the cursor. \\n  EXAMPLE: If you want to insert content AT the cursor position (UNLESS indicated otherwise by the user), then you need `referenceId` to point to the block before the cursor with position `after` (or block below and `before`\\n---\\n \"},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"There is no active selection. This is the latest state of the document (ignore previous documents, you MUST issue operations against this latest version of the document). \\nThe cursor is BETWEEN two blocks as indicated by cursor: true.\\nPrefer updating existing blocks over removing and adding (but this also depends on the user's question).\"}]},{\"role\":\"assistant\",\"content\":[{\"type\":\"output_text\",\"text\":\"[{\\\"id\\\":\\\"ref1$\\\",\\\"block\\\":\\\"

Hello, world!

\\\"},{\\\"cursor\\\":true},{\\\"id\\\":\\\"ref2$\\\",\\\"block\\\":\\\"

Hello, @John Doe! How are you doing? This text is blue!

\\\"},{\\\"id\\\":\\\"ref3$\\\",\\\"block\\\":\\\"

Hello, world! Bold text. Link.

\\\"}]\"}]},{\"role\":\"user\",\"content\":[{\"type\":\"input_text\",\"text\":\"make the first paragraph a heading\"}]}],\"tools\":[{\"type\":\"function\",\"name\":\"applyDocumentOperations\",\"parameters\":{\"type\":\"object\",\"properties\":{\"operations\":{\"type\":\"array\",\"items\":{\"anyOf\":[{\"type\":\"object\",\"description\":\"Update a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"update\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to update\"},\"block\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single HTML element)\"}},\"required\":[\"type\",\"id\",\"block\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Insert new blocks\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"add\"]},\"referenceId\":{\"type\":\"string\",\"description\":\"MUST be an id of a block in the document\"},\"position\":{\"type\":\"string\",\"enum\":[\"before\",\"after\"],\"description\":\"`after` to add blocks AFTER (below) the block with `referenceId`, `before` to add the block BEFORE (above)\"},\"blocks\":{\"items\":{\"type\":\"string\",\"description\":\"html of block (MUST be a single, VALID HTML element)\"},\"type\":\"array\"}},\"required\":[\"type\",\"referenceId\",\"position\",\"blocks\"],\"additionalProperties\":false},{\"type\":\"object\",\"description\":\"Delete a block\",\"properties\":{\"type\":{\"type\":\"string\",\"enum\":[\"delete\"]},\"id\":{\"type\":\"string\",\"description\":\"id of block to delete\"}},\"required\":[\"type\",\"id\"],\"additionalProperties\":false}]}}},\"additionalProperties\":false,\"required\":[\"operations\"]}}],\"tool_choice\":\"required\",\"stream\":true}", "headers": [], "cookies": [] }, diff --git a/packages/xl-ai/src/prosemirror/__snapshots__/agent.test.ts.snap b/packages/xl-ai/src/prosemirror/__snapshots__/agent.test.ts.snap index e4244ca453..426acde29f 100644 --- a/packages/xl-ai/src/prosemirror/__snapshots__/agent.test.ts.snap +++ b/packages/xl-ai/src/prosemirror/__snapshots__/agent.test.ts.snap @@ -9,29 +9,29 @@ exports[`agentStepToTr > Update > clear block formatting 1`] = ` exports[`agentStepToTr > Update > drop mark and link 1`] = ` [ - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}},{"type":"deletion","attrs":{"id":null}}],"text":"Link."},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}},{"type":"deletion","attrs":{"id":null}}],"text":"Link."},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Link."}]}]}]}]}", ] `; exports[`agentStepToTr > Update > drop mark and link and change text within mark 1`] = ` [ - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"H"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold "},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold t"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold th"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}},{"type":"deletion","attrs":{"id":null}}],"text":"Link."},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"H"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold "},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold t"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold th"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}},{"type":"deletion","attrs":{"id":null}}],"text":"Link."},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Link."}]}]}]}]}", ] `; @@ -73,128 +73,128 @@ exports[`agentStepToTr > Update > modify parent content 1`] = ` exports[`agentStepToTr > Update > plain source block, add mention 1`] = ` [ - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"mention","attrs":{"user":"Jane Doe"},"marks":[{"type":"insertion","attrs":{"id":null}}]},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"mention","attrs":{"user":"Jane Doe"},"marks":[{"type":"insertion","attrs":{"id":null}}]},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", ] `; exports[`agentStepToTr > Update > standard update 1`] = ` [ - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"W"},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"We"},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wel"},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Welt"},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"W"},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"We"},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wel"},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Welt"},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", ] `; exports[`agentStepToTr > Update > styles + ic in source block, remove mark 1`] = ` [ - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", ] `; exports[`agentStepToTr > Update > styles + ic in source block, remove mention 1`] = ` [ - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":", "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":", "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", ] `; exports[`agentStepToTr > Update > styles + ic in source block, replace content 1`] = ` [ - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"u"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"up"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"upd"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"upda"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updat"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"update"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated "}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated c"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated co"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated con"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated cont"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated conte"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated conten"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated content"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"u"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"up"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"upd"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"upda"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updat"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"update"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated "}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated c"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated co"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated con"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated cont"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated conte"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated conten"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated content"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", ] `; exports[`agentStepToTr > Update > styles + ic in source block, update mention prop 1`] = ` [ - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"mention","attrs":{"user":"Jane Doe"},"marks":[{"type":"insertion","attrs":{"id":null}}]},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"mention","attrs":{"user":"Jane Doe"},"marks":[{"type":"insertion","attrs":{"id":null}}]},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", ] `; exports[`agentStepToTr > Update > styles + ic in source block, update text 1`] = ` [ - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"W"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wi"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie g"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie ge"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geh"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht e"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es d"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es di"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"D"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Di"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Die"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dies"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Diese"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser T"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Te"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Tex"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"i"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"is"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist b"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist bl"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist bla"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist blau"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"W"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wi"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie g"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie ge"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geh"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht e"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es d"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es di"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"D"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Di"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Die"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dies"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Diese"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser T"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Te"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Tex"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"i"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"is"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist b"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist bl"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist bla"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist blau"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", ] `; exports[`agentStepToTr > Update > styles + ic in target block, add mark (paragraph) 1`] = ` [ - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello, world!"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello, world!"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", ] `; exports[`agentStepToTr > Update > styles + ic in target block, add mark (word) 1`] = ` [ - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world!"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world!"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", ] `; exports[`agentStepToTr > Update > translate selection 1`] = ` [ - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", ] `; @@ -207,45 +207,45 @@ exports[`agentStepToTr > Update > turn paragraphs into list 1`] = ` exports[`agentStepToTr > Update > update block prop 1`] = ` [ - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", ] `; exports[`agentStepToTr > Update > update block prop and content 1`] = ` [ - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"W"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wh"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wha"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What'"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's "},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's u"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's up"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"W"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wh"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wha"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What'"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's "},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's u"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's up"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", ] `; exports[`agentStepToTr > Update > update block type 1`] = ` [ - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", ] `; exports[`agentStepToTr > Update > update block type and content 1`] = ` [ - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"W"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wh"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wha"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What'"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's "},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's u"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's up"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"W"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wh"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wha"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What'"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's "},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's u"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's up"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", ] `; diff --git a/packages/xl-ai/src/prosemirror/__snapshots__/changeset.test.ts.snap b/packages/xl-ai/src/prosemirror/__snapshots__/changeset.test.ts.snap index a2f632d849..2e6d6ea8f4 100644 --- a/packages/xl-ai/src/prosemirror/__snapshots__/changeset.test.ts.snap +++ b/packages/xl-ai/src/prosemirror/__snapshots__/changeset.test.ts.snap @@ -115,7 +115,6 @@ exports[`drop mark and link 1`] = ` "marks": [ { "attrs": { - "class": null, "href": "https://www.google.com", "rel": "noopener noreferrer nofollow", "target": "_blank", @@ -249,7 +248,6 @@ exports[`drop mark and link and change text within mark 1`] = ` "marks": [ { "attrs": { - "class": null, "href": "https://www.google.com", "rel": "noopener noreferrer nofollow", "target": "_blank", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 202a26aeda..e16325a8ac 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,17 +7,6 @@ settings: overrides: vitest: 4.1.2 '@vitest/runner': 4.1.2 - msw: 2.11.5 - ai: 6.0.5 - '@ai-sdk/anthropic': 3.0.2 - '@ai-sdk/openai': 3.0.2 - '@ai-sdk/groq': 3.0.2 - '@ai-sdk/google': 3.0.2 - '@ai-sdk/mistral': 3.0.2 - '@ai-sdk/openai-compatible': 2.0.2 - '@ai-sdk/provider-utils': 4.0.2 - '@ai-sdk/react': 3.0.5 - '@ai-sdk/gateway': 3.0.4 importers: @@ -72,7 +61,7 @@ importers: docs: dependencies: '@ai-sdk/groq': - specifier: 3.0.2 + specifier: ^3.0.2 version: 3.0.2(zod@4.3.6) '@aws-sdk/client-s3': specifier: ^3.609.0 @@ -237,7 +226,7 @@ importers: specifier: ^0.6.3 version: 0.6.4(react@19.2.5)(yjs@13.6.30) ai: - specifier: 6.0.5 + specifier: ^6.0.5 version: 6.0.5(zod@4.3.6) better-auth: specifier: ~1.4.15 @@ -4134,7 +4123,7 @@ importers: specifier: ^6.0.22 version: 6.0.22(react@19.2.5) ai: - specifier: 6.0.5 + specifier: ^6.0.5 version: 6.0.5(zod@4.3.6) react: specifier: ^19.2.3 @@ -4186,7 +4175,7 @@ importers: specifier: ^6.0.22 version: 6.0.22(react@19.2.5) ai: - specifier: 6.0.5 + specifier: ^6.0.5 version: 6.0.5(zod@4.3.6) react: specifier: ^19.2.3 @@ -4238,7 +4227,7 @@ importers: specifier: ^6.0.22 version: 6.0.22(react@19.2.5) ai: - specifier: 6.0.5 + specifier: ^6.0.5 version: 6.0.5(zod@4.3.6) react: specifier: ^19.2.3 @@ -4293,7 +4282,7 @@ importers: specifier: ^6.0.22 version: 6.0.22(react@19.2.5) ai: - specifier: 6.0.5 + specifier: ^6.0.5 version: 6.0.5(zod@4.3.6) react: specifier: ^19.2.3 @@ -4351,7 +4340,7 @@ importers: specifier: ^6.0.22 version: 6.0.22(react@19.2.5) ai: - specifier: 6.0.5 + specifier: ^6.0.5 version: 6.0.5(zod@4.3.6) react: specifier: ^19.2.3 @@ -4382,7 +4371,7 @@ importers: examples/09-ai/06-client-side-transport: dependencies: '@ai-sdk/groq': - specifier: 3.0.2 + specifier: ^3.0.2 version: 3.0.2(zod@4.3.6) '@blocknote/ariakit': specifier: latest @@ -4412,7 +4401,7 @@ importers: specifier: ^6.0.22 version: 6.0.22(react@19.2.5) ai: - specifier: 6.0.5 + specifier: ^6.0.5 version: 6.0.5(zod@4.3.6) react: specifier: ^19.2.3 @@ -4464,7 +4453,7 @@ importers: specifier: ^6.0.22 version: 6.0.22(react@19.2.5) ai: - specifier: 6.0.5 + specifier: ^6.0.5 version: 6.0.5(zod@4.3.6) react: specifier: ^19.2.3 @@ -4742,9 +4731,6 @@ importers: '@tiptap/extension-italic': specifier: ^3.13.0 version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3)) - '@tiptap/extension-link': - specifier: ^3.22.1 - version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3) '@tiptap/extension-paragraph': specifier: ^3.13.0 version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3)) @@ -5211,10 +5197,10 @@ importers: packages/xl-ai: dependencies: '@ai-sdk/provider-utils': - specifier: 4.0.2 + specifier: ^4.0.2 version: 4.0.2(zod@4.3.6) '@ai-sdk/react': - specifier: 3.0.5 + specifier: ^3.0.5 version: 3.0.5(react@19.2.5)(zod@4.3.6) '@blocknote/core': specifier: 0.48.1 @@ -5235,7 +5221,7 @@ importers: specifier: ^3.13.0 version: 3.22.3(@tiptap/pm@3.22.3) ai: - specifier: 6.0.5 + specifier: ^6.0.5 version: 6.0.5(zod@4.3.6) lodash.isequal: specifier: ^4.5.0 @@ -5284,22 +5270,22 @@ importers: version: 1.3.7(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30) devDependencies: '@ai-sdk/anthropic': - specifier: 3.0.2 + specifier: ^3.0.2 version: 3.0.2(zod@4.3.6) '@ai-sdk/google': - specifier: 3.0.2 + specifier: ^3.0.2 version: 3.0.2(zod@4.3.6) '@ai-sdk/groq': - specifier: 3.0.2 + specifier: ^3.0.2 version: 3.0.2(zod@4.3.6) '@ai-sdk/mistral': - specifier: 3.0.2 + specifier: ^3.0.2 version: 3.0.2(zod@4.3.6) '@ai-sdk/openai': - specifier: 3.0.2 + specifier: ^3.0.2 version: 3.0.2(zod@4.3.6) '@ai-sdk/openai-compatible': - specifier: 2.0.2 + specifier: ^2.0.2 version: 2.0.2(zod@4.3.6) '@mswjs/interceptors': specifier: ^0.37.6 @@ -5341,7 +5327,7 @@ importers: specifier: ^4.0.3 version: 4.0.3 msw: - specifier: 2.11.5 + specifier: ^2.11.5 version: 2.11.5(@types/node@25.6.0)(typescript@5.9.3) msw-snapshot: specifier: ^5.3.0 @@ -5374,22 +5360,22 @@ importers: packages/xl-ai-server: dependencies: '@ai-sdk/anthropic': - specifier: 3.0.2 + specifier: ^3.0.2 version: 3.0.2(zod@4.3.6) '@ai-sdk/google': - specifier: 3.0.2 + specifier: ^3.0.2 version: 3.0.2(zod@4.3.6) '@ai-sdk/groq': - specifier: 3.0.2 + specifier: ^3.0.2 version: 3.0.2(zod@4.3.6) '@ai-sdk/mistral': - specifier: 3.0.2 + specifier: ^3.0.2 version: 3.0.2(zod@4.3.6) '@ai-sdk/openai': - specifier: 3.0.2 + specifier: ^3.0.2 version: 3.0.2(zod@4.3.6) '@ai-sdk/openai-compatible': - specifier: 2.0.2 + specifier: ^2.0.2 version: 2.0.2(zod@4.3.6) '@blocknote/xl-ai': specifier: 0.48.1 @@ -5398,7 +5384,7 @@ importers: specifier: ^1.19.5 version: 1.19.14(hono@4.12.14) ai: - specifier: 6.0.5 + specifier: ^6.0.5 version: 6.0.5(zod@4.3.6) hono: specifier: ^4.10.3 @@ -5743,7 +5729,7 @@ importers: playground: dependencies: '@ai-sdk/groq': - specifier: 3.0.2 + specifier: ^3.0.2 version: 3.0.2(zod@4.3.6) '@aws-sdk/client-s3': specifier: ^3.911.0 @@ -5863,7 +5849,7 @@ importers: specifier: ^0.6.4 version: 0.6.4(react@19.2.5)(yjs@13.6.30) ai: - specifier: 6.0.5 + specifier: ^6.0.5 version: 6.0.5(zod@4.3.6) autoprefixer: specifier: 10.4.21 @@ -10504,12 +10490,6 @@ packages: peerDependencies: '@tiptap/core': ^3.22.3 - '@tiptap/extension-link@3.22.3': - resolution: {integrity: sha512-S8/P2o9pv6B3kqLjH2TRWwSAximGbciNc6R8/QcN6HWLYxp0N0JoqN3rZHl9VWIBAGRWc4zkt80dhqrl2xmgfQ==} - peerDependencies: - '@tiptap/core': ^3.22.3 - '@tiptap/pm': ^3.22.3 - '@tiptap/extension-paragraph@3.22.3': resolution: {integrity: sha512-oO7rhfyhEuwm+50s9K3GZPjYyEEEvFAvm1wXopvZnhbkBLydIWImBfrZoC5IQh4/sRDlTIjosV2C+ji5y0tUSg==} peerDependencies: @@ -11192,7 +11172,7 @@ packages: '@vitest/mocker@4.1.2': resolution: {integrity: sha512-Ize4iQtEALHDttPRCmN+FKqOl2vxTiNUhzobQFFt/BM1lRUTG7zRCLOykG/6Vo4E4hnUdfVLo5/eqKPukcWW7Q==} peerDependencies: - msw: 2.11.5 + msw: ^2.4.9 vite: ^6.0.0 || ^7.0.0 || ^8.0.0 peerDependenciesMeta: msw: @@ -13837,9 +13817,6 @@ packages: linkify-it@5.0.0: resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} - linkifyjs@4.3.2: - resolution: {integrity: sha512-NT1CJtq3hHIreOianA8aSXn6Cw0JzYOuDQbOrSPe7gqFnCpKP++MQe3ODgO3oh2GJFORkAAdqredOa60z63GbA==} - loader-runner@4.3.1: resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} engines: {node: '>=6.11.5'} @@ -14250,7 +14227,7 @@ packages: msw-snapshot@5.3.0: resolution: {integrity: sha512-UdHPR67Qg0VAoQamu4AFevp0c3XG4oiOTmPGd98CezIwR9Il9jm9WFd2HebeYnjJ+Y5tVLPdwYiA72VWbnMX4Q==} peerDependencies: - msw: 2.11.5 + msw: ^2.0.0 msw@2.11.5: resolution: {integrity: sha512-atFI4GjKSJComxcigz273honh8h4j5zzpk5kwG4tGm0TPcYne6bqmVrufeRll6auBeouIkXqZYXxVbWSWxM3RA==} @@ -21870,12 +21847,6 @@ snapshots: dependencies: '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) - '@tiptap/extension-link@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)': - dependencies: - '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) - '@tiptap/pm': 3.22.3 - linkifyjs: 4.3.2 - '@tiptap/extension-paragraph@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))': dependencies: '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) @@ -25815,8 +25786,6 @@ snapshots: dependencies: uc.micro: 2.1.0 - linkifyjs@4.3.2: {} - loader-runner@4.3.1: {} locate-path@6.0.0: diff --git a/tests/nextjs-test-app/package.json b/tests/nextjs-test-app/package.json index ca14347bab..f4f81ae9f7 100644 --- a/tests/nextjs-test-app/package.json +++ b/tests/nextjs-test-app/package.json @@ -3,10 +3,10 @@ "private": true, "version": "0.0.0", "dependencies": { - "@blocknote/core": "file:.tarballs/blocknote-core-0.48.0.tgz", - "@blocknote/mantine": "file:.tarballs/blocknote-mantine-0.48.0.tgz", - "@blocknote/react": "file:.tarballs/blocknote-react-0.48.0.tgz", - "@blocknote/server-util": "file:.tarballs/blocknote-server-util-0.48.0.tgz", + "@blocknote/core": "file:.tarballs/blocknote-core-0.48.1.tgz", + "@blocknote/mantine": "file:.tarballs/blocknote-mantine-0.48.1.tgz", + "@blocknote/react": "file:.tarballs/blocknote-react-0.48.1.tgz", + "@blocknote/server-util": "file:.tarballs/blocknote-server-util-0.48.1.tgz", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "next": "^16.0.0", diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/hardbreak/between-links.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/hardbreak/between-links.html index 9e4b427c62..fbe9ef135f 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/hardbreak/between-links.html +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/hardbreak/between-links.html @@ -6,12 +6,16 @@ Link1
Link2

diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/hardbreak/link.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/hardbreak/link.html index 4cae02d67b..691a663449 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/hardbreak/link.html +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/hardbreak/link.html @@ -6,12 +6,16 @@ Link1
Link1

diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/adjacent.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/adjacent.html index 2408c611ac..b89f21cd59 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/adjacent.html +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/adjacent.html @@ -6,11 +6,15 @@ Website Website2

diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/basic.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/basic.html index 3daea90831..bfc8c80945 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/basic.html +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/basic.html @@ -6,6 +6,8 @@ Website

diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/styled.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/styled.html index 2b9d4cb574..6c67039ff9 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/styled.html +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/styled.html @@ -7,12 +7,16 @@ Web site

diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/hardbreak/between-links.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/hardbreak/between-links.html index 701b5d4213..7b074b0120 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/html/hardbreak/between-links.html +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/hardbreak/between-links.html @@ -2,12 +2,16 @@ Link1
Link2

\ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/hardbreak/link.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/hardbreak/link.html index 2c762aedc5..aab38c859f 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/html/hardbreak/link.html +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/hardbreak/link.html @@ -2,12 +2,16 @@ Link1
Link1

\ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/adjacent.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/adjacent.html index db99691d33..e37cee5aa7 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/adjacent.html +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/adjacent.html @@ -2,11 +2,15 @@ Website Website2

\ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/basic.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/basic.html index 4b61e8c582..6174bf9428 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/basic.html +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/basic.html @@ -2,6 +2,8 @@ Website

\ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/styled.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/styled.html index fb7737f7f8..fd2832b117 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/styled.html +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/styled.html @@ -3,12 +3,16 @@ Web site

\ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/hardbreak/between-links.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/hardbreak/between-links.json index 174eeecd5b..ec5babf930 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/hardbreak/between-links.json +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/hardbreak/between-links.json @@ -15,7 +15,6 @@ "marks": [ { "attrs": { - "class": null, "href": "https://www.website.com", "rel": "noopener noreferrer nofollow", "target": "_blank", @@ -33,7 +32,6 @@ "marks": [ { "attrs": { - "class": null, "href": "https://www.website2.com", "rel": "noopener noreferrer nofollow", "target": "_blank", diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/hardbreak/link.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/hardbreak/link.json index 4ae3cc342b..33be9006e7 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/hardbreak/link.json +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/hardbreak/link.json @@ -15,7 +15,6 @@ "marks": [ { "attrs": { - "class": null, "href": "https://www.website.com", "rel": "noopener noreferrer nofollow", "target": "_blank", @@ -33,7 +32,6 @@ "marks": [ { "attrs": { - "class": null, "href": "https://www.website.com", "rel": "noopener noreferrer nofollow", "target": "_blank", diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/adjacent.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/adjacent.json index d546271743..928b37b152 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/adjacent.json +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/adjacent.json @@ -15,7 +15,6 @@ "marks": [ { "attrs": { - "class": null, "href": "https://www.website.com", "rel": "noopener noreferrer nofollow", "target": "_blank", @@ -30,7 +29,6 @@ "marks": [ { "attrs": { - "class": null, "href": "https://www.website2.com", "rel": "noopener noreferrer nofollow", "target": "_blank", diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/basic.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/basic.json index 3964520c13..f2bc979545 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/basic.json +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/basic.json @@ -15,7 +15,6 @@ "marks": [ { "attrs": { - "class": null, "href": "https://www.website.com", "rel": "noopener noreferrer nofollow", "target": "_blank", diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/styled.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/styled.json index 84c3a57c95..e55e628ec4 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/styled.json +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/styled.json @@ -18,7 +18,6 @@ }, { "attrs": { - "class": null, "href": "https://www.website.com", "rel": "noopener noreferrer nofollow", "target": "_blank", @@ -33,7 +32,6 @@ "marks": [ { "attrs": { - "class": null, "href": "https://www.website.com", "rel": "noopener noreferrer nofollow", "target": "_blank", From d08531bf2b8912d48083b043be7b574025994092 Mon Sep 17 00:00:00 2001 From: Yousef Date: Fri, 24 Apr 2026 14:38:21 +0200 Subject: [PATCH 24/76] feat: add Unicode quotation mark input rule for quote blocks (#2673) --- packages/core/src/blocks/Quote/block.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/packages/core/src/blocks/Quote/block.ts b/packages/core/src/blocks/Quote/block.ts index bb14afbd77..b6b6a7710f 100644 --- a/packages/core/src/blocks/Quote/block.ts +++ b/packages/core/src/blocks/Quote/block.ts @@ -84,6 +84,15 @@ export const createQuoteBlockSpec = createBlockSpec( }; }, }, + { + find: new RegExp(`^\\p{Quotation_Mark}\\s$`, "u"), + replace() { + return { + type: "quote", + props: {}, + }; + }, + }, ], }), ], From 627ca4d5bf48944d977e48a94f441ca3272a26b4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 24 Apr 2026 14:50:02 +0200 Subject: [PATCH 25/76] chore: bump the editor-dependencies group across 1 directory with 12 updates (#2674) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 1047 ++++++++++++++++++++++-------------------------- 1 file changed, 478 insertions(+), 569 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e16325a8ac..88577a37f7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -53,7 +53,7 @@ importers: version: 5.9.3 vitest: specifier: 4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) wait-on: specifier: 9.0.5 version: 9.0.5 @@ -122,10 +122,10 @@ importers: version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.5) '@liveblocks/react-blocknote': specifier: ^3.17.0 - version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30) + version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4)(@tiptap/react@3.22.4(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30) '@liveblocks/react-tiptap': specifier: ^3.17.0 - version: 3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30)) + version: 3.17.0(@tiptap/pm@3.22.4)(@tiptap/react@3.22.4(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30)) '@liveblocks/react-ui': specifier: ^3.17.0 version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) @@ -152,7 +152,7 @@ importers: version: 3.1.18 '@polar-sh/better-auth': specifier: ^1.6.4 - version: 1.8.3(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))))(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1)(zod@4.3.6) + version: 1.8.3(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))))(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1)(zod@4.3.6) '@polar-sh/sdk': specifier: ^0.42.2 version: 0.42.5 @@ -185,7 +185,7 @@ importers: version: 4.0.2 '@tiptap/core': specifier: ^3.13.0 - version: 3.22.3(@tiptap/pm@3.22.3) + version: 3.22.4(@tiptap/pm@3.22.4) '@uppy/core': specifier: ^3.13.1 version: 3.13.1 @@ -230,7 +230,7 @@ importers: version: 6.0.5(zod@4.3.6) better-auth: specifier: ~1.4.15 - version: 1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))) + version: 1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))) better-sqlite3: specifier: ^12.6.2 version: 12.8.0 @@ -245,7 +245,7 @@ importers: version: 16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6) fumadocs-mdx: specifier: ^14.2.6 - version: 14.2.11(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 14.2.11(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) fumadocs-twoslash: specifier: ^3.1.12 version: 3.1.15(@fumadocs/base-ui@16.5.0(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(tailwindcss@4.2.2))(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(typescript@5.9.3) @@ -403,10 +403,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/02-block-objects: dependencies: @@ -449,10 +449,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/03-multi-column: dependencies: @@ -498,10 +498,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/04-default-blocks: dependencies: @@ -544,10 +544,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/05-removing-default-blocks: dependencies: @@ -590,10 +590,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/06-block-manipulation: dependencies: @@ -636,10 +636,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/07-selection-blocks: dependencies: @@ -682,10 +682,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/08-ariakit: dependencies: @@ -728,10 +728,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/09-shadcn: dependencies: @@ -774,7 +774,7 @@ importers: devDependencies: '@tailwindcss/vite': specifier: ^4.1.14 - version: 4.2.2(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.2.2(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) '@types/react': specifier: ^19.2.3 version: 19.2.14 @@ -783,10 +783,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/10-localization: dependencies: @@ -829,10 +829,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/11-custom-placeholder: dependencies: @@ -875,10 +875,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/12-multi-editor: dependencies: @@ -921,10 +921,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/13-custom-paste-handler: dependencies: @@ -967,10 +967,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/14-editor-scrollable: dependencies: @@ -1013,10 +1013,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/15-shadowdom: dependencies: @@ -1059,10 +1059,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/16-read-only-editor: dependencies: @@ -1105,10 +1105,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/01-basic/testing: dependencies: @@ -1151,10 +1151,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/02-backend/01-file-uploading: dependencies: @@ -1197,10 +1197,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/02-backend/02-saving-loading: dependencies: @@ -1243,10 +1243,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/02-backend/03-s3: dependencies: @@ -1295,10 +1295,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/02-backend/04-rendering-static-documents: dependencies: @@ -1344,10 +1344,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/01-ui-elements-remove: dependencies: @@ -1390,10 +1390,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/02-formatting-toolbar-buttons: dependencies: @@ -1436,10 +1436,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/03-formatting-toolbar-block-type-items: dependencies: @@ -1485,10 +1485,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/04-side-menu-buttons: dependencies: @@ -1534,10 +1534,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/05-side-menu-drag-handle-items: dependencies: @@ -1583,10 +1583,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/06-suggestion-menus-slash-menu-items: dependencies: @@ -1632,10 +1632,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/07-suggestion-menus-slash-menu-component: dependencies: @@ -1678,10 +1678,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/08-suggestion-menus-emoji-picker-columns: dependencies: @@ -1724,10 +1724,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/09-suggestion-menus-emoji-picker-component: dependencies: @@ -1770,10 +1770,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/10-suggestion-menus-grid-mentions: dependencies: @@ -1816,10 +1816,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/11-uppy-file-panel: dependencies: @@ -1898,10 +1898,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/12-static-formatting-toolbar: dependencies: @@ -1944,10 +1944,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/13-custom-ui: dependencies: @@ -1996,10 +1996,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/14-experimental-mobile-formatting-toolbar: dependencies: @@ -2042,10 +2042,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/15-advanced-tables: dependencies: @@ -2088,10 +2088,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/16-link-toolbar-buttons: dependencies: @@ -2134,10 +2134,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/17-advanced-tables-2: dependencies: @@ -2180,10 +2180,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/03-ui-components/18-drag-n-drop: dependencies: @@ -2226,10 +2226,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/01-theming-dom-attributes: dependencies: @@ -2272,10 +2272,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/02-changing-font: dependencies: @@ -2318,10 +2318,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/03-theming-css: dependencies: @@ -2364,10 +2364,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/04-theming-css-variables: dependencies: @@ -2410,10 +2410,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/05-theming-css-variables-code: dependencies: @@ -2456,10 +2456,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/06-code-block: dependencies: @@ -2505,10 +2505,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/04-theming/07-custom-code-block: dependencies: @@ -2569,10 +2569,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/01-converting-blocks-to-html: dependencies: @@ -2615,10 +2615,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/02-converting-blocks-from-html: dependencies: @@ -2661,10 +2661,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/03-converting-blocks-to-md: dependencies: @@ -2707,10 +2707,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/04-converting-blocks-from-md: dependencies: @@ -2753,10 +2753,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/05-converting-blocks-to-pdf: dependencies: @@ -2808,10 +2808,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/06-converting-blocks-to-docx: dependencies: @@ -2860,10 +2860,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/07-converting-blocks-to-odt: dependencies: @@ -2912,10 +2912,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/08-converting-blocks-to-react-email: dependencies: @@ -2964,10 +2964,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/09-blocks-to-html-static-render: dependencies: @@ -3010,10 +3010,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/05-interoperability/10-static-html-render: dependencies: @@ -3056,10 +3056,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/01-alert-block: dependencies: @@ -3105,10 +3105,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/02-suggestion-menus-mentions: dependencies: @@ -3151,10 +3151,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/03-font-style: dependencies: @@ -3200,10 +3200,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/04-pdf-file-block: dependencies: @@ -3249,10 +3249,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/05-alert-block-full-ux: dependencies: @@ -3298,10 +3298,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/06-toggleable-blocks: dependencies: @@ -3344,10 +3344,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/07-configuring-blocks: dependencies: @@ -3390,10 +3390,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/draggable-inline-content: dependencies: @@ -3436,10 +3436,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/react-custom-blocks: dependencies: @@ -3482,10 +3482,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/react-custom-inline-content: dependencies: @@ -3528,10 +3528,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/06-custom-schema/react-custom-styles: dependencies: @@ -3574,10 +3574,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/01-partykit: dependencies: @@ -3626,10 +3626,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/02-liveblocks: dependencies: @@ -3656,10 +3656,10 @@ importers: version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.5) '@liveblocks/react-blocknote': specifier: ^3.17.0 - version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30) + version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4)(@tiptap/react@3.22.4(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30) '@liveblocks/react-tiptap': specifier: ^3.17.0 - version: 3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30)) + version: 3.17.0(@tiptap/pm@3.22.4)(@tiptap/react@3.22.4(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30)) '@liveblocks/react-ui': specifier: ^3.17.0 version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) @@ -3690,10 +3690,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/03-y-sweet: dependencies: @@ -3739,10 +3739,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/04-electric-sql: dependencies: @@ -3785,10 +3785,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/05-comments: dependencies: @@ -3834,10 +3834,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/06-comments-with-sidebar: dependencies: @@ -3886,10 +3886,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/07-ghost-writer: dependencies: @@ -3938,10 +3938,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/08-forking: dependencies: @@ -3990,10 +3990,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/07-collaboration/09-comments-testing: dependencies: @@ -4039,10 +4039,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/08-extensions/01-tiptap-arrow-conversion: dependencies: @@ -4072,7 +4072,7 @@ importers: version: 6.0.22(react@19.2.5) '@tiptap/core': specifier: ^3.13.0 - version: 3.22.3(@tiptap/pm@3.22.3) + version: 3.22.4(@tiptap/pm@3.22.4) react: specifier: ^19.2.3 version: 19.2.5 @@ -4088,10 +4088,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/01-minimal: dependencies: @@ -4140,10 +4140,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/02-playground: dependencies: @@ -4192,10 +4192,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/03-custom-ai-menu-items: dependencies: @@ -4247,10 +4247,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/04-with-collaboration: dependencies: @@ -4305,10 +4305,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/05-manual-execution: dependencies: @@ -4363,10 +4363,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/06-client-side-transport: dependencies: @@ -4418,10 +4418,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/09-ai/07-server-persistence: dependencies: @@ -4470,10 +4470,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/vanilla-js/react-vanilla-custom-blocks: dependencies: @@ -4516,10 +4516,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/vanilla-js/react-vanilla-custom-inline-content: dependencies: @@ -4562,10 +4562,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) examples/vanilla-js/react-vanilla-custom-styles: dependencies: @@ -4608,10 +4608,10 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) packages/ariakit: dependencies: @@ -4633,7 +4633,7 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -4654,13 +4654,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) packages/code-block: dependencies: @@ -4694,13 +4694,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: 4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) packages/core: dependencies: @@ -4718,37 +4718,37 @@ importers: version: 0.7.7 '@tiptap/core': specifier: ^3.13.0 - version: 3.22.3(@tiptap/pm@3.22.3) + version: 3.22.4(@tiptap/pm@3.22.4) '@tiptap/extension-bold': specifier: ^3.13.0 - version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3)) + version: 3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4)) '@tiptap/extension-code': specifier: ^3.13.0 - version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3)) + version: 3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4)) '@tiptap/extension-horizontal-rule': specifier: ^3.13.0 - version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3) + version: 3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4) '@tiptap/extension-italic': specifier: ^3.13.0 - version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3)) + version: 3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4)) '@tiptap/extension-paragraph': specifier: ^3.13.0 - version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3)) + version: 3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4)) '@tiptap/extension-strike': specifier: ^3.13.0 - version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3)) + version: 3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4)) '@tiptap/extension-text': specifier: ^3.13.0 - version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3)) + version: 3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4)) '@tiptap/extension-underline': specifier: ^3.13.0 - version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3)) + version: 3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4)) '@tiptap/extensions': specifier: ^3.13.0 - version: 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3) + version: 3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4) '@tiptap/pm': specifier: ^3.13.0 - version: 3.22.3 + version: 3.22.4 emoji-mart: specifier: ^5.6.0 version: 5.6.0 @@ -4839,13 +4839,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: 4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) packages/dev-scripts: dependencies: @@ -4910,7 +4910,7 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -4931,13 +4931,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) packages/react: dependencies: @@ -4958,13 +4958,13 @@ importers: version: 0.7.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@tiptap/core': specifier: ^3.13.0 - version: 3.22.3(@tiptap/pm@3.22.3) + version: 3.22.4(@tiptap/pm@3.22.4) '@tiptap/pm': specifier: ^3.13.0 - version: 3.22.3 + version: 3.22.4 '@tiptap/react': specifier: ^3.13.0 - version: 3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + version: 3.22.4(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@types/use-sync-external-store': specifier: 1.5.0 version: 1.5.0 @@ -5001,7 +5001,7 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -5022,16 +5022,16 @@ importers: version: 5.9.3 vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: 4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) packages/server-util: dependencies: @@ -5043,10 +5043,10 @@ importers: version: link:../react '@tiptap/core': specifier: ^3.13.0 - version: 3.22.3(@tiptap/pm@3.22.3) + version: 3.22.4(@tiptap/pm@3.22.4) '@tiptap/pm': specifier: ^3.13.0 - version: 3.22.3 + version: 3.22.4 jsdom: specifier: ^25.0.1 version: 25.0.1(canvas@2.11.2) @@ -5086,13 +5086,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: 4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) packages/shadcn: dependencies: @@ -5165,7 +5165,7 @@ importers: 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@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -5186,13 +5186,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) packages/xl-ai: dependencies: @@ -5219,7 +5219,7 @@ importers: version: 0.1.8(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-transform@1.12.0)(prosemirror-view@1.41.8) '@tiptap/core': specifier: ^3.13.0 - version: 3.22.3(@tiptap/pm@3.22.3) + version: 3.22.4(@tiptap/pm@3.22.4) ai: specifier: ^6.0.5 version: 6.0.5(zod@4.3.6) @@ -5313,7 +5313,7 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/runner': specifier: 4.1.2 version: 4.1.2 @@ -5346,16 +5346,16 @@ importers: version: 6.25.0 vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: 4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) packages/xl-ai-server: dependencies: @@ -5407,19 +5407,19 @@ importers: version: 6.25.0 vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) vite-node: specifier: ^6.0.0 - version: 6.0.0(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 6.0.0(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-externalize-deps: specifier: ^0.10.0 - version: 0.10.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 0.10.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: 4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) packages/xl-docx-exporter: dependencies: @@ -5465,13 +5465,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: 4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) xml-formatter: specifier: ^3.6.7 version: 3.7.0 @@ -5526,13 +5526,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: 4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) packages/xl-multi-column: dependencies: @@ -5544,7 +5544,7 @@ importers: version: link:../react '@tiptap/core': specifier: ^3.13.0 - version: 3.22.3(@tiptap/pm@3.22.3) + version: 3.22.4(@tiptap/pm@3.22.4) prosemirror-model: specifier: ^1.25.4 version: 1.25.4 @@ -5593,13 +5593,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: 4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) packages/xl-odt-exporter: dependencies: @@ -5645,13 +5645,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: 4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) xml-formatter: specifier: ^3.6.7 version: 3.7.0 @@ -5718,13 +5718,13 @@ importers: version: 5.9.3 vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: 4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) playground: dependencies: @@ -5790,10 +5790,10 @@ importers: version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.5) '@liveblocks/react-blocknote': specifier: ^3.17.0 - version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30) + version: 3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4)(@tiptap/react@3.22.4(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30) '@liveblocks/react-tiptap': specifier: ^3.17.0 - version: 3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30)) + version: 3.17.0(@tiptap/pm@3.22.4)(@tiptap/react@3.22.4(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30)) '@liveblocks/react-ui': specifier: ^3.17.0 version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) @@ -5878,7 +5878,7 @@ importers: devDependencies: '@tailwindcss/vite': specifier: ^4.1.14 - version: 4.2.2(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.2.2(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) '@types/react': specifier: ^19.2.3 version: 19.2.14 @@ -5887,7 +5887,7 @@ importers: 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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) eslint: specifier: ^8.57.1 version: 8.57.1 @@ -5905,13 +5905,13 @@ importers: version: 1.4.0 vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vite-plugin-inspect: specifier: 12.0.0-beta.1 - version: 12.0.0-beta.1(typescript@5.9.3)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0) + version: 12.0.0-beta.1(typescript@5.9.3)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0) shared: dependencies: @@ -5952,13 +5952,13 @@ importers: version: link:../packages/shadcn '@playwright/experimental-ct-react': specifier: 1.51.1 - version: 1.51.1(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.1)(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.51.1(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.2)(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) '@playwright/test': specifier: 1.51.1 version: 1.51.1 '@tiptap/pm': specifier: ^3.13.0 - version: 3.22.3 + version: 3.22.4 '@types/node': specifier: ^20.19.22 version: 20.19.37 @@ -5988,13 +5988,13 @@ importers: version: 5.0.10 vite: specifier: ^8.0.8 - version: 8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) vite-plugin-eslint: specifier: ^1.8.1 - version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) vitest: specifier: 4.1.2 - version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@20.19.37)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@20.19.37)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) packages: @@ -9385,96 +9385,112 @@ packages: '@react-email/body@0.3.0': resolution: {integrity: sha512-uGo0BOOzjbMUo3lu+BIDWayvn5o6Xyfmnlla5VGf05n8gHMvO1ll7U4FtzWe3hxMLwt53pmc4iE0M+B5slG+Ug==} engines: {node: '>=20.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/button@0.2.1': resolution: {integrity: sha512-qXyj7RZLE7POy9BMKSoqQ00tOXThjOZSUnI2Yu9i29IHngPlmrNayIWBoVKtElES7OWwypUcpiajwi1mUWx6/A==} engines: {node: '>=20.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/code-block@0.2.1': resolution: {integrity: sha512-M3B7JpVH4ytgn83/ujRR1k1DQHvTeABiDM61OvAbjLRPhC/5KLHU5KkzIbbuGIrjWwxAbL1kSQzU8MhLEtSxyw==} engines: {node: '>=20.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/code-inline@0.0.6': resolution: {integrity: sha512-jfhebvv3dVsp3OdPgKXnk8+e2pBiDVZejDOBFzBa/IblrAJ9cQDkN6rBD5IyEg8hTOxwbw3iaI/yZFmDmIguIA==} engines: {node: '>=20.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/column@0.0.14': resolution: {integrity: sha512-f+W+Bk2AjNO77zynE33rHuQhyqVICx4RYtGX9NKsGUg0wWjdGP0qAuIkhx9Rnmk4/hFMo1fUrtYNqca9fwJdHg==} engines: {node: '>=20.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/components@1.0.11': resolution: {integrity: sha512-s0CX31+S/u1MhBWYFAuZru0NHNExTY+OeZC9OrGyzl8PGQ0Iz/4gq3O4rHUVuA1D7FjAcPbwG1Up0yey/Xh6dw==} engines: {node: '>=20.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/container@0.0.16': resolution: {integrity: sha512-QWBB56RkkU0AJ9h+qy33gfT5iuZknPC7Un/IjZv9B0QmMIK+WWacc0cH6y2SV5Cv/b99hU94fjEMOOO4enpkbQ==} engines: {node: '>=20.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/font@0.0.10': resolution: {integrity: sha512-0urVSgCmQIfx5r7Xc586miBnQUVnGp3OTYUm8m5pwtQRdTRO5XrTtEfNJ3JhYhSOruV0nD8fd+dXtKXobum6tA==} engines: {node: '>=20.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/head@0.0.13': resolution: {integrity: sha512-AJg6le/08Gz4tm+6MtKXqtNNyKHzmooOCdmtqmWxD7FxoAdU1eVcizhtQ0gcnVaY6ethEyE/hnEzQxt1zu5Kog==} engines: {node: '>=20.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/heading@0.0.16': resolution: {integrity: sha512-jmsKnQm1ykpBzw4hCYHwBkt5pW2jScXffPeEH5ZRF5tZeF5b1pvlFTO9han7C0pCkZYo1kEvWiRtx69yfCIwuw==} engines: {node: '>=20.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/hr@0.0.12': resolution: {integrity: sha512-TwmOmBDibavUQpXBxpmZYi2Iks/yeZOzFYh+di9EltMSnEabH8dMZXrl+pxNXzCgZ2XE8HY7VmUL65Lenfu5PA==} engines: {node: '>=20.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/html@0.0.12': resolution: {integrity: sha512-KTShZesan+UsreU7PDUV90afrZwU5TLwYlALuCSU0OT+/U8lULNNbAUekg+tGwCnOfIKYtpDPKkAMRdYlqUznw==} engines: {node: '>=20.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/img@0.0.12': resolution: {integrity: sha512-sRCpEARNVTf3FQhZOC+JTvu5r6ubiYWkT0ucYXg8ctkyi4G8QG+jgYPiNUqVeTLA2STOfmPM/nrk1nb84y6CPQ==} engines: {node: '>=20.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/link@0.0.13': resolution: {integrity: sha512-lkWc/NjOcefRZMkQoSDDbuKBEBDES9aXnFEOuPH845wD3TxPwh+QTf0fStuzjoRLUZWpHnio4z7qGGRYusn/sw==} engines: {node: '>=20.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/markdown@0.0.18': resolution: {integrity: sha512-gSuYK5fsMbGk87jDebqQ6fa2fKcWlkf2Dkva8kMONqLgGCq8/0d+ZQYMEJsdidIeBo3kmsnHZPrwdFB4HgjUXg==} engines: {node: '>=20.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/preview@0.0.14': resolution: {integrity: sha512-aYK8q0IPkBXyMsbpMXgxazwHxYJxTrXrV95GFuu2HbEiIToMwSyUgb8HDFYwPqqfV03/jbwqlsXmFxsOd+VNaw==} engines: {node: '>=20.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc @@ -9488,18 +9504,21 @@ packages: '@react-email/row@0.0.13': resolution: {integrity: sha512-bYnOac40vIKCId7IkwuLAAsa3fKfSfqCvv6epJKmPE0JBuu5qI4FHFCl9o9dVpIIS08s/ub+Y/txoMt0dYziGw==} engines: {node: '>=20.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/section@0.0.17': resolution: {integrity: sha512-qNl65ye3W0Rd5udhdORzTV9ezjb+GFqQQSae03NDzXtmJq6sqVXNWNiVolAjvJNypim+zGXmv6J9TcV5aNtE/w==} engines: {node: '>=20.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc '@react-email/tailwind@2.0.7': resolution: {integrity: sha512-kGw80weVFXikcnCXbigTGXGWQ0MRCSYNCudcdkWxebkWYd0FG6/NPoN3V1p/u68/4+NxZwYPVi2fhnp0x23HdA==} engines: {node: '>=20.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: '@react-email/body': '>=0' '@react-email/button': '>=0' @@ -9538,6 +9557,7 @@ packages: '@react-email/text@0.1.6': resolution: {integrity: sha512-TYqkioRS45wTR5il3dYk/SbUjjEdhSwh9BtRNB99qNH1pXAwA45H7rAuxehiu8iJQJH0IyIr+6n62gBz9ezmsw==} engines: {node: '>=20.0.0'} + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. peerDependencies: react: ^18.0 || ^19.0 || ^19.0.0-rc @@ -9595,9 +9615,6 @@ packages: react-redux: optional: true - '@remirror/core-constants@3.0.0': - resolution: {integrity: sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==} - '@remix-run/router@1.23.2': resolution: {integrity: sha512-Ic6m2U/rMjTkhERIa/0ZtXJP17QUi2CbWE7cqx4J58M8aA3QTfW+2UlQ4psvTX9IO1RfNVhK3pcpdjej7L+t2w==} engines: {node: '>=14.0.0'} @@ -10451,79 +10468,79 @@ packages: '@types/react-dom': optional: true - '@tiptap/core@3.22.3': - resolution: {integrity: sha512-Dv9MKK5BDWCF0N2l6/Pxv3JNCce2kwuWf2cKMBc2bEetx0Pn6o7zlFmSxMvYK4UtG1Tw9Yg/ZHi6QOFWK0Zm9Q==} + '@tiptap/core@3.22.4': + resolution: {integrity: sha512-vGIGm/HpqLg8EAAQXQ+koV+/S828OEpzocfWcPOwo1u2QUVf9dQG47Yy6JJ8zFFaJwfv4dBcOXli+7BrJwsxDQ==} peerDependencies: - '@tiptap/pm': ^3.22.3 + '@tiptap/pm': 3.22.4 - '@tiptap/extension-bold@3.22.3': - resolution: {integrity: sha512-tysipHla2zCWr8XNIWRaW9O+7i7/SoEqnRqSRUUi2ailcJjlia+RBy3RykhkgyThrQDStu5KGBS/UvrXwA+O1A==} + '@tiptap/extension-bold@3.22.4': + resolution: {integrity: sha512-jIaPKfNOQu2lhpbLDvtwlQqM+mjF+Kk+auHpzYjBnsuwUli1Cl5ZOau7RH+rru/SQvZe1DtpQlANujDywugZAA==} peerDependencies: - '@tiptap/core': ^3.22.3 + '@tiptap/core': 3.22.4 - '@tiptap/extension-bubble-menu@3.22.3': - resolution: {integrity: sha512-Y6zQjh0ypDg32HWgICEvmPSKjGLr39k3aDxxt/H0uQEZSfw4smT0hxUyyyjVjx68C6t6MTnwdfz0hPI5lL68vQ==} + '@tiptap/extension-bubble-menu@3.22.4': + resolution: {integrity: sha512-v4pux5Ql3THAEjaLMY4ldtdy/Xy2qU7PJLBkq8ugLp8qicaKC+tpqxp6sGif4vLIjz7Ap5hurRbTNbXzszyyHA==} peerDependencies: - '@tiptap/core': ^3.22.3 - '@tiptap/pm': ^3.22.3 + '@tiptap/core': 3.22.4 + '@tiptap/pm': 3.22.4 - '@tiptap/extension-code@3.22.3': - resolution: {integrity: sha512-wafWTDQOuMKtXpZEuk1PFQmzopabBciNLryL90MB9S03MNLaQQZYLnmYkDBlzAaLAbgF5QiC+2XZQEBQuTVjFQ==} + '@tiptap/extension-code@3.22.4': + resolution: {integrity: sha512-cnbxmVhAcc7X3G81QUYEmKP0ve2hRmvAiFXBuuv9RUtQlBiRnzmhHoJOMgkX0CsMR7+8kMRpTfeDUYq2xp5s5w==} peerDependencies: - '@tiptap/core': ^3.22.3 + '@tiptap/core': 3.22.4 - '@tiptap/extension-floating-menu@3.22.3': - resolution: {integrity: sha512-0f8b4KZ3XKai8GXWseIYJGdOfQr3evtFbBo3U08zy2aYzMMXWG0zEF7qe5/oiYp2aZ95edjjITnEceviTsZkIg==} + '@tiptap/extension-floating-menu@3.22.4': + resolution: {integrity: sha512-DFuyYxgaZPgxum5z1yvJPbfYCvDdO8geXsdyqt0qYYdiat3aGE4ncJhiLRIFDhSHBhaZg5eCgu/YPYAN6jZnrA==} peerDependencies: '@floating-ui/dom': ^1.0.0 - '@tiptap/core': ^3.22.3 - '@tiptap/pm': ^3.22.3 + '@tiptap/core': 3.22.4 + '@tiptap/pm': 3.22.4 - '@tiptap/extension-horizontal-rule@3.22.3': - resolution: {integrity: sha512-wI2bFzScs+KgWeBH/BtypcVKeYelCyqV0RG8nxsZMWtPrBhqixzNd0Oi3gEKtjSjKUqMQ/kjJAIRuESr5UzlHA==} + '@tiptap/extension-horizontal-rule@3.22.4': + resolution: {integrity: sha512-cCI1HekGQwhY/MbgaKQ0R/7HcH5ZM1oFAyI/J72QGLC0XnF403S/OXoHMuBWr1mCu8hNiQWCzeNRJUty0iytNw==} peerDependencies: - '@tiptap/core': ^3.22.3 - '@tiptap/pm': ^3.22.3 + '@tiptap/core': 3.22.4 + '@tiptap/pm': 3.22.4 - '@tiptap/extension-italic@3.22.3': - resolution: {integrity: sha512-LteA4cb4EGCiUtrK2JHvDF/Zg0/YqV4DUyHhAAho+oGEQDupZlsS6m0ia5wQcclkiTLzsoPrwcSNu6RDGQ16wQ==} + '@tiptap/extension-italic@3.22.4': + resolution: {integrity: sha512-fVSDx5AYXgDI3v2zZIqb7V8EewthwM2NJ/ZCX+XaxRsqNEpnjVhgHs7UlvDqK1wj2OJ6zmUNjPtVlAFRxwT+HQ==} peerDependencies: - '@tiptap/core': ^3.22.3 + '@tiptap/core': 3.22.4 - '@tiptap/extension-paragraph@3.22.3': - resolution: {integrity: sha512-oO7rhfyhEuwm+50s9K3GZPjYyEEEvFAvm1wXopvZnhbkBLydIWImBfrZoC5IQh4/sRDlTIjosV2C+ji5y0tUSg==} + '@tiptap/extension-paragraph@3.22.4': + resolution: {integrity: sha512-de6dFkIhigiENESY6rNJ3yTVS/337ybfP30dNPudTwGe9oAu9ZCS+04j6QCvXSjhlI3ULiv7wiSHqrP26Gd+Hw==} peerDependencies: - '@tiptap/core': ^3.22.3 + '@tiptap/core': 3.22.4 - '@tiptap/extension-strike@3.22.3': - resolution: {integrity: sha512-jY2InoUlKkuk5KHoIDGdML1OCA2n6PRHAtxwHNkAmiYh0Khf0zaVPGFpx4dgQrN7W5Q1WE6oBZnjrvy6qb7w0g==} + '@tiptap/extension-strike@3.22.4': + resolution: {integrity: sha512-aRHWQj42HiailXSC9LkKYM3jWMcSeGwOjbqM4PiuxQZmHVDRFmeHkfJItOdn2cSHaO0vuEVK+TvrWUWsBFi3pg==} peerDependencies: - '@tiptap/core': ^3.22.3 + '@tiptap/core': 3.22.4 - '@tiptap/extension-text@3.22.3': - resolution: {integrity: sha512-Q9R7JsTdomP5uUjtPjNKxHT1xoh/i9OJZnmgJLe7FcgZEaPOQ3bWxmKZoLZQfDfZjyB8BtH+Hc7nUvhCMOePxw==} + '@tiptap/extension-text@3.22.4': + resolution: {integrity: sha512-mM69uUW5cSxIhyEpWXi/YcfyupcJMDLCPEfYi62awH0iOP/LRoCv/nHjJq4Hyj/KxRJbe8HKwIUnqaCUf7m5Pg==} peerDependencies: - '@tiptap/core': ^3.22.3 + '@tiptap/core': 3.22.4 - '@tiptap/extension-underline@3.22.3': - resolution: {integrity: sha512-Ch6CBWRa5w90yYSPUW6x9Py9JdrXMqk3pZ9OIlMYD8A7BqyZGfiHerX7XDMYDS09KjyK3U9XH60/zxYOzXdDLA==} + '@tiptap/extension-underline@3.22.4': + resolution: {integrity: sha512-08kGdbhIrA6h10GWXqOkqIveaBj5tmxclK208/nUIAlonI9hPd739vu7fmVtpnmqCnSSNpoRtU4u6Gj5at0ZpA==} peerDependencies: - '@tiptap/core': ^3.22.3 + '@tiptap/core': 3.22.4 - '@tiptap/extensions@3.22.3': - resolution: {integrity: sha512-s5eiMq0m5N6N+W7dU6rd60KgZyyCD7FvtPNNswISfPr12EQwJBfbjWwTqd0UKNzA4fNrhQEERXnzORkykttPeA==} + '@tiptap/extensions@3.22.4': + resolution: {integrity: sha512-fOe8VptJvLPs32bNdUYo8SRyljwqKNQVXWW056VoXIc5en/59OdJlJQVeHI0jRRciH3MtrqODi/gfJR0VHNZ8A==} peerDependencies: - '@tiptap/core': ^3.22.3 - '@tiptap/pm': ^3.22.3 + '@tiptap/core': 3.22.4 + '@tiptap/pm': 3.22.4 - '@tiptap/pm@3.22.3': - resolution: {integrity: sha512-NjfWjZuvrqmpICT+GZWNIjtOdhPyqFKDMtQy7tsQ5rErM9L2ZQdy/+T/BKSO1JdTeBhdg9OP+0yfsqoYp2aT6A==} + '@tiptap/pm@3.22.4': + resolution: {integrity: sha512-hj8Qka6WcHRllHUdeSjDnq2XaisUo4KsoGJc1WcFpoa1Yd+OeD861zUMnV7DFVGdZRy45Obht0CUYJpXQ4yA4w==} - '@tiptap/react@3.22.3': - resolution: {integrity: sha512-6MNr6z0PxwfJFs+BKhHcvPNvY+UV1PXgqzTiTM4Z9guml84iVZxv7ZOCSj1dFYTr3Bf1MiOs4hT1yvBFlTfIaQ==} + '@tiptap/react@3.22.4': + resolution: {integrity: sha512-XIQZPwLakR1t8+Q1UeCpr+kUHDWxpJzGy9r2xUi3mpPd6Wh8dtNltScBkUlCcr0sqc6J1GF6Is02JJVQGmCZMA==} peerDependencies: - '@tiptap/core': ^3.22.3 - '@tiptap/pm': ^3.22.3 + '@tiptap/core': 3.22.4 + '@tiptap/pm': 3.22.4 '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 '@types/react-dom': ^17.0.0 || ^18.0.0 || ^19.0.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0 @@ -10655,9 +10672,6 @@ packages: '@types/json5@0.0.29': resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - '@types/linkify-it@5.0.0': - resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} - '@types/lodash.foreach@4.5.9': resolution: {integrity: sha512-vmq0p/FK66PsALXRmK/qsnlLlCpnudvozWYrxJImHujHhXMADdeoPEY10zwmu26437w85wCvdxUqpFi+ALtkiQ==} @@ -10673,15 +10687,9 @@ packages: '@types/lodash@4.17.24': resolution: {integrity: sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==} - '@types/markdown-it@14.1.2': - resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==} - '@types/mdast@4.0.4': resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - '@types/mdurl@2.0.0': - resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} - '@types/mdx@2.0.13': resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==} @@ -11987,9 +11995,6 @@ packages: countries-list@3.3.0: resolution: {integrity: sha512-XRUjS+dcZuNh/fg3+mka3bXgcg4TbQZ1gaK5IJqO6qulerBANl1bmrd20P2dgmPkBpP+5FnejiSF1gd7bgAg+g==} - crelt@1.0.6: - resolution: {integrity: sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==} - cropperjs@1.5.7: resolution: {integrity: sha512-sGj+G/ofKh+f6A4BtXLJwtcKJgMUsXYVUubfTo9grERiDGXncttefmue/fyQFvn8wfdyoD1KhDRYLfjkJFl0yw==} @@ -12316,6 +12321,10 @@ packages: resolution: {integrity: sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==} engines: {node: '>=10.13.0'} + enhanced-resolve@5.21.0: + resolution: {integrity: sha512-otxSQPw4lkOZWkHpB3zaEQs6gWYEsmX4xQF68ElXC/TWvGxGMSGOvoNbaLXm6/cS/fSfHtsEdw90y20PCd+sCA==} + engines: {node: '>=10.13.0'} + enquirer@2.3.6: resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} engines: {node: '>=8.6'} @@ -13814,9 +13823,6 @@ packages: resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - linkify-it@5.0.0: - resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==} - loader-runner@4.3.1: resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} engines: {node: '>=6.11.5'} @@ -13902,10 +13908,6 @@ packages: resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} engines: {node: '>=16'} - markdown-it@14.1.1: - resolution: {integrity: sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==} - hasBin: true - markdown-table@3.0.4: resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} @@ -13978,9 +13980,6 @@ packages: mdn-data@2.27.1: resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} - mdurl@2.0.0: - resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==} - media-engine@1.0.3: resolution: {integrity: sha512-aa5tG6sDoK+k70B9iEX1NeyfT8ObCKhNDs6lJVpwF6r8vhUfuKMslIcirq6HIUYuuUYLefcEQOn9bSBOvawtwg==} @@ -14853,17 +14852,14 @@ packages: prosemirror-changeset@2.4.1: resolution: {integrity: sha512-96WBLhOaYhJ+kPhLg3uW359Tz6I/MfcrQfL4EGv4SrcqKEMC1gmoGrXHecPE8eOwTVCJ4IwgfzM8fFad25wNfw==} - prosemirror-collab@1.3.1: - resolution: {integrity: sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==} - prosemirror-commands@1.7.1: resolution: {integrity: sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==} prosemirror-dropcursor@1.8.2: resolution: {integrity: sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw==} - prosemirror-gapcursor@1.4.0: - resolution: {integrity: sha512-z00qvurSdCEWUIulij/isHaqu4uLS8r/Fi61IbjdIPJEonQgggbJsLnstW7Lgdk4zQ68/yr6B6bf7sJXowIgdQ==} + prosemirror-gapcursor@1.4.1: + resolution: {integrity: sha512-pMdYaEnjNMSwl11yjEGtgTmLkR08m/Vl+Jj443167p9eB3HVQKhYCc4gmHVDsLPODfZfjr/MmirsdyZziXbQKw==} prosemirror-highlight@0.15.1: resolution: {integrity: sha512-KcJUGNgqLED+eK/cisNtY3M+eDNLkZyWCdyi7B3RoW3rKHnhkKawnJAcr9p1F/e3q+oDB5Y5OiIrC11bxP7tFA==} @@ -14909,24 +14905,12 @@ packages: prosemirror-history@1.5.0: resolution: {integrity: sha512-zlzTiH01eKA55UAf1MEjtssJeHnGxO0j4K4Dpx+gnmX9n+SHNlDqI2oO1Kv1iPN5B1dm5fsljCfqKF9nFL6HRg==} - prosemirror-inputrules@1.5.1: - resolution: {integrity: sha512-7wj4uMjKaXWAQ1CDgxNzNtR9AlsuwzHfdFH1ygEHA2KHF2DOEaXl1CJfNPAKCg9qNEh4rum975QLaCiQPyY6Fw==} - prosemirror-keymap@1.2.3: resolution: {integrity: sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==} - prosemirror-markdown@1.13.2: - resolution: {integrity: sha512-FPD9rHPdA9fqzNmIIDhhnYQ6WgNoSWX9StUZ8LEKapaXU9i6XgykaHKhp6XMyXlOWetmaFgGDS/nu/w9/vUc5g==} - - prosemirror-menu@1.2.5: - resolution: {integrity: sha512-qwXzynnpBIeg1D7BAtjOusR+81xCp53j7iWu/IargiRZqRjGIlQuu1f3jFi+ehrHhWMLoyOQTSRx/IWZJqOYtQ==} - prosemirror-model@1.25.4: resolution: {integrity: sha512-PIM7E43PBxKce8OQeezAs9j4TP+5yDpZVbuurd1h5phUxEKIu+G2a+EUZzIC5nS1mJktDJWzbqS23n1tsAf5QA==} - prosemirror-schema-basic@1.2.4: - resolution: {integrity: sha512-ELxP4TlX3yr2v5rM7Sb70SqStq5NvI15c0j9j/gjsrO5vaw+fnnpovCLEGIcpeGfifkuqJwl4fon6b+KdrODYQ==} - prosemirror-schema-list@1.5.1: resolution: {integrity: sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==} @@ -14936,13 +14920,6 @@ packages: prosemirror-tables@1.8.5: resolution: {integrity: sha512-V/0cDCsHKHe/tfWkeCmthNUcEp1IVO3p6vwN8XtwE9PZQLAZJigbw3QoraAdfJPir4NKJtNvOB8oYGKRl+t0Dw==} - prosemirror-trailing-node@3.0.0: - resolution: {integrity: sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ==} - peerDependencies: - prosemirror-model: ^1.22.1 - prosemirror-state: ^1.4.2 - prosemirror-view: ^1.33.8 - prosemirror-transform@1.12.0: resolution: {integrity: sha512-GxboyN4AMIsoHNtz5uf2r2Ru551i5hWeCMD6E2Ib4Eogqoub0NflniaBPVQ4MrGE5yZ8JV9tUHg9qcZTTrcN4w==} @@ -14959,10 +14936,6 @@ packages: pump@3.0.4: resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} - punycode.js@2.3.1: - resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} - engines: {node: '>=6'} - punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -15813,6 +15786,10 @@ packages: resolution: {integrity: sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==} engines: {node: '>=6'} + tapable@2.3.3: + resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} + engines: {node: '>=6'} + tar-fs@2.1.4: resolution: {integrity: sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==} @@ -15825,8 +15802,8 @@ packages: engines: {node: '>=10'} deprecated: Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - terser-webpack-plugin@5.4.0: - resolution: {integrity: sha512-Bn5vxm48flOIfkdl5CaD2+1CiUVbonWQ3KQPyP7/EuIl9Gbzq/gQFOzaMFUEgVjB1396tcK0SG8XcNJ/2kDH8g==} + terser-webpack-plugin@5.5.0: + resolution: {integrity: sha512-UYhptBwhWvfIjKd/UuFo6D8uq9xpGLDK+z8EDsj/zWhrTaH34cKEbrkMKfV5YWqGBvAYA3tlzZbs2R+qYrbQJA==} engines: {node: '>= 10.13.0'} peerDependencies: '@swc/core': '*' @@ -15841,8 +15818,8 @@ packages: uglify-js: optional: true - terser@5.46.1: - resolution: {integrity: sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==} + terser@5.46.2: + resolution: {integrity: sha512-uxfo9fPcSgLDYob/w1FuL0c99MWiJDnv+5qXSQc5+Ki5NjVNsYi66INnMFBjf6uFz6OnX12piJQPF4IpjJTNTw==} engines: {node: '>=10'} hasBin: true @@ -16055,9 +16032,6 @@ packages: engines: {node: '>=14.17'} hasBin: true - uc.micro@2.1.0: - resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==} - ufo@1.6.3: resolution: {integrity: sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==} @@ -16425,8 +16399,8 @@ packages: resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} engines: {node: '>=20'} - webpack-sources@3.3.4: - resolution: {integrity: sha512-7tP1PdV4vF+lYPnkMR0jMY5/la2ub5Fc/8VQrrU+lXkiM6C4TjVfGw7iKfyhnTQOsD+6Q/iKw0eFciziRgD58Q==} + webpack-sources@3.4.0: + resolution: {integrity: sha512-gHwIe1cgBvvfLeu1Yz/dcFpmHfKDVxxyqI+kzqmuxZED81z2ChxpyqPaWcNqigPywhaEke7AjSGga+kxY55gjQ==} engines: {node: '>=10.13.0'} webpack@5.105.4: @@ -18985,17 +18959,17 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@liveblocks/react-blocknote@3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)': + '@liveblocks/react-blocknote@3.17.0(@blocknote/core@packages+core)(@blocknote/react@packages+react)(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4)(@tiptap/react@3.22.4(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)': dependencies: '@blocknote/core': link:packages/core '@blocknote/react': link:packages/react '@liveblocks/client': 3.17.0(@types/json-schema@7.0.15) '@liveblocks/core': 3.17.0(@types/json-schema@7.0.15) '@liveblocks/react': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.5) - '@liveblocks/react-tiptap': 3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30)) + '@liveblocks/react-tiptap': 3.17.0(@tiptap/pm@3.22.4)(@tiptap/react@3.22.4(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30)) '@liveblocks/react-ui': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@liveblocks/yjs': 3.17.0(@types/json-schema@7.0.15)(yjs@13.6.30) - '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) + '@tiptap/core': 3.22.4(@tiptap/pm@3.22.4) react: 19.2.5 react-dom: 19.2.5(react@19.2.5) vitest-tsconfig-paths: 3.4.1 @@ -19014,7 +18988,7 @@ snapshots: - y-protocols - yjs - '@liveblocks/react-tiptap@3.17.0(@tiptap/pm@3.22.3)(@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))': + '@liveblocks/react-tiptap@3.17.0(@tiptap/pm@3.22.4)(@tiptap/react@3.22.4(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@tiptap/suggestion@2.27.2(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4))(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(y-protocols@1.0.7(yjs@13.6.30))': dependencies: '@floating-ui/react-dom': 2.1.8(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@liveblocks/client': 3.17.0(@types/json-schema@7.0.15) @@ -19022,10 +18996,10 @@ snapshots: '@liveblocks/react': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react@19.2.5) '@liveblocks/react-ui': 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@liveblocks/yjs': 3.17.0(@types/json-schema@7.0.15)(yjs@13.6.30) - '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) - '@tiptap/pm': 3.22.3 - '@tiptap/react': 3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@tiptap/suggestion': 2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3) + '@tiptap/core': 3.22.4(@tiptap/pm@3.22.4) + '@tiptap/pm': 3.22.4 + '@tiptap/react': 3.22.4(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@tiptap/suggestion': 2.27.2(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4) cmdk: 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) radix-ui: 1.4.3(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 @@ -19708,11 +19682,11 @@ snapshots: '@pkgjs/parseargs@0.11.0': optional: true - '@playwright/experimental-ct-core@1.51.1(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.1)': + '@playwright/experimental-ct-core@1.51.1(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.2)': dependencies: playwright: 1.51.1 playwright-core: 1.51.1 - vite: 5.4.21(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.1) + vite: 5.4.21(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.2) transitivePeerDependencies: - '@types/node' - less @@ -19723,10 +19697,10 @@ snapshots: - sugarss - terser - '@playwright/experimental-ct-react@1.51.1(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.1)(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@playwright/experimental-ct-react@1.51.1(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.2)(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))': dependencies: - '@playwright/experimental-ct-core': 1.51.1(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.1) - '@vitejs/plugin-react': 4.7.0(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + '@playwright/experimental-ct-core': 1.51.1(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.2) + '@vitejs/plugin-react': 4.7.0(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) transitivePeerDependencies: - '@types/node' - less @@ -19743,11 +19717,11 @@ snapshots: dependencies: playwright: 1.51.1 - '@polar-sh/better-auth@1.8.3(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))))(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1)(zod@4.3.6)': + '@polar-sh/better-auth@1.8.3(@polar-sh/sdk@0.42.5)(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))))(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1)(zod@4.3.6)': dependencies: '@polar-sh/checkout': 0.2.0(@stripe/react-stripe-js@4.0.2(@stripe/stripe-js@7.9.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@stripe/stripe-js@7.9.0)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react-is@19.2.4)(react@19.2.5)(redux@5.0.1) '@polar-sh/sdk': 0.42.5 - better-auth: 1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))) + better-auth: 1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))) zod: 4.3.6 transitivePeerDependencies: - '@stripe/react-stripe-js' @@ -20872,8 +20846,6 @@ snapshots: react: 19.2.5 react-redux: 9.2.0(@types/react@19.2.14)(react@19.2.5)(redux@5.0.1) - '@remirror/core-constants@3.0.0': {} - '@remix-run/router@1.23.2': {} '@rolldown/binding-android-arm64@1.0.0-rc.15': @@ -21767,12 +21739,12 @@ snapshots: postcss: 8.5.8 tailwindcss: 4.2.2 - '@tailwindcss/vite@4.2.2(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@tailwindcss/vite@4.2.2(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@tailwindcss/node': 4.2.2 '@tailwindcss/oxide': 4.2.2 tailwindcss: 4.2.2 - vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) '@tanstack/react-store@0.7.7(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: @@ -21812,87 +21784,81 @@ snapshots: '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) - '@tiptap/core@3.22.3(@tiptap/pm@3.22.3)': + '@tiptap/core@3.22.4(@tiptap/pm@3.22.4)': dependencies: - '@tiptap/pm': 3.22.3 + '@tiptap/pm': 3.22.4 - '@tiptap/extension-bold@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))': + '@tiptap/extension-bold@3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))': dependencies: - '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) + '@tiptap/core': 3.22.4(@tiptap/pm@3.22.4) - '@tiptap/extension-bubble-menu@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)': + '@tiptap/extension-bubble-menu@3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4)': dependencies: '@floating-ui/dom': 1.7.6 - '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) - '@tiptap/pm': 3.22.3 + '@tiptap/core': 3.22.4(@tiptap/pm@3.22.4) + '@tiptap/pm': 3.22.4 optional: true - '@tiptap/extension-code@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))': + '@tiptap/extension-code@3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))': dependencies: - '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) + '@tiptap/core': 3.22.4(@tiptap/pm@3.22.4) - '@tiptap/extension-floating-menu@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)': + '@tiptap/extension-floating-menu@3.22.4(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4)': dependencies: '@floating-ui/dom': 1.7.6 - '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) - '@tiptap/pm': 3.22.3 + '@tiptap/core': 3.22.4(@tiptap/pm@3.22.4) + '@tiptap/pm': 3.22.4 optional: true - '@tiptap/extension-horizontal-rule@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)': + '@tiptap/extension-horizontal-rule@3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4)': dependencies: - '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) - '@tiptap/pm': 3.22.3 + '@tiptap/core': 3.22.4(@tiptap/pm@3.22.4) + '@tiptap/pm': 3.22.4 - '@tiptap/extension-italic@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))': + '@tiptap/extension-italic@3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))': dependencies: - '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) + '@tiptap/core': 3.22.4(@tiptap/pm@3.22.4) - '@tiptap/extension-paragraph@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))': + '@tiptap/extension-paragraph@3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))': dependencies: - '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) + '@tiptap/core': 3.22.4(@tiptap/pm@3.22.4) - '@tiptap/extension-strike@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))': + '@tiptap/extension-strike@3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))': dependencies: - '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) + '@tiptap/core': 3.22.4(@tiptap/pm@3.22.4) - '@tiptap/extension-text@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))': + '@tiptap/extension-text@3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))': dependencies: - '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) + '@tiptap/core': 3.22.4(@tiptap/pm@3.22.4) - '@tiptap/extension-underline@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))': + '@tiptap/extension-underline@3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))': dependencies: - '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) + '@tiptap/core': 3.22.4(@tiptap/pm@3.22.4) - '@tiptap/extensions@3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)': + '@tiptap/extensions@3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4)': dependencies: - '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) - '@tiptap/pm': 3.22.3 + '@tiptap/core': 3.22.4(@tiptap/pm@3.22.4) + '@tiptap/pm': 3.22.4 - '@tiptap/pm@3.22.3': + '@tiptap/pm@3.22.4': dependencies: prosemirror-changeset: 2.4.1 - prosemirror-collab: 1.3.1 prosemirror-commands: 1.7.1 prosemirror-dropcursor: 1.8.2 - prosemirror-gapcursor: 1.4.0 + prosemirror-gapcursor: 1.4.1 prosemirror-history: 1.5.0 - prosemirror-inputrules: 1.5.1 prosemirror-keymap: 1.2.3 - prosemirror-markdown: 1.13.2 - prosemirror-menu: 1.2.5 prosemirror-model: 1.25.4 - prosemirror-schema-basic: 1.2.4 prosemirror-schema-list: 1.5.1 prosemirror-state: 1.4.4 prosemirror-tables: 1.8.5 - prosemirror-trailing-node: 3.0.0(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8) prosemirror-transform: 1.12.0 prosemirror-view: 1.41.8 - '@tiptap/react@3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': + '@tiptap/react@3.22.4(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': dependencies: - '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) - '@tiptap/pm': 3.22.3 + '@tiptap/core': 3.22.4(@tiptap/pm@3.22.4) + '@tiptap/pm': 3.22.4 '@types/react': 19.2.14 '@types/react-dom': 19.2.3(@types/react@19.2.14) '@types/use-sync-external-store': 0.0.6 @@ -21901,15 +21867,15 @@ snapshots: react-dom: 19.2.5(react@19.2.5) use-sync-external-store: 1.6.0(react@19.2.5) optionalDependencies: - '@tiptap/extension-bubble-menu': 3.22.3(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3) - '@tiptap/extension-floating-menu': 3.22.3(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3) + '@tiptap/extension-bubble-menu': 3.22.4(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4) + '@tiptap/extension-floating-menu': 3.22.4(@floating-ui/dom@1.7.6)(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4) transitivePeerDependencies: - '@floating-ui/dom' - '@tiptap/suggestion@2.27.2(@tiptap/core@3.22.3(@tiptap/pm@3.22.3))(@tiptap/pm@3.22.3)': + '@tiptap/suggestion@2.27.2(@tiptap/core@3.22.4(@tiptap/pm@3.22.4))(@tiptap/pm@3.22.4)': dependencies: - '@tiptap/core': 3.22.3(@tiptap/pm@3.22.3) - '@tiptap/pm': 3.22.3 + '@tiptap/core': 3.22.4(@tiptap/pm@3.22.4) + '@tiptap/pm': 3.22.4 '@transloadit/prettier-bytes@0.3.5': {} @@ -22058,8 +22024,6 @@ snapshots: '@types/json5@0.0.29': {} - '@types/linkify-it@5.0.0': {} - '@types/lodash.foreach@4.5.9': dependencies: '@types/lodash': 4.17.24 @@ -22078,17 +22042,10 @@ snapshots: '@types/lodash@4.17.24': {} - '@types/markdown-it@14.1.2': - dependencies: - '@types/linkify-it': 5.0.0 - '@types/mdurl': 2.0.0 - '@types/mdast@4.0.4': dependencies: '@types/unist': 3.0.3 - '@types/mdurl@2.0.0': {} - '@types/mdx@2.0.13': {} '@types/ms@2.1.0': {} @@ -22578,12 +22535,12 @@ snapshots: '@vercel/oidc@3.0.5': {} - '@vitejs/devtools-kit@0.1.13(typescript@5.9.3)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0)': + '@vitejs/devtools-kit@0.1.13(typescript@5.9.3)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0)': dependencies: '@vitejs/devtools-rpc': 0.1.13(typescript@5.9.3)(ws@8.20.0) birpc: 4.0.0 ohash: 2.0.11 - vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - typescript - ws @@ -22600,7 +22557,7 @@ snapshots: transitivePeerDependencies: - typescript - '@vitejs/plugin-react@4.7.0(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitejs/plugin-react@4.7.0(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.29.0) @@ -22608,21 +22565,21 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.27 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - supports-color - '@vitejs/plugin-react@6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitejs/plugin-react@6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.7 - vite: 8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) optionalDependencies: babel-plugin-react-compiler: 1.0.0 - '@vitejs/plugin-react@6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitejs/plugin-react@6.0.1(babel-plugin-react-compiler@1.0.0)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@rolldown/pluginutils': 1.0.0-rc.7 - vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) optionalDependencies: babel-plugin-react-compiler: 1.0.0 @@ -22635,33 +22592,33 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@vitest/spy': 4.1.2 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.11.5(@types/node@20.19.37)(typescript@5.9.3) - vite: 8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) - '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@vitest/spy': 4.1.2 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.11.5(@types/node@25.5.0)(typescript@5.9.3) - vite: 8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) optional: true - '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitest/mocker@4.1.2(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))': dependencies: '@vitest/spy': 4.1.2 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: msw: 2.11.5(@types/node@25.6.0)(typescript@5.9.3) - vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) '@vitest/pretty-format@4.1.2': dependencies: @@ -23126,7 +23083,7 @@ snapshots: baseline-browser-mapping@2.10.17: {} - better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))): + better-auth@1.4.22(better-sqlite3@12.8.0)(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(pg@8.20.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))): dependencies: '@better-auth/core': 1.4.22(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.8(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0) '@better-auth/telemetry': 1.4.22(@better-auth/core@1.4.22(@better-auth/utils@0.3.0)(@better-fetch/fetch@1.1.21)(better-call@1.1.8(zod@4.3.6))(jose@6.2.2)(kysely@0.28.15)(nanostores@1.2.0)) @@ -23146,7 +23103,7 @@ snapshots: pg: 8.20.0 react: 19.2.5 react-dom: 19.2.5(react@19.2.5) - vitest: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + vitest: 4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) better-call@1.1.8(zod@4.3.6): dependencies: @@ -23507,8 +23464,6 @@ snapshots: countries-list@3.3.0: {} - crelt@1.0.6: {} - cropperjs@1.5.7: {} cross-spawn@7.0.6: @@ -23822,6 +23777,11 @@ snapshots: graceful-fs: 4.2.11 tapable: 2.3.2 + enhanced-resolve@5.21.0: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.3 + enquirer@2.3.6: dependencies: ansi-colors: 4.1.3 @@ -24057,8 +24017,8 @@ snapshots: '@next/eslint-plugin-next': 16.2.2 eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-react: 7.37.5(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-react-hooks: 7.0.1(eslint@9.39.4(jiti@2.6.1)) @@ -24107,7 +24067,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 @@ -24118,7 +24078,7 @@ snapshots: tinyglobby: 0.2.16 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -24132,14 +24092,14 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -24180,7 +24140,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -24191,7 +24151,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -24728,7 +24688,7 @@ snapshots: transitivePeerDependencies: - supports-color - fumadocs-mdx@14.2.11(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + fumadocs-mdx@14.2.11(@types/mdast@4.0.4)(@types/mdx@2.0.13)(@types/react@19.2.14)(fumadocs-core@16.5.0(@types/react@19.2.14)(lucide-react@0.562.0(react@19.2.5))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react-dom@19.2.5(react@19.2.5))(react@19.2.5)(zod@4.3.6))(next@16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(react@19.2.5)(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@mdx-js/mdx': 3.1.1 '@standard-schema/spec': 1.1.0 @@ -24754,7 +24714,7 @@ snapshots: '@types/react': 19.2.14 next: 16.2.3(@babel/core@7.29.0)(@opentelemetry/api@1.9.1)(@playwright/test@1.51.1)(babel-plugin-react-compiler@1.0.0)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) react: 19.2.5 - vite: 8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - supports-color @@ -25782,10 +25742,6 @@ snapshots: lines-and-columns@2.0.3: {} - linkify-it@5.0.0: - dependencies: - uc.micro: 2.1.0 - loader-runner@4.3.1: {} locate-path@6.0.0: @@ -25858,15 +25814,6 @@ snapshots: markdown-extensions@2.0.0: {} - markdown-it@14.1.1: - dependencies: - argparse: 2.0.1 - entities: 4.5.0 - linkify-it: 5.0.0 - mdurl: 2.0.0 - punycode.js: 2.3.1 - uc.micro: 2.1.0 - markdown-table@3.0.4: {} markdown-to-jsx@8.0.0(react@19.2.5): @@ -26042,8 +25989,6 @@ snapshots: mdn-data@2.27.1: {} - mdurl@2.0.0: {} - media-engine@1.0.3: {} memoize-one@6.0.0: {} @@ -27105,10 +27050,6 @@ snapshots: dependencies: prosemirror-transform: 1.12.0 - prosemirror-collab@1.3.1: - dependencies: - prosemirror-state: 1.4.4 - prosemirror-commands@1.7.1: dependencies: prosemirror-model: 1.25.4 @@ -27121,7 +27062,7 @@ snapshots: prosemirror-transform: 1.12.0 prosemirror-view: 1.41.8 - prosemirror-gapcursor@1.4.0: + prosemirror-gapcursor@1.4.1: dependencies: prosemirror-keymap: 1.2.3 prosemirror-model: 1.25.4 @@ -27144,37 +27085,15 @@ snapshots: prosemirror-view: 1.41.8 rope-sequence: 1.3.4 - prosemirror-inputrules@1.5.1: - dependencies: - prosemirror-state: 1.4.4 - prosemirror-transform: 1.12.0 - prosemirror-keymap@1.2.3: dependencies: prosemirror-state: 1.4.4 w3c-keyname: 2.2.8 - prosemirror-markdown@1.13.2: - dependencies: - '@types/markdown-it': 14.1.2 - markdown-it: 14.1.1 - prosemirror-model: 1.25.4 - - prosemirror-menu@1.2.5: - dependencies: - crelt: 1.0.6 - prosemirror-commands: 1.7.1 - prosemirror-history: 1.5.0 - prosemirror-state: 1.4.4 - prosemirror-model@1.25.4: dependencies: orderedmap: 2.1.1 - prosemirror-schema-basic@1.2.4: - dependencies: - prosemirror-model: 1.25.4 - prosemirror-schema-list@1.5.1: dependencies: prosemirror-model: 1.25.4 @@ -27195,14 +27114,6 @@ snapshots: prosemirror-transform: 1.12.0 prosemirror-view: 1.41.8 - prosemirror-trailing-node@3.0.0(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8): - dependencies: - '@remirror/core-constants': 3.0.0 - escape-string-regexp: 4.0.0 - prosemirror-model: 1.25.4 - prosemirror-state: 1.4.4 - prosemirror-view: 1.41.8 - prosemirror-transform@1.12.0: dependencies: prosemirror-model: 1.25.4 @@ -27222,8 +27133,6 @@ snapshots: end-of-stream: 1.4.5 once: 1.4.0 - punycode.js@2.3.1: {} - punycode@2.3.1: {} queue-microtask@1.2.3: {} @@ -28364,6 +28273,8 @@ snapshots: tapable@2.3.2: {} + tapable@2.3.3: {} + tar-fs@2.1.4: dependencies: chownr: 1.1.4 @@ -28389,17 +28300,17 @@ snapshots: yallist: 4.0.0 optional: true - terser-webpack-plugin@5.4.0(esbuild@0.27.5)(webpack@5.105.4(esbuild@0.27.5)): + terser-webpack-plugin@5.5.0(esbuild@0.27.5)(webpack@5.105.4(esbuild@0.27.5)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 - terser: 5.46.1 + terser: 5.46.2 webpack: 5.105.4(esbuild@0.27.5) optionalDependencies: esbuild: 0.27.5 - terser@5.46.1: + terser@5.46.2: dependencies: '@jridgewell/source-map': 0.3.11 acorn: 8.16.0 @@ -28611,8 +28522,6 @@ snapshots: typescript@5.9.3: {} - uc.micro@2.1.0: {} - ufo@1.6.3: {} uint8array-extras@1.5.0: {} @@ -28838,13 +28747,13 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 - vite-node@6.0.0(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): + vite-node@6.0.0(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3): dependencies: cac: 7.0.0 es-module-lexer: 2.0.0 obug: 2.1.1 pathe: 2.0.3 - vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - '@types/node' - '@vitejs/devtools' @@ -28859,33 +28768,33 @@ snapshots: - tsx - yaml - vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@rollup/pluginutils': 4.2.1 '@types/eslint': 8.56.12 eslint: 8.57.1 rollup: 2.80.0 - vite: 8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) - vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vite-plugin-eslint@1.8.1(eslint@8.57.1)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@rollup/pluginutils': 4.2.1 '@types/eslint': 8.56.12 eslint: 8.57.1 rollup: 2.80.0 - vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) - vite-plugin-externalize-deps@0.10.0(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vite-plugin-externalize-deps@0.10.0(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)): dependencies: - vite: 8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) - vite-plugin-externalize-deps@0.10.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vite-plugin-externalize-deps@0.10.0(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)): dependencies: - vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) - vite-plugin-inspect@12.0.0-beta.1(typescript@5.9.3)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0): + vite-plugin-inspect@12.0.0-beta.1(typescript@5.9.3)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0): dependencies: - '@vitejs/devtools-kit': 0.1.13(typescript@5.9.3)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0) + '@vitejs/devtools-kit': 0.1.13(typescript@5.9.3)(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))(ws@8.20.0) ansis: 4.2.0 error-stack-parser-es: 1.0.5 obug: 2.1.1 @@ -28894,12 +28803,12 @@ snapshots: perfect-debounce: 2.1.0 sirv: 3.0.2 unplugin-utils: 0.3.1 - vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) transitivePeerDependencies: - typescript - ws - vite@5.4.21(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.1): + vite@5.4.21(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.2): dependencies: esbuild: 0.21.5 postcss: 8.5.8 @@ -28908,9 +28817,9 @@ snapshots: '@types/node': 20.19.37 fsevents: 2.3.3 lightningcss: 1.32.0 - terser: 5.46.1 + terser: 5.46.2 - vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): + vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 @@ -28922,11 +28831,11 @@ snapshots: esbuild: 0.27.5 fsevents: 2.3.3 jiti: 2.6.1 - terser: 5.46.1 + terser: 5.46.2 tsx: 4.21.0 yaml: 2.8.3 - vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): + vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 @@ -28938,12 +28847,12 @@ snapshots: esbuild: 0.27.5 fsevents: 2.3.3 jiti: 2.6.1 - terser: 5.46.1 + terser: 5.46.2 tsx: 4.21.0 yaml: 2.8.3 optional: true - vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3): + vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 @@ -28955,7 +28864,7 @@ snapshots: esbuild: 0.27.5 fsevents: 2.3.3 jiti: 2.6.1 - terser: 5.46.1 + terser: 5.46.2 tsx: 4.21.0 yaml: 2.8.3 @@ -28968,10 +28877,10 @@ snapshots: transitivePeerDependencies: - supports-color - vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@20.19.37)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@20.19.37)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@vitest/expect': 4.1.2 - '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@20.19.37)(typescript@5.9.3))(vite@8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/pretty-format': 4.1.2 '@vitest/runner': 4.1.2 '@vitest/snapshot': 4.1.2 @@ -28988,7 +28897,7 @@ snapshots: tinyexec: 1.0.4 tinyglobby: 0.2.16 tinyrainbow: 3.1.0 - vite: 8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@20.19.37)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.1 @@ -28997,10 +28906,10 @@ snapshots: transitivePeerDependencies: - msw - vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.5.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@vitest/expect': 4.1.2 - '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@25.5.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/pretty-format': 4.1.2 '@vitest/runner': 4.1.2 '@vitest/snapshot': 4.1.2 @@ -29017,7 +28926,7 @@ snapshots: tinyexec: 1.0.4 tinyglobby: 0.2.16 tinyrainbow: 3.1.0 - vite: 8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@25.5.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.1 @@ -29027,10 +28936,10 @@ snapshots: - msw optional: true - vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@25.0.1(canvas@2.11.2))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@vitest/expect': 4.1.2 - '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/pretty-format': 4.1.2 '@vitest/runner': 4.1.2 '@vitest/snapshot': 4.1.2 @@ -29047,7 +28956,7 @@ snapshots: tinyexec: 1.0.4 tinyglobby: 0.2.16 tinyrainbow: 3.1.0 - vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.1 @@ -29056,10 +28965,10 @@ snapshots: transitivePeerDependencies: - msw - vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)): + vitest@4.1.2(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(jsdom@29.0.2(@noble/hashes@2.0.1)(canvas@3.1.0))(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)): dependencies: '@vitest/expect': 4.1.2 - '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/mocker': 4.1.2(msw@2.11.5(@types/node@25.6.0)(typescript@5.9.3))(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) '@vitest/pretty-format': 4.1.2 '@vitest/runner': 4.1.2 '@vitest/snapshot': 4.1.2 @@ -29076,7 +28985,7 @@ snapshots: tinyexec: 1.0.4 tinyglobby: 0.2.16 tinyrainbow: 3.1.0 - vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.1 @@ -29120,7 +29029,7 @@ snapshots: webidl-conversions@8.0.1: {} - webpack-sources@3.3.4: {} + webpack-sources@3.4.0: {} webpack@5.105.4(esbuild@0.27.5): dependencies: @@ -29134,7 +29043,7 @@ snapshots: acorn-import-phases: 1.0.4(acorn@8.16.0) browserslist: 4.28.2 chrome-trace-event: 1.0.4 - enhanced-resolve: 5.20.1 + enhanced-resolve: 5.21.0 es-module-lexer: 2.0.0 eslint-scope: 5.1.1 events: 3.3.0 @@ -29145,10 +29054,10 @@ snapshots: mime-types: 2.1.35 neo-async: 2.6.2 schema-utils: 4.3.3 - tapable: 2.3.2 - terser-webpack-plugin: 5.4.0(esbuild@0.27.5)(webpack@5.105.4(esbuild@0.27.5)) + tapable: 2.3.3 + terser-webpack-plugin: 5.5.0(esbuild@0.27.5)(webpack@5.105.4(esbuild@0.27.5)) watchpack: 2.5.1 - webpack-sources: 3.3.4 + webpack-sources: 3.4.0 transitivePeerDependencies: - '@swc/core' - esbuild From f0a4f6bdb2ba731ac1d7bc91f76b8ae3baa86136 Mon Sep 17 00:00:00 2001 From: Nick the Sick Date: Fri, 24 Apr 2026 15:01:00 +0200 Subject: [PATCH 26/76] chore(release): publish 0.49.0 --- CHANGELOG.md | 25 ++++++++++ packages/ariakit/package.json | 6 +-- packages/code-block/package.json | 6 +-- packages/core/package.json | 2 +- packages/dev-scripts/package.json | 2 +- packages/mantine/package.json | 6 +-- packages/react/package.json | 4 +- packages/server-util/package.json | 6 +-- packages/shadcn/package.json | 6 +-- packages/xl-ai-server/package.json | 4 +- packages/xl-ai/package.json | 8 +-- packages/xl-docx-exporter/package.json | 6 +-- packages/xl-email-exporter/package.json | 6 +-- packages/xl-multi-column/package.json | 6 +-- packages/xl-odt-exporter/package.json | 6 +-- packages/xl-pdf-exporter/package.json | 8 +-- pnpm-lock.yaml | 66 ++++++++++++------------- 17 files changed, 99 insertions(+), 74 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1731c4b7ca..e6a925bbe7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,28 @@ +## 0.49.0 (2026-04-24) + +### 🚀 Features + +- simplify links by inlining it to BlockNote ([#2623](https://github.com/TypeCellOS/BlockNote/pull/2623)) +- add Unicode quotation mark input rule for quote blocks ([#2673](https://github.com/TypeCellOS/BlockNote/pull/2673)) + +### 🩹 Fixes + +- Inserting link removes comment & add comment button click buggy ([#2620](https://github.com/TypeCellOS/BlockNote/pull/2620), [#2573](https://github.com/TypeCellOS/BlockNote/issues/2573)) +- `useEditorDOMElement` hook ([#2619](https://github.com/TypeCellOS/BlockNote/pull/2619)) +- text color was not applying to table block ([#2663](https://github.com/TypeCellOS/BlockNote/pull/2663)) +- Drag preview blocking drops when overlapping the editor (BLO-996) ([#2670](https://github.com/TypeCellOS/BlockNote/pull/2670)) +- Drag & drop of blocks without inline content opens formatting toolbar (BLO-1116) ([#2628](https://github.com/TypeCellOS/BlockNote/pull/2628), [#2603](https://github.com/TypeCellOS/BlockNote/issues/2603)) +- save file caption/name on every keystroke instead of on close ([#2575](https://github.com/TypeCellOS/BlockNote/pull/2575)) +- prevent FloatingFocusManager from resetting editor selection ([#2525](https://github.com/TypeCellOS/BlockNote/pull/2525), [#2664](https://github.com/TypeCellOS/BlockNote/pull/2664)) + +### ❤️ Thank You + +- Matthew Lipski @matthewlipski +- miadnguyen @miadnguyen +- mianguyen +- Nick Perez +- Yousef + ## 0.48.1 (2026-04-16) ### 🩹 Fixes diff --git a/packages/ariakit/package.json b/packages/ariakit/package.json index 856fc52e8b..19e22dd004 100644 --- a/packages/ariakit/package.json +++ b/packages/ariakit/package.json @@ -11,7 +11,7 @@ "directory": "packages/ariakit" }, "license": "MPL-2.0", - "version": "0.48.1", + "version": "0.49.0", "files": [ "dist", "types", @@ -57,8 +57,8 @@ }, "dependencies": { "@ariakit/react": "^0.4.19", - "@blocknote/core": "0.48.1", - "@blocknote/react": "0.48.1" + "@blocknote/core": "0.49.0", + "@blocknote/react": "0.49.0" }, "devDependencies": { "@types/react": "^19.2.3", diff --git a/packages/code-block/package.json b/packages/code-block/package.json index 10a4c925ac..c1e5ace389 100644 --- a/packages/code-block/package.json +++ b/packages/code-block/package.json @@ -9,7 +9,7 @@ "directory": "packages/code-block" }, "license": "MPL-2.0", - "version": "0.48.1", + "version": "0.49.0", "files": [ "dist", "types", @@ -49,7 +49,7 @@ "test-watch": "vitest watch" }, "dependencies": { - "@blocknote/core": "0.48.1", + "@blocknote/core": "0.49.0", "@shikijs/core": "^4", "@shikijs/engine-javascript": "^4", "@shikijs/langs-precompiled": "^4", @@ -65,7 +65,7 @@ "vitest": "^4.1.2" }, "peerDependencies": { - "@blocknote/core": "0.48.1" + "@blocknote/core": "0.49.0" }, "eslintConfig": { "extends": [ diff --git a/packages/core/package.json b/packages/core/package.json index 0cc8f53bc0..d64e402df8 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -11,7 +11,7 @@ "directory": "packages/core" }, "license": "MPL-2.0", - "version": "0.48.1", + "version": "0.49.0", "files": [ "dist", "types", diff --git a/packages/dev-scripts/package.json b/packages/dev-scripts/package.json index 11dbed3d91..5af279ab58 100644 --- a/packages/dev-scripts/package.json +++ b/packages/dev-scripts/package.json @@ -8,7 +8,7 @@ "directory": "packages/dev-scripts" }, "license": "MPL-2.0", - "version": "0.48.1", + "version": "0.49.0", "description": "", "type": "module", "scripts": { diff --git a/packages/mantine/package.json b/packages/mantine/package.json index 4dd1d60a54..69d808136a 100644 --- a/packages/mantine/package.json +++ b/packages/mantine/package.json @@ -11,7 +11,7 @@ "directory": "packages/mantine" }, "license": "MPL-2.0", - "version": "0.48.1", + "version": "0.49.0", "files": [ "dist", "types", @@ -61,8 +61,8 @@ "clean": "rimraf dist && rimraf types" }, "dependencies": { - "@blocknote/core": "0.48.1", - "@blocknote/react": "0.48.1", + "@blocknote/core": "0.49.0", + "@blocknote/react": "0.49.0", "react-icons": "^5.5.0" }, "devDependencies": { diff --git a/packages/react/package.json b/packages/react/package.json index 3d006e0c51..bdc45f9f3c 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -11,7 +11,7 @@ "directory": "packages/react" }, "license": "MPL-2.0", - "version": "0.48.1", + "version": "0.49.0", "files": [ "dist", "types", @@ -58,7 +58,7 @@ "clean": "rimraf dist && rimraf types" }, "dependencies": { - "@blocknote/core": "0.48.1", + "@blocknote/core": "0.49.0", "@emoji-mart/data": "^1.2.1", "@floating-ui/react": "^0.27.18", "@floating-ui/utils": "^0.2.10", diff --git a/packages/server-util/package.json b/packages/server-util/package.json index 2488074ef8..e165d4945e 100644 --- a/packages/server-util/package.json +++ b/packages/server-util/package.json @@ -11,7 +11,7 @@ "directory": "packages/server-util" }, "license": "MPL-2.0", - "version": "0.48.1", + "version": "0.49.0", "files": [ "dist", "types", @@ -56,8 +56,8 @@ "test-watch": "vitest watch" }, "dependencies": { - "@blocknote/core": "0.48.1", - "@blocknote/react": "0.48.1", + "@blocknote/core": "0.49.0", + "@blocknote/react": "0.49.0", "@tiptap/core": "^3.13.0", "@tiptap/pm": "^3.13.0", "jsdom": "^25.0.1", diff --git a/packages/shadcn/package.json b/packages/shadcn/package.json index b88d7f6024..b0d39397d4 100644 --- a/packages/shadcn/package.json +++ b/packages/shadcn/package.json @@ -11,7 +11,7 @@ "directory": "packages/shadcn" }, "license": "MPL-2.0", - "version": "0.48.1", + "version": "0.49.0", "files": [ "dist", "types", @@ -56,8 +56,8 @@ "clean": "rimraf dist && rimraf types" }, "dependencies": { - "@blocknote/core": "0.48.1", - "@blocknote/react": "0.48.1", + "@blocknote/core": "0.49.0", + "@blocknote/react": "0.49.0", "@radix-ui/react-avatar": "^1.1.10", "@radix-ui/react-dropdown-menu": "^2.1.16", "@radix-ui/react-label": "^2.1.7", diff --git a/packages/xl-ai-server/package.json b/packages/xl-ai-server/package.json index fe781e4ecb..95fa5f9b8f 100644 --- a/packages/xl-ai-server/package.json +++ b/packages/xl-ai-server/package.json @@ -3,7 +3,7 @@ "homepage": "https://github.com/TypeCellOS/BlockNote", "private": true, "license": "GPL-3.0 OR PROPRIETARY", - "version": "0.48.1", + "version": "0.49.0", "files": [ "dist", "types", @@ -49,7 +49,7 @@ "@ai-sdk/mistral": "^3.0.2", "@ai-sdk/openai": "^3.0.2", "@ai-sdk/openai-compatible": "^2.0.2", - "@blocknote/xl-ai": "0.48.1", + "@blocknote/xl-ai": "0.49.0", "@hono/node-server": "^1.19.5", "ai": "^6.0.5", "hono": "^4.10.3" diff --git a/packages/xl-ai/package.json b/packages/xl-ai/package.json index 81e74f0479..da7de9c1fd 100644 --- a/packages/xl-ai/package.json +++ b/packages/xl-ai/package.json @@ -11,7 +11,7 @@ "directory": "packages/xl-ai" }, "license": "GPL-3.0 OR PROPRIETARY", - "version": "0.48.1", + "version": "0.49.0", "files": [ "dist", "types", @@ -71,9 +71,9 @@ "dependencies": { "@ai-sdk/provider-utils": "^4.0.2", "@ai-sdk/react": "^3.0.5", - "@blocknote/core": "0.48.1", - "@blocknote/mantine": "0.48.1", - "@blocknote/react": "0.48.1", + "@blocknote/core": "0.49.0", + "@blocknote/mantine": "0.49.0", + "@blocknote/react": "0.49.0", "@floating-ui/react": "^0.27.18", "@handlewithcare/prosemirror-suggest-changes": "^0.1.8", "@tiptap/core": "^3.13.0", diff --git a/packages/xl-docx-exporter/package.json b/packages/xl-docx-exporter/package.json index fe45561eda..85f2637bf2 100644 --- a/packages/xl-docx-exporter/package.json +++ b/packages/xl-docx-exporter/package.json @@ -9,7 +9,7 @@ "directory": "packages/xl-docx-exporter" }, "license": "GPL-3.0 OR PROPRIETARY", - "version": "0.48.1", + "version": "0.49.0", "files": [ "dist", "types", @@ -57,8 +57,8 @@ "email": "email dev" }, "dependencies": { - "@blocknote/core": "0.48.1", - "@blocknote/xl-multi-column": "0.48.1", + "@blocknote/core": "0.49.0", + "@blocknote/xl-multi-column": "0.49.0", "buffer": "^6.0.3", "docx": "^9.6.1", "image-meta": "^0.2.2" diff --git a/packages/xl-email-exporter/package.json b/packages/xl-email-exporter/package.json index 62e25401d3..131e72dea7 100644 --- a/packages/xl-email-exporter/package.json +++ b/packages/xl-email-exporter/package.json @@ -9,7 +9,7 @@ "directory": "packages/xl-email-exporter" }, "license": "GPL-3.0 OR PROPRIETARY", - "version": "0.48.1", + "version": "0.49.0", "files": [ "dist", "types", @@ -54,8 +54,8 @@ "email": "email dev" }, "dependencies": { - "@blocknote/core": "0.48.1", - "@blocknote/react": "0.48.1", + "@blocknote/core": "0.49.0", + "@blocknote/react": "0.49.0", "@react-email/components": "^1.0.5", "@react-email/render": "^2.0.4", "buffer": "^6.0.3", diff --git a/packages/xl-multi-column/package.json b/packages/xl-multi-column/package.json index e8bee8b8ba..1c5dc66f9d 100644 --- a/packages/xl-multi-column/package.json +++ b/packages/xl-multi-column/package.json @@ -9,7 +9,7 @@ "directory": "packages/xl-multi-column" }, "license": "GPL-3.0 OR PROPRIETARY", - "version": "0.48.1", + "version": "0.49.0", "files": [ "dist", "types", @@ -51,8 +51,8 @@ "clean": "rimraf dist && rimraf types" }, "dependencies": { - "@blocknote/core": "0.48.1", - "@blocknote/react": "0.48.1", + "@blocknote/core": "0.49.0", + "@blocknote/react": "0.49.0", "@tiptap/core": "^3.13.0", "prosemirror-model": "^1.25.4", "prosemirror-state": "^1.4.4", diff --git a/packages/xl-odt-exporter/package.json b/packages/xl-odt-exporter/package.json index 253eef7cc7..28c901666d 100644 --- a/packages/xl-odt-exporter/package.json +++ b/packages/xl-odt-exporter/package.json @@ -9,7 +9,7 @@ "directory": "packages/xl-odt-exporter" }, "license": "GPL-3.0 OR PROPRIETARY", - "version": "0.48.1", + "version": "0.49.0", "files": [ "dist", "types", @@ -57,8 +57,8 @@ "clean": "rimraf dist && rimraf types" }, "dependencies": { - "@blocknote/core": "0.48.1", - "@blocknote/xl-multi-column": "0.48.1", + "@blocknote/core": "0.49.0", + "@blocknote/xl-multi-column": "0.49.0", "@zip.js/zip.js": "^2.8.8", "buffer": "^6.0.3", "image-meta": "^0.2.2" diff --git a/packages/xl-pdf-exporter/package.json b/packages/xl-pdf-exporter/package.json index 1d3477e2cd..ca22921c0a 100644 --- a/packages/xl-pdf-exporter/package.json +++ b/packages/xl-pdf-exporter/package.json @@ -9,7 +9,7 @@ "directory": "packages/xl-pdf-exporter" }, "license": "GPL-3.0 OR PROPRIETARY", - "version": "0.48.1", + "version": "0.49.0", "files": [ "dist", "types", @@ -56,9 +56,9 @@ "email": "email dev" }, "dependencies": { - "@blocknote/core": "0.48.1", - "@blocknote/react": "0.48.1", - "@blocknote/xl-multi-column": "0.48.1", + "@blocknote/core": "0.49.0", + "@blocknote/react": "0.49.0", + "@blocknote/xl-multi-column": "0.49.0", "@react-pdf/renderer": "^4.3.0", "buffer": "^6.0.3", "docx": "^9.5.1" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 88577a37f7..a6ea85fd16 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4619,10 +4619,10 @@ importers: specifier: ^0.4.19 version: 0.4.24(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@blocknote/core': - specifier: 0.48.1 + specifier: 0.49.0 version: link:../core '@blocknote/react': - specifier: 0.48.1 + specifier: 0.49.0 version: link:../react devDependencies: '@types/react': @@ -4665,7 +4665,7 @@ importers: packages/code-block: dependencies: '@blocknote/core': - specifier: 0.48.1 + specifier: 0.49.0 version: link:../core '@shikijs/core': specifier: ^4 @@ -4884,10 +4884,10 @@ importers: packages/mantine: dependencies: '@blocknote/core': - specifier: 0.48.1 + specifier: 0.49.0 version: link:../core '@blocknote/react': - specifier: 0.48.1 + specifier: 0.49.0 version: link:../react '@mantine/core': specifier: ^8.3.11 @@ -4942,7 +4942,7 @@ importers: packages/react: dependencies: '@blocknote/core': - specifier: 0.48.1 + specifier: 0.49.0 version: link:../core '@emoji-mart/data': specifier: ^1.2.1 @@ -5036,10 +5036,10 @@ importers: packages/server-util: dependencies: '@blocknote/core': - specifier: 0.48.1 + specifier: 0.49.0 version: link:../core '@blocknote/react': - specifier: 0.48.1 + specifier: 0.49.0 version: link:../react '@tiptap/core': specifier: ^3.13.0 @@ -5097,10 +5097,10 @@ importers: packages/shadcn: dependencies: '@blocknote/core': - specifier: 0.48.1 + specifier: 0.49.0 version: link:../core '@blocknote/react': - specifier: 0.48.1 + specifier: 0.49.0 version: link:../react '@radix-ui/react-avatar': specifier: ^1.1.10 @@ -5203,13 +5203,13 @@ importers: specifier: ^3.0.5 version: 3.0.5(react@19.2.5)(zod@4.3.6) '@blocknote/core': - specifier: 0.48.1 + specifier: 0.49.0 version: link:../core '@blocknote/mantine': - specifier: 0.48.1 + specifier: 0.49.0 version: link:../mantine '@blocknote/react': - specifier: 0.48.1 + specifier: 0.49.0 version: link:../react '@floating-ui/react': specifier: ^0.27.18 @@ -5378,7 +5378,7 @@ importers: specifier: ^2.0.2 version: 2.0.2(zod@4.3.6) '@blocknote/xl-ai': - specifier: 0.48.1 + specifier: 0.49.0 version: link:../xl-ai '@hono/node-server': specifier: ^1.19.5 @@ -5424,10 +5424,10 @@ importers: packages/xl-docx-exporter: dependencies: '@blocknote/core': - specifier: 0.48.1 + specifier: 0.49.0 version: link:../core '@blocknote/xl-multi-column': - specifier: 0.48.1 + specifier: 0.49.0 version: link:../xl-multi-column buffer: specifier: ^6.0.3 @@ -5479,10 +5479,10 @@ importers: packages/xl-email-exporter: dependencies: '@blocknote/core': - specifier: 0.48.1 + specifier: 0.49.0 version: link:../core '@blocknote/react': - specifier: 0.48.1 + specifier: 0.49.0 version: link:../react '@react-email/components': specifier: ^1.0.5 @@ -5537,10 +5537,10 @@ importers: packages/xl-multi-column: dependencies: '@blocknote/core': - specifier: 0.48.1 + specifier: 0.49.0 version: link:../core '@blocknote/react': - specifier: 0.48.1 + specifier: 0.49.0 version: link:../react '@tiptap/core': specifier: ^3.13.0 @@ -5604,10 +5604,10 @@ importers: packages/xl-odt-exporter: dependencies: '@blocknote/core': - specifier: 0.48.1 + specifier: 0.49.0 version: link:../core '@blocknote/xl-multi-column': - specifier: 0.48.1 + specifier: 0.49.0 version: link:../xl-multi-column '@zip.js/zip.js': specifier: ^2.8.8 @@ -5659,13 +5659,13 @@ importers: packages/xl-pdf-exporter: dependencies: '@blocknote/core': - specifier: 0.48.1 + specifier: 0.49.0 version: link:../core '@blocknote/react': - specifier: 0.48.1 + specifier: 0.49.0 version: link:../react '@blocknote/xl-multi-column': - specifier: 0.48.1 + specifier: 0.49.0 version: link:../xl-multi-column '@react-pdf/renderer': specifier: ^4.3.0 @@ -24017,8 +24017,8 @@ snapshots: '@next/eslint-plugin-next': 16.2.2 eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-react: 7.37.5(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-react-hooks: 7.0.1(eslint@9.39.4(jiti@2.6.1)) @@ -24067,7 +24067,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 @@ -24078,7 +24078,7 @@ snapshots: tinyglobby: 0.2.16 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -24092,14 +24092,14 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -24140,7 +24140,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -24151,7 +24151,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 From 210b499c19f47f5ec0071308cc9f12d9b8524ca8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 25 Apr 2026 09:40:25 +0200 Subject: [PATCH 27/76] chore: bump postcss from 8.5.8 to 8.5.10 (#2675) --- pnpm-lock.yaml | 74 ++++++++++++++++++++++++++++---------------------- 1 file changed, 42 insertions(+), 32 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a6ea85fd16..317c09c8b5 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -348,7 +348,7 @@ importers: version: 1.6.4 postcss: specifier: ^8.5.6 - version: 8.5.8 + version: 8.5.10 serve: specifier: ^14.2.6 version: 14.2.6 @@ -5131,7 +5131,7 @@ importers: version: 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) autoprefixer: specifier: ^10.4.21 - version: 10.4.21(postcss@8.5.8) + version: 10.4.21(postcss@8.5.10) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -5853,7 +5853,7 @@ importers: version: 6.0.5(zod@4.3.6) autoprefixer: specifier: 10.4.21 - version: 10.4.21(postcss@8.5.8) + version: 10.4.21(postcss@8.5.10) docx: specifier: ^9.5.1 version: 9.5.1 @@ -11362,6 +11362,9 @@ packages: ajv@8.18.0: resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} + ajv@8.20.0: + resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} + ansi-align@3.0.1: resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} @@ -13823,8 +13826,8 @@ packages: resolution: {integrity: sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - loader-runner@4.3.1: - resolution: {integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==} + loader-runner@4.3.2: + resolution: {integrity: sha512-DFEqQ3ihfS9blba08cLfYf1NRAIEm+dDjic073DRDc3/JspI/8wYmtDsHwd3+4hwvdxSK7PGaElfTmm0awWJ4w==} engines: {node: '>=6.11.5'} locate-path@6.0.0: @@ -14712,8 +14715,8 @@ packages: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} - postcss@8.5.8: - resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} + postcss@8.5.10: + resolution: {integrity: sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==} engines: {node: ^10 || ^12 || >=14} postgres-array@2.0.0: @@ -21736,7 +21739,7 @@ snapshots: '@alloc/quick-lru': 5.2.0 '@tailwindcss/node': 4.2.2 '@tailwindcss/oxide': 4.2.2 - postcss: 8.5.8 + postcss: 8.5.10 tailwindcss: 4.2.2 '@tailwindcss/vite@4.2.2(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))': @@ -22799,17 +22802,17 @@ snapshots: '@opentelemetry/api': 1.9.0 zod: 4.3.6 - ajv-formats@2.1.1(ajv@8.18.0): + ajv-formats@2.1.1(ajv@8.20.0): optionalDependencies: - ajv: 8.18.0 + ajv: 8.20.0 ajv-formats@3.0.1(ajv@8.18.0): optionalDependencies: ajv: 8.18.0 - ajv-keywords@5.1.0(ajv@8.18.0): + ajv-keywords@5.1.0(ajv@8.20.0): dependencies: - ajv: 8.18.0 + ajv: 8.20.0 fast-deep-equal: 3.1.3 ajv@6.14.0: @@ -22826,6 +22829,13 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 + ajv@8.20.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.0 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + ansi-align@3.0.1: dependencies: string-width: 4.2.3 @@ -22961,14 +22971,14 @@ snapshots: stubborn-fs: 2.0.0 when-exit: 2.1.5 - autoprefixer@10.4.21(postcss@8.5.8): + autoprefixer@10.4.21(postcss@8.5.10): dependencies: browserslist: 4.28.2 caniuse-lite: 1.0.30001784 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 - postcss: 8.5.8 + postcss: 8.5.10 postcss-value-parser: 4.2.0 available-typed-arrays@1.0.7: @@ -24017,8 +24027,8 @@ snapshots: '@next/eslint-plugin-next': 16.2.2 eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-react: 7.37.5(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-react-hooks: 7.0.1(eslint@9.39.4(jiti@2.6.1)) @@ -24067,7 +24077,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 @@ -24078,7 +24088,7 @@ snapshots: tinyglobby: 0.2.16 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -24092,14 +24102,14 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -24140,7 +24150,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -24151,7 +24161,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -25742,7 +25752,7 @@ snapshots: lines-and-columns@2.0.3: {} - loader-runner@4.3.1: {} + loader-runner@4.3.2: {} locate-path@6.0.0: dependencies: @@ -26970,7 +26980,7 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - postcss@8.5.8: + postcss@8.5.10: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 @@ -27785,9 +27795,9 @@ snapshots: schema-utils@4.3.3: dependencies: '@types/json-schema': 7.0.15 - ajv: 8.18.0 - ajv-formats: 2.1.1(ajv@8.18.0) - ajv-keywords: 5.1.0(ajv@8.18.0) + ajv: 8.20.0 + ajv-formats: 2.1.1(ajv@8.20.0) + ajv-keywords: 5.1.0(ajv@8.20.0) scroll-into-view-if-needed@3.1.0: dependencies: @@ -28811,7 +28821,7 @@ snapshots: vite@5.4.21(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.2): dependencies: esbuild: 0.21.5 - postcss: 8.5.8 + postcss: 8.5.10 rollup: 4.60.1 optionalDependencies: '@types/node': 20.19.37 @@ -28823,7 +28833,7 @@ snapshots: dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 - postcss: 8.5.8 + postcss: 8.5.10 rolldown: 1.0.0-rc.15 tinyglobby: 0.2.16 optionalDependencies: @@ -28839,7 +28849,7 @@ snapshots: dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 - postcss: 8.5.8 + postcss: 8.5.10 rolldown: 1.0.0-rc.15 tinyglobby: 0.2.16 optionalDependencies: @@ -28856,7 +28866,7 @@ snapshots: dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 - postcss: 8.5.8 + postcss: 8.5.10 rolldown: 1.0.0-rc.15 tinyglobby: 0.2.16 optionalDependencies: @@ -29050,7 +29060,7 @@ snapshots: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.1 + loader-runner: 4.3.2 mime-types: 2.1.35 neo-async: 2.6.2 schema-utils: 4.3.3 From 628f567214c565177358ba198aa31061ee2baca6 Mon Sep 17 00:00:00 2001 From: Matthew Lipski <50169049+matthewlipski@users.noreply.github.com> Date: Tue, 28 Apr 2026 15:45:54 +0200 Subject: [PATCH 28/76] feat: Dark mode styling for file block wrapper component (BLO-866) (#2680) * Added dark mode styling for file block wrapper component * Updated e2e screenshots --- packages/core/src/editor/Block.css | 13 +++++++++++++ .../dark-image-toolbar-chromium-linux.png | Bin 13221 -> 13220 bytes .../dark-image-toolbar-firefox-linux.png | Bin 29217 -> 28975 bytes .../dark-image-toolbar-webkit-linux.png | Bin 38946 -> 38763 bytes 4 files changed, 13 insertions(+) diff --git a/packages/core/src/editor/Block.css b/packages/core/src/editor/Block.css index 6a079f7863..3d82abc13a 100644 --- a/packages/core/src/editor/Block.css +++ b/packages/core/src/editor/Block.css @@ -486,12 +486,25 @@ NESTED BLOCKS padding: 12px; } +[data-file-block] .bn-add-file-button:where(.dark, .dark *) { + background-color: rgb(70, 70, 70); + color: rgb(190, 190, 190); +} + .bn-editor[contenteditable="true"] [data-file-block] .bn-add-file-button:hover, [data-file-block] .bn-file-name-with-icon:hover, .ProseMirror-selectednode .bn-file-name-with-icon { background-color: rgb(225, 225, 225); } +.bn-editor[contenteditable="true"] + [data-file-block] + .bn-add-file-button:hover:where(.dark, .dark *), +[data-file-block] .bn-file-name-with-icon:hover:where(.dark, .dark *), +.ProseMirror-selectednode .bn-file-name-with-icon:where(.dark, .dark *) { + background-color: rgb(90, 90, 90); +} + [data-file-block] .bn-add-file-button-icon, [data-file-block] .bn-file-icon { width: 24px; diff --git a/tests/src/end-to-end/theming/theming.test.ts-snapshots/dark-image-toolbar-chromium-linux.png b/tests/src/end-to-end/theming/theming.test.ts-snapshots/dark-image-toolbar-chromium-linux.png index c362ca41d6f3e767ab3506718266d3bd67c4f223..c49a73225c122dd78b468b1c12226ef7819e033a 100644 GIT binary patch literal 13220 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 z z!{_hZxl>Y70zy4BG!%{}?}7q^Za?|?Swc)>+`0$An zwwK2Ds!7DegbtmDEqW6J*_|j%&-;my`d9!S=mvVrZeIh4QYxs_(AM4~igT$pN9=nv!mp|^=V|B?T5F}Jh7+;k@AdhKkG60NG z)yvk;FSvPlc-*}Crl0`0)+l=K#N;GMLE?D2l#EPFrrT&k9O$~>!3Pox^j?%=+ybK? z2hgv2spw#AJzq3De|{CjY-jf3XMp6&9B<-kpHC|Yiccv$Ww(bR*~{=et~U{M5-g;H zLWwuauKWBswPn3J25KWvKf_e6anyTtoG33S*mRJ;a?rV;t^uRlvP_1JB5H?nEVC7J zU%NUy}zsv#HIYsRJ4pi@XWx6MP2G&qJ{eP>xJ$X zQqan)4$NB;iIkN!3d)i7YI1Ut%Ff4%Y}>{s>EPdTtoBGrMPep*$o!*u`uL_0CD~}I z@mji6m9b>vRlv}^GyA_$D1Hmm-5IMR^5f}(u$$hV9oFmQ@cP@F4#(-5ht+?jy{F3(TQr6YX(*U`~Iqshp7?SJfc z<3@Oz;pr^wnN{AwLO6^H4BABP8Iyb85NT%xBV2ERHyTo;3~xsLMs zbrZSLD(J||LorCxK@*Xy)SCc9Ww!=rW@ZA~-{<5UimkU|ct17H>gnxm1yKz926CWK zG$HIs9Z{I^M6+s^QZWPt9z8wDXAch1w~C5paJU%E5DC=~+&X9Dwb}p)bF*PN%XAjWX`Sa(YyPTe! z1V|i#<$SKIi>)8&DRJkkZxJa?ke;jLP{FFIs@prk0}vG6mde3-Q(=cWop2oxX36gP zpymw%7iU5Rg*B3zK+yspj46Ia=FUC8@Xr;^d|Jb)ACo_JlH22rvu^6GPrN4PPI;Td zmP9kc)!g-mM(Z~v(jXAGf4p%;;k&tL%r z$_yCK+ZZqQ?YJLMu}YDos+v3tHL*}lFwf8rBE~CZz?nBC9r1Be-3R^YX{5&YQ#B!< ztuXd(Qt8>E*}C^gf+|)wZd)y1*_B=ono$LJ_9J^3*UYF;KbZUKX_>3I;~NF zl%I;5$K&dqwRLoie*e8CT~CLOjS+qanGgBX<%nNP^B5PSxkJ!dp1Dqt259s^Uy4;4 z$Gw2GJPF$4N<*aD`v<#MUXoWYbXS>cu_e%B#ErX5jrKo&=g09*YO8A3Ny{M;mqLZ5 z-Q3-$==3~~TaYUp+Fw1w;{!&j^ACV$R+?P(V;e`I_c|KI$@}6`j9(1Hf2U9upo4Un zsE>jc#2mlej->^0FqJo^D0zV7I1VGIk>KU!MdEQ+io2)z=v#HWWki0%Sm@$@+s>i7 z+*Yo2ZF{U)cF@!S9TL3#7h02zprz7-Q-hA&QAaM9$>UZY4-i6ABh^%FrY@5E4uo7y zw#ezwu`g+SlqOp0&l-ve961090!`^8gQ4#~Gr(U5;I(7$F%lh%dZFM;XLs}Y3!Q|)W_7Z(u*=s89`?-nG z?bw3<;p*xN*T8ef@mFy45<omx1>+k~+x6j(;OE zcR-Xo07*dwVQg;RdLTx(2-=3pF2H`;N)-(^5Gp*o6zJ$kqZ4RcXva!{IRU0W2+LHC zr{kcOi(FgNX>0wowJ%2cPt3B9BsEoWs5ssl2fPA)p0(&OD`C|)IlsJUs9PNnHaMZ7 zF$-D?+BBKq`EN#;DmI17FdB%K)%A?) z4pHLhf%f7zJv1(zHs(!~Pxl|=4Oy|i!E5vj%sdJ!j)xkC4wFZ;q$E& z*`cC=XfS+O*lA!K8h3#(tfRBNyB}eZ<2!1Wo1U6F zO{X`HdS4W;?TUoV_5yWW`7AeA>G9c0aJN{JaKPS+GlTB=#4(5heAuDbrP;_}`5PD~ zunc=u6beOfs*RZJl7apMaAC6u*M8JH;MT2Mz)Y-)3@snIzuJ}Yxh3d6cShEp*?(AD zJGpTbl+Un~8mLjwt&2~-tt`+ZQP^>BB9%(@>@7WZ{5TerVQJ~Y{JcH*C#*nk5KMf* z!Hy_deo5Bd&U=>Xz3**9j9J%*buLd3p|SgAx!J37`}I>Jiu0@#qhexE>3d{k3cxkJ zaw@*w**MDrpqh6{F-}fS4mbmPX?~(YoJsR-Cj5rne+CWSLSGn|!n4buk*n5};6hb1 zAGcVl-s|k_ymQFWPBj5!j$(DVq>PMtb~`JRvDmb*$O4LVO%HIPk%EAFjzKme36J?J zg4e;Q0Z&X*Q}Z)+?Yvwp>m>siXo%!c?t4QqPH|Ucj@8YHwk)E(my^@}l;+QNCqTAq zr+ImL(wWSdOul*pMJ+5U&2K{*;*@x^YP?w}i*s2Pd?yyFUEC1*==_2LjJtcJV>Re; zI2o+JT2|6yQ@I4?OHh)-m|Eahh<9CGT^NvSSQvi(g-q3KgHmTfHS4p~_z(FFNaDxx z^Jsn877cn6@c-b5W59O-4g^g+%BWxho$3H<1h#ch^6YST@3u|Ms}TB%z)jt!VPAU?Z}y*Z|XPSjHo}@jYg;Yk0rSlbx)^ZsY}mAgB0{9I7zPQOHidppnn0O zq_0l`)oZZ)!T=n%#Kgo!F7#}38NABn##V40M0qo!d~N~(-l-4)AtSM(Fw?yRwb*)H z=nX{m=D&jR2Vf4uLoPNv^G8RHCEpP?SgJPuRe-&iwalF?#F{%Y@mI*x1NFI9H4GQ3=SdW>reSqkynSTAGA=tXRRRqM$Pn?9_!2~5b4mAL9KjU@Ys=zB@Uj) z0ne5I*6Tu#JFAiraL3mdx~qX7-(JMEyIbaTys^#&b^^K;S9_g*RxXy`>XqHP>geb= zN+0_J*cRMz0Dyy}c1#KMwa{Mj)c`@kCjR8&mz$R#i0;(l2-7l{~e;W z4$u?0P^#QfD67QTvxT<0z?cD!Fbx^|A^X@oP5YSam=eGJb3cPhsmKsVo_*9JlUI)) zKFk6t0v{g+I0DGCc;!$bmoJZ0LWR%^@7C{0v~K!e4J!WoXyYGz407Gc$!7TGUjr@}Ho$mm zMsp(?t$Ij&^ThisC8YQi_ymQvZ`le6RY+iKlWfb%hD7V>_)wzZe~w`BZw@A|uBG{u z7oaWABZAxCmos_|RwVGOfzq9rQrE^;E7EI`Mh2AFs(}ROE-(DZmKZ7_=Xx?GiB9Ey zaSR;9d(z)F^vCCka+`T8cXmB5Y}r zey|reyrbfN95XR7(XfrN`%CJ|l_W~Mhso3Cjyqn|;FX9E`zpL0Qp$@D1nFSs4dIiF zmazqf{~N5jOci?phZXVjx~xMSE|j4+S807rXS6hppqV>jn38{fNB%HD1j$R+Z9Is> z3{RC_f)V)fDb3WN))qB9Bhp~cB3r3QPiE!g3oO>?K5jXaQDGoWU!sijRtrC*uW;ud zd)^7s;f!fxdP!^1^4w`3$DTOm(xL?EU6oRD(`aVzRHmu8NXE()yJcbgeB%cdY+scM zuD5jXbxH0Kseb5ne!oakO=%AF=q=TmDeYSt zZqg)UWi^Ah1hQ$ATCRfi^hrL941$VB##PVde-W9UmTEEjHbZs5`4IBxlW!xbsq4%L zz6D>*w#_ppT8%CSKO3w{|FkxJgFZs zD_F7csIO|sX}DfgH2TcNr&9HXu{HM(5EW#=?(t7u>Kl;7ROe^m3^i|7(FZZqg&C<7 zX$GU|_n@&5fsL_<(64T>#KBePj<(LEs0IENZcM%w=R}GKD`$1i~Ux1%z#Le1C2m9h2#0{7FoS)X0ekN!& zl)g8^iy$bi$XsUWf0bt}}xlS?0}EX}V8g`fc>PJW%ekHZPSpr~;4 z{AqN%Qje-Byq-S}b+nH#*PQEcy_~tYSV!>e_iGKp<~45RFuu=C)wh2<$&4n|x8%w2 zzK6TKg*ygzSn%%!pp>{1f>zU2@?vq=={-!hdedzjdLI${(!DpHVJa7qxe5U!JC9Rh z@PR9oyj}yp)_BT<=!xEdbUKH5w_FX?&F$C2co+bQy}%TeWM|)biTRaAq?5vA%7XeI zFq!L-Iq?0FkMUD$3>1m#O>-c4;?Z*p3K8CGI`|oS0aLQcs9PZ-v!1K>EnZlLDs31W zWF9zCq4Rs@Yl}aZstlGJx+)BCw0)vH1MHcL`OKVxz$F$+xFWctf=;62mz(LaYdW|U zd7T$LQ=7*PjV&v~hw7M2WQE_CLT@SvnGtX^|t&D+aS~=jI0> z8zMcNJv^p|)Iug2{rs>L5sv7i%H99$J`cc{;WfdVJ?*&qt@g#?-tPY0A`2omlwGc< zxAd0idHTM}Q@K&C{lN~U6|R$G*`uo$q4W#R{ z8?P_KSBw@G76O&PRM0w8!B~!F8z#v+!rd`od<1IcA`Ei9-W4!4g06ePVU6zY*g(BC zxiFlgA#dK}I7kQ$5+!I*{z zD%c*e7mCxXyexFHMa=D)=3XIz^^GyeGn@757fd?qPDY0zW3m-@(F@yQV&MHl@ZA&qEn?;?BEI-La{>>_gPaXuRf*?wMY_uJ*C?;t?RyI?{G!vc+@qbL~e zfyjVJDTog(rxi727cFE{YSyol4GB%s9PL46S=?yY`3~lfg|^CZ#x9$Xu}pu14C5?C z-Xr)uXN^m1MLki!YEByaj?0bt zQ*p1NKu6zG2i8+Y+H8W4PPe!8U-1@Oy z_)PPSd}#Jwv-5{Wd|-guri0|ao?P=QnWK*WsLbZtR7<1BU?Z>6D!5v~m3JweO5t$`%uVFZR-0E3TC2X+G;NcClP>XNbfzoCpwxoXXO)p-zSJt#)7a4LrcLHK zjv=tPlOm=`>q%cO|JYJ;oBnwlS?bkvyb|vbQ!tR>-nT>YwU)rvj?ct#1SMUdAOD7w z9^vjN&}0@jRP|-ED|<_m5CkgeP*=&_Mv@-qw&e%p2y_3E_NXyxyuUEl@!3OuR*p+c zTicv*Z20ZT3x$yGS4Gzhn6fYEgwP%_7{)oc1^C?AB&d$E|6z=3lSmW+(WzuwKS0p6 zYWs|o+?n`IDJZo2Gz|T|WI2v^4~mnOU5!MVPC<1=srr6*9+E(p{!&ifyFVn9`045{ z1Zj`2{G$uTisV%J|M{-0f7SE9E%cvn{Ks3{eg^UXy4&w(NPdRoKi?DjGfRGE$wQOb=Wy zk6uWF@f=8%PVJcS!7||@5W!i5o2i}AC6m||6SJQssjSU=q~LsZ55)&N<>15vDc0OL zozO!OeED0EW11w-fqpTmO|6V^zkVb5xIZ!dvfDE^w+`)Jpfrids3>76*iJl`8Lt_z zB+IzpU1BQxgB}Ea^AGnYPh=TK99PbZ?Z@nVr6|}`BRTYJhiZ3gOG`^^D=*}G)6#OV z!nwl}JCnjEaPYW>&-<|^jq>X`|F|XXLPziGH0F5j>A%>qs2-C`W{;B<7>6LogBdgU z+tZJ8I<)tvA@(R6wl3i(>B(01)+?tV!tq)4^PL8~M`q7a*t~@NG&cUWD>r-k;V&Zp zGlc&Z+kf8p-2y8BC6VD=GMD-#TGVSn|Coe?7wcPCgZmj?D7+@?sN>0C%!Y(sFM&Xq zIVuQ2wu&y{5tleDsR`c%0}eZtv!W6YxHu6EK1RJc0o(rEy@_sIdMSQ&?K&&Ms#S?o z)Qj6}4O@#n(Wj;lK3dM)1=`O=7C?s{Le$ z^lgY%Cj!yzxw+3N@QL~$BeWZ(zeh^zqJ2#;J%wS5DV2-Km2E%Bz}351A&4K%&Fp+T zwoA};!A2p2)=D*7qb+%?DD`@Zw$;E5GgVmN^B$#9;Y~@YxL?%DM%E`XhLnoZIfXpX zH4T8+E3k+v3YL;9dnf-c_0#5PU!fYF)zU@9(eB=ZjS{^t*ua+$%cr}gEOWLRA2*dP zKI_r)Wwz;uP1vxiU)!L|+BT#DpL$V?#wyg2#Wy@3Ill9Hq$)mWbYNX7#Mu$K5n1A8 ztAU)`I>F^MgbY?0Et0X$c4UJ(_>Lc(EkJIlkUK^tvA+sCbe3UhDZ=W+18kpGa}${4 zAZN3sWgsb)#OOrlL_1sks4z=9rd>N7WfCx0Iv!|lqTEOSADx@EFaBuh$LWD~V7XG}0~ z{#9m`1)iT6y`nGjMv^Uyik$&N5^4(F+)8p~i}9PaO;M866URuOt_0^L)O(S_;<6v~ zThPnnabuS&w{;Xg3hjl`beHORD9ZT}jOFn<1Q9J8BPU;Ie9+<5(sOFg#D{rpc{g*j zqzBaj&TDOPd4)rEcBwHwFB){s#z`slq1XH@?dTN?x_M?|c5_AaJ2Gz1?iO9*8lEdD zcI$J+-ImE)S`=?DE-rh`A0L48tE{W>njDNU#}3vQ&&DVC>hF`pI~BXiH{%a zhBS#LK>Sde!S0;yxle{57%f~y7*oc%HO|j3{`E}gS{I(%witg_vo>mom^t4n=>CUd zliIU-#(Wt2d#vuD{E+QOzb?%odv7L6yIE5{lQL6*wY3OF%@;Sjq3u7Gse^n(g%>;C(h zBqDoZu68tCHYRszuC4K-t)-Y=@7}ChvFVT#<*(3z)J)P4u^?CWn6{5*5QVS~*9fK`rib{+()!jdF#^rnJcbLpT%j8%`9;ox8=ZihIUz4^oBbUDQc3bt! zt6gAiIA@m}BifnyF3dHGPMa04#B6lxL;QKAHbOgtLsCoSH302b91NXdd~=K!nOwF^O_SXtILj)xj*7wycm&< zxrunpql`-i&Tg8=U77^rg7QlxZ^n=x2XCEt@!CzhDYM zY1Yw0Lqk6CJhNGCZEZfn--Wccek6+HSIJ@X)B>6amn}?1wU}g@1gsB=HnqKcy>Z!< zZMVW}V#FQf7ch>~8}xtepD*9#f-zg@)T_+xZPMXP^!R3Y)l~&{OwqpM02yWNNW=FR znXchm)COvZ7dC2@Urt`WLwir!<4%YVbG_K*ws}`Z=(Fwed-&1<4i|Yrli4A~afDZX zZ=lwN>iK+N5$HXVk~Yll+BfocmV=5mPe;We#}$yjzdS2I4rNBNL&88NaYmB2^WuLsBM-FC z&e_=+8wL5k(tY1_Z{n<`g1;;1HXG=|Bu;^)Ks4)M2_R=UR` zZbje7HI;qK7K41R&yy8n$8BWARFzHb(Y!)Q{YhUGjL5ka2cO@xw6GW$90aRu`2Gg` zMH#k)N-L8LN5aKx7V-s?{KK!!bwW*Asm6uso@2uU0~W^&5)%^u2ht-_L8S5#DdBBV+`eE2k* z?p9n+(D zV4{8LRNwj_!7IAGy&V{3_Q)lIa*u+2{S}m9bxjQ%4#yWsl@=F2^YnyyPu=k54H%uW z6gqG~%*y}!_Ukj)ii(Qd+|QCCgt5D_VryGSwG7~Lx6DnV;M+WfBCMfM1W8>HNle$(cp zf_j^l_SFTGPbb7J^0XU6O~@4ELWyI?fXZ%dY3U9P0A{qZ4+3t#p84X%i`KXkZqJ_8(pn@gp*klT z5aJi^{~5fo04QNzXxy;9P{L-jo2TDSH#JX(ybH8EbLPy;>kqrqFH5L<9zSwqZgJ7= z$&*hjwTs2Y#rC0FGhq0@;Y%zHp4B0P!hQhj77_+~Te!Y`P$nY6=VyX)_Ta$4g$I>S z9zA+A-SWD*=~cXxPUw%X3Dw!g^Y8JGu%J>ZSId*{3%M87GQoc{JLpe?vf zBVtVW`O|KL;sH}zTf0~A7qR^>XF5__;{l?H=S+TykCT*;(0o35&9;n&`#LxG1eWda zr{k}7cH;!XHKepJsAVFBB;vp#=f34IwI-0Tu5pF=#L*irWu7yX}?FY{{elnotje^qK@>I{2p;sCj8;V9cd9T z^+My!;2m0P4@}@n@}0}7s`Zrh#8+LYfVtTr|y51W4W@0^u zTYt{znBh$8aHf|KB_P{^OHw;n)xJlJVlx;Yx}G=P8ZRE-t~hZ`Bs{2S-Q||KBv0Dy zgO`5~Dk&&%`TqGO;3>thA3OkfMtz5w3d-HxUCV!Apvb%sIEb!p6Tsd3t~xIBv7G;` ziA(g2M{RG;ZftBs-#BgGGdVe_K}``Wf9B-${!{T(*Qwa?xiB$CcNR+Ii|Uw zH0E{YKQdd^94p>xRr%oKBfXtlIi^RXq~g7v3=9vab<6-?ohs~`_oEq(JE>TM1=`s) zAh*^Yx5j0{LaxGo3vP-O0zvkcw1}0hx1Nm+squw?NtV_K_;Hs@>>}!P!YwhYK@v$5 z27_s7*~*GdY*yDatLr`h3C_Tv17t_z%&V4wwB4l3Jj#WKsSy^z$pYq$*Q}+d^F$-m zXWn8mF?UWU+^-8*Zcmm^RdT?gZ(Pj;h@(Gz82mqJfJnFDzUI0Wrt) zLs?nFTDyEkMg}mxah6sP;9g8j%*G-SKYfC_8A?KMgS@cue3dY*YjGf&mKTe%79tbL?H~4-7bAMj9I%-PLTgPAg{j zSXo&)M1JQpmE2`}NO)|o&4uq6lLNC|YgUf~F~@m@Y?H3%tOBYvSVqZaU-f?$7#L{W zna>9)d+l>fi(^uUW+a=B-wWO=mMwklWXw6fRK!X8?TARlLA%2n317XFCeADCh^bS}joEwCf)sz-+n;bt z`gk4d9;&aQUo-P5ZK|0uf$#!8fj}UdHiCKje*RReK@Z2Wxj*qvKGJX11;rCN|A&`LNyPb7cQqEs*HkIa zcd726L|16Gf!X(HMsjcGUrisBq5YIuUFYzYqd}@7`&$%jU}6FXFiA;C(TzH&4HPnv zXQ+z%S2HInpZ3poWn4lTA`mQd6Yay~(kqE=pfaZh5$h%_ZERSbmwI;Q^mUG%IPp3a z|2RcJwX*Xc1c97iK!CeU=9C3~^N~r! zvNuWPwF|{K9PV6J;3F=FO>^+=n_u4`I^cuov%s5yBH*qU>b$0|YLS37^powkPzJyX zW6)0pt;Poo9psXWKYaK`z&QLfCWmqvVPPPX;df?~NTZ{Y$kj$63AH3efE8@#yD%9+ zZ2%ez_&KTCg9Qd|aB6!4QUGhEj@qqBT>{E$ZjPBr-pUjXnbR$@kjpeC`xEULW4=AZ z!^0mRw|dqsSJ&X#%QJ{rGnxmE%ce>lJGMPo9=g#e9J-nlC0PsdRc&2edEH8FeAv!3 za9x^a!%T_|8qe8IbqEa_sc;sCF(-x8$4qzjz-ZAXhQ`LY)z5-NhcLDjmnNmIrq=x# zzW-1ukgjHC33pImetWu>EueT?1$7}yxb*kJvMUnLw_r`c;ZyB{=e;*vlte6j z++71O#FfBRNAHMac`JLwaus>28!j32BLNA+`%=11kW-={#UrPp&xJCZqz(!TOI`Jo zMHyznLbi)b&<{R6|31|mTaKMg_X=6Gp{*(5m{aF;w%R&WnV7SQZ8n}*=l%jC+Br34 z<<-|-$TPUSwSE&Fwh4FL1PCx7%!-QUOMrU;DP(0u%!E&1{pR~P9L|l?-ariDw@dI> zLw5p!*#WOT0Z>4*J_Iox=r0G>C~^g%1_w)Nw4uZUvippI}%gY)XBSa!-vWi51nVXyY`t>V_)X3=> zBnpM-s}w%*{&Hnp4%h3pfs46W4d=)Y952ARqwp zl)bsRD0!nMH}`bbfOgQD(^ySMs*(vXt*s);P|*R0baHY+BDE6RzPKGZa^zP2UEm1g zkBlUPFzMSx@>rUzvE1E8QlEUe$j)r$ok zSS6bMolAMSxsQPV0Jr4Gf>5G%@uD|KeL%|}ICv1YJ(s71-|?AW+x4X5A%zfRe#KKX zP1raa*5KNcRRXlw8L6#XfNUzLdZ3J{pQhu`Xf(+6&F74EBQLm9WUCt>6yABdSoh5h)g3_KQqYF8J~tZ$@bT_K%(r>eRdw`fO=p}ZD8e&rjH z$gsh0*nqEhIjMjsV*_-Dwa$y!vycDrQ$N znq@Jd+v+eA%e>+}wd<+Cz<@fS zLZITgoapFikRE~f@Vk0KueUAn9EfvXAcjeC*HZCsdnoXwVOpPoQrB>XQU2YU@c@!X z&G;|71jMt(sj!U!b8$LGR8+JF##$24VK%a;c%9S^ZQ2*nc&)WtimCFUykV@Gu#8*M zGUv{L6;j~=0icLUqGj?z^)E%r%E~~e;Lz`}*nRiZG87t=2iL!dCO0%R&^EHC5+Cbq z6q&GDcrI&q0iZC=(~obV*HU%~4)ptR&4ALtU|?C>hG2gWkLB-8QPX_Iv2t>9_dvn- z{QGBM>8XycpLUD9s%Ms7US7yT@-8R4y1MWnd;|FHkMZi*whr8BESN0338c$NLObPY!%@^`ui#ZSSWL66M!hxI6E5)lH0V~jnwoysu=X{ zs|JCvqYi^{+U3i4#rurpJ_wrmap;L-WasdyZ&0V?!3chr!UV;{3a9 zPJL`d1Qv8yd~g3Hy30#TK~-Nt+-s@`YPam3`1p9zF+Sf|-FFdKuw8}ng=Fi%R+J&w zsB!}KXWWM-zy?_7*%5cOWS_bHgi=#$YgETfyY~KYbubg(XnH7*%i#=XN6(-CR|E;} zrq;xPq@oK9S;)~|lmP81t8gY2a;KD5NVN+ao28^chHe<`n?6Z}!cOSiUKS2r$*EHx zGNPZoq(G9|iS1#3?=m`zwSm(^9GGDohAzoQS{bs175NB5Q2Y7Jr=BC=doJ_>cboFYd$l3tv zQp}Lo=)jw!^J7~U2(Ht5%c2*#pIqt9{?bhavVLuQAL&7QpD24dUb_OL|A_C9BG`wd zq}W$&4QW;nd5|TIjE!AXP?{@a?B*UMr#H(%Dd8z=jv`r`cXoj~7xQ3+d4GVm(Zkt- zvq&qPeu0{M0n01LpN>|9u*%}uBd(GYmqs=}_JnvMd{r;1hN8Uf+;sC;SqWRm za=L0JK3>K+FFIO~$C9E~B#)y0$ZcyklwtRlIbgXxq2Cfmc5W_`CG-2uTE9Jx_m6u| zf^B1?R_cf>kEg1iSlM`{YuFk}hr5%ly>kn0LF^l{ z7^(DT4b4W!m50rOaK7!8&HlCL%S#8}Ty9Yml`Dm3pu$!_BYiW9ieF^Fw(tRQ?`_mP zKg7$CJGV2`Jn>b|KZ>Gs=p#B@dQa$P>~eC37kNSTG4vUfs!%sf8vEqEE1Wp#BqkKF zGJkxe0*5V92@ctR#gbSdcd563qE{QRNqc#j-CI3tDR}N`WFJXqd-4RM>{&7BpbVVQ zL)E4fv`2F`H?!Jg)0am2FZ#6>3%+*s`7;bOkrQ$fo;><9?1^;xE1(*uyp7}59oDzy z7a!bn&fQiJMtXGcx!%(r?n{cU?d0J*B*Syy+Bcb-{O8W)*3K3f4rqYBbS*mnyr@xJ zeJI+?x!}C-tdxJUnW|YZ|MHKoUvJdnV2N?LZ67LdilTbjTie_<0(ZwtAybFh-sG^9 zHnv01CCTT>rXNTB(TCb*s_CO@x93eh-$U1KL`1FNhBr*&UK!qafxvN+^=rH9bJ{rF zMTHmnt|^0Z5zK_8Nn+(~cfrYUMs-()7Y?-XNkhkl0+vJB&#dNCY;-n1mZ^I+&{s(6 z?*&NkfSuqqRZ>3=6aA%6z3RiiXVHik8Z zbVfG5Qgj@GsN?W4HeohSUvgxeT(QMH@_pQaISO>yYrh?OY5=3|fGX5@2b@kwK^(Yt zX#dOWG&eCl(C*_@%VzhuVn#qqNU+q&-F@k^AYt7({Xx2%Kpi5|UieFA3k$bem{Erh zo~ycmd$}AmXX;}!%5u?0Mb|EqojU(y8bfqIJ$*{LPsID0^f)>94+-F(lOyAR z@9aD-kJs!U=<5^Pfcq6WOg!@XWDVMI2KjdnA3hu{0z#a{TaAMkIcl8!&#@>T{&0ZY zllSa^lYpE^Uww(BG~bWhqhq zfE_nez&T7(7(Jhgo4eD~`Mdhq1%S!t>guX*OV2BK7^fxW64wQbKE|?Mb z%_Y)4KIO;2D4^#(;{!@A(BcXdb;pEbr9pe$($X0-LZf*L9WYe{Ju;NxJxfcCJ;!#3 zHw}GBwCnr~wk<%BR#CCG7B3iHbIn_@JSC#Scb}@MWWWpPw;3zQRFU_HY++x>NtP}| ze`BPrjM(SscynZf=iOJOy^fJTIlkLjf_OR+Y8wRili?8+w?X?`(BUxrl`ZM0iattW^kdemG()FZ2 zK?}WOMn*;k^a{bb7c6f$Hh=dx%5G6aq$V{XV_G>$h_q|(0J!}Hwk)~q9uq9@J#a=w zF|~t2climL%?;GdHk64aw*W-J=kt$dB+eX?1^{eL2V$IUu9n+qX_u~-PWH_d zuKy{*FPn;~X=xVne+oIgi|}ZQs5nF*yt+zx?>X=Oe2kEfl?b!3o%}3d%=a97Sa=ZS zjCoB)GSlyVb=3*Q=~AIjrFUvb`Q1UOdA?cOHnm!W zPEi8EP?N=^Fll|(WZxBOz?OIQ-9aK$4HHN)r22{ia`UC6O8^rB%c#MWZ`va3*C#3G zdw5N6QpS#%XdDe}f4iEry;oKcfYz9Fds6VYUfB( z0;ZRA&E^9`_&F4>2g{*D_9|;0j%D!bUny~LR69htHe!fH4@zt zReO~ZX~*W><&@7=1mi>CjrHaw>5*98G>;gGO<#MJ(EtfqrCpP49rRLEcnHnL(Cy~$ zZ1Z9wAbyvZ=a240*4-IB@~&PH_9S2FFFOB%WiD!wGI`Tx+&@HEgAIL5?^ZyD;SO)7 z+I8_X-CbWC?&5_UN97bB9R=>2M*q(Tu>OSx{$Gx4{r!voc8cw9NdAW8e?RN^H%tCz z$=@vb_h*6s_K&~)<8S}?+duyMe+m2@8UDW`12>H2e-fyE=;T*&@IN|EgOibadB7=2 u$6t3(Ox{1_2yXqdXZOJ5-yi=MOn8a-HlY*|#Oqz~ZtEG}Kwo$K?LPpLBQCiB diff --git a/tests/src/end-to-end/theming/theming.test.ts-snapshots/dark-image-toolbar-firefox-linux.png b/tests/src/end-to-end/theming/theming.test.ts-snapshots/dark-image-toolbar-firefox-linux.png index 2ed10917f27418fcfdc524eb67c9ded844e57a0f..582afb75278305858b4dd52d4b3d67fb54e29416 100644 GIT binary patch literal 28975 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 literal 29217 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 literal 38946 zcmd432UL@3xGoxH6g$r7h*HN9EOZ-)RAokupkP5js?ww*p@ot#HpW3ggMf4$rAtwy zm!OUy9YJ~t2q97f2@oLdzF%CGF& zHefKA&Db-)UBqC}k87T-TMPdqVZKQA4nmzUMjIi6@soVHC?6Bg^gnwQu(qAj;zb>G&PhGJ1 zZFYcNZsf0b)BuZOacOAZIiQi1OuwHYVMxfKJZ@9TB3d7)5Ug>g2hb{kogTbiy zt`7N+cSd)Az^wZB-LnnrF{}T5qx>Rq6Cx*rS@-W7jPV)F*8g~u`3NTc@9XmJ zRl5KFj7dNFzxP2#{r;jb{3|IJ55Pazi%Kz<;Gg~5t4rhr&&*lYy%;T%7t~Xj@vGlSV(!*S_}TZ_>2D)_^3AwsOnA|OLvXnw|iIb*2UQToheR- zWnZ2!Ux*oh6EHun$@sL#?Cp&UJCv;wb{%$j;D<$5s|>v@D6pqBC3ctK9FqdZGhF+M zZ&`ANXd%kBV?zEq>Ee==djNykb_!;faaoLhXlDvGaxXQR&m<-h7n*ry zaCJ?Y1iELs*vIP!DN9X$j7ASa+h6;QU#6y3=Nn;cPW}j+zju>9|4NK~eKa+K_buX$ z=g|9ECBeWmJ36w>ne(|st=>X6ar(ubDW#>yEitP?*1vEl--y9{vmK+1Gpd9{*71>X zRmnQLxit!jXsQg@tE^43ht<0eMx(O(Nj>#Rz1TLBu=Xqy8Z(*C@sAN0qsg6SB9CcS z=-TZc^KL&r306)Ye_naP@ZW zf;E`EKTx7yDP?D84_gYX+Ty|vC5vMNvM>ZE7{Xn_5d2LqT53K(h8|L1f4FG;Ypm+` z{ZnyhOFbt}7d&F{uR|^!uV$52Vg8Tsg#R{|`(J&~cy$@9;Lfmq4L>S1rXy|2uD7`3 zpzUZw-~3P+j{E-Z@YV0}$aB7R)mBVMCZo@gczk+@EaRksKcvi?T$)u9LYs-f6#s>y zkdbj|S!s3Ioxc_q7SOu?r$4RyjM4ph#cu{L2F=zJXZ}c{6L}HjMcwA_Pg2<~`9BYB zd&>(W_c81Al^tmdlEaoL(8J4Mr;i|78f@1gav!<|(Gq29%ojuuf=n|^-SB$5;) zCoCdyhQ#TyO>Ua(&R3q`v&iw>;4?|MW`0JWO#CM#qobNNv*^UC`BRlR!WryK=o1-Y!fz+tEg@w`Z0>5xu z<2@6{f{zFK($7Q8BDvz}74=e>Nr-8NhK2zF0ZL9uNlE!*V`JFYT^ggWKMq(wEO|OB zmrDJp?&?D-hn_?|IKte*FyL1i|hHawT0Q{mlSr?y#AY2qeosibLG|5 zSP|mfo|5V1iSOY7gL%5u8v;Ry%-y(gj(fu>OLZT1v@tpPw(yphWmy{Rg~`VEAH%9k z-qcUTx#ZLym1cK+cVUP>XMG5D>oJ(yU1g4j3)9`W3$`)2ri6EeQCU|kow4++J*UH8 zPL0&c)P_!%@4<~WVM(q7oB{vnmDq?0(nXIR{439|IZ1PVaa%@qcH;*a=MIa&si)Ps z6%#oIabF&7_8>>~^py5_GaF0n8?)(`3Sw%at$q3NhwRUyk=ke1;}%Mc&reo$^>QUX3h4 zLqVryyt%t&V!%E9P45gwO5rlKjF7XYCdVCSH!FYyAoIx3NCJqr|D&C^Yin!n^po;Rn!SUMj@FUqCEK>VNq`IQ9}ZMHf+PHD`6FZ z3&>@#Z(bD~#kL;7d*xJ2mrnNQ?=v6h)x3`JY@Y648fr64vruwueTglZO^x?zJlgrv zLW$P$To3Qpma55aI1F|=oySC5jb}bg-iLK)NO&ynZjlHmVZ@+07FjtgNPPrxZgS1; z5A{?3+#l|qYtn#yJaJ_pPcCxrxw>~k!f$SV&^WLoY^mFj7-wI9H9xqwP{HbrOxO

^$<@A_}Y@%sphW4yw%!$j--LkPWfC+_s2|a?$rH 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 Nt^UKR>M&9MKLGDXo#_Ao From e23f8581ff085186ce2a3f0210846ab4aa4a2695 Mon Sep 17 00:00:00 2001 From: Matthew Lipski <50169049+matthewlipski@users.noreply.github.com> Date: Tue, 28 Apr 2026 15:46:19 +0200 Subject: [PATCH 29/76] fix: Hardcoded strings in comment components (BLO-1033) (#2681) --- packages/core/src/i18n/locales/ar.ts | 2 ++ packages/core/src/i18n/locales/de.ts | 2 ++ packages/core/src/i18n/locales/en.ts | 2 ++ packages/core/src/i18n/locales/es.ts | 2 ++ packages/core/src/i18n/locales/fa.ts | 2 ++ packages/core/src/i18n/locales/fr.ts | 2 ++ packages/core/src/i18n/locales/he.ts | 2 ++ packages/core/src/i18n/locales/hr.ts | 2 ++ packages/core/src/i18n/locales/is.ts | 2 ++ packages/core/src/i18n/locales/it.ts | 2 ++ packages/core/src/i18n/locales/ja.ts | 2 ++ packages/core/src/i18n/locales/ko.ts | 2 ++ packages/core/src/i18n/locales/nl.ts | 2 ++ packages/core/src/i18n/locales/no.ts | 2 ++ packages/core/src/i18n/locales/pl.ts | 2 ++ packages/core/src/i18n/locales/pt.ts | 2 ++ packages/core/src/i18n/locales/ru.ts | 2 ++ packages/core/src/i18n/locales/sk.ts | 2 ++ packages/core/src/i18n/locales/uk.ts | 2 ++ packages/core/src/i18n/locales/uz.ts | 2 ++ packages/core/src/i18n/locales/vi.ts | 2 ++ packages/core/src/i18n/locales/zh-tw.ts | 2 ++ packages/core/src/i18n/locales/zh.ts | 2 ++ packages/react/src/components/Comments/Comment.tsx | 2 +- packages/react/src/components/Comments/FloatingComposer.tsx | 4 ++-- packages/react/src/components/Comments/ThreadsSidebar.tsx | 2 +- 26 files changed, 50 insertions(+), 4 deletions(-) diff --git a/packages/core/src/i18n/locales/ar.ts b/packages/core/src/i18n/locales/ar.ts index 00574debed..a2b6e4de1c 100644 --- a/packages/core/src/i18n/locales/ar.ts +++ b/packages/core/src/i18n/locales/ar.ts @@ -369,9 +369,11 @@ export const ar: Dictionary = { edited: "تم التحرير", save_button_text: "حفظ", cancel_button_text: "إلغاء", + deleted_reference_text: "تم حذف المحتوى الأصلي", actions: { add_reaction: "أضف تفاعلًا", resolve: "حل", + reopen: "إعادة فتح", edit_comment: "تحرير التعليق", delete_comment: "حذف التعليق", more_actions: "المزيد من الإجراءات", diff --git a/packages/core/src/i18n/locales/de.ts b/packages/core/src/i18n/locales/de.ts index cac48dd80a..51e4ca514f 100644 --- a/packages/core/src/i18n/locales/de.ts +++ b/packages/core/src/i18n/locales/de.ts @@ -403,9 +403,11 @@ export const de: Dictionary = { edited: "bearbeitet", save_button_text: "Speichern", cancel_button_text: "Abbrechen", + deleted_reference_text: "Originalinhalt gelöscht", actions: { add_reaction: "Reaktion hinzufügen", resolve: "Lösen", + reopen: "Wieder öffnen", edit_comment: "Kommentar bearbeiten", delete_comment: "Kommentar löschen", more_actions: "Weitere Aktionen", diff --git a/packages/core/src/i18n/locales/en.ts b/packages/core/src/i18n/locales/en.ts index af7927d207..65fd0dea7e 100644 --- a/packages/core/src/i18n/locales/en.ts +++ b/packages/core/src/i18n/locales/en.ts @@ -384,9 +384,11 @@ export const en = { edited: "edited", save_button_text: "Save", cancel_button_text: "Cancel", + deleted_reference_text: "Original content deleted", actions: { add_reaction: "Add reaction", resolve: "Resolve", + reopen: "Re-open", edit_comment: "Edit comment", delete_comment: "Delete comment", more_actions: "More actions", diff --git a/packages/core/src/i18n/locales/es.ts b/packages/core/src/i18n/locales/es.ts index 9e830b406b..1dcd50b34b 100644 --- a/packages/core/src/i18n/locales/es.ts +++ b/packages/core/src/i18n/locales/es.ts @@ -382,9 +382,11 @@ export const es: Dictionary = { edited: "editado", save_button_text: "Guardar", cancel_button_text: "Cancelar", + deleted_reference_text: "Contenido original eliminado", actions: { add_reaction: "Agregar reacción", resolve: "Resolver", + reopen: "Reabrir", edit_comment: "Editar comentario", delete_comment: "Eliminar comentario", more_actions: "Más acciones", diff --git a/packages/core/src/i18n/locales/fa.ts b/packages/core/src/i18n/locales/fa.ts index f72270e04e..b05ab6cdd4 100644 --- a/packages/core/src/i18n/locales/fa.ts +++ b/packages/core/src/i18n/locales/fa.ts @@ -352,9 +352,11 @@ export const fa = { edited: "ویرایش شده", save_button_text: "ذخیره", cancel_button_text: "لغو", + deleted_reference_text: "محتوای اصلی حذف شد", actions: { add_reaction: "افزودن واکنش", resolve: "حل کردن", + reopen: "باز کردن مجدد", edit_comment: "ویرایش دیدگاه", delete_comment: "حذف دیدگاه", more_actions: "اقدامات بیشتر", diff --git a/packages/core/src/i18n/locales/fr.ts b/packages/core/src/i18n/locales/fr.ts index b56e6942f6..46b1ca1c6b 100644 --- a/packages/core/src/i18n/locales/fr.ts +++ b/packages/core/src/i18n/locales/fr.ts @@ -430,9 +430,11 @@ export const fr: Dictionary = { edited: "modifié", save_button_text: "Enregistrer", cancel_button_text: "Annuler", + deleted_reference_text: "Contenu d'origine supprimé", actions: { add_reaction: "Ajouter une réaction", resolve: "Résoudre", + reopen: "Rouvrir", edit_comment: "Modifier le commentaire", delete_comment: "Supprimer le commentaire", more_actions: "Plus d'actions", diff --git a/packages/core/src/i18n/locales/he.ts b/packages/core/src/i18n/locales/he.ts index 553fc42941..7d1590206e 100644 --- a/packages/core/src/i18n/locales/he.ts +++ b/packages/core/src/i18n/locales/he.ts @@ -384,9 +384,11 @@ export const he: Dictionary = { edited: "נערך", save_button_text: "שמור", cancel_button_text: "בטל", + deleted_reference_text: "התוכן המקורי נמחק", actions: { add_reaction: "הוסף תגובה", resolve: "סמן כפתור", + reopen: "פתח מחדש", edit_comment: "ערוך תגובה", delete_comment: "מחק תגובה", more_actions: "פעולות נוספות", diff --git a/packages/core/src/i18n/locales/hr.ts b/packages/core/src/i18n/locales/hr.ts index 31c0b71159..e08c12d3f9 100644 --- a/packages/core/src/i18n/locales/hr.ts +++ b/packages/core/src/i18n/locales/hr.ts @@ -397,9 +397,11 @@ export const hr: Dictionary = { edited: "uredio", save_button_text: "Spremi", cancel_button_text: "Odustani", + deleted_reference_text: "Originalni sadržaj je obrisan", actions: { add_reaction: "Dodaj reakciju", resolve: "Riješi", + reopen: "Ponovno otvori", edit_comment: "Uredi komentar", delete_comment: "Obriši komentar", more_actions: "Više radnji", diff --git a/packages/core/src/i18n/locales/is.ts b/packages/core/src/i18n/locales/is.ts index 25060d651f..f8e62594b0 100644 --- a/packages/core/src/i18n/locales/is.ts +++ b/packages/core/src/i18n/locales/is.ts @@ -397,9 +397,11 @@ export const is: Dictionary = { edited: "breytt", save_button_text: "Vista", cancel_button_text: "Hætta", + deleted_reference_text: "Upprunalegu efni eytt", actions: { add_reaction: "Bæta við viðbrögðum", resolve: "Leysa", + reopen: "Opna aftur", edit_comment: "Breyta athugasemd", delete_comment: "Eyða athugasemd", more_actions: "Fleiri aðgerðir", diff --git a/packages/core/src/i18n/locales/it.ts b/packages/core/src/i18n/locales/it.ts index 45d9dcd277..e645488349 100644 --- a/packages/core/src/i18n/locales/it.ts +++ b/packages/core/src/i18n/locales/it.ts @@ -406,9 +406,11 @@ export const it: Dictionary = { edited: "modificato", save_button_text: "Salva", cancel_button_text: "Annulla", + deleted_reference_text: "Contenuto originale eliminato", actions: { add_reaction: "Aggiungi reazione", resolve: "Risolvi", + reopen: "Riapri", edit_comment: "Modifica commento", delete_comment: "Elimina commento", more_actions: "Altre azioni", diff --git a/packages/core/src/i18n/locales/ja.ts b/packages/core/src/i18n/locales/ja.ts index 236b834443..3cdf2af9d5 100644 --- a/packages/core/src/i18n/locales/ja.ts +++ b/packages/core/src/i18n/locales/ja.ts @@ -424,9 +424,11 @@ export const ja: Dictionary = { edited: "編集済み", save_button_text: "保存", cancel_button_text: "キャンセル", + deleted_reference_text: "元のコンテンツが削除されました", actions: { add_reaction: "リアクションを追加", resolve: "解決", + reopen: "再開", edit_comment: "コメントを編集", delete_comment: "コメントを削除", more_actions: "その他の操作", diff --git a/packages/core/src/i18n/locales/ko.ts b/packages/core/src/i18n/locales/ko.ts index cce4c8f7c6..08af7b7233 100644 --- a/packages/core/src/i18n/locales/ko.ts +++ b/packages/core/src/i18n/locales/ko.ts @@ -397,9 +397,11 @@ export const ko: Dictionary = { edited: "수정됨", save_button_text: "저장", cancel_button_text: "취소", + deleted_reference_text: "원본 콘텐츠 삭제됨", actions: { add_reaction: "반응 추가", resolve: "해결", + reopen: "다시 열기", edit_comment: "댓글 수정", delete_comment: "댓글 삭제", more_actions: "더 많은 작업", diff --git a/packages/core/src/i18n/locales/nl.ts b/packages/core/src/i18n/locales/nl.ts index 6d1f48cde2..2ab289c961 100644 --- a/packages/core/src/i18n/locales/nl.ts +++ b/packages/core/src/i18n/locales/nl.ts @@ -384,9 +384,11 @@ export const nl: Dictionary = { edited: "bewerkt", save_button_text: "Opslaan", cancel_button_text: "Annuleren", + deleted_reference_text: "Originele inhoud verwijderd", actions: { add_reaction: "Reactie toevoegen", resolve: "Oplossen", + reopen: "Heropenen", edit_comment: "Reactie bewerken", delete_comment: "Reactie verwijderen", more_actions: "Meer acties", diff --git a/packages/core/src/i18n/locales/no.ts b/packages/core/src/i18n/locales/no.ts index c28cac2b9f..b15aa68bff 100644 --- a/packages/core/src/i18n/locales/no.ts +++ b/packages/core/src/i18n/locales/no.ts @@ -401,9 +401,11 @@ export const no: Dictionary = { edited: "redigert", save_button_text: "Lagre", cancel_button_text: "Avbryt", + deleted_reference_text: "Originalt innhold slettet", actions: { add_reaction: "Legg til reaksjon", resolve: "Løs", + reopen: "Gjenåpne", edit_comment: "Rediger kommentar", delete_comment: "Slett kommentar", more_actions: "Flere handlinger", diff --git a/packages/core/src/i18n/locales/pl.ts b/packages/core/src/i18n/locales/pl.ts index 35bf1f255a..70d8cac687 100644 --- a/packages/core/src/i18n/locales/pl.ts +++ b/packages/core/src/i18n/locales/pl.ts @@ -375,9 +375,11 @@ export const pl: Dictionary = { edited: "edytowany", save_button_text: "Zapisz", cancel_button_text: "Anuluj", + deleted_reference_text: "Oryginalna treść usunięta", actions: { add_reaction: "Dodaj reakcję", resolve: "Rozwiąż", + reopen: "Otwórz ponownie", edit_comment: "Edytuj komentarz", delete_comment: "Usuń komentarz", more_actions: "Więcej akcji", diff --git a/packages/core/src/i18n/locales/pt.ts b/packages/core/src/i18n/locales/pt.ts index 7801cd2d36..6e7fb8bfcb 100644 --- a/packages/core/src/i18n/locales/pt.ts +++ b/packages/core/src/i18n/locales/pt.ts @@ -376,9 +376,11 @@ export const pt: Dictionary = { edited: "editado", save_button_text: "Salvar", cancel_button_text: "Cancelar", + deleted_reference_text: "Conteúdo original excluído", actions: { add_reaction: "Adicionar reação", resolve: "Resolver", + reopen: "Reabrir", edit_comment: "Editar comentário", delete_comment: "Excluir comentário", more_actions: "Mais ações", diff --git a/packages/core/src/i18n/locales/ru.ts b/packages/core/src/i18n/locales/ru.ts index 0c7537b1bc..d9e5380726 100644 --- a/packages/core/src/i18n/locales/ru.ts +++ b/packages/core/src/i18n/locales/ru.ts @@ -427,9 +427,11 @@ export const ru: Dictionary = { edited: "изменен", save_button_text: "Сохранить", cancel_button_text: "Отменить", + deleted_reference_text: "Исходный контент удалён", actions: { add_reaction: "Добавить реакцию", resolve: "Решить", + reopen: "Возобновить", edit_comment: "Редактировать комментарий", delete_comment: "Удалить комментарий", more_actions: "Другие действия", diff --git a/packages/core/src/i18n/locales/sk.ts b/packages/core/src/i18n/locales/sk.ts index cbdd0b706f..779ee81423 100644 --- a/packages/core/src/i18n/locales/sk.ts +++ b/packages/core/src/i18n/locales/sk.ts @@ -382,9 +382,11 @@ export const sk = { edited: "upravený", save_button_text: "Uložiť", cancel_button_text: "Zrušiť", + deleted_reference_text: "Pôvodný obsah odstránený", actions: { add_reaction: "Pridať reakciu", resolve: "Vyriešiť", + reopen: "Znovu otvoriť", edit_comment: "Upraviť komentár", delete_comment: "Vymazať komentár", more_actions: "Ďalšie akcie", diff --git a/packages/core/src/i18n/locales/uk.ts b/packages/core/src/i18n/locales/uk.ts index a99a4259c6..3881351dbd 100644 --- a/packages/core/src/i18n/locales/uk.ts +++ b/packages/core/src/i18n/locales/uk.ts @@ -408,9 +408,11 @@ export const uk: Dictionary = { edited: "відредаговано", save_button_text: "Зберегти", cancel_button_text: "Скасувати", + deleted_reference_text: "Оригінальний вміст видалено", actions: { add_reaction: "Додати реакцію", resolve: "Вирішити", + reopen: "Відкрити знову", edit_comment: "Редагувати коментар", delete_comment: "Видалити коментар", more_actions: "Більше дій", diff --git a/packages/core/src/i18n/locales/uz.ts b/packages/core/src/i18n/locales/uz.ts index 8330db43b4..ef28257ed0 100644 --- a/packages/core/src/i18n/locales/uz.ts +++ b/packages/core/src/i18n/locales/uz.ts @@ -417,9 +417,11 @@ export const uz: Dictionary = { edited: "tahrirlangan", save_button_text: "Saqlash", cancel_button_text: "Bekor qilish", + deleted_reference_text: "Asl tarkib o‘chirildi", actions: { add_reaction: "Reaksiya qo‘shish", resolve: "Hal qilish", + reopen: "Qayta ochish", edit_comment: "Izohni tahrirlash", delete_comment: "Izohni o‘chirish", more_actions: "Boshqa amallar", diff --git a/packages/core/src/i18n/locales/vi.ts b/packages/core/src/i18n/locales/vi.ts index b300fdcfd0..3861e42376 100644 --- a/packages/core/src/i18n/locales/vi.ts +++ b/packages/core/src/i18n/locales/vi.ts @@ -383,9 +383,11 @@ export const vi: Dictionary = { edited: "đã chỉnh sửa", save_button_text: "Lưu", cancel_button_text: "Hủy", + deleted_reference_text: "Nội dung gốc đã bị xóa", actions: { add_reaction: "Thêm phản ứng", resolve: "Giải quyết", + reopen: "Mở lại", edit_comment: "Chỉnh sửa bình luận", delete_comment: "Xóa bình luận", more_actions: "Thêm hành động", diff --git a/packages/core/src/i18n/locales/zh-tw.ts b/packages/core/src/i18n/locales/zh-tw.ts index e9aa1e8ac6..6e35fc9cd5 100644 --- a/packages/core/src/i18n/locales/zh-tw.ts +++ b/packages/core/src/i18n/locales/zh-tw.ts @@ -425,9 +425,11 @@ export const zhTW: Dictionary = { edited: "已編輯", save_button_text: "儲存", cancel_button_text: "取消", + deleted_reference_text: "原始內容已刪除", actions: { add_reaction: "新增回應", resolve: "解決", + reopen: "重新開啟", edit_comment: "編輯評論", delete_comment: "刪除評論", more_actions: "更多操作", diff --git a/packages/core/src/i18n/locales/zh.ts b/packages/core/src/i18n/locales/zh.ts index b44c81aa36..dcddbc4382 100644 --- a/packages/core/src/i18n/locales/zh.ts +++ b/packages/core/src/i18n/locales/zh.ts @@ -425,9 +425,11 @@ export const zh: Dictionary = { edited: "已编辑", save_button_text: "保存", cancel_button_text: "取消", + deleted_reference_text: "原始内容已删除", actions: { add_reaction: "添加反应", resolve: "解决", + reopen: "重新打开", edit_comment: "编辑评论", delete_comment: "删除评论", more_actions: "更多操作", diff --git a/packages/react/src/components/Comments/Comment.tsx b/packages/react/src/components/Comments/Comment.tsx index 5e65f28ad0..e1dd66871a 100644 --- a/packages/react/src/components/Comments/Comment.tsx +++ b/packages/react/src/components/Comments/Comment.tsx @@ -171,7 +171,7 @@ export const Comment = ({ (thread.resolved ? ( diff --git a/packages/react/src/components/Comments/FloatingComposer.tsx b/packages/react/src/components/Comments/FloatingComposer.tsx index aa3e786dd9..023a8eccf6 100644 --- a/packages/react/src/components/Comments/FloatingComposer.tsx +++ b/packages/react/src/components/Comments/FloatingComposer.tsx @@ -62,7 +62,7 @@ export function FloatingComposer< > { @@ -81,7 +81,7 @@ export function FloatingComposer< editor.focus(); }} > - Save + {dict.comments.save_button_text} )} diff --git a/packages/react/src/components/Comments/ThreadsSidebar.tsx b/packages/react/src/components/Comments/ThreadsSidebar.tsx index a3d282f952..efd26aa2cf 100644 --- a/packages/react/src/components/Comments/ThreadsSidebar.tsx +++ b/packages/react/src/components/Comments/ThreadsSidebar.tsx @@ -135,7 +135,7 @@ export function getReferenceText( ) { return editor.transact((tr) => { if (!threadPosition) { - return "Original content deleted"; + return editor.dictionary.comments.deleted_reference_text; } // TODO: Handles an edge case where the editor is re-rendered and the document From 15b7dea3fdd44661a4ed7a3aec81f480763a8b86 Mon Sep 17 00:00:00 2001 From: Matthew Lipski <50169049+matthewlipski@users.noreply.github.com> Date: Tue, 28 Apr 2026 16:01:27 +0200 Subject: [PATCH 30/76] feat: Drag hendle menu delete button removes all other blocks in selection (BLO-1007) (#2683) * Made side menu delete button delete other blocks spanned by selection * Added e2e tests * Reverted `package.json` --- .../DefaultItems/RemoveBlockItem.tsx | 9 +- .../end-to-end/draghandle/draghandle.test.ts | 59 ++++++++++++ ...ehoveroutsideselection-chromium-linux.json | 96 +++++++++++++++++++ ...tehoveroutsideselection-firefox-linux.json | 96 +++++++++++++++++++ ...etehoveroutsideselection-webkit-linux.json | 96 +++++++++++++++++++ ...ledeletemultiselection-chromium-linux.json | 74 ++++++++++++++ ...dledeletemultiselection-firefox-linux.json | 74 ++++++++++++++ ...ndledeletemultiselection-webkit-linux.json | 74 ++++++++++++++ 8 files changed, 577 insertions(+), 1 deletion(-) create mode 100644 tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandledeletehoveroutsideselection-chromium-linux.json create mode 100644 tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandledeletehoveroutsideselection-firefox-linux.json create mode 100644 tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandledeletehoveroutsideselection-webkit-linux.json create mode 100644 tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandledeletemultiselection-chromium-linux.json create mode 100644 tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandledeletemultiselection-firefox-linux.json create mode 100644 tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandledeletemultiselection-webkit-linux.json diff --git a/packages/react/src/components/SideMenu/DragHandleMenu/DefaultItems/RemoveBlockItem.tsx b/packages/react/src/components/SideMenu/DragHandleMenu/DefaultItems/RemoveBlockItem.tsx index ddcf027534..12ade8b4ae 100644 --- a/packages/react/src/components/SideMenu/DragHandleMenu/DefaultItems/RemoveBlockItem.tsx +++ b/packages/react/src/components/SideMenu/DragHandleMenu/DefaultItems/RemoveBlockItem.tsx @@ -22,7 +22,14 @@ export const RemoveBlockItem = (props: { children: ReactNode }) => { return ( editor.removeBlocks([block])} + onClick={() => { + const selectedBlocks = editor.getSelection()?.blocks; + const blocksToRemove = + selectedBlocks && selectedBlocks.some((b) => b.id === block.id) + ? selectedBlocks + : [block]; + editor.removeBlocks(blocksToRemove); + }} > {props.children} diff --git a/tests/src/end-to-end/draghandle/draghandle.test.ts b/tests/src/end-to-end/draghandle/draghandle.test.ts index f77c414d2b..c2e9c3c211 100644 --- a/tests/src/end-to-end/draghandle/draghandle.test.ts +++ b/tests/src/end-to-end/draghandle/draghandle.test.ts @@ -2,6 +2,7 @@ import { expect, Page } from "@playwright/test"; import { test } from "../../setup/setupScript.js"; import { BASE_URL, + BULLET_LIST_SELECTOR, DRAG_HANDLE_ADD_SELECTOR, DRAG_HANDLE_MENU_SELECTOR, DRAG_HANDLE_SELECTOR, @@ -158,6 +159,64 @@ test.describe("Check Draghandle functionality", () => { await compareDocToSnapshot(page, "dragHandleDocStructure"); }); + test("Delete button should delete all blocks in multi-block selection when hovered block is in selection", async () => { + await executeSlashCommand(page, "h1"); + await page.keyboard.type("Heading 1"); + await page.keyboard.press("Enter", { delay: 10 }); + await executeSlashCommand(page, "h2"); + await page.keyboard.type("Heading 2"); + await page.keyboard.press("Enter", { delay: 10 }); + await executeSlashCommand(page, "h3"); + await page.keyboard.type("Heading 3"); + await page.keyboard.press("Enter", { delay: 10 }); + await executeSlashCommand(page, "bullet"); + await page.keyboard.type("Bullet List"); + + await page.keyboard.down("Shift"); + await page.keyboard.press("ArrowUp"); + await page.keyboard.press("ControlOrMeta+ArrowLeft"); + await page.keyboard.up("Shift"); + + await page.hover(H_THREE_BLOCK_SELECTOR); + await page.click(DRAG_HANDLE_SELECTOR); + await page.click("text=Delete"); + await page.waitForSelector(H_ONE_BLOCK_SELECTOR); + await page.waitForSelector(H_TWO_BLOCK_SELECTOR); + await page.waitForSelector(H_THREE_BLOCK_SELECTOR, { state: "detached" }); + await page.waitForSelector(BULLET_LIST_SELECTOR, { state: "detached" }); + + await compareDocToSnapshot(page, "draghandledeletemultiselection"); + }); + + test("Delete button should delete only hovered block when it is outside multi-block selection", async () => { + await executeSlashCommand(page, "h1"); + await page.keyboard.type("Heading 1"); + await page.keyboard.press("Enter", { delay: 10 }); + await executeSlashCommand(page, "h2"); + await page.keyboard.type("Heading 2"); + await page.keyboard.press("Enter", { delay: 10 }); + await executeSlashCommand(page, "h3"); + await page.keyboard.type("Heading 3"); + await page.keyboard.press("Enter", { delay: 10 }); + await executeSlashCommand(page, "bullet"); + await page.keyboard.type("Bullet List"); + + await page.keyboard.down("Shift"); + await page.keyboard.press("ArrowUp"); + await page.keyboard.press("ControlOrMeta+ArrowLeft"); + await page.keyboard.up("Shift"); + + await page.hover(H_ONE_BLOCK_SELECTOR); + await page.click(DRAG_HANDLE_SELECTOR); + await page.click("text=Delete"); + await page.waitForSelector(H_ONE_BLOCK_SELECTOR, { state: "detached" }); + await page.waitForSelector(H_TWO_BLOCK_SELECTOR); + await page.waitForSelector(H_THREE_BLOCK_SELECTOR); + await page.waitForSelector(BULLET_LIST_SELECTOR); + + await compareDocToSnapshot(page, "draghandledeletehoveroutsideselection"); + }); + test("Deleting block with children should delete all children", async () => { await page.goto(BASE_URL, { waitUntil: "networkidle" }); await focusOnEditor(page); diff --git a/tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandledeletehoveroutsideselection-chromium-linux.json b/tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandledeletehoveroutsideselection-chromium-linux.json new file mode 100644 index 0000000000..4a3ca359e4 --- /dev/null +++ b/tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandledeletehoveroutsideselection-chromium-linux.json @@ -0,0 +1,96 @@ +{ + "type": "doc", + "content": [ + { + "type": "blockGroup", + "content": [ + { + "type": "blockContainer", + "attrs": { + "id": "2" + }, + "content": [ + { + "type": "heading", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left", + "level": 2, + "isToggleable": false + }, + "content": [ + { + "type": "text", + "text": "Heading 2" + } + ] + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "3" + }, + "content": [ + { + "type": "heading", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left", + "level": 3, + "isToggleable": false + }, + "content": [ + { + "type": "text", + "text": "Heading 3" + } + ] + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "4" + }, + "content": [ + { + "type": "bulletListItem", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left" + }, + "content": [ + { + "type": "text", + "text": "Bullet List" + } + ] + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "1" + }, + "content": [ + { + "type": "paragraph", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandledeletehoveroutsideselection-firefox-linux.json b/tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandledeletehoveroutsideselection-firefox-linux.json new file mode 100644 index 0000000000..4a3ca359e4 --- /dev/null +++ b/tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandledeletehoveroutsideselection-firefox-linux.json @@ -0,0 +1,96 @@ +{ + "type": "doc", + "content": [ + { + "type": "blockGroup", + "content": [ + { + "type": "blockContainer", + "attrs": { + "id": "2" + }, + "content": [ + { + "type": "heading", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left", + "level": 2, + "isToggleable": false + }, + "content": [ + { + "type": "text", + "text": "Heading 2" + } + ] + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "3" + }, + "content": [ + { + "type": "heading", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left", + "level": 3, + "isToggleable": false + }, + "content": [ + { + "type": "text", + "text": "Heading 3" + } + ] + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "4" + }, + "content": [ + { + "type": "bulletListItem", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left" + }, + "content": [ + { + "type": "text", + "text": "Bullet List" + } + ] + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "1" + }, + "content": [ + { + "type": "paragraph", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandledeletehoveroutsideselection-webkit-linux.json b/tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandledeletehoveroutsideselection-webkit-linux.json new file mode 100644 index 0000000000..4a3ca359e4 --- /dev/null +++ b/tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandledeletehoveroutsideselection-webkit-linux.json @@ -0,0 +1,96 @@ +{ + "type": "doc", + "content": [ + { + "type": "blockGroup", + "content": [ + { + "type": "blockContainer", + "attrs": { + "id": "2" + }, + "content": [ + { + "type": "heading", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left", + "level": 2, + "isToggleable": false + }, + "content": [ + { + "type": "text", + "text": "Heading 2" + } + ] + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "3" + }, + "content": [ + { + "type": "heading", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left", + "level": 3, + "isToggleable": false + }, + "content": [ + { + "type": "text", + "text": "Heading 3" + } + ] + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "4" + }, + "content": [ + { + "type": "bulletListItem", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left" + }, + "content": [ + { + "type": "text", + "text": "Bullet List" + } + ] + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "1" + }, + "content": [ + { + "type": "paragraph", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandledeletemultiselection-chromium-linux.json b/tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandledeletemultiselection-chromium-linux.json new file mode 100644 index 0000000000..f95bb590b9 --- /dev/null +++ b/tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandledeletemultiselection-chromium-linux.json @@ -0,0 +1,74 @@ +{ + "type": "doc", + "content": [ + { + "type": "blockGroup", + "content": [ + { + "type": "blockContainer", + "attrs": { + "id": "0" + }, + "content": [ + { + "type": "heading", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left", + "level": 1, + "isToggleable": false + }, + "content": [ + { + "type": "text", + "text": "Heading 1" + } + ] + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "2" + }, + "content": [ + { + "type": "heading", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left", + "level": 2, + "isToggleable": false + }, + "content": [ + { + "type": "text", + "text": "Heading 2" + } + ] + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "1" + }, + "content": [ + { + "type": "paragraph", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandledeletemultiselection-firefox-linux.json b/tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandledeletemultiselection-firefox-linux.json new file mode 100644 index 0000000000..f95bb590b9 --- /dev/null +++ b/tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandledeletemultiselection-firefox-linux.json @@ -0,0 +1,74 @@ +{ + "type": "doc", + "content": [ + { + "type": "blockGroup", + "content": [ + { + "type": "blockContainer", + "attrs": { + "id": "0" + }, + "content": [ + { + "type": "heading", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left", + "level": 1, + "isToggleable": false + }, + "content": [ + { + "type": "text", + "text": "Heading 1" + } + ] + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "2" + }, + "content": [ + { + "type": "heading", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left", + "level": 2, + "isToggleable": false + }, + "content": [ + { + "type": "text", + "text": "Heading 2" + } + ] + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "1" + }, + "content": [ + { + "type": "paragraph", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandledeletemultiselection-webkit-linux.json b/tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandledeletemultiselection-webkit-linux.json new file mode 100644 index 0000000000..f95bb590b9 --- /dev/null +++ b/tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandledeletemultiselection-webkit-linux.json @@ -0,0 +1,74 @@ +{ + "type": "doc", + "content": [ + { + "type": "blockGroup", + "content": [ + { + "type": "blockContainer", + "attrs": { + "id": "0" + }, + "content": [ + { + "type": "heading", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left", + "level": 1, + "isToggleable": false + }, + "content": [ + { + "type": "text", + "text": "Heading 1" + } + ] + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "2" + }, + "content": [ + { + "type": "heading", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left", + "level": 2, + "isToggleable": false + }, + "content": [ + { + "type": "text", + "text": "Heading 2" + } + ] + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "1" + }, + "content": [ + { + "type": "paragraph", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left" + } + } + ] + } + ] + } + ] +} \ No newline at end of file From 6dbd6ebf9a8a7c986bfaa73e01dd3d11dbd80094 Mon Sep 17 00:00:00 2001 From: Matthew Lipski <50169049+matthewlipski@users.noreply.github.com> Date: Wed, 29 Apr 2026 14:46:48 +0200 Subject: [PATCH 31/76] feat: Enter moves selection to cell below in tables (BLO-1006) (#2685) * Made Enter move selection to cell below in tables * Implemented PR feedback --- .../core/src/blocks/Table/TableExtension.ts | 47 ++++- tests/src/end-to-end/tables/tables.test.ts | 18 ++ ...rMovesToCellBelow-json-chromium-linux.json | 160 +++++++++++++++++ ...erMovesToCellBelow-json-firefox-linux.json | 160 +++++++++++++++++ ...terMovesToCellBelow-json-webkit-linux.json | 160 +++++++++++++++++ ...nterNewLineInCell-json-chromium-linux.json | 161 ++++++++++++++++++ ...EnterNewLineInCell-json-firefox-linux.json | 161 ++++++++++++++++++ ...tEnterNewLineInCell-json-webkit-linux.json | 161 ++++++++++++++++++ 8 files changed, 1019 insertions(+), 9 deletions(-) create mode 100644 tests/src/end-to-end/tables/tables.test.ts-snapshots/enterMovesToCellBelow-json-chromium-linux.json create mode 100644 tests/src/end-to-end/tables/tables.test.ts-snapshots/enterMovesToCellBelow-json-firefox-linux.json create mode 100644 tests/src/end-to-end/tables/tables.test.ts-snapshots/enterMovesToCellBelow-json-webkit-linux.json create mode 100644 tests/src/end-to-end/tables/tables.test.ts-snapshots/shiftEnterNewLineInCell-json-chromium-linux.json create mode 100644 tests/src/end-to-end/tables/tables.test.ts-snapshots/shiftEnterNewLineInCell-json-firefox-linux.json create mode 100644 tests/src/end-to-end/tables/tables.test.ts-snapshots/shiftEnterNewLineInCell-json-webkit-linux.json diff --git a/packages/core/src/blocks/Table/TableExtension.ts b/packages/core/src/blocks/Table/TableExtension.ts index 3660d8c620..1d2cf9d47f 100644 --- a/packages/core/src/blocks/Table/TableExtension.ts +++ b/packages/core/src/blocks/Table/TableExtension.ts @@ -1,5 +1,14 @@ import { callOrReturn, Extension, getExtensionField } from "@tiptap/core"; -import { columnResizing, goToNextCell, tableEditing } from "prosemirror-tables"; +import { TextSelection } from "prosemirror-state"; +import { + columnResizing, + goToNextCell, + isInTable, + moveCellForward, + nextCell, + selectionCell, + tableEditing, +} from "prosemirror-tables"; export const RESIZE_MIN_WIDTH = 35; export const EMPTY_CELL_WIDTH = 120; @@ -24,19 +33,39 @@ export const TableExtension = Extension.create({ addKeyboardShortcuts() { return { - // Makes enter create a new line within the cell. + // Moves the selection to the cell below. Enter: () => { if ( - this.editor.state.selection.empty && - this.editor.state.selection.$head.parent.type.name === - "tableParagraph" + this.editor.state.selection.$head.parent.type.name !== + "tableParagraph" ) { - this.editor.commands.insertContent({ type: "hardBreak" }); - - return true; + return false; } - return false; + return this.editor.commands.command(({ state, dispatch }) => { + if (!isInTable(state)) { + return false; + } + + const $cell = selectionCell(state); + const $nextCell = nextCell($cell, "vert", 1); + + if (!$nextCell) { + return false; + } + + if (dispatch) { + dispatch( + state.tr + .setSelection( + TextSelection.between($nextCell, moveCellForward($nextCell)), + ) + .scrollIntoView(), + ); + } + + return true; + }); }, // Ensures that backspace won't delete the table if the text cursor is at // the start of a cell and the selection is empty. diff --git a/tests/src/end-to-end/tables/tables.test.ts b/tests/src/end-to-end/tables/tables.test.ts index 4d11d597e6..2abfc08c30 100644 --- a/tests/src/end-to-end/tables/tables.test.ts +++ b/tests/src/end-to-end/tables/tables.test.ts @@ -49,4 +49,22 @@ test.describe("Check Table interactions", () => { await compareDocToSnapshot(page, "arrowKeyCells.json"); }); + test("Enter should move to cell below", async ({ page }) => { + await focusOnEditor(page); + await executeSlashCommand(page, "table"); + await page.keyboard.type("Top"); + await page.keyboard.press("Enter"); + await page.keyboard.type("Bottom"); + + await compareDocToSnapshot(page, "enterMovesToCellBelow.json"); + }); + test("Shift+Enter should create a new line within cell", async ({ page }) => { + await focusOnEditor(page); + await executeSlashCommand(page, "table"); + await page.keyboard.type("Line 1"); + await page.keyboard.press("Shift+Enter"); + await page.keyboard.type("Line 2"); + + await compareDocToSnapshot(page, "shiftEnterNewLineInCell.json"); + }); }); diff --git a/tests/src/end-to-end/tables/tables.test.ts-snapshots/enterMovesToCellBelow-json-chromium-linux.json b/tests/src/end-to-end/tables/tables.test.ts-snapshots/enterMovesToCellBelow-json-chromium-linux.json new file mode 100644 index 0000000000..cb17830afd --- /dev/null +++ b/tests/src/end-to-end/tables/tables.test.ts-snapshots/enterMovesToCellBelow-json-chromium-linux.json @@ -0,0 +1,160 @@ +{ + "type": "doc", + "content": [ + { + "type": "blockGroup", + "content": [ + { + "type": "blockContainer", + "attrs": { + "id": "0" + }, + "content": [ + { + "type": "table", + "attrs": { + "textColor": "default" + }, + "content": [ + { + "type": "tableRow", + "content": [ + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph", + "content": [ + { + "type": "text", + "text": "Top" + } + ] + } + ] + }, + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph" + } + ] + }, + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph" + } + ] + } + ] + }, + { + "type": "tableRow", + "content": [ + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph", + "content": [ + { + "type": "text", + "text": "Bottom" + } + ] + } + ] + }, + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph" + } + ] + }, + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "1" + }, + "content": [ + { + "type": "paragraph", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/src/end-to-end/tables/tables.test.ts-snapshots/enterMovesToCellBelow-json-firefox-linux.json b/tests/src/end-to-end/tables/tables.test.ts-snapshots/enterMovesToCellBelow-json-firefox-linux.json new file mode 100644 index 0000000000..cb17830afd --- /dev/null +++ b/tests/src/end-to-end/tables/tables.test.ts-snapshots/enterMovesToCellBelow-json-firefox-linux.json @@ -0,0 +1,160 @@ +{ + "type": "doc", + "content": [ + { + "type": "blockGroup", + "content": [ + { + "type": "blockContainer", + "attrs": { + "id": "0" + }, + "content": [ + { + "type": "table", + "attrs": { + "textColor": "default" + }, + "content": [ + { + "type": "tableRow", + "content": [ + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph", + "content": [ + { + "type": "text", + "text": "Top" + } + ] + } + ] + }, + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph" + } + ] + }, + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph" + } + ] + } + ] + }, + { + "type": "tableRow", + "content": [ + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph", + "content": [ + { + "type": "text", + "text": "Bottom" + } + ] + } + ] + }, + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph" + } + ] + }, + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "1" + }, + "content": [ + { + "type": "paragraph", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/src/end-to-end/tables/tables.test.ts-snapshots/enterMovesToCellBelow-json-webkit-linux.json b/tests/src/end-to-end/tables/tables.test.ts-snapshots/enterMovesToCellBelow-json-webkit-linux.json new file mode 100644 index 0000000000..cb17830afd --- /dev/null +++ b/tests/src/end-to-end/tables/tables.test.ts-snapshots/enterMovesToCellBelow-json-webkit-linux.json @@ -0,0 +1,160 @@ +{ + "type": "doc", + "content": [ + { + "type": "blockGroup", + "content": [ + { + "type": "blockContainer", + "attrs": { + "id": "0" + }, + "content": [ + { + "type": "table", + "attrs": { + "textColor": "default" + }, + "content": [ + { + "type": "tableRow", + "content": [ + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph", + "content": [ + { + "type": "text", + "text": "Top" + } + ] + } + ] + }, + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph" + } + ] + }, + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph" + } + ] + } + ] + }, + { + "type": "tableRow", + "content": [ + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph", + "content": [ + { + "type": "text", + "text": "Bottom" + } + ] + } + ] + }, + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph" + } + ] + }, + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "1" + }, + "content": [ + { + "type": "paragraph", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/src/end-to-end/tables/tables.test.ts-snapshots/shiftEnterNewLineInCell-json-chromium-linux.json b/tests/src/end-to-end/tables/tables.test.ts-snapshots/shiftEnterNewLineInCell-json-chromium-linux.json new file mode 100644 index 0000000000..2c2cb65b20 --- /dev/null +++ b/tests/src/end-to-end/tables/tables.test.ts-snapshots/shiftEnterNewLineInCell-json-chromium-linux.json @@ -0,0 +1,161 @@ +{ + "type": "doc", + "content": [ + { + "type": "blockGroup", + "content": [ + { + "type": "blockContainer", + "attrs": { + "id": "0" + }, + "content": [ + { + "type": "table", + "attrs": { + "textColor": "default" + }, + "content": [ + { + "type": "tableRow", + "content": [ + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph", + "content": [ + { + "type": "text", + "text": "Line 1" + }, + { + "type": "hardBreak" + }, + { + "type": "text", + "text": "Line 2" + } + ] + } + ] + }, + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph" + } + ] + }, + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph" + } + ] + } + ] + }, + { + "type": "tableRow", + "content": [ + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph" + } + ] + }, + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph" + } + ] + }, + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "1" + }, + "content": [ + { + "type": "paragraph", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/src/end-to-end/tables/tables.test.ts-snapshots/shiftEnterNewLineInCell-json-firefox-linux.json b/tests/src/end-to-end/tables/tables.test.ts-snapshots/shiftEnterNewLineInCell-json-firefox-linux.json new file mode 100644 index 0000000000..2c2cb65b20 --- /dev/null +++ b/tests/src/end-to-end/tables/tables.test.ts-snapshots/shiftEnterNewLineInCell-json-firefox-linux.json @@ -0,0 +1,161 @@ +{ + "type": "doc", + "content": [ + { + "type": "blockGroup", + "content": [ + { + "type": "blockContainer", + "attrs": { + "id": "0" + }, + "content": [ + { + "type": "table", + "attrs": { + "textColor": "default" + }, + "content": [ + { + "type": "tableRow", + "content": [ + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph", + "content": [ + { + "type": "text", + "text": "Line 1" + }, + { + "type": "hardBreak" + }, + { + "type": "text", + "text": "Line 2" + } + ] + } + ] + }, + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph" + } + ] + }, + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph" + } + ] + } + ] + }, + { + "type": "tableRow", + "content": [ + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph" + } + ] + }, + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph" + } + ] + }, + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "1" + }, + "content": [ + { + "type": "paragraph", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/src/end-to-end/tables/tables.test.ts-snapshots/shiftEnterNewLineInCell-json-webkit-linux.json b/tests/src/end-to-end/tables/tables.test.ts-snapshots/shiftEnterNewLineInCell-json-webkit-linux.json new file mode 100644 index 0000000000..2c2cb65b20 --- /dev/null +++ b/tests/src/end-to-end/tables/tables.test.ts-snapshots/shiftEnterNewLineInCell-json-webkit-linux.json @@ -0,0 +1,161 @@ +{ + "type": "doc", + "content": [ + { + "type": "blockGroup", + "content": [ + { + "type": "blockContainer", + "attrs": { + "id": "0" + }, + "content": [ + { + "type": "table", + "attrs": { + "textColor": "default" + }, + "content": [ + { + "type": "tableRow", + "content": [ + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph", + "content": [ + { + "type": "text", + "text": "Line 1" + }, + { + "type": "hardBreak" + }, + { + "type": "text", + "text": "Line 2" + } + ] + } + ] + }, + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph" + } + ] + }, + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph" + } + ] + } + ] + }, + { + "type": "tableRow", + "content": [ + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph" + } + ] + }, + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph" + } + ] + }, + { + "type": "tableCell", + "attrs": { + "textColor": "default", + "backgroundColor": "default", + "textAlignment": "left", + "colspan": 1, + "rowspan": 1, + "colwidth": null + }, + "content": [ + { + "type": "tableParagraph" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "1" + }, + "content": [ + { + "type": "paragraph", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left" + } + } + ] + } + ] + } + ] +} \ No newline at end of file From 38c5515d1517f2db711199ccc75d54e0758a16db Mon Sep 17 00:00:00 2001 From: Matthew Lipski <50169049+matthewlipski@users.noreply.github.com> Date: Wed, 29 Apr 2026 17:41:36 +0200 Subject: [PATCH 32/76] fix: Color naming & CSS (BLO-946) (#2684) * Changed "Default" color name to "Auto" * Fixed block color CSS issues * Fixed rendering issues --- .../04-rendering-static-documents/src/App.tsx | 12 +++---- packages/core/src/editor/Block.css | 18 ---------- packages/core/src/i18n/locales/ar.ts | 2 +- packages/core/src/i18n/locales/de.ts | 2 +- packages/core/src/i18n/locales/en.ts | 2 +- packages/core/src/i18n/locales/es.ts | 2 +- packages/core/src/i18n/locales/fa.ts | 2 +- packages/core/src/i18n/locales/fr.ts | 2 +- packages/core/src/i18n/locales/he.ts | 2 +- packages/core/src/i18n/locales/hr.ts | 2 +- packages/core/src/i18n/locales/is.ts | 2 +- packages/core/src/i18n/locales/it.ts | 2 +- packages/core/src/i18n/locales/ja.ts | 2 +- packages/core/src/i18n/locales/ko.ts | 2 +- packages/core/src/i18n/locales/nl.ts | 2 +- packages/core/src/i18n/locales/no.ts | 2 +- packages/core/src/i18n/locales/pl.ts | 2 +- packages/core/src/i18n/locales/pt.ts | 2 +- packages/core/src/i18n/locales/ru.ts | 2 +- packages/core/src/i18n/locales/sk.ts | 2 +- packages/core/src/i18n/locales/uk.ts | 2 +- packages/core/src/i18n/locales/uz.ts | 2 +- packages/core/src/i18n/locales/vi.ts | 2 +- packages/core/src/i18n/locales/zh-tw.ts | 2 +- packages/core/src/i18n/locales/zh.ts | 2 +- packages/react/src/editor/styles.css | 36 +++++++++---------- 26 files changed, 47 insertions(+), 65 deletions(-) diff --git a/examples/02-backend/04-rendering-static-documents/src/App.tsx b/examples/02-backend/04-rendering-static-documents/src/App.tsx index b6ffd098a0..3a5db9891b 100644 --- a/examples/02-backend/04-rendering-static-documents/src/App.tsx +++ b/examples/02-backend/04-rendering-static-documents/src/App.tsx @@ -22,17 +22,17 @@ This example has the HTML hard-coded, but shows at least how the document will b export default function App() { // This HTML is generated by the ServerBlockNoteEditor.blocksToFullHTML method const html = `

-
-
-
+
+
+

Heading 2

-
-
-
+
+
+

Paragraph

diff --git a/packages/core/src/editor/Block.css b/packages/core/src/editor/Block.css index 3d82abc13a..4315c528f5 100644 --- a/packages/core/src/editor/Block.css +++ b/packages/core/src/editor/Block.css @@ -574,110 +574,92 @@ NESTED BLOCKS /* TEXT COLORS */ [data-style-type="textColor"][data-value="gray"], -[data-text-color="gray"], .bn-block:has(> .bn-block-content[data-text-color="gray"]) { color: #9b9a97; } [data-style-type="textColor"][data-value="brown"], -[data-text-color="brown"], .bn-block:has(> .bn-block-content[data-text-color="brown"]) { color: #64473a; } [data-style-type="textColor"][data-value="red"], -[data-text-color="red"], .bn-block:has(> .bn-block-content[data-text-color="red"]) { color: #e03e3e; } [data-style-type="textColor"][data-value="orange"], -[data-text-color="orange"], .bn-block:has(> .bn-block-content[data-text-color="orange"]) { color: #d9730d; } [data-style-type="textColor"][data-value="yellow"], -[data-text-color="yellow"], .bn-block:has(> .bn-block-content[data-text-color="yellow"]) { color: #dfab01; } [data-style-type="textColor"][data-value="green"], -[data-text-color="green"], .bn-block:has(> .bn-block-content[data-text-color="green"]) { color: #4d6461; } [data-style-type="textColor"][data-value="blue"], -[data-text-color="blue"], .bn-block:has(> .bn-block-content[data-text-color="blue"]) { color: #0b6e99; } [data-style-type="textColor"][data-value="purple"], -[data-text-color="purple"], .bn-block:has(> .bn-block-content[data-text-color="purple"]) { color: #6940a5; } [data-style-type="textColor"][data-value="pink"], -[data-text-color="pink"], .bn-block:has(> .bn-block-content[data-text-color="pink"]) { color: #ad1a72; } /* BACKGROUND COLORS */ [data-style-type="backgroundColor"][data-value="gray"], -[data-background-color="gray"], .bn-block:has(> .bn-block-content[data-background-color="gray"]) { background-color: #ebeced; } [data-style-type="backgroundColor"][data-value="brown"], -[data-background-color="brown"], .bn-block:has(> .bn-block-content[data-background-color="brown"]) { background-color: #e9e5e3; } [data-style-type="backgroundColor"][data-value="red"], -[data-background-color="red"], .bn-block:has(> .bn-block-content[data-background-color="red"]) { background-color: #fbe4e4; } [data-style-type="backgroundColor"][data-value="orange"], -[data-background-color="orange"], .bn-block:has(> .bn-block-content[data-background-color="orange"]) { background-color: #f6e9d9; } [data-style-type="backgroundColor"][data-value="yellow"], -[data-background-color="yellow"], .bn-block:has(> .bn-block-content[data-background-color="yellow"]) { background-color: #fbf3db; } [data-style-type="backgroundColor"][data-value="green"], -[data-background-color="green"], .bn-block:has(> .bn-block-content[data-background-color="green"]) { background-color: #ddedea; } [data-style-type="backgroundColor"][data-value="blue"], -[data-background-color="blue"], .bn-block:has(> .bn-block-content[data-background-color="blue"]) { background-color: #ddebf1; } [data-style-type="backgroundColor"][data-value="purple"], -[data-background-color="purple"], .bn-block:has(> .bn-block-content[data-background-color="purple"]) { background-color: #eae4f2; } [data-style-type="backgroundColor"][data-value="pink"], -[data-background-color="pink"], .bn-block:has(> .bn-block-content[data-background-color="pink"]) { background-color: #f4dfeb; } diff --git a/packages/core/src/i18n/locales/ar.ts b/packages/core/src/i18n/locales/ar.ts index a2b6e4de1c..37abc3e30b 100644 --- a/packages/core/src/i18n/locales/ar.ts +++ b/packages/core/src/i18n/locales/ar.ts @@ -214,7 +214,7 @@ export const ar: Dictionary = { text_title: "نص", background_title: "خلفية", colors: { - default: "افتراضي", + default: "تلقائي", gray: "رمادي", brown: "بني", red: "أحمر", diff --git a/packages/core/src/i18n/locales/de.ts b/packages/core/src/i18n/locales/de.ts index 51e4ca514f..40944212b3 100644 --- a/packages/core/src/i18n/locales/de.ts +++ b/packages/core/src/i18n/locales/de.ts @@ -249,7 +249,7 @@ export const de: Dictionary = { text_title: "Text", background_title: "Hintergrund", colors: { - default: "Standard", + default: "Automatisch", gray: "Grau", brown: "Braun", red: "Rot", diff --git a/packages/core/src/i18n/locales/en.ts b/packages/core/src/i18n/locales/en.ts index 65fd0dea7e..784d130094 100644 --- a/packages/core/src/i18n/locales/en.ts +++ b/packages/core/src/i18n/locales/en.ts @@ -229,7 +229,7 @@ export const en = { text_title: "Text", background_title: "Background", colors: { - default: "Default", + default: "Auto", gray: "Gray", brown: "Brown", red: "Red", diff --git a/packages/core/src/i18n/locales/es.ts b/packages/core/src/i18n/locales/es.ts index 1dcd50b34b..4757d9784f 100644 --- a/packages/core/src/i18n/locales/es.ts +++ b/packages/core/src/i18n/locales/es.ts @@ -228,7 +228,7 @@ export const es: Dictionary = { text_title: "Texto", background_title: "Fondo", colors: { - default: "Por defecto", + default: "Automático", gray: "Gris", brown: "Marrón", red: "Rojo", diff --git a/packages/core/src/i18n/locales/fa.ts b/packages/core/src/i18n/locales/fa.ts index b05ab6cdd4..dff80beb81 100644 --- a/packages/core/src/i18n/locales/fa.ts +++ b/packages/core/src/i18n/locales/fa.ts @@ -197,7 +197,7 @@ export const fa = { text_title: "متن", background_title: "پس‌زمینه", colors: { - default: "پیش‌فرض", + default: "خودکار", gray: "خاکستری", brown: "قهوه‌ای", red: "قرمز", diff --git a/packages/core/src/i18n/locales/fr.ts b/packages/core/src/i18n/locales/fr.ts index 46b1ca1c6b..bfb3350366 100644 --- a/packages/core/src/i18n/locales/fr.ts +++ b/packages/core/src/i18n/locales/fr.ts @@ -275,7 +275,7 @@ export const fr: Dictionary = { text_title: "Texte", background_title: "Fond", colors: { - default: "Défaut", + default: "Auto", gray: "Gris", brown: "Marron", red: "Rouge", diff --git a/packages/core/src/i18n/locales/he.ts b/packages/core/src/i18n/locales/he.ts index 7d1590206e..59cdc56414 100644 --- a/packages/core/src/i18n/locales/he.ts +++ b/packages/core/src/i18n/locales/he.ts @@ -230,7 +230,7 @@ export const he: Dictionary = { text_title: "טקסט", background_title: "רקע", colors: { - default: "ברירת מחדל", + default: "אוטומטי", gray: "אפור", brown: "חום", red: "אדום", diff --git a/packages/core/src/i18n/locales/hr.ts b/packages/core/src/i18n/locales/hr.ts index e08c12d3f9..c2081599cc 100644 --- a/packages/core/src/i18n/locales/hr.ts +++ b/packages/core/src/i18n/locales/hr.ts @@ -242,7 +242,7 @@ export const hr: Dictionary = { text_title: "Tekst", background_title: "Pozadina", colors: { - default: "Zadano", + default: "Automatski", gray: "Siva", brown: "Smeđa", red: "Crvena", diff --git a/packages/core/src/i18n/locales/is.ts b/packages/core/src/i18n/locales/is.ts index f8e62594b0..fcde471e56 100644 --- a/packages/core/src/i18n/locales/is.ts +++ b/packages/core/src/i18n/locales/is.ts @@ -242,7 +242,7 @@ export const is: Dictionary = { text_title: "Texti", background_title: "Bakgrunnur", colors: { - default: "Sjálfgefið", + default: "Sjálfvirkt", gray: "Grár", brown: "Brúnn", red: "Rauður", diff --git a/packages/core/src/i18n/locales/it.ts b/packages/core/src/i18n/locales/it.ts index e645488349..4053581107 100644 --- a/packages/core/src/i18n/locales/it.ts +++ b/packages/core/src/i18n/locales/it.ts @@ -251,7 +251,7 @@ export const it: Dictionary = { text_title: "Testo", background_title: "Sfondo", colors: { - default: "Predefinito", + default: "Automatico", gray: "Grigio", brown: "Marrone", red: "Rosso", diff --git a/packages/core/src/i18n/locales/ja.ts b/packages/core/src/i18n/locales/ja.ts index 3cdf2af9d5..ce5ba87a77 100644 --- a/packages/core/src/i18n/locales/ja.ts +++ b/packages/core/src/i18n/locales/ja.ts @@ -269,7 +269,7 @@ export const ja: Dictionary = { text_title: "文字色", background_title: "背景色", colors: { - default: "デフォルト", + default: "自動", gray: "グレー", brown: "茶色", red: "赤", diff --git a/packages/core/src/i18n/locales/ko.ts b/packages/core/src/i18n/locales/ko.ts index 08af7b7233..53a5def39e 100644 --- a/packages/core/src/i18n/locales/ko.ts +++ b/packages/core/src/i18n/locales/ko.ts @@ -242,7 +242,7 @@ export const ko: Dictionary = { text_title: "텍스트", background_title: "배경", colors: { - default: "기본", + default: "자동", gray: "회색", brown: "갈색", red: "빨간색", diff --git a/packages/core/src/i18n/locales/nl.ts b/packages/core/src/i18n/locales/nl.ts index 2ab289c961..a1bff3fc6b 100644 --- a/packages/core/src/i18n/locales/nl.ts +++ b/packages/core/src/i18n/locales/nl.ts @@ -230,7 +230,7 @@ export const nl: Dictionary = { text_title: "Tekst", background_title: "Achtergrond", colors: { - default: "Standaard", + default: "Automatisch", gray: "Grijs", brown: "Bruin", red: "Rood", diff --git a/packages/core/src/i18n/locales/no.ts b/packages/core/src/i18n/locales/no.ts index b15aa68bff..5d518d116b 100644 --- a/packages/core/src/i18n/locales/no.ts +++ b/packages/core/src/i18n/locales/no.ts @@ -247,7 +247,7 @@ export const no: Dictionary = { text_title: "Tekst", background_title: "Bakgrunn", colors: { - default: "Standard", + default: "Automatisk", gray: "Grå", brown: "Brun", red: "Rød", diff --git a/packages/core/src/i18n/locales/pl.ts b/packages/core/src/i18n/locales/pl.ts index 70d8cac687..614f64e9f2 100644 --- a/packages/core/src/i18n/locales/pl.ts +++ b/packages/core/src/i18n/locales/pl.ts @@ -220,7 +220,7 @@ export const pl: Dictionary = { text_title: "Tekst", background_title: "Tło", colors: { - default: "Domyślny", + default: "Automatyczny", gray: "Szary", brown: "Brązowy", red: "Czerwony", diff --git a/packages/core/src/i18n/locales/pt.ts b/packages/core/src/i18n/locales/pt.ts index 6e7fb8bfcb..c12c94012e 100644 --- a/packages/core/src/i18n/locales/pt.ts +++ b/packages/core/src/i18n/locales/pt.ts @@ -221,7 +221,7 @@ export const pt: Dictionary = { text_title: "Texto", background_title: "Fundo", colors: { - default: "Padrão", + default: "Automático", gray: "Cinza", brown: "Marrom", red: "Vermelho", diff --git a/packages/core/src/i18n/locales/ru.ts b/packages/core/src/i18n/locales/ru.ts index d9e5380726..2982c8f5f6 100644 --- a/packages/core/src/i18n/locales/ru.ts +++ b/packages/core/src/i18n/locales/ru.ts @@ -272,7 +272,7 @@ export const ru: Dictionary = { text_title: "Текст", background_title: "Задний фон", colors: { - default: "По умолчанию", + default: "Авто", gray: "Серый", brown: "Коричневый", red: "Красный", diff --git a/packages/core/src/i18n/locales/sk.ts b/packages/core/src/i18n/locales/sk.ts index 779ee81423..c1691e17e7 100644 --- a/packages/core/src/i18n/locales/sk.ts +++ b/packages/core/src/i18n/locales/sk.ts @@ -228,7 +228,7 @@ export const sk = { text_title: "Text", background_title: "Pozadie", colors: { - default: "Predvolená", + default: "Automaticky", gray: "Sivá", brown: "Hnedá", red: "Červená", diff --git a/packages/core/src/i18n/locales/uk.ts b/packages/core/src/i18n/locales/uk.ts index 3881351dbd..a5d7d8f9af 100644 --- a/packages/core/src/i18n/locales/uk.ts +++ b/packages/core/src/i18n/locales/uk.ts @@ -254,7 +254,7 @@ export const uk: Dictionary = { text_title: "Текст", background_title: "Фон", colors: { - default: "За замовчуванням", + default: "Авто", gray: "Сірий", brown: "Коричневий", red: "Червоний", diff --git a/packages/core/src/i18n/locales/uz.ts b/packages/core/src/i18n/locales/uz.ts index ef28257ed0..ffc8d04ac6 100644 --- a/packages/core/src/i18n/locales/uz.ts +++ b/packages/core/src/i18n/locales/uz.ts @@ -294,7 +294,7 @@ export const uz: Dictionary = { text_title: "Matn", background_title: "Fon", colors: { - default: "Standart", + default: "Avtomatik", gray: "Kulrang", brown: "Jigarrang", red: "Qizil", diff --git a/packages/core/src/i18n/locales/vi.ts b/packages/core/src/i18n/locales/vi.ts index 3861e42376..cbe0e5e628 100644 --- a/packages/core/src/i18n/locales/vi.ts +++ b/packages/core/src/i18n/locales/vi.ts @@ -228,7 +228,7 @@ export const vi: Dictionary = { text_title: "Văn bản", background_title: "Nền", colors: { - default: "Mặc định", + default: "Tự động", gray: "Xám", brown: "Nâu", red: "Đỏ", diff --git a/packages/core/src/i18n/locales/zh-tw.ts b/packages/core/src/i18n/locales/zh-tw.ts index 6e35fc9cd5..b64912255f 100644 --- a/packages/core/src/i18n/locales/zh-tw.ts +++ b/packages/core/src/i18n/locales/zh-tw.ts @@ -270,7 +270,7 @@ export const zhTW: Dictionary = { text_title: "文字", background_title: "背景色", colors: { - default: "預設", + default: "自動", gray: "灰色", brown: "棕色", red: "紅色", diff --git a/packages/core/src/i18n/locales/zh.ts b/packages/core/src/i18n/locales/zh.ts index dcddbc4382..ba5a2fe73b 100644 --- a/packages/core/src/i18n/locales/zh.ts +++ b/packages/core/src/i18n/locales/zh.ts @@ -270,7 +270,7 @@ export const zh: Dictionary = { text_title: "文本", background_title: "背景色", colors: { - default: "默认", + default: "自动", gray: "灰色", brown: "棕色", red: "红色", diff --git a/packages/react/src/editor/styles.css b/packages/react/src/editor/styles.css index d659be3671..702116d310 100644 --- a/packages/react/src/editor/styles.css +++ b/packages/react/src/editor/styles.css @@ -141,92 +141,92 @@ /* Highlight color styling */ [data-style-type="textColor"][data-value="gray"], -[data-text-color="gray"] { +.bn-block:has(> .bn-block-content[data-text-color="gray"]) { color: var(--bn-colors-highlights-gray-text); } [data-style-type="textColor"][data-value="brown"], -[data-text-color="brown"] { +.bn-block:has(> .bn-block-content[data-text-color="brown"]) { color: var(--bn-colors-highlights-brown-text); } [data-style-type="textColor"][data-value="red"], -[data-text-color="red"] { +.bn-block:has(> .bn-block-content[data-text-color="red"]) { color: var(--bn-colors-highlights-red-text); } [data-style-type="textColor"][data-value="orange"], -[data-text-color="orange"] { +.bn-block:has(> .bn-block-content[data-text-color="orange"]) { color: var(--bn-colors-highlights-orange-text); } [data-style-type="textColor"][data-value="yellow"], -[data-text-color="yellow"] { +.bn-block:has(> .bn-block-content[data-text-color="yellow"]) { color: var(--bn-colors-highlights-yellow-text); } [data-style-type="textColor"][data-value="green"], -[data-text-color="green"] { +.bn-block:has(> .bn-block-content[data-text-color="green"]) { color: var(--bn-colors-highlights-green-text); } [data-style-type="textColor"][data-value="blue"], -[data-text-color="blue"] { +.bn-block:has(> .bn-block-content[data-text-color="blue"]) { color: var(--bn-colors-highlights-blue-text); } [data-style-type="textColor"][data-value="purple"], -[data-text-color="purple"] { +.bn-block:has(> .bn-block-content[data-text-color="purple"]) { color: var(--bn-colors-highlights-purple-text); } [data-style-type="textColor"][data-value="pink"], -[data-text-color="pink"] { +.bn-block:has(> .bn-block-content[data-text-color="pink"]) { color: var(--bn-colors-highlights-pink-text); } [data-style-type="backgroundColor"][data-value="gray"], -[data-background-color="gray"] { +.bn-block:has(> .bn-block-content[data-background-color="gray"]) { background-color: var(--bn-colors-highlights-gray-background); } [data-style-type="backgroundColor"][data-value="brown"], -[data-background-color="brown"] { +.bn-block:has(> .bn-block-content[data-background-color="brown"]) { background-color: var(--bn-colors-highlights-brown-background); } [data-style-type="backgroundColor"][data-value="red"], -[data-background-color="red"] { +.bn-block:has(> .bn-block-content[data-background-color="red"]) { background-color: var(--bn-colors-highlights-red-background); } [data-style-type="backgroundColor"][data-value="orange"], -[data-background-color="orange"] { +.bn-block:has(> .bn-block-content[data-background-color="orange"]) { background-color: var(--bn-colors-highlights-orange-background); } [data-style-type="backgroundColor"][data-value="yellow"], -[data-background-color="yellow"] { +.bn-block:has(> .bn-block-content[data-background-color="yellow"]) { background-color: var(--bn-colors-highlights-yellow-background); } [data-style-type="backgroundColor"][data-value="green"], -[data-background-color="green"] { +.bn-block:has(> .bn-block-content[data-background-color="green"]) { background-color: var(--bn-colors-highlights-green-background); } [data-style-type="backgroundColor"][data-value="blue"], -[data-background-color="blue"] { +.bn-block:has(> .bn-block-content[data-background-color="blue"]) { background-color: var(--bn-colors-highlights-blue-background); } [data-style-type="backgroundColor"][data-value="purple"], -[data-background-color="purple"] { +.bn-block:has(> .bn-block-content[data-background-color="purple"]) { background-color: var(--bn-colors-highlights-purple-background); } [data-style-type="backgroundColor"][data-value="pink"], -[data-background-color="pink"] { +.bn-block:has(> .bn-block-content[data-background-color="pink"]) { background-color: var(--bn-colors-highlights-pink-background); } From 130a91698114457bbe6635fc397b2c2df8be4675 Mon Sep 17 00:00:00 2001 From: Wieland Lindenthal Date: Wed, 29 Apr 2026 17:56:14 +0200 Subject: [PATCH 33/76] fix(clipboard): use ProseMirror selection state for Shadow DOM compatibility (#2677) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit OpenProject embeds BlockNote inside a Shadow DOM (attachShadow({ mode: 'open' })) to isolate it from the host Angular application. In this setup, window.getSelection() returns null or a collapsed selection even when text is selected (Firefox all versions, Safari ≤16.3, Chromium edge cases), causing checkIfSelectionInNonEditableBlock to always return true and skip the clipboard write entirely. The browser's default copy then fires, which uses ProseMirror's DOMSerializer without semantic wrappers — so list formatting, headings, and bold/italic are lost on paste into external apps. Fix: use view.state.selection.empty as the primary empty-selection guard. ProseMirror's internal state is always accurate regardless of DOM mode. The DOM-level non-editable-island check is kept as a secondary guard, but only when window.getSelection() actually returns a non-collapsed selection. Fixes copy/cut for editors mounted inside attachShadow({ mode: 'open' }). --- .../clipboard/toClipboard/copyExtension.ts | 37 +++++++++++-------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/packages/core/src/api/clipboard/toClipboard/copyExtension.ts b/packages/core/src/api/clipboard/toClipboard/copyExtension.ts index 3a6aeaffd5..7812ae3c2e 100644 --- a/packages/core/src/api/clipboard/toClipboard/copyExtension.ts +++ b/packages/core/src/api/clipboard/toClipboard/copyExtension.ts @@ -145,11 +145,13 @@ export function selectedFragmentToHTML< return { clipboardHTML, externalHTML, markdown }; } -const checkIfSelectionInNonEditableBlock = () => { - // Let browser handle event if selection is empty (nothing - // happens). - const selection = window.getSelection(); - if (!selection || selection.isCollapsed) { +const checkIfSelectionInNonEditableBlock = (view: EditorView) => { + // Use ProseMirror's internal selection state to check for empty selection. + // window.getSelection() returns null or a collapsed selection inside Shadow + // DOM (Firefox, Safari, and Chromium edge cases), causing this guard to + // misfire and silently skip clipboard writes. view.state.selection is always + // accurate regardless of DOM mode. + if (view.state.selection.empty) { return true; } @@ -158,16 +160,19 @@ const checkIfSelectionInNonEditableBlock = () => { // non-editable block. We only need to check one node as it's // not possible for the browser selection to start in an // editable block and end in a non-editable one. - let node = selection.focusNode; - while (node) { - if ( - node instanceof HTMLElement && - node.getAttribute("contenteditable") === "false" - ) { - return true; + const selection = window.getSelection(); + if (selection && !selection.isCollapsed) { + let node = selection.focusNode; + while (node) { + if ( + node instanceof HTMLElement && + node.getAttribute("contenteditable") === "false" + ) { + return true; + } + + node = node.parentElement; } - - node = node.parentElement; } return false; @@ -213,7 +218,7 @@ export const createCopyToClipboardExtension = < props: { handleDOMEvents: { copy(view, event) { - if (checkIfSelectionInNonEditableBlock()) { + if (checkIfSelectionInNonEditableBlock(view)) { return true; } @@ -222,7 +227,7 @@ export const createCopyToClipboardExtension = < return true; }, cut(view, event) { - if (checkIfSelectionInNonEditableBlock()) { + if (checkIfSelectionInNonEditableBlock(view)) { return true; } From ff052c8b7679e52f9ff1dad9e67527012a76bf67 Mon Sep 17 00:00:00 2001 From: Matthew Lipski <50169049+matthewlipski@users.noreply.github.com> Date: Wed, 29 Apr 2026 18:11:08 +0200 Subject: [PATCH 34/76] chore: Regression test for #2677 (#2688) * fix(clipboard): use ProseMirror selection state for Shadow DOM compatibility * Added e2e test and example for test --------- Co-authored-by: Wieland Lindenthal --- .../08-non-editable-block/.bnexample.json | 6 ++ .../08-non-editable-block/README.md | 8 ++ .../08-non-editable-block/index.html | 14 +++ .../08-non-editable-block/main.tsx | 11 +++ .../08-non-editable-block/package.json | 31 ++++++ .../08-non-editable-block/src/App.tsx | 38 ++++++++ .../src/NonEditableBlock.tsx | 13 +++ .../08-non-editable-block/tsconfig.json | 36 +++++++ .../08-non-editable-block/vite.config.ts | 32 +++++++ playground/src/examples.gen.tsx | 21 ++++ pnpm-lock.yaml | 62 ++++++++++-- .../end-to-end/copypaste/copypaste.test.ts | 51 +++++++++- .../nonEditableBlock-json-chromium-linux.json | 95 +++++++++++++++++++ tests/src/utils/const.ts | 4 + 14 files changed, 409 insertions(+), 13 deletions(-) create mode 100644 examples/06-custom-schema/08-non-editable-block/.bnexample.json create mode 100644 examples/06-custom-schema/08-non-editable-block/README.md create mode 100644 examples/06-custom-schema/08-non-editable-block/index.html create mode 100644 examples/06-custom-schema/08-non-editable-block/main.tsx create mode 100644 examples/06-custom-schema/08-non-editable-block/package.json create mode 100644 examples/06-custom-schema/08-non-editable-block/src/App.tsx create mode 100644 examples/06-custom-schema/08-non-editable-block/src/NonEditableBlock.tsx create mode 100644 examples/06-custom-schema/08-non-editable-block/tsconfig.json create mode 100644 examples/06-custom-schema/08-non-editable-block/vite.config.ts create mode 100644 tests/src/end-to-end/copypaste/copypaste.test.ts-snapshots/nonEditableBlock-json-chromium-linux.json diff --git a/examples/06-custom-schema/08-non-editable-block/.bnexample.json b/examples/06-custom-schema/08-non-editable-block/.bnexample.json new file mode 100644 index 0000000000..c94d1e9154 --- /dev/null +++ b/examples/06-custom-schema/08-non-editable-block/.bnexample.json @@ -0,0 +1,6 @@ +{ + "playground": true, + "docs": false, + "author": "matthewlipski", + "tags": ["Intermediate", "Blocks", "Custom Schemas"] +} diff --git a/examples/06-custom-schema/08-non-editable-block/README.md b/examples/06-custom-schema/08-non-editable-block/README.md new file mode 100644 index 0000000000..9c7cce19d1 --- /dev/null +++ b/examples/06-custom-schema/08-non-editable-block/README.md @@ -0,0 +1,8 @@ +# Non-Editable Block + +In this example, we create a custom block which renders a simple HTML paragraph with placeholder text. The block has no editable content. + +**Relevant Docs:** + +- [Custom Blocks](/docs/features/custom-schemas/custom-blocks) +- [Editor Setup](/docs/getting-started/editor-setup) diff --git a/examples/06-custom-schema/08-non-editable-block/index.html b/examples/06-custom-schema/08-non-editable-block/index.html new file mode 100644 index 0000000000..9b55422066 --- /dev/null +++ b/examples/06-custom-schema/08-non-editable-block/index.html @@ -0,0 +1,14 @@ + + + + + Non-Editable Block + + + +
+ + + diff --git a/examples/06-custom-schema/08-non-editable-block/main.tsx b/examples/06-custom-schema/08-non-editable-block/main.tsx new file mode 100644 index 0000000000..677c7f7eed --- /dev/null +++ b/examples/06-custom-schema/08-non-editable-block/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/06-custom-schema/08-non-editable-block/package.json b/examples/06-custom-schema/08-non-editable-block/package.json new file mode 100644 index 0000000000..525adc0964 --- /dev/null +++ b/examples/06-custom-schema/08-non-editable-block/package.json @@ -0,0 +1,31 @@ +{ + "name": "@blocknote/example-custom-schema-non-editable-block", + "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY", + "type": "module", + "private": true, + "version": "0.12.4", + "scripts": { + "start": "vite", + "dev": "vite", + "build:prod": "tsc && vite build", + "preview": "vite preview" + }, + "dependencies": { + "@blocknote/ariakit": "latest", + "@blocknote/core": "latest", + "@blocknote/mantine": "latest", + "@blocknote/react": "latest", + "@blocknote/shadcn": "latest", + "@mantine/core": "^8.3.11", + "@mantine/hooks": "^8.3.11", + "@mantine/utils": "^6.0.22", + "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": "^8.0.8" + } +} \ No newline at end of file diff --git a/examples/06-custom-schema/08-non-editable-block/src/App.tsx b/examples/06-custom-schema/08-non-editable-block/src/App.tsx new file mode 100644 index 0000000000..78a611081f --- /dev/null +++ b/examples/06-custom-schema/08-non-editable-block/src/App.tsx @@ -0,0 +1,38 @@ +import { BlockNoteSchema } from "@blocknote/core"; +import "@blocknote/core/fonts/inter.css"; +import { BlockNoteView } from "@blocknote/mantine"; +import "@blocknote/mantine/style.css"; +import { useCreateBlockNote } from "@blocknote/react"; + +import { createNonEditableBlock } from "./NonEditableBlock"; + +// Our schema with block specs, which contain the configs and implementations for +// blocks that we want our editor to use. +const schema = BlockNoteSchema.create().extend({ + blockSpecs: { + // Creates an instance of the Non-Editable block and adds it to the schema. + nonEditable: createNonEditableBlock(), + }, +}); + +export default function App() { + // Creates a new editor instance. + const editor = useCreateBlockNote({ + schema, + initialContent: [ + { + type: "paragraph", + content: "Welcome to this demo!", + }, + { + type: "nonEditable", + }, + { + type: "paragraph", + }, + ], + }); + + // Renders the editor instance. + return ; +} diff --git a/examples/06-custom-schema/08-non-editable-block/src/NonEditableBlock.tsx b/examples/06-custom-schema/08-non-editable-block/src/NonEditableBlock.tsx new file mode 100644 index 0000000000..a930c21f74 --- /dev/null +++ b/examples/06-custom-schema/08-non-editable-block/src/NonEditableBlock.tsx @@ -0,0 +1,13 @@ +import { createReactBlockSpec } from "@blocknote/react"; + +// The Non-Editable block. +export const createNonEditableBlock = createReactBlockSpec( + { + type: "nonEditable", + propSchema: {}, + content: "none", + }, + { + render: () =>

This is a non-editable block.

, + }, +); diff --git a/examples/06-custom-schema/08-non-editable-block/tsconfig.json b/examples/06-custom-schema/08-non-editable-block/tsconfig.json new file mode 100644 index 0000000000..dbe3e6f62d --- /dev/null +++ b/examples/06-custom-schema/08-non-editable-block/tsconfig.json @@ -0,0 +1,36 @@ +{ + "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY", + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "lib": [ + "DOM", + "DOM.Iterable", + "ESNext" + ], + "allowJs": false, + "skipLibCheck": true, + "esModuleInterop": false, + "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/" + } + ] +} \ No newline at end of file diff --git a/examples/06-custom-schema/08-non-editable-block/vite.config.ts b/examples/06-custom-schema/08-non-editable-block/vite.config.ts new file mode 100644 index 0000000000..f62ab20bc2 --- /dev/null +++ b/examples/06-custom-schema/08-non-editable-block/vite.config.ts @@ -0,0 +1,32 @@ +// 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"; +// import eslintPlugin from "vite-plugin-eslint"; +// https://vitejs.dev/config/ +export default defineConfig((conf) => ({ + 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), + }, +})); diff --git a/playground/src/examples.gen.tsx b/playground/src/examples.gen.tsx index 5f219ff7fa..ae117ce392 100644 --- a/playground/src/examples.gen.tsx +++ b/playground/src/examples.gen.tsx @@ -1414,6 +1414,27 @@ }, "readme": "This example shows how you can configure the editor's default blocks. Specifically, heading blocks are made to only support levels 1-3, and cannot be toggleable.\n\n**Relevant Docs:**\n\n- [Editor Setup](/docs/getting-started/editor-setup)\n- [Default Schema](/docs/foundations/schemas)\n- [Custom Schemas](/docs/features/custom-schemas)" }, + { + "projectSlug": "non-editable-block", + "fullSlug": "custom-schema/non-editable-block", + "pathFromRoot": "examples/06-custom-schema/08-non-editable-block", + "config": { + "playground": true, + "docs": false, + "author": "matthewlipski", + "tags": [ + "Intermediate", + "Blocks", + "Custom Schemas" + ] + }, + "title": "Non-Editable Block", + "group": { + "pathFromRoot": "examples/06-custom-schema", + "slug": "custom-schema" + }, + "readme": "In this example, we create a custom block which renders a simple HTML paragraph with placeholder text. The block has no editable content.\n\n**Relevant Docs:**\n\n- [Custom Blocks](/docs/features/custom-schemas/custom-blocks)\n- [Editor Setup](/docs/getting-started/editor-setup)" + }, { "projectSlug": "draggable-inline-content", "fullSlug": "custom-schema/draggable-inline-content", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 317c09c8b5..46cc6ca3b3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -3395,6 +3395,52 @@ importers: specifier: ^8.0.8 version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) + examples/06-custom-schema/08-non-editable-block: + 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: ^8.3.11 + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 + version: 8.3.18(react@19.2.5) + '@mantine/utils': + specifier: ^6.0.22 + version: 6.0.22(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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) + vite: + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) + examples/06-custom-schema/draggable-inline-content: dependencies: '@blocknote/ariakit': @@ -24027,8 +24073,8 @@ snapshots: '@next/eslint-plugin-next': 16.2.2 eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-react: 7.37.5(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-react-hooks: 7.0.1(eslint@9.39.4(jiti@2.6.1)) @@ -24077,7 +24123,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 @@ -24088,7 +24134,7 @@ snapshots: tinyglobby: 0.2.16 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -24102,14 +24148,14 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -24150,7 +24196,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -24161,7 +24207,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 diff --git a/tests/src/end-to-end/copypaste/copypaste.test.ts b/tests/src/end-to-end/copypaste/copypaste.test.ts index aaf36897d6..b0a563c6ef 100644 --- a/tests/src/end-to-end/copypaste/copypaste.test.ts +++ b/tests/src/end-to-end/copypaste/copypaste.test.ts @@ -1,6 +1,10 @@ /* eslint-disable jest/valid-title */ import { test } from "../../setup/setupScript.js"; -import { BASE_URL } from "../../utils/const.js"; +import { + BASE_URL, + NON_EDITABLE_BLOCK_URL, + PARAGRAPH_SELECTOR, +} from "../../utils/const.js"; import { copyPaste, copyPasteAll, @@ -15,11 +19,11 @@ import { executeSlashCommand } from "../../utils/slashmenu.js"; test.describe.configure({ mode: "serial" }); -test.beforeEach(async ({ page }) => { - await page.goto(BASE_URL); -}); - test.describe("Check Copy/Paste Functionality", () => { + test.beforeEach(async ({ page }) => { + await page.goto(BASE_URL); + }); + test("Paragraphs should stay separate", async ({ page, browserName }) => { test.skip( browserName === "firefox" || browserName === "webkit", @@ -188,3 +192,40 @@ test.describe("Check Copy/Paste Functionality", () => { await compareDocToSnapshot(page, "images.json"); }); }); + +test.describe("Check Copy/Paste From Non-Editable Block", () => { + test.beforeEach(async ({ page }) => { + await page.goto(NON_EDITABLE_BLOCK_URL); + }); + + test("Should be able to copy/paste text from a non-editable block", async ({ + page, + browserName, + }) => { + test.skip( + browserName === "firefox" || browserName === "webkit", + "Firefox doesn't yet support the async clipboard API. Webkit copy/paste stopped working after updating to Playwright 1.33.", + ); + + // Click and drag across the non-editable block's text to select part of it. + const p = page.locator('[data-content-type="nonEditable"] p'); + const box = (await p.boundingBox())!; + await page.mouse.move(box.x + 2, box.y + box.height / 2); + await page.mouse.down(); + await page.mouse.move( + box.x + box.width * 0.25, + box.y + box.height / 2, + { steps: 5 }, + ); + await page.mouse.up(); + + await page.keyboard.press("ControlOrMeta+C"); + + // Click the last (empty) paragraph block to focus the editor. + await page.locator(PARAGRAPH_SELECTOR).last().click(); + + await page.keyboard.press("ControlOrMeta+V"); + + await compareDocToSnapshot(page, "nonEditableBlock.json"); + }); +}); diff --git a/tests/src/end-to-end/copypaste/copypaste.test.ts-snapshots/nonEditableBlock-json-chromium-linux.json b/tests/src/end-to-end/copypaste/copypaste.test.ts-snapshots/nonEditableBlock-json-chromium-linux.json new file mode 100644 index 0000000000..154f585790 --- /dev/null +++ b/tests/src/end-to-end/copypaste/copypaste.test.ts-snapshots/nonEditableBlock-json-chromium-linux.json @@ -0,0 +1,95 @@ +{ + "type": "doc", + "content": [ + { + "type": "blockGroup", + "content": [ + { + "type": "blockContainer", + "attrs": { + "id": "0" + }, + "content": [ + { + "type": "paragraph", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left" + }, + "content": [ + { + "type": "text", + "text": "Welcome to this demo!" + } + ] + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "1" + }, + "content": [ + { + "type": "nonEditable" + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "2" + }, + "content": [ + { + "type": "paragraph", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left" + }, + "content": [ + { + "type": "text", + "marks": [ + { + "type": "textColor", + "attrs": { + "stringValue": "rgb(63, 63, 63)" + } + }, + { + "type": "backgroundColor", + "attrs": { + "stringValue": "rgb(255, 255, 255)" + } + } + ], + "text": "This is " + } + ] + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "4" + }, + "content": [ + { + "type": "paragraph", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/src/utils/const.ts b/tests/src/utils/const.ts index b04b77d6a2..7431d2db2a 100644 --- a/tests/src/utils/const.ts +++ b/tests/src/utils/const.ts @@ -43,6 +43,10 @@ export const ALERT_BLOCK_URL = !process.env.RUN_IN_DOCKER ? `http://localhost:${PORT}/custom-schema/alert-block?hideMenu` : `http://host.docker.internal:${PORT}/custom-schema/alert-block?hideMenu`; +export const NON_EDITABLE_BLOCK_URL = !process.env.RUN_IN_DOCKER + ? `http://localhost:${PORT}/custom-schema/non-editable-block?hideMenu` + : `http://host.docker.internal:${PORT}/custom-schema/non-editable-block?hideMenu`; + export const COMMENTS_URL = !process.env.RUN_IN_DOCKER ? `http://localhost:${PORT}/collaboration/comments-testing?hideMenu` : `http://host.docker.internal:${PORT}/collaboration/comments-testing?hideMenu`; From d48a92a2fa56bfb637d574212f04ea6e3c1f2f9c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 29 Apr 2026 22:53:03 +0200 Subject: [PATCH 35/76] chore: bump postcss from 8.5.10 to 8.5.12 (#2689) --- pnpm-lock.yaml | 57 +++++++++++++++++++++++++++----------------------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 46cc6ca3b3..966cf9e887 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -348,7 +348,7 @@ importers: version: 1.6.4 postcss: specifier: ^8.5.6 - version: 8.5.10 + version: 8.5.12 serve: specifier: ^14.2.6 version: 14.2.6 @@ -5177,7 +5177,7 @@ importers: version: 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) autoprefixer: specifier: ^10.4.21 - version: 10.4.21(postcss@8.5.10) + version: 10.4.21(postcss@8.5.12) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -5899,7 +5899,7 @@ importers: version: 6.0.5(zod@4.3.6) autoprefixer: specifier: 10.4.21 - version: 10.4.21(postcss@8.5.10) + version: 10.4.21(postcss@8.5.12) docx: specifier: ^9.5.1 version: 9.5.1 @@ -12415,6 +12415,9 @@ packages: es-module-lexer@2.0.0: resolution: {integrity: sha512-5POEcUuZybH7IdmGsD8wlf0AI55wMecM9rVBTI/qEAy2c1kTOm3DjFYjrBdI2K3BaJjJYfYFeRtM0t9ssnRuxw==} + es-module-lexer@2.1.0: + resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==} + es-object-atoms@1.1.1: resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} engines: {node: '>= 0.4'} @@ -14761,8 +14764,8 @@ packages: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} - postcss@8.5.10: - resolution: {integrity: sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==} + postcss@8.5.12: + resolution: {integrity: sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==} engines: {node: ^10 || ^12 || >=14} postgres-array@2.0.0: @@ -16448,8 +16451,8 @@ packages: resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} engines: {node: '>=20'} - webpack-sources@3.4.0: - resolution: {integrity: sha512-gHwIe1cgBvvfLeu1Yz/dcFpmHfKDVxxyqI+kzqmuxZED81z2ChxpyqPaWcNqigPywhaEke7AjSGga+kxY55gjQ==} + webpack-sources@3.4.1: + resolution: {integrity: sha512-eACpxRN02yaawnt+uUNIF7Qje6A9zArxBbcAJjK1PK3S9Ycg5jIuJ8pW4q8EMnwNZCEGltcjkRx1QzOxOkKD8A==} engines: {node: '>=10.13.0'} webpack@5.105.4: @@ -21785,7 +21788,7 @@ snapshots: '@alloc/quick-lru': 5.2.0 '@tailwindcss/node': 4.2.2 '@tailwindcss/oxide': 4.2.2 - postcss: 8.5.10 + postcss: 8.5.12 tailwindcss: 4.2.2 '@tailwindcss/vite@4.2.2(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))': @@ -23017,14 +23020,14 @@ snapshots: stubborn-fs: 2.0.0 when-exit: 2.1.5 - autoprefixer@10.4.21(postcss@8.5.10): + autoprefixer@10.4.21(postcss@8.5.12): dependencies: browserslist: 4.28.2 caniuse-lite: 1.0.30001784 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 - postcss: 8.5.10 + postcss: 8.5.12 postcss-value-parser: 4.2.0 available-typed-arrays@1.0.7: @@ -23937,6 +23940,8 @@ snapshots: es-module-lexer@2.0.0: {} + es-module-lexer@2.1.0: {} + es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 @@ -24073,8 +24078,8 @@ snapshots: '@next/eslint-plugin-next': 16.2.2 eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-react: 7.37.5(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-react-hooks: 7.0.1(eslint@9.39.4(jiti@2.6.1)) @@ -24123,7 +24128,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 @@ -24134,7 +24139,7 @@ snapshots: tinyglobby: 0.2.16 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -24148,14 +24153,14 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -24196,7 +24201,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -24207,7 +24212,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -27026,7 +27031,7 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - postcss@8.5.10: + postcss@8.5.12: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 @@ -28867,7 +28872,7 @@ snapshots: vite@5.4.21(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.2): dependencies: esbuild: 0.21.5 - postcss: 8.5.10 + postcss: 8.5.12 rollup: 4.60.1 optionalDependencies: '@types/node': 20.19.37 @@ -28879,7 +28884,7 @@ snapshots: dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 - postcss: 8.5.10 + postcss: 8.5.12 rolldown: 1.0.0-rc.15 tinyglobby: 0.2.16 optionalDependencies: @@ -28895,7 +28900,7 @@ snapshots: dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 - postcss: 8.5.10 + postcss: 8.5.12 rolldown: 1.0.0-rc.15 tinyglobby: 0.2.16 optionalDependencies: @@ -28912,7 +28917,7 @@ snapshots: dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 - postcss: 8.5.10 + postcss: 8.5.12 rolldown: 1.0.0-rc.15 tinyglobby: 0.2.16 optionalDependencies: @@ -29085,7 +29090,7 @@ snapshots: webidl-conversions@8.0.1: {} - webpack-sources@3.4.0: {} + webpack-sources@3.4.1: {} webpack@5.105.4(esbuild@0.27.5): dependencies: @@ -29100,7 +29105,7 @@ snapshots: browserslist: 4.28.2 chrome-trace-event: 1.0.4 enhanced-resolve: 5.21.0 - es-module-lexer: 2.0.0 + es-module-lexer: 2.1.0 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 @@ -29113,7 +29118,7 @@ snapshots: tapable: 2.3.3 terser-webpack-plugin: 5.5.0(esbuild@0.27.5)(webpack@5.105.4(esbuild@0.27.5)) watchpack: 2.5.1 - webpack-sources: 3.4.0 + webpack-sources: 3.4.1 transitivePeerDependencies: - '@swc/core' - esbuild From 15eab074c614c3d68e7930b8f385bcfda5b9985a Mon Sep 17 00:00:00 2001 From: Matthew Lipski <50169049+matthewlipski@users.noreply.github.com> Date: Thu, 30 Apr 2026 17:48:39 +0200 Subject: [PATCH 36/76] fix: link HTML attributes (BLO-915) (#2687) --- .../extensions/tiptap-extensions/Link/link.ts | 34 +-- packages/xl-ai/package.json | 1 + .../xl-ai/scripts/rename-msw-snapshots.mjs | 129 ++++++++++ ...h_1_0acceced44cd885ee4439d4ef8639ba2.json} | 0 ...n_1_9f552939a63a167da4dd5b1abffbfc43.json} | 0 ...h_1_f5ce14780d38e0a320dc0246f9fa3fa7.json} | 0 ...n_1_8157654938ade250b36e1dde3bf0a5c2.json} | 0 ...h_1_eb11dd6643fc4f655a9d55dbd71b19b9.json} | 0 ...n_1_bcb205a92155b4f033637eb9f5fb2d3b.json} | 0 ...k_1_de1c4968c1329dacd5d81bcd2b3ed8d1.json} | 0 ...k_1_df7ac05af05cf3c79699aabb8ea42853.json} | 0 ...k_1_2c1689a55eb91228110b68a63451fd1a.json} | 0 ...k_1_7269bbc0b34bc5775aa44079fb454ffb.json} | 0 ...k_1_e3dcd01b4daf96d961ea02871bebdc41.json} | 0 ...n_1_697fa8208493812d2a1e80e1aaf9c5de.json} | 0 ...e_1_1aee87323867b909b4239664f8b71087.json} | 0 ...k_1_7e627acd5601089ce51f17d48a125d26.json} | 0 ...n_1_191aa134e34de44ad154b02c452f2a13.json} | 0 ...t_1_f1ad8291536f56abe5780af9c67a719e.json} | 0 ...p_1_09e4b9d91e0003a97447e19e13c71fae.json} | 0 ...t_1_135a07dea96ec03fd66a4f9d14bffaab.json} | 0 ...)_1_057de0a27c49b9bc6acd8203ecddd838.json} | 0 ...)_1_cea1695dae5f5462ee9ab5a7400fee2f.json} | 0 ...n_1_2164172c277a84ca943d79ae55a7c655.json} | 0 ...t_1_e89f2ff97bb5e14d9f8e7c4bbb03af6f.json} | 0 ...p_1_fabe61c81d039e0c80c38121db6daef1.json} | 0 ...t_1_92d996135152e832c6db18b41f6b6912.json} | 0 ...e_1_be165931651bf1c2e817e30b34cacddd.json} | 0 ...k_1_02b8585f48a09784036175bf14c592cd.json} | 0 ...k_1_5153f11ec2928539607eae3fc9554a2e.json} | 0 ...n_1_f33053e9ce75e3382e59f65f47268a07.json} | 0 ...e_1_3701c48442d9b752a7ea313e3255163c.json} | 0 ...k_1_dd318513d3f70effe9df402a04ebe20e.json} | 0 ...n_1_df29b6d9520b0719a02ff9f241d8fd12.json} | 0 ...t_1_353407caea15e5886ca416c18085f09c.json} | 0 ...p_1_545d20572920e7098f9e71846d69942e.json} | 0 ...t_1_f94a68a64c18b7537380682b3e0fa902.json} | 0 ...)_1_b625ba3069c0ee0677dbab599b173252.json} | 0 ...)_1_f9207412b6a2032fd012f61be3d16b7b.json} | 0 ...n_1_1d088b7563942b1405ced6473b89b3ea.json} | 0 ...t_1_7aec058255eb34b8dd1fcc434173ed62.json} | 0 ...p_1_f4d4d0847f49e3177b2090d2dfcdf4a8.json} | 0 ...t_1_bb2150f4fbbd0d60e298c14879b5d98c.json} | 0 ...e_1_0cc06aead6a8738ef5ae9397d449a4bb.json} | 0 ...k_1_3b2d04fb8cc28b3327eac7fbb649212c.json} | 0 ...k_1_7376633d53b21fc3dbe3c1f051cd2940.json} | 0 ...n_1_f44ed609f9d070a9db6e3357eb3b4b12.json} | 0 ...e_1_f38c18ce0c3c0d617287e458c9a79fc6.json} | 0 ...k_1_58230e87771d121dabc82e08fdabeec9.json} | 0 ...n_1_501a15f4ae0e22db498c2a018f67c304.json} | 0 ...t_1_3a53469420cab77a1672183bf403d5f1.json} | 0 ...p_1_d2d711f753398974c968fc07f4ded143.json} | 0 ...t_1_42c93de53980c01c69a514f6eea5f7c7.json} | 0 ...)_1_c899778ecf731961e7554d0dd99c1048.json} | 0 ...)_1_6de7b8e48053b34c8c48307442ebdaf9.json} | 0 ...n_1_2be264b1a0ad629a6626df5dc6dc95ff.json} | 0 ...t_1_cc8d5c88299059d82196af81416f61e4.json} | 0 ...p_1_c3507737f635c70e33af6d9967568ce6.json} | 0 ...t_1_0e4e3658327ed05d3accbdb2649b4409.json} | 0 ...e_1_14269fdf643fd47ec85aa390368ef71a.json} | 0 .../formats/html-blocks/htmlBlocks.test.ts | 46 +--- .../xl-ai/src/api/formats/json/json.test.ts | 46 +--- .../markdown-blocks/markdownBlocks.test.ts | 46 +--- .../src/api/formats/tests/snapshotPath.ts | 33 +++ .../__snapshots__/agent.test.ts.snap | 238 +++++++++--------- .../__snapshots__/changeset.test.ts.snap | 4 - tests/nextjs-test-app/package.json | 8 +- tests/src/unit/core/createTestEditor.ts | 6 + .../hardbreak/between-links.html | 10 +- .../blocknoteHTML/hardbreak/link.html | 10 +- .../blocknoteHTML/link/adjacent.html | 10 +- .../blocknoteHTML/link/basic.html | 5 +- .../blocknoteHTML/link/styled.html | 10 +- .../html/hardbreak/between-links.html | 10 +- .../__snapshots__/html/hardbreak/link.html | 10 +- .../__snapshots__/html/link/adjacent.html | 10 +- .../export/__snapshots__/html/link/basic.html | 5 +- .../__snapshots__/html/link/styled.html | 10 +- .../nodes/hardbreak/between-links.json | 4 - .../__snapshots__/nodes/hardbreak/link.json | 4 - .../__snapshots__/nodes/link/adjacent.json | 4 - .../__snapshots__/nodes/link/basic.json | 2 - .../__snapshots__/nodes/link/styled.json | 4 - 83 files changed, 373 insertions(+), 326 deletions(-) create mode 100755 packages/xl-ai/scripts/rename-msw-snapshots.mjs rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{add and update paragraph_1_801ad86e0c3a4562338793805e66a52f.json => add and update paragraph_1_0acceced44cd885ee4439d4ef8639ba2.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{add paragraph and update selection_1_b6ecf36636295d284db3ba7243cd4835.json => add paragraph and update selection_1_9f552939a63a167da4dd5b1abffbfc43.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{add and update paragraph_1_3c276441275032fe98b12356026537a0.json => add and update paragraph_1_f5ce14780d38e0a320dc0246f9fa3fa7.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{add paragraph and update selection_1_0207de852025d2c0a1d417a7d66fa03c.json => add paragraph and update selection_1_8157654938ade250b36e1dde3bf0a5c2.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{add and update paragraph_1_937647a13580b4dbb611e3de3b2c8788.json => add and update paragraph_1_eb11dd6643fc4f655a9d55dbd71b19b9.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{add paragraph and update selection_1_d9ea724851130649f405ff50190452b5.json => add paragraph and update selection_1_bcb205a92155b4f033637eb9f5fb2d3b.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{delete first block_1_afd5ee1bda075c7482d1861d03ad0a29.json => delete first block_1_de1c4968c1329dacd5d81bcd2b3ed8d1.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{delete first block_1_9a26ba1fa4692c62b4f519ed3669fdc5.json => delete first block_1_df7ac05af05cf3c79699aabb8ea42853.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{delete first block_1_2fd92a4c2642fff1ef49d65014aa1ac3.json => delete first block_1_2c1689a55eb91228110b68a63451fd1a.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{drop mark and link and change text within mark_1_fd54b2fefac722ab5057252b68c4faec.json => drop mark and link and change text within mark_1_7269bbc0b34bc5775aa44079fb454ffb.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{drop mark and link_1_93038afbc107d8439571e6287fc76a8f.json => drop mark and link_1_e3dcd01b4daf96d961ea02871bebdc41.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{plain source block, add mention_1_7035efab1f6d9e5a46dde12d39f9ed19.json => plain source block, add mention_1_697fa8208493812d2a1e80e1aaf9c5de.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{standard update_1_467258028a5a6bef3542c1a5417d4b3d.json => standard update_1_1aee87323867b909b4239664f8b71087.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{styles + ic in source block, remove mark_1_90c0b37bad31f3b9b0d15c492c610d0b.json => styles + ic in source block, remove mark_1_7e627acd5601089ce51f17d48a125d26.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{styles + ic in source block, remove mention_1_3e8b04b91ca15c467180df1c60c9e1b2.json => styles + ic in source block, remove mention_1_191aa134e34de44ad154b02c452f2a13.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{styles + ic in source block, replace content_1_3551fccc96307281574c2c96eaa05002.json => styles + ic in source block, replace content_1_f1ad8291536f56abe5780af9c67a719e.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{styles + ic in source block, update mention prop_1_e7ef562479ab33624bfa2bd75c4d1f5e.json => styles + ic in source block, update mention prop_1_09e4b9d91e0003a97447e19e13c71fae.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{styles + ic in source block, update text_1_3a3fa0950f819e8073475e78106b353d.json => styles + ic in source block, update text_1_135a07dea96ec03fd66a4f9d14bffaab.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{styles + ic in target block, add mark (paragraph)_1_7a05ed5acf369206dda586e41235430b.json => styles + ic in target block, add mark (paragraph)_1_057de0a27c49b9bc6acd8203ecddd838.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{styles + ic in target block, add mark (word)_1_0d9c02b01414a68a2dab4af392179183.json => styles + ic in target block, add mark (word)_1_cea1695dae5f5462ee9ab5a7400fee2f.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{translate selection_1_ade79bca32d420b4323b2a888817b5d5.json => translate selection_1_2164172c277a84ca943d79ae55a7c655.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{update block prop and content_1_f90879213f18f8b8e13748443299b6dc.json => update block prop and content_1_e89f2ff97bb5e14d9f8e7c4bbb03af6f.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{update block prop_1_3f8e13d1cfa75e24cd4e0dfb0eab9ef4.json => update block prop_1_fabe61c81d039e0c80c38121db6daef1.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{update block type and content_1_07d3d8730ff541c3a2bf5e53c6707dac.json => update block type and content_1_92d996135152e832c6db18b41f6b6912.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/{update block type_1_6cc7ad0b6e2c278095f03deb353e4c9b.json => update block type_1_be165931651bf1c2e817e30b34cacddd.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{drop mark and link and change text within mark_1_17fe180166622808ade902a2eccad8aa.json => drop mark and link and change text within mark_1_02b8585f48a09784036175bf14c592cd.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{drop mark and link_1_a055d5e9dcf9d3ce1e1cddf57b441dc1.json => drop mark and link_1_5153f11ec2928539607eae3fc9554a2e.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{plain source block, add mention_1_7692c767dc159df75724f2a49cc38b0e.json => plain source block, add mention_1_f33053e9ce75e3382e59f65f47268a07.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{standard update_1_b81e76afad4cf5e84bd6815d2bc8d069.json => standard update_1_3701c48442d9b752a7ea313e3255163c.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{styles + ic in source block, remove mark_1_da7d1e5e03db624c6007dc8137fc3588.json => styles + ic in source block, remove mark_1_dd318513d3f70effe9df402a04ebe20e.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{styles + ic in source block, remove mention_1_758855f114117cd6c8f70c7caa84cc68.json => styles + ic in source block, remove mention_1_df29b6d9520b0719a02ff9f241d8fd12.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{styles + ic in source block, replace content_1_222775b0c617ba9bcada86cd238b6d64.json => styles + ic in source block, replace content_1_353407caea15e5886ca416c18085f09c.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{styles + ic in source block, update mention prop_1_ad74c153b3f0beb850955148f0a42c78.json => styles + ic in source block, update mention prop_1_545d20572920e7098f9e71846d69942e.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{styles + ic in source block, update text_1_4bf0b01b1e009966973599ebc2194362.json => styles + ic in source block, update text_1_f94a68a64c18b7537380682b3e0fa902.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{styles + ic in target block, add mark (paragraph)_1_5ce19f53eaf195c6e284c91b0db7d586.json => styles + ic in target block, add mark (paragraph)_1_b625ba3069c0ee0677dbab599b173252.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{styles + ic in target block, add mark (word)_1_0f8ce96b644d6bd531f0558208cf5790.json => styles + ic in target block, add mark (word)_1_f9207412b6a2032fd012f61be3d16b7b.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{translate selection_1_1cf9377128e689feac5e5e13a1d0e26f.json => translate selection_1_1d088b7563942b1405ced6473b89b3ea.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{update block prop and content_1_260e8bc6dd5c9cbd0650701e6d95ada3.json => update block prop and content_1_7aec058255eb34b8dd1fcc434173ed62.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{update block prop_1_339e6b8d82d281185c6ccbcd1809374f.json => update block prop_1_f4d4d0847f49e3177b2090d2dfcdf4a8.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{update block type and content_1_ff26ae30546f4e0d4279e60e4b7a1fbf.json => update block type and content_1_bb2150f4fbbd0d60e298c14879b5d98c.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/{update block type_1_d9cbf71a8b55c8be0b247c3bb200c59c.json => update block type_1_0cc06aead6a8738ef5ae9397d449a4bb.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{drop mark and link and change text within mark_1_d1f45ba6fee8787529137c920d6bc58e.json => drop mark and link and change text within mark_1_3b2d04fb8cc28b3327eac7fbb649212c.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{drop mark and link_1_c9489269d9a2d4353eda54289ed7f395.json => drop mark and link_1_7376633d53b21fc3dbe3c1f051cd2940.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{plain source block, add mention_1_416931598559b3e7e906647a66f0b8b1.json => plain source block, add mention_1_f44ed609f9d070a9db6e3357eb3b4b12.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{standard update_1_9728e4dd714a6a14ce441d72378dd67a.json => standard update_1_f38c18ce0c3c0d617287e458c9a79fc6.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{styles + ic in source block, remove mark_1_198059a270dbbb88db8f1cba97503205.json => styles + ic in source block, remove mark_1_58230e87771d121dabc82e08fdabeec9.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{styles + ic in source block, remove mention_1_9313219c085c3b39c7c14c00f388b4be.json => styles + ic in source block, remove mention_1_501a15f4ae0e22db498c2a018f67c304.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{styles + ic in source block, replace content_1_f7a4c2a7fc5e362c3484586f45b2501d.json => styles + ic in source block, replace content_1_3a53469420cab77a1672183bf403d5f1.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{styles + ic in source block, update mention prop_1_38090ebbfaca38fca97b1e4f0a0dd942.json => styles + ic in source block, update mention prop_1_d2d711f753398974c968fc07f4ded143.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{styles + ic in source block, update text_1_6374879c3f8fbc16db7c43304d2faacd.json => styles + ic in source block, update text_1_42c93de53980c01c69a514f6eea5f7c7.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{styles + ic in target block, add mark (paragraph)_1_0afac4d00d3f0bbdfd251a8394b6ff28.json => styles + ic in target block, add mark (paragraph)_1_c899778ecf731961e7554d0dd99c1048.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{styles + ic in target block, add mark (word)_1_00156bb4dd5722d44e0ff5332561928a.json => styles + ic in target block, add mark (word)_1_6de7b8e48053b34c8c48307442ebdaf9.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{translate selection_1_24abe901176e9d834f9542d0b26e82ae.json => translate selection_1_2be264b1a0ad629a6626df5dc6dc95ff.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{update block prop and content_1_3f479c81e81f4f9460df3af74ddd2207.json => update block prop and content_1_cc8d5c88299059d82196af81416f61e4.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{update block prop_1_6012638796e6e00b242b43642bb90a7a.json => update block prop_1_c3507737f635c70e33af6d9967568ce6.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{update block type and content_1_04e027a89c6d4e69a0f805d5c8987e2c.json => update block type and content_1_0e4e3658327ed05d3accbdb2649b4409.json} (100%) rename packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/{update block type_1_72aecf62b6c9c807411d248d46a62eea.json => update block type_1_14269fdf643fd47ec85aa390368ef71a.json} (100%) create mode 100644 packages/xl-ai/src/api/formats/tests/snapshotPath.ts diff --git a/packages/core/src/extensions/tiptap-extensions/Link/link.ts b/packages/core/src/extensions/tiptap-extensions/Link/link.ts index 9b3405d536..5f68082b9f 100644 --- a/packages/core/src/extensions/tiptap-extensions/Link/link.ts +++ b/packages/core/src/extensions/tiptap-extensions/Link/link.ts @@ -10,13 +10,6 @@ import { UNICODE_WHITESPACE_REGEX_GLOBAL } from "./helpers/whitespace.js"; const DEFAULT_PROTOCOL = "https"; -const HTML_ATTRIBUTES = { - target: "_blank", - rel: "noopener noreferrer nofollow", - className: "bn-inline-content-section", - "data-inline-content-type": "link", -}; - // Pre-compiled regex for URI protocol validation. // Allows: http, https, ftp, ftps, mailto, tel, callto, sms, cid, xmpp const ALLOWED_URI_REGEX = @@ -84,7 +77,12 @@ export const Link = Mark.create({ addOptions() { return { - HTMLAttributes: {}, + HTMLAttributes: { + target: "_blank", + rel: "noopener noreferrer nofollow", + className: "bn-inline-content-section", + "data-inline-content-type": "link", + }, editor: undefined, onClick: undefined, isValidLink: isAllowedUri, @@ -99,12 +97,6 @@ export const Link = Mark.create({ return element.getAttribute("href"); }, }, - target: { - default: HTML_ATTRIBUTES.target, - }, - rel: { - default: HTML_ATTRIBUTES.rel, - }, }; }, @@ -128,12 +120,22 @@ export const Link = Mark.create({ if (!this.options.isValidLink(HTMLAttributes.href)) { return [ "a", - mergeAttributes(HTML_ATTRIBUTES, { ...HTMLAttributes, href: "" }), + mergeAttributes( + { + ...HTMLAttributes, + href: "", + }, + this.options.HTMLAttributes, + ), 0, ]; } - return ["a", mergeAttributes(HTML_ATTRIBUTES, HTMLAttributes), 0]; + return [ + "a", + mergeAttributes(HTMLAttributes, this.options.HTMLAttributes), + 0, + ]; }, addPasteRules() { diff --git a/packages/xl-ai/package.json b/packages/xl-ai/package.json index da7de9c1fd..77f29b5bc6 100644 --- a/packages/xl-ai/package.json +++ b/packages/xl-ai/package.json @@ -66,6 +66,7 @@ "lint": "eslint src --max-warnings 0", "test": "NODE_EXTRA_CA_CERTS=\"$(mkcert -CAROOT)/rootCA.pem\" vitest --run", "test-watch": "NODE_EXTRA_CA_CERTS=\"$(mkcert -CAROOT)/rootCA.pem\" vitest watch", + "rename-msw-snapshots": "node scripts/rename-msw-snapshots.mjs", "email": "email dev" }, "dependencies": { diff --git a/packages/xl-ai/scripts/rename-msw-snapshots.mjs b/packages/xl-ai/scripts/rename-msw-snapshots.mjs new file mode 100755 index 0000000000..da1dbced8e --- /dev/null +++ b/packages/xl-ai/scripts/rename-msw-snapshots.mjs @@ -0,0 +1,129 @@ +#!/usr/bin/env node +// Repair msw-snapshot files after a request-shape change. +// +// When the request body changes (e.g. a schema change in BlockNote alters the +// HTML/JSON sent to the LLM), the md5 hash that msw-snapshot embeds in each +// cached response filename no longer matches. msw-snapshot then treats the +// snapshot as missing and (because of `updateSnapshots: "missing"`) falls +// through to the real API, which fails in CI without credentials and writes a +// new file at the *correct* new hash containing the failure response (e.g. +// 401). +// +// After that failed run, every affected slot has two files: +// __.json -- valid 200 response, wrong hash +// __.json -- right hash, but a 401 body +// +// This script transplants the 200 response into the new-hash file and deletes +// the old-hash file, leaving exactly one file per slot with the right hash +// and the right response. +// +// Usage: +// pnpm --filter @blocknote/xl-ai test # populates the new-hash files +// pnpm --filter @blocknote/xl-ai rename-msw-snapshots +// pnpm --filter @blocknote/xl-ai test # all green +import { + readFileSync, + readdirSync, + statSync, + unlinkSync, + writeFileSync, +} from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const PKG_ROOT = path.resolve(__dirname, ".."); +const SEARCH_ROOT = path.join(PKG_ROOT, "src"); + +const FILE_RE = /^(.+)_(\d+)_([a-f0-9]+)\.json$/; + +function* walk(dir) { + for (const entry of readdirSync(dir, { withFileTypes: true })) { + const p = path.join(dir, entry.name); + if (entry.isDirectory()) { + yield* walk(p); + } else if (entry.isFile() && entry.name.endsWith(".json")) { + yield p; + } + } +} + +const filesByDir = new Map(); +for (const file of walk(SEARCH_ROOT)) { + if (!file.includes(`${path.sep}__msw_snapshots__${path.sep}`)) continue; + const dir = path.dirname(file); + const list = filesByDir.get(dir) ?? []; + list.push(path.basename(file)); + filesByDir.set(dir, list); +} + +let migrated = 0; +let skipped = 0; +const skipNotes = []; + +for (const [dir, files] of filesByDir) { + const groups = new Map(); + for (const file of files) { + const match = FILE_RE.exec(file); + if (!match) continue; + const slot = `${match[1]}_${match[2]}`; + const list = groups.get(slot) ?? []; + list.push(file); + groups.set(slot, list); + } + + for (const [slot, group] of groups) { + if (group.length < 2) continue; + + const entries = group.map((file) => { + const fp = path.join(dir, file); + const data = JSON.parse(readFileSync(fp, "utf8")); + return { + file, + path: fp, + data, + status: data?.response?.status, + mtime: statSync(fp).mtimeMs, + }; + }); + + const good = entries.filter((e) => e.status === 200); + const bad = entries.filter((e) => e.status !== 200); + + if (good.length !== 1 || bad.length === 0) { + skipped++; + skipNotes.push( + ` ${path.relative(PKG_ROOT, dir)}/${slot}: ${good.length} good + ${bad.length} bad`, + ); + continue; + } + + // Use the most recently written bad file as the destination — its hash + // matches the current request body. + bad.sort((a, b) => b.mtime - a.mtime); + const target = bad[0]; + + target.data.response = good[0].data.response; + writeFileSync(target.path, JSON.stringify(target.data, null, 2)); + unlinkSync(good[0].path); + for (const extra of bad.slice(1)) unlinkSync(extra.path); + + migrated++; + console.log( + `migrated ${path.relative(PKG_ROOT, dir)}/${slot} -> ${target.file}`, + ); + } +} + +console.log(`\nDone. ${migrated} migrated, ${skipped} skipped.`); +if (skipped > 0) { + console.log("\nSkipped slots (need manual attention):"); + for (const note of skipNotes) console.log(note); +} +if (migrated === 0 && skipped === 0) { + console.log( + "\nNo mismatched snapshot pairs found. If you expected some, run\n" + + "`pnpm --filter @blocknote/xl-ai test` first to let msw-snapshot record\n" + + "the new-hash files alongside the existing old-hash ones.", + ); +} diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add and update paragraph_1_801ad86e0c3a4562338793805e66a52f.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add and update paragraph_1_0acceced44cd885ee4439d4ef8639ba2.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add and update paragraph_1_801ad86e0c3a4562338793805e66a52f.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add and update paragraph_1_0acceced44cd885ee4439d4ef8639ba2.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add paragraph and update selection_1_b6ecf36636295d284db3ba7243cd4835.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add paragraph and update selection_1_9f552939a63a167da4dd5b1abffbfc43.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add paragraph and update selection_1_b6ecf36636295d284db3ba7243cd4835.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/add paragraph and update selection_1_9f552939a63a167da4dd5b1abffbfc43.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add and update paragraph_1_3c276441275032fe98b12356026537a0.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add and update paragraph_1_f5ce14780d38e0a320dc0246f9fa3fa7.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add and update paragraph_1_3c276441275032fe98b12356026537a0.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add and update paragraph_1_f5ce14780d38e0a320dc0246f9fa3fa7.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add paragraph and update selection_1_0207de852025d2c0a1d417a7d66fa03c.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add paragraph and update selection_1_8157654938ade250b36e1dde3bf0a5c2.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add paragraph and update selection_1_0207de852025d2c0a1d417a7d66fa03c.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/add paragraph and update selection_1_8157654938ade250b36e1dde3bf0a5c2.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add and update paragraph_1_937647a13580b4dbb611e3de3b2c8788.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add and update paragraph_1_eb11dd6643fc4f655a9d55dbd71b19b9.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add and update paragraph_1_937647a13580b4dbb611e3de3b2c8788.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add and update paragraph_1_eb11dd6643fc4f655a9d55dbd71b19b9.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add paragraph and update selection_1_d9ea724851130649f405ff50190452b5.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add paragraph and update selection_1_bcb205a92155b4f033637eb9f5fb2d3b.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add paragraph and update selection_1_d9ea724851130649f405ff50190452b5.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Combined/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/add paragraph and update selection_1_bcb205a92155b4f033637eb9f5fb2d3b.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/delete first block_1_afd5ee1bda075c7482d1861d03ad0a29.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/delete first block_1_de1c4968c1329dacd5d81bcd2b3ed8d1.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/delete first block_1_afd5ee1bda075c7482d1861d03ad0a29.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/delete first block_1_de1c4968c1329dacd5d81bcd2b3ed8d1.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/delete first block_1_9a26ba1fa4692c62b4f519ed3669fdc5.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/delete first block_1_df7ac05af05cf3c79699aabb8ea42853.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/delete first block_1_9a26ba1fa4692c62b4f519ed3669fdc5.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/delete first block_1_df7ac05af05cf3c79699aabb8ea42853.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/delete first block_1_2fd92a4c2642fff1ef49d65014aa1ac3.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/delete first block_1_2c1689a55eb91228110b68a63451fd1a.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/delete first block_1_2fd92a4c2642fff1ef49d65014aa1ac3.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Delete/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/delete first block_1_2c1689a55eb91228110b68a63451fd1a.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link and change text within mark_1_fd54b2fefac722ab5057252b68c4faec.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link and change text within mark_1_7269bbc0b34bc5775aa44079fb454ffb.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link and change text within mark_1_fd54b2fefac722ab5057252b68c4faec.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link and change text within mark_1_7269bbc0b34bc5775aa44079fb454ffb.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link_1_93038afbc107d8439571e6287fc76a8f.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link_1_e3dcd01b4daf96d961ea02871bebdc41.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link_1_93038afbc107d8439571e6287fc76a8f.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/drop mark and link_1_e3dcd01b4daf96d961ea02871bebdc41.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/plain source block, add mention_1_7035efab1f6d9e5a46dde12d39f9ed19.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/plain source block, add mention_1_697fa8208493812d2a1e80e1aaf9c5de.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/plain source block, add mention_1_7035efab1f6d9e5a46dde12d39f9ed19.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/plain source block, add mention_1_697fa8208493812d2a1e80e1aaf9c5de.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/standard update_1_467258028a5a6bef3542c1a5417d4b3d.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/standard update_1_1aee87323867b909b4239664f8b71087.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/standard update_1_467258028a5a6bef3542c1a5417d4b3d.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/standard update_1_1aee87323867b909b4239664f8b71087.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mark_1_90c0b37bad31f3b9b0d15c492c610d0b.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mark_1_7e627acd5601089ce51f17d48a125d26.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mark_1_90c0b37bad31f3b9b0d15c492c610d0b.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mark_1_7e627acd5601089ce51f17d48a125d26.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mention_1_3e8b04b91ca15c467180df1c60c9e1b2.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mention_1_191aa134e34de44ad154b02c452f2a13.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mention_1_3e8b04b91ca15c467180df1c60c9e1b2.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, remove mention_1_191aa134e34de44ad154b02c452f2a13.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, replace content_1_3551fccc96307281574c2c96eaa05002.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, replace content_1_f1ad8291536f56abe5780af9c67a719e.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, replace content_1_3551fccc96307281574c2c96eaa05002.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, replace content_1_f1ad8291536f56abe5780af9c67a719e.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update mention prop_1_e7ef562479ab33624bfa2bd75c4d1f5e.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update mention prop_1_09e4b9d91e0003a97447e19e13c71fae.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update mention prop_1_e7ef562479ab33624bfa2bd75c4d1f5e.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update mention prop_1_09e4b9d91e0003a97447e19e13c71fae.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update text_1_3a3fa0950f819e8073475e78106b353d.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update text_1_135a07dea96ec03fd66a4f9d14bffaab.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update text_1_3a3fa0950f819e8073475e78106b353d.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in source block, update text_1_135a07dea96ec03fd66a4f9d14bffaab.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (paragraph)_1_7a05ed5acf369206dda586e41235430b.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (paragraph)_1_057de0a27c49b9bc6acd8203ecddd838.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (paragraph)_1_7a05ed5acf369206dda586e41235430b.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (paragraph)_1_057de0a27c49b9bc6acd8203ecddd838.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (word)_1_0d9c02b01414a68a2dab4af392179183.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (word)_1_cea1695dae5f5462ee9ab5a7400fee2f.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (word)_1_0d9c02b01414a68a2dab4af392179183.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/styles + ic in target block, add mark (word)_1_cea1695dae5f5462ee9ab5a7400fee2f.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/translate selection_1_ade79bca32d420b4323b2a888817b5d5.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/translate selection_1_2164172c277a84ca943d79ae55a7c655.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/translate selection_1_ade79bca32d420b4323b2a888817b5d5.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/translate selection_1_2164172c277a84ca943d79ae55a7c655.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop and content_1_f90879213f18f8b8e13748443299b6dc.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop and content_1_e89f2ff97bb5e14d9f8e7c4bbb03af6f.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop and content_1_f90879213f18f8b8e13748443299b6dc.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop and content_1_e89f2ff97bb5e14d9f8e7c4bbb03af6f.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop_1_3f8e13d1cfa75e24cd4e0dfb0eab9ef4.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop_1_fabe61c81d039e0c80c38121db6daef1.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop_1_3f8e13d1cfa75e24cd4e0dfb0eab9ef4.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block prop_1_fabe61c81d039e0c80c38121db6daef1.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type and content_1_07d3d8730ff541c3a2bf5e53c6707dac.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type and content_1_92d996135152e832c6db18b41f6b6912.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type and content_1_07d3d8730ff541c3a2bf5e53c6707dac.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type and content_1_92d996135152e832c6db18b41f6b6912.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type_1_6cc7ad0b6e2c278095f03deb353e4c9b.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type_1_be165931651bf1c2e817e30b34cacddd.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type_1_6cc7ad0b6e2c278095f03deb353e4c9b.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/anthropic.messages/claude-3-7-sonnet-latest (streaming)/update block type_1_be165931651bf1c2e817e30b34cacddd.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link and change text within mark_1_17fe180166622808ade902a2eccad8aa.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link and change text within mark_1_02b8585f48a09784036175bf14c592cd.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link and change text within mark_1_17fe180166622808ade902a2eccad8aa.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link and change text within mark_1_02b8585f48a09784036175bf14c592cd.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link_1_a055d5e9dcf9d3ce1e1cddf57b441dc1.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link_1_5153f11ec2928539607eae3fc9554a2e.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link_1_a055d5e9dcf9d3ce1e1cddf57b441dc1.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/drop mark and link_1_5153f11ec2928539607eae3fc9554a2e.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/plain source block, add mention_1_7692c767dc159df75724f2a49cc38b0e.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/plain source block, add mention_1_f33053e9ce75e3382e59f65f47268a07.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/plain source block, add mention_1_7692c767dc159df75724f2a49cc38b0e.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/plain source block, add mention_1_f33053e9ce75e3382e59f65f47268a07.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/standard update_1_b81e76afad4cf5e84bd6815d2bc8d069.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/standard update_1_3701c48442d9b752a7ea313e3255163c.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/standard update_1_b81e76afad4cf5e84bd6815d2bc8d069.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/standard update_1_3701c48442d9b752a7ea313e3255163c.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mark_1_da7d1e5e03db624c6007dc8137fc3588.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mark_1_dd318513d3f70effe9df402a04ebe20e.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mark_1_da7d1e5e03db624c6007dc8137fc3588.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mark_1_dd318513d3f70effe9df402a04ebe20e.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mention_1_758855f114117cd6c8f70c7caa84cc68.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mention_1_df29b6d9520b0719a02ff9f241d8fd12.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mention_1_758855f114117cd6c8f70c7caa84cc68.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, remove mention_1_df29b6d9520b0719a02ff9f241d8fd12.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, replace content_1_222775b0c617ba9bcada86cd238b6d64.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, replace content_1_353407caea15e5886ca416c18085f09c.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, replace content_1_222775b0c617ba9bcada86cd238b6d64.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, replace content_1_353407caea15e5886ca416c18085f09c.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update mention prop_1_ad74c153b3f0beb850955148f0a42c78.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update mention prop_1_545d20572920e7098f9e71846d69942e.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update mention prop_1_ad74c153b3f0beb850955148f0a42c78.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update mention prop_1_545d20572920e7098f9e71846d69942e.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update text_1_4bf0b01b1e009966973599ebc2194362.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update text_1_f94a68a64c18b7537380682b3e0fa902.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update text_1_4bf0b01b1e009966973599ebc2194362.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in source block, update text_1_f94a68a64c18b7537380682b3e0fa902.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (paragraph)_1_5ce19f53eaf195c6e284c91b0db7d586.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (paragraph)_1_b625ba3069c0ee0677dbab599b173252.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (paragraph)_1_5ce19f53eaf195c6e284c91b0db7d586.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (paragraph)_1_b625ba3069c0ee0677dbab599b173252.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (word)_1_0f8ce96b644d6bd531f0558208cf5790.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (word)_1_f9207412b6a2032fd012f61be3d16b7b.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (word)_1_0f8ce96b644d6bd531f0558208cf5790.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/styles + ic in target block, add mark (word)_1_f9207412b6a2032fd012f61be3d16b7b.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/translate selection_1_1cf9377128e689feac5e5e13a1d0e26f.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/translate selection_1_1d088b7563942b1405ced6473b89b3ea.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/translate selection_1_1cf9377128e689feac5e5e13a1d0e26f.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/translate selection_1_1d088b7563942b1405ced6473b89b3ea.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop and content_1_260e8bc6dd5c9cbd0650701e6d95ada3.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop and content_1_7aec058255eb34b8dd1fcc434173ed62.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop and content_1_260e8bc6dd5c9cbd0650701e6d95ada3.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop and content_1_7aec058255eb34b8dd1fcc434173ed62.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop_1_339e6b8d82d281185c6ccbcd1809374f.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop_1_f4d4d0847f49e3177b2090d2dfcdf4a8.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop_1_339e6b8d82d281185c6ccbcd1809374f.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block prop_1_f4d4d0847f49e3177b2090d2dfcdf4a8.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type and content_1_ff26ae30546f4e0d4279e60e4b7a1fbf.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type and content_1_bb2150f4fbbd0d60e298c14879b5d98c.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type and content_1_ff26ae30546f4e0d4279e60e4b7a1fbf.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type and content_1_bb2150f4fbbd0d60e298c14879b5d98c.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type_1_d9cbf71a8b55c8be0b247c3bb200c59c.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type_1_0cc06aead6a8738ef5ae9397d449a4bb.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type_1_d9cbf71a8b55c8be0b247c3bb200c59c.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/groq.chat/llama-3.3-70b-versatile (streaming)/update block type_1_0cc06aead6a8738ef5ae9397d449a4bb.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link and change text within mark_1_d1f45ba6fee8787529137c920d6bc58e.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link and change text within mark_1_3b2d04fb8cc28b3327eac7fbb649212c.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link and change text within mark_1_d1f45ba6fee8787529137c920d6bc58e.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link and change text within mark_1_3b2d04fb8cc28b3327eac7fbb649212c.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link_1_c9489269d9a2d4353eda54289ed7f395.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link_1_7376633d53b21fc3dbe3c1f051cd2940.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link_1_c9489269d9a2d4353eda54289ed7f395.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/drop mark and link_1_7376633d53b21fc3dbe3c1f051cd2940.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/plain source block, add mention_1_416931598559b3e7e906647a66f0b8b1.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/plain source block, add mention_1_f44ed609f9d070a9db6e3357eb3b4b12.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/plain source block, add mention_1_416931598559b3e7e906647a66f0b8b1.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/plain source block, add mention_1_f44ed609f9d070a9db6e3357eb3b4b12.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/standard update_1_9728e4dd714a6a14ce441d72378dd67a.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/standard update_1_f38c18ce0c3c0d617287e458c9a79fc6.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/standard update_1_9728e4dd714a6a14ce441d72378dd67a.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/standard update_1_f38c18ce0c3c0d617287e458c9a79fc6.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mark_1_198059a270dbbb88db8f1cba97503205.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mark_1_58230e87771d121dabc82e08fdabeec9.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mark_1_198059a270dbbb88db8f1cba97503205.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mark_1_58230e87771d121dabc82e08fdabeec9.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mention_1_9313219c085c3b39c7c14c00f388b4be.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mention_1_501a15f4ae0e22db498c2a018f67c304.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mention_1_9313219c085c3b39c7c14c00f388b4be.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, remove mention_1_501a15f4ae0e22db498c2a018f67c304.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, replace content_1_f7a4c2a7fc5e362c3484586f45b2501d.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, replace content_1_3a53469420cab77a1672183bf403d5f1.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, replace content_1_f7a4c2a7fc5e362c3484586f45b2501d.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, replace content_1_3a53469420cab77a1672183bf403d5f1.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update mention prop_1_38090ebbfaca38fca97b1e4f0a0dd942.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update mention prop_1_d2d711f753398974c968fc07f4ded143.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update mention prop_1_38090ebbfaca38fca97b1e4f0a0dd942.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update mention prop_1_d2d711f753398974c968fc07f4ded143.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update text_1_6374879c3f8fbc16db7c43304d2faacd.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update text_1_42c93de53980c01c69a514f6eea5f7c7.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update text_1_6374879c3f8fbc16db7c43304d2faacd.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in source block, update text_1_42c93de53980c01c69a514f6eea5f7c7.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (paragraph)_1_0afac4d00d3f0bbdfd251a8394b6ff28.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (paragraph)_1_c899778ecf731961e7554d0dd99c1048.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (paragraph)_1_0afac4d00d3f0bbdfd251a8394b6ff28.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (paragraph)_1_c899778ecf731961e7554d0dd99c1048.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (word)_1_00156bb4dd5722d44e0ff5332561928a.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (word)_1_6de7b8e48053b34c8c48307442ebdaf9.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (word)_1_00156bb4dd5722d44e0ff5332561928a.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/styles + ic in target block, add mark (word)_1_6de7b8e48053b34c8c48307442ebdaf9.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/translate selection_1_24abe901176e9d834f9542d0b26e82ae.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/translate selection_1_2be264b1a0ad629a6626df5dc6dc95ff.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/translate selection_1_24abe901176e9d834f9542d0b26e82ae.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/translate selection_1_2be264b1a0ad629a6626df5dc6dc95ff.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop and content_1_3f479c81e81f4f9460df3af74ddd2207.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop and content_1_cc8d5c88299059d82196af81416f61e4.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop and content_1_3f479c81e81f4f9460df3af74ddd2207.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop and content_1_cc8d5c88299059d82196af81416f61e4.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop_1_6012638796e6e00b242b43642bb90a7a.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop_1_c3507737f635c70e33af6d9967568ce6.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop_1_6012638796e6e00b242b43642bb90a7a.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block prop_1_c3507737f635c70e33af6d9967568ce6.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type and content_1_04e027a89c6d4e69a0f805d5c8987e2c.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type and content_1_0e4e3658327ed05d3accbdb2649b4409.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type and content_1_04e027a89c6d4e69a0f805d5c8987e2c.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type and content_1_0e4e3658327ed05d3accbdb2649b4409.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type_1_72aecf62b6c9c807411d248d46a62eea.json b/packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type_1_14269fdf643fd47ec85aa390368ef71a.json similarity index 100% rename from packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type_1_72aecf62b6c9c807411d248d46a62eea.json rename to packages/xl-ai/src/api/formats/html-blocks/__snapshots__/htmlBlocks.test.ts/Update/__msw_snapshots__/openai.responses/gpt-4o-2024-08-06 (streaming)/update block type_1_14269fdf643fd47ec85aa390368ef71a.json diff --git a/packages/xl-ai/src/api/formats/html-blocks/htmlBlocks.test.ts b/packages/xl-ai/src/api/formats/html-blocks/htmlBlocks.test.ts index 6b092f3bd3..ba3ea4cf86 100644 --- a/packages/xl-ai/src/api/formats/html-blocks/htmlBlocks.test.ts +++ b/packages/xl-ai/src/api/formats/html-blocks/htmlBlocks.test.ts @@ -1,5 +1,4 @@ -import { getCurrentTest } from "@vitest/runner"; -import { getSortedEntries, snapshot, toHashString } from "msw-snapshot"; +import { snapshot } from "msw-snapshot"; import { setupServer } from "msw/node"; import path from "path"; import { afterAll, afterEach, beforeAll, describe, it } from "vitest"; @@ -8,6 +7,7 @@ import { testAIModels } from "../../../testUtil/testAIModels.js"; import { BlockNoteEditor } from "@blocknote/core"; import { StreamToolExecutor } from "../../../streamTool/StreamToolExecutor.js"; import { ClientSideTransport } from "../../../streamTool/vercelAiSdk/clientside/ClientSideTransport.js"; +import { createSnapshotPathFn } from "../tests/snapshotPath.js"; import { generateSharedTestCases } from "../tests/sharedTestCases.js"; import { htmlBlockLLMFormat } from "./htmlBlocks.js"; @@ -17,54 +17,14 @@ const BASE_FILE_PATH = path.resolve( path.basename(__filename), ); -const fetchCountMap: Record = {}; - -async function createRequestHash(req: Request) { - const url = new URL(req.url); - return [ - // url.host, - // url.pathname, - toHashString([ - req.method, - url.origin, - url.pathname, - getSortedEntries(url.searchParams), - getSortedEntries(req.headers), - // getSortedEntries(req.cookies), - new TextDecoder("utf-8").decode(await req.arrayBuffer()), - ]), - ].join("/"); -} - // Main test suite with snapshot middleware describe("Models", () => { // Define server with snapshot middleware for the main tests const server = setupServer( snapshot({ updateSnapshots: "missing", - // onSnapshotUpdated: "all", - // ignoreSnapshots: true, - async createSnapshotPath(info) { - // use a unique path for each model - const t = getCurrentTest()!; - const mswPath = path.join( - t.suite!.name, // same directory as the test snapshot - "__msw_snapshots__", - t.suite!.suite!.name, // model / streaming params - t.name, - ); - // in case there are multiple requests in a test, we need to use a separate snapshot for each request - fetchCountMap[mswPath] = (fetchCountMap[mswPath] || 0) + 1; - const hash = await createRequestHash(info.request); - return mswPath + `_${fetchCountMap[mswPath]}_${hash}.json`; - }, + createSnapshotPath: createSnapshotPathFn(BASE_FILE_PATH), basePath: BASE_FILE_PATH, - // onFetchFromSnapshot(info, snapshot) { - // console.log("onFetchFromSnapshot", info, snapshot); - // }, - // onFetchFromServer(info, snapshot) { - // console.log("onFetchFromServer", info, snapshot); - // }, }), ); diff --git a/packages/xl-ai/src/api/formats/json/json.test.ts b/packages/xl-ai/src/api/formats/json/json.test.ts index 3afd46c32c..a35dbdbf24 100644 --- a/packages/xl-ai/src/api/formats/json/json.test.ts +++ b/packages/xl-ai/src/api/formats/json/json.test.ts @@ -1,9 +1,9 @@ import { afterAll, afterEach, beforeAll, describe } from "vitest"; -import { getCurrentTest } from "@vitest/runner"; -import { getSortedEntries, snapshot, toHashString } from "msw-snapshot"; +import { snapshot } from "msw-snapshot"; import { setupServer } from "msw/node"; import path from "path"; +import { createSnapshotPathFn } from "../tests/snapshotPath.js"; import { generateSharedTestCases } from "../tests/sharedTestCases.js"; import { ClientSideTransport } from "../../../streamTool/vercelAiSdk/clientside/ClientSideTransport.js"; @@ -16,54 +16,14 @@ const BASE_FILE_PATH = path.resolve( path.basename(__filename), ); -const fetchCountMap: Record = {}; - -async function createRequestHash(req: Request) { - const url = new URL(req.url); - return [ - // url.host, - // url.pathname, - toHashString([ - req.method, - url.origin, - url.pathname, - getSortedEntries(url.searchParams), - getSortedEntries(req.headers), - // getSortedEntries(req.cookies), - new TextDecoder("utf-8").decode(await req.arrayBuffer()), - ]), - ].join("/"); -} - // Main test suite with snapshot middleware describe.skip("Models", () => { // Define server with snapshot middleware for the main tests const server = setupServer( snapshot({ updateSnapshots: "missing", - // updateSnapshots: "all", - // ignoreSnapshots: true, - async createSnapshotPath(info) { - // use a unique path for each model - const t = getCurrentTest()!; - const mswPath = path.join( - t.suite!.name, // same directory as the test snapshot - "__msw_snapshots__", - t.suite!.suite!.name, // model / streaming params - t.name, - ); - // in case there are multiple requests in a test, we need to use a separate snapshot for each request - fetchCountMap[mswPath] = (fetchCountMap[mswPath] || 0) + 1; - const hash = await createRequestHash(info.request); - return mswPath + `_${fetchCountMap[mswPath]}_${hash}.json`; - }, + createSnapshotPath: createSnapshotPathFn(BASE_FILE_PATH), basePath: BASE_FILE_PATH, - // onFetchFromSnapshot(info, snapshot) { - // console.log("onFetchFromSnapshot", info, snapshot); - // }, - // onFetchFromServer(info, snapshot) { - // console.log("onFetchFromServer", info, snapshot); - // }, }), ); diff --git a/packages/xl-ai/src/api/formats/markdown-blocks/markdownBlocks.test.ts b/packages/xl-ai/src/api/formats/markdown-blocks/markdownBlocks.test.ts index f5d875fb0c..4ab358b84c 100644 --- a/packages/xl-ai/src/api/formats/markdown-blocks/markdownBlocks.test.ts +++ b/packages/xl-ai/src/api/formats/markdown-blocks/markdownBlocks.test.ts @@ -1,7 +1,6 @@ import { afterAll, afterEach, beforeAll, describe } from "vitest"; -import { getCurrentTest } from "@vitest/runner"; -import { getSortedEntries, snapshot, toHashString } from "msw-snapshot"; +import { snapshot } from "msw-snapshot"; import { setupServer } from "msw/node"; import path from "path"; @@ -9,6 +8,7 @@ import { ClientSideTransport } from "../../../streamTool/vercelAiSdk/clientside/ import { testAIModels } from "../../../testUtil/testAIModels.js"; import { aiDocumentFormats } from "../../index.js"; import { generateSharedTestCases } from "../tests/sharedTestCases.js"; +import { createSnapshotPathFn } from "../tests/snapshotPath.js"; const BASE_FILE_PATH = path.resolve( __dirname, @@ -16,54 +16,14 @@ const BASE_FILE_PATH = path.resolve( path.basename(__filename), ); -const fetchCountMap: Record = {}; - -async function createRequestHash(req: Request) { - const url = new URL(req.url); - return [ - // url.host, - // url.pathname, - toHashString([ - req.method, - url.origin, - url.pathname, - getSortedEntries(url.searchParams), - getSortedEntries(req.headers), - // getSortedEntries(req.cookies), - new TextDecoder("utf-8").decode(await req.arrayBuffer()), - ]), - ].join("/"); -} - // Main test suite with snapshot middleware describe("Models", () => { // Define server with snapshot middleware for the main tests const server = setupServer( snapshot({ updateSnapshots: "missing", - // onSnapshotUpdated: "all", - // ignoreSnapshots: true, - async createSnapshotPath(info) { - // use a unique path for each model - const t = getCurrentTest()!; - const mswPath = path.join( - t.suite!.name, // same directory as the test snapshot - "__msw_snapshots__", - t.suite!.suite!.name, // model / streaming params - t.name, - ); - // in case there are multiple requests in a test, we need to use a separate snapshot for each request - fetchCountMap[mswPath] = (fetchCountMap[mswPath] || 0) + 1; - const hash = await createRequestHash(info.request); - return mswPath + `_${fetchCountMap[mswPath]}_${hash}.json`; - }, + createSnapshotPath: createSnapshotPathFn(BASE_FILE_PATH), basePath: BASE_FILE_PATH, - // onFetchFromSnapshot(info, snapshot) { - // console.log("onFetchFromSnapshot", info, snapshot); - // }, - // onFetchFromServer(info, snapshot) { - // console.log("onFetchFromServer", info, snapshot); - // }, }), ); diff --git a/packages/xl-ai/src/api/formats/tests/snapshotPath.ts b/packages/xl-ai/src/api/formats/tests/snapshotPath.ts new file mode 100644 index 0000000000..670cee530d --- /dev/null +++ b/packages/xl-ai/src/api/formats/tests/snapshotPath.ts @@ -0,0 +1,33 @@ +import { getCurrentTest } from "@vitest/runner"; +import { getSortedEntries, toHashString } from "msw-snapshot"; +import path from "node:path"; + +async function createRequestHash(req: Request): Promise { + const url = new URL(req.url); + return toHashString([ + req.method, + url.origin, + url.pathname, + getSortedEntries(url.searchParams), + getSortedEntries(req.headers), + new TextDecoder("utf-8").decode(await req.arrayBuffer()), + ]); +} + +export function createSnapshotPathFn(_basePath: string) { + const fetchCountMap: Record = {}; + + return async (info: { request: Request }): Promise => { + const t = getCurrentTest()!; + const mswPath = path.join( + t.suite!.name, + "__msw_snapshots__", + t.suite!.suite!.name, + t.name, + ); + fetchCountMap[mswPath] = (fetchCountMap[mswPath] || 0) + 1; + const counter = fetchCountMap[mswPath]; + const hash = await createRequestHash(info.request); + return `${mswPath}_${counter}_${hash}.json`; + }; +} diff --git a/packages/xl-ai/src/prosemirror/__snapshots__/agent.test.ts.snap b/packages/xl-ai/src/prosemirror/__snapshots__/agent.test.ts.snap index 426acde29f..602022d35a 100644 --- a/packages/xl-ai/src/prosemirror/__snapshots__/agent.test.ts.snap +++ b/packages/xl-ai/src/prosemirror/__snapshots__/agent.test.ts.snap @@ -9,29 +9,29 @@ exports[`agentStepToTr > Update > clear block formatting 1`] = ` exports[`agentStepToTr > Update > drop mark and link 1`] = ` [ - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}},{"type":"deletion","attrs":{"id":null}}],"text":"Link."},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}},{"type":"deletion","attrs":{"id":null}}],"text":"Link."},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Link."}]}]}]}]}", ] `; exports[`agentStepToTr > Update > drop mark and link and change text within mark 1`] = ` [ - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"H"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold "},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold t"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold th"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}},{"type":"deletion","attrs":{"id":null}}],"text":"Link."},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"H"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold "},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold t"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold th"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}},{"type":"deletion","attrs":{"id":null}}],"text":"Link."},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Link."}]}]}]}]}", ] `; @@ -73,128 +73,128 @@ exports[`agentStepToTr > Update > modify parent content 1`] = ` exports[`agentStepToTr > Update > plain source block, add mention 1`] = ` [ - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"mention","attrs":{"user":"Jane Doe"},"marks":[{"type":"insertion","attrs":{"id":null}}]},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"mention","attrs":{"user":"Jane Doe"},"marks":[{"type":"insertion","attrs":{"id":null}}]},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", ] `; exports[`agentStepToTr > Update > standard update 1`] = ` [ - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"W"},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"We"},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wel"},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Welt"},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"W"},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"We"},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wel"},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Welt"},{"type":"text","text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", ] `; exports[`agentStepToTr > Update > styles + ic in source block, remove mark 1`] = ` [ - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", ] `; exports[`agentStepToTr > Update > styles + ic in source block, remove mention 1`] = ` [ - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":", "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":", "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", ] `; exports[`agentStepToTr > Update > styles + ic in source block, replace content 1`] = ` [ - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"u"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"up"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"upd"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"upda"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updat"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"update"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated "}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated c"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated co"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated con"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated cont"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated conte"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated conten"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated content"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"u"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"up"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"upd"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"upda"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updat"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"update"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated "}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated c"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated co"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated con"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated cont"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated conte"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated conten"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text is blue!"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"updated content"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", ] `; exports[`agentStepToTr > Update > styles + ic in source block, update mention prop 1`] = ` [ - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"mention","attrs":{"user":"Jane Doe"},"marks":[{"type":"insertion","attrs":{"id":null}}]},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"},"marks":[{"type":"deletion","attrs":{"id":null}}]},{"type":"mention","attrs":{"user":"Jane Doe"},"marks":[{"type":"insertion","attrs":{"id":null}}]},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", ] `; exports[`agentStepToTr > Update > styles + ic in source block, update text 1`] = ` [ - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"W"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wi"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie g"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie ge"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geh"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht e"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es d"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es di"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"D"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Di"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Die"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dies"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Diese"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser T"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Te"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Tex"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"i"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"is"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist b"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist bl"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist bla"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist blau"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"W"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wi"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie g"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie ge"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geh"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht e"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es d"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es di"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"D"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Di"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Die"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dies"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Diese"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser T"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Te"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Tex"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"i"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"is"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist b"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist bl"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist bla"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"How are you doing?"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"This text"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Wie geht es dir?"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"Dieser Text"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"deletion","attrs":{"id":null}}],"text":"is blue"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}},{"type":"insertion","attrs":{"id":null}}],"text":"ist blau"},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", ] `; exports[`agentStepToTr > Update > styles + ic in target block, add mark (paragraph) 1`] = ` [ - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello, world!"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello, world!"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", ] `; exports[`agentStepToTr > Update > styles + ic in target block, add mark (word) 1`] = ` [ - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world!"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"world!"},{"type":"text","marks":[{"type":"bold"},{"type":"insertion","attrs":{"id":null}}],"text":"world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", ] `; exports[`agentStepToTr > Update > translate selection 1`] = ` [ - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"H"},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"e"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"a"},{"type":"text","text":"llo, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", ] `; @@ -207,45 +207,45 @@ exports[`agentStepToTr > Update > turn paragraphs into list 1`] = ` exports[`agentStepToTr > Update > update block prop 1`] = ` [ - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", ] `; exports[`agentStepToTr > Update > update block prop and content 1`] = ` [ - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"W"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wh"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wha"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What'"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's "},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's u"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's up"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"W"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wh"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wha"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What'"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's "},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's u"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"right"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's up"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"textAlignment","previousValue":"left","newValue":"right"}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", ] `; exports[`agentStepToTr > Update > update block type 1`] = ` [ - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", ] `; exports[`agentStepToTr > Update > update block type and content 1`] = ` [ - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"W"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wh"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wha"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What'"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's "},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's u"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", - "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's up"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com","target":"_blank","rel":"noopener noreferrer nofollow"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","text":"Hello, world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"W"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wh"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Wha"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What'"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's "},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's u"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", + "I {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"heading","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left","level":1,"isToggleable":false},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"What's up"},{"type":"text","text":", world!"}],"marks":[{"type":"modification","attrs":{"id":null,"type":"nodeType","attrName":null,"previousValue":"paragraph","newValue":"heading"}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"level","previousValue":null,"newValue":1}},{"type":"modification","attrs":{"id":null,"type":"attr","attrName":"isToggleable","previousValue":null,"newValue":false}}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", ] `; diff --git a/packages/xl-ai/src/prosemirror/__snapshots__/changeset.test.ts.snap b/packages/xl-ai/src/prosemirror/__snapshots__/changeset.test.ts.snap index 2e6d6ea8f4..4a74c76902 100644 --- a/packages/xl-ai/src/prosemirror/__snapshots__/changeset.test.ts.snap +++ b/packages/xl-ai/src/prosemirror/__snapshots__/changeset.test.ts.snap @@ -116,8 +116,6 @@ exports[`drop mark and link 1`] = ` { "attrs": { "href": "https://www.google.com", - "rel": "noopener noreferrer nofollow", - "target": "_blank", }, "type": "link", }, @@ -249,8 +247,6 @@ exports[`drop mark and link and change text within mark 1`] = ` { "attrs": { "href": "https://www.google.com", - "rel": "noopener noreferrer nofollow", - "target": "_blank", }, "type": "link", }, diff --git a/tests/nextjs-test-app/package.json b/tests/nextjs-test-app/package.json index f4f81ae9f7..d0098c1e75 100644 --- a/tests/nextjs-test-app/package.json +++ b/tests/nextjs-test-app/package.json @@ -3,10 +3,10 @@ "private": true, "version": "0.0.0", "dependencies": { - "@blocknote/core": "file:.tarballs/blocknote-core-0.48.1.tgz", - "@blocknote/mantine": "file:.tarballs/blocknote-mantine-0.48.1.tgz", - "@blocknote/react": "file:.tarballs/blocknote-react-0.48.1.tgz", - "@blocknote/server-util": "file:.tarballs/blocknote-server-util-0.48.1.tgz", + "@blocknote/core": "file:.tarballs/blocknote-core-0.49.0.tgz", + "@blocknote/mantine": "file:.tarballs/blocknote-mantine-0.49.0.tgz", + "@blocknote/react": "file:.tarballs/blocknote-react-0.49.0.tgz", + "@blocknote/server-util": "file:.tarballs/blocknote-server-util-0.49.0.tgz", "@mantine/core": "^8.3.11", "@mantine/hooks": "^8.3.11", "next": "^16.0.0", diff --git a/tests/src/unit/core/createTestEditor.ts b/tests/src/unit/core/createTestEditor.ts index b556ae5dc4..972e42b14d 100644 --- a/tests/src/unit/core/createTestEditor.ts +++ b/tests/src/unit/core/createTestEditor.ts @@ -39,6 +39,12 @@ export const createTestEditor = < }), }, }), + links: { + HTMLAttributes: { + rel: "external", + "data-custom-attribute": true, + }, + }, tables: { splitCells: true, cellBackgroundColor: true, diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/hardbreak/between-links.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/hardbreak/between-links.html index fbe9ef135f..cbc42aa3f9 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/hardbreak/between-links.html +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/hardbreak/between-links.html @@ -4,19 +4,21 @@ diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/hardbreak/link.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/hardbreak/link.html index 691a663449..a896507f92 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/hardbreak/link.html +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/hardbreak/link.html @@ -4,19 +4,21 @@ diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/adjacent.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/adjacent.html index b89f21cd59..9af317b375 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/adjacent.html +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/adjacent.html @@ -4,18 +4,20 @@ diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/basic.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/basic.html index bfc8c80945..159dfce9ea 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/basic.html +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/basic.html @@ -4,11 +4,12 @@ diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/styled.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/styled.html index 6c67039ff9..766681b45a 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/styled.html +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/styled.html @@ -5,19 +5,21 @@

Web site

diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/hardbreak/between-links.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/hardbreak/between-links.html index 7b074b0120..54664cf2b1 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/html/hardbreak/between-links.html +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/hardbreak/between-links.html @@ -1,17 +1,19 @@

Link1
Link2

\ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/hardbreak/link.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/hardbreak/link.html index aab38c859f..930c29aaab 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/html/hardbreak/link.html +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/hardbreak/link.html @@ -1,17 +1,19 @@

Link1
Link1

\ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/adjacent.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/adjacent.html index e37cee5aa7..057be7e7f6 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/adjacent.html +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/adjacent.html @@ -1,16 +1,18 @@

Website Website2

\ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/basic.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/basic.html index 6174bf9428..610e86b2dd 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/basic.html +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/basic.html @@ -1,9 +1,10 @@

Website

\ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/styled.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/styled.html index fd2832b117..189a36f5e8 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/styled.html +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/styled.html @@ -1,18 +1,20 @@

Web site

\ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/hardbreak/between-links.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/hardbreak/between-links.json index ec5babf930..9db2d101f6 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/hardbreak/between-links.json +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/hardbreak/between-links.json @@ -16,8 +16,6 @@ { "attrs": { "href": "https://www.website.com", - "rel": "noopener noreferrer nofollow", - "target": "_blank", }, "type": "link", }, @@ -33,8 +31,6 @@ { "attrs": { "href": "https://www.website2.com", - "rel": "noopener noreferrer nofollow", - "target": "_blank", }, "type": "link", }, diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/hardbreak/link.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/hardbreak/link.json index 33be9006e7..7a3369fd10 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/hardbreak/link.json +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/hardbreak/link.json @@ -16,8 +16,6 @@ { "attrs": { "href": "https://www.website.com", - "rel": "noopener noreferrer nofollow", - "target": "_blank", }, "type": "link", }, @@ -33,8 +31,6 @@ { "attrs": { "href": "https://www.website.com", - "rel": "noopener noreferrer nofollow", - "target": "_blank", }, "type": "link", }, diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/adjacent.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/adjacent.json index 928b37b152..f3020cdf7f 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/adjacent.json +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/adjacent.json @@ -16,8 +16,6 @@ { "attrs": { "href": "https://www.website.com", - "rel": "noopener noreferrer nofollow", - "target": "_blank", }, "type": "link", }, @@ -30,8 +28,6 @@ { "attrs": { "href": "https://www.website2.com", - "rel": "noopener noreferrer nofollow", - "target": "_blank", }, "type": "link", }, diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/basic.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/basic.json index f2bc979545..b85306efc8 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/basic.json +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/basic.json @@ -16,8 +16,6 @@ { "attrs": { "href": "https://www.website.com", - "rel": "noopener noreferrer nofollow", - "target": "_blank", }, "type": "link", }, diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/styled.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/styled.json index e55e628ec4..2c01e6c1a1 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/styled.json +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/styled.json @@ -19,8 +19,6 @@ { "attrs": { "href": "https://www.website.com", - "rel": "noopener noreferrer nofollow", - "target": "_blank", }, "type": "link", }, @@ -33,8 +31,6 @@ { "attrs": { "href": "https://www.website.com", - "rel": "noopener noreferrer nofollow", - "target": "_blank", }, "type": "link", }, From e9497e3e6bbcf5afc5797030cf5394da03418f90 Mon Sep 17 00:00:00 2001 From: Yousef Date: Fri, 1 May 2026 08:01:30 +0200 Subject: [PATCH 37/76] fix: guard hideMenuIfNotFrozen against undefined view state (#2694) (#2699) When the EditorView is re-created (e.g. toggling editable) while the side menu is visible, a queued floating-ui scroll callback can fire after view.state has been cleared, causing a TypeError. Use optional chaining so the early return covers that case. --- packages/core/src/extensions/SideMenu/SideMenu.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/core/src/extensions/SideMenu/SideMenu.ts b/packages/core/src/extensions/SideMenu/SideMenu.ts index 635929a756..e98059b585 100644 --- a/packages/core/src/extensions/SideMenu/SideMenu.ts +++ b/packages/core/src/extensions/SideMenu/SideMenu.ts @@ -785,8 +785,8 @@ export const SideMenuExtension = createExtension(({ editor }) => { * interfering with open submenus. */ hideMenuIfNotFrozen() { - if (!view!.menuFrozen && view!.state!.show) { - view!.state!.show = false; + if (!view!.menuFrozen && view!.state?.show) { + view!.state.show = false; view!.emitUpdate(view!.state!); } }, From 8508f81ebe67acef880d753c74ac28f14d8787b6 Mon Sep 17 00:00:00 2001 From: Matthew Lipski <50169049+matthewlipski@users.noreply.github.com> Date: Fri, 1 May 2026 09:05:44 +0200 Subject: [PATCH 38/76] feat: additional heading top padding (BLO-1008) (#2690) --- packages/core/src/editor/Block.css | 1 + packages/react/src/editor/styles.css | 6 +++--- .../backgroundColorMark-chromium-linux.png | Bin 12226 -> 12226 bytes .../backgroundColorMark-firefox-linux.png | Bin 28894 -> 28891 bytes .../backgroundColorMark-webkit-linux.png | Bin 37566 -> 37556 bytes .../blockBackgroundColor-chromium-linux.png | Bin 17291 -> 17291 bytes .../blockBackgroundColor-firefox-linux.png | Bin 34561 -> 34410 bytes .../blockBackgroundColor-webkit-linux.png | Bin 49331 -> 49464 bytes .../blockTextColor-chromium-linux.png | Bin 16778 -> 16778 bytes .../blockTextColor-firefox-linux.png | Bin 33976 -> 33691 bytes .../blockTextColor-webkit-linux.png | Bin 41841 -> 48899 bytes .../textColorMark-chromium-linux.png | Bin 11903 -> 11903 bytes .../textColorMark-firefox-linux.png | Bin 28416 -> 28772 bytes .../textColorMark-webkit-linux.png | Bin 37240 -> 37223 bytes .../draghandlemenu-chromium-linux.png | Bin 12707 -> 12711 bytes .../draghandlemenu-firefox-linux.png | Bin 31031 -> 31022 bytes .../draghandlemenu-webkit-linux.png | Bin 44831 -> 45048 bytes .../multicolumn/multicolumn.test.ts | 15 ++++++--------- .../slash-menu-end-product-chromium-linux.png | Bin 15817 -> 15817 bytes .../slash-menu-end-product-firefox-linux.png | Bin 36562 -> 36911 bytes .../slash-menu-end-product-webkit-linux.png | Bin 59024 -> 59052 bytes .../static-rendering-chromium-linux.png | Bin 9870 -> 9870 bytes ...atic-rendering-equality-chromium-linux.png | Bin 63701 -> 63770 bytes ...tatic-rendering-equality-firefox-linux.png | Bin 119600 -> 120351 bytes ...static-rendering-equality-webkit-linux.png | Bin 89770 -> 89840 bytes .../static-rendering-firefox-linux.png | Bin 27301 -> 27427 bytes .../static-rendering-webkit-linux.png | Bin 30919 -> 30919 bytes ...alignTextMultipleBlocks-chromium-linux.png | Bin 12003 -> 11950 bytes .../alignTextMultipleBlocks-firefox-linux.png | Bin 28137 -> 28385 bytes .../alignTextMultipleBlocks-webkit-linux.png | Bin 38025 -> 37265 bytes .../alignTextSingleBlock-chromium-linux.png | Bin 12005 -> 12003 bytes .../alignTextSingleBlock-firefox-linux.png | Bin 28186 -> 28550 bytes .../alignTextSingleBlock-webkit-linux.png | Bin 37249 -> 37243 bytes 33 files changed, 10 insertions(+), 12 deletions(-) diff --git a/packages/core/src/editor/Block.css b/packages/core/src/editor/Block.css index 4315c528f5..bba397ee58 100644 --- a/packages/core/src/editor/Block.css +++ b/packages/core/src/editor/Block.css @@ -127,6 +127,7 @@ NESTED BLOCKS /* HEADINGS*/ [data-content-type="heading"] { + padding-top: 18px; --level: 3em; } [data-content-type="heading"][data-level="2"] { diff --git a/packages/react/src/editor/styles.css b/packages/react/src/editor/styles.css index 702116d310..38a0752eeb 100644 --- a/packages/react/src/editor/styles.css +++ b/packages/react/src/editor/styles.css @@ -243,15 +243,15 @@ inline styles, it is added to the base z-index. */ } .bn-side-menu[data-block-type="heading"][data-level="1"] { - height: 78px; + height: 108px; } .bn-side-menu[data-block-type="heading"][data-level="2"] { - height: 54px; + height: 84px; } .bn-side-menu[data-block-type="heading"][data-level="3"] { - height: 37px; + height: 67px; } .bn-side-menu[data-block-type="file"] { diff --git a/tests/src/end-to-end/colors/colors.test.ts-snapshots/backgroundColorMark-chromium-linux.png b/tests/src/end-to-end/colors/colors.test.ts-snapshots/backgroundColorMark-chromium-linux.png index fdf9760ade3dfc669b9324e6f4f5d9a6340a8c41..2688142a71a27e4ce42104b59feaed25244a6692 100644 GIT binary patch delta 8367 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 delta 8355 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 diff --git a/tests/src/end-to-end/colors/colors.test.ts-snapshots/backgroundColorMark-firefox-linux.png b/tests/src/end-to-end/colors/colors.test.ts-snapshots/backgroundColorMark-firefox-linux.png index c278bdf8648204c3e1af9b6c048b71031f1e122e..fca97dea629161a847b6fbd2d608748d95dcc63f 100644 GIT binary patch literal 28891 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 literal 28894 zcmeIbc|4T+|2KYNgvb(+tSxdX>#;_*7AlNNS+kdYEn65v3q`1-ki8S8$ad_@po9u3 zgJCQ~5`!^h%*Yt-_jEqR`F_5S-|vt6{ygsc`*`@{bgr1|y58^C`?Wk@&)0L#xpxk3 zuw(n4?GOa*ICJ{s1qfmVm&_m8w}F3kA%@K$ND?}8Qtx80?d)*SBb!UZYV$juQsV_q zAb4S(0(zA!50@d>aQ zmaWbFo1y=QoJ{0Bq1~E+o*`3Dqr173Iv$u=x#cQ%9a}V7?F>uY>@WE+-0^M`4>_dHj2?ntS{YtB`VcmLHcr&)su3E%WiDe8mkc%hg22)W6&`7}vQQvG#Y;GkF9-HCuogiad=-h)csZ95sXDKGqXP!f{SFIHe;E<7L!dFFmv zK_Yg6N2L%pKPpjQ7gBe-Jp34n)I0d`Fw-cTMA(D1?_J2eLGQXkT%#Pk48ia*e~fXm zbDCGBGCpjP;TYNo`iz}Ptju4h8x05l_u?@u`P$4Kya+;kTzD?HUX z)h$n%I&>Y?B4l?A@x9#+UQkr)o(e2NyL5fFztpWGMUk*ZBbmrIEIY1zNi@lyjA7B} zvv7(lpR1k8b3sL zs_4b(gsv{M6?l+pCNs&iWnE@^S7()~M{jcG6^Bh6al5rc^)#n!`Nxx*z!j_sIFDlE z_2o95?q>MQQOZkU|><)mS``0mK z9|h;rsmL9o7onTTsT>L|e=?BB{q)QLwb-SjgQimk(cSlX=h<|Y^{m`qPi zM64<}1Ld&gdF7=ZQ)wo9pF1`N8;cJBNu*FSFa#c=uz z7#`$ub2+hckg`&sSms-drkn-;SQR&77GATjb8C@5mXo^;snay99TE|MxSfu6<4YC0 z@#UdgX^WsCBT+OLr-MiK&b}$~x&Vtf^0MSO?s}J2!IN0Dm!VwEm6cAPa7=+^qJz@4 zFK^u`EixZI zt=uATrQL4ruQux;;24*du^6thOmBfQrUdPkDe)6c7Vqmp=;we;L-lWmXLYGyFB5L_ z!%tiLpaV={5euTpHi4E|nS15pbDK+VSJw$DtvmLO%T^6_PttrE>6G4Y_DuF!gs{k; z=N_SJ2w;P?d$oTO6nTNUb2rq=RiA=ZD^*&kwOS*ibd0S%OHZBn++Q$9!>@-|6p!kb zvkF>Bw#d}$w_hHw2^{ikBZC|UzgSbzXH|gXEI!|^!s0ub5#+tQWa;ZGZq3<}@^9~t zsMRYcIT-XGRrGrMVDF{3yUS!|RFoiT{oYL>uABve|9k7n1a@B65OpM!e z_ZMxy`3w!tqSs;XI<0YiaJ<`{$v&a@A?L>S%5Q`1NkyHJ=HUHJ_M<10eMfri{Bv7t zmyCdXUU}~2=UB%|3mL;W-y)A#%Lu>UPQosVS&P~#I=;Eh3looyeDhRt$?EngKIYbju+mlX687(6(0sMoFTp_kMo#Jr>~lt*;!pP%DH9?! z(B`7>_vYoDc~sp$6|*-w;$Q2_x3b^VCq8;&O^R_{x}X) z#yz&()-$$^TymR>#9iPW>~(*_*vnHHivxza5@UIN$qE+4H@cKZpEA%n%LB40EVChluv>f4pn!*ecrR0{id-Kjed~+v!o-?WyDf%0h$ux?q~77ztm~QRxr{9 zmL+B_)7t=wBCt@;1;bo^lVhc*KYAy}ZY;D2VbNw#|B>TDe7|sM08cZWr6*E_z8E_o%7G=Lsd`ee{#-+b3AWfoF z1?+&<85jm6zq&Cm0HZs~KOW~?%J&q#+wFSDuLzpA#;=&+kn8l&S)U-bx*kpl`7JRk z$8Wr~7foV>AGh}MsJKTfD+pvW4PrTF+V%)EyX$G}M(8V}!Qm33PqT6Gx^81+HcRIx zQZ^xkT>jop0Gw~!Y!=fPd2S0W50k>H1{3Y1^Y_~{2pAfU>pqN^y;;6LUVWcUD6xX& z{GW7jV9zw~+7}vr)#qnI5J4ID5ZvP>e}okFvNUA`;tpx8Og#(8l6BUetH9c#_n=bf z*x#B2Axg~0Q=6)!EvS;@6FIj)mAu99Hb#vL0rr(X)P6_EHieP$DSP}*pPEH6{AKCI z+~wKxU!G)h(Du-9GO zg61=W1bE{*oisCI0QIL;b*OAwf*n}Gs#8uhSVAOY37|7@3IT|0CjSkSI0FSVwge7b zO%@1cs;uCYtCkc)t}YCZ1WkQ>dWgH;B6#dhfmAIBJ=av1%o`U>%0y|kY@ns@0S`lq`w?|Ua`W}G)K94*{@|+!9Xh74V8ZFZ1V{_SOl8Sf5$JF9Qjp<7gAl{ zP1wuCY%KZFh{=97L8$D@bOmrj`9e^9S>!4~lFxI=LR8Kngh1JL540COcD{H?1-d^F zr`TS4KGxJDsNW%4JgXG-dl|KO zty%5W`R3ZHSt3W3fds-o2F)c>Va5ZQXn+6mzTtdqkgD_TKx}J*M3(BXKSrQTYDR@= zG-B;=jqrvQ96?rhByZ=J{CJkRQvezP(AF&rL3z4-Jsl+7-KW{(1fai(Q(L@OFg_&unSZ^yvsmlP7JX@`tpb?C7D-zyifkMD<`R3`%{W9&OT3EC$A<+13h^;HIFDlMf#OMY|XsAfG?8044|`J4#@n)*0+G&K=0By zt#wy8aS7LBYGNad7~`~iPWui3Yi2n4nFQz!LtZ>hgi6k=N9R~?xb@0!lF;n_ly(l@ zlw+)^hoJj>%S0b!8YB7E-r{S&W)QdMQbvPyam$P9Xwhq@V}!3P;gYPqpG55t>0A2* za!^_nkAy81$7p6!{VaT5xXFxZeS5p#v;&$g>g9y&KpGIB-<8UbvzonLg@J440z8A( zC^_IvYkB!fz31~o198H_DX%3+LA<1nE;+tvkt$Yp${bJxaB%>1U3U$sY8d4a9smE( z$tb6M{W-DQpIqXR?TFOR)~M|s7uVDywfh} ze)<71KGw1HF-Ai{2I#0)EQDmtSgMk7rL&&DT_aKpIhAz(sZWXuDduUIU8dS$_c5#(b%;jvt{Jc-UD)-2bDV+v7`S zXFNb3m(2r>4>)bJOYa$SJ!ps4i=DtpX9hc}gr0-?QCM8dhT~hoK|a5BBCi<`IJ~ZX zP)X-L%KKQ;>!1Z6)?Rp%>Fd|8KP$bPEri_T4Voo?@+Sl8Vb>TsThO3a)pSI>I!CZ0 zOVgC8=rms_vudq@bt7P&K1|!+-(_a;bmh~Rolt98YrjEu(8ObNin`M^z|O$^tjP6? zAFMN8%RsY)PU_K({Lv=}C>hE!L5qp`2`p6$;)+s-jsIaN_X0jlB=}>GeofhrSWLqk zfsA6zC?G32yOkEaL8m|6b%ICh5hGh24vV>^@2FGLujc)O3y`n(r6Fh{Q04Fx18}W? zmMwFxaeWPRxAK?Dm|XzjF`b>*Yi2E5*toWmk)&V(XR=Q_FT)x?km|7XhTr5O=@bmD z_!Y2dMk;ehitDe@`q?2Gd8IDpCqxAeBZI)Y*6*JRel*Nkzxu760Jwre%AHu>Ie@E- zF~({(sUZIsVC?rRVAyZ#1~HAAH?H)$x1#iawd@hP9)R<)4qYW@{&+IkP?Fp5D4>w0 zN1S>unHvMz#wxekfP`ddN5f%50=m!?T!DsH zjV&-)XFftyWh3-pR*a?_H;$q*o~R(qnGU!s!V6U9S)i1?mw1$OkqEe>*<*|9=d5XQs>Oeo{=Dfd|ef&VB6&i2Mws7 z=JD;<&jB<+w$AW^&89<0WiY5$SpL-fajf=^tgZKj6F&g1hYWm=Ob|Q~&27wpc~+o@ z=>{o%g={1AYkwe%t%8?+mDsQKcTa-Yd6z%j$*xI#b{w#AM&KT^C70FZ1viiz4MF8K zxAJ|(in(AY``8R%tMWHH4atNxIR?}GuOQ5>0Hjx;ifxGDuOI!o$Tk7*()O#_aQvTl z0oP?vCLZs{bt1u&?y{K>IDj{Vo# ze_WI&fi|F`)zIg^`5l?T3QNmvK9Zltbd?2;yL_Q<29em>~eU6LQA!6UP(FB|>*@Ww~}_YW?zgE{LM>!_dzEKR7dd4<-XHFk z-fUpMt={;HE;&3|{H zzgGKER~MS<1^d!f19Pxq1IA>FZPTHY{{_tR*uVr2@Yok%jx+F~oq*4jRW#B#v$1tu z7AB@_^IPDIh8YhK-wVbc;+q5VJ-F3OTnizsYySsGt!(kji6+`-q%*I>S7@?TIl_5a z+QgC;LAT*vbBSu^#CbS))7_cAO$#x)1`@~tX)`d1F%!HC&6^0>Jo*6GW_ZHFII+^u z`ekEyLPFqcOPAc(qJ~;b0F6r|sc*GaEo9aEh>h?2to8H{jkABjZNw|u#N8%}5ruS@ zN!x2@G`z@DaI7eDG}7%|i;&NX!7fOZ&P$NoWXQj_#BddTVD&oeGc~5sa09W&Yexe; zQ6k)f4$q?3ds6Pu?@Y=a;I_edW&S%x0ih#0^0_=_!86JT}jJGA2Al0cu%6ZM= z5gx_0?xgJk4dB*b=+OqK(apAFynNyN@8IP&jFo#xq}>?>5U2PKd)yUcF9U2}hE9Q-Cp{R)@o67w44|SwG((GS`sD`khTRXao2EEfpp7*ZKRABScNY(q% z=alZL;)kxAqYn90e@%636?UHbG@du;V`6?8i3pj0XwXfQ2v7N%?o|ozI!7v>D`IrB?}39bKBiu)AEA3AG99#5V2TsJ+APr>SCO4xr%DyQo`ZvgwhPr6!oO(#Cv`d>% zYwcq^X%}dT^3W%i8tk&Dthl!W!rFROl#}=ja?EX!Xm1H^9efyJREuiF88&x4KnF>p zQ!&qRN<)5KS^+vEu1QfpwE$T+T7@xVjVqUG(Ukixmwok69pDhDZ70b|P;ee$6Y~Jwut0f^jM1aQH%d(JwtZLUh zD=6^uD>l^kuTM~zAZncFZZK?F;rPCmK*!CloM{o+t52NX)*Q}bXW^G6;8U{rNs zbPC{{3D#?@5p1Fe|Jv^#G&Qy61u7V)np?aNLJI`Cc z$Mt0vvR>81I+q~;V9qGAagAi{cI1@3*vT$x&DmTV-thigJBlR;kH!Sma_-#k8f%K! zZy&2l_s8U>$o7}+c*E87d~u;o!n`VOGEUI&&P+wt`h2w8Egyu3Zk8Tou@-cW=T}(+ zIieBd%k`)^-H0YhL018YGWpQyomYpdheuV<%|^NhlYLuduz`*o9jqR515yE zA7xRKQjWo$sHzTMT8~6>RV*Q|g51&5Vn50m8uw%@?%}?Uts|x~U5dNiDDqnOs z*OP1S%jsX!OnkFg5{@1mzNmTbnG@}V*Na)l6VYZmwd-JR-^H!*95cz7>1ixs8{v!C z<4y5}wh_WvJQtzhlV1Ac*d)t5(@u--Iv1}S*V+W5AEw)JZX2{hd+eJ!mP_F}F`3nf z30e?F*mI$;k&p6~4pGd8Eh1dtN7Z`P!PlxS#wfi0r6J|Ge2SzdXy=qZhen{Be| zb>`^vP^1x2G!mZhjJqho? z4>go$>MzyawJ;!S+!wX?N<28LW~0|P5;0bz6Bq5pGr#X1JZq5N0r5AYahEh z{R)k35lh@s_vlNGS?Ca1ir9TRn`UKX3R5+Cr(up$T}QBI!NN0K_o#sflS^BlA|$$y zhR;C`1(>6{c<3$i)0yd_LcM8Azd^HIX#}92_yt>(W5Loa^^fa-rJapDgV;W=3yY{D zm7C&xJ5`P}vUwQZrWR#z4Nc_?RXcyhxz+mp=?%LhW{qTSx-MUHAVW38A4Pl24N(h; z&w>YsgMy|p=K<&6@U2C@4}tx#K4XVDG?{@VC;=X1&1za;6XZY$0OZWqF#%&YvSm)x zfbL7x*7Z3572wJDl~_xxL`P*hProR*TI_d?6kjpX)CI=*C{pWM#1SOX<4_VtP90Q; z#R{E99onq_r(Sb4E-2wehHBVAiXu1{`ud*Eke5|gs{JAL>7d2}_@TLeNjlFt<@@**R8uOA)92QmB8)pZ%>B5M)r+-kD4X9=X}p?^5D) zL<|blQarj+*|IW&lJKdr8FsmAnlMftkMHDaYG}B#iKfxb76z5KQ~mJD$p~ExyU{eD z==`bYpLHX6wENdOOtH@73^VIiO*~NYjPmZqSAfYfVRF#3-Y?bV!%<8Mu8W68Cut%m zGdMlrb|k@&f5@f(E+64(oA?ZQF`mgD=D>G1z?0F=#_&fwZF6V~9M)NT$jFc!?vJ>k znI(_DCoXWL#@7^OP#*%OeP*SqXTZc;eMhwuKcw1O{Ac_x?*R=V4}jY`^I<^k@k;)| zerR>DQw`M&hB5rkGJ|3@gWeghEBo=JCZ_~rc`SU<%cHDA*>uHFmK-b9q=x0Dt7i*( z2YC8fyyI!04a0TnMq`e2pP5WodNmrr1vwpEP_3Bws~EkYkDAd|qYfQPVn({XlPa)` z#bT5C#jUO7M5VcdymDEZ`q}&n9GVZRvtMnIM;;~8$0bmf?hf|lE_T6tTf!r|de#Oj zI3TulQnmEPI8EUw0P@n&=PCDr50>l3gCvzf|5no6-H%)ky%{c7I`yX;#nSnVJbJ}F zWR-xDUJgqpA>_R(KIs$n`l!_YXBd@IGS&J>ae9(f*uvqQ*b|Dia@W0R$J-!<@IXJW zgr@N>je;VZjtlo8g`2Nk`E&y>w~FcjchHxB7ZGRFYTFya7ZyPr_aEoXP0(3W*ZTG) zk)MnvK4p#Irx%RJZVuIlAXM*dJ7Eq&RXb7?$cUDXR9GTPzfkTZ+s&!GzSb_6#tni! zf4;DgXlktyM$@8_gA>#_sB?bf8a7xkgzzOzvPldnD0tGoc~(SRE5zB}QY<;6j58{m>i@6|^s~f9=Z3E<@x^L3lNdQX(-U>sN3oRE$8}T6?E7WElb3>%g z+LuIuP!rn8*Os8~679HfxB zH)*9c{0?>~*ePVXX7U0o*H7}Td6Ly(FH7s==wPp-^Hc3|{1EqRyhFmt4WO!fmRZ+_ zVdz@EyU@9`W3UhCFMs&sraoneS9%FAf+ktvhGg*B&0Ed|P478wh8opA8z2)FDa$$S z((;w>$+l;^de>y;Yr1l!1TAyCUG#gCH1Oxrr20!UE?UFI%2-$sf=jGLux~$PG;`3m7t56d6W)(YoLu!zYe- z&C$E}2p|#=JmmBZP|IW(@k2s7#Zb=S z<0t?XZNnxWYimvHv0D$px%8K~Q?dZz;lG*i$mU>lH0rju43 z4f7DWe4>_~85&aGqHJoCQJJ5yy`JuzRuK)VocO@yjjo8H%wmVq!Xo?=pvb>KrTA-& z#gZOrApRnW1y38jMR<(0HS|F*!czlN-SW|E+IH65^{dGZkIbwc?kH1%Nb+3Y&e2Fw z4(cWhCJ6*B3RTr1V5a{FM0jqL#~%S^kor5<;Z4j}Bo}xa*W0t3Qt!`Y{U!xkR;l8D zh#mhf@LMOy0j=Bm&k0BaBhF36SW_k6o|J%LM%B*j_>xfBnU}&5# z4|skToa?i=?mALKn(B~mGi8l21b2IKHOVbzZ5p;IZ-e%?9^{Kr#^Z5~iRQaDKRr`IwrBF%u=9Y@^}L3iA!b;&gpLv zX3%f|rcDBQ*=EEH^;Y-r*^N97nkfrViiCL@45W3lT_Pjdq5aE0G#`SolJorl3oUl4 z+0iEX@>=%p%L-p{8z#MZdVuduMFo&I>?f9WX%qFV2fG@-Juc4aCl$}^m0Y;t!`yTz zFJ<2_ST8?$49v)<$aJuC>5Oad5Ak0XLL6IPU1W{WYIH8zY~rQ^yMUbOf~^`@M=$G& z2s8pT%5Gp}=k8(w&bs?1r(6nSpe0bY`ll?IJ~O0@&)3Au=#^ls@1D@$ieIBt6?B2( zh(xh(duDue;!&?>9heXvL4X;0ugq(6+Z(wnp7}5G&N60IE8uW0z;2z0;yMH9yJBq* zO;+`_5mRWl%08fgi1JHF^JzE=x-scq1VfDK4?NfmiDak+;hMxA+x^`9mO$Z!0g~`b zo!dMM#IUJM{nL#*R!lZ*t6RVreg%9Xr$Lc2%s}QcA`q90R=g#Tn;&Z~xLW_o@yr|$ zPnprRZkAej4^k{)5qxAVK->^M$I8Qf>KF8Pm7l8a>vPl}R_Z!tN?!y51tX7_rTP`e zg5KQaBVylpzP4x(A%1I@H({u&Xf6m2XxtD;gY2w43M=wSc%ZIzTc=Zf8qGUq(||}B zb4EJjqU@!3LBl5|T1!0)ZL+x%4-b&V`2$gQ1@ecerEQaxgPnJGFbIvNwA%fEwLG1z z14MqG2kmd|$XAfDf?ZQAD=GwH^h>?p@UDz$v`S*JM=X8O76^gJS?jCPVgWtpdu_u$ zIhu{F%oJzAk1f1$f8tec@h!ANv8^1xZyM;0lZa(3w4D&JYB}Nkkz!Ah4=hPBwA4%A z4uO2c9XDJP3Q>yj~jYD$Rh!O0mzNF8X60d%T;jzNF6PXM~xs+9pS z!l#j2vBX6fx3S!F;wO<(fm+q6>Hw#y*uMsvJRM>N^* zoaz#f07r)f)2!(?BPl9sp8X{Z4alYYe5$RPk+Jd(!9Ttm0Ys7J^m<#UU-6`;$gMMC zP&l;?@0I1S+c4bR4zUDpmMGiCXac8Qn44aa)5a_}nrB{DDbW2KiA!qODfz&LagMix zOJV9(q96DS-5Ip7ch*=5VE@2#0s@RhoA~tXW($RgC>^?6Ef6r~H&(Gmh*3vl2kte} zhDkV*gki+~?9ioN^MWkn7~u%NeSW)74T8CQfpDZ35lG~Vk|e8CnCvN7bG^;E`63u< z$TI^&)bdT4K)b8r2EzPq`jlH_inRL=T8TdJ1LCYp>-V2rXXvF+Cr<3+y3dbz)-r;` z(?+P>KuKUjuakxDV{VL>#8(Q2LanwDpMbpcFL!)XrRpJ|JwW!{Q}v(v=>Pr@DyLsZ z0ryTiYbe~xchwr|?~MKWk1vH79cN51-UN6s!>sJG8vzp-A(yn+Dt-e9MSMdTkq(5N zcEkj=D{mk81N}z#a zf1>094PNec*dRCAl@l6YRF}B|M$N{4j=pV`9ly8d011fqAL7hAm*Rms-2a_aveA4P z$P#8Tkn-!duFjBiu*2ic`B+yB%#g4*f6S1$PJ**a7@d2~DgToD8yNelXlwednQ5uElylZ!v;vzdMm_OnwF{6e&gK)RF*AW zjj{&HU2p!x8#Ym2T@`)>Tn>P_eGBZ+co)cZiOwkwQ9r%|!B7Bt{q^o3k!kekWO|~Y zg*_8VWOE>~Ujbya^EUH%u+Up)B%Kd80Q~|1XmgA~Z3>N%YVsli?O8EJ*3-kU`pn>3 z#I1KtWt*XC_5g##&_2Ebz9Ima?ds|Lg6?7@eI`GeA-q%>mv{c&BGaZWdf<4I>yg6p z3$y^^RmQAgqjdn^v;zqLQS{C9h%fmj@P2}D}!%8d?h?O z{0}(w5zI)Z?)<{{-$xWM1h_6 zxBUQ2j~5;Ohc$le3{)HDCYcV#7oIjP^T+45Zu*x+whXalh<`@TmPc%P#Fj^FRSib7 z_8%#qZ;VfI{nP^d)6sq)fd9~2x8Agclm5o4TLo^b!2L5DY{ z$}|}?L95jTo4)t-6C`ilvSqO?hxu6!el?rx>@{}CyDD~)d<^B*W|tB7wE@vS1hRm8W7_y%{lg<-ZZ%od6F6Cg3B f3jc3F1$#c?7r!|+y#~O@LT66FPZk}wzxlrawz{S| diff --git a/tests/src/end-to-end/colors/colors.test.ts-snapshots/backgroundColorMark-webkit-linux.png b/tests/src/end-to-end/colors/colors.test.ts-snapshots/backgroundColorMark-webkit-linux.png index c1f772a5387271edacbf165bd7c6f3b6f5667509..cf7b9b5617eaf154fb7528600476632b3e8e369f 100644 GIT binary patch literal 37556 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 literal 37566 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 VHETMGH_+a^tZ+>}{lcyL{}=Fa%n1Mh diff --git a/tests/src/end-to-end/colors/colors.test.ts-snapshots/blockBackgroundColor-chromium-linux.png b/tests/src/end-to-end/colors/colors.test.ts-snapshots/blockBackgroundColor-chromium-linux.png index f09886388885d1f84695a3d4f395238d5658c59c..3a545108261d2b759ebba4aae5e56c67016a2301 100644 GIT binary patch literal 17291 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 UX~1@3c)sbCl7?cLy!q$<1H#8c{r~^~ diff --git a/tests/src/end-to-end/colors/colors.test.ts-snapshots/blockBackgroundColor-firefox-linux.png b/tests/src/end-to-end/colors/colors.test.ts-snapshots/blockBackgroundColor-firefox-linux.png index ae96a17bb3c4de5e39ac52a638f9ec20ba458e82..4a20c06b55a7b9bc06d14ef6d35564b9ef0e9f5b 100644 GIT binary patch literal 34410 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 BuxtPT literal 34561 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 diff --git a/tests/src/end-to-end/colors/colors.test.ts-snapshots/blockBackgroundColor-webkit-linux.png b/tests/src/end-to-end/colors/colors.test.ts-snapshots/blockBackgroundColor-webkit-linux.png index 99e00da173e440e03b610784eabc545408899335..545885b893a5730eda0cad0f9d15485452ecd7d4 100644 GIT binary patch literal 49464 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 m#qaMNRQpxueQTAR*Vj)?Vd2&$adycvD?@{~zps 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 delta 12727 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 F_kV#GVd($> diff --git a/tests/src/end-to-end/colors/colors.test.ts-snapshots/blockTextColor-firefox-linux.png b/tests/src/end-to-end/colors/colors.test.ts-snapshots/blockTextColor-firefox-linux.png index dec6a239b0e27175438fdf99dcd8281570c59402..7bc56fa89691acbffdcd6b2eadf56a8cb0351223 100644 GIT binary patch literal 33691 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 A5&!@I literal 33976 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�^#%K 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ⅅq#vWfen)g#{L^*Q%p+f6iZmHkRZwA2+Z3nNH!~2g|8=QA?l>f z%|6xdre_piSBwZDkLz2+zlh$|N~bd$l1p8)qFc5SL^~)5#wwV@y%f)rbZWIWsVcv3 zJcA4fHi7h%5I7MwAGz#?Xl>FjxXVM8;jB*qZ$9tJG$26bp zB{c#xCnBvYLq1cNhV?++FO=9ZQ;dac!y0GDnKdnh-?J|mc>eudg=#$^uj9!HB+3Y& z!|Eiw2RfJ!dU<)3l_Tv8!FD4onm=>X{XN`{kaJ6 zRyEr#3S8gD^JJHXMCA50+{m0OPr4yrxKGV}gJD1lBmtg%%{3>Gh47d7f3MwQ?uoFm zbK?DfK)gq%d*1y(&a3(VHJ!rZ?^?QMIkAN^uT#Gf<2Lj1UymsJ`z!Eg)$hOZ2+nkj1z7mj+$z}>T=b3&dJY(LUZw->US467xd0K z`8g*)=j8uWJNY@sPF7&fkj)vg|9pn*p^@S*1g2Z|W%|70kIn0eBrjg*PkwM;J2sNT znKQ2^e-du<+1G&|fBF9F+y~}XX-+ie^uhn%24PMg=Ja7sALjI7E_C>}Nt}z9=Az2E zPQqcqI5@kcT_|{K&5w-CMERV!dPICHi&>yM-UL{EtJp{ z0R<_75JCu5N+_WdAduXB0{Fh)nOW=i$6dd5?_KLX|H$#2oW1w6pYnOy4!xtHa_k8E z5eR~g-MV@G9t6RE9{B6fPvD>D5c?1W1wps2|EBG2I*Z?kf1#6dVR)nU#v(JTuzL3+ zD+$@s%i(cpebUb!ma+ap4i*&Yv#T^RJS|}Obo_{F=rH~HrxnEoeCO1jTRwl~H68r; z80m&}?JtYg*83GZWKzd|^_eFH@baETZYKFrRltzDmti~gCUWlvg2a^$T={YL@V6sD zKW;i7F++5FcYht=hv@fit}xt#_V3*UvA%&0?cG4aH|c)g=a`Niw{Wp+AKM52c1LE0eZf6#dL z(qAblDTU4>ADo*`**wwGkjbzUsTh7#Xx*0J&cDN+*JxZD6zJjM@ift?Rz`4ZH9kWv zK9hIn@yW9^u~?aTe~{;kYT#q5)#)C>$(?7xK`@VJR1z{1KR6-DxP;}-YfKsG!Hw<7 zawRtW30AFf8Dr*s171S`SexRTrU9!x?%#rX3(Qhu$Ni*B&UrMkRRk?WzRmjCB1$1HlKqYXn#vVs zvMZ{=DYWU_g`SN3YJ8wRTPw?2?AgS|WUA(W4v`KWYOts{5@gX7{@I$jjW+6?!8PQrVcNv1#4%{PAa??1=nn9%*7z)ooi|R>|F>DNLUOXQA94*!iVe2M z8`;cmtL(gV={l^TE=JIwJ{mP51l<6X%+BSKu+x@Y)^C@c5t5_skoBn8f15NzP_x5O ztwQzIQtL<)hf}V6L#&?ZDPk>|xX>;)ukCqcN3)rG!_0Gs{lJxz+`Kxw>h7<~i$DHz zPg7q1G0_lsQScT0V|A~0RpS*{M_#dIhVFaAUx2TlcfVgB{k6MW>+@%UT2#79RB&x= z?MkYluD^OsO${N6K?@RU{=85*O(Z&QU}(RCzG(s#8`O0XVoX->TYJ)zqZiT`#unnU zJn{6DnDvw84ke{74UrO?sc%@X6vQBBl_+m`Fo?^_9HA{XM9{?6Zd(Iun(an1& zSXO;ub#O9-C-A0p3A`@#o}&lbLjbv(hA*rYDtPl1h-2H$O1A#^uvlZJTWgba>@ zZ9!)W_RQhRMg7-DLSiw_b7h!deyvRH+U4d!+~E^^+LSoO_2I`OHKf6ut+tD20~Nc6 z?4xJvW& zjZUiz{nTVobPjv8U~#6Pj*)>?=+IbmR7Z+O;m7%FLi)$FuW;nk4;wkv#I{{bpz-yl z&V0awY^T#j5C=nvZFK3)OpRp2jTA3;_csOyw|SH7ymEtFHoU~33uJW#Kxv|YM1n1zu{sC1hQuJI#fmJ8y4-*@msve)1%eBD=L|HVd~sJT4S zJZe{d#1GOoOv@?yI^890Rny62FH_Id*BbI?-Kmsq!q^J|;zzdmm_fga%YJLKoxQzr zin_L=^YfcC1sy~qT@AUpQq}A^Z?JqmVW?Lw>!C>X!iPe)$@UXOgG{H|4eOg;%}L_6 z_xex>++kAgzYY9-(ijSt8{1xtLVlTGvdO&t>Nv^)`&`kGe>Bpet&KLT69I&_#I|dDTltFo1%D9@ddNS z&hHPz;%`J{|NFp((CpmYG1#0*`klLc|HBhiy6oF7S*6i^J%x2i0c+S;QngUgbqUV# zI*ZEh&(#72dicSJ76vI)uArBGQsiBT3)zH<7rpQ4I@%!VTHQLzpoyr5rtf z>WxwTG5wPffGchbL2D~3+DCi{b;mp?3n5BxMAJoF*gi*JY!NX+<+@V;m7M}357eJm zi?b9elWH}I>Ex*0Jdw-@k??@0;sR*jD z>v=aj*%19TT}986+u{1aft6k(r#5RQmC?IRiwf`losPPYG1?Q6@hP_5A?{=HTqGBh zVN^wlzHAA$*b!f~QpA8OvQWv`if!l2|A;3}Z|5gF9H_6`8W$Y_veq7`Xj}=DLwEeW z7}5|@DN!aVbZAwqU7DBd6TPd!e+Ww4^FWOQ_18iepSrcnTu9V&g4xBoJ?Ruc7&&=ABXs^sk_7&NLvmG03NrsYpfnA*Z*Qv zVy!;DP0%zlGV&gI%J#uFD>*K&;CvBem~)In($bCnmb|MB_bpDf$S^ih#tsFNafZ3H zZP%OG{>y2QexPaK#`wxOb1}eJ4!XRd%~wVB3r|Mt=^o@A$+1+U0Vwd6REnG zsCBOB3kewNZ|*D3LSqpeQX+{u;;YpmuFIa!np+wlhwOz6Q-Dxmt9*}p4d?0zO>4ZobS6>9ew4&V zjI6ZBEbMTn`y{?Y^@)X~0cWGV9@k&o+OVEN-4)uy!f0 zb~lYq@*`Hpj%wdE3s}{GF;bpkY^0#&cuOocH!XYht39r9=|- zgmh{bn>esZzHY^AP;>aH6Q;=R)vKvEZ%(f*(+sic&$R*MuEl+u!;hJYPnB6uf6E>r z&(~?HkOXUaTu7bn8a0384rYkV=Ea>;F3+l_8sWRO*j!SnyfhNRlbOC*_V8<(LqPOL zeBU$+L!_RmkCkM}O(6U)BRTHKr%5H>RU36gxR5G+U)((zCi99RXmNWBXxQ$rk9`5^ zD={eJky53F7>TKK?*q^2o}{cHNb* zee=?5xc+x{Yt56E!cddzT$RU6SJ6|6suRP&K6XcMKa;za zIb(loVEhvI1=9i;Sjo6eSi0E*tVr9wT^o}Q>6;8>I4*tvj151Ft@d$~&3DYvD`=l! zimR~4zkhtN`>sUjfu?OTDTGVTQ`_?)d8J#kq1dWbK&7nLmD3SP*~HXYcbJF+kfYkH zQ|2{4=ztIoRc>FGd3asOMI%vCIMGB+qnCbIOH&~>GWXUNKE-R$2Ro1!D(Apj1^|#l zfUwWTczk!XMA%THH>ZazI__`!ic5X@fLS& ztfn%L6O`FRrfj_zCAy$R*Y2!MvL@jY;$!g zJ<56}Y+|;ggE2WdneeIVW0$3D-M@Bg zF6}@)yrK4CnX_ryLYA4NiwQAB&^i%4pE)*tJnCVj+-$~j*qbS@@1LT1vHgbkR+bIF z!5)MkvpP1_p2h=zDej7JVU@3{GMlmUZ?c)p!0NOTCG>$Q*Wy=^h*?`(Q?;E1Zdz+f zc^tE_b}|rZuv9DxVI-S>21z9kmH08Yeb$F)vf<)^2Bx=oLwN}|M3Lmu>FLcgDk)Pw z;T0%E_FHceEU+Z;1CN3>`VR$ii7m{I(4Xc5gh8!CtV2EqpLKI|=A`3d1rEmd1+|+3 zx%x$Cg-olZzoaTD8GB-_u**G(XAjitTdHAL+CGM!P!mOXxVwXo!$jxjPKZlqQOIyr(}LclMwSnCbc_bDGCHRx?2o6j6??0UxS!3+IH-9tO4GSeahR4ph3w;Ryh#1?i`=!6kzB^twUVohohWU^l zrO2MCnVN#PsQ{y_w@D3I&OFQP{a|tz_D;Ys*{eS6{JF>U=nCV=N3Gv71QmUZ&lgUJ z71YZdV`ufs3Rm&ZA_@FWOJ@$!4~L%;`;c#f4py-5&HW6#>1V9akl%cb147Wc=ba8g zO;Ct?oFnW{7@40`@O1~^i?+;PvlshDU;iBDPpElzozB_(nh9iF;d~zubX4QjwUM+i zkrtxPx&P!}^_m0qIr&urToOW(PJ>CnEHeWo_55}fpfC{mm5gHoL=o1o$K9FgtrHSz z&zK=4;P*I~d=)aO66ex;W|JBqiPi%+gV6yj5H`19xLN>_+>QD3D@LEqnkuLLCyKiW zO^h-+6Z&;;4}30UmGdGVrEa8BU$xnynE9cmbiHm5k?MwVvLjS=Yen3N&l;ynyK@6z?+wEs66Dh#o!-iYmj;0@O z=0PUq2`1<}a2!FdH}Dk09~iC=u7cKquCxIX`pKq@dvV^$x8UqQtdpBl_2Lb{cv_{< z`gpuq@UIq4mNOxjCzISX)=JX&@4Yhw$OM)DaFndXJT3g3e}^KXwd)UHifl|I0*cVs zCFkZptd6lfy`%~58UH=V!QP%BhEKhvmr=Q0iMmy2{{9gS76J5NO*Iu)J`yy8Dd^~B zQ5W(*_Vgf+|E2#TenIt;Di}&}d!-u;#drJVpZI?nYTy}*U~!ppiTC1Y=4U{p_}bDh z)jrF`n9hfzcRyf^-PFCmN2>^+361#mK;XunAmToe^#Om+l@D3ZJhP^3Z4fH%8GGS9 zu>ZwnRqnQ6Oz#VKk*tPgP;pYY=)*0yu{d#5ru{FWIu8k~u z+DAf)rpkda>cn8;2L-xmgH-@919RrhOP+oJH%}M52@RziC4Z4#&|H$(5MLBUI$9>*?a~ z_Tyykq(sw44={gqmEJeeq@tU2m!3WS;*R+04;YhB5iIVSTe`z@-T);43w$f8&heYN z6#fN1{oy|tV>-WfbD9QyJ{Z0aKE_dOBbwlS-8KC|sA#egFrz`RssW@=K~gr{jjzF> zp;>M~e(A#3BG3&WoSvxKhjAh%36VKC0LZ2Xv6n%#jJ7vF)LSm`DVyo1Ubb7pq?5Pi zYsrplv&yd2ZBkbH^l`N(gxNHHLuhM^hx#&4IDzI!hC83?$Ke_P7)+tf`Jg1{f%+Rq zlGseW?@tj3w^Vw^GvZBKCNO_fZ8zwE^8HsnKv|ZtI7q3?$VV6Tat{}fOEsK*kUcACyn$&AXH+C{VX~t8iyZUY>@MueLE}7 zmWn*BskmXeHlVx&m_0Ln`mz^s06+nnM#Rz_4bcRkn+itK`coAAKAf^iilz;}k0X+P z7`C6QW#2)NDA!+VhQ;e=hwnFMEdHTJ$fWvxOqOELECC{Zou1Cir5CUNA_2Jgo>A{F zI}TLPMHNP56uYZO)A;3WLL^urkSssBSB*X98Q+Cemx%WL2+wk+qDqIEGO zWy`@cdH_V=2o)#fftJT6ob>@F5@6cUx|kbkK4r{Mys#1Qwj_XSrP0hNP}_chfz`5P znx;h4p_39zzES7n9@}G;mw{RKsH?U6$MO$)uJ-8JxIMETtoC`#-H1!oKkWzHxZ+pJ zCH@;r?%xkT$QCxyI_Ea=C7b!g%qpO!rI@|CFaQwZVdyiNVs>r7FCuqhv9BTv>_CWR z1el61*55dQjp#A@Gp7tX>9r~}R>Hjei8o67ND~~HL$$yv`=s zL)TNi<`v*uY4@o+o5wFN{xRZ>sH%;-oh&OMWLSDJ*Q~Dgp1C}5@e@hx1_RP2kj^5gYgrO3wkXF!4Su5}`cKvI5@b27mlJ+%jThDA zsWF2k6;;b}Pm>OWXCIFwxwU_`KBfmlj!Pg?JUa+m z+tz?02zO%ZXyD;S8r0X*!vbO`ui7}LImsNEyS6V+offpZ2(e=DcrNRXl;k!<@W;zq zHa0e!pB^VDAp<4trI$cBE(G325UT<4kZ{<)cNn}g39!!F0VBG?S^yjYV!JyK>I7gu zcHngjfSJZJRdTyo&7fX*I5=8we?rZ(9Peoaz@S^31m+1a#4C3hY@M8#VlHU5TQgcc z@Zpc+S4o3TGH5SPw6$6@>HsuC(ZZ_ljPeGIB5w#H7zORt@yTkUHKncv7JK%nY%c-O z-*_DR=m10U25&T)Sd~Lu8v4~NaKlO(<}mEFXgGI*z@c=AasaeljAL@D+g@{U#GaCJ zH0}d#uO>+c%AHqyeCjj3IdjxL?v~{9HX!bVMJ#{_D9tE!_V0OB+lpHY4bH%Uvmu>| z{PZ_p5*GTWb+WyDfl3oDOiy=Z$oUz=12g z-w?dgoAInM_bCILZe)S_yqV^xhIi2vo7aGv#5KB0vfc~k;|8N8nWT3TFn?Q_0wb`B zx4G1&4apBuw#hWVAIbLMzSCb^)`}0d|iqwc2CBC@J=f*rn>x#uz}2Y zK{pnihTQB<{QzF>HaeCKG}{93jY8B!D$n_4o`pqTzuMa+V}DPoH9y3C!pklEKsNBe zm(Nr-n(CNbZ0Z28$Y1gamGkLcM#E8iaP2TJBz&5< zzZ}Fl3*8A_s-ZJgGx-eNS(-50G6L0;$L#vRM=0(RayfD62^^LOK|ygLgW@;E`LOkr znH`PJEPBK2b=hy}^MwY0qnJf%*GHW}!a>`#VSRB-u)wA_*I)zyqnsB)Vq{(QLGbCw*vKydd@sk56VHKeL8&uhO(f=KE=er@o^T z#DiksXWN^r|M~372?Bv|7-R_!!xE)m>+hovoVRs=b-P>Hfwxm&)mWPbjeNE)iyCV8VB(dMLXBv#;A5fB$QmGIlHN70^|(j5|v_LtEmdaBiRP(Ye}s;x1YB z-q)RZ2Ls7-4vxYbTgx5Y(L0nnL}Rm{`=ubm0^U@cXiw%qIpPx{xxN7gRl- z`?msM0BD6SBiaWb-koxeU@SWCPzQ44r>?y#(QiA;w z7I2<>Ws#P;4dR2N+z`ZT*${keBwVch(-E(>7XTn>dkXF3X%nJo-fH+?t23Aocma)Q z>rdcIY`%Ve-6}hyBs|%9rw}-Nv?#LRaD+Bc{U-)}XYy8l-5qHM&#C{Fo}TVH;Aq&y zLHzPc>;jxf43MWy_OHXVdV(t_Hb9u^!z{L>w*H&fO9+V-P(O` z6Qsr(wl!YKmcN32YqG69C4qE;7;H-7S$3F9KP_5S<)doydbJk_bcH(VX*H z$)1K4)9-RVbZaVcDQSBD%Jn$;{1~&U%M&q`5O1bw8v2CIanF8qo_~Wu9CYo znO^P-W6fw~@A6tO_l&Y5=%a*8RAXe2jgelX?hNtll~03q*uasegyIvk zep`zU>SZ6h1a^L2DodM8CUo;u%SDI?^o)^~uo4J8Rx$6qU>FIjtYccxo1<3D5RO$8=V&7U_nyJB|+>U4!Q@WYq%r>!n#KlUFZS@^}`Q43sZII7N)+^_@KK}^kq1qE`Db4$ zDmZL5iWd8Erp{?)1qVcdl7K^?XvbaK*4K0P&_Pz=Bk25ES%=MW(UM7N#l=@+CG%kK zJAt2eZOyo7|0y$aFDUNv3%0=iiZC3nBs218#K+%*aFMi|uGxqb?(hZIt5H1Gk+)f^+mCfwDN*G`TslhHIDrnN>f%%XZp*0dr-q z$7)Cd=ih%r@oN=h60C#qByq-V*`Ft&A38ZY`*Y?AH*cg^r|uqe-a#O z?69xmQy;Khyg>DiVyay;d_DhR5xaq;&PSo?<4(tEgl#cKX$l25nb1Y)eU~V0OZ57{ zzB`>@8iNboJ873eZ$1>wdw+;G3WPn{@^kXvz4*@Fg*U-^AjbH!ESG26BGp7}EBslb z;_zD?)TB0%7s%?kYe>qnX34V`n1o`euUiZIRdkyKvTF3YIQ7E9!NEc*)@Fv{@G+Tw z>~3Q-^M>MXc?-0Y`D538bLpGFfqK9us-K0DyB|tM@gT2$e#aVckSRDB_VZgmO&~Yo zJIewCd|R&ySfORrY??2`9ZJ^~hEVtbuQewLn{RJnrcp~t3j*VjYROAJ5`2LnQI12V zrwqQ6b9a5#out-7{pb&O1eu{Rk$^?-0rwjQp>j1Ih`v7uJ+B0qm|WAP$i=CrtAwN* zq282pcScLttMXGD9k``LRsb}zq`Snum_(@_blAWkj{%k-q#u2|{mQ0TW|faZ8FLI) zuI->zf%{9xD%h$?qQA zLbQGi#fIPL@|>@U2LAeoA=*h0Ye4F<#P!c1+M1sggpR2kSck{le$(;n9G?4&acDVl~6gtT!M@kta}P) zrgH?X8deg1cb(Eis`9*kS3?>~&Ev`!*P?U2=^3`wY?BR&#JZY4b1AT+l97S6fiL&6 z9Y07(KO864v9b>U5t+IW(z!?>zqY^@I}b-8bD3GXXP&)z1+uco)#BxVi#Gd8PHMJlsimc;gCOzv zJSFg_6JFD5m}4)sH1n9RG1V@qN>}^)jFY}mzG>aZ`Am*uSog{xc1uX^gUR#8f`nc& zb&&^KWrrp8S)5r}dDE)dS>s~yIvMMEJ26f~;kSVU`8U6cu(pBPo~o_=i=RgH>u+Op z)jHaf2}>ttK|swx9f<`J!YQjnk>*;A;WhLB1qCwH*s9;VazW6_I5|gmJT(egEfq58 zo0Ew@>1FED7%FxzAmBa@craCz<54KZDl0YFag~~y*voU7W?N^Cr0&olI^e9G;Px^5 zaeDKwc6T=PBJl?ZxF3iBpzp)$`?1e3F|ank6{p`TkW}g=YBy!Ny&mA zm)BL!sa3A-5s%a8*g!*5=CZnGI4mFbwJPLt77xsrezeZ4{V2KRIY4NE_WtrPiCcB z&ydwhSfFx^1m;af?%VNtEJF?M0m#s&?WU^dcdTS?h^k;BY59!k?rpv}>Q2xc75Rg(+Ectb;C5|_ zs1eWf5R+?wO|r8^(GR}|K3K*!a2|0~61Cl0TMeUUmXU)z&X5g$(dF5pK~N4r z$s}tD|4sDE?C1)~GX*6xCE@HWFt3#UiN~14cc|U_?%jKN)~N6_+N+FHzx1NXW{e5O zIL5?G_@HT^jEU^qw8k21L1>MLPZZ(0^OZF6slSZS#pB_{rueR$oaofm^SIxSx(%kd z8}0a^26PyL080s?71epsD{}$EzdM*Fc#F^f2?S69?fJBU$N%TGFRx)9qbG-DH@`zATJx>x9dgKC>(JS>H>ZyH`^KH}#)3;`fbxt#xUlu$dk8o9tjhBT4AOfa!0A z1h%?QAX&T33Zbit?Q_ltvR>8Htg8AGR&~o=u>NUoWXo#(sb{fW4lI%|zY&>h5MyE_ z><8*nObl;285v3bVo*X0||JrSJ zy3=zAh}p)ZO-aj5BrrT{YqR}!q2mp{jUvq6A(7Psv`q5V>I%*(&_k-`ZMXUc55q4N!U&L1LCHnTP24Ed$Ost+YhRLfx)rT)2 z_k=s5?`PE3v>vwVwJMl4uuqm?XHsSgG~-!OBnr92$2O1%s^35y8T|iyJ=0t9th(PX zTJKgl?3SrD7@{EWHVN!%L-JZyss_)@g=8M2v5c&YiI%41_EJ2y18h6Jc}FA{SbFiy zyPU3!r!dk1GgKncn~!ioph^y2MKT}DZl(L4HUfN*Qt4I#D6q`}`FYMWCN@X5<%=e1 zX&%F6X&gh4203I0kxK4JYCxcR?1~;Vi?DCa&x?D1#CIS6y-%DDf$0a(79gzV?cMkc zYzdaU&_L*V;Okp#(DQfM&H;szG9opKZIQO!0vT`5fDPKzXF(UBMf~Cd#dZ+beJY54 zHSh#5M>-C2Ue&`KUVcWY1zWM^;Rz_DHlQG~vYOG#5c;&y-83Q9k8S}78N6tK$kgIl zyGq<_{>fwZJ@n>6=nPC2b}7d!qcwQotFTe=`OzGja>D3Z!$|){ zQJ2h{eg}NdT zxBqx7aQQevh{>H06zSN{ESchKCwV~~xG-624Mb3xn6Fj>P-?f;_RRDVBjoms!;Lba z9%mK2FVTDqiJoGQt~V`=VUGzjQ-=UExAl@h3XDp{zAMf&gvI7D&w&A)k+)a#UP|Mwfpl?Ft)mHnog&Y*u!isluqS#)OpW+7zVzy-$+wgxtPN2W z(I~^wuOIdiv#BZVMZoNz=ZkveX6b^iB#gmi7#wJez-w*oaII9}D_g2v-x zO$MtZ9p1|8eLXw62mr`Q7Jxb4ra|jNYXk0DsQj-qpbm=z*=Mid>xU`?-Xxa+TGD}2 zLcmB#o8V2JTlppMI76s%qE#24+dWv;K z;YT`U&I;GxeyOgi2r{?t?i%i-M_61FlRkau(e1N`{xG(D$7=NRFW2dQPkZ@#B0Be7 zZc9S(WjC|IYpLdwk!Lh5Z!ku0$lKR2`~kW;EUr`DJJpZ{5vlR#q4nC&U%!?vemsF& zOIB0%YSK@r+Nu_!yFzo=f--)CK*U4Fh>@ixwDIryMVI9F16BUAWc)aE z)PhOjMK8C@b)5X;cLJ6YG6vkJwr{`h)9K3_KuWUU_cJ;5bzU^bh(jkmO^^XNN=Y_e zYEZuo^L=YSgi}^&QU@^~9Ot(7lWP`-38())05f#-V2TePV%?0IgUGMc7J7xA9Q4yl zNDyGc^n6^Kb7S;ubg?kNbe=QEXhN6rtyWOD{)wrq!3_#&sHQX2u8ME+0@P<9#8ESo zr8I{;HN)h8dai0DxL52DeGrX2P{Xwy@;K7fU#j$SVtM-vGLf;VD;xX3&^;2t(Rxk% za;2YFzsvgr2sg=W^{k}lj5TY9_W68t=vw+9>R5eAN2a>j`c<5SxtO0MR&YrB#%b5B zHmTNA?8&K+`86#q+XtY&XPA)H-SN7eIqBSS!gydZ zqIoEn=Bg(W?Dz){4Re{+)fQLb9E*xC)% zx=O2k3DyiO7GBWPt@hg41tCS+ga*ZA41_z3f1SGIT+r3A@j ze^-f2vtKn&t<7i`F-z_Y8>R_1A2R<#+hkL5;dj&>Qv-B<4Qik)Yq5MtV%q^#WzRY#b-< zF6}tHw4gI3llkcWM?QFgxc!4b{%onBZtGe>jjk}4zjs5h`$8jIH%Rf^GHRDjN2Hp1 zOpV94cJHjwJo*q!f}^jp_Z{qNiqWuRm~8Wk*jfk~&)ylL@DErbq2N32qegz;?jp|A zY`haT+fZczk_unugr8ye|KvS#s=w=RSA&e&<;B#A0|wmOw8ufpd@vJS`pB4Xnk<>( zeAVco(;W#{td%V&Dp@L|y#oo+(FlFb(au2#7NJt&V;%>Fg*Fr_$wOBbw1bVm-g!~~ zDs3`xp`T6AT`6dyYNDoGo^U7TjimpymhGfw;5`qPy=k3*r==gvhjP*cQ@b27=%T{D zF~Zcn20AQC=LX!mdkX@D5#%PRt~Dp5T!e9;4|~lVs&xLVO83Yyj(Z77LRq^cI!yc2 z&J2RioZHnT@cp%$@P_SP!GA)h_x^^Cp4pWG_mEr3i=&nYA4_A^dv&&6qrRWIsaJ0GR)aQzyF}hOC$l)X=EFbM zIgtuK+IL}(a+j#^qm$BmBnsMqAJy0Ypv4y@_|Z=qd(<_jz>of~oB~H2Gz_c~VR*X7 zWTrDgg0Qf;YU|pO;&o6n7F|Mrn~2Bx^6+`h2}tduZESrSyvgRn!RLWeXgHEVp=6R#c=P=5^>i{k^OgYB2Q{m7gKE6TR z;E22%nYxl?XS7w~35s{S^HaBl<^VjhYj@-$&E6t&`{l}#q6PDB$|09x#C<1|dnl`m zXoCBIbX^59&kt@q04BCwTCW)z{%+|(^&0ZEXRlmpDP7J|%8QhexqKO6wnP1wPBa!D zaAkzJeK*E?71PUyOdaz%LDgC5MrpUVdN7A?>3>ybdU0I#04> zbKf3478Cv*xHyg;MAHy`_@e^zp6LNtIsqHe?b*9LM6WWN7!c~YP+PF^Qq zc%N+t-b;_}x1Blb({RX9c+Qb^6kq$)DM+uM`tgL$&$-+sFe@0fE25|S%QvW$A=}qg zUX*2}R=l9kl*9aErdl3TKd+&P3n?#QUSkIk*p_^Bv?6wK5%rfTryF36%r-NMt0Axm zJvP6Re$PsEjCjQlolGW87s05cl(3wt$)PEIzkfY@n+#MfGN8Xm3fReh%A8XcVlp{i z(topi-fRd>vh<(pw|;t+qSMHaFc-SFJM8$<`JW{e5M&+9}3( zuLN8`x4Ny}{GhGH=*zDj`P^;~+Y)SX*SKZFoDKGWJA3FPU1eN$c5fZybj6t}_Fjv$ zZWDL;FY49H8Z4*7=YDC=XE1{4M!tRI-(59lh57jbKi;=i-E8ZDENE=&MrAdG zbWaro_OO@CZ7pXxQF&HfFg#wy{R^Kpb??{M$qeU;4Snm=XBp0&eCBK}Bxl@`+8Es7 zpXtl`^{%raTO-I}0VPn{lqa`2Wf%Al&LggqkWO=AlqQaD6qj*L6^kOy4P(-c8fUE8 zw6l*qR1>?@Y2Z#2yyl(p89Zs7P6o8DAT4>mZZ9lZ1S+IFn`30fv1zp57`HY7@s7}4tLWpNRBN}E%h zQP$ITUlEMa%NZBa)+Q!zjEG$N?7A%e_3)*6S!pe3VIla~_(VG+*E?DEwPFxTGFtXL zqB7Bp_rQCMPY{6A8}+aA3>qbP8`{)~ZyS8P{IMpyZrjs-mdN2Gw5MWehUAiSD<32+ z5z9v+ssn{6JO{c4-;EgyF06fE7@w-W9*=%`Ar31%{<@@wN&b#wN{neUelv=?Zu&E^ z&mzZs;C5P$*-W6j_h4RzH?O|b6>=bz-0Q*wnnA}WZ0YK~J;kt~QmPus1^Sv0Miim7 zfdEn|0@2iLWT7I0&K=lI3e&7!ef=>DsL%zL(0M1Mkw#DVx7q+(!1(UNPRN`p%=r7t zwyb1b##C0>#MXPo+uY?u#)`4DuoiW$@zzPec8>CdH?CT4F)=zS_1Els-voeT9z21z z>R%vemPg{UweANDOx@`__vz%B_rA3?Op4M7T&c|>c}Nr2drJswjBh|vNvK`oA9W~e4zzKU0>30jQSh<%>!D5q zz%N;AL`1~UYDua(uD6ZS%mXCh56FCA?9g`Xq?z9S&B4m`(bDC2IfkiVB95D*Y^~~C z%Fe|ea~LzQKXn~f_l(q27{SqY#QA%Ol8_V$F&nKi$dt?Fa=q+3aga<@3jvXD^~i8- z{G8n{^0FI|ki2_~FoO&oV-O?6?x;5zzV7Iu(@D+Q9CzNTI8v39arNvNJEtL={gk2lk`wruO&L{61G@L2wKT@+1 zDQnl1@kk1}(c068I&C_wsP@dHyFT{hEmaCY)=94|o$%0lDlr{y#99Qx1Ou z`I;-st4#AV7j+ppmbztWzXisi!2mt?t(o(2a{0~e%+LU^9^(^|a-jWe+oAv_t5U~V zn*RWHxbV*%d=SeGg`YMN17x8m(9`k=e%piG}J`?|L)FmbiWfe;>%kdq7b&Aid^q?r3Vki*$_Ef)KdY3DDaxiV_C;P zwk5%a=54?cjegfnf^G9tHeI)7&P5-8NtB(A{Qw}i7J02K?t&@lJ(KS18lXD$Ob%TD z+UuZRLH<>b9)Icy@9=3BXaLAOFrlet+ho`cl`XYa?=f+HKwc}QY9bRnla1;qt9GH^ z@BKTAeS3Y4hTSG+b-#{?(0eb={~(#+lf@;CAS>l{r_p4ucWyaKiT2Q?S>$xKfU`cg zXo2*6MdW6k-vMZ>LT9o;=u%(ygUT_1OW5E3bs+OUtgO6-+_elzU!zb5+F&19b|Jn_ zd(8L1;^wjBr@wKQGjpv2rRl}K@inR|5=kyEUA~}{EjyXf5Rx)k(1fP{YUGygZE{ALZuvcu=a1M?3xt&+F3%E%R3`H5QkV zd64pR$k9-7%0wbp{7bIVr}B=2q4U72k58OD_aWq9N}%iz*hS(r z9V@6yfw!IjoP+U9LQ``$kn-0@`t!)c2mM6S(Vah-i=QSy(scDB%&o+Hg{4md^5v8< zo`SgHIZIb}aTwX^lInm85DF0zfMpuKbdS)aTLW_Tju;H|6YOIv8y7UYg?6gqp97~A zl!C}Wmt4GQLT|u&L*86s-AaZykU5z)ni~Rtz&r!i(Xh7`g6o?PjPFIxT68}OO15i0 z!1m^IbhIl;dCzgHSA`=wu%E_QmkqkkVFjM7CIaFL@?wb1t;z0*ZVfeDyOL7Gpr?`S zO27TMh+0!$15*~hd@un32+hjfx~n*r-AV6y&;J+ucYpJ8VTyt4{{bg{XQCi-^Z!R! zLa-hbLwAFYnbdZ0?2kLB2+ztXsFjTf4}a0HGjPzEvoNpZ&S6U~)PO2qE_*w>cbtmp zu8~zYR8(4D3z|M5wUC+1KzXj~!|}{SM^zP0mye~gpuwRVG|;uY-uX=ZpEU051;M_$ z(x)xc>^wZ8AsthoKhZJq!gL3c;wIzX=r{cP!G5CFH_%?E&!}!;VSyN%h7UGq9r@3X z?1$JimFVih!9nE_Iq<<jENm#gBtXNX1S#kw+_7#7 z8i!Uu!EF{E?G>L$NBdyV8D1KZ4nra-*gZWEG_L$(GJ7^Wh&C?j8+}krObh`u_h{6u zH;Q(7)h;K~h!2kak_=c3GrJ9+i&M1e`FLZI)0bb|KpUJ(j}j<$9$f)@sFAoFt-@_9SNAq^eittb9i&mN{~kb- z&LZ?a%q^V`^Me`G6yW(J`5{F7{oWe#c=_iHv#X z7UniP4jLIXK-aTBt~ObKc-LLVI2SUP4_jJxTz%EyZ*7RFcZAQxDV@XRrSXn}p7Xuk zK25{L2i49%Am;=4az5+q&E8gUj8xBRb%L&t9!_0ohT}ELHPw_wjhzZkmT)A?+bQk~ zTC64?y9#%sD#RN{j`4sl0R(yVoir_Q2J;q8Y#3SPpmnh2We5jTn!k(r)mhQb&6va?e9B_#zucz>-FWuvPG>jiVvb|0Q8WnO@fjzAUN{iW7# z;+0K*+}d_`D&?CbDjzhYxcB!J0*!%k@!4)hZmE>bIwp}neY(l=Mh>)5;+n=KQbBlZ zlrt@71ay&gfu;g|VYh)Cv0)ZHK!!$HJ$l+0~xVly~XBT!sXV zyREN<;l@4Oz+KRL;wDo%xzq@bJu@+?zjXa%p4MxZm1dO;Eo`cr%d3O5n4mpAc z7ksLdOf~KNA%Z5d3gK_EC-k}Jc0}R9Pf#5hKaYwCn`VC43ba?j*it3F>RS(x?=H|E z+Xb3Z-XZ7tszzenR7}9RJL8=zJq3Yf2xIO2jDAl~nt=mjPyy2k9gw+Dy1cBcA)`|z z=o0E*%g(7zF+qElMPv&`4z=!MlJ7)m{&VyL5btePwU2RQip#G$+-DQ?sz9&@%ODxI144qV)h_jeZ;D^|%JlK=q zbsG${g2NYaYuSRb7bf7I8q}|Mf0-3RAMkXgY)qEVahwN=7{2ONckC8$A}MR-b$M}i zb6Hg$9)kOVIuywcxR<|u18r)VTv@Cp2h6~cCGJ2ScpPJD*S3Ndz?p%zU{$B$X1>=^ z$#uB3FhKI*0+7Uaof7}$FCh}3cP2Pqq8xGi8#r4}9$_p6LS<2al>Z_$&CS4kiA}TK z10ydEje~JPBeCL~^qEKY_^P&5Ei32}{Zl~f1oyMy#K+@-cN>mFv%T*Za?G};OI`2- z-eVC6@{NBX>#WB>9$mw>fa114wub%IsU=en>CRut$b!3x-moG1RWs4t! zi2Y?bh}$N=L?(U)UAqH2A5R4bR-k_Mh)q7JMkdYA`zriH@&NDqdwn>3p)?|_zrtm# zw5S9=B?r~U1^i`9+_kJq(3pr@3l#vqo0gW2c@ZbuDmV?Hq<^pta9g*E;!-qfI}L>T zPquQ#TTEAh!q=<_VSwy;5#(=w=QyyKOV@uc0G}vH-OlBdRey3&v}!7CCC@295I!7< zkYJyG3qFPbKA|wnV|51gkqA0@Ubab^JXwR!{X+$$fq3vbIG=7nGC#kf91kBJff$=% zkAuvm!D(W+rk>UEy6rqp)6k$v8znLpwdnB=1_65kjzjEk>S1YJ@H|deXXIF!f$-Np zl|sVC_|RCa#mr{AS8WVz zF}3N+88bVB^O~o1io}>nN({;(Y_#F zUS7iY7)?ixAtz;N(fLv~fZoI{hKUs*|0*{LkQP|5b{1srz1T?ml3;#C+FZ%o`$xdk zZMZ!^j&#hg2QVMreR~yC9>D#NefESd<(i-+lf6en5oGZ^xVJSTGBU1PH_hH$rdF?U zLy59JhDcTMU;tn2jRju=y~s%*;G={J;FfTps|RTvibTM7ULFwE&`Ne~;kRv$%bg8AX<1Ov#d6*^0~vV=|V>jA;ym_nDz{z1Q`=|NegO`(D?~9}}7x-|zF> zpU-{Y&wbw?AsC>@1sXC+IQ|`IS7r2@`?CX%`QZ}1r9vSa{c1bG+Am^*3OonKcq#Ri z#`4aQX(*WDvtb0D1=)6M(xLui8BQOoU0r-#fS62Ks{p%j3?7`=)W5=dTZEKB09%+w zva@NE-e-%`rO)roij^XbBv}AP~ z%z@g(D@H|CivCh_+H=U7rVB>oY=XQ&j}furEP@6c;c!1&PRRvOx4iY444O-FIZ#Hd z{_Z+31|v8NZq3QKn}PU=$4>30!^65C^FH_Mm00^l$F^-ng`9+$N6c99b0`?!Eb>HS zHNr^R1XJ1E087ycwk}R*VZV`Vn|J3)n8U}dV*{iD`=Z^hvOppOYTL%fdsLBn3sb;n zn6e|YQN63OIrj|M=?!cvH`uy}ePC?Q;>b#0+(=X?G>l&AYR;Cy!T_r&RgNSqw*stA z(Sg^TKw!8gJ)dAl=aK zp5csSGZCm+p`LPb5|Cp2zCl&lc&LnHQQ6yA6}}ey_T1L{b=dFUdi;MYlK;H!e@TA5 z_2K{K{(^|Y8ZaZziHku@?AL!D&{7eQokXz{T@ZJ2tY|AtisFR#<3OG<4Ip_0Hvgrr zGKb$Tl1zvJA!T~D)(AEP7R+uV7y!TM?jcJmP2nooCCk|}xyihp?cf|? zbzPamBo*J;hIycttrM(twEro464y`OEjEG2cP*PeknHDg0*;>VoL&bmd~TV^R+O8k zg}1;T;cTx8^TiP5qwdq|8v(EQsdE<4jFYZ!-!GM;cB233lXpX*2gSupw&`D`VK03P zJv8kpKJB0X!cMumaT<6fKlR6Utu^cB@jc)ey{C}AY?r0U0OoI<-xikt0x0yMPT$}0 zo6N2Q`7QOMQ!F<-ERY>|0dtLWVgIs-XKc=hh#aZ$aaB;Q0NJ7Z(f%rS20pV>UTfD7 zNldEhnnu^KS{F&rk^b=|TPCj4eBa9a2m^T3ns6V#%9*2|+5r|nX30j~udp1zIhx}T zocmA|WaDJ#9iR>NqT*73ki+jtD?ZOmw0mZ6n1kMs`W~m6;K?hR6^$iTJz! zTHxNfqXzBt!$8_hPV?O>=(oPYq530IcAQT{Dsw)O41{ec2jAOY>XeH)y>)FL#$Gi} zzXp9`+3icCuT>1-V@+`Ohc#E;c$SDG(CcykWr5?_=MvlL?0C;$`v?77%F_2}V8HpZ zz}^dO=x>S#zUCD#Gk`s~hnU;;UR4os;EkH7#0Wxk>=uU9&YrcG!0Fu#FklNXvy+&P z!n@L4)<%?=esm`gGSOA_V@ zro0|@DQ!{!r#{3!jYFE=Wk0&3J$!cy-$|k+C-U47@oiYaJn6p{*6r&;Coz4gs~Y{f zf*@LZ5#q43zuJd@&nj(1fykgZc|SvD!7Rt*O9pU{mq%g8E5qWl$S6-&NDsnOnci=z zYKt?xI+o{bjXu_y(Gl{=93FlWc31_UR-}a$IC(i|V|h8~Y=b#-6+*jS5-C)Z8X zp!N+z@`ooUKKU-FkEO-xxsB+wHI?@41R{zy?EmQ!R6>bTzi^W8NPgl)Lw_{kn_UmyKX2w5p9x zrIxCwexFvV8dy^4CPk3KH9%Y7-2+$4^%#8U2g%9RSRY?=^Olz#{wEZYtvU%we5+kY z?;jVQXdjg7T*+&#?2Yzq|&U{$-TKLtr;uMCVKOHecc_kRu^> zi8KY0LNB`A=i?=cf!FN5ja+!endx)#QZ4)sISjn7+1B;}hkhzU0IL zCru(Db-6rHJ3lB89)ZrT-H*k8SP3OFo({uKM%@=auSj~Y(6~7l+@-=X>*G-}?(uHb z)Nw%}_=xRP%&vkpcM71d7-Zmg~5Qy#n-vS4oPrktIdJ_5kE&1bz2!^tuyhk z;u1a)V~;Mi0lP%lbG@4={}f5vS9`^1V|-DN{YgKfx2RNDN&Iz;GgA%WES#wnFk91oKxhrd2Q4g0B)dQL3}Gzf{>ae|J2$zSosuvsm+@B;L*+giqnl4< z=&oy1AmWh|4OZ9Iw2wsA>ztBc9K)e~Dcbh$CtJe0DOO#MfzyaomvzRgQ3iVbkmZJY zp6`PrH02T2#ROS6uFkIGV5bNn55KsSOdrf#(|*$1}Q7 z$4vruXCriU_7}$Jls)X+u0Do&PZybLj|Ti15X(oU^J`A&mlZ!ou6f-#S$=G)P3fIH z)3>9*tUMn8Q7F^sghyy-!(q#Wam#gYWMN$@Z;bSSm5Qs5E&Tg)M^!Z=o)XCZuZ7-J z4;#I>D}itX#i)j2QFqG!v#IJXs>H!Z4UX5vFC2c#`b_6vP^L2~ba39d?nS}r$V$s~ zg(LU&P_3EBI#YLg0~%m5|K1m5H&(Gc4(fKUA!;5y_Es zI830ANM$_Vb$J>`@$JPZ*=O_q77`{aUG+!G>_FYU!W3J?xKj<|c(dADx=t>h2mpne zuVZ25qo2WxRo16lwMWhLY#&gbu9q_~mkX_yIc*jZZ#j*1lGJi1(1I@cJN!F1ZUnt8 zx2cnXhenUaq{kiY_->{N%|Ka1qIBX1<%&-`B7Buz>m1n2&=vX>%CDZDl@nqG*L{Z4HqQBE=EO%vxRU6P!tKj4(HHY=+$tgyT%YX{r_FIP&Ce|HhSr*!mHbLC55 zy&dmPT{VxsY~G7aX!zUavvXOtPL+sMj#Id~e;CZ4y>aJiUQOCUEXW$RXwSJKN846r zXxvQ&O2nCdwIcuYbM=0|jgDB}7oyR!%?ea8Zw6^g{C&jW*oCb1MpEa{kB3J}tzb=n z=HtJ+f7z&oF$t{}q9og%{$4_AsNC0AH(X<=Sv^*r@3O}X!r&KG(Y3I}QQ@(D^-8Zd zZ)TiRZt#GkN*)`Csf$~GFC01=BdQ&$1tI3PP$@=eZ-jZ2Y25)U*ARTVZzG}bbG+a~ z=LB^zvC8)Ez> zq(DL8M-nMJW#-i7bN3CY&tf_SlU`Qc!@jV}cxyps+$@s(^KgyeIP5u}UZB7pPTHUf ziu|C~W*@LxvVppfPBj*Z=GPm@im9NcUW{>iGHH9xCUEv(fGm3Cx|5l*t9M;_(HM)3 zEhrCa*M6wT*O%UfxkbMehIij=pKN&N9E!R_$0B%~&?GC@8#{cmzWrEx+zY!^O(w+F zw(=eBMHTgWm*C>o@?2#r&!YLV23L)El!liWx*ORa=WBGER{?KSJ!Kg{RPub*oRh%J zha&bcttFfpa_AR=H{-+-P4lRb2-0jngWUYd6f#W_d#=**@vHDk()gc^r|wy^U}>tG z`V9V@>R=ABGwlbz{i&11WS`$S=C@SN9~Zil{`HkNmEwR;@@~WzeoiDrV*YmO z-!tNL3LXf&sm{Ie^90hc>AG@2{r+bzX7-wEVZ9qg0V{XWM1~S2%ii(*B=MISzV)P( zl*^-eo%LaX%KsotYam+P28annx(kG1$1?iihRT%UX5?gSxWJ8_%Ib#I2Q!&adr5%+*lEgLMJ@(#?8NGHA2a!YOb^)?o+Dgd}Zm2 z6RZx}0?Fqh#ArSMM@tS>PoVq}hI=yoD%5A4vDJRP)x03Pw$nUV{Lk-FQ~G%>Qm=J( ziRNbC+)EPkhw<~Wx9TqN@kT*1t`5~M7t|=!f%)~}th^8rVT3T?hG0xr-lw((r;jCKDFAThB7ipy8p78TzdPub&-v}o+8J|GM(9)bKEckxRbp;^R)Bd| zzOi);QCp@t4L0|H;&VHd(&sctYYP*fVw7ZuBTHR?AAqcrHGE=zPzhyzk7smlNes@f z9?IQLn}i0V0ncd8pBInp4|YN=#0bC}Sd^hg$7yiYkYb<$m z+W~iv=YC!>CDP4%%p@<=RPi<4{Zw(y;mxt8b5PBOF9q80L9rEw>s}HDh_hO;Z>Vlo zHE-;{k=Pzk=t7J30f~}{oJpNYCn}F~jhjP%M4#7GTM9#~r^L3l7d;`Vacl^gvUB3J}KCNWa3u&gdLsvLu*){>`_O4whn1k@90%&MAMlqJ~!dv z?!_;V_j@Pd&CJ&ND>&Q5JR-%Wh7bkpp2@L$DV$GkR03F?Ws8B)CljlCuZ{8z8{gA1 z_zUXMt~GUNuq4d|urZn91^_O#aW_6OWG@NQtDJX@b$l>#oTW{e5pN~T6%8K{CHXEFSI#nuq`e$^hD(BDYd3A8cxZ6e`2~@*Z}3n1F}3p={n!MGJxcIyT^+~< zt^k`)iRIr*bneOevif)d>WrX6kQA#L@=}Ns;@FdHR!`gN*nExjskJb4%ISU(^H*Cq zYwTYMGGBl;^fUMN6Lr>DyW8v40|hev%0%g;yqaK=a5A~!*)s7?J0F4c72)E1Z8NUr z%s$>!GB6-+Ec-aPzj4!x5|WDAO{5locu|s8o98Fj+#o%$r?AGmLvpAMpx&ogs!%970Aq<_Y(BSzK$Y-X0yDi$u&n-IZ$W zra)=7!DoCM8Ep0<6zazxbDy2;S`rkrg!E*U(5~A7{z3#_jFAc2MJnB4$1a&q`Mk(NC9t;eYn z92+MINxf^5$_L0RT5yVS3KKIn=FpC zG#c9$=O$p+lu4pEbE1zyKS5!Wi8kl#egkkbEKU0(=1$hFkr}T{BNNO@mUP)>Ki+v5 zr?Q7o#P|;8vaZYZ6s_2+1=tOkb%RC}1g4X-wLD#$<9Ctf78cdW4@u8X-6$Cio*{sv z!RrAqVX?C95j3nK#US4OHUXSWKF_|UsIb|za-K6C!Xw}{hJn5qcX9pzL?ea{YrOn+rG(E*`je;Nn4Y3l0Aw|8VK`8Gj&gu4rncZ_N!!xs=1D94_Vjiz$ao zGhCYC(hQeo{>?P=(v$ZnJC=%C$9bC+Xm1|ag6|`we*U2V@XcR4&V%R8$AP_|`(W$g zc9DnshM$YUT_vt*aPh!pjr0Ey0v8WlJaF;A#RE59`bml0sFE8>bMpso(zGQ!1!#eb z2QD7Cc;MpUXN17RO`86vq^bD7H`j4n=(v4@-0sSVe~5#N2QD7Cc=%t#!xcL@E1?Jv R-C;H$O^q##$_?D2{u2y(@D2a~ diff --git a/tests/src/end-to-end/colors/colors.test.ts-snapshots/textColorMark-chromium-linux.png b/tests/src/end-to-end/colors/colors.test.ts-snapshots/textColorMark-chromium-linux.png index 6c263ac6f6a369e889bd983bc983cebf6d93f74f..0c244842c3d0444ed5d319262a7c886781df1caf 100644 GIT binary patch delta 8032 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 diff --git a/tests/src/end-to-end/colors/colors.test.ts-snapshots/textColorMark-firefox-linux.png b/tests/src/end-to-end/colors/colors.test.ts-snapshots/textColorMark-firefox-linux.png index 3b4b24b994749dd71f065c059979ac34c2e752cf..0b551a0b4117c156b90d6623c22438481a56927a 100644 GIT binary patch literal 28772 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 Q+917ihCgTjWPAI60B+D&P5=M^ diff --git a/tests/src/end-to-end/colors/colors.test.ts-snapshots/textColorMark-webkit-linux.png b/tests/src/end-to-end/colors/colors.test.ts-snapshots/textColorMark-webkit-linux.png index 900bde3258c336566567cb3bef54efd0e7267cbf..08e90669f196fb4bb1bf134de4482a82b511fa97 100644 GIT binary patch literal 37223 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 literal 37240 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 SX8Ih9t4ivMIsd+O|9=Cc>h<{m diff --git a/tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandlemenu-chromium-linux.png b/tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandlemenu-chromium-linux.png index b0652370ec0b2e997589a7e70a4c40dde22b9440..d084fd52dc517c5d0548d5d78b6beedd63b0d5b1 100644 GIT binary patch delta 8722 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 Nn=6i&85g}D{~t9QwVVI| delta 8721 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 bhW_xmarmZ*;5%>ycJn{Bzm#70`s4oqYF^c% diff --git a/tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandlemenu-firefox-linux.png b/tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandlemenu-firefox-linux.png index a0abb55378aa4054788f33bf12c096184acf9149..75a5593ecf93fa3bb4fd94853d723cc219d9e71a 100644 GIT binary patch delta 13190 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 b9JYVlMec5w^dtpZ{TL2? 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 C5h@G- diff --git a/tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandlemenu-webkit-linux.png b/tests/src/end-to-end/draghandle/draghandle.test.ts-snapshots/draghandlemenu-webkit-linux.png index d5d3e472406431c6749b4836b58edc1b5d1e9246..690378d0a84b72282b279675dc8c0f7b0080d933 100644 GIT binary patch literal 45048 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 S1+>$h7_2qcP1o6V^uGWDwGq_- literal 44831 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 &8y8;=4 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 diff --git a/tests/src/end-to-end/multicolumn/multicolumn.test.ts b/tests/src/end-to-end/multicolumn/multicolumn.test.ts index 945eafc3a0..7bee32ed76 100644 --- a/tests/src/end-to-end/multicolumn/multicolumn.test.ts +++ b/tests/src/end-to-end/multicolumn/multicolumn.test.ts @@ -1,9 +1,5 @@ import { test } from "../../setup/setupScript.js"; -import { - BULLET_LIST_SELECTOR, - H_ONE_BLOCK_SELECTOR, - MULTI_COLUMN_URL, -} from "../../utils/const.js"; +import { BULLET_LIST_SELECTOR, MULTI_COLUMN_URL } from "../../utils/const.js"; import { compareDocToSnapshot, focusOnEditor } from "../../utils/editor.js"; test.describe.configure({ mode: "serial" }); @@ -16,10 +12,11 @@ test.describe("Check Multi-Column Behaviour", () => { test("Check Delete before column", async ({ page }) => { await focusOnEditor(page); - await page.click(H_ONE_BLOCK_SELECTOR); - await page.keyboard.press("ArrowRight"); - await page.keyboard.press("ArrowRight"); - await page.keyboard.press("ArrowRight"); + await page + // eslint-disable-next-line testing-library/prefer-screen-queries + .getByText("You can have multiple blocks in a column too") + .click({ position: { x: 1, y: 1 } }); + await page.keyboard.press("ArrowLeft"); await page.keyboard.press("Delete"); diff --git a/tests/src/end-to-end/slashmenu/slashmenu.test.ts-snapshots/slash-menu-end-product-chromium-linux.png b/tests/src/end-to-end/slashmenu/slashmenu.test.ts-snapshots/slash-menu-end-product-chromium-linux.png index 2aeec4068c991c8e9032312d4f7c8bf68b18105a..dc2b31a702991de7f934b8b312637e8e4f2e10df 100644 GIT binary patch literal 15817 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 XQ8KU(K7W8412NJ!y+YKx`S5=L5Aa0G diff --git a/tests/src/end-to-end/slashmenu/slashmenu.test.ts-snapshots/slash-menu-end-product-firefox-linux.png b/tests/src/end-to-end/slashmenu/slashmenu.test.ts-snapshots/slash-menu-end-product-firefox-linux.png index 874240eaba09a4a7d76de1f523040dce67742dd4..5cec092d61d94347ceb8c077e241547c1d3447cd 100644 GIT binary patch literal 36911 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

euV#krhpTrc+>B>W2{t`sVbY;( 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
re6S4>@4l>_vf`YLOl@k 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 L{P3R#{jUE9L2F~( literal 119600 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 E0U`&A+W-In literal 89770 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�)Vhe+@fbjdwA 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 PT9$HB`$X>Xvp4<^G2Edk diff --git a/tests/src/end-to-end/static/static.test.ts-snapshots/static-rendering-firefox-linux.png b/tests/src/end-to-end/static/static.test.ts-snapshots/static-rendering-firefox-linux.png index 7fba12d8d6387daddf0c1a5b371313134839235d..e9e6b1dd60b7c3fc9ac6f30b26b6e04ae04021ff 100644 GIT binary patch literal 27427 zcmeHwcTkgQxbK$`1#}V6RV*}R1rZRepp?V{tf(LssuX1vSd@;TC#b6^0=m+armzYN zN<`@)Bq$OWlp-YvglecM5C{Q6lKTeK-Fx@UoO|ZZ+?jh%{*p=ZJ@4~A_4ky-+b1o} zWmarl0YQ+=(Vvf;f}myKPk58ma_~=M1l0zDRH36s4xR~irc zidquSVhY;#C$$d=Qj2GGYN^Oy!PBm5NvK8(_0u*%)oL^A-D?+O1I3WD$=EEIJQfTr7Z{&3OOd_Oy zke7oxl>vj_sV&}`0bVZ2vAtx0MHOHnJ&NOAIKn|45Vn7NJb6iDBSnC*7Dj0>9B~s! z|B5VN@H;ipjiP42%Uvy6ySJiLZBbCl_zR!}oi%{)^YhP+Ey*s>0WdZ?<7fnfA4VXs zC6a)_@6<#VfC>XIGe#31u2#LLr3!uE*u+9nNzzh~W4m6<)$KQRL`JtLG_jcgF^J7X98JX0M4WWQN$0;8Hkr7wf*!mr z&#`CCBxzV}osxW^U^vTpE=?oQLek$4))&>S6rhIcyZxgaWO9H0*EOoXB!DqwXV*Pc zT?7>CU7|w6rgvbD)?80!7S?W8ZFRWV$+3)W{ean1ruvICEhD+ue%v7~T- zL8sOR8jBtdJn^_5=5wY}T{E7(5Pb{xD9|!uAvN1XpyOt0A2Fzr zT`}eMfKoA&Xq`DPNJnD&Tr8kj;|G+8j$;=FJXMsn;y37AA`j*6i&VcbB_r?1)J|@d zkD-`FG-=A`6OFSR*275~jvlxTMXdth$*?2vm^#XJ2%x8jj{6?~_=S*~2Au8glH9!l zV)1fDoaQ1PNNS&_)ND}6w147f;5GHpnmS#O%jEaU8}2(n$TH2(Hen)brQP{#gXbL^ zMKIVOR0r>m%KVHa832Gt{xh}xkO3EP`pxcE!C&_`vo*L42vFq!G|X z&!WTBL?`@k1~RDeY>72giO2{Jq#WgZT9aimzDE97eAoD!v1e%Wpn6Qtxcf1i%uVJI z$GI zD@vb-D_uQNQx~8X7wp-3i;%nLk4IISj^43j1@X!8Cl;J)vU~4z*whx(Ctp%f-st!K zPitJLcdL0-#odV3X}2qt!NY_3vXM{k2H1v#bKmcZPfn0MTj{4)`VfI_V_=lqiWQC* z6w_x@42JXZk&hEoiL?Yp>#vqDGM(T+lcJW1l2sto+*G1FV-+DNT2x5xt* z+NN&ep7toWQ8VwB@pZTCb5d%HGq;dJ`?s1C)W?F5)^-Y}tQhxX^F&mb{R)-!zZr3|t(vbOr(ZbTFmrGBg@GdW`RMDGpBpdK@rJ56 zJ?v$Jy^kWFuMTb-$C!+*>2Y|2TlRpgrIMdp5aJ}gS{OR!5Yt{$V=sK&%1hT&ad|9a(eXN0@7Izl1e)qJ+P%&{;U2Yc>oiSdYlE;(18- zWf;DJe6#Ly7ov^fA46%cvrPzyd#9B)>E7zAz?#IVoer8T^H9Zn?qsUos_h|BT?_LUKxchS4e01`O4HhzQh=wLc;knl{ z6giu%bT;?*9zWod0CSD#{LR{lpWU*0ecr6)5;YC zb0yIK$hGR)o%`_eX(zs$^_8mg{@boDg*0F^)X8f9WGW_QuQ%aKN^U0SGuw`yM|GoO ztk2k1hPS(MbW?)sR7@4;9#JVh+{R`+d+qK``Dot_kBuzxjXUcg--%pyyG%=CPU#-? zjH!2BcfPr3JT#wOGgbDJYY3&)Y~6T7em4MD1HyjK=wgsJoHjnfFFx- zH=}p#38`U6MbA&LG^0)m2|<~Ub}e)UJQqL&Eg~`tBiUtQPFNVV#)X)k=~CH_PT|{! z#P>#=PMf-$n>l9%F7Gt?ioN3vyP$%v#7B9PYuWBokyaZ#p|X4n+(JuD)2h~-h4Ue} zURj1wPS3iwVJjWh+Ddn2C#|=8)?|vXn z#ktwO0Ac<<2*KuNo~qz(awE~GL71zM8lpebYhTJOoQepEz>#7msM?XvUIQ;XV&JpYc?ckn7mwtkrJqFw{A^i z1br2rA$x@Nnk-wJwx^Um>laZ=t}{Q{aJxg`J6$z5AC0e9xRPUFwh2m#cQ=|tZ;6}d zz8k#nZ{Ca9u0omhIZe@tXSZ8zXQAjg^n0iKoZo|J&BH6}&5vYQn`~#li^d7xC#a~7 z#QP6luy#~VUKN=6faNW`K{=5zB(EEPJMtyPrCx`ndA=Y2%(;F8ZBRYmLf$4px_w%3tenR(pDA#JH%ICn7&TbHyAAwFTUFcZ1|6U<-WQYw=?dte=S4=&m6k___QGQKl#k8xM4f*wWno||Y@XLtP)kx{z3mz%{WGs-s zcl$*%KKNth*6~41dHC5fqjtx*NDte@3GV`O8o1kfFAk1~40++@vVrp_t9O5Cq+SSP z*@K)CQR2+$elgo&4KnBHs#`tMibV8NY6&rGgK>RP!mjUg?@4@?IgUPz&mwcv7vFcUp0NW|@J7hSRv3H+orvZ$0;VH)UZ1%m9AaJNT+&~|jl)_b+FNacS6$c|F5k`~%!m^5XNr0#Fp`iRtHKWEkd|G^0??RFI?PMkCl~x z|1fhKTFL}NY0Q@q61u6SWZQ6V*#%pugXqTiJyLJ)&Jb^Yy!$jU13y4#(|T{!+adL7 zlBjtFWjR=1x{9WYm0+M?Mecf=Ns5ajKnf^a{wn zRgmw2ZA1;!8cKTJ0F$^4OhVnFVKXoZ7#zQB7YN-{OxsyxWv{svml7{*Cdhsk3oCsxjghr%Y=Xuq~2%|0Zw9f_3TBi@gob@S8ZLVvVT_U=vn1r zD%ap7oYdhT_Cr-&C8Mg}OOrL2ub}L}EU648i zHB|tEj0V7;AG4rXURBQr)E$-5GK=gft$8mE@p6O8!&n5`cqMCxuq+}NOL0^zWaea< z^fR_T(GpgYt*LW`0M}9lWIJDw>KJOxydlgsbS~BC3bdX^4I=m~w0^-+Os-x82(#5a z;SoC0Ag@c;$X9|S_+XJs;dRQIT_(6$^j14GEToQ5C*nW>Mm+9Z|APc+8~XfA9W`ZY zzj^~cbfS433rdU6@&Z#6cfh6rn$jsHmr@EO+H+(1qLal*e_4i&ul6o4?)KyMk5JLp zt*N-!UmZip&OX+yF{^Z4VvKhVG_f!C?d?_JeB$s}HENV2tajuMmdwI&X*^TAk(hMv zWtt04+eO0JE_#O=%9Rf44Y%G4D}O?{ngGSjjg%)X20givYp9^n5bMPF zr}VJnX{V}6!dv72SS-N^40pk(iuS2Q%iv=TymDTXny7UAJ!IS+{ zol_#mlckGfVf@g;)`@s{zHYi9E$l~)3_+>97Evc?C!BP~`yCiq-3Ogq(~rB(!Vzr1 z&fL)UuM-xlm!!B8%{+SH=_-Xn(Bfbh#@d<{dj!=y+mv0wh@cgY$~;i-7W!I5IG1a^ zbV#UJ4|CmKdI3zYeg-)_>(ayRF!&tcG(2GK*Kv!6^WzHU$F1GG2m7sl8A#wJkujLS z21+C65UlSU?Hniz%0v|c;cYwkvl8H#seyozl)FO6(MfI5GA9z_e=`v6=rO!O~ zCC)snqTe>FbD|p9U!13cv#!0Z$y;6=J9;92`LJcF%GI`qSHC>WRE5&Y6L(9?jU)jP zIr2*!;D}3_;Ki*eEutHN*;Ht37qI5(wf}!^ZyA;K-io; zU@$lc#+Hhi&JNNrxD24V3AOj9B~76oZw7<6!!K`cMLp(#Bic)w;DGumK>d$`!X-<9 z!Lz|!FRs1C1Ar7TV)G3T_1ub(+M^0?0JYs)x<3?k6PSQZ^~NM9svX#cWACArKKTpq^ah`>v>~^Z%ic^j8P=f7=BR-Bc_vu~ms(PaL1bLHxf@ri+S@AW8ZVcG@Tg z47|5c#?zkMkG;6qp#$&$MOn74z>yLJAJ+g_Ap!KWHi;K$M40S9*tdE-3i(nG>(|`W zMF!wDOs^}5es?QvtyVj+aDlt~03{P&5NfJzGJDr9=#8Oa>D85A!NrgU0DGC4`Jf7M z0SIb#ro9ey)uT{0P}x9=K79pG{c5*LeD~b_4tCSi!lApuwK1{>t{}8L8|A+3F9Ai7 zqCkttsOi836NHrFHo%_5(=|f}u_T!0y|s|?)jFQr=P?D=zT8rBx=X}CZD+r$ilLua ziud-NIAH;GBs}+9#7v}F5i}-}ZNRv!8{ndVfPl3yxRQME8#rkoOvq8FDKYoCv)770 ziwe8YWjskL6`VGzm>fvyh;-358cDD#WDZ;S&QcBW)`#9Y5`7OThO$|;Lt!TJ@g@^< zb`k8b!N+fj=y@;nDmhu|jQQk5y2@RpE@s?Qtp=U`!LT~Dy2dy)OJ2R*D|UGyE$Y|+ zGv8&6d79vUNAO^mTi1}+VD4+8;z}?QO=ZqyPBt-EF^p7POkQcxhw=FH`;e0)kt$jg7ddY4YQss z=#$U8tfv}Re;KwH?dyqVW(q(Z=UUGl#-bE}ESyGO?FBt9_b82BP~~_YORKuG->*ZH zrS-YHq-?4#`G|4hejCN9TD!7eoGw?eTDGe4UfTr><)BT}7wn)8$Fc)SxG*Pe`^mKG z5I%Z^W!M$uV?0g2E*N7H%ja!7@>fIO*g$BdU75A1f`g)AW z47nXE{yEqKT}OLZ-k-gN#Tb#1ap1oJ!RuQ z=cTF2$bI3oZi8PwdR>^?i3EM#bA%4u1Tg#xi{giJRj8=R#bL*-T zua8)zp%Ge1TO?kSim@hRV1VjO-^+mK#}m#_CxE+1E;SrSWYb`JNP6uj8j z4V!Jcf;rg(>XQ1^dM1&VD@Pf$22x|9FH2=Pa!e9iIC%fy%MHz&7A{XkU{tt~Q{=(- zuXn`#R&P1-p85LtQVHZ*0=(t(o&A|mQ~{_l@Si-#L8WXdx^C5jah-E#l@lXc`r;}g z;v+js2Afms2dhhKB=m^^z72VUkwLalaL0pQ+iPXX$IE;8PWZVVVr&?W|Je@RpkFtL zmt<62?Rw@l*r4UCrwJL&+q-C?zr1*KCL42WpyUMQU7Sv7qWLvp1ps|VbB=9OAHqQjf_+}VW*(UEXR(_+_<5DL|grlP=jx-fB5 zHUUlNH}~F+Woh_9|6QDPd{%2ll!P z_|8D9>{xa*d!-x0Uif27lCh^8s9xuqa!RKaLg!fjeqMJ%@Zh*s#-T#X4K2^X&*dj+|>uj&PROQzmE(MNN z|CSfIY<9$*5h2-kvpz%qmLmUj;lfDf=OBhe>B3N7+&eHy5Ew!#D&v!DSooPBn%5f& zgR=?+drVCFTF##nMQ!T<85rD2w4m^$z8!?}v}LOjAYWjHb@*B5A0=@SC!|N59h4=i za5ua#M!^bwKw`#wptR;(a4E#452HOkYhzEA zzNn;-FyX_cTwjJ2SbS}N1b{X|!`X%)&_=+6HbS@Iv z2=nZhSg=cCCu;O$#jZQJ)Fuf88|)qT%^X1j{d=zVk71kWsHUsHX}SzO1fUbM6?9@O z+RK1ke*<#W?(~pfvSJXf5LhM8qKm-4y@1m{|LYupqRHSzr?HaauUh#(UL}G?U}1jii&aa3 z9_1>E^mCgwg1OeDXvFUB^5PB@B`+GWBRtnH=@pB*1~&C!_R^r90Zqlr7rTx>f}*s6 z3X+NrED0NmnggJ3*vA6_MvkXJpDQDxcsm$5{sdZY@_(HFrhjR07~+?$|BHY+l_49h zFaWGaY*B9@?!VBVms>zk&Ep9*)iXH1MfZHVztbkwCwfe)cLPV-CuV*`=>E&##^|q? z)Y~MA=tXJA{;6C&uc*S6kWYwJO>LtY7~OBlGu_P|apFA6&EIOBDTv}{5@{v51@l~a z(LU8)U6nNb?D0!`Bs9QI(xQYf0VJIE@WE@aVvqrJ8D?C10kl*%>v_Zaw3DjFTg#V+ z1Q5J;1O$R0xhR6iK(R%#;G%lP;ENXxfDB14%5No|e1TkWwe>u|RhCtB}Eo3-M1 zlCLKxP66Qme)18k^wzhYrUY=*Sa8vQI;x@^%vE~mLVw+Uj^`&sh${`{`v}6%a0R`q zNrZgFujZ!RoZHbd3TFK0x~AHOCKpVS@DJ1Q@9%YY+TU?~Z!3zHT;ZMCm5gw9o%WT{N(Ahq)REvFCHUC;Q@uNy1{ z&T3jyXEdy-0)?HE^kenstWqAt$1GV-)FkkLI9ue4n^07<$UfaYe*(sKvQHY!KnYtz zZL9p{-k6r}#+eM_vY59nyf%0y0}%lpkfd@GA2V#xu?|!o+8VcgvlH^J7Wu9+jj9iI zHwLwFe00#$PKs+9D|0Ka`}Q|H+S*5t=>Ooa--|l}hIeR5ELrH^N^9)vm^?YX!(N5s z=d&?Q-(XD1+UeAx`qKihRxg*mE7#_H4Jm`$fz4AI92CInohatpHgP~~DkiPj0NJ<* zW^$D)!b@3qUb_u!5b9~MJS9k8kvj%@tdd(w|p>t8O{3*rWXwAjL|F ziKN~gtWKWY8L(Ct`uV6ldErBY;iR&m*+wXm`6aic=d>A<@jC8yb(rM%Ze+O@6uuB~ z4L?-a3r#2-gJxg9_V?Sh z39#6P?r&A;TmLB&a8Z*@Q`?AH$2s3ipqTFobuq}URG8>Z#PO>l^!$U`WD|uW$P8XJ z-}cd#qSUd9u?l_Dgp;pL@QBp5ET_SY zk?c!LZNM}`3X$<1@L}rj zv#HT-y_+FL)4|xKOnLwqBHd$9Cl!kF1e$MIy&nYm9V_pKLF*m8R9*Z#rKe z{QhM#@j;7ULllcn^vy%DF^G*p92rFQnmDK~CYt|>F(_U=a^Tx8z_%PE7UO?ejAGG! zlYm%sixLorqi+qgzkeb@3{=EG<-d}fzJ(NVJ`x92aZvp(0kJWB7lk-7h>byP4BsUn zHiqw_5Jv{FF^G-fy9C6>@Ld$*$RIWbu`zs?fY=zmi$WY3#Ks^thVK#(8^d=|{BJ~t z1tFtjvkds9ZR|_I3(u%fc*(JUttTLyVGB|8m88tXApzZynF?2SZV|Bq*E! ze*F1g%OKC;%lqnd%>LC>NA<1MgIs*TuQdPbp?oZ?%s=Ma#^gWV4qo;HiQ*Xh_p#p? zA#Hbs3c4@+o0Rw}Vy*n!D#Ql%|FW+*G5(r`pcS>E|0Cef?4-=J{5FFz5Kk-1u)lUcNCh5(AC@{EtUu)b=*Q;X_;e z3ZKgU^P&voBJ$n%-`?10Zwe`me0X{A`6SZ zB)G>tx;Bn!^fv0-k}@^mnkwZb8lIGc5;AIkYO6t`p(!UYrY)kPwMjk?J2X~SZ=jhbZ39iVx;kmW;HC01kmneA zKvX>NS5s)R=eE-x0pWP>lv%~n%dTQo>`?V&S$hmmwn-UB&`RdiRcfw$3ZsmWlo+#q zkC>IpC&hAWX75`Ku!`S#84o8~Wi0X1(7am018C9sz9qXoxxT)`1f`~7JMzr>rcea2b zy6*<7eB?877d{lu--y>H_|akJlaG&#j2uurC`Ic<1)S5vYv+aWk@fKw*4RrQALk~p z6Z~I05R9a>%h!Sx-E{_JPye}yoZ8;gz)VM`p1l+>I@8-2=*R)`)-|YJt^gci?Jh{lzc+BC6>DN?R7JI5e3H*Hp~}meC-hNo zc3IHkDM|clVup@GfUgomIV0usiQvtGwQdLG^|x%D`%q-1gg7Q3U`|UwsmBXVuR|}& z2bGJz9KDIFqgW7+z4YHY zcarUEE~e6-e7+TRY&YT%rK>G&>8)L|hw342@nP5MIcmOi#8aiQLONqWy(OgjiBaxw z+|7WLQ_u@v{#>w6^r^BjXRayPt6e`zr<&yFL(r5q_D;Bl1z5n$<7sv1{%p*s0iBxy)6`$?-!e z4zb;h^$z^f_v|z+LXD&9Y;&&V081v;O0@RM8?mgaFFx#n`cN)4+hl^s?$|-_q#9d= zPuXawB}MBuc*z{gSokP6ly3MMI${;iiXc6bfx+6zKP`Ld@0x#Zg4oDLhREk%-556#Wy#u47T{_9H z7+oUh>!sL*FSb0pd-mocvMDM`m6EAxhUYxjkmG%L!i?Jwb?3Nj>FPolOqD#Vw#KUN z*F~R?LE~r#Qz@p5s*HF_4O;0ul)4be3_Th&rJF<@5((otY@)hy;_S;f?@A5-M9PCB z^d20ceI)l5aD*bj5#n%Aj|GRbO0$Rn+3Ol=Q92ej9J=q5myh0^_d)O1_zO)0eE@DH z)V6#>6Z`2BwsdJ@L9&uOqtwKyMgbSfES@Ip%+q!?p?WY7duJaY?i`^X!Xd&)2s2u< z-TO&<{LL0vGx0Jr1S~$kXi4RTZ!Ljb1%L z9a{YRo!6rgJ4}x9(xReD^+ABxuTU0YO@#@&5z{aIdrJ4D&Tgx|2d3>JD+A$5I=W9` zYEuCm>KC(Q1Xvwt?@mBMt#6(TszVECYT?rGBU!`47A6-$Opk^4FdwLO@&~FcEw&OC zjBNQ3z)nOKTCC3m8`{v3?aIEBTaGw4y_a1|H;iCf%%*!DX0eSDSF$J|f>2 zjg9!Tueg{~8ba{fdKv0J^wf^mQQxkdYsq>;$3-B@=8PHTxhCi6bE95MYG@24| zM3sKFyGG~K5oW#>BWVM#x@ykjX4LgxLv`#GH!m5 zm0zx%u3w1CW_}==^}D2BGHmcFgB2MWjl3hs`*#v_RT3T;F7d2GUNxdqLVa1g{J2l( ziqTw#RHb%_Ye^xB!Fo-Xx##&H>JDn(Fcq<%EOK(G>GCdULEVeNAS$$oUB_PhxNV>R zXwGo`NK3~}{Bj)o3!L|?e;k$eV5pjN+{*aO>kboaOir>Ub3vp}1xsm7NV>|jzE3g? z&hoB|y?W+(xuvUn7r~>DZyAz^V}ufu#p1jlE^XT=-=>S4Pb8}Sl4uC!gj%G|d&!dP zw&7g4M_8x5ontZB(tW~F}VjDsI z7%MnaJHS@%SqC<918`H9Wpp!jzYdQRt2OVoWQ7Hk>bKx)rk57Q*aUSVdZ?1weqQYh6=mh5+O~{hNM_7uVVuC#M)n{yEf%6AzKGrvbs#LUBc3*-P57U3j_ORJFkgd46z|r*BHJ1dh|ZYIzs*GFeimg>)|3B3U(n)4)YW- zWM4vFzrOzB6{ZR{bV5SblV>xJ_9)@YL7sDdH<)s2?HVvxkvYz%0I(lNQz-S&BS8?x zm^Q8XK@vl*m2gM&id@*|+H_w>O`59ZQGJP!UF2Wemg_?2&xV z=$GU7P5N+?qz70>w|yZx9h|l9w5$PXk4J|%8&$_?x1b~IPBj5YQxdR(ej6`9{eA-U0P|h|rd8cgTY;TBpcN70wNZwVJ zqhAOk+r?&hz}YQ83PbjK(M90#zP?lugo0M$@6jqVD~unS_XZy}Zt4zjrLA!l9f40R9--hz4FyKkTd zgOB{E2E}*yI<6O>)oqn~Z|>oMjXYQIbjc{`V7@}&Re!qC%? z>}KQ?bBa-ylNjYm)JI@+V38*oe=-*!hHzGpzF5D5T z0hapywTT@Bf5PJ2wp#js6wKSfDanoM!6upwU_bWei_ zLSX`WXs`<~n7|R86e#i$@Z$pk^gRMdQk!{Y+5szCq9czn+U<5ky*gmxs&aaEs#kRdH}RMhhdby@y?u@Yo321KM-TP`gelGx{cZn_3r; zK{@kZ=o2Et+O>Ms1^sD@V%At@wVy(=`gQ)mXi7G-q4b$6(^+Kbs9jPHCy8_tHUA8s z5H{1%OxqYy#7Q5XWe<45uG;d~1s{OHmE~k0!?MpwzhG)7fw4cQutb;Rfm7xz6g+}W zB(<^!-o4FlONcqZyMiV4=KC&oMfdU9Png}7S_C|DQ9Em?H$S_I*>RuGdvE!`P&9)8 z0-q!w-#<{%WQ}4j))zuO1dpk|A|5_|i1Ot|dCq5~v}tBWh|V(D!ZwTD?blc@y>;Mm`g9_pW)~?{8a^WO)3N zqLFO5(fjRruJw)P&1pAqXiY!l2PYYMF0MyGwR~<*saATuq5rUJCjx$c{Zgq; zA{6-(N9r&(wI zGDZ}6LU-9b{ZPA_3%`%q=setCq$~p~@(W;CKG%#XNa`GCuDkb{*(oDjBjJdorxfXRuQ=4 z=z@v}N)!?uH~-P8dEgJSSEYujWLOs$w??x$tQ@g-!Y6D^ExiKo6|rMDp1+Utmp$t1 z(6%3KSb0-5SP>1VF{#gE=G>?cQ_{_xWn2^bWgFSIr9~5a@iwfecafD_v-DR8*Xvxy zQVpFkVJCr^J3D_KF52h-^02Ximxtk^qd@a+O=*V-0%N8JTpw1H;FyeK4mzc`vZv{) z71Gkd_y$>O#4d{bpzAspR$Ewgo*_b^>kzh&zfVDFqr4^i3(9^$X*jiNxJ;9?wnDV7AKCS=9bwOIfwOejs@o{6lJ4vsadX zyB?EJ=Ue%*-=Fzqd;n?HnSzbG;>3!>4`$_VR<=!72)j_fjr^|Gi-4d!r7{Wf3C{9( zC;lsr?~vy&lU1cC{>x*p>AX;zkRN82EPKUmjUTjGte5hdEt~>hcg^8+MVzt@@uHxE4d<(%7 z0W0EMC+*WHJUy3J80^5Bs=t6}0>@638h{*(+zGYHeryt#*%Ag;G+EIDmymgw08(L9 z30;264>u z{@b!@?b|`x#Tjd56&5oe&({M0tE$J1cDU(t#f;G-@ujw?z)S_Oxw z%*MUx=11J{CRyo-kZ$eVgm8~e%^IKX48;a9(ORpW25UjA+X-UbNTH)V$f$v|Vs>J} zR1innVUdH!^9_rdXWfSD=k%tXzs8$^Ow2B;cczXWG^E_Iry6idquWenvi58257o#j z>Um=7q5;swi%^gRMLMhl=ps6IeHmTKY6I(XI*#Z#a-QrZ@(Tz! z#Ma{3EP8uFihB8g;=W>yEWRNoRyrZH;lTE8lxJsDP0=~RQ=F~A07DHbAJ4i9_OQ$q zh%Q_ON3cu_Ft!E7;P5hP0J>2IpN5nQa@{VcH<6ylcsD;t2N8Fk_kP=^G* zZxVJ{Lsa~rni_N%L-}*%Wl-d80He3vm4Vs2fu|RceqImI>J%9LluOf&6*m>XYYRY4 zXe6PL{y+7kWWwJczV!kKkDd^pgdi@Abl)OfWVp!C&5FS-+6nspzo{n-(A(d}lb1;i z2!4@;>vua>6jDXIEx~`ZK=QU3kf86AH=v+|fe5-VnRr0MRL#y5de1l<2Sp}iw(uiP zj4g~6=DW(qN}H(LX3Vs<77W~2p(&9pV5+&fxyvAT0_Ia9;a~2Di=I#e^17YM+-;X) zzY9&=*|%w`F*?#NKX|n*x)m>GcAO~sYeDH}$h*x|-+GxhUCji;i1o%FQH6_2ZG^#Q zOg~GE{e-E7X@P;Hjmg|%?+>v^#m+uZ{Hak>z#17!=}#b~PNqCN{R`y%OSk{>Y-$$) z2O1$X*`CDI_JeJ$tYm>EEoIr@*Kqe)Jb!8Zg}!XPhTfbARHkw9RC@4`6JJYZAlUy` zZ-TCZO5iUqoS6X{N)gP~ft?>`x^+`!qEb1yVph6keYP~pq&t-}cx1eYmc}bJl$Mbm zSTLKNNmIS6+&3NnRJ%=QcGj4z-P{)c#**D)UqY!YCP$hNPv^VIM`iHt^#qUfdGw8X zjpUXRl-4UKtE5b`GG^PSXt7f%*x0;^vQ*-FkFH|BxWTNWYt7I@P6TBq6%Oi!Bl@R) z^oWxOySvY0_S5|f$62(n#@_9wqIB5Rcu? zC3_AJFel{R@^*KpvnJBq^cn%16|9n-xCZ2yNCed|pknD0Y9hw4bd-cIH|3BL}D>L+WmdV#-T?=2xo; zq6B19*3HwT5MIKXTC?e;tGk`c4%@0QyX}ht!;L~|IU|v1?i4-!n%LKEq(i}OAhGlq z%evNolgM+Q+*v$VCnp`Y-mV^~r6Z}#PhzVcISZ1sCUioc; zHLh;b$>6$a<;QiNnjm$lNRGPq!sN?9F(+EJm+@JQ&oG`HD&SwdV+bJ};Ugiq!HV#f zg5s$!+8&?(P8f)@=Z)UOnVg-T4>MN^n3g0HY;GDts#R0c&9onq+#TQ}BiJ}SJidSH zVx=6DcYel<3vDq}+4{$a=)s}3!z3otpQeX4iZ`MT+rOIpBi=bYX*DZ(57>Qb!9%9J zTKguz`?U>y(tt*MN=+M@4!efGmEU4_k#z7?wlB#JQ9czsKT2l|ISogqko1GwC?gR; zc97BhJDT>kX$|W_BsyaNMI$xhi9GKYhGU9kDo$)_X|mjc*qCNl?S2+AT5@pHMt&_w zKbVb<8U{aah}Wq|#ESBRB#>ykc-DuyeQem(jsf&0Gvhh)u<$}v{xok%y8ff5n`_M; zRF4|8$6&GS$dmfFO>W$|ni1_W$r>qqaKq<-UUOAJ^%0?8ysommO73uhyO--tE)O>#dDF>ZQq#jN96IU@(IQ2tr@>Q?&;;ULp9EAk>Nx9`Kd5DH zj7>7WECX#;MV+WroJ|W;LcbZR5GSVdh~&DRZPRbN{_9A33xv=+A&CE0Eh~W!J;{M+ z0p$q@)X1OmgPX((!fh(EeLoK=BVAa-_SKZW+iPndp{{ofs3x#|U%7j}pz3@+6do2L z{!Td=;nxfGBwT0Im($ztk(B><$D__-r>3_;s+Dtm?R&F#@V3lxE`JNtc`iF_00y*` ziEE5)%dp!X0z76e8Fbx>E`VgU>L5sA_Z}NE1tQM_l4yVM95xZ#;fkYrvk9ACeQ6nc zfQ9%o?a-0?Z3~2wKE83?A=_%w)+Sj0Ai2rNpzIo{ipR ztHeEkGhx^25cFSp__skle979T1jeEw4Yv?PzWkav#Zbh+GtoM$=eH8%$^lk$TY;zm zlHKd)lMC)ak^1YEcEYaqJ@abzo5k;xG8sOk(T*=eNiNpN5qZHgP8eV^2AElPo5J65 zdYrRH*JwG-e$u?NEXkUj2iVPS0CAU6 zcWJUGl;|pOU)2~_zYrzo3twJqG(EtHB9ytNA>&$T#~L^{tImYAZYEXNPIW~DN&{eH zh?anW7J&ervF0nCu~HA99z??jCXY6bNJRD}IW_xFMlSC(G25u)*yw6hD5^>?x(F3cPn zoJts!7pd{^o8eH=RQy!WudW#u{Wzz+W-R9R<#gNfJp;diecrHf(6ir*MO0b z-uP@(!y4ZCeY-eF^h3%b)eA24S*EptxOG*b)QuI13AvC;-q+;bv!MZfvJ@x%elr*y|0fVV1v z41c+zAaTWrmvBHxT2Kz;0cl4ANIM$TS0GEj1@s<;zDu$z%Q7_s28#DCy9m@?FCbHO z|7HSakSzLG3gc2zX1gjpnRYCe8tgY7l%Ra(8J zmIExnQZ#@AhtdM}8>?~L1XM*JwV8=d>|L2S6e$XxfqfPS${V<+{90e?K^WWtC|*fr z`rmG00n^Os1&RXXw+6`H7XES0 zGlp!L{D5qi{rkd>Wz zmI+scjpiryWmQo~W-s`+a)~vlnVPNPz9&3~EWX+0UzNTpP2e(qZ3Pd3wkm$t2}*7F zgv19GZu2Y5NNLeu0t9dQnM{xuS4jyF{9D^jtxTldT6yDKPdSlx>V}ND2Pa_YTE|&>k1nkJ2dZ);oFC znoIZSnVQFyn4`JU5x<@%(D`+FCBEu!>hej<1RJ7=E-lk)-DQD&TjCRJ?Ag!}KUSF_*~wIt>ML zbj@6NTdS`dZN!^*n}zqMtfeVdQ?yAG}-{KC#JmwRpL=W zqn};-n1sw0uSm`PkgXeUAy=geRY7Ym^%&mD->Xdnb3BCD>`%)vw+{H3K+wcTIXb6g=CTyQ6%% zdrBuJW^6!TdujqcG^7Xlv8L!wVXCoLK-(SYgBpIA@i|0u&;xsKZEahcQdf6a^SvUMVAGb~jub}Zs5|NgV+>(=3gRnr!- z8dthKlZza5dV{Jd)0R>y3;Pz=l|VgT&?CFkmTmst5+nr~8J1usHG;axbU`90k-!BW z5I;2UQDq2)C8wzd?cOO33o-9ppJW!q)NJkuGT(>-#V>rGk@yo;$PZ;!??bL&HQ&EM zwHcd2${-*f;h8$n1#B}@|U;%w=&jha9OQ@ z38+sV;0Db;TmEqYigX6ip4j)FzOeQj#P3}d=T~Ff_m5r!TjcE5@hysfcgGVzVU`Q9 zD|z8}cf18o6@a$@eLO1wv&y%?9e?gpgPvVeJn@eU{}T7UfBA|h2p0s*DBK|c3__O^ zo}tz7AOr;=D6B*gAt?Mm1PXthb-nPd7eL4wgfvLV>jdOi$h-xKfH0K++(noh0j>AH zIyr>No-iF3>I*_p5C}a&P!KYORi#kK6ogD+r4Aqj1tBO1LE&3_gfM+rR)2+{AOr;= zC#4H2_At(qzK?n-}mq1~LU*QpT5d7wA==D;?vo#cno;}+H2hOGza;|Ln zx0kMzC9C0Uho}Yrq0_~E(_YBVci(EC(>M4MJcPx-7DMy@!>^#WU$db$(P{ZN1OEG) zYPH>=n!zh8HSzC<619biTqP^~hZdZfbz3ml3h?#!|NfA0DZ*X(hgS$4On6rQ4OayC z^M8n7MxQEzAZXo5!QTk@9&ChYCIseHruMIBCJdLt$p0_$y6PT65+kIR|AL5B_YksV oA>sd?P6)6EB*8cT9IlSfjt;^FByN^I1 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 I<%sY9AHX1er2qf` literal 12003 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 diff --git a/tests/src/end-to-end/textalignment/textAlignment.test.ts-snapshots/alignTextMultipleBlocks-firefox-linux.png b/tests/src/end-to-end/textalignment/textAlignment.test.ts-snapshots/alignTextMultipleBlocks-firefox-linux.png index 0f7c8914260808d5ed285cc084c362ee7ec29585..4907eb9eaf2c694aa18e458988f948f66d63920d 100644 GIT binary patch literal 28385 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 bFJ#fHGK1Ck;@+;Ilp(iUK_+VFiHrXO{naW0 diff --git a/tests/src/end-to-end/textalignment/textAlignment.test.ts-snapshots/alignTextSingleBlock-chromium-linux.png b/tests/src/end-to-end/textalignment/textAlignment.test.ts-snapshots/alignTextSingleBlock-chromium-linux.png index 6ff652febad1fbd1b80c5150b078ac40a8e2af77..c3acec922a960af078b4148bbb953ccb9c92b532 100644 GIT binary patch literal 12003 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

    u(Dj`n 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 diff --git a/tests/src/end-to-end/textalignment/textAlignment.test.ts-snapshots/alignTextSingleBlock-webkit-linux.png b/tests/src/end-to-end/textalignment/textAlignment.test.ts-snapshots/alignTextSingleBlock-webkit-linux.png index 1a4bb286ffdc612d37461cfa5348841a655930f0..76ad8d6bca70f6c54248b7cd1bce99b2800b6009 100644 GIT binary patch literal 37243 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 literal 37249 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 From c48abc8f7ea31462f3694e143b9d9a60c1708561 Mon Sep 17 00:00:00 2001 From: Matthew Lipski <50169049+matthewlipski@users.noreply.github.com> Date: Fri, 1 May 2026 11:56:56 +0200 Subject: [PATCH 39/76] feat: Code mark input rule edge case (BLO-938) (#2698) * Added edge case handling for code mark input rule * Explicitly added original input rule instead of inheriting --- packages/core/src/blocks/defaultBlocks.ts | 35 ++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/packages/core/src/blocks/defaultBlocks.ts b/packages/core/src/blocks/defaultBlocks.ts index 459b987f00..d2eeaa0aa3 100644 --- a/packages/core/src/blocks/defaultBlocks.ts +++ b/packages/core/src/blocks/defaultBlocks.ts @@ -1,3 +1,4 @@ +import { InputRule, markInputRule } from "@tiptap/core"; import Bold from "@tiptap/extension-bold"; import Code from "@tiptap/extension-code"; import Italic from "@tiptap/extension-italic"; @@ -136,7 +137,39 @@ export const defaultStyleSpecs = { italic: createStyleSpecFromTipTapMark(Italic, "boolean"), underline: createStyleSpecFromTipTapMark(Underline, "boolean"), strike: createStyleSpecFromTipTapMark(Strike, "boolean"), - code: createStyleSpecFromTipTapMark(Code, "boolean"), + code: createStyleSpecFromTipTapMark( + Code.extend({ + addInputRules() { + return [ + // Matches any string that starts with a backtick, ends with a + // backtick, and has any non-backtick characters in between. Copied + // from original input rule: + // https://github.com/ueberdosis/tiptap/blob/c27661c148cdbea9e1c80107e10d0a9d1775c4ec/packages/extension-code/src/code.ts#L116 + markInputRule({ + find: /(^|[^`])`([^`]+)`(?!`)$/, + type: this.type, + }), + // Extends the Code mark with an extra input rule that fires when a space is + // typed after the closing backtick. The default rule only fires when typing + // the closing backtick itself, so it misses the case where the user adds + // both backticks first, then writes content between them. + new InputRule({ + find: /(^|[^`])`([^`]+)`(?!`) $/, + handler: ({ state, range, match }) => { + const { tr, schema } = state; + const leadingChar = match[1]; + const content = match[2]; + tr.replaceWith(range.from + leadingChar.length, range.to, [ + schema.text(content, [this.type.create()]), + schema.text(" "), + ]); + }, + }), + ]; + }, + }), + "boolean", + ), textColor: TextColor, backgroundColor: BackgroundColor, } satisfies StyleSpecs; From f6717b38ef063f7524e49443b1061e1e7a915c5d Mon Sep 17 00:00:00 2001 From: Matthew Lipski <50169049+matthewlipski@users.noreply.github.com> Date: Fri, 1 May 2026 13:08:58 +0200 Subject: [PATCH 40/76] fix: Clicking comment overlapping link opens link (BLO-1091) (#2696) * Made first click of overlapping comment/link only show comment and added test * Refactored extensions to both be BlockNote extensions, use `runsBefore` instead of `priority` * Removed log * Implemented PR feedback * Updated AI test snapshot --- packages/core/src/comments/extension.ts | 41 ++++++++++++----- .../managers/ExtensionManager/extensions.ts | 17 ++++--- .../tiptap-extensions/Link/index.ts | 2 +- .../extensions/tiptap-extensions/Link/link.ts | 33 +++++++++++++- .../__snapshots__/agent.test.ts.snap | 4 +- .../src/end-to-end/comments/comments.test.ts | 45 +++++++++++++++++++ 6 files changed, 117 insertions(+), 25 deletions(-) diff --git a/packages/core/src/comments/extension.ts b/packages/core/src/comments/extension.ts index 515a740c34..8d23c3e967 100644 --- a/packages/core/src/comments/extension.ts +++ b/packages/core/src/comments/extension.ts @@ -158,6 +158,8 @@ export const CommentsExtension = createExtension( return { key: "comments", store, + runsBefore: ["link"], + tiptapExtensions: [CommentMark], prosemirrorPlugins: [ new Plugin({ key: PLUGIN_KEY, @@ -224,7 +226,7 @@ export const CommentsExtension = createExtension( }, handleClick: (view, pos, event) => { if (event.button !== 0) { - return; + return false; } const node = view.state.doc.nodeAt(pos); @@ -235,7 +237,7 @@ export const CommentsExtension = createExtension( ...prev, selectedThreadId: undefined, })); - return; + return false; } const commentMark = node.marks.find( @@ -243,15 +245,33 @@ export const CommentsExtension = createExtension( mark.type.name === markType && mark.attrs.orphan !== true, ); - const threadId = commentMark?.attrs.threadId as - | string - | undefined; - if (threadId !== store.state.selectedThreadId) { - store.setState((prev) => ({ - ...prev, - selectedThreadId: threadId, - })); + if (!commentMark) { + // Clicked outside any comment thread. Deselect if needed but + // don't consume the event so other handlers (e.g. link + // navigation) can process it. + if (store.state.selectedThreadId !== undefined) { + store.setState((prev) => ({ + ...prev, + selectedThreadId: undefined, + })); + } + return false; + } + + const threadId = commentMark.attrs.threadId as string; + + // If the clicked thread is already selected, do nothing and let + // other handlers process the event (e.g. navigating a link). + if (threadId === store.state.selectedThreadId) { + return false; } + + store.setState((prev) => ({ + ...prev, + selectedThreadId: threadId, + })); + + return true; }, }, }), @@ -356,7 +376,6 @@ export const CommentsExtension = createExtension( }, userStore, commentEditorSchema, - tiptapExtensions: [CommentMark], } as const; }, ); diff --git a/packages/core/src/editor/managers/ExtensionManager/extensions.ts b/packages/core/src/editor/managers/ExtensionManager/extensions.ts index 21d2d86f91..7be7070865 100644 --- a/packages/core/src/editor/managers/ExtensionManager/extensions.ts +++ b/packages/core/src/editor/managers/ExtensionManager/extensions.ts @@ -5,7 +5,7 @@ import { Extension as TiptapExtension, } from "@tiptap/core"; import { Gapcursor } from "@tiptap/extensions/gap-cursor"; -import { Link } from "../../../extensions/tiptap-extensions/Link/link.js"; +import { LinkExtension } from "../../../extensions/tiptap-extensions/Link/link.js"; import { Text } from "@tiptap/extension-text"; import { createDropFileExtension } from "../../../api/clipboard/fromClipboard/fileDropExtension.js"; import { createPasteFromClipboardExtension } from "../../../api/clipboard/fromClipboard/pasteExtension.js"; @@ -73,14 +73,6 @@ export function getDefaultTiptapExtensions( SuggestionAddMark, SuggestionDeleteMark, SuggestionModificationMark, - Link.configure({ - HTMLAttributes: options.links?.HTMLAttributes ?? {}, - editor, - onClick: options.links?.onClick, - ...(options.links?.isValidLink - ? { isValidLink: options.links.isValidLink } - : {}), - }), ...(Object.values(editor.schema.styleSpecs).map((styleSpec) => { return styleSpec.implementation.mark.configure({ editor: editor, @@ -169,6 +161,13 @@ export function getDefaultExtensions( DropCursorExtension(options), FilePanelExtension(options), FormattingToolbarExtension(options), + LinkExtension({ + HTMLAttributes: options.links?.HTMLAttributes ?? {}, + onClick: options.links?.onClick, + ...(options.links?.isValidLink + ? { isValidLink: options.links.isValidLink } + : {}), + }), LinkToolbarExtension(options), NodeSelectionKeyboardExtension(), PlaceholderExtension(options), diff --git a/packages/core/src/extensions/tiptap-extensions/Link/index.ts b/packages/core/src/extensions/tiptap-extensions/Link/index.ts index 5324cbbe38..bc54c007eb 100644 --- a/packages/core/src/extensions/tiptap-extensions/Link/index.ts +++ b/packages/core/src/extensions/tiptap-extensions/Link/index.ts @@ -1,2 +1,2 @@ -export { Link } from "./link.js"; +export { Link, LinkExtension } from "./link.js"; export { isAllowedUri } from "./link.js"; diff --git a/packages/core/src/extensions/tiptap-extensions/Link/link.ts b/packages/core/src/extensions/tiptap-extensions/Link/link.ts index 5f68082b9f..1769dfa544 100644 --- a/packages/core/src/extensions/tiptap-extensions/Link/link.ts +++ b/packages/core/src/extensions/tiptap-extensions/Link/link.ts @@ -2,6 +2,7 @@ import type { PasteRuleMatch } from "@tiptap/core"; import { Mark, markPasteRule, mergeAttributes } from "@tiptap/core"; import type { Plugin } from "@tiptap/pm/state"; import type { BlockNoteEditor } from "../../../editor/BlockNoteEditor.js"; +import { createExtension } from "../../../editor/BlockNoteExtension.js"; import { autolink } from "./helpers/autolink.js"; import { findLinks } from "./helpers/linkDetector.js"; import { clickHandler } from "./helpers/clickHandler.js"; @@ -67,8 +68,6 @@ export type LinkOptions = { export const Link = Mark.create({ name: "link", - priority: 1000, - keepOnSplit: false, exitable: true, @@ -207,3 +206,33 @@ export const Link = Mark.create({ return plugins; }, }); + +type LinkExtensionOptions = { + HTMLAttributes?: Record; + onClick?: ( + event: MouseEvent, + editor: BlockNoteEditor, + ) => boolean | void; + isValidLink?: (href: string) => boolean; +}; + +/** + * BlockNote extension wrapping the {@link Link} TipTap mark. Wrapping the mark + * lets other extensions order their click handlers relative to the link click + * handler via `runsBefore: ["link"]`. + */ +export const LinkExtension = createExtension( + ({ editor, options }) => { + return { + key: "link", + tiptapExtensions: [ + Link.configure({ + HTMLAttributes: options.HTMLAttributes ?? {}, + editor, + onClick: options.onClick, + ...(options.isValidLink ? { isValidLink: options.isValidLink } : {}), + }), + ], + } as const; + }, +); diff --git a/packages/xl-ai/src/prosemirror/__snapshots__/agent.test.ts.snap b/packages/xl-ai/src/prosemirror/__snapshots__/agent.test.ts.snap index 602022d35a..54ccfe8769 100644 --- a/packages/xl-ai/src/prosemirror/__snapshots__/agent.test.ts.snap +++ b/packages/xl-ai/src/prosemirror/__snapshots__/agent.test.ts.snap @@ -12,7 +12,7 @@ exports[`agentStepToTr > Update > drop mark and link 1`] = ` "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}},{"type":"deletion","attrs":{"id":null}}],"text":"Link."},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold text. "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}},{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Link."}]}]}]}]}", ] `; @@ -31,7 +31,7 @@ exports[`agentStepToTr > Update > drop mark and link and change text within mark "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", "S {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."}]}]}]}]}", - "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://www.google.com"}},{"type":"deletion","attrs":{"id":null}}],"text":"Link."},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Link."}]}]}]}]}", + "R {"type":"doc","content":[{"type":"blockGroup","content":[{"type":"blockContainer","attrs":{"id":"ref1"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, world!"}]}]},{"type":"blockContainer","attrs":{"id":"ref2"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","text":"Hello, "},{"type":"mention","attrs":{"user":"John Doe"}},{"type":"text","text":"! "},{"type":"text","marks":[{"type":"bold"}],"text":"How are you doing?"},{"type":"text","text":" "},{"type":"text","marks":[{"type":"textColor","attrs":{"stringValue":"blue"}}],"text":"This text is blue!"}]}]},{"type":"blockContainer","attrs":{"id":"ref3"},"content":[{"type":"paragraph","attrs":{"backgroundColor":"default","textColor":"default","textAlignment":"left"},"content":[{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}}],"text":"Hello"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Hi"},{"type":"text","text":", world! "},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":"Bold"},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Bold the"},{"type":"text","marks":[{"type":"bold"},{"type":"deletion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":" text. "},{"type":"text","marks":[{"type":"deletion","attrs":{"id":null}},{"type":"link","attrs":{"href":"https://www.google.com"}}],"text":"Link."},{"type":"text","marks":[{"type":"insertion","attrs":{"id":null}}],"text":"Link."}]}]}]}]}", ] `; diff --git a/tests/src/end-to-end/comments/comments.test.ts b/tests/src/end-to-end/comments/comments.test.ts index db29498359..198a8e1ced 100644 --- a/tests/src/end-to-end/comments/comments.test.ts +++ b/tests/src/end-to-end/comments/comments.test.ts @@ -32,4 +32,49 @@ test.describe("Check Comments functionality", () => { await expect(await page.locator("span.bn-thread-mark")).toBeVisible(); }); + + test("Should select thread on first click and open link on second click", async ({ + browserName, + page, + }) => { + test.skip( + browserName === "webkit", + "WebKit causes absurd failures running in Docker which aren't reproducible anywhere else.", + ); + + await focusOnEditor(page); + + await page.keyboard.type("hello"); + await page.locator("text=hello").dblclick(); + + await page.click('[data-test="addcomment"]'); + await page.waitForSelector(".bn-thread"); + + await page.keyboard.type("test comment"); + await page.click('button[data-test="save"]'); + + await page.locator("span.bn-thread-mark").first().dblclick(); + + await expect(page.locator(LINK_BUTTON_SELECTOR)).toBeVisible(); + await page.click(LINK_BUTTON_SELECTOR); + + await page.keyboard.type("https://example.com"); + await page.keyboard.press("Enter"); + + await page.keyboard.press("ArrowDown"); + await page.waitForTimeout(500); + await expect(page.locator(".bn-thread-mark-selected")).toHaveCount(0); + + const link = page.locator('a[data-inline-content-type="link"]').first(); + + // First click selects the thread without navigating. + await link.click(); + await page.waitForTimeout(500); + await expect(page.locator(".bn-thread-mark-selected")).toBeVisible(); + + // Second click on the now-selected thread navigates to the link target. + const popupPromise = page.waitForEvent("popup"); + await link.click(); + await popupPromise; + }); }); From 73f482767a96564ba41e41d6441eec60888636ab Mon Sep 17 00:00:00 2001 From: jt_fox Date: Mon, 4 May 2026 21:45:54 +0900 Subject: [PATCH 41/76] fix: prevent table row drag from moving an extra adjacent row (#2703) --- .../extensions/TableHandles/TableHandles.ts | 2 + tests/src/end-to-end/tables/tables.test.ts | 119 +++++++++++++++++- 2 files changed, 120 insertions(+), 1 deletion(-) diff --git a/packages/core/src/extensions/TableHandles/TableHandles.ts b/packages/core/src/extensions/TableHandles/TableHandles.ts index 7f3cf774b5..d957056f4e 100644 --- a/packages/core/src/extensions/TableHandles/TableHandles.ts +++ b/packages/core/src/extensions/TableHandles/TableHandles.ts @@ -466,6 +466,8 @@ export class TableHandlesView implements PluginView { event.preventDefault(); const { draggingState, colIndex, rowIndex } = this.state; + // Clear so a re-dispatched drop short-circuits above (issue #2691). + this.state.draggingState = undefined; const columnWidths = this.state.block.content.columnWidths; diff --git a/tests/src/end-to-end/tables/tables.test.ts b/tests/src/end-to-end/tables/tables.test.ts index 2abfc08c30..caed60b14a 100644 --- a/tests/src/end-to-end/tables/tables.test.ts +++ b/tests/src/end-to-end/tables/tables.test.ts @@ -1,5 +1,6 @@ +import { expect } from "@playwright/test"; import { test } from "../../setup/setupScript.js"; -import { BASE_URL } from "../../utils/const.js"; +import { BASE_URL, TABLE_SELECTOR } from "../../utils/const.js"; import { compareDocToSnapshot, focusOnEditor } from "../../utils/editor.js"; import { executeSlashCommand } from "../../utils/slashmenu.js"; @@ -67,4 +68,120 @@ test.describe("Check Table interactions", () => { await compareDocToSnapshot(page, "shiftEnterNewLineInCell.json"); }); + // Regression test for https://github.com/TypeCellOS/BlockNote/issues/2691. + // Drops the dragged row to the LEFT of `.bn-block-group` (where the side + // menu sits). SideMenuView re-dispatches drops outside `.bn-block-group` + // (within 250px) as synthetic events; without the guard in + // TableHandles.dropHandler, the synthetic drop AND the original drop both + // run the row-move logic, dragging an adjacent row along with the target. + test("Row drag should move only the dragged row", async ({ + page, + browserName, + }) => { + test.skip( + browserName === "firefox", + "Playwright doesn't correctly simulate drag events in Firefox.", + ); + + await focusOnEditor(page); + await executeSlashCommand(page, "table"); + + // Replace the default table with a deterministic 5-row × 1-col table. + await page.evaluate(() => { + const cellAttrs = { + textColor: "default", + backgroundColor: "default", + textAlignment: "left", + colspan: 1, + rowspan: 1, + colwidth: null, + }; + const rows = ["R1", "R2", "R3", "R4", "R5"].map((label) => ({ + type: "tableRow", + content: [ + { + type: "tableCell", + attrs: cellAttrs, + content: [ + { + type: "tableParagraph", + content: [{ type: "text", text: label }], + }, + ], + }, + ], + })); + ( + window as unknown as { + ProseMirror: { + commands: { setContent: (doc: unknown) => void }; + }; + } + ).ProseMirror.commands.setContent({ + type: "doc", + content: [ + { + type: "blockGroup", + content: [ + { + type: "blockContainer", + attrs: { id: "0" }, + content: [ + { + type: "table", + attrs: { textColor: "default" }, + content: rows, + }, + ], + }, + ], + }, + ], + }); + }); + await page.waitForFunction( + () => document.querySelectorAll(".bn-editor tbody tr").length === 5, + ); + + // Hover R2's first cell so its row drag handle becomes visible. The + // row handle has no rotate transform (the column handle does). + const rows = page.locator(`${TABLE_SELECTOR} tbody tr`); + await rows.nth(1).locator("td").first().hover(); + const handle = page + .locator(".bn-table-handle") + .filter({ hasNot: page.locator(`[style*="rotate"]`) }) + .first(); + await handle.waitFor({ state: "visible" }); + const handleBox = (await handle.boundingBox())!; + + // Drop into the side-menu area: LEFT of `.bn-block-group`, vertically + // aligned with the last row. This is outside the block-group rect but + // well within the 250px range that triggers SideMenuView's synthetic + // drop re-dispatch — the same condition that surfaces the bug for + // real users dragging onto the side gutter. + const blockGroup = (await page + .locator(".bn-block-group") + .first() + .boundingBox())!; + const lastRowBox = (await rows.nth(4).locator("td").first().boundingBox())!; + const dropX = blockGroup.x - 50; + const dropY = lastRowBox.y + lastRowBox.height / 2; + + await page.mouse.move( + handleBox.x + handleBox.width / 2, + handleBox.y + handleBox.height / 2, + { steps: 5 }, + ); + await page.mouse.down(); + await page.mouse.move(dropX, dropY, { steps: 10 }); + await page.mouse.up(); + + const order = ( + await page + .locator(`${TABLE_SELECTOR} tbody tr td:first-child`) + .allInnerTexts() + ).map((t) => t.trim()); + // Expected: only R2 moved. Buggy (#2691): R3 follows along. + expect(order).toEqual(["R1", "R3", "R4", "R5", "R2"]); + }); }); From be9b1424ff39bf159158e4a1653ed3b7c217c6fb Mon Sep 17 00:00:00 2001 From: Matthew Lipski <50169049+matthewlipski@users.noreply.github.com> Date: Mon, 4 May 2026 16:45:34 +0200 Subject: [PATCH 42/76] docs: Slash menu item grouping & ordering (BLO-1009) (#2700) * Added docs for grouping & ordering slash menu items * Added example * Updated lock file --- .../react/components/suggestion-menus.mdx | 64 +++++++++++++++++++ .../.bnexample.json | 12 ++++ .../README.md | 11 ++++ .../index.html | 14 ++++ .../main.tsx | 11 ++++ .../package.json | 31 +++++++++ .../src/App.tsx | 63 ++++++++++++++++++ .../tsconfig.json | 36 +++++++++++ .../vite.config.ts | 32 ++++++++++ playground/src/examples.gen.tsx | 23 +++++++ pnpm-lock.yaml | 62 +++++++++++++++--- 11 files changed, 351 insertions(+), 8 deletions(-) create mode 100644 examples/03-ui-components/19-suggestion-menus-grouping-ordering/.bnexample.json create mode 100644 examples/03-ui-components/19-suggestion-menus-grouping-ordering/README.md create mode 100644 examples/03-ui-components/19-suggestion-menus-grouping-ordering/index.html create mode 100644 examples/03-ui-components/19-suggestion-menus-grouping-ordering/main.tsx create mode 100644 examples/03-ui-components/19-suggestion-menus-grouping-ordering/package.json create mode 100644 examples/03-ui-components/19-suggestion-menus-grouping-ordering/src/App.tsx create mode 100644 examples/03-ui-components/19-suggestion-menus-grouping-ordering/tsconfig.json create mode 100644 examples/03-ui-components/19-suggestion-menus-grouping-ordering/vite.config.ts diff --git a/docs/content/docs/react/components/suggestion-menus.mdx b/docs/content/docs/react/components/suggestion-menus.mdx index db9b8421a6..c44f18af45 100644 --- a/docs/content/docs/react/components/suggestion-menus.mdx +++ b/docs/content/docs/react/components/suggestion-menus.mdx @@ -58,6 +58,70 @@ Passing `slashMenu={false}` to `BlockNoteView` tells BlockNote not to show the d `getItems` should return the items that need to be shown in the Slash Menu, based on a `query` entered by the user (anything the user types after the `triggerCharacter`). In this case, we simply append the "Hello World" item to the default Slash Menu items, and use `filterSuggestionItems` to filter the full list of items based on the user query. +### Item Grouping & Ordering + +Slash Menu items are rendered in the same order as the items returned from `getItems`. Adjacent items which share the same `group` attribute are rendered together in the same group under a single label. + +#### Ordering + +Items appear in the menu in the exact order of the array. Reordering the array reorders the menu: + +```typescript +getItems={async (query) => + filterSuggestionItems( + [ + insertHelloWorldItem(editor), // Shown first + ...getDefaultReactSlashMenuItems(editor), // Shown after + ], + query, + ) +} +``` + +#### Grouping + +Items with the same `group` attribute must be **adjacent** in the array to be rendered as one group. If items with the same `group` are separated by items with a different `group`, they will be rendered as two separate groups, each with their own label: + +```typescript +// Renders as a single "Basic" group: +[ + { title: "Item A", group: "Basic", /* ... */ }, + { title: "Item B", group: "Basic", /* ... */ }, + { title: "Item C", group: "Other", /* ... */ }, +] + +// Renders as two separate "Basic" groups, with "Other" between them: +[ + { title: "Item A", group: "Basic", /* ... */ }, + { title: "Item C", group: "Other", /* ... */ }, + { title: "Item B", group: "Basic", /* ... */ }, +] +``` + +#### Finding, Inserting, Removing & Reordering Items + +Use regular array operations to manipulate items. For example, to insert a custom item directly after the default `Heading 1` item: + +```typescript +const items = getDefaultReactSlashMenuItems(editor); +const headingIndex = items.findIndex((item) => item.title === "Heading 1"); +items.splice(headingIndex + 1, 0, insertHelloWorldItem(editor)); +``` + +To remove an item: + +```typescript +const items = getDefaultReactSlashMenuItems(editor).filter( + (item) => item.title !== "Heading 1", +); +``` + +To reorder items, sort or rearrange the array however you'd like before returning it from `getItems`. + +The demo below combines these techniques to render only the "Basic blocks" and "Headings" groups, with their order swapped: + + + ### Replacing the Slash Menu Component You can replace the React component used for the Slash Menu with your own, as you can see in the demo below. diff --git a/examples/03-ui-components/19-suggestion-menus-grouping-ordering/.bnexample.json b/examples/03-ui-components/19-suggestion-menus-grouping-ordering/.bnexample.json new file mode 100644 index 0000000000..8aa4573b06 --- /dev/null +++ b/examples/03-ui-components/19-suggestion-menus-grouping-ordering/.bnexample.json @@ -0,0 +1,12 @@ +{ + "playground": true, + "docs": true, + "author": "matthewlipski", + "tags": [ + "Intermediate", + "Blocks", + "UI Components", + "Suggestion Menus", + "Slash Menu" + ] +} diff --git a/examples/03-ui-components/19-suggestion-menus-grouping-ordering/README.md b/examples/03-ui-components/19-suggestion-menus-grouping-ordering/README.md new file mode 100644 index 0000000000..76f3061571 --- /dev/null +++ b/examples/03-ui-components/19-suggestion-menus-grouping-ordering/README.md @@ -0,0 +1,11 @@ +# Slash Menu Grouping & Ordering + +In this example, we filter and reorder the default Slash Menu items so that only the "Basic blocks" and "Headings" groups are shown, with "Basic blocks" appearing first. + +**Try it out:** Press the "/" key to open the Slash Menu and see the reordered groups! + +**Relevant Docs:** + +- [Item Grouping & Ordering](/docs/react/components/suggestion-menus) +- [Changing Slash Menu Items](/docs/react/components/suggestion-menus) +- [Editor Setup](/docs/getting-started/editor-setup) diff --git a/examples/03-ui-components/19-suggestion-menus-grouping-ordering/index.html b/examples/03-ui-components/19-suggestion-menus-grouping-ordering/index.html new file mode 100644 index 0000000000..405a9fc360 --- /dev/null +++ b/examples/03-ui-components/19-suggestion-menus-grouping-ordering/index.html @@ -0,0 +1,14 @@ + + + + + Slash Menu Grouping & Ordering + + + +
    + + + diff --git a/examples/03-ui-components/19-suggestion-menus-grouping-ordering/main.tsx b/examples/03-ui-components/19-suggestion-menus-grouping-ordering/main.tsx new file mode 100644 index 0000000000..677c7f7eed --- /dev/null +++ b/examples/03-ui-components/19-suggestion-menus-grouping-ordering/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/19-suggestion-menus-grouping-ordering/package.json b/examples/03-ui-components/19-suggestion-menus-grouping-ordering/package.json new file mode 100644 index 0000000000..1b60d694c5 --- /dev/null +++ b/examples/03-ui-components/19-suggestion-menus-grouping-ordering/package.json @@ -0,0 +1,31 @@ +{ + "name": "@blocknote/example-ui-components-suggestion-menus-grouping-ordering", + "description": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY", + "type": "module", + "private": true, + "version": "0.12.4", + "scripts": { + "start": "vite", + "dev": "vite", + "build:prod": "tsc && vite build", + "preview": "vite preview" + }, + "dependencies": { + "@blocknote/ariakit": "latest", + "@blocknote/core": "latest", + "@blocknote/mantine": "latest", + "@blocknote/react": "latest", + "@blocknote/shadcn": "latest", + "@mantine/core": "^8.3.11", + "@mantine/hooks": "^8.3.11", + "@mantine/utils": "^6.0.22", + "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": "^8.0.8" + } +} \ No newline at end of file diff --git a/examples/03-ui-components/19-suggestion-menus-grouping-ordering/src/App.tsx b/examples/03-ui-components/19-suggestion-menus-grouping-ordering/src/App.tsx new file mode 100644 index 0000000000..80d5e59225 --- /dev/null +++ b/examples/03-ui-components/19-suggestion-menus-grouping-ordering/src/App.tsx @@ -0,0 +1,63 @@ +import { BlockNoteEditor } from "@blocknote/core"; +import { filterSuggestionItems } from "@blocknote/core/extensions"; +import "@blocknote/core/fonts/inter.css"; +import { BlockNoteView } from "@blocknote/mantine"; +import "@blocknote/mantine/style.css"; +import { + DefaultReactSuggestionItem, + getDefaultReactSlashMenuItems, + SuggestionMenuController, + useCreateBlockNote, +} from "@blocknote/react"; + +// Returns the default Slash Menu items, keeping only the "Basic blocks" and +// "Headings" groups, with "Basic blocks" listed before "Headings". +const getCustomSlashMenuItems = ( + editor: BlockNoteEditor, +): DefaultReactSuggestionItem[] => { + const defaultItems = getDefaultReactSlashMenuItems(editor); + + const basicBlocks = defaultItems.filter( + (item) => item.group === "Basic blocks", + ); + const headings = defaultItems.filter((item) => item.group === "Headings"); + + return [...basicBlocks, ...headings]; +}; + +export default function App() { + // Creates a new editor instance. + const editor = useCreateBlockNote({ + initialContent: [ + { + type: "paragraph", + content: "Welcome to this demo!", + }, + { + type: "paragraph", + content: "Press the '/' key to open the Slash Menu", + }, + { + type: "paragraph", + content: + "Notice that only 'Basic blocks' and 'Headings' are shown, in that order", + }, + { + type: "paragraph", + }, + ], + }); + + // Renders the editor instance. + return ( + + + filterSuggestionItems(getCustomSlashMenuItems(editor), query) + } + /> + + ); +} diff --git a/examples/03-ui-components/19-suggestion-menus-grouping-ordering/tsconfig.json b/examples/03-ui-components/19-suggestion-menus-grouping-ordering/tsconfig.json new file mode 100644 index 0000000000..dbe3e6f62d --- /dev/null +++ b/examples/03-ui-components/19-suggestion-menus-grouping-ordering/tsconfig.json @@ -0,0 +1,36 @@ +{ + "__comment": "AUTO-GENERATED FILE, DO NOT EDIT DIRECTLY", + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "lib": [ + "DOM", + "DOM.Iterable", + "ESNext" + ], + "allowJs": false, + "skipLibCheck": true, + "esModuleInterop": false, + "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/" + } + ] +} \ No newline at end of file diff --git a/examples/03-ui-components/19-suggestion-menus-grouping-ordering/vite.config.ts b/examples/03-ui-components/19-suggestion-menus-grouping-ordering/vite.config.ts new file mode 100644 index 0000000000..f62ab20bc2 --- /dev/null +++ b/examples/03-ui-components/19-suggestion-menus-grouping-ordering/vite.config.ts @@ -0,0 +1,32 @@ +// 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"; +// import eslintPlugin from "vite-plugin-eslint"; +// https://vitejs.dev/config/ +export default defineConfig((conf) => ({ + 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), + }, +})); diff --git a/playground/src/examples.gen.tsx b/playground/src/examples.gen.tsx index ae117ce392..ccfc674ac5 100644 --- a/playground/src/examples.gen.tsx +++ b/playground/src/examples.gen.tsx @@ -851,6 +851,29 @@ "slug": "ui-components" }, "readme": "This example demonstrates how to use the `DRAG_EXCLUSION_CLASSNAME` to create separate drag & drop areas that don't interfere with BlockNote's built-in block drag & drop functionality.\n\n## Features\n\n- **Drag Exclusion**: Elements with the `bn-drag-exclude` classname are treated as separate drag & drop operations\n- **Independent Drag Areas**: Create custom drag & drop functionality alongside BlockNote's editor\n- **No Interference**: Custom drag operations won't trigger BlockNote's block reordering\n- **Side-by-side Demo**: Shows the editor and custom drag area working independently\n\n## How It Works\n\nBy adding the `DRAG_EXCLUSION_CLASSNAME` (`bn-drag-exclude`) to an element, you tell BlockNote's drag & drop handlers to ignore all drag events within that element and its children. This allows you to implement your own custom drag & drop logic without conflicts.\n\nThe exclusion check works by traversing up the DOM tree from the drag event target, checking if any ancestor has the exclusion classname. If found, BlockNote's handlers return early, leaving your custom handlers in full control.\n\n## Code Highlights\n\n### Import the constant:\n\n```tsx\nimport { DRAG_EXCLUSION_CLASSNAME } from \"@blocknote/core\";\n```\n\n### Apply it to your custom drag area:\n\n```tsx\n
    \n {/* Your custom drag & drop UI */}\n
    \n Custom draggable items\n
    \n
    \n```\n\n## Use Cases\n\n- **Custom UI elements**: Add draggable components within or near the editor\n- **File upload areas**: Create drag-and-drop file upload zones\n- **Sortable lists**: Implement custom sortable lists alongside the editor\n- **External integrations**: Integrate with third-party drag & drop libraries\n\n**Relevant Docs:**\n\n- [Side Menu (Drag Handle)](/docs/react/components/side-menu)\n- [Editor Setup](/docs/getting-started/editor-setup)" + }, + { + "projectSlug": "suggestion-menus-grouping-ordering", + "fullSlug": "ui-components/suggestion-menus-grouping-ordering", + "pathFromRoot": "examples/03-ui-components/19-suggestion-menus-grouping-ordering", + "config": { + "playground": true, + "docs": true, + "author": "matthewlipski", + "tags": [ + "Intermediate", + "Blocks", + "UI Components", + "Suggestion Menus", + "Slash Menu" + ] + }, + "title": "Slash Menu Grouping & Ordering", + "group": { + "pathFromRoot": "examples/03-ui-components", + "slug": "ui-components" + }, + "readme": "In this example, we filter and reorder the default Slash Menu items so that only the \"Basic blocks\" and \"Headings\" groups are shown, with \"Basic blocks\" appearing first.\n\n**Try it out:** Press the \"/\" key to open the Slash Menu and see the reordered groups!\n\n**Relevant Docs:**\n\n- [Item Grouping & Ordering](/docs/react/components/suggestion-menus)\n- [Changing Slash Menu Items](/docs/react/components/suggestion-menus)\n- [Editor Setup](/docs/getting-started/editor-setup)" } ] }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 966cf9e887..5053fe78f3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2231,6 +2231,52 @@ importers: specifier: ^8.0.8 version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) + examples/03-ui-components/19-suggestion-menus-grouping-ordering: + 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: ^8.3.11 + version: 8.3.18(@mantine/hooks@8.3.18(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: ^8.3.11 + version: 8.3.18(react@19.2.5) + '@mantine/utils': + specifier: ^6.0.22 + version: 6.0.22(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.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3)) + vite: + specifier: ^8.0.8 + version: 8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3) + examples/04-theming/01-theming-dom-attributes: dependencies: '@blocknote/ariakit': @@ -24078,8 +24124,8 @@ snapshots: '@next/eslint-plugin-next': 16.2.2 eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-react: 7.37.5(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-react-hooks: 7.0.1(eslint@9.39.4(jiti@2.6.1)) @@ -24128,7 +24174,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 @@ -24139,7 +24185,7 @@ snapshots: tinyglobby: 0.2.16 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -24153,14 +24199,14 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -24201,7 +24247,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -24212,7 +24258,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 From bd802f6febda26e3eb3c83d94e4f87a3e619f93f Mon Sep 17 00:00:00 2001 From: Nick Perez Date: Mon, 4 May 2026 16:47:20 +0200 Subject: [PATCH 43/76] feat(mantine): upgrade @mantine/core and @mantine/hooks to v9.0.2 (#2655) Co-authored-by: Matthew Lipski --- docs/package.json | 5 +- examples/01-basic/01-minimal/package.json | 5 +- .../01-basic/02-block-objects/package.json | 5 +- .../01-basic/03-multi-column/package.json | 5 +- .../01-basic/04-default-blocks/package.json | 5 +- .../05-removing-default-blocks/package.json | 5 +- .../06-block-manipulation/package.json | 5 +- .../01-basic/07-selection-blocks/package.json | 5 +- examples/01-basic/08-ariakit/package.json | 5 +- examples/01-basic/09-shadcn/package.json | 5 +- .../01-basic/10-localization/package.json | 5 +- .../11-custom-placeholder/package.json | 5 +- .../01-basic/12-multi-editor/package.json | 5 +- .../13-custom-paste-handler/package.json | 5 +- .../14-editor-scrollable/package.json | 5 +- examples/01-basic/15-shadowdom/package.json | 5 +- .../01-basic/16-read-only-editor/package.json | 5 +- examples/01-basic/testing/package.json | 5 +- .../02-backend/01-file-uploading/package.json | 5 +- .../02-backend/02-saving-loading/package.json | 5 +- examples/02-backend/03-s3/package.json | 5 +- .../package.json | 5 +- .../01-ui-elements-remove/package.json | 5 +- .../package.json | 5 +- .../.bnexample.json | 2 +- .../package.json | 5 +- .../04-side-menu-buttons/package.json | 5 +- .../package.json | 5 +- .../package.json | 5 +- .../package.json | 5 +- .../package.json | 5 +- .../package.json | 5 +- .../package.json | 5 +- .../11-uppy-file-panel/package.json | 5 +- .../12-static-formatting-toolbar/package.json | 5 +- .../13-custom-ui/package.json | 5 +- .../package.json | 5 +- .../15-advanced-tables/package.json | 5 +- .../16-link-toolbar-buttons/package.json | 5 +- .../17-advanced-tables-2/package.json | 5 +- .../18-drag-n-drop/package.json | 5 +- .../01-theming-dom-attributes/package.json | 5 +- .../04-theming/02-changing-font/package.json | 5 +- .../04-theming/03-theming-css/package.json | 5 +- .../04-theming-css-variables/package.json | 5 +- .../package.json | 5 +- .../04-theming/06-code-block/package.json | 5 +- .../07-custom-code-block/package.json | 5 +- .../01-converting-blocks-to-html/package.json | 5 +- .../package.json | 5 +- .../03-converting-blocks-to-md/package.json | 5 +- .../04-converting-blocks-from-md/package.json | 5 +- .../05-converting-blocks-to-pdf/package.json | 5 +- .../06-converting-blocks-to-docx/package.json | 5 +- .../07-converting-blocks-to-odt/package.json | 5 +- .../package.json | 5 +- .../package.json | 5 +- .../10-static-html-render/package.json | 5 +- .../01-alert-block/.bnexample.json | 2 +- .../01-alert-block/package.json | 5 +- .../02-suggestion-menus-mentions/package.json | 5 +- .../03-font-style/package.json | 5 +- .../04-pdf-file-block/.bnexample.json | 2 +- .../04-pdf-file-block/package.json | 5 +- .../05-alert-block-full-ux/.bnexample.json | 2 +- .../05-alert-block-full-ux/package.json | 5 +- .../06-toggleable-blocks/package.json | 5 +- .../07-configuring-blocks/package.json | 5 +- .../draggable-inline-content/package.json | 5 +- .../react-custom-blocks/package.json | 5 +- .../react-custom-inline-content/package.json | 5 +- .../react-custom-styles/package.json | 5 +- .../07-collaboration/01-partykit/package.json | 5 +- .../02-liveblocks/package.json | 5 +- .../07-collaboration/03-y-sweet/package.json | 5 +- .../04-electric-sql/package.json | 5 +- .../05-comments/.bnexample.json | 2 +- .../07-collaboration/05-comments/package.json | 5 +- .../06-comments-with-sidebar/.bnexample.json | 2 +- .../06-comments-with-sidebar/package.json | 5 +- .../07-ghost-writer/package.json | 5 +- .../07-collaboration/08-forking/package.json | 5 +- .../09-comments-testing/package.json | 5 +- .../01-tiptap-arrow-conversion/package.json | 5 +- examples/09-ai/01-minimal/.bnexample.json | 2 +- examples/09-ai/01-minimal/package.json | 5 +- examples/09-ai/02-playground/.bnexample.json | 2 +- examples/09-ai/02-playground/package.json | 5 +- .../03-custom-ai-menu-items/.bnexample.json | 2 +- .../03-custom-ai-menu-items/package.json | 5 +- .../04-with-collaboration/.bnexample.json | 2 +- .../09-ai/04-with-collaboration/package.json | 5 +- .../09-ai/05-manual-execution/.bnexample.json | 2 +- .../09-ai/05-manual-execution/package.json | 5 +- .../06-client-side-transport/.bnexample.json | 2 +- .../06-client-side-transport/package.json | 5 +- .../07-server-persistence/.bnexample.json | 2 +- .../09-ai/07-server-persistence/package.json | 5 +- .../react-vanilla-custom-blocks/package.json | 5 +- .../package.json | 5 +- .../react-vanilla-custom-styles/package.json | 5 +- .../template-react/package.json.template.tsx | 5 +- packages/mantine/package.json | 5 +- .../suggestionMenu/SuggestionMenuLoader.tsx | 4 +- .../GridSuggestionMenuLoader.tsx | 9 +- playground/package.json | 5 +- playground/src/examples.gen.tsx | 26 +- pnpm-lock.yaml | 1027 +++++++---------- tests/nextjs-test-app/package.json | 4 +- tests/nextjs-test-app/setup.sh | 4 +- 110 files changed, 611 insertions(+), 944 deletions(-) diff --git a/docs/package.json b/docs/package.json index bcd31a57ea..5c936710a8 100644 --- a/docs/package.json +++ b/docs/package.json @@ -39,9 +39,8 @@ "@liveblocks/react-blocknote": "^3.17.0", "@liveblocks/react-tiptap": "^3.17.0", "@liveblocks/react-ui": "^3.17.0", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "@marsidev/react-turnstile": "^1.4.2", "@mui/icons-material": "^5.16.1", "@mui/material": "^5.16.1", diff --git a/examples/01-basic/01-minimal/package.json b/examples/01-basic/01-minimal/package.json index a4654f1055..26f63572f5 100644 --- a/examples/01-basic/01-minimal/package.json +++ b/examples/01-basic/01-minimal/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/01-basic/02-block-objects/package.json b/examples/01-basic/02-block-objects/package.json index 511eabc477..908df7ca16 100644 --- a/examples/01-basic/02-block-objects/package.json +++ b/examples/01-basic/02-block-objects/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/01-basic/03-multi-column/package.json b/examples/01-basic/03-multi-column/package.json index 590b6adc07..2ce018ce9c 100644 --- a/examples/01-basic/03-multi-column/package.json +++ b/examples/01-basic/03-multi-column/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "@blocknote/xl-multi-column": "latest" diff --git a/examples/01-basic/04-default-blocks/package.json b/examples/01-basic/04-default-blocks/package.json index 6a9647e3b3..8546777d34 100644 --- a/examples/01-basic/04-default-blocks/package.json +++ b/examples/01-basic/04-default-blocks/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/01-basic/05-removing-default-blocks/package.json b/examples/01-basic/05-removing-default-blocks/package.json index da2fcfb430..72c8e366f4 100644 --- a/examples/01-basic/05-removing-default-blocks/package.json +++ b/examples/01-basic/05-removing-default-blocks/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/01-basic/06-block-manipulation/package.json b/examples/01-basic/06-block-manipulation/package.json index ed320860bf..9f4c9b0764 100644 --- a/examples/01-basic/06-block-manipulation/package.json +++ b/examples/01-basic/06-block-manipulation/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/01-basic/07-selection-blocks/package.json b/examples/01-basic/07-selection-blocks/package.json index 1a14f12c53..13106a8e6d 100644 --- a/examples/01-basic/07-selection-blocks/package.json +++ b/examples/01-basic/07-selection-blocks/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/01-basic/08-ariakit/package.json b/examples/01-basic/08-ariakit/package.json index 97458bab4e..2e9ff90086 100644 --- a/examples/01-basic/08-ariakit/package.json +++ b/examples/01-basic/08-ariakit/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/01-basic/09-shadcn/package.json b/examples/01-basic/09-shadcn/package.json index 6a9a4be944..970aee759f 100644 --- a/examples/01-basic/09-shadcn/package.json +++ b/examples/01-basic/09-shadcn/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "tailwindcss": "^4.1.14", diff --git a/examples/01-basic/10-localization/package.json b/examples/01-basic/10-localization/package.json index e48b4958d0..5431f4de04 100644 --- a/examples/01-basic/10-localization/package.json +++ b/examples/01-basic/10-localization/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/01-basic/11-custom-placeholder/package.json b/examples/01-basic/11-custom-placeholder/package.json index c0f5029e30..b3ca292bfb 100644 --- a/examples/01-basic/11-custom-placeholder/package.json +++ b/examples/01-basic/11-custom-placeholder/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/01-basic/12-multi-editor/package.json b/examples/01-basic/12-multi-editor/package.json index 1abcaa9561..2408f1d822 100644 --- a/examples/01-basic/12-multi-editor/package.json +++ b/examples/01-basic/12-multi-editor/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/01-basic/13-custom-paste-handler/package.json b/examples/01-basic/13-custom-paste-handler/package.json index 45baefa7b3..8f2fd39c02 100644 --- a/examples/01-basic/13-custom-paste-handler/package.json +++ b/examples/01-basic/13-custom-paste-handler/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/01-basic/14-editor-scrollable/package.json b/examples/01-basic/14-editor-scrollable/package.json index f4da16d073..395196edc9 100644 --- a/examples/01-basic/14-editor-scrollable/package.json +++ b/examples/01-basic/14-editor-scrollable/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/01-basic/15-shadowdom/package.json b/examples/01-basic/15-shadowdom/package.json index ce14967311..bb80c17b37 100644 --- a/examples/01-basic/15-shadowdom/package.json +++ b/examples/01-basic/15-shadowdom/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/01-basic/16-read-only-editor/package.json b/examples/01-basic/16-read-only-editor/package.json index d5546c3d18..c746366d56 100644 --- a/examples/01-basic/16-read-only-editor/package.json +++ b/examples/01-basic/16-read-only-editor/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/01-basic/testing/package.json b/examples/01-basic/testing/package.json index 65638711f8..11ac43e993 100644 --- a/examples/01-basic/testing/package.json +++ b/examples/01-basic/testing/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/02-backend/01-file-uploading/package.json b/examples/02-backend/01-file-uploading/package.json index 0693ef33b2..b12ea90ff6 100644 --- a/examples/02-backend/01-file-uploading/package.json +++ b/examples/02-backend/01-file-uploading/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/02-backend/02-saving-loading/package.json b/examples/02-backend/02-saving-loading/package.json index 9f1892a12b..b38ebfcd69 100644 --- a/examples/02-backend/02-saving-loading/package.json +++ b/examples/02-backend/02-saving-loading/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/02-backend/03-s3/package.json b/examples/02-backend/03-s3/package.json index 2c2c249b08..0ff100fa90 100644 --- a/examples/02-backend/03-s3/package.json +++ b/examples/02-backend/03-s3/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "@aws-sdk/client-s3": "^3.609.0", diff --git a/examples/02-backend/04-rendering-static-documents/package.json b/examples/02-backend/04-rendering-static-documents/package.json index 41aeab8c5c..619434055e 100644 --- a/examples/02-backend/04-rendering-static-documents/package.json +++ b/examples/02-backend/04-rendering-static-documents/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "@blocknote/server-util": "latest" diff --git a/examples/03-ui-components/01-ui-elements-remove/package.json b/examples/03-ui-components/01-ui-elements-remove/package.json index 8f2fdb8819..429291840f 100644 --- a/examples/03-ui-components/01-ui-elements-remove/package.json +++ b/examples/03-ui-components/01-ui-elements-remove/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/03-ui-components/02-formatting-toolbar-buttons/package.json b/examples/03-ui-components/02-formatting-toolbar-buttons/package.json index b8590ff2f0..430ff81344 100644 --- a/examples/03-ui-components/02-formatting-toolbar-buttons/package.json +++ b/examples/03-ui-components/02-formatting-toolbar-buttons/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/03-ui-components/03-formatting-toolbar-block-type-items/.bnexample.json b/examples/03-ui-components/03-formatting-toolbar-block-type-items/.bnexample.json index 73a254bea5..9d554dc51c 100644 --- a/examples/03-ui-components/03-formatting-toolbar-block-type-items/.bnexample.json +++ b/examples/03-ui-components/03-formatting-toolbar-block-type-items/.bnexample.json @@ -10,7 +10,7 @@ "Custom Schemas" ], "dependencies": { - "@mantine/core": "^8.3.11", + "@mantine/core": "^9.0.2", "react-icons": "^5.5.0" } } diff --git a/examples/03-ui-components/03-formatting-toolbar-block-type-items/package.json b/examples/03-ui-components/03-formatting-toolbar-block-type-items/package.json index cbca1df3e9..4b550aaab2 100644 --- a/examples/03-ui-components/03-formatting-toolbar-block-type-items/package.json +++ b/examples/03-ui-components/03-formatting-toolbar-block-type-items/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "react-icons": "^5.5.0" diff --git a/examples/03-ui-components/04-side-menu-buttons/package.json b/examples/03-ui-components/04-side-menu-buttons/package.json index 3f15032a06..c3de6a8993 100644 --- a/examples/03-ui-components/04-side-menu-buttons/package.json +++ b/examples/03-ui-components/04-side-menu-buttons/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "react-icons": "^5.5.0" diff --git a/examples/03-ui-components/05-side-menu-drag-handle-items/package.json b/examples/03-ui-components/05-side-menu-drag-handle-items/package.json index 496e00e475..15cea76cc7 100644 --- a/examples/03-ui-components/05-side-menu-drag-handle-items/package.json +++ b/examples/03-ui-components/05-side-menu-drag-handle-items/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "react-icons": "^5.5.0" diff --git a/examples/03-ui-components/06-suggestion-menus-slash-menu-items/package.json b/examples/03-ui-components/06-suggestion-menus-slash-menu-items/package.json index 50c28fb92b..0bddd94672 100644 --- a/examples/03-ui-components/06-suggestion-menus-slash-menu-items/package.json +++ b/examples/03-ui-components/06-suggestion-menus-slash-menu-items/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "react-icons": "^5.5.0" diff --git a/examples/03-ui-components/07-suggestion-menus-slash-menu-component/package.json b/examples/03-ui-components/07-suggestion-menus-slash-menu-component/package.json index 8c083a5b44..b7226bd31d 100644 --- a/examples/03-ui-components/07-suggestion-menus-slash-menu-component/package.json +++ b/examples/03-ui-components/07-suggestion-menus-slash-menu-component/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/03-ui-components/08-suggestion-menus-emoji-picker-columns/package.json b/examples/03-ui-components/08-suggestion-menus-emoji-picker-columns/package.json index 03d7498571..1ce117e49c 100644 --- a/examples/03-ui-components/08-suggestion-menus-emoji-picker-columns/package.json +++ b/examples/03-ui-components/08-suggestion-menus-emoji-picker-columns/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/03-ui-components/09-suggestion-menus-emoji-picker-component/package.json b/examples/03-ui-components/09-suggestion-menus-emoji-picker-component/package.json index 245cf75557..4bd33e10e4 100644 --- a/examples/03-ui-components/09-suggestion-menus-emoji-picker-component/package.json +++ b/examples/03-ui-components/09-suggestion-menus-emoji-picker-component/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/03-ui-components/10-suggestion-menus-grid-mentions/package.json b/examples/03-ui-components/10-suggestion-menus-grid-mentions/package.json index 0e2a969572..637ce38042 100644 --- a/examples/03-ui-components/10-suggestion-menus-grid-mentions/package.json +++ b/examples/03-ui-components/10-suggestion-menus-grid-mentions/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/03-ui-components/11-uppy-file-panel/package.json b/examples/03-ui-components/11-uppy-file-panel/package.json index 5523df0951..f5de4f080a 100644 --- a/examples/03-ui-components/11-uppy-file-panel/package.json +++ b/examples/03-ui-components/11-uppy-file-panel/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "@uppy/core": "^3.13.1", diff --git a/examples/03-ui-components/12-static-formatting-toolbar/package.json b/examples/03-ui-components/12-static-formatting-toolbar/package.json index 0aac0b8018..180de05193 100644 --- a/examples/03-ui-components/12-static-formatting-toolbar/package.json +++ b/examples/03-ui-components/12-static-formatting-toolbar/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/03-ui-components/13-custom-ui/package.json b/examples/03-ui-components/13-custom-ui/package.json index 97585870e0..ef56dc0bef 100644 --- a/examples/03-ui-components/13-custom-ui/package.json +++ b/examples/03-ui-components/13-custom-ui/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "@mui/icons-material": "^5.16.1", diff --git a/examples/03-ui-components/14-experimental-mobile-formatting-toolbar/package.json b/examples/03-ui-components/14-experimental-mobile-formatting-toolbar/package.json index b6e6ffc841..6c2d53320d 100644 --- a/examples/03-ui-components/14-experimental-mobile-formatting-toolbar/package.json +++ b/examples/03-ui-components/14-experimental-mobile-formatting-toolbar/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/03-ui-components/15-advanced-tables/package.json b/examples/03-ui-components/15-advanced-tables/package.json index 751bd1f24a..cf8cbdb701 100644 --- a/examples/03-ui-components/15-advanced-tables/package.json +++ b/examples/03-ui-components/15-advanced-tables/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/03-ui-components/16-link-toolbar-buttons/package.json b/examples/03-ui-components/16-link-toolbar-buttons/package.json index 8846d27e37..0480356acc 100644 --- a/examples/03-ui-components/16-link-toolbar-buttons/package.json +++ b/examples/03-ui-components/16-link-toolbar-buttons/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/03-ui-components/17-advanced-tables-2/package.json b/examples/03-ui-components/17-advanced-tables-2/package.json index a4e92048fd..72643d1605 100644 --- a/examples/03-ui-components/17-advanced-tables-2/package.json +++ b/examples/03-ui-components/17-advanced-tables-2/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/03-ui-components/18-drag-n-drop/package.json b/examples/03-ui-components/18-drag-n-drop/package.json index b2e4aedc64..e925200fe1 100644 --- a/examples/03-ui-components/18-drag-n-drop/package.json +++ b/examples/03-ui-components/18-drag-n-drop/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/04-theming/01-theming-dom-attributes/package.json b/examples/04-theming/01-theming-dom-attributes/package.json index a8ad97733b..b577ecace2 100644 --- a/examples/04-theming/01-theming-dom-attributes/package.json +++ b/examples/04-theming/01-theming-dom-attributes/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/04-theming/02-changing-font/package.json b/examples/04-theming/02-changing-font/package.json index 44eaeed6aa..36fbc361ab 100644 --- a/examples/04-theming/02-changing-font/package.json +++ b/examples/04-theming/02-changing-font/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/04-theming/03-theming-css/package.json b/examples/04-theming/03-theming-css/package.json index 5179136589..56ae428ea5 100644 --- a/examples/04-theming/03-theming-css/package.json +++ b/examples/04-theming/03-theming-css/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/04-theming/04-theming-css-variables/package.json b/examples/04-theming/04-theming-css-variables/package.json index 1ade051cac..df834c89bf 100644 --- a/examples/04-theming/04-theming-css-variables/package.json +++ b/examples/04-theming/04-theming-css-variables/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/04-theming/05-theming-css-variables-code/package.json b/examples/04-theming/05-theming-css-variables-code/package.json index b0cd56da5c..bb64789b86 100644 --- a/examples/04-theming/05-theming-css-variables-code/package.json +++ b/examples/04-theming/05-theming-css-variables-code/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/04-theming/06-code-block/package.json b/examples/04-theming/06-code-block/package.json index 037641e740..b9fa69a80a 100644 --- a/examples/04-theming/06-code-block/package.json +++ b/examples/04-theming/06-code-block/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "@blocknote/code-block": "latest" diff --git a/examples/04-theming/07-custom-code-block/package.json b/examples/04-theming/07-custom-code-block/package.json index d381ab18f1..aa72035cbc 100644 --- a/examples/04-theming/07-custom-code-block/package.json +++ b/examples/04-theming/07-custom-code-block/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "@blocknote/code-block": "latest", diff --git a/examples/05-interoperability/01-converting-blocks-to-html/package.json b/examples/05-interoperability/01-converting-blocks-to-html/package.json index a799c20758..7b0b7f6409 100644 --- a/examples/05-interoperability/01-converting-blocks-to-html/package.json +++ b/examples/05-interoperability/01-converting-blocks-to-html/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/05-interoperability/02-converting-blocks-from-html/package.json b/examples/05-interoperability/02-converting-blocks-from-html/package.json index b12bb5efd9..4c780e56d3 100644 --- a/examples/05-interoperability/02-converting-blocks-from-html/package.json +++ b/examples/05-interoperability/02-converting-blocks-from-html/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/05-interoperability/03-converting-blocks-to-md/package.json b/examples/05-interoperability/03-converting-blocks-to-md/package.json index 408cb8dac9..f4d8ae5ada 100644 --- a/examples/05-interoperability/03-converting-blocks-to-md/package.json +++ b/examples/05-interoperability/03-converting-blocks-to-md/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/05-interoperability/04-converting-blocks-from-md/package.json b/examples/05-interoperability/04-converting-blocks-from-md/package.json index 0d4bbb2359..6a2256cb74 100644 --- a/examples/05-interoperability/04-converting-blocks-from-md/package.json +++ b/examples/05-interoperability/04-converting-blocks-from-md/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/05-interoperability/05-converting-blocks-to-pdf/package.json b/examples/05-interoperability/05-converting-blocks-to-pdf/package.json index f402e292d7..fec26aef21 100644 --- a/examples/05-interoperability/05-converting-blocks-to-pdf/package.json +++ b/examples/05-interoperability/05-converting-blocks-to-pdf/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "@blocknote/xl-pdf-exporter": "latest", diff --git a/examples/05-interoperability/06-converting-blocks-to-docx/package.json b/examples/05-interoperability/06-converting-blocks-to-docx/package.json index 9f29639db1..16bb0dfa29 100644 --- a/examples/05-interoperability/06-converting-blocks-to-docx/package.json +++ b/examples/05-interoperability/06-converting-blocks-to-docx/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "@blocknote/xl-docx-exporter": "latest", diff --git a/examples/05-interoperability/07-converting-blocks-to-odt/package.json b/examples/05-interoperability/07-converting-blocks-to-odt/package.json index 4c30dd0d65..5f3efacc28 100644 --- a/examples/05-interoperability/07-converting-blocks-to-odt/package.json +++ b/examples/05-interoperability/07-converting-blocks-to-odt/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "@blocknote/xl-odt-exporter": "latest", diff --git a/examples/05-interoperability/08-converting-blocks-to-react-email/package.json b/examples/05-interoperability/08-converting-blocks-to-react-email/package.json index 15b4292fd7..a2f87503bf 100644 --- a/examples/05-interoperability/08-converting-blocks-to-react-email/package.json +++ b/examples/05-interoperability/08-converting-blocks-to-react-email/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "@blocknote/xl-email-exporter": "latest", diff --git a/examples/05-interoperability/09-blocks-to-html-static-render/package.json b/examples/05-interoperability/09-blocks-to-html-static-render/package.json index c946e12a7c..58649cab50 100644 --- a/examples/05-interoperability/09-blocks-to-html-static-render/package.json +++ b/examples/05-interoperability/09-blocks-to-html-static-render/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/05-interoperability/10-static-html-render/package.json b/examples/05-interoperability/10-static-html-render/package.json index b49d1f5981..7da684540f 100644 --- a/examples/05-interoperability/10-static-html-render/package.json +++ b/examples/05-interoperability/10-static-html-render/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/06-custom-schema/01-alert-block/.bnexample.json b/examples/06-custom-schema/01-alert-block/.bnexample.json index 955f240be5..1354e61187 100644 --- a/examples/06-custom-schema/01-alert-block/.bnexample.json +++ b/examples/06-custom-schema/01-alert-block/.bnexample.json @@ -10,7 +10,7 @@ "Slash Menu" ], "dependencies": { - "@mantine/core": "^8.3.11", + "@mantine/core": "^9.0.2", "react-icons": "^5.5.0" } } diff --git a/examples/06-custom-schema/01-alert-block/package.json b/examples/06-custom-schema/01-alert-block/package.json index e35a932761..2ef9cadd20 100644 --- a/examples/06-custom-schema/01-alert-block/package.json +++ b/examples/06-custom-schema/01-alert-block/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "react-icons": "^5.5.0" diff --git a/examples/06-custom-schema/02-suggestion-menus-mentions/package.json b/examples/06-custom-schema/02-suggestion-menus-mentions/package.json index 07e4d59f5b..21e338460a 100644 --- a/examples/06-custom-schema/02-suggestion-menus-mentions/package.json +++ b/examples/06-custom-schema/02-suggestion-menus-mentions/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/06-custom-schema/03-font-style/package.json b/examples/06-custom-schema/03-font-style/package.json index dc3cd9dd43..b784dc08b2 100644 --- a/examples/06-custom-schema/03-font-style/package.json +++ b/examples/06-custom-schema/03-font-style/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "react-icons": "^5.5.0" diff --git a/examples/06-custom-schema/04-pdf-file-block/.bnexample.json b/examples/06-custom-schema/04-pdf-file-block/.bnexample.json index f3f9f4d51b..c9ed35fa87 100644 --- a/examples/06-custom-schema/04-pdf-file-block/.bnexample.json +++ b/examples/06-custom-schema/04-pdf-file-block/.bnexample.json @@ -10,7 +10,7 @@ "Slash Menu" ], "dependencies": { - "@mantine/core": "^8.3.11", + "@mantine/core": "^9.0.2", "react-icons": "^5.5.0" }, "pro": true diff --git a/examples/06-custom-schema/04-pdf-file-block/package.json b/examples/06-custom-schema/04-pdf-file-block/package.json index 8008b54fe3..cd1de2d12f 100644 --- a/examples/06-custom-schema/04-pdf-file-block/package.json +++ b/examples/06-custom-schema/04-pdf-file-block/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "react-icons": "^5.5.0" diff --git a/examples/06-custom-schema/05-alert-block-full-ux/.bnexample.json b/examples/06-custom-schema/05-alert-block-full-ux/.bnexample.json index 3326066fe0..7e53bcb415 100644 --- a/examples/06-custom-schema/05-alert-block-full-ux/.bnexample.json +++ b/examples/06-custom-schema/05-alert-block-full-ux/.bnexample.json @@ -11,7 +11,7 @@ "Slash Menu" ], "dependencies": { - "@mantine/core": "^8.3.11", + "@mantine/core": "^9.0.2", "react-icons": "^5.5.0" } } diff --git a/examples/06-custom-schema/05-alert-block-full-ux/package.json b/examples/06-custom-schema/05-alert-block-full-ux/package.json index c93d048860..6c56f839f1 100644 --- a/examples/06-custom-schema/05-alert-block-full-ux/package.json +++ b/examples/06-custom-schema/05-alert-block-full-ux/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "react-icons": "^5.5.0" diff --git a/examples/06-custom-schema/06-toggleable-blocks/package.json b/examples/06-custom-schema/06-toggleable-blocks/package.json index e684cd374f..baa1a1ae80 100644 --- a/examples/06-custom-schema/06-toggleable-blocks/package.json +++ b/examples/06-custom-schema/06-toggleable-blocks/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/06-custom-schema/07-configuring-blocks/package.json b/examples/06-custom-schema/07-configuring-blocks/package.json index ba937508ac..fc2e9a52cb 100644 --- a/examples/06-custom-schema/07-configuring-blocks/package.json +++ b/examples/06-custom-schema/07-configuring-blocks/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/06-custom-schema/draggable-inline-content/package.json b/examples/06-custom-schema/draggable-inline-content/package.json index 4ca27aa621..3689f5390c 100644 --- a/examples/06-custom-schema/draggable-inline-content/package.json +++ b/examples/06-custom-schema/draggable-inline-content/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/06-custom-schema/react-custom-blocks/package.json b/examples/06-custom-schema/react-custom-blocks/package.json index 38f6da8c26..b31875e4da 100644 --- a/examples/06-custom-schema/react-custom-blocks/package.json +++ b/examples/06-custom-schema/react-custom-blocks/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/06-custom-schema/react-custom-inline-content/package.json b/examples/06-custom-schema/react-custom-inline-content/package.json index af2eec603b..5e2ed6d99b 100644 --- a/examples/06-custom-schema/react-custom-inline-content/package.json +++ b/examples/06-custom-schema/react-custom-inline-content/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/06-custom-schema/react-custom-styles/package.json b/examples/06-custom-schema/react-custom-styles/package.json index 0234a12b26..3815485703 100644 --- a/examples/06-custom-schema/react-custom-styles/package.json +++ b/examples/06-custom-schema/react-custom-styles/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/07-collaboration/01-partykit/package.json b/examples/07-collaboration/01-partykit/package.json index 99ffd8432f..9f4a8d0870 100644 --- a/examples/07-collaboration/01-partykit/package.json +++ b/examples/07-collaboration/01-partykit/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "y-partykit": "^0.0.25", diff --git a/examples/07-collaboration/02-liveblocks/package.json b/examples/07-collaboration/02-liveblocks/package.json index 52e5f94320..79dd475fc8 100644 --- a/examples/07-collaboration/02-liveblocks/package.json +++ b/examples/07-collaboration/02-liveblocks/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "@liveblocks/client": "^3.17.0", diff --git a/examples/07-collaboration/03-y-sweet/package.json b/examples/07-collaboration/03-y-sweet/package.json index e1dcc579ca..8ca1ec5d75 100644 --- a/examples/07-collaboration/03-y-sweet/package.json +++ b/examples/07-collaboration/03-y-sweet/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "@y-sweet/react": "^0.6.3" diff --git a/examples/07-collaboration/04-electric-sql/package.json b/examples/07-collaboration/04-electric-sql/package.json index ed30197d66..8f0c69c80b 100644 --- a/examples/07-collaboration/04-electric-sql/package.json +++ b/examples/07-collaboration/04-electric-sql/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/07-collaboration/05-comments/.bnexample.json b/examples/07-collaboration/05-comments/.bnexample.json index 09ecc7196c..f2e0c026a9 100644 --- a/examples/07-collaboration/05-comments/.bnexample.json +++ b/examples/07-collaboration/05-comments/.bnexample.json @@ -5,6 +5,6 @@ "tags": ["Advanced", "Comments", "Collaboration"], "dependencies": { "@y-sweet/react": "^0.6.3", - "@mantine/core": "^8.3.11" + "@mantine/core": "^9.0.2" } } diff --git a/examples/07-collaboration/05-comments/package.json b/examples/07-collaboration/05-comments/package.json index e1902158f5..7736c432b4 100644 --- a/examples/07-collaboration/05-comments/package.json +++ b/examples/07-collaboration/05-comments/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "@y-sweet/react": "^0.6.3" diff --git a/examples/07-collaboration/06-comments-with-sidebar/.bnexample.json b/examples/07-collaboration/06-comments-with-sidebar/.bnexample.json index a80bff5aba..ff82fe290f 100644 --- a/examples/07-collaboration/06-comments-with-sidebar/.bnexample.json +++ b/examples/07-collaboration/06-comments-with-sidebar/.bnexample.json @@ -6,6 +6,6 @@ "dependencies": { "y-partykit": "^0.0.25", "yjs": "^13.6.27", - "@mantine/core": "^8.3.11" + "@mantine/core": "^9.0.2" } } diff --git a/examples/07-collaboration/06-comments-with-sidebar/package.json b/examples/07-collaboration/06-comments-with-sidebar/package.json index 67f4ead0b9..67a5504590 100644 --- a/examples/07-collaboration/06-comments-with-sidebar/package.json +++ b/examples/07-collaboration/06-comments-with-sidebar/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "y-partykit": "^0.0.25", diff --git a/examples/07-collaboration/07-ghost-writer/package.json b/examples/07-collaboration/07-ghost-writer/package.json index a8f3e4d13d..26e4956fab 100644 --- a/examples/07-collaboration/07-ghost-writer/package.json +++ b/examples/07-collaboration/07-ghost-writer/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "y-partykit": "^0.0.25", diff --git a/examples/07-collaboration/08-forking/package.json b/examples/07-collaboration/08-forking/package.json index 3702a49a69..3d82fc59ba 100644 --- a/examples/07-collaboration/08-forking/package.json +++ b/examples/07-collaboration/08-forking/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "y-partykit": "^0.0.25", diff --git a/examples/07-collaboration/09-comments-testing/package.json b/examples/07-collaboration/09-comments-testing/package.json index 070af0d48e..c31e6c15c3 100644 --- a/examples/07-collaboration/09-comments-testing/package.json +++ b/examples/07-collaboration/09-comments-testing/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "yjs": "^13.6.27" diff --git a/examples/08-extensions/01-tiptap-arrow-conversion/package.json b/examples/08-extensions/01-tiptap-arrow-conversion/package.json index b1055a283f..c781441abe 100644 --- a/examples/08-extensions/01-tiptap-arrow-conversion/package.json +++ b/examples/08-extensions/01-tiptap-arrow-conversion/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "@tiptap/core": "^3.13.0" diff --git a/examples/09-ai/01-minimal/.bnexample.json b/examples/09-ai/01-minimal/.bnexample.json index 30d6def791..9aede450f7 100644 --- a/examples/09-ai/01-minimal/.bnexample.json +++ b/examples/09-ai/01-minimal/.bnexample.json @@ -5,7 +5,7 @@ "tags": ["AI", "llm"], "dependencies": { "@blocknote/xl-ai": "latest", - "@mantine/core": "^8.3.11", + "@mantine/core": "^9.0.2", "ai": "^6.0.5" } } diff --git a/examples/09-ai/01-minimal/package.json b/examples/09-ai/01-minimal/package.json index d78b179eb4..b4ef7599fc 100644 --- a/examples/09-ai/01-minimal/package.json +++ b/examples/09-ai/01-minimal/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "@blocknote/xl-ai": "latest", diff --git a/examples/09-ai/02-playground/.bnexample.json b/examples/09-ai/02-playground/.bnexample.json index 30d6def791..9aede450f7 100644 --- a/examples/09-ai/02-playground/.bnexample.json +++ b/examples/09-ai/02-playground/.bnexample.json @@ -5,7 +5,7 @@ "tags": ["AI", "llm"], "dependencies": { "@blocknote/xl-ai": "latest", - "@mantine/core": "^8.3.11", + "@mantine/core": "^9.0.2", "ai": "^6.0.5" } } diff --git a/examples/09-ai/02-playground/package.json b/examples/09-ai/02-playground/package.json index 7824de1c5b..98f9c40219 100644 --- a/examples/09-ai/02-playground/package.json +++ b/examples/09-ai/02-playground/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "@blocknote/xl-ai": "latest", diff --git a/examples/09-ai/03-custom-ai-menu-items/.bnexample.json b/examples/09-ai/03-custom-ai-menu-items/.bnexample.json index a026ef1ee5..9a91d82062 100644 --- a/examples/09-ai/03-custom-ai-menu-items/.bnexample.json +++ b/examples/09-ai/03-custom-ai-menu-items/.bnexample.json @@ -5,7 +5,7 @@ "tags": ["AI", "llm"], "dependencies": { "@blocknote/xl-ai": "latest", - "@mantine/core": "^8.3.11", + "@mantine/core": "^9.0.2", "ai": "^6.0.5", "react-icons": "^5.5.0" } diff --git a/examples/09-ai/03-custom-ai-menu-items/package.json b/examples/09-ai/03-custom-ai-menu-items/package.json index d6a2573f8e..ee4c5d2163 100644 --- a/examples/09-ai/03-custom-ai-menu-items/package.json +++ b/examples/09-ai/03-custom-ai-menu-items/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "@blocknote/xl-ai": "latest", diff --git a/examples/09-ai/04-with-collaboration/.bnexample.json b/examples/09-ai/04-with-collaboration/.bnexample.json index 922d7f719e..83bed82fe4 100644 --- a/examples/09-ai/04-with-collaboration/.bnexample.json +++ b/examples/09-ai/04-with-collaboration/.bnexample.json @@ -5,7 +5,7 @@ "tags": ["AI", "llm"], "dependencies": { "@blocknote/xl-ai": "latest", - "@mantine/core": "^8.3.11", + "@mantine/core": "^9.0.2", "ai": "^6.0.5", "y-partykit": "^0.0.25", "yjs": "^13.6.27" diff --git a/examples/09-ai/04-with-collaboration/package.json b/examples/09-ai/04-with-collaboration/package.json index ef36c46e88..e75864a84f 100644 --- a/examples/09-ai/04-with-collaboration/package.json +++ b/examples/09-ai/04-with-collaboration/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "@blocknote/xl-ai": "latest", diff --git a/examples/09-ai/05-manual-execution/.bnexample.json b/examples/09-ai/05-manual-execution/.bnexample.json index c5b86534d1..890b2909fe 100644 --- a/examples/09-ai/05-manual-execution/.bnexample.json +++ b/examples/09-ai/05-manual-execution/.bnexample.json @@ -5,7 +5,7 @@ "tags": ["AI", "llm"], "dependencies": { "@blocknote/xl-ai": "latest", - "@mantine/core": "^8.3.11", + "@mantine/core": "^9.0.2", "ai": "^6.0.5", "y-partykit": "^0.0.25", "yjs": "^13.6.27" diff --git a/examples/09-ai/05-manual-execution/package.json b/examples/09-ai/05-manual-execution/package.json index dd5e66ef92..56ee0692fd 100644 --- a/examples/09-ai/05-manual-execution/package.json +++ b/examples/09-ai/05-manual-execution/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "@blocknote/xl-ai": "latest", diff --git a/examples/09-ai/06-client-side-transport/.bnexample.json b/examples/09-ai/06-client-side-transport/.bnexample.json index 1c7e871335..0ac2b679fc 100644 --- a/examples/09-ai/06-client-side-transport/.bnexample.json +++ b/examples/09-ai/06-client-side-transport/.bnexample.json @@ -6,7 +6,7 @@ "dependencies": { "@ai-sdk/groq": "^3.0.2", "@blocknote/xl-ai": "latest", - "@mantine/core": "^8.3.11", + "@mantine/core": "^9.0.2", "ai": "^6.0.5" } } diff --git a/examples/09-ai/06-client-side-transport/package.json b/examples/09-ai/06-client-side-transport/package.json index 64b09bc543..94250e9f3c 100644 --- a/examples/09-ai/06-client-side-transport/package.json +++ b/examples/09-ai/06-client-side-transport/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "@ai-sdk/groq": "^3.0.2", diff --git a/examples/09-ai/07-server-persistence/.bnexample.json b/examples/09-ai/07-server-persistence/.bnexample.json index 35815d0d21..12b79358ef 100644 --- a/examples/09-ai/07-server-persistence/.bnexample.json +++ b/examples/09-ai/07-server-persistence/.bnexample.json @@ -5,7 +5,7 @@ "tags": ["AI", "llm"], "dependencies": { "@blocknote/xl-ai": "latest", - "@mantine/core": "^8.3.11", + "@mantine/core": "^9.0.2", "ai": "^6.0.5" } } diff --git a/examples/09-ai/07-server-persistence/package.json b/examples/09-ai/07-server-persistence/package.json index 0ac67163a2..bbcb69e15d 100644 --- a/examples/09-ai/07-server-persistence/package.json +++ b/examples/09-ai/07-server-persistence/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3", "@blocknote/xl-ai": "latest", diff --git a/examples/vanilla-js/react-vanilla-custom-blocks/package.json b/examples/vanilla-js/react-vanilla-custom-blocks/package.json index 11a3db66c0..bb2e5beeee 100644 --- a/examples/vanilla-js/react-vanilla-custom-blocks/package.json +++ b/examples/vanilla-js/react-vanilla-custom-blocks/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/vanilla-js/react-vanilla-custom-inline-content/package.json b/examples/vanilla-js/react-vanilla-custom-inline-content/package.json index 61cc3e1e6a..e065088442 100644 --- a/examples/vanilla-js/react-vanilla-custom-inline-content/package.json +++ b/examples/vanilla-js/react-vanilla-custom-inline-content/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/vanilla-js/react-vanilla-custom-styles/package.json b/examples/vanilla-js/react-vanilla-custom-styles/package.json index 7fd6ab2160..1f2691e014 100644 --- a/examples/vanilla-js/react-vanilla-custom-styles/package.json +++ b/examples/vanilla-js/react-vanilla-custom-styles/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/packages/dev-scripts/examples/template-react/package.json.template.tsx b/packages/dev-scripts/examples/template-react/package.json.template.tsx index 98c67f3e50..34701ed200 100644 --- a/packages/dev-scripts/examples/template-react/package.json.template.tsx +++ b/packages/dev-scripts/examples/template-react/package.json.template.tsx @@ -18,9 +18,8 @@ const template = (project: Project) => ({ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", react: "^19.2.3", "react-dom": "^19.2.3", ...(project.config.tailwind diff --git a/packages/mantine/package.json b/packages/mantine/package.json index 69d808136a..9b102b935c 100644 --- a/packages/mantine/package.json +++ b/packages/mantine/package.json @@ -80,9 +80,8 @@ "vite-plugin-externalize-deps": "^0.10.0" }, "peerDependencies": { - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^8.3.11 || ^9.0.2", + "@mantine/hooks": "^8.3.11 || ^9.0.2", "react": "^18.0 || ^19.0 || >= 19.0.0-rc", "react-dom": "^18.0 || ^19.0 || >= 19.0.0-rc" }, diff --git a/packages/mantine/src/suggestionMenu/SuggestionMenuLoader.tsx b/packages/mantine/src/suggestionMenu/SuggestionMenuLoader.tsx index 93255e0bd2..a742ccb19a 100644 --- a/packages/mantine/src/suggestionMenu/SuggestionMenuLoader.tsx +++ b/packages/mantine/src/suggestionMenu/SuggestionMenuLoader.tsx @@ -13,6 +13,8 @@ export const SuggestionMenuLoader = forwardRef< assertEmpty(rest); return ( - +
    + +
    ); }); diff --git a/packages/mantine/src/suggestionMenu/gridSuggestionMenu/GridSuggestionMenuLoader.tsx b/packages/mantine/src/suggestionMenu/gridSuggestionMenu/GridSuggestionMenuLoader.tsx index 42dda5d583..d241354d3d 100644 --- a/packages/mantine/src/suggestionMenu/gridSuggestionMenu/GridSuggestionMenuLoader.tsx +++ b/packages/mantine/src/suggestionMenu/gridSuggestionMenu/GridSuggestionMenuLoader.tsx @@ -18,11 +18,8 @@ export const GridSuggestionMenuLoader = forwardRef< assertEmpty(rest); return ( - +
    + +
    ); }); diff --git a/playground/package.json b/playground/package.json index 5468c5ed6f..6fd4ea37f9 100644 --- a/playground/package.json +++ b/playground/package.json @@ -34,9 +34,8 @@ "@liveblocks/react-blocknote": "^3.17.0", "@liveblocks/react-tiptap": "^3.17.0", "@liveblocks/react-ui": "^3.17.0", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "@mui/icons-material": "^5.18.0", "@mui/material": "^5.18.0", "@uppy/core": "^3.13.1", diff --git a/playground/src/examples.gen.tsx b/playground/src/examples.gen.tsx index ccfc674ac5..5c70e29330 100644 --- a/playground/src/examples.gen.tsx +++ b/playground/src/examples.gen.tsx @@ -476,7 +476,7 @@ "Custom Schemas" ], "dependencies": { - "@mantine/core": "^8.3.11", + "@mantine/core": "^9.0.2", "react-icons": "^5.5.0" } as any }, @@ -1285,7 +1285,7 @@ "Slash Menu" ], "dependencies": { - "@mantine/core": "^8.3.11", + "@mantine/core": "^9.0.2", "react-icons": "^5.5.0" } as any }, @@ -1359,7 +1359,7 @@ "Slash Menu" ], "dependencies": { - "@mantine/core": "^8.3.11", + "@mantine/core": "^9.0.2", "react-icons": "^5.5.0" } as any, "pro": true @@ -1388,7 +1388,7 @@ "Slash Menu" ], "dependencies": { - "@mantine/core": "^8.3.11", + "@mantine/core": "^9.0.2", "react-icons": "^5.5.0" } as any }, @@ -1646,7 +1646,7 @@ ], "dependencies": { "@y-sweet/react": "^0.6.3", - "@mantine/core": "^8.3.11" + "@mantine/core": "^9.0.2" } as any }, "title": "Comments & Threads", @@ -1672,7 +1672,7 @@ "dependencies": { "y-partykit": "^0.0.25", "yjs": "^13.6.27", - "@mantine/core": "^8.3.11" + "@mantine/core": "^9.0.2" } as any }, "title": "Threads Sidebar", @@ -1805,7 +1805,7 @@ ], "dependencies": { "@blocknote/xl-ai": "latest", - "@mantine/core": "^8.3.11", + "@mantine/core": "^9.0.2", "ai": "^6.0.5" } as any }, @@ -1830,7 +1830,7 @@ ], "dependencies": { "@blocknote/xl-ai": "latest", - "@mantine/core": "^8.3.11", + "@mantine/core": "^9.0.2", "ai": "^6.0.5" } as any }, @@ -1855,7 +1855,7 @@ ], "dependencies": { "@blocknote/xl-ai": "latest", - "@mantine/core": "^8.3.11", + "@mantine/core": "^9.0.2", "ai": "^6.0.5", "react-icons": "^5.5.0" } as any @@ -1881,7 +1881,7 @@ ], "dependencies": { "@blocknote/xl-ai": "latest", - "@mantine/core": "^8.3.11", + "@mantine/core": "^9.0.2", "ai": "^6.0.5", "y-partykit": "^0.0.25", "yjs": "^13.6.27" @@ -1908,7 +1908,7 @@ ], "dependencies": { "@blocknote/xl-ai": "latest", - "@mantine/core": "^8.3.11", + "@mantine/core": "^9.0.2", "ai": "^6.0.5", "y-partykit": "^0.0.25", "yjs": "^13.6.27" @@ -1936,7 +1936,7 @@ "dependencies": { "@ai-sdk/groq": "^3.0.2", "@blocknote/xl-ai": "latest", - "@mantine/core": "^8.3.11", + "@mantine/core": "^9.0.2", "ai": "^6.0.5" } as any }, @@ -1961,7 +1961,7 @@ ], "dependencies": { "@blocknote/xl-ai": "latest", - "@mantine/core": "^8.3.11", + "@mantine/core": "^9.0.2", "ai": "^6.0.5" } as any }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5053fe78f3..ff28b71e0a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -130,14 +130,11 @@ importers: specifier: ^3.17.0 version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) '@marsidev/react-turnstile': specifier: ^1.4.2 version: 1.5.0(react-dom@19.2.5(react@19.2.5))(react@19.2.5) @@ -380,14 +377,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -426,14 +420,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -475,14 +466,11 @@ importers: specifier: latest version: link:../../../packages/xl-multi-column '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -521,14 +509,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -567,14 +552,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -613,14 +595,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -659,14 +638,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -705,14 +681,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -751,14 +724,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -806,14 +776,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -852,14 +819,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -898,14 +862,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -944,14 +905,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -990,14 +948,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -1036,14 +991,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -1082,14 +1034,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -1128,14 +1077,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -1174,14 +1120,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -1220,14 +1163,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -1272,14 +1212,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -1321,14 +1258,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -1367,14 +1301,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -1413,14 +1344,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -1459,14 +1387,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -1508,14 +1433,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -1557,14 +1479,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -1606,14 +1525,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -1655,14 +1571,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -1701,14 +1614,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -1747,14 +1657,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -1793,14 +1700,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -1839,14 +1743,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) '@uppy/core': specifier: ^3.13.1 version: 3.13.1 @@ -1921,14 +1822,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -1967,14 +1865,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) '@mui/icons-material': specifier: ^5.16.1 version: 5.18.0(@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@types/react@19.2.14)(react@19.2.5) @@ -2019,14 +1914,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -2065,14 +1957,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -2111,14 +2000,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -2157,14 +2043,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -2203,14 +2086,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -2295,14 +2175,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -2341,14 +2218,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -2387,14 +2261,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -2433,14 +2304,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -2479,14 +2347,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -2528,14 +2393,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -2577,14 +2439,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) '@shikijs/core': specifier: ^4 version: 4.0.2 @@ -2638,14 +2497,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -2684,14 +2540,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -2730,14 +2583,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -2776,14 +2626,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -2828,14 +2675,11 @@ importers: specifier: latest version: link:../../../packages/xl-pdf-exporter '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) '@react-pdf/renderer': specifier: ^4.3.0 version: 4.3.2(react@19.2.5) @@ -2883,14 +2727,11 @@ importers: specifier: latest version: link:../../../packages/xl-multi-column '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -2935,14 +2776,11 @@ importers: specifier: latest version: link:../../../packages/xl-odt-exporter '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -2984,14 +2822,11 @@ importers: specifier: latest version: link:../../../packages/xl-email-exporter '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) '@react-email/render': specifier: ^2.0.4 version: 2.0.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) @@ -3033,14 +2868,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -3079,14 +2911,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -3125,14 +2954,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -3174,14 +3000,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -3220,14 +3043,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -3269,14 +3089,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -3318,14 +3135,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -3367,14 +3181,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -3413,14 +3224,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -3505,14 +3313,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -3551,14 +3356,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -3597,14 +3399,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -3643,14 +3442,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -3689,14 +3485,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -3756,14 +3549,11 @@ importers: specifier: ^3.17.0 version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -3805,14 +3595,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) '@y-sweet/react': specifier: ^0.6.3 version: 0.6.4(react@19.2.5)(yjs@13.6.30) @@ -3854,14 +3641,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -3900,14 +3684,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) '@y-sweet/react': specifier: ^0.6.3 version: 0.6.4(react@19.2.5)(yjs@13.6.30) @@ -3949,14 +3730,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -4001,14 +3779,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -4053,14 +3828,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -4105,14 +3877,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -4154,14 +3923,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) '@tiptap/core': specifier: ^3.13.0 version: 3.22.4(@tiptap/pm@3.22.4) @@ -4206,14 +3972,11 @@ importers: specifier: latest version: link:../../../packages/xl-ai '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) ai: specifier: ^6.0.5 version: 6.0.5(zod@4.3.6) @@ -4258,14 +4021,11 @@ importers: specifier: latest version: link:../../../packages/xl-ai '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) ai: specifier: ^6.0.5 version: 6.0.5(zod@4.3.6) @@ -4310,14 +4070,11 @@ importers: specifier: latest version: link:../../../packages/xl-ai '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) ai: specifier: ^6.0.5 version: 6.0.5(zod@4.3.6) @@ -4365,14 +4122,11 @@ importers: specifier: latest version: link:../../../packages/xl-ai '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) ai: specifier: ^6.0.5 version: 6.0.5(zod@4.3.6) @@ -4423,14 +4177,11 @@ importers: specifier: latest version: link:../../../packages/xl-ai '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) ai: specifier: ^6.0.5 version: 6.0.5(zod@4.3.6) @@ -4484,14 +4235,11 @@ importers: specifier: latest version: link:../../../packages/xl-ai '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) ai: specifier: ^6.0.5 version: 6.0.5(zod@4.3.6) @@ -4536,14 +4284,11 @@ importers: specifier: latest version: link:../../../packages/xl-ai '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) ai: specifier: ^6.0.5 version: 6.0.5(zod@4.3.6) @@ -4585,14 +4330,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -4631,14 +4373,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -4677,14 +4416,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -4982,14 +4718,11 @@ importers: specifier: 0.49.0 version: link:../react '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + specifier: ^8.3.11 || ^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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^8.3.11 || ^9.0.2 + version: 9.1.1(react@19.2.5) react-icons: specifier: ^5.5.0 version: 5.6.0(react@19.2.5) @@ -5890,14 +5623,11 @@ importers: specifier: ^3.17.0 version: 3.17.0(@types/json-schema@7.0.15)(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) '@mui/icons-material': specifier: ^5.18.0 version: 5.18.0(@mui/material@5.18.0(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@emotion/styled@11.14.1(@emotion/react@11.14.0(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5))(@types/react@19.2.14)(react@19.2.5) @@ -8152,11 +7882,23 @@ packages: react: ^18.x || ^19.x react-dom: ^18.x || ^19.x + '@mantine/core@9.1.1': + resolution: {integrity: sha512-vClOZdCeZ4oLYuA/3jAOgKGQ6dXbF6ZkzpYz09Gied9nZpB7HcQeb3dcMh8UPBE4f+EM7KlYWk6dch7GoASeaA==} + peerDependencies: + '@mantine/hooks': 9.1.1 + react: ^19.2.0 + react-dom: ^19.2.0 + '@mantine/hooks@8.3.18': resolution: {integrity: sha512-QoWr9+S8gg5050TQ06aTSxtlpGjYOpIllRbjYYXlRvZeTsUqiTbVfvQROLexu4rEaK+yy9Wwriwl9PMRgbLqPw==} peerDependencies: react: ^18.x || ^19.x + '@mantine/hooks@9.1.1': + resolution: {integrity: sha512-tTJK73nGFyy1v214TLdvBq0be7QCoc6osfbXVuJgOH3YG85lWk9Mvvor6k+w6hC6HXSqKMqLKePyiGm83xGcMg==} + peerDependencies: + react: ^19.2.0 + '@mantine/utils@6.0.22': resolution: {integrity: sha512-RSKlNZvxhMCkOFZ6slbYvZYbWjHUM+PxDQnupIOxIdsTZQQjx/BFfrfJ7kQFOP+g7MtpOds8weAetEs5obwMOQ==} peerDependencies: @@ -16098,8 +15840,8 @@ packages: resolution: {integrity: sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==} engines: {node: '>=16'} - type-fest@5.5.0: - resolution: {integrity: sha512-PlBfpQwiUvGViBNX84Yxwjsdhd1TUlXr6zjX7eoirtCPIr08NAmxwa+fcYBTeRQxHo9YC9wwF3m9i700sHma8g==} + type-fest@5.6.0: + resolution: {integrity: sha512-8ZiHFm91orbSAe2PSAiSVBVko18pbhbiB3U9GglSzF/zCGkR+rxpHx6sEMCUm4kxY4LjDIUGgCfUMtwfZfjfUA==} engines: {node: '>=20'} typed-array-buffer@1.0.3: @@ -19171,10 +18913,27 @@ snapshots: transitivePeerDependencies: - '@types/react' + '@mantine/core@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)': + dependencies: + '@floating-ui/react': 0.27.19(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + '@mantine/hooks': 9.1.1(react@19.2.5) + clsx: 2.1.1 + react: 19.2.5 + react-dom: 19.2.5(react@19.2.5) + react-number-format: 5.4.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.5) + type-fest: 5.6.0 + transitivePeerDependencies: + - '@types/react' + '@mantine/hooks@8.3.18(react@19.2.5)': dependencies: react: 19.2.5 + '@mantine/hooks@9.1.1(react@19.2.5)': + dependencies: + react: 19.2.5 + '@mantine/utils@6.0.22(react@19.2.5)': dependencies: react: 19.2.5 @@ -23822,7 +23581,7 @@ snapshots: dot-prop@10.1.0: dependencies: - type-fest: 5.5.0 + type-fest: 5.6.0 dotenv-expand@11.0.7: dependencies: @@ -28579,7 +28338,7 @@ snapshots: type-fest@4.41.0: {} - type-fest@5.5.0: + type-fest@5.6.0: dependencies: tagged-tag: 1.0.0 diff --git a/tests/nextjs-test-app/package.json b/tests/nextjs-test-app/package.json index d0098c1e75..84ec73b390 100644 --- a/tests/nextjs-test-app/package.json +++ b/tests/nextjs-test-app/package.json @@ -7,8 +7,8 @@ "@blocknote/mantine": "file:.tarballs/blocknote-mantine-0.49.0.tgz", "@blocknote/react": "file:.tarballs/blocknote-react-0.49.0.tgz", "@blocknote/server-util": "file:.tarballs/blocknote-server-util-0.49.0.tgz", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "next": "^16.0.0", "react": "^19.2.3", "react-dom": "^19.2.3" diff --git a/tests/nextjs-test-app/setup.sh b/tests/nextjs-test-app/setup.sh index 7eefa2f8a4..56efd25f95 100755 --- a/tests/nextjs-test-app/setup.sh +++ b/tests/nextjs-test-app/setup.sh @@ -47,8 +47,8 @@ cat > package.json << EOF "@blocknote/mantine": "file:.tarballs/$MANTINE_TGZ", "@blocknote/react": "file:.tarballs/$REACT_TGZ", "@blocknote/server-util": "file:.tarballs/$SERVER_TGZ", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "next": "^16.0.0", "react": "^19.2.3", "react-dom": "^19.2.3" From d8c6b78981d0455ec12edb000188021ff5193dbe Mon Sep 17 00:00:00 2001 From: Nick the Sick Date: Mon, 4 May 2026 18:06:06 +0200 Subject: [PATCH 44/76] chore(release): publish 0.50.0 --- CHANGELOG.md | 29 ++++++++++++++ packages/ariakit/package.json | 6 +-- packages/code-block/package.json | 6 +-- packages/core/package.json | 2 +- packages/dev-scripts/package.json | 2 +- packages/mantine/package.json | 6 +-- packages/react/package.json | 4 +- packages/server-util/package.json | 6 +-- packages/shadcn/package.json | 6 +-- packages/xl-ai-server/package.json | 4 +- packages/xl-ai/package.json | 8 ++-- packages/xl-docx-exporter/package.json | 6 +-- packages/xl-email-exporter/package.json | 6 +-- packages/xl-multi-column/package.json | 6 +-- packages/xl-odt-exporter/package.json | 6 +-- packages/xl-pdf-exporter/package.json | 8 ++-- pnpm-lock.yaml | 50 ++++++++++++------------- 17 files changed, 95 insertions(+), 66 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e6a925bbe7..50ec59a70a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,32 @@ +## 0.50.0 (2026-05-04) + +### 🚀 Features + +- Dark mode styling for file block wrapper component (BLO-866) ([#2680](https://github.com/TypeCellOS/BlockNote/pull/2680)) +- Drag hendle menu delete button removes all other blocks in selection (BLO-1007) ([#2683](https://github.com/TypeCellOS/BlockNote/pull/2683)) +- Enter moves selection to cell below in tables (BLO-1006) ([#2685](https://github.com/TypeCellOS/BlockNote/pull/2685)) +- additional heading top padding (BLO-1008) ([#2690](https://github.com/TypeCellOS/BlockNote/pull/2690)) +- Code mark input rule edge case (BLO-938) ([#2698](https://github.com/TypeCellOS/BlockNote/pull/2698)) +- **mantine:** upgrade @mantine/core and @mantine/hooks to v9.0.2 ([#2655](https://github.com/TypeCellOS/BlockNote/pull/2655)) + +### 🩹 Fixes + +- Hardcoded strings in comment components (BLO-1033) ([#2681](https://github.com/TypeCellOS/BlockNote/pull/2681)) +- Color naming & CSS (BLO-946) ([#2684](https://github.com/TypeCellOS/BlockNote/pull/2684)) +- link HTML attributes (BLO-915) ([#2687](https://github.com/TypeCellOS/BlockNote/pull/2687)) +- guard hideMenuIfNotFrozen against undefined view state ([#2694](https://github.com/TypeCellOS/BlockNote/pull/2694), [#2699](https://github.com/TypeCellOS/BlockNote/pull/2699)) +- Clicking comment overlapping link opens link (BLO-1091) ([#2696](https://github.com/TypeCellOS/BlockNote/pull/2696)) +- prevent table row drag from moving an extra adjacent row ([#2703](https://github.com/TypeCellOS/BlockNote/pull/2703)) +- **clipboard:** use ProseMirror selection state for Shadow DOM compatibility ([#2677](https://github.com/TypeCellOS/BlockNote/pull/2677)) + +### ❤️ Thank You + +- jt_fox @LimChaeJune +- Matthew Lipski @matthewlipski +- Nick Perez +- Wieland Lindenthal +- Yousef + ## 0.49.0 (2026-04-24) ### 🚀 Features diff --git a/packages/ariakit/package.json b/packages/ariakit/package.json index 19e22dd004..c9f7aa2f3d 100644 --- a/packages/ariakit/package.json +++ b/packages/ariakit/package.json @@ -11,7 +11,7 @@ "directory": "packages/ariakit" }, "license": "MPL-2.0", - "version": "0.49.0", + "version": "0.50.0", "files": [ "dist", "types", @@ -57,8 +57,8 @@ }, "dependencies": { "@ariakit/react": "^0.4.19", - "@blocknote/core": "0.49.0", - "@blocknote/react": "0.49.0" + "@blocknote/core": "0.50.0", + "@blocknote/react": "0.50.0" }, "devDependencies": { "@types/react": "^19.2.3", diff --git a/packages/code-block/package.json b/packages/code-block/package.json index c1e5ace389..0a26e502d9 100644 --- a/packages/code-block/package.json +++ b/packages/code-block/package.json @@ -9,7 +9,7 @@ "directory": "packages/code-block" }, "license": "MPL-2.0", - "version": "0.49.0", + "version": "0.50.0", "files": [ "dist", "types", @@ -49,7 +49,7 @@ "test-watch": "vitest watch" }, "dependencies": { - "@blocknote/core": "0.49.0", + "@blocknote/core": "0.50.0", "@shikijs/core": "^4", "@shikijs/engine-javascript": "^4", "@shikijs/langs-precompiled": "^4", @@ -65,7 +65,7 @@ "vitest": "^4.1.2" }, "peerDependencies": { - "@blocknote/core": "0.49.0" + "@blocknote/core": "0.50.0" }, "eslintConfig": { "extends": [ diff --git a/packages/core/package.json b/packages/core/package.json index d64e402df8..9ed2e8bc45 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -11,7 +11,7 @@ "directory": "packages/core" }, "license": "MPL-2.0", - "version": "0.49.0", + "version": "0.50.0", "files": [ "dist", "types", diff --git a/packages/dev-scripts/package.json b/packages/dev-scripts/package.json index 5af279ab58..27702ef96d 100644 --- a/packages/dev-scripts/package.json +++ b/packages/dev-scripts/package.json @@ -8,7 +8,7 @@ "directory": "packages/dev-scripts" }, "license": "MPL-2.0", - "version": "0.49.0", + "version": "0.50.0", "description": "", "type": "module", "scripts": { diff --git a/packages/mantine/package.json b/packages/mantine/package.json index 9b102b935c..0726a78bc2 100644 --- a/packages/mantine/package.json +++ b/packages/mantine/package.json @@ -11,7 +11,7 @@ "directory": "packages/mantine" }, "license": "MPL-2.0", - "version": "0.49.0", + "version": "0.50.0", "files": [ "dist", "types", @@ -61,8 +61,8 @@ "clean": "rimraf dist && rimraf types" }, "dependencies": { - "@blocknote/core": "0.49.0", - "@blocknote/react": "0.49.0", + "@blocknote/core": "0.50.0", + "@blocknote/react": "0.50.0", "react-icons": "^5.5.0" }, "devDependencies": { diff --git a/packages/react/package.json b/packages/react/package.json index bdc45f9f3c..6e3e0a7edb 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -11,7 +11,7 @@ "directory": "packages/react" }, "license": "MPL-2.0", - "version": "0.49.0", + "version": "0.50.0", "files": [ "dist", "types", @@ -58,7 +58,7 @@ "clean": "rimraf dist && rimraf types" }, "dependencies": { - "@blocknote/core": "0.49.0", + "@blocknote/core": "0.50.0", "@emoji-mart/data": "^1.2.1", "@floating-ui/react": "^0.27.18", "@floating-ui/utils": "^0.2.10", diff --git a/packages/server-util/package.json b/packages/server-util/package.json index e165d4945e..29adde4274 100644 --- a/packages/server-util/package.json +++ b/packages/server-util/package.json @@ -11,7 +11,7 @@ "directory": "packages/server-util" }, "license": "MPL-2.0", - "version": "0.49.0", + "version": "0.50.0", "files": [ "dist", "types", @@ -56,8 +56,8 @@ "test-watch": "vitest watch" }, "dependencies": { - "@blocknote/core": "0.49.0", - "@blocknote/react": "0.49.0", + "@blocknote/core": "0.50.0", + "@blocknote/react": "0.50.0", "@tiptap/core": "^3.13.0", "@tiptap/pm": "^3.13.0", "jsdom": "^25.0.1", diff --git a/packages/shadcn/package.json b/packages/shadcn/package.json index b0d39397d4..db9a7de6ee 100644 --- a/packages/shadcn/package.json +++ b/packages/shadcn/package.json @@ -11,7 +11,7 @@ "directory": "packages/shadcn" }, "license": "MPL-2.0", - "version": "0.49.0", + "version": "0.50.0", "files": [ "dist", "types", @@ -56,8 +56,8 @@ "clean": "rimraf dist && rimraf types" }, "dependencies": { - "@blocknote/core": "0.49.0", - "@blocknote/react": "0.49.0", + "@blocknote/core": "0.50.0", + "@blocknote/react": "0.50.0", "@radix-ui/react-avatar": "^1.1.10", "@radix-ui/react-dropdown-menu": "^2.1.16", "@radix-ui/react-label": "^2.1.7", diff --git a/packages/xl-ai-server/package.json b/packages/xl-ai-server/package.json index 95fa5f9b8f..bbec84ed94 100644 --- a/packages/xl-ai-server/package.json +++ b/packages/xl-ai-server/package.json @@ -3,7 +3,7 @@ "homepage": "https://github.com/TypeCellOS/BlockNote", "private": true, "license": "GPL-3.0 OR PROPRIETARY", - "version": "0.49.0", + "version": "0.50.0", "files": [ "dist", "types", @@ -49,7 +49,7 @@ "@ai-sdk/mistral": "^3.0.2", "@ai-sdk/openai": "^3.0.2", "@ai-sdk/openai-compatible": "^2.0.2", - "@blocknote/xl-ai": "0.49.0", + "@blocknote/xl-ai": "0.50.0", "@hono/node-server": "^1.19.5", "ai": "^6.0.5", "hono": "^4.10.3" diff --git a/packages/xl-ai/package.json b/packages/xl-ai/package.json index 77f29b5bc6..130e0d420e 100644 --- a/packages/xl-ai/package.json +++ b/packages/xl-ai/package.json @@ -11,7 +11,7 @@ "directory": "packages/xl-ai" }, "license": "GPL-3.0 OR PROPRIETARY", - "version": "0.49.0", + "version": "0.50.0", "files": [ "dist", "types", @@ -72,9 +72,9 @@ "dependencies": { "@ai-sdk/provider-utils": "^4.0.2", "@ai-sdk/react": "^3.0.5", - "@blocknote/core": "0.49.0", - "@blocknote/mantine": "0.49.0", - "@blocknote/react": "0.49.0", + "@blocknote/core": "0.50.0", + "@blocknote/mantine": "0.50.0", + "@blocknote/react": "0.50.0", "@floating-ui/react": "^0.27.18", "@handlewithcare/prosemirror-suggest-changes": "^0.1.8", "@tiptap/core": "^3.13.0", diff --git a/packages/xl-docx-exporter/package.json b/packages/xl-docx-exporter/package.json index 85f2637bf2..12d16de3d2 100644 --- a/packages/xl-docx-exporter/package.json +++ b/packages/xl-docx-exporter/package.json @@ -9,7 +9,7 @@ "directory": "packages/xl-docx-exporter" }, "license": "GPL-3.0 OR PROPRIETARY", - "version": "0.49.0", + "version": "0.50.0", "files": [ "dist", "types", @@ -57,8 +57,8 @@ "email": "email dev" }, "dependencies": { - "@blocknote/core": "0.49.0", - "@blocknote/xl-multi-column": "0.49.0", + "@blocknote/core": "0.50.0", + "@blocknote/xl-multi-column": "0.50.0", "buffer": "^6.0.3", "docx": "^9.6.1", "image-meta": "^0.2.2" diff --git a/packages/xl-email-exporter/package.json b/packages/xl-email-exporter/package.json index 131e72dea7..01e7776d40 100644 --- a/packages/xl-email-exporter/package.json +++ b/packages/xl-email-exporter/package.json @@ -9,7 +9,7 @@ "directory": "packages/xl-email-exporter" }, "license": "GPL-3.0 OR PROPRIETARY", - "version": "0.49.0", + "version": "0.50.0", "files": [ "dist", "types", @@ -54,8 +54,8 @@ "email": "email dev" }, "dependencies": { - "@blocknote/core": "0.49.0", - "@blocknote/react": "0.49.0", + "@blocknote/core": "0.50.0", + "@blocknote/react": "0.50.0", "@react-email/components": "^1.0.5", "@react-email/render": "^2.0.4", "buffer": "^6.0.3", diff --git a/packages/xl-multi-column/package.json b/packages/xl-multi-column/package.json index 1c5dc66f9d..60d1f85458 100644 --- a/packages/xl-multi-column/package.json +++ b/packages/xl-multi-column/package.json @@ -9,7 +9,7 @@ "directory": "packages/xl-multi-column" }, "license": "GPL-3.0 OR PROPRIETARY", - "version": "0.49.0", + "version": "0.50.0", "files": [ "dist", "types", @@ -51,8 +51,8 @@ "clean": "rimraf dist && rimraf types" }, "dependencies": { - "@blocknote/core": "0.49.0", - "@blocknote/react": "0.49.0", + "@blocknote/core": "0.50.0", + "@blocknote/react": "0.50.0", "@tiptap/core": "^3.13.0", "prosemirror-model": "^1.25.4", "prosemirror-state": "^1.4.4", diff --git a/packages/xl-odt-exporter/package.json b/packages/xl-odt-exporter/package.json index 28c901666d..b5fd94edf6 100644 --- a/packages/xl-odt-exporter/package.json +++ b/packages/xl-odt-exporter/package.json @@ -9,7 +9,7 @@ "directory": "packages/xl-odt-exporter" }, "license": "GPL-3.0 OR PROPRIETARY", - "version": "0.49.0", + "version": "0.50.0", "files": [ "dist", "types", @@ -57,8 +57,8 @@ "clean": "rimraf dist && rimraf types" }, "dependencies": { - "@blocknote/core": "0.49.0", - "@blocknote/xl-multi-column": "0.49.0", + "@blocknote/core": "0.50.0", + "@blocknote/xl-multi-column": "0.50.0", "@zip.js/zip.js": "^2.8.8", "buffer": "^6.0.3", "image-meta": "^0.2.2" diff --git a/packages/xl-pdf-exporter/package.json b/packages/xl-pdf-exporter/package.json index ca22921c0a..a15df57466 100644 --- a/packages/xl-pdf-exporter/package.json +++ b/packages/xl-pdf-exporter/package.json @@ -9,7 +9,7 @@ "directory": "packages/xl-pdf-exporter" }, "license": "GPL-3.0 OR PROPRIETARY", - "version": "0.49.0", + "version": "0.50.0", "files": [ "dist", "types", @@ -56,9 +56,9 @@ "email": "email dev" }, "dependencies": { - "@blocknote/core": "0.49.0", - "@blocknote/react": "0.49.0", - "@blocknote/xl-multi-column": "0.49.0", + "@blocknote/core": "0.50.0", + "@blocknote/react": "0.50.0", + "@blocknote/xl-multi-column": "0.50.0", "@react-pdf/renderer": "^4.3.0", "buffer": "^6.0.3", "docx": "^9.5.1" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ff28b71e0a..175bddcb3c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -4447,10 +4447,10 @@ importers: specifier: ^0.4.19 version: 0.4.24(react-dom@19.2.5(react@19.2.5))(react@19.2.5) '@blocknote/core': - specifier: 0.49.0 + specifier: 0.50.0 version: link:../core '@blocknote/react': - specifier: 0.49.0 + specifier: 0.50.0 version: link:../react devDependencies: '@types/react': @@ -4493,7 +4493,7 @@ importers: packages/code-block: dependencies: '@blocknote/core': - specifier: 0.49.0 + specifier: 0.50.0 version: link:../core '@shikijs/core': specifier: ^4 @@ -4712,10 +4712,10 @@ importers: packages/mantine: dependencies: '@blocknote/core': - specifier: 0.49.0 + specifier: 0.50.0 version: link:../core '@blocknote/react': - specifier: 0.49.0 + specifier: 0.50.0 version: link:../react '@mantine/core': specifier: ^8.3.11 || ^9.0.2 @@ -4767,7 +4767,7 @@ importers: packages/react: dependencies: '@blocknote/core': - specifier: 0.49.0 + specifier: 0.50.0 version: link:../core '@emoji-mart/data': specifier: ^1.2.1 @@ -4861,10 +4861,10 @@ importers: packages/server-util: dependencies: '@blocknote/core': - specifier: 0.49.0 + specifier: 0.50.0 version: link:../core '@blocknote/react': - specifier: 0.49.0 + specifier: 0.50.0 version: link:../react '@tiptap/core': specifier: ^3.13.0 @@ -4922,10 +4922,10 @@ importers: packages/shadcn: dependencies: '@blocknote/core': - specifier: 0.49.0 + specifier: 0.50.0 version: link:../core '@blocknote/react': - specifier: 0.49.0 + specifier: 0.50.0 version: link:../react '@radix-ui/react-avatar': specifier: ^1.1.10 @@ -5028,13 +5028,13 @@ importers: specifier: ^3.0.5 version: 3.0.5(react@19.2.5)(zod@4.3.6) '@blocknote/core': - specifier: 0.49.0 + specifier: 0.50.0 version: link:../core '@blocknote/mantine': - specifier: 0.49.0 + specifier: 0.50.0 version: link:../mantine '@blocknote/react': - specifier: 0.49.0 + specifier: 0.50.0 version: link:../react '@floating-ui/react': specifier: ^0.27.18 @@ -5203,7 +5203,7 @@ importers: specifier: ^2.0.2 version: 2.0.2(zod@4.3.6) '@blocknote/xl-ai': - specifier: 0.49.0 + specifier: 0.50.0 version: link:../xl-ai '@hono/node-server': specifier: ^1.19.5 @@ -5249,10 +5249,10 @@ importers: packages/xl-docx-exporter: dependencies: '@blocknote/core': - specifier: 0.49.0 + specifier: 0.50.0 version: link:../core '@blocknote/xl-multi-column': - specifier: 0.49.0 + specifier: 0.50.0 version: link:../xl-multi-column buffer: specifier: ^6.0.3 @@ -5304,10 +5304,10 @@ importers: packages/xl-email-exporter: dependencies: '@blocknote/core': - specifier: 0.49.0 + specifier: 0.50.0 version: link:../core '@blocknote/react': - specifier: 0.49.0 + specifier: 0.50.0 version: link:../react '@react-email/components': specifier: ^1.0.5 @@ -5362,10 +5362,10 @@ importers: packages/xl-multi-column: dependencies: '@blocknote/core': - specifier: 0.49.0 + specifier: 0.50.0 version: link:../core '@blocknote/react': - specifier: 0.49.0 + specifier: 0.50.0 version: link:../react '@tiptap/core': specifier: ^3.13.0 @@ -5429,10 +5429,10 @@ importers: packages/xl-odt-exporter: dependencies: '@blocknote/core': - specifier: 0.49.0 + specifier: 0.50.0 version: link:../core '@blocknote/xl-multi-column': - specifier: 0.49.0 + specifier: 0.50.0 version: link:../xl-multi-column '@zip.js/zip.js': specifier: ^2.8.8 @@ -5484,13 +5484,13 @@ importers: packages/xl-pdf-exporter: dependencies: '@blocknote/core': - specifier: 0.49.0 + specifier: 0.50.0 version: link:../core '@blocknote/react': - specifier: 0.49.0 + specifier: 0.50.0 version: link:../react '@blocknote/xl-multi-column': - specifier: 0.49.0 + specifier: 0.50.0 version: link:../xl-multi-column '@react-pdf/renderer': specifier: ^4.3.0 From 3794f3750a83a8a106aaff340be6af793d59b907 Mon Sep 17 00:00:00 2001 From: Nick the Sick Date: Tue, 5 May 2026 17:04:41 +0200 Subject: [PATCH 45/76] chore: rebuild examples --- .../package.json | 5 +- .../08-non-editable-block/package.json | 5 +- pnpm-lock.yaml | 122 ++---------------- 3 files changed, 12 insertions(+), 120 deletions(-) diff --git a/examples/03-ui-components/19-suggestion-menus-grouping-ordering/package.json b/examples/03-ui-components/19-suggestion-menus-grouping-ordering/package.json index 1b60d694c5..551efbea33 100644 --- a/examples/03-ui-components/19-suggestion-menus-grouping-ordering/package.json +++ b/examples/03-ui-components/19-suggestion-menus-grouping-ordering/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/examples/06-custom-schema/08-non-editable-block/package.json b/examples/06-custom-schema/08-non-editable-block/package.json index 525adc0964..a988601ed7 100644 --- a/examples/06-custom-schema/08-non-editable-block/package.json +++ b/examples/06-custom-schema/08-non-editable-block/package.json @@ -16,9 +16,8 @@ "@blocknote/mantine": "latest", "@blocknote/react": "latest", "@blocknote/shadcn": "latest", - "@mantine/core": "^8.3.11", - "@mantine/hooks": "^8.3.11", - "@mantine/utils": "^6.0.22", + "@mantine/core": "^9.0.2", + "@mantine/hooks": "^9.0.2", "react": "^19.2.3", "react-dom": "^19.2.3" }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 175bddcb3c..fc207acf3e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -2129,14 +2129,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -3267,14 +3264,11 @@ importers: specifier: latest version: link:../../../packages/shadcn '@mantine/core': - specifier: ^8.3.11 - version: 8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) + 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: ^8.3.11 - version: 8.3.18(react@19.2.5) - '@mantine/utils': - specifier: ^6.0.22 - version: 6.0.22(react@19.2.5) + specifier: ^9.0.2 + version: 9.1.1(react@19.2.5) react: specifier: ^19.2.3 version: 19.2.5 @@ -7875,13 +7869,6 @@ packages: peerDependencies: yjs: ^13.6.1 - '@mantine/core@8.3.18': - resolution: {integrity: sha512-9tph1lTVogKPjTx02eUxDUOdXacPzK62UuSqb4TdGliI54/Xgxftq0Dfqu6XuhCxn9J5MDJaNiLDvL/1KRkYqA==} - peerDependencies: - '@mantine/hooks': 8.3.18 - react: ^18.x || ^19.x - react-dom: ^18.x || ^19.x - '@mantine/core@9.1.1': resolution: {integrity: sha512-vClOZdCeZ4oLYuA/3jAOgKGQ6dXbF6ZkzpYz09Gied9nZpB7HcQeb3dcMh8UPBE4f+EM7KlYWk6dch7GoASeaA==} peerDependencies: @@ -7889,21 +7876,11 @@ packages: react: ^19.2.0 react-dom: ^19.2.0 - '@mantine/hooks@8.3.18': - resolution: {integrity: sha512-QoWr9+S8gg5050TQ06aTSxtlpGjYOpIllRbjYYXlRvZeTsUqiTbVfvQROLexu4rEaK+yy9Wwriwl9PMRgbLqPw==} - peerDependencies: - react: ^18.x || ^19.x - '@mantine/hooks@9.1.1': resolution: {integrity: sha512-tTJK73nGFyy1v214TLdvBq0be7QCoc6osfbXVuJgOH3YG85lWk9Mvvor6k+w6hC6HXSqKMqLKePyiGm83xGcMg==} peerDependencies: react: ^19.2.0 - '@mantine/utils@6.0.22': - resolution: {integrity: sha512-RSKlNZvxhMCkOFZ6slbYvZYbWjHUM+PxDQnupIOxIdsTZQQjx/BFfrfJ7kQFOP+g7MtpOds8weAetEs5obwMOQ==} - peerDependencies: - react: '>=16.8.0' - '@mapbox/node-pre-gyp@1.0.11': resolution: {integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==} hasBin: true @@ -14935,12 +14912,6 @@ packages: '@types/react': optional: true - react-textarea-autosize@8.5.9: - resolution: {integrity: sha512-U1DGlIQN5AwgjTyOEnI1oCcMuEr1pv1qOtklB2l4nyMGbHzWrI0eFsYK0zos2YWqAolJyG0IWJaqWmWj5ETh0A==} - engines: {node: '>=10'} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-timeago@8.3.0: resolution: {integrity: sha512-BeR0hj/5qqTc2+zxzBSQZMky6MmqwOtKseU3CSmcjKR5uXerej2QY34v2d+cdz11PoeVfAdWLX+qjM/UdZkUUg==} peerDependencies: @@ -15987,33 +15958,6 @@ packages: '@types/react': optional: true - use-composed-ref@1.4.0: - resolution: {integrity: sha512-djviaxuOOh7wkj0paeO1Q/4wMZ8Zrnag5H6yBvzN7AKKe8beOaED9SF5/ByLqsku8NP4zQqsvM2u3ew/tJK8/w==} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - use-isomorphic-layout-effect@1.2.1: - resolution: {integrity: sha512-tpZZ+EX0gaghDAiFR37hj5MgY6ZN55kLiPkJsKxBMZ6GZdOSPJXiOzPM984oPYZ5AnehYx5WQp1+ME8I/P/pRA==} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - use-latest@1.3.0: - resolution: {integrity: sha512-mhg3xdm9NaM8q+gLT8KryJPnRFOz1/5XPBhmDEVZK1webPzDjrPk7f/mbpeLqTgB9msytYWANxgALOCJKnLvcQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - use-sidecar@1.1.3: resolution: {integrity: sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==} engines: {node: '>=10'} @@ -18899,20 +18843,6 @@ snapshots: transitivePeerDependencies: - '@types/json-schema' - '@mantine/core@8.3.18(@mantine/hooks@8.3.18(react@19.2.5))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5)': - dependencies: - '@floating-ui/react': 0.27.19(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - '@mantine/hooks': 8.3.18(react@19.2.5) - clsx: 2.1.1 - react: 19.2.5 - react-dom: 19.2.5(react@19.2.5) - react-number-format: 5.4.5(react-dom@19.2.5(react@19.2.5))(react@19.2.5) - react-remove-scroll: 2.7.2(@types/react@19.2.14)(react@19.2.5) - react-textarea-autosize: 8.5.9(@types/react@19.2.14)(react@19.2.5) - type-fest: 4.41.0 - transitivePeerDependencies: - - '@types/react' - '@mantine/core@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)': dependencies: '@floating-ui/react': 0.27.19(react-dom@19.2.5(react@19.2.5))(react@19.2.5) @@ -18926,18 +18856,10 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@mantine/hooks@8.3.18(react@19.2.5)': - dependencies: - react: 19.2.5 - '@mantine/hooks@9.1.1(react@19.2.5)': dependencies: react: 19.2.5 - '@mantine/utils@6.0.22(react@19.2.5)': - dependencies: - react: 19.2.5 - '@mapbox/node-pre-gyp@1.0.11': dependencies: detect-libc: 2.1.2 @@ -27209,15 +27131,6 @@ snapshots: optionalDependencies: '@types/react': 19.2.14 - react-textarea-autosize@8.5.9(@types/react@19.2.14)(react@19.2.5): - dependencies: - '@babel/runtime': 7.29.2 - react: 19.2.5 - use-composed-ref: 1.4.0(@types/react@19.2.14)(react@19.2.5) - use-latest: 1.3.0(@types/react@19.2.14)(react@19.2.5) - transitivePeerDependencies: - - '@types/react' - react-timeago@8.3.0(react@19.2.5): dependencies: react: 19.2.5 @@ -28534,25 +28447,6 @@ snapshots: optionalDependencies: '@types/react': 19.2.14 - use-composed-ref@1.4.0(@types/react@19.2.14)(react@19.2.5): - dependencies: - react: 19.2.5 - optionalDependencies: - '@types/react': 19.2.14 - - use-isomorphic-layout-effect@1.2.1(@types/react@19.2.14)(react@19.2.5): - dependencies: - react: 19.2.5 - optionalDependencies: - '@types/react': 19.2.14 - - use-latest@1.3.0(@types/react@19.2.14)(react@19.2.5): - dependencies: - react: 19.2.5 - use-isomorphic-layout-effect: 1.2.1(@types/react@19.2.14)(react@19.2.5) - optionalDependencies: - '@types/react': 19.2.14 - use-sidecar@1.1.3(@types/react@19.2.14)(react@19.2.5): dependencies: detect-node-es: 1.1.0 From 8ceea9058626d2b79219dbbc3ac1c78af61fc55d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 May 2026 22:42:06 +0200 Subject: [PATCH 46/76] chore: bump postcss from 8.5.12 to 8.5.14 (#2711) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 60 +++++++++++++++++++++++++++----------------------- 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fc207acf3e..ae431ff9dd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -345,7 +345,7 @@ importers: version: 1.6.4 postcss: specifier: ^8.5.6 - version: 8.5.12 + version: 8.5.14 serve: specifier: ^14.2.6 version: 14.2.6 @@ -4950,7 +4950,7 @@ importers: version: 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.14))(@types/react@19.2.14)(react-dom@19.2.5(react@19.2.5))(react@19.2.5) autoprefixer: specifier: ^10.4.21 - version: 10.4.21(postcss@8.5.12) + version: 10.4.21(postcss@8.5.14) class-variance-authority: specifier: ^0.7.1 version: 0.7.1 @@ -5669,7 +5669,7 @@ importers: version: 6.0.5(zod@4.3.6) autoprefixer: specifier: 10.4.21 - version: 10.4.21(postcss@8.5.12) + version: 10.4.21(postcss@8.5.14) docx: specifier: ^9.5.1 version: 9.5.1 @@ -12534,6 +12534,9 @@ packages: fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + fast-uri@3.1.2: + resolution: {integrity: sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==} + fast-xml-builder@1.1.4: resolution: {integrity: sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==} @@ -14068,8 +14071,8 @@ packages: nan@2.26.2: resolution: {integrity: sha512-0tTvBTYkt3tdGw22nrAy50x7gpbGCCFH3AFcyS5WiUu7Eu4vWlri1woE6qHBSfy11vksDqkiwjOnlR7WV8G1Hw==} - nanoid@3.3.11: - resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==} + nanoid@3.3.12: + resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true @@ -14529,8 +14532,8 @@ packages: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} - postcss@8.5.12: - resolution: {integrity: sha512-W62t/Se6rA0Az3DfCL0AqJwXuKwBeYg6nOaIgzP+xZ7N5BFCI7DYi1qs6ygUYT6rvfi6t9k65UMLJC+PHZpDAA==} + postcss@8.5.14: + resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} engines: {node: ^10 || ^12 || >=14} postgres-array@2.0.0: @@ -15978,6 +15981,7 @@ packages: uuid@9.0.1: resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true valibot@1.3.1: @@ -21515,7 +21519,7 @@ snapshots: '@alloc/quick-lru': 5.2.0 '@tailwindcss/node': 4.2.2 '@tailwindcss/oxide': 4.2.2 - postcss: 8.5.12 + postcss: 8.5.14 tailwindcss: 4.2.2 '@tailwindcss/vite@4.2.2(vite@8.0.8(@types/node@25.6.0)(esbuild@0.27.5)(jiti@2.6.1)(terser@5.46.2)(tsx@4.21.0)(yaml@2.8.3))': @@ -22608,7 +22612,7 @@ snapshots: ajv@8.20.0: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.1.0 + fast-uri: 3.1.2 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -22747,14 +22751,14 @@ snapshots: stubborn-fs: 2.0.0 when-exit: 2.1.5 - autoprefixer@10.4.21(postcss@8.5.12): + autoprefixer@10.4.21(postcss@8.5.14): dependencies: browserslist: 4.28.2 caniuse-lite: 1.0.30001784 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 - postcss: 8.5.12 + postcss: 8.5.14 postcss-value-parser: 4.2.0 available-typed-arrays@1.0.7: @@ -23805,8 +23809,8 @@ snapshots: '@next/eslint-plugin-next': 16.2.2 eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-react: 7.37.5(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-react-hooks: 7.0.1(eslint@9.39.4(jiti@2.6.1)) @@ -23855,7 +23859,7 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)): + eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)): dependencies: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 @@ -23866,7 +23870,7 @@ snapshots: tinyglobby: 0.2.16 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -23880,14 +23884,14 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) + eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.4(jiti@2.6.1)) transitivePeerDependencies: - supports-color @@ -23928,7 +23932,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -23939,7 +23943,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.39.4(jiti@2.6.1) eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)))(eslint@9.39.4(jiti@2.6.1)) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.58.0(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -24319,6 +24323,8 @@ snapshots: fast-uri@3.1.0: {} + fast-uri@3.1.2: {} + fast-xml-builder@1.1.4: dependencies: path-expression-matcher: 1.2.0 @@ -26243,7 +26249,7 @@ snapshots: nan@2.26.2: optional: true - nanoid@3.3.11: {} + nanoid@3.3.12: {} nanoid@4.0.2: {} @@ -26754,13 +26760,13 @@ snapshots: postcss@8.4.31: dependencies: - nanoid: 3.3.11 + nanoid: 3.3.12 picocolors: 1.1.1 source-map-js: 1.2.1 - postcss@8.5.12: + postcss@8.5.14: dependencies: - nanoid: 3.3.11 + nanoid: 3.3.12 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -28571,7 +28577,7 @@ snapshots: vite@5.4.21(@types/node@20.19.37)(lightningcss@1.32.0)(terser@5.46.2): dependencies: esbuild: 0.21.5 - postcss: 8.5.12 + postcss: 8.5.14 rollup: 4.60.1 optionalDependencies: '@types/node': 20.19.37 @@ -28583,7 +28589,7 @@ snapshots: dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 - postcss: 8.5.12 + postcss: 8.5.14 rolldown: 1.0.0-rc.15 tinyglobby: 0.2.16 optionalDependencies: @@ -28599,7 +28605,7 @@ snapshots: dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 - postcss: 8.5.12 + postcss: 8.5.14 rolldown: 1.0.0-rc.15 tinyglobby: 0.2.16 optionalDependencies: @@ -28616,7 +28622,7 @@ snapshots: dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 - postcss: 8.5.12 + postcss: 8.5.14 rolldown: 1.0.0-rc.15 tinyglobby: 0.2.16 optionalDependencies: From 50b132895642f39953b99552a34eb518e9772c0e Mon Sep 17 00:00:00 2001 From: Nick Perez Date: Wed, 6 May 2026 06:49:55 +0200 Subject: [PATCH 47/76] feat(markdown): replace unified.js with custom markdown parser/serializer (#2624) We've decided to move away from shipping the unified.js ecosystem for parsing and serializing to markdown and instead use our own custom parser/serializer. This should significantly reduce bundle-size, if you need to handle more complex edge cases with markdown, we would recommend preprocessing it beforehand and inserting the result into the editor as HTML (which we have better parsing support for). --- .../content/docs/features/import/markdown.mdx | 6 + .../docs/foundations/supported-formats.mdx | 14 + packages/core/package.json | 12 - .../api/exporters/markdown/htmlToMarkdown.ts | 722 ++++++++ .../exporters/markdown/markdownExporter.ts | 23 +- .../util/addSpacesToCheckboxesRehypePlugin.ts | 42 - .../convertVideoToMarkdownRehypePlugin.ts | 19 - .../util/removeUnderlinesRehypePlugin.ts | 39 - .../__snapshots__/nestedLists.test.ts.snap | 229 +-- .../api/parsers/html/util/nestedLists.test.ts | 13 +- .../api/parsers/markdown/markdownToHtml.ts | 1181 +++++++++++++ .../src/api/parsers/markdown/parseMarkdown.ts | 103 +- .../ServerBlockNoteEditor.test.ts.snap | 9 +- packages/xl-ai/package.json | 3 - pnpm-lock.yaml | 268 --- .../blocknoteHTML/audio/basic.html | 22 + .../blocknoteHTML/audio/button.html | 20 + .../blocknoteHTML/audio/noName.html | 21 + .../blocknoteHTML/complex/document.html | 90 + .../blocknoteHTML/heading/h1.html | 9 + .../blocknoteHTML/heading/h2.html | 9 + .../blocknoteHTML/heading/h3.html | 9 + .../blocknoteHTML/heading/h4.html | 9 + .../blocknoteHTML/heading/h5.html | 9 + .../blocknoteHTML/heading/h6.html | 9 + .../blocknoteHTML/heading/styled.html | 12 + .../blocknoteHTML/heading/toggleable.html | 38 + .../blocknoteHTML/image/withCaption.html | 31 + .../blocknoteHTML/link/plainUrl.html | 18 + .../blocknoteHTML/link/urlWithParens.html | 18 + .../blocknoteHTML/link/withCode.html | 21 + .../lists/numberedListStart.html | 25 + .../blocknoteHTML/paragraph/multiple.html | 23 + .../blocknoteHTML/quote/basic.html | 9 + .../blocknoteHTML/quote/multiple.html | 16 + .../blocknoteHTML/quote/nested.html | 18 + .../blocknoteHTML/quote/styled.html | 14 + .../blocknoteHTML/quote/withLink.html | 19 + .../blocknoteHTML/style/backgroundColor.html | 11 + .../blocknoteHTML/style/bold.html | 11 + .../blocknoteHTML/style/boldItalicStrike.html | 15 + .../blocknoteHTML/style/code.html | 11 + .../blocknoteHTML/style/combined.html | 13 + .../blocknoteHTML/style/italic.html | 11 + .../blocknoteHTML/style/mixedInParagraph.html | 15 + .../blocknoteHTML/style/strike.html | 11 + .../blocknoteHTML/style/textColor.html | 11 + .../blocknoteHTML/style/underline.html | 11 + .../blocknoteHTML/table/advancedExample.html | 82 + .../table/cellTextAlignment.html | 33 + .../blocknoteHTML/table/emptyCells.html | 37 + .../blocknoteHTML/table/hardBreakInCell.html | 33 + .../table/headerRowsAndCols.html | 44 + .../blocknoteHTML/table/linksInCells.html | 56 + .../blocknoteHTML/table/singleCell.html | 25 + .../table/styledCellContent.html | 45 + .../blocknoteHTML/video/withCaption.html | 32 + .../__snapshots__/html/audio/basic.html | 5 + .../__snapshots__/html/audio/button.html | 1 + .../__snapshots__/html/audio/noName.html | 4 + .../__snapshots__/html/complex/document.html | 30 + .../export/__snapshots__/html/heading/h1.html | 1 + .../export/__snapshots__/html/heading/h2.html | 1 + .../export/__snapshots__/html/heading/h3.html | 1 + .../export/__snapshots__/html/heading/h4.html | 1 + .../export/__snapshots__/html/heading/h5.html | 1 + .../export/__snapshots__/html/heading/h6.html | 1 + .../__snapshots__/html/heading/styled.html | 4 + .../html/heading/toggleable.html | 6 + .../__snapshots__/html/image/withCaption.html | 8 + .../__snapshots__/html/link/plainUrl.html | 10 + .../html/link/urlWithParens.html | 10 + .../__snapshots__/html/link/withCode.html | 13 + .../html/lists/numberedListStart.html | 8 + .../html/paragraph/multiple.html | 3 + .../__snapshots__/html/quote/basic.html | 1 + .../__snapshots__/html/quote/multiple.html | 2 + .../__snapshots__/html/quote/nested.html | 2 + .../__snapshots__/html/quote/styled.html | 6 + .../__snapshots__/html/quote/withLink.html | 11 + .../html/style/backgroundColor.html | 8 + .../export/__snapshots__/html/style/bold.html | 3 + .../html/style/boldItalicStrike.html | 7 + .../export/__snapshots__/html/style/code.html | 3 + .../__snapshots__/html/style/combined.html | 5 + .../__snapshots__/html/style/italic.html | 3 + .../html/style/mixedInParagraph.html | 7 + .../__snapshots__/html/style/strike.html | 3 + .../__snapshots__/html/style/textColor.html | 8 + .../__snapshots__/html/style/underline.html | 3 + .../html/table/advancedExample.html | 67 + .../html/table/cellTextAlignment.html | 18 + .../__snapshots__/html/table/emptyCells.html | 22 + .../html/table/hardBreakInCell.html | 18 + .../html/table/headerRowsAndCols.html | 29 + .../html/table/linksInCells.html | 41 + .../__snapshots__/html/table/singleCell.html | 10 + .../html/table/styledCellContent.html | 30 + .../__snapshots__/html/video/withCaption.html | 8 + .../__snapshots__/markdown/audio/basic.md | 1 + .../__snapshots__/markdown/audio/button.md | 1 + .../__snapshots__/markdown/audio/noName.md | 1 + .../markdown/complex/document.md | 19 + .../__snapshots__/markdown/complex/misc.md | 2 +- .../__snapshots__/markdown/file/noName.md | 2 +- .../__snapshots__/markdown/hardbreak/only.md | 1 + .../__snapshots__/markdown/heading/h1.md | 1 + .../__snapshots__/markdown/heading/h2.md | 1 + .../__snapshots__/markdown/heading/h3.md | 1 + .../__snapshots__/markdown/heading/h4.md | 1 + .../__snapshots__/markdown/heading/h5.md | 1 + .../__snapshots__/markdown/heading/h6.md | 1 + .../__snapshots__/markdown/heading/styled.md | 1 + .../markdown/heading/toggleable.md | 3 + .../markdown/image/withCaption.md | 3 + .../__snapshots__/markdown/link/plainUrl.md | 1 + .../markdown/link/urlWithParens.md | 1 + .../__snapshots__/markdown/link/withCode.md | 1 + .../markdown/lists/numberedListStart.md | 3 + .../__snapshots__/markdown/pageBreak/basic.md | 1 + .../__snapshots__/markdown/paragraph/empty.md | 1 + .../markdown/paragraph/multiple.md | 5 + .../__snapshots__/markdown/quote/basic.md | 1 + .../__snapshots__/markdown/quote/multiple.md | 3 + .../__snapshots__/markdown/quote/nested.md | 3 + .../__snapshots__/markdown/quote/styled.md | 1 + .../__snapshots__/markdown/quote/withLink.md | 1 + .../markdown/style/backgroundColor.md | 1 + .../__snapshots__/markdown/style/bold.md | 1 + .../markdown/style/boldItalicStrike.md | 1 + .../__snapshots__/markdown/style/code.md | 1 + .../__snapshots__/markdown/style/combined.md | 1 + .../__snapshots__/markdown/style/italic.md | 1 + .../markdown/style/mixedInParagraph.md | 1 + .../__snapshots__/markdown/style/strike.md | 1 + .../__snapshots__/markdown/style/textColor.md | 1 + .../__snapshots__/markdown/style/underline.md | 1 + .../markdown/table/advancedExample.md | 6 + .../markdown/table/cellTextAlignment.md | 3 + .../markdown/table/emptyCells.md | 4 + .../markdown/table/hardBreakInCell.md | 4 + .../markdown/table/headerRowsAndCols.md | 3 + .../markdown/table/linksInCells.md | 4 + .../markdown/table/singleCell.md | 3 + .../markdown/table/styledCellContent.md | 4 + .../markdown/video/withCaption.md | 3 + .../__snapshots__/nodes/audio/basic.json | 20 + .../__snapshots__/nodes/audio/button.json | 20 + .../__snapshots__/nodes/audio/noName.json | 20 + .../__snapshots__/nodes/complex/document.json | 219 +++ .../__snapshots__/nodes/heading/h1.json | 26 + .../__snapshots__/nodes/heading/h2.json | 26 + .../__snapshots__/nodes/heading/h3.json | 26 + .../__snapshots__/nodes/heading/h4.json | 26 + .../__snapshots__/nodes/heading/h5.json | 26 + .../__snapshots__/nodes/heading/h6.json | 26 + .../__snapshots__/nodes/heading/styled.json | 35 + .../nodes/heading/toggleable.json | 53 + .../nodes/image/withCaption.json | 22 + .../__snapshots__/nodes/link/plainUrl.json | 32 + .../nodes/link/urlWithParens.json | 32 + .../__snapshots__/nodes/link/withCode.json | 49 + .../nodes/lists/numberedListStart.json | 48 + .../nodes/paragraph/multiple.json | 68 + .../__snapshots__/nodes/quote/basic.json | 23 + .../__snapshots__/nodes/quote/multiple.json | 44 + .../__snapshots__/nodes/quote/nested.json | 50 + .../__snapshots__/nodes/quote/styled.json | 45 + .../__snapshots__/nodes/quote/withLink.json | 35 + .../nodes/style/backgroundColor.json | 32 + .../__snapshots__/nodes/style/bold.json | 29 + .../nodes/style/boldItalicStrike.json | 35 + .../__snapshots__/nodes/style/code.json | 29 + .../__snapshots__/nodes/style/combined.json | 32 + .../__snapshots__/nodes/style/italic.json | 29 + .../nodes/style/mixedInParagraph.json | 60 + .../__snapshots__/nodes/style/strike.json | 29 + .../__snapshots__/nodes/style/textColor.json | 32 + .../__snapshots__/nodes/style/underline.json | 29 + .../nodes/table/advancedExample.json | 265 +++ .../nodes/table/cellTextAlignment.json | 89 + .../__snapshots__/nodes/table/emptyCells.json | 104 ++ .../nodes/table/hardBreakInCell.json | 74 + .../nodes/table/headerRowsAndCols.json | 160 ++ .../nodes/table/linksInCells.json | 136 ++ .../__snapshots__/nodes/table/singleCell.json | 45 + .../nodes/table/styledCellContent.json | 136 ++ .../nodes/video/withCaption.json | 22 + .../export/exportTestInstances.ts | 1480 ++++++++++++++++- .../__snapshots__/markdown/markdown/bold.json | 21 + .../markdown/markdown/boldItalic.json | 22 + .../markdown/markdown/bulletList.json | 36 + .../markdown/markdown/checkList.json | 38 + .../markdown/markdown/codeBlock.json | 17 + .../markdown/markdown/complexDocument.json | 106 ++ .../markdown/markdown/deeplyNestedLists.json | 144 ++ .../markdown/markdown/divider.json | 43 + .../markdown/markdown/hardBreak.json | 20 + .../markdown/markdown/headingLevels.json | 59 + .../markdown/markdown/image.json | 16 + .../markdown/markdown/inlineCode.json | 21 + .../markdown/markdown/italic.json | 21 + .../__snapshots__/markdown/markdown/link.json | 35 + .../markdown/markdown/mixedStyles.json | 50 + .../markdown/markdown/multipleParagraphs.json | 36 + .../markdown/markdown/nestedLists.json | 54 + .../markdown/markdown/numberedList.json | 36 + .../markdown/markdown/paragraph.json | 19 + .../markdown/markdown/quote.json | 18 + .../markdown/specialCharEscaping.json | 124 ++ .../markdown/markdown/strike.json | 21 + .../markdown/markdown/table.json | 123 ++ .../markdown/markdown/video.json | 16 + .../exportParseEqualityTestInstances.ts | 558 +++++++ .../exportParseEquality/runTests.test.ts | 14 + .../markdown/adjacentFormattedRuns.json | 35 + .../__snapshots__/markdown/adjacentLinks.json | 36 + .../markdown/backslashEscapes.json | 19 + .../markdown/bareAngleBrackets.json | 19 + .../markdown/blockHtmlComment.json | 19 + .../__snapshots__/markdown/blockHtmlDiv.json | 19 + .../blockHtmlInterruptsParagraph.json | 36 + .../markdown/blockquoteLazyContinuation.json | 18 + .../markdown/blockquoteMultiline.json | 18 + .../markdown/blockquoteWithCode.json | 30 + .../markdown/blockquoteWithLink.json | 34 + .../__snapshots__/markdown/boldOnly.json | 21 + .../markdown/boldUnderscore.json | 21 + .../markdown/checkListBasic.json | 56 + .../markdown/checkListMixed.json | 55 + .../markdown/checkListNested.json | 57 + .../markdown/codeBlockBasic.json | 17 + .../markdown/codeBlockIndented.json | 17 + .../markdown/codeBlockPython.json | 18 + .../markdown/codeBlockTildes.json | 17 + .../markdown/codeBlockWithLanguage.json | 18 + .../markdown/codeBlockWithSpecialChars.json | 19 + .../markdown/codeSpanWithNewline.json | 21 + .../markdown/complexDocument.json | 442 +++++ .../markdown/deeplyNestedLists.json | 73 + .../__snapshots__/markdown/emptyString.json | 13 + .../markdown/escapedDelimiterInEmphasis.json | 21 + .../markdown/hardBreakBackslash.json | 20 + .../markdown/hardBreakMultiple.json | 21 + .../markdown/hardBreakTwoSpaces.json | 20 + .../__snapshots__/markdown/headingH1.json | 21 + .../__snapshots__/markdown/headingH2.json | 21 + .../__snapshots__/markdown/headingH3.json | 21 + .../__snapshots__/markdown/headingH4.json | 21 + .../__snapshots__/markdown/headingH5.json | 21 + .../__snapshots__/markdown/headingH6.json | 21 + .../markdown/headingInternalPadding.json | 21 + .../markdown/headingThenCode.json | 36 + .../markdown/headingTrailingWhitespace.json | 21 + .../markdown/headingWithInlineStyles.json | 52 + .../markdown/horizontalRuleAsterisks.json | 43 + .../markdown/horizontalRuleDashes.json | 43 + .../markdown/horizontalRuleUnderscores.json | 43 + .../markdown/imageAngleBracketUrl.json | 16 + .../markdown/imageNestedBracketsAlt.json | 16 + .../__snapshots__/markdown/imageWithAlt.json | 16 + .../markdown/imageWithTitle.json | 16 + .../__snapshots__/markdown/inlineCode.json | 31 + .../markdown/inlineCodeWithSpecialChars.json | 31 + .../__snapshots__/markdown/inlineHtmlTag.json | 31 + .../markdown/inlineHtmlVoidTag.json | 20 + .../markdown/inlineHtmlWithAttributes.json | 47 + .../__snapshots__/markdown/inlineImage.json | 19 + .../__snapshots__/markdown/italicOnly.json | 21 + .../markdown/italicUnderscore.json | 21 + .../__snapshots__/markdown/linkAndText.json | 35 + .../__snapshots__/markdown/linkBasic.json | 25 + .../markdown/linkInParagraph.json | 35 + .../markdown/linkWithStyledContent.json | 27 + .../__snapshots__/markdown/linkWithTitle.json | 25 + .../markdown/listWithStyledItems.json | 83 + .../markdown/mixedInlineContent.json | 78 + .../markdown/mixedListTypes.json | 90 + .../markdown/multipleImages.json | 30 + .../markdown/multipleParagraphs.json | 53 + .../markdown/nestedBulletLists.json | 89 + .../markdown/nestedEmphasis.json | 22 + .../markdown/nestedEmphasisComplex.json | 36 + .../markdown/nestedOrderedLists.json | 71 + .../markdown/onlyWhitespace.json | 13 + .../markdown/orderedListStart.json | 54 + .../markdown/paragraphContinuation.json | 19 + .../markdown/paragraphLeadingIndent.json | 19 + .../__snapshots__/markdown/setextH1.json | 21 + .../__snapshots__/markdown/setextH2.json | 21 + .../markdown/strikethroughOnly.json | 21 + .../markdown/tableAlignment.json | 132 ++ .../__snapshots__/markdown/tableBasic.json | 135 ++ .../markdown/tableFollowedByParagraph.json | 114 ++ .../__snapshots__/markdown/tablePipeless.json | 97 ++ .../markdown/tableThreeColumns.json | 132 ++ .../markdown/tableWithInlineFormatting.json | 141 ++ .../markdown/tableWithLinks.json | 103 ++ .../parse/parseTestInstances.ts | 766 +++++++++ .../exportParseEqualityTestExecutors.ts | 28 + 300 files changed, 13374 insertions(+), 715 deletions(-) create mode 100644 packages/core/src/api/exporters/markdown/htmlToMarkdown.ts delete mode 100644 packages/core/src/api/exporters/markdown/util/addSpacesToCheckboxesRehypePlugin.ts delete mode 100644 packages/core/src/api/exporters/markdown/util/convertVideoToMarkdownRehypePlugin.ts delete mode 100644 packages/core/src/api/exporters/markdown/util/removeUnderlinesRehypePlugin.ts create mode 100644 packages/core/src/api/parsers/markdown/markdownToHtml.ts create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/audio/basic.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/audio/button.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/audio/noName.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/complex/document.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/h1.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/h2.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/h3.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/h4.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/h5.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/h6.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/styled.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/toggleable.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/image/withCaption.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/plainUrl.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/urlWithParens.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/withCode.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/lists/numberedListStart.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/paragraph/multiple.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/quote/basic.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/quote/multiple.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/quote/nested.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/quote/styled.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/quote/withLink.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/backgroundColor.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/bold.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/boldItalicStrike.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/code.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/combined.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/italic.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/mixedInParagraph.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/strike.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/textColor.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/underline.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/advancedExample.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/cellTextAlignment.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/emptyCells.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/hardBreakInCell.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/headerRowsAndCols.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/linksInCells.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/singleCell.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/styledCellContent.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/video/withCaption.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/audio/basic.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/audio/button.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/audio/noName.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/complex/document.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/h1.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/h2.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/h3.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/h4.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/h5.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/h6.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/styled.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/toggleable.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/image/withCaption.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/link/plainUrl.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/link/urlWithParens.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/link/withCode.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/lists/numberedListStart.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/paragraph/multiple.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/quote/basic.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/quote/multiple.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/quote/nested.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/quote/styled.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/quote/withLink.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/style/backgroundColor.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/style/bold.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/style/boldItalicStrike.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/style/code.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/style/combined.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/style/italic.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/style/mixedInParagraph.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/style/strike.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/style/textColor.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/style/underline.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/table/advancedExample.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/table/cellTextAlignment.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/table/emptyCells.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/table/hardBreakInCell.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/table/headerRowsAndCols.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/table/linksInCells.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/table/singleCell.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/table/styledCellContent.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/video/withCaption.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/audio/basic.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/audio/button.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/audio/noName.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/complex/document.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/h1.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/h2.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/h3.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/h4.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/h5.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/h6.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/styled.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/toggleable.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/image/withCaption.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/link/plainUrl.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/link/urlWithParens.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/link/withCode.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/lists/numberedListStart.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/paragraph/multiple.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/quote/basic.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/quote/multiple.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/quote/nested.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/quote/styled.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/quote/withLink.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/backgroundColor.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/bold.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/boldItalicStrike.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/code.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/combined.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/italic.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/mixedInParagraph.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/strike.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/textColor.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/underline.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/advancedExample.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/cellTextAlignment.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/emptyCells.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/hardBreakInCell.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/headerRowsAndCols.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/linksInCells.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/singleCell.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/styledCellContent.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/video/withCaption.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/audio/basic.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/audio/button.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/audio/noName.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/complex/document.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/h1.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/h2.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/h3.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/h4.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/h5.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/h6.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/styled.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/toggleable.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/image/withCaption.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/plainUrl.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/urlWithParens.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/withCode.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/lists/numberedListStart.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/paragraph/multiple.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/quote/basic.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/quote/multiple.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/quote/nested.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/quote/styled.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/quote/withLink.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/backgroundColor.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/bold.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/boldItalicStrike.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/code.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/combined.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/italic.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/mixedInParagraph.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/strike.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/textColor.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/underline.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/advancedExample.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/cellTextAlignment.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/emptyCells.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/hardBreakInCell.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/headerRowsAndCols.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/linksInCells.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/singleCell.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/styledCellContent.json create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/video/withCaption.json create mode 100644 tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/bold.json create mode 100644 tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/boldItalic.json create mode 100644 tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/bulletList.json create mode 100644 tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/checkList.json create mode 100644 tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/codeBlock.json create mode 100644 tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/complexDocument.json create mode 100644 tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/deeplyNestedLists.json create mode 100644 tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/divider.json create mode 100644 tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/hardBreak.json create mode 100644 tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/headingLevels.json create mode 100644 tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/image.json create mode 100644 tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/inlineCode.json create mode 100644 tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/italic.json create mode 100644 tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/link.json create mode 100644 tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/mixedStyles.json create mode 100644 tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/multipleParagraphs.json create mode 100644 tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/nestedLists.json create mode 100644 tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/numberedList.json create mode 100644 tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/paragraph.json create mode 100644 tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/quote.json create mode 100644 tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/specialCharEscaping.json create mode 100644 tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/strike.json create mode 100644 tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/table.json create mode 100644 tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/video.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/adjacentFormattedRuns.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/adjacentLinks.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/backslashEscapes.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/bareAngleBrackets.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockHtmlComment.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockHtmlDiv.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockHtmlInterruptsParagraph.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockquoteLazyContinuation.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockquoteMultiline.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockquoteWithCode.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockquoteWithLink.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/boldOnly.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/boldUnderscore.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/checkListBasic.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/checkListMixed.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/checkListNested.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/codeBlockBasic.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/codeBlockIndented.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/codeBlockPython.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/codeBlockTildes.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/codeBlockWithLanguage.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/codeBlockWithSpecialChars.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/codeSpanWithNewline.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/complexDocument.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/deeplyNestedLists.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/emptyString.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/escapedDelimiterInEmphasis.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/hardBreakBackslash.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/hardBreakMultiple.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/hardBreakTwoSpaces.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingH1.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingH2.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingH3.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingH4.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingH5.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingH6.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingInternalPadding.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingThenCode.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingTrailingWhitespace.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingWithInlineStyles.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/horizontalRuleAsterisks.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/horizontalRuleDashes.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/horizontalRuleUnderscores.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/imageAngleBracketUrl.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/imageNestedBracketsAlt.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/imageWithAlt.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/imageWithTitle.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/inlineCode.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/inlineCodeWithSpecialChars.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/inlineHtmlTag.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/inlineHtmlVoidTag.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/inlineHtmlWithAttributes.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/inlineImage.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/italicOnly.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/italicUnderscore.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/linkAndText.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/linkBasic.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/linkInParagraph.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/linkWithStyledContent.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/linkWithTitle.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/listWithStyledItems.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/mixedInlineContent.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/mixedListTypes.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/multipleImages.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/multipleParagraphs.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/nestedBulletLists.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/nestedEmphasis.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/nestedEmphasisComplex.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/nestedOrderedLists.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/onlyWhitespace.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/orderedListStart.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/paragraphContinuation.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/paragraphLeadingIndent.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/setextH1.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/setextH2.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/strikethroughOnly.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/tableAlignment.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/tableBasic.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/tableFollowedByParagraph.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/tablePipeless.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/tableThreeColumns.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/tableWithInlineFormatting.json create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/tableWithLinks.json diff --git a/docs/content/docs/features/import/markdown.mdx b/docs/content/docs/features/import/markdown.mdx index e95d71dabd..3106fd8541 100644 --- a/docs/content/docs/features/import/markdown.mdx +++ b/docs/content/docs/features/import/markdown.mdx @@ -15,6 +15,12 @@ imageTitle: Markdown Import BlockNote can import Markdown content into Block objects. Note that this is considered "lossy", as not all Markdown structures can be entirely represented as BlockNote blocks. + + **BlockNote ships a minimal Markdown parser.** It covers the common subset used by most users (CommonMark + GFM basics: headings, paragraphs, lists, task lists, tables, code, blockquotes, links, images, emphasis, strikethrough, hard breaks). + + There are many Markdown specifications (CommonMark, GFM, MDX, Pandoc, and various dialect-specific extensions) and supporting all of them inside a rich text editor is not a goal of BlockNote. **If you need to handle Markdown beyond this minimal subset, parse it to HTML yourself with a parser of your choice (e.g. [`marked`](https://github.com/markedjs/marked), [`markdown-it`](https://github.com/markdown-it/markdown-it), or [`remark`](https://github.com/remarkjs/remark)) and pass the resulting HTML to [`tryParseHTMLToBlocks`](/docs/features/import) instead.** BlockNote's HTML interoperability is much broader, since HTML is the format the editor uses internally for arbitrary pastes. + + ## Markdown to Blocks Use `tryParseMarkdownToBlocks` to try parsing a Markdown string into `Block` objects: diff --git a/docs/content/docs/foundations/supported-formats.mdx b/docs/content/docs/foundations/supported-formats.mdx index 4b5c89e71c..c5e302e19a 100644 --- a/docs/content/docs/foundations/supported-formats.mdx +++ b/docs/content/docs/foundations/supported-formats.mdx @@ -165,6 +165,20 @@ export default function App() { BlockNote also supports converting to and from Markdown. However, converting to and from Markdown is a **lossy** conversion. + + BlockNote ships a **minimal** Markdown parser/serializer that targets the + common CommonMark + GFM subset (headings, paragraphs, lists, task lists, + tables, code, blockquotes, links, images, emphasis, strikethrough, hard + breaks). Supporting every Markdown dialect (CommonMark, GFM, MDX, Pandoc, + and various extensions) is not a goal for the editor. If your use case + requires Markdown features beyond this subset, **parse the Markdown to + HTML yourself** (with a library like [`marked`](https://github.com/markedjs/marked), + [`markdown-it`](https://github.com/markdown-it/markdown-it), or + [`remark`](https://github.com/remarkjs/remark)) and feed the resulting + HTML to `editor.tryParseHTMLToBlocks` — HTML is the format BlockNote uses + for arbitrary pastes and has much broader interoperability. + + ### Saving as Markdown To convert the document to a Markdown string, you can use `editor.blocksToMarkdownLossy()`: diff --git a/packages/core/package.json b/packages/core/package.json index 9ed2e8bc45..3902c92d40 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -107,7 +107,6 @@ "@tiptap/pm": "^3.13.0", "emoji-mart": "^5.6.0", "fast-deep-equal": "^3.1.3", - "hast-util-from-dom": "^5.0.1", "lib0": "^0.2.99", "prosemirror-highlight": "^0.15.1", "prosemirror-model": "^1.25.4", @@ -115,22 +114,11 @@ "prosemirror-tables": "^1.8.3", "prosemirror-transform": "^1.11.0", "prosemirror-view": "^1.41.4", - "rehype-format": "^5.0.1", - "rehype-parse": "^9.0.1", - "rehype-remark": "^10.0.1", - "rehype-stringify": "^10.0.1", - "remark-gfm": "^4.0.1", - "remark-parse": "^11.0.0", - "remark-rehype": "^11.1.2", - "remark-stringify": "^11.0.0", - "unified": "^11.0.5", - "unist-util-visit": "^5.0.0", "y-prosemirror": "^1.3.7", "y-protocols": "^1.0.6", "yjs": "^13.6.27" }, "devDependencies": { - "@types/hast": "^3.0.4", "eslint": "^8.57.1", "jsdom": "^29.0.2", "rimraf": "^5.0.10", diff --git a/packages/core/src/api/exporters/markdown/htmlToMarkdown.ts b/packages/core/src/api/exporters/markdown/htmlToMarkdown.ts new file mode 100644 index 0000000000..40c2542e6a --- /dev/null +++ b/packages/core/src/api/exporters/markdown/htmlToMarkdown.ts @@ -0,0 +1,722 @@ +/** + * Custom HTML-to-Markdown serializer for BlockNote. + * Replaces the unified/rehype-remark pipeline with a direct DOM-based implementation. + * + * Input: HTML string from createExternalHTMLExporter + * Output: GFM-compatible markdown string + */ + +/** + * Convert an HTML string (from BlockNote's external HTML exporter) to markdown. + */ +export function htmlToMarkdown(html: string): string { + // Use a temporary element to parse HTML. This works in both browser and + // server (JSDOM) environments, unlike `new DOMParser()` which may not be + // globally available in Node.js. + const container = document.createElement("div"); + container.innerHTML = html; + const result = serializeChildren(container, { indent: "", inList: false }); + return result.trim() + "\n"; +} + +interface SerializeContext { + indent: string; // current indentation prefix for list nesting + inList: boolean; // whether we're inside a list +} + +// ─── Main Serializer ───────────────────────────────────────────────────────── + +function serializeChildren(node: Node, ctx: SerializeContext): string { + let result = ""; + const children = Array.from(node.childNodes); + + for (let i = 0; i < children.length; i++) { + const child = children[i]; + result += serializeNode(child, ctx); + } + + return result; +} + +function serializeNode(node: Node, ctx: SerializeContext): string { + if (node.nodeType === 3 /* Node.TEXT_NODE */) { + return node.textContent || ""; + } + + if (node.nodeType !== 1 /* Node.ELEMENT_NODE */) { + return ""; + } + + const el = node as HTMLElement; + const tag = el.tagName.toLowerCase(); + + switch (tag) { + case "p": + return serializeParagraph(el, ctx); + case "h1": + case "h2": + case "h3": + case "h4": + case "h5": + case "h6": + return serializeHeading(el, ctx); + case "blockquote": + return serializeBlockquote(el, ctx); + case "pre": + return serializeCodeBlock(el, ctx); + case "ul": + return serializeUnorderedList(el, ctx); + case "ol": + return serializeOrderedList(el, ctx); + case "table": + return serializeTable(el, ctx); + case "hr": + return ctx.indent + "***\n\n"; + case "img": + return serializeImage(el, ctx); + case "video": + return serializeVideo(el, ctx); + case "audio": + return serializeAudio(el, ctx); + case "figure": + return serializeFigure(el, ctx); + case "a": + // Block-level link (file block) + return serializeBlockLink(el, ctx); + case "details": + return serializeDetails(el, ctx); + case "div": + // Page break or generic container — serialize children + return serializeChildren(el, ctx); + case "br": + return ""; + default: + return serializeChildren(el, ctx); + } +} + +// ─── Block Serializers ─────────────────────────────────────────────────────── + +function serializeParagraph(el: HTMLElement, ctx: SerializeContext): string { + const content = serializeInlineContent(el); + // Trim leading/trailing hard breaks (matching remark behavior) + const trimmed = trimHardBreaks(content); + if (ctx.inList) { + return trimmed; + } + return ctx.indent + trimmed + "\n\n"; +} + +function serializeHeading(el: HTMLElement, ctx: SerializeContext): string { + const level = parseInt(el.tagName[1], 10); + const prefix = "#".repeat(level) + " "; + const content = serializeInlineContent(el); + return ctx.indent + prefix + content + "\n\n"; +} + +function serializeBlockquote(el: HTMLElement, ctx: SerializeContext): string { + // Check if blockquote contains block-level elements (like

    ) + const blockChildren = Array.from(el.children).filter((child) => { + const tag = child.tagName.toLowerCase(); + return ["p", "ul", "ol", "pre", "blockquote", "table", "hr"].includes(tag); + }); + + let content: string; + if (blockChildren.length > 0) { + // Has block-level children — serialize each + const parts: string[] = []; + for (const child of blockChildren) { + const tag = child.tagName.toLowerCase(); + if (tag === "p") { + parts.push(serializeInlineContent(child as HTMLElement)); + } else { + const innerCtx: SerializeContext = { indent: "", inList: false }; + parts.push(serializeNode(child, innerCtx).trim()); + } + } + content = parts.join("\n\n"); + } else { + // No block-level children — treat entire content as inline + content = serializeInlineContent(el); + } + + const lines = content.split("\n"); + return lines.map((line) => ctx.indent + "> " + line).join("\n") + "\n\n"; +} + +function serializeCodeBlock(el: HTMLElement, ctx: SerializeContext): string { + const codeEl = el.querySelector("code"); + if (!codeEl) {return "";} + + const language = + codeEl.getAttribute("data-language") || + extractLanguageFromClass(codeEl.className) || + ""; + + // Extract code content, handling
    elements as newlines + const code = extractCodeContent(codeEl); + + // Use a fence longer than the longest backtick run in the code + const longestRun = Math.max( + 0, + ...((code.match(/`+/g) ?? []).map((run) => run.length)) + ); + const fence = "`".repeat(Math.max(3, longestRun + 1)); + + // For empty code blocks, don't add a newline between the fences + if (!code) { + return ctx.indent + fence + language + "\n" + fence + "\n\n"; + } + + return ( + ctx.indent + + fence + + language + + "\n" + + code + + (code.endsWith("\n") ? "" : "\n") + + fence + + "\n\n" + ); +} + +function extractCodeContent(el: Element): string { + let result = ""; + for (const child of Array.from(el.childNodes)) { + if (child.nodeType === 3 /* Node.TEXT_NODE */) { + result += child.textContent || ""; + } else if (child.nodeType === 1 /* Node.ELEMENT_NODE */) { + const tag = (child as HTMLElement).tagName.toLowerCase(); + if (tag === "br") { + result += "\n"; + } else { + result += extractCodeContent(child as Element); + } + } + } + return result; +} + +function extractLanguageFromClass(className: string): string { + const match = className.match(/language-(\S+)/); + return match ? match[1] : ""; +} + +function serializeUnorderedList( + el: HTMLElement, + ctx: SerializeContext +): string { + let result = ""; + const items = Array.from(el.children).filter( + (child) => child.tagName.toLowerCase() === "li" + ); + + for (const item of items) { + result += serializeListItem(item as HTMLElement, "bullet", ctx); + } + + return result; +} + +function serializeOrderedList(el: HTMLElement, ctx: SerializeContext): string { + let result = ""; + const items = Array.from(el.children).filter( + (child) => child.tagName.toLowerCase() === "li" + ); + const startNum = parseInt(el.getAttribute("start") || "1", 10); + + for (let i = 0; i < items.length; i++) { + const num = startNum + i; + result += serializeListItem(items[i] as HTMLElement, "ordered", ctx, num); + } + + return result; +} + +function serializeListItem( + el: HTMLElement, + listType: "bullet" | "ordered", + ctx: SerializeContext, + num?: number +): string { + // Check for checkbox (task list) - direct children only + let checkbox: HTMLInputElement | null = null; + let details: HTMLElement | null = null; + + for (const child of Array.from(el.children)) { + const tag = child.tagName.toLowerCase(); + if (tag === "input" && (child as HTMLInputElement).type === "checkbox") { + checkbox = child as HTMLInputElement; + } + if (tag === "details") { + details = child as HTMLElement; + } + } + + let marker: string; + let markerWidth: number; + + if (checkbox) { + const state = checkbox.checked ? "[x]" : "[ ]"; + marker = `* ${state} `; + // For child indentation, use bullet width (2), not full checkbox marker width + markerWidth = 2; + } else if (listType === "ordered") { + marker = `${num}. `; + markerWidth = marker.length; + } else { + marker = "* "; + markerWidth = 2; + } + + // Collect the item's inline content + let inlineContent: string; + let firstContentEl: Element | null; + + if (details) { + // Toggle item: get content from summary + const summary = details.querySelector("summary"); + const summaryP = summary?.querySelector("p"); + firstContentEl = details; + inlineContent = summaryP ? serializeInlineContent(summaryP) : ""; + } else { + firstContentEl = getFirstContentElement(el, checkbox); + inlineContent = firstContentEl ? serializeInlineContent(firstContentEl) : ""; + } + + let result = ctx.indent + marker + inlineContent + "\n\n"; + + // Serialize child content (nested lists, continuation paragraphs, etc.) + const childIndent = ctx.indent + " ".repeat(markerWidth); + const childCtx: SerializeContext = { indent: childIndent, inList: true }; + + // For toggle items, also serialize children inside the details element + if (details) { + const summary = details.querySelector("summary"); + for (const child of Array.from(details.children)) { + if (child === summary) {continue;} + const childTag = child.tagName.toLowerCase(); + if (childTag === "p") { + const content = serializeInlineContent(child as HTMLElement); + result += childIndent + content + "\n\n"; + } else { + result += serializeNode(child, childCtx); + } + } + } + + const children = Array.from(el.children); + for (const child of children) { + const childTag = child.tagName.toLowerCase(); + + // Skip the first content element and checkbox + if (child === firstContentEl || (child as HTMLElement) === checkbox) {continue;} + if (childTag === "input") {continue;} + + // Nested lists and other block content + if (childTag === "ul" || childTag === "ol") { + result += serializeNode(child, childCtx); + } else if (childTag === "p") { + // Continuation paragraph within list item + const content = serializeInlineContent(child as HTMLElement); + result += childIndent + content + "\n\n"; + } else { + result += serializeNode(child, childCtx); + } + } + + return result; +} + +function getFirstContentElement( + li: HTMLElement, + checkbox: HTMLInputElement | null +): HTMLElement | null { + for (const child of Array.from(li.children)) { + if (child === checkbox) {continue;} + if (child.tagName.toLowerCase() === "input") {continue;} + const tag = child.tagName.toLowerCase(); + if (tag === "p" || tag === "span") {return child as HTMLElement;} + } + return null; +} + +// ─── Table Serializer ──────────────────────────────────────────────────────── + +function serializeTable(el: HTMLElement, ctx: SerializeContext): string { + // First, determine column count from colgroup or first row + const colgroup = el.querySelector("colgroup"); + let colCount = 0; + + if (colgroup) { + colCount = colgroup.querySelectorAll("col").length; + } + + const rows: string[][] = []; + let hasHeader = false; + + // Collect all rows, handling colspan/rowspan + const trElements = el.querySelectorAll("tr"); + // Build a grid to handle colspan/rowspan + const grid: (string | null)[][] = []; + + trElements.forEach((tr, rowIdx) => { + if (!grid[rowIdx]) {grid[rowIdx] = [];} + const cellElements = tr.querySelectorAll("th, td"); + let gridCol = 0; + + cellElements.forEach((cell) => { + // Find next empty column in this row + while (grid[rowIdx][gridCol] !== undefined) {gridCol++;} + + if (rowIdx === 0 && cell.tagName.toLowerCase() === "th") { + hasHeader = true; + } + + const content = escapeTableCell( + serializeInlineContent(cell as HTMLElement).trim() + ); + const colspan = parseInt(cell.getAttribute("colspan") || "1", 10); + const rowspan = parseInt(cell.getAttribute("rowspan") || "1", 10); + + // Fill the grid + for (let r = 0; r < rowspan; r++) { + for (let c = 0; c < colspan; c++) { + const ri = rowIdx + r; + if (!grid[ri]) {grid[ri] = [];} + grid[ri][gridCol + c] = r === 0 && c === 0 ? content : ""; + } + } + + gridCol += colspan; + }); + + // Update colCount + if (grid[rowIdx]) { + colCount = Math.max(colCount, grid[rowIdx].length); + } + }); + + // Convert grid to rows + for (const gridRow of grid) { + const row: string[] = []; + for (let c = 0; c < colCount; c++) { + row.push(gridRow && gridRow[c] !== undefined ? (gridRow[c] ?? "") : ""); + } + rows.push(row); + } + + if (rows.length === 0) {return "";} + + // Determine column widths + const colWidths: number[] = []; + for (let c = 0; c < colCount; c++) { + let maxWidth = 3; // minimum width for separator "---" + for (const row of rows) { + const cellWidth = c < row.length ? row[c].length : 0; + maxWidth = Math.max(maxWidth, cellWidth); + } + // Use minimum of 10 to match remark output + colWidths.push(Math.max(maxWidth, 10)); + } + + let result = ""; + + if (hasHeader) { + result += ctx.indent + formatTableRow(rows[0], colWidths, colCount) + "\n"; + result += ctx.indent + formatSeparatorRow(colWidths, colCount) + "\n"; + for (let r = 1; r < rows.length; r++) { + result += + ctx.indent + formatTableRow(rows[r], colWidths, colCount) + "\n"; + } + } else { + // No header — emit empty header + separator + const emptyRow = new Array(colCount).fill(""); + result += ctx.indent + formatTableRow(emptyRow, colWidths, colCount) + "\n"; + result += ctx.indent + formatSeparatorRow(colWidths, colCount) + "\n"; + for (const row of rows) { + result += + ctx.indent + formatTableRow(row, colWidths, colCount) + "\n"; + } + } + + result += "\n"; + return result; +} + +function escapeTableCell(text: string): string { + return text.replace(/\|/g, "\\|"); +} + +function formatTableRow( + cells: string[], + colWidths: number[], + colCount: number +): string { + const parts: string[] = []; + for (let c = 0; c < colCount; c++) { + const cell = c < cells.length ? cells[c] : ""; + parts.push(" " + cell.padEnd(colWidths[c]) + " "); + } + return "|" + parts.join("|") + "|"; +} + +function formatSeparatorRow(colWidths: number[], colCount: number): string { + const parts: string[] = []; + for (let c = 0; c < colCount; c++) { + parts.push(" " + "-".repeat(colWidths[c]) + " "); + } + return "|" + parts.join("|") + "|"; +} + +// ─── Media Serializers ─────────────────────────────────────────────────────── + +function serializeImage(el: HTMLElement, ctx: SerializeContext): string { + const src = el.getAttribute("src") || ""; + const alt = el.getAttribute("alt") || ""; + if (!src) { + return ctx.indent + "Add image\n\n"; + } + return ctx.indent + `![${alt}](${src})\n\n`; +} + +function serializeVideo(el: HTMLElement, ctx: SerializeContext): string { + const src = + el.getAttribute("src") || el.getAttribute("data-url") || ""; + const name = el.getAttribute("data-name") || el.getAttribute("title") || ""; + if (!src) { + return ctx.indent + "Add video\n\n"; + } + return ctx.indent + `![${name}](${src})\n\n`; +} + +function serializeAudio(el: HTMLElement, ctx: SerializeContext): string { + const src = el.getAttribute("src") || ""; + if (!src) {return "";} + // Audio has no visible representation in markdown; output as link with empty text + return ctx.indent + `[](${src})\n\n`; +} + +function serializeFigure(el: HTMLElement, ctx: SerializeContext): string { + let result = ""; + + // Find the media element + const img = el.querySelector("img"); + const video = el.querySelector("video"); + const audio = el.querySelector("audio"); + const link = el.querySelector("a"); + + if (img) { + const src = img.getAttribute("src") || ""; + const alt = img.getAttribute("alt") || ""; + result += ctx.indent + `![${alt}](${src})\n\n`; + } else if (video) { + const src = + video.getAttribute("src") || video.getAttribute("data-url") || ""; + const name = + video.getAttribute("data-name") || video.getAttribute("title") || ""; + result += ctx.indent + `![${name}](${src})\n\n`; + } else if (audio) { + const src = audio.getAttribute("src") || ""; + result += ctx.indent + `[](${src})\n\n`; + } else if (link) { + result += serializeBlockLink(link as HTMLElement, ctx); + } + + // Caption + const figcaption = el.querySelector("figcaption"); + if (figcaption) { + const caption = figcaption.textContent?.trim() || ""; + if (caption) { + result += ctx.indent + caption + "\n\n"; + } + } + + return result; +} + +function serializeBlockLink(el: HTMLElement, ctx: SerializeContext): string { + const href = el.getAttribute("href") || ""; + const text = el.textContent?.trim() || ""; + if (!href) {return ctx.indent + text + "\n\n";} + return ctx.indent + formatLink(text, href) + "\n\n"; +} + +/** + * Render a link, mirroring the remark-stringify behavior from + * TypeCellOS/BlockNote#2661: when the link label equals the URL (or is + * empty), emit the bare URL so that pasting the link into another input + * produces a valid href instead of ``-autolink brackets or redundant + * `[url](url)` markup. Otherwise emit `[text](url)` with the URL escaped so + * a `)` inside the URL does not prematurely close the destination. + */ +function formatLink(text: string, href: string): string { + if (!text || text === href) { + return href; + } + return `[${text}](${escapeLinkDestination(href)})`; +} + +function escapeLinkDestination(url: string): string { + return url.replace(/[\\()]/g, "\\$&"); +} + +function serializeDetails(el: HTMLElement, ctx: SerializeContext): string { + // Toggle heading or toggle list item + const summary = el.querySelector("summary"); + if (!summary) {return serializeChildren(el, ctx);} + + // Check if summary contains a heading + const heading = summary.querySelector("h1, h2, h3, h4, h5, h6"); + if (heading) { + let result = serializeHeading(heading as HTMLElement, ctx); + // Also serialize non-summary children of details + for (const child of Array.from(el.children)) { + if (child !== summary) { + result += serializeNode(child, ctx); + } + } + return result; + } + + // Otherwise serialize the summary content + return serializeChildren(summary, ctx); +} + +// ─── Inline Content Serializer ─────────────────────────────────────────────── + +function serializeInlineContent(el: Element): string { + let result = ""; + + for (const child of Array.from(el.childNodes)) { + if (child.nodeType === 3 /* Node.TEXT_NODE */) { + result += child.textContent || ""; + } else if (child.nodeType === 1 /* Node.ELEMENT_NODE */) { + const childEl = child as HTMLElement; + const tag = childEl.tagName.toLowerCase(); + + switch (tag) { + case "strong": + case "b": { + const inner = serializeInlineContent(childEl); + const { content, trailing } = extractTrailingWhitespace(inner); + if (content) { + result += `**${content}**${trailing}`; + } else { + // All whitespace — just output it without emphasis + result += trailing; + } + break; + } + case "em": + case "i": { + const inner = serializeInlineContent(childEl); + const { content, trailing } = extractTrailingWhitespace(inner); + if (content) { + result += `*${content}*${trailing}`; + } else { + result += trailing; + } + break; + } + case "s": + case "del": + result += `~~${serializeInlineContent(childEl)}~~`; + break; + case "code": { + const text = childEl.textContent || ""; + const longestRun = Math.max( + 0, + ...((text.match(/`+/g) ?? []).map((run) => run.length)) + ); + const fence = "`".repeat(longestRun + 1); + const needsPadding = + text.startsWith("`") || text.endsWith("`"); + result += fence + (needsPadding ? ` ${text} ` : text) + fence; + break; + } + case "u": + // No markdown equivalent — strip the tag, keep content + result += serializeInlineContent(childEl); + break; + case "a": { + const href = childEl.getAttribute("href") || ""; + const text = serializeInlineContent(childEl); + result += formatLink(text, href); + break; + } + case "br": + result += "\\\n"; + break; + case "span": + // Color spans, etc. — strip the tag, keep content + result += serializeInlineContent(childEl); + break; + case "img": { + const src = childEl.getAttribute("src") || ""; + const alt = childEl.getAttribute("alt") || ""; + result += `![${alt}](${src})`; + break; + } + case "video": { + const src = + childEl.getAttribute("src") || + childEl.getAttribute("data-url") || + ""; + const name = + childEl.getAttribute("data-name") || + childEl.getAttribute("title") || + ""; + result += `![${name}](${src})`; + break; + } + case "p": + // Paragraph inside inline context (e.g., table cell) + result += serializeInlineContent(childEl); + break; + case "input": + // Checkbox in task list — handled at block level + break; + default: + result += serializeInlineContent(childEl); + break; + } + } + } + + return result; +} + +/** + * Extract trailing whitespace from emphasis content. + * Moves trailing spaces outside the emphasis delimiters to produce valid markdown. + * E.g., `Bold ` → `**Bold** ` instead of `**Bold **`. + */ +function extractTrailingWhitespace(text: string): { + content: string; + trailing: string; +} { + const match = text.match(/^(.*?)(\s*)$/); + if (match) { + return { content: match[1], trailing: match[2] }; + } + return { content: text, trailing: "" }; +} + +/** + * Escape leading character after emphasis if it could break parsing. + * For example, "Heading" after "**Bold **" — the 'H' should be escaped + * if the trailing space was escaped. + */ + +/** + * Trim leading/trailing hard breaks from inline content. + * Matches remark behavior where
    at start/end of paragraph is dropped. + */ +function trimHardBreaks(content: string): string { + // Remove leading hard breaks + let result = content.replace(/^(\\\n)+/, ""); + // Remove trailing hard breaks produced by `
    ` + result = result.replace(/(\\\n)+$/, ""); + return result; +} diff --git a/packages/core/src/api/exporters/markdown/markdownExporter.ts b/packages/core/src/api/exporters/markdown/markdownExporter.ts index 23aad8db7c..2f73616dc0 100644 --- a/packages/core/src/api/exporters/markdown/markdownExporter.ts +++ b/packages/core/src/api/exporters/markdown/markdownExporter.ts @@ -1,9 +1,4 @@ import { Schema } from "prosemirror-model"; -import rehypeParse from "rehype-parse"; -import rehypeRemark from "rehype-remark"; -import remarkGfm from "remark-gfm"; -import remarkStringify from "remark-stringify"; -import { unified } from "unified"; import { PartialBlock } from "../../../blocks/defaultBlocks.js"; import type { BlockNoteEditor } from "../../../editor/BlockNoteEditor.js"; @@ -13,25 +8,11 @@ import { StyleSchema, } from "../../../schema/index.js"; import { createExternalHTMLExporter } from "../html/externalHTMLExporter.js"; -import { removeUnderlines } from "./util/removeUnderlinesRehypePlugin.js"; -import { addSpacesToCheckboxes } from "./util/addSpacesToCheckboxesRehypePlugin.js"; -import { convertVideoToMarkdown } from "./util/convertVideoToMarkdownRehypePlugin.js"; +import { htmlToMarkdown } from "./htmlToMarkdown.js"; // Needs to be sync because it's used in drag handler event (SideMenuPlugin) export function cleanHTMLToMarkdown(cleanHTMLString: string) { - const markdownString = unified() - .use(rehypeParse, { fragment: true }) - .use(convertVideoToMarkdown) - .use(removeUnderlines) - .use(addSpacesToCheckboxes) - .use(rehypeRemark) - .use(remarkGfm) - .use(remarkStringify, { - handlers: { text: (node) => node.value }, - }) - .processSync(cleanHTMLString); - - return markdownString.value as string; + return htmlToMarkdown(cleanHTMLString); } export function blocksToMarkdown< diff --git a/packages/core/src/api/exporters/markdown/util/addSpacesToCheckboxesRehypePlugin.ts b/packages/core/src/api/exporters/markdown/util/addSpacesToCheckboxesRehypePlugin.ts deleted file mode 100644 index 7c03eb9a64..0000000000 --- a/packages/core/src/api/exporters/markdown/util/addSpacesToCheckboxesRehypePlugin.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { Element as HASTElement, Parent as HASTParent } from "hast"; -import { fromDom } from "hast-util-from-dom"; - -/** - * Rehype plugin which adds a space after each checkbox input element. This is - * because remark doesn't add any spaces between the checkbox input and the text - * itself, but these are needed for correct Markdown syntax. - */ -export function addSpacesToCheckboxes() { - const helper = (tree: HASTParent) => { - if (tree.children && "length" in tree.children && tree.children.length) { - for (let i = tree.children.length - 1; i >= 0; i--) { - const child = tree.children[i]; - const nextChild = - i + 1 < tree.children.length ? tree.children[i + 1] : undefined; - - // Checks for paragraph element after checkbox input element. - if ( - child.type === "element" && - child.tagName === "input" && - child.properties?.type === "checkbox" && - nextChild?.type === "element" && - nextChild.tagName === "p" - ) { - // Converts paragraph to span, otherwise remark will think it needs to - // be on a new line. - nextChild.tagName = "span"; - // Adds a space after the checkbox input element. - nextChild.children.splice( - 0, - 0, - fromDom(document.createTextNode(" ")) as HASTElement, - ); - } else { - helper(child as HASTParent); - } - } - } - }; - - return helper; -} diff --git a/packages/core/src/api/exporters/markdown/util/convertVideoToMarkdownRehypePlugin.ts b/packages/core/src/api/exporters/markdown/util/convertVideoToMarkdownRehypePlugin.ts deleted file mode 100644 index a7de2e3442..0000000000 --- a/packages/core/src/api/exporters/markdown/util/convertVideoToMarkdownRehypePlugin.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { Parent as HASTParent } from "hast"; -import { visit } from "unist-util-visit"; - -// Originally, rehypeParse parses videos as links, which is incorrect. -export function convertVideoToMarkdown() { - return (tree: HASTParent) => { - visit(tree, "element", (node, index, parent) => { - if (parent && node.tagName === "video") { - const src = node.properties?.src || node.properties?.["data-url"] || ""; - const name = - node.properties?.title || node.properties?.["data-name"] || ""; - parent.children[index!] = { - type: "text", - value: `![${name}](${src})`, - }; - } - }); - }; -} diff --git a/packages/core/src/api/exporters/markdown/util/removeUnderlinesRehypePlugin.ts b/packages/core/src/api/exporters/markdown/util/removeUnderlinesRehypePlugin.ts deleted file mode 100644 index 5b455d1b53..0000000000 --- a/packages/core/src/api/exporters/markdown/util/removeUnderlinesRehypePlugin.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { Element as HASTElement, Parent as HASTParent } from "hast"; - -/** - * Rehype plugin which removes tags. Used to remove underlines before converting HTML to markdown, as Markdown - * doesn't support underlines. - */ -export function removeUnderlines() { - const removeUnderlinesHelper = (tree: HASTParent) => { - let numChildElements = tree.children.length; - - for (let i = 0; i < numChildElements; i++) { - const node = tree.children[i]; - - if (node.type === "element") { - // Recursively removes underlines from child elements. - removeUnderlinesHelper(node); - - if ((node as HASTElement).tagName === "u") { - // Lifts child nodes outside underline element, deletes the underline element, and updates current index & - // the number of child elements. - if (node.children.length > 0) { - tree.children.splice(i, 1, ...node.children); - - const numElementsAdded = node.children.length - 1; - numChildElements += numElementsAdded; - i += numElementsAdded; - } else { - tree.children.splice(i, 1); - - numChildElements--; - i--; - } - } - } - } - }; - - return removeUnderlinesHelper; -} diff --git a/packages/core/src/api/parsers/html/util/__snapshots__/nestedLists.test.ts.snap b/packages/core/src/api/parsers/html/util/__snapshots__/nestedLists.test.ts.snap index 68c0a1c817..1db488255b 100644 --- a/packages/core/src/api/parsers/html/util/__snapshots__/nestedLists.test.ts.snap +++ b/packages/core/src/api/parsers/html/util/__snapshots__/nestedLists.test.ts.snap @@ -1,129 +1,144 @@ // Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html exports[`Lift nested lists > Lifts multiple bullet lists 1`] = ` -" -

      -
      -
    • Bullet List Item 1
    • -
      -
        -
      • Nested Bullet List Item 1
      • -
      • Nested Bullet List Item 2
      • -
      -
        -
      • Nested Bullet List Item 3
      • -
      • Nested Bullet List Item 4
      • -
      -
      -
      -
    • Bullet List Item 2
    • -
    -" +"
      +
    • + Bullet List Item 1 +
      • +
      • + Nested Bullet List Item 1 +
      • +
      • + Nested Bullet List Item 2 +
      • +
        +
      • + Nested Bullet List Item 3 +
      • +
      • + Nested Bullet List Item 4 +
      • +
      +
    • + Bullet List Item 2 +
    • +
    " `; exports[`Lift nested lists > Lifts multiple bullet lists with content in between 1`] = ` -" -
      -
      -
    • Bullet List Item 1
    • -
      -
        -
      • Nested Bullet List Item 1
      • -
      • Nested Bullet List Item 2
      • -
      -
      -
      -
      -
    • In between content
    • -
      -
        -
      • Nested Bullet List Item 3
      • -
      • Nested Bullet List Item 4
      • -
      -
      -
      -
    • Bullet List Item 2
    • -
    -" +"
      +
    • + Bullet List Item 1 +
      • +
      • + Nested Bullet List Item 1 +
      • +
      • + Nested Bullet List Item 2 +
      • +
    • + In between content +
      • +
      • + Nested Bullet List Item 3 +
      • +
      • + Nested Bullet List Item 4 +
      • +
      +
    • + Bullet List Item 2 +
    • +
    " `; exports[`Lift nested lists > Lifts nested bullet lists 1`] = ` -" -
      -
      -
    • Bullet List Item 1
    • -
      -
        -
      • Nested Bullet List Item 1
      • -
      • Nested Bullet List Item 2
      • -
      -
      -
      -
    • Bullet List Item 2
    • -
    -" +"
      +
    • + Bullet List Item 1 +
      • +
      • + Nested Bullet List Item 1 +
      • +
      • + Nested Bullet List Item 2 +
      • +
      +
    • + Bullet List Item 2 +
    • +
    " `; exports[`Lift nested lists > Lifts nested bullet lists with content after nested list 1`] = ` -" -
      -
      -
    • Bullet List Item 1
    • -
      -
        -
      • Nested Bullet List Item 1
      • -
      • Nested Bullet List Item 2
      • -
      -
      -
      -
    • More content in list item 1
    • -
    • Bullet List Item 2
    • -
    -" +"
      +
    • + Bullet List Item 1 +
      • +
      • + Nested Bullet List Item 1 +
      • +
      • + Nested Bullet List Item 2 +
      • +
    • + More content in list item 1 +
    • +
    • + Bullet List Item 2 +
    • +
    " `; exports[`Lift nested lists > Lifts nested bullet lists without li 1`] = ` -" -
      Bullet List Item 1 -
        -
      • Nested Bullet List Item 1
      • -
      • Nested Bullet List Item 2
      • -
      -
    • Bullet List Item 2
    • -
    -" +"
      + Bullet List Item 1 +
        +
      • + Nested Bullet List Item 1 +
      • +
      • + Nested Bullet List Item 2 +
      • +
      +
    • + Bullet List Item 2 +
    • +
    " `; exports[`Lift nested lists > Lifts nested mixed lists 1`] = ` -" -
      -
      -
    1. Numbered List Item 1
    2. -
      -
        -
      • Bullet List Item 1
      • -
      • Bullet List Item 2
      • -
      -
      -
      -
    3. Numbered List Item 2
    4. -
    -" +"
      +
    1. + Numbered List Item 1 +
      • +
      • + Bullet List Item 1 +
      • +
      • + Bullet List Item 2 +
      • +
      +
    2. + Numbered List Item 2 +
    3. +
    " `; exports[`Lift nested lists > Lifts nested numbered lists 1`] = ` -" -
      -
      -
    1. Numbered List Item 1
    2. -
      -
        -
      1. Nested Numbered List Item 1
      2. -
      3. Nested Numbered List Item 2
      4. -
      -
      -
      -
    3. Numbered List Item 2
    4. -
    -" +"
      +
    1. + Numbered List Item 1 +
      1. +
      2. + Nested Numbered List Item 1 +
      3. +
      4. + Nested Numbered List Item 2 +
      5. +
      +
    2. + Numbered List Item 2 +
    3. +
    " `; diff --git a/packages/core/src/api/parsers/html/util/nestedLists.test.ts b/packages/core/src/api/parsers/html/util/nestedLists.test.ts index 03fadebefe..e695efa9c4 100644 --- a/packages/core/src/api/parsers/html/util/nestedLists.test.ts +++ b/packages/core/src/api/parsers/html/util/nestedLists.test.ts @@ -1,20 +1,9 @@ import { describe, expect, it } from "vitest"; import { nestedListsToBlockNoteStructure } from "./nestedLists.js"; -import { unified } from "unified"; -import rehypeParse from "rehype-parse"; -import rehypeFormat from "rehype-format"; -import rehypeStringify from "rehype-stringify"; async function testHTML(html: string) { const htmlNode = nestedListsToBlockNoteStructure(html); - - const pretty = await unified() - .use(rehypeParse, { fragment: true }) - .use(rehypeFormat) - .use(rehypeStringify) - .process(htmlNode.innerHTML); - - expect(pretty.value).toMatchSnapshot(); + expect(htmlNode.innerHTML).toMatchSnapshot(); } describe("Lift nested lists", () => { diff --git a/packages/core/src/api/parsers/markdown/markdownToHtml.ts b/packages/core/src/api/parsers/markdown/markdownToHtml.ts new file mode 100644 index 0000000000..2380397db4 --- /dev/null +++ b/packages/core/src/api/parsers/markdown/markdownToHtml.ts @@ -0,0 +1,1181 @@ +import { isVideoUrl } from "../../../util/string.js"; + +/** + * Custom markdown-to-HTML converter for BlockNote. + * Replaces the unified/remark/rehype pipeline with a direct, minimal implementation + * that handles exactly the markdown features BlockNote needs. + */ + +// ─── HTML Escaping ─────────────────────────────────────────────────────────── + +function escapeHtml(str: string): string { + return str + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """); +} + +// ─── Helpers ───────────────────────────────────────────────────────────────── + +function isAlphanumeric(char: string | undefined): boolean { + if (!char) { + return false; + } + return /\w/.test(char); +} + +/** + * Returns true when an underscore delimiter at position `i` is "intraword", + * meaning the characters on both sides are alphanumeric (e.g. `snake_case`). + * In that case the underscore should NOT be treated as emphasis per CommonMark. + */ +function isIntraword(text: string, i: number, delimLen: number): boolean { + const before = i > 0 ? text[i - 1] : undefined; + const after = + i + delimLen < text.length ? text[i + delimLen] : undefined; + return isAlphanumeric(before) && isAlphanumeric(after); +} + +// ─── Inline Parser ─────────────────────────────────────────────────────────── + +type InlineTokenizer = ( + text: string, + i: number +) => { html: string; end: number } | null; + +function tryBackslashEscape( + text: string, + i: number +): { html: string; end: number } | null { + if (text[i] !== "\\" || i + 1 >= text.length) {return null;} + const next = text[i + 1]; + // Hard line break: backslash at end of line + if (next === "\n") { + return { html: "
    \n", end: i + 2 }; + } + // Escapable characters + if ("\\`*_{}[]()#+-.!~|>".includes(next)) { + return { html: escapeHtml(next), end: i + 2 }; + } + return null; +} + +function tryInlineCode( + text: string, + i: number +): { html: string; end: number } | null { + if (text[i] !== "`") {return null;} + return parseInlineCode(text, i); +} + +function tryImage( + text: string, + i: number +): { html: string; end: number } | null { + if (text[i] !== "!" || text[i + 1] !== "[") {return null;} + return parseImage(text, i); +} + +function tryLink( + text: string, + i: number +): { html: string; end: number } | null { + if (text[i] !== "[") {return null;} + return parseLink(text, i); +} + +function tryStrikethrough( + text: string, + i: number +): { html: string; end: number } | null { + if (text[i] !== "~" || text[i + 1] !== "~") {return null;} + return parseDelimited(text, i, "~~", "", ""); +} + +function tryBoldItalic( + text: string, + i: number +): { html: string; end: number } | null { + if ( + (text[i] === "*" && text[i + 1] === "*" && text[i + 2] === "*") || + (text[i] === "_" && + text[i + 1] === "_" && + text[i + 2] === "_" && + !isIntraword(text, i, 3)) + ) { + const delimiter = text.substring(i, i + 3); + return parseDelimited(text, i, delimiter, "", ""); + } + return null; +} + +function tryBold( + text: string, + i: number +): { html: string; end: number } | null { + if ( + (text[i] === "*" && text[i + 1] === "*") || + (text[i] === "_" && text[i + 1] === "_" && !isIntraword(text, i, 2)) + ) { + const delimiter = text.substring(i, i + 2); + return parseDelimited(text, i, delimiter, "", ""); + } + return null; +} + +function tryItalic( + text: string, + i: number +): { html: string; end: number } | null { + if (text[i] === "*" || (text[i] === "_" && !isIntraword(text, i, 1))) { + return parseDelimited(text, i, text[i], "", ""); + } + return null; +} + +function trySoftBreak( + text: string, + i: number +): { html: string; end: number } | null { + if (text[i] === "\n") { + return { html: "\n", end: i + 1 }; + } + return null; +} + +// Inline raw HTML: pass through tags, comments, CDATA, processing +// instructions, and declarations verbatim so authors can mix HTML into +// markdown (e.g. `text foo more`). Anything that doesn't match +// these shapes falls through and gets HTML-escaped as plain text. +const INLINE_HTML_TAG_RE = + /^<\/?[a-zA-Z][a-zA-Z0-9-]*(?:\s+[a-zA-Z_:][a-zA-Z0-9_.:-]*(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s"'=<>`]+))?)*\s*\/?>/; +const HTML_COMMENT_RE = /^/; +const HTML_CDATA_RE = /^/; +const HTML_PI_RE = /^<\?[\s\S]*?\?>/; +const HTML_DECL_RE = /^/; + +function tryInlineHtml( + text: string, + i: number +): { html: string; end: number } | null { + if (text[i] !== "<") {return null;} + const rest = text.substring(i); + for (const re of [ + HTML_COMMENT_RE, + HTML_CDATA_RE, + HTML_PI_RE, + HTML_DECL_RE, + INLINE_HTML_TAG_RE, + ]) { + const m = rest.match(re); + if (m) { + return { html: m[0], end: i + m[0].length }; + } + } + return null; +} + +/** Characters that can start an inline syntax token. */ +const SPECIAL_CHARS = new Set("\\`![~*_\n<"); + +/** + * Ordered array of inline tokenizers, tried in priority order. + * The first match wins. + */ +const inlineTokenizers: InlineTokenizer[] = [ + tryBackslashEscape, + tryInlineCode, + tryImage, + tryLink, + tryStrikethrough, + tryBoldItalic, // *** / ___ + tryBold, // ** / __ + tryItalic, // * / _ + tryInlineHtml, + trySoftBreak, +]; + +/** + * Parse inline markdown syntax and return HTML. + * Handles: bold, italic, bold+italic, strikethrough, inline code, + * links, images (with video detection), hard line breaks, backslash escapes. + */ +function parseInline(text: string): string { + let result = ""; + let i = 0; + + while (i < text.length) { + // Hard line break: 2+ trailing spaces immediately before a newline. + // (The other hard-break form, backslash + newline, is handled by + // tryBackslashEscape.) Strip the trailing spaces from the accumulated + // result before emitting the
    . + if ( + text[i] === "\n" && + i >= 2 && + text[i - 1] === " " && + text[i - 2] === " " + ) { + result = result.replace(/ +$/, ""); + result += "
    \n"; + i++; + continue; + } + + // Try each tokenizer in priority order + let matched = false; + if (SPECIAL_CHARS.has(text[i])) { + for (const tokenizer of inlineTokenizers) { + const r = tokenizer(text, i); + if (r) { + result += r.html; + i = r.end; + matched = true; + break; + } + } + } + + if (!matched) { + // Batch consecutive plain-text characters and escape once + const runStart = i; + i++; + while (i < text.length && !SPECIAL_CHARS.has(text[i])) { + i++; + } + result += escapeHtml(text.substring(runStart, i)); + } + } + + return result; +} + +function parseInlineCode( + text: string, + start: number +): { html: string; end: number } | null { + // Count opening backticks + let openCount = 0; + let i = start; + while (i < text.length && text[i] === "`") { + openCount++; + i++; + } + + // Find matching closing backticks + let j = i; + while (j < text.length) { + if (text[j] === "`") { + let closeCount = 0; + const closeStart = j; + while (j < text.length && text[j] === "`") { + closeCount++; + j++; + } + if (closeCount === openCount) { + let code = text.substring(i, closeStart); + // Per CommonMark: line endings inside a code span are converted to + // single spaces, then if the result starts AND ends with a space and + // is not all-spaces, one leading + trailing space is stripped (so + // `` ` `foo` ` `` is ``foo``). + code = code.replace(/\n/g, " "); + if ( + code.length >= 2 && + code[0] === " " && + code[code.length - 1] === " " && + /[^ ]/.test(code) + ) { + code = code.substring(1, code.length - 1); + } + return { + html: `${escapeHtml(code)}`, + end: j, + }; + } + } else { + j++; + } + } + return null; +} + +function parseImage( + text: string, + start: number +): { html: string; end: number } | null { + // ![alt](url) or ![alt](url "title") + // Use balanced bracket matching to handle nested/escaped brackets in alt text + const altEnd = findClosingBracket(text, start + 1); + if (altEnd === -1) {return null;} + const altStart = start + 2; // after ![ + + if (text[altEnd + 1] !== "(") {return null;} + + const urlStart = altEnd + 2; + const parenEnd = findClosingParen(text, urlStart - 1); + if (parenEnd === -1) {return null;} + + const alt = text.substring(altStart, altEnd); + const { url, title } = parseDestinationAndTitle( + text.substring(urlStart, parenEnd), + ); + + if (isVideoUrl(url)) { + // Match remark-rehype behavior: data-name comes from the title, not alt + return { + html: ``, + end: parenEnd + 1, + }; + } + + const titleAttr = + title !== undefined ? ` title="${escapeHtml(title)}"` : ""; + return { + html: `${escapeHtml(alt)}`, + end: parenEnd + 1, + }; +} + +function parseLink( + text: string, + start: number +): { html: string; end: number } | null { + // [text](url) + const textStart = start + 1; + const textEnd = findClosingBracket(text, start); + if (textEnd === -1) {return null;} + + if (text[textEnd + 1] !== "(") {return null;} + + const urlStart = textEnd + 2; + const parenEnd = findClosingParen(text, textEnd + 1); + if (parenEnd === -1) {return null;} + + const linkText = text.substring(textStart, textEnd); + const { url, title } = parseDestinationAndTitle( + text.substring(urlStart, parenEnd), + ); + + const titleAttr = + title !== undefined ? ` title="${escapeHtml(title)}"` : ""; + return { + html: `
    ${parseInline(linkText)}`, + end: parenEnd + 1, + }; +} + +function findClosingBracket(text: string, openPos: number): number { + let depth = 0; + for (let i = openPos; i < text.length; i++) { + if (text[i] === "\\" && i + 1 < text.length) { + i++; // skip escaped + continue; + } + if (text[i] === "[") {depth++;} + if (text[i] === "]") { + depth--; + if (depth === 0) {return i;} + } + } + return -1; +} + +function findClosingParen(text: string, openPos: number): number { + let depth = 0; + for (let i = openPos; i < text.length; i++) { + if (text[i] === "\\" && i + 1 < text.length) { + i++; + continue; + } + if (text[i] === "(") {depth++;} + if (text[i] === ")") { + depth--; + if (depth === 0) {return i;} + } + } + return -1; +} + +/** + * Parse the inside of `(...)` from a link/image (the URL and optional title). + * Handles three URL forms: + * - bare: `/uri` or `/uri "title"` + * - angle-bracket: `` or ` "title"` (brackets are stripped) + * And three title-quote forms: `"..."`, `'...'`, `(...)`. + */ +function parseDestinationAndTitle(raw: string): { + url: string; + title?: string; +} { + raw = raw.trim(); + let url: string; + let rest: string; + + if (raw.startsWith("<")) { + const close = raw.indexOf(">"); + if (close === -1) { + // Unmatched `<` — treat the whole thing as the URL minus the `<`. + url = raw.substring(1); + rest = ""; + } else { + url = raw.substring(1, close); + rest = raw.substring(close + 1).trim(); + } + } else { + // Split at first unescaped whitespace. + let split = raw.length; + for (let i = 0; i < raw.length; i++) { + if (raw[i] === "\\" && i + 1 < raw.length) { + i++; + continue; + } + if (raw[i] === " " || raw[i] === "\t" || raw[i] === "\n") { + split = i; + break; + } + } + url = raw.substring(0, split); + rest = raw.substring(split).trim(); + } + + let title: string | undefined; + if (rest.length > 0) { + const titleMatch = rest.match(/^"([^"]*)"$|^'([^']*)'$|^\(([^)]*)\)$/); + if (titleMatch) { + title = titleMatch[1] ?? titleMatch[2] ?? titleMatch[3]; + } + } + + return { url, title }; +} + +function parseDelimited( + text: string, + start: number, + delimiter: string, + openTag: string, + closeTag: string +): { html: string; end: number } | null { + const len = delimiter.length; + const afterOpen = start + len; + + if (afterOpen >= text.length) {return null;} + + // Opening delimiter must not be followed by whitespace + if (text[afterOpen] === " " || text[afterOpen] === "\t") {return null;} + + // Find closing delimiter + let j = afterOpen; + while (j < text.length) { + // Skip escaped characters + if (text[j] === "\\" && j + 1 < text.length) { + j += 2; + continue; + } + + if (text.substring(j, j + len) === delimiter) { + // Closing delimiter must not be preceded by whitespace + if (text[j - 1] === " " || text[j - 1] === "\t") { + j++; + continue; + } + + // For single-char delimiters, don't accept closer if it's part of a + // multi-char run (e.g., don't treat the * in ** as italic closer) + if ( + len === 1 && + ((j > 0 && text[j - 1] === delimiter[0] && !(j >= 2 && text[j - 2] === "\\")) || + (j + len < text.length && text[j + len] === delimiter[0])) + ) { + j++; + continue; + } + + const inner = text.substring(afterOpen, j); + if (inner.length === 0) { + j++; + continue; + } + + return { + html: openTag + parseInline(inner) + closeTag, + end: j + len, + }; + } + j++; + } + + return null; +} + +// ─── Block-Level Types ─────────────────────────────────────────────────────── + +interface BlockToken { + type: string; +} + +interface HeadingToken extends BlockToken { + type: "heading"; + level: number; + content: string; +} + +interface ParagraphToken extends BlockToken { + type: "paragraph"; + content: string; +} + +interface CodeBlockToken extends BlockToken { + type: "codeBlock"; + language: string; + code: string; +} + +interface BlockquoteToken extends BlockToken { + type: "blockquote"; + content: string; +} + +interface HorizontalRuleToken extends BlockToken { + type: "hr"; +} + +interface ListItemToken extends BlockToken { + type: "listItem"; + listType: "bullet" | "ordered" | "task"; + indent: number; + content: string; + start?: number; // for ordered lists + checked?: boolean; // for task lists + childContent?: string; // recursively parsed content within this item +} + +interface TableToken extends BlockToken { + type: "table"; + headers: string[]; + rows: string[][]; + alignments: ("left" | "center" | "right" | null)[]; +} + +interface RawHtmlToken extends BlockToken { + type: "rawHtml"; + content: string; +} + +type Token = + | HeadingToken + | ParagraphToken + | CodeBlockToken + | BlockquoteToken + | HorizontalRuleToken + | ListItemToken + | TableToken + | RawHtmlToken; + +/** + * HTML block-level tag names (from the CommonMark type-6 list). When a line + * starts with `<` followed by one of these tag names, the run of non-blank + * lines is emitted verbatim as raw HTML rather than wrapped in a paragraph. + */ +const HTML_BLOCK_TAGS = new Set([ + "address", "article", "aside", "base", "basefont", "blockquote", "body", + "caption", "center", "col", "colgroup", "dd", "details", "dialog", "dir", + "div", "dl", "dt", "fieldset", "figcaption", "figure", "footer", "form", + "frame", "frameset", "h1", "h2", "h3", "h4", "h5", "h6", "head", "header", + "hr", "html", "iframe", "legend", "li", "link", "main", "menu", "menuitem", + "nav", "noframes", "ol", "optgroup", "option", "p", "param", "section", + "source", "summary", "table", "tbody", "td", "tfoot", "th", "thead", + "title", "tr", "track", "ul", +]); + +function isHtmlBlockStart(line: string): boolean { + // `, ``, ``, or ``. + // Lines are emitted verbatim until the next blank line. + if (isHtmlBlockStart(line)) { + const htmlLines: string[] = []; + while (i < lines.length && lines[i].trim() !== "") { + htmlLines.push(lines[i]); + i++; + } + tokens.push({ + type: "rawHtml", + content: htmlLines.join("\n"), + }); + prevLineWasBlank = false; + continue; + } + + // Paragraph (default) + const paraLines: string[] = [line]; + i++; + while (i < lines.length) { + const nextLine = lines[i]; + // Stop paragraph on blank line + if (nextLine.trim() === "") {break;} + // Stop on block-level element + if (/^(#{1,6})\s/.test(nextLine)) {break;} + if (/^(`{3,}|~{3,})/.test(nextLine)) {break;} + if (/^\s{0,3}>/.test(nextLine)) {break;} + if (/^(\s{0,3})([-*_])\s*(\2\s*){2,}$/.test(nextLine)) {break;} + if (/^\s*([-*+]|\d+[.)])\s+/.test(nextLine)) {break;} + if (/^\s*\|(.+\|)+\s*$/.test(nextLine)) {break;} + if (isHtmlBlockStart(nextLine)) {break;} + // Check if next-next line is setext marker + if ( + i + 1 < lines.length && + /^[=-]+\s*$/.test(lines[i + 1]) && + nextLine.trim().length > 0 + ) { + break; + } + paraLines.push(nextLine); + i++; + } + // CommonMark allows up to 3 leading spaces of indent on paragraph lines. + // Also strip trailing whitespace from the final line so a trailing + // hard-break sequence (` \n` at end of paragraph) doesn't leak as + // literal trailing spaces in the rendered output. + tokens.push({ + type: "paragraph", + content: paraLines + .map((l) => l.replace(/^ {1,3}/, "")) + .join("\n") + .replace(/[ \t]+$/, ""), + }); + prevLineWasBlank = false; + } + + return tokens; +} + +function tryParseTable( + lines: string[], + start: number +): { token: TableToken; nextLine: number } | null { + // A table needs at least a header row and a separator row + if (start + 1 >= lines.length) {return null;} + + const headerLine = lines[start]; + const separatorLine = lines[start + 1]; + + // Check separator line format: | --- | --- | or --- | --- (outer pipes optional) + // Must contain at least one pipe and only dashes, colons, pipes, and whitespace + if ( + !separatorLine.includes("|") || + !/^\s*\|?\s*:?-+:?\s*(\|\s*:?-+:?\s*)*\|?\s*$/.test(separatorLine) + ) {return null;} + + // Check header line has at least one pipe (required to distinguish from plain text) + if (!headerLine.includes("|")) {return null;} + + const headers = parsePipeCells(headerLine); + const alignments = parseAlignments(separatorLine); + + const rows: string[][] = []; + let i = start + 2; + while (i < lines.length) { + const line = lines[i]; + if (!line.includes("|")) {break;} + rows.push(parsePipeCells(line)); + i++; + } + + return { + token: { + type: "table", + headers, + rows, + alignments, + }, + nextLine: i, + }; +} + +function parsePipeCells(line: string): string[] { + // Trim leading/trailing pipes and split + const trimmed = line.trim(); + const withoutOuterPipes = trimmed.startsWith("|") + ? trimmed.substring(1) + : trimmed; + const content = withoutOuterPipes.endsWith("|") + ? withoutOuterPipes.substring(0, withoutOuterPipes.length - 1) + : withoutOuterPipes; + + // Split by pipes, handling escaped pipes + const cells: string[] = []; + let current = ""; + for (let i = 0; i < content.length; i++) { + if (content[i] === "\\" && i + 1 < content.length && content[i + 1] === "|") { + current += "|"; + i++; + } else if (content[i] === "|") { + cells.push(current.trim()); + current = ""; + } else { + current += content[i]; + } + } + cells.push(current.trim()); + + return cells; +} + +function parseAlignments( + separatorLine: string +): ("left" | "center" | "right" | null)[] { + const cells = parsePipeCells(separatorLine); + return cells.map((cell) => { + const trimmed = cell.trim(); + const left = trimmed.startsWith(":"); + const right = trimmed.endsWith(":"); + if (left && right) {return "center";} + if (right) {return "right";} + if (left) {return "left";} + return null; + }); +} + +// ─── HTML Emitter ──────────────────────────────────────────────────────────── + +function tokensToHtml(tokens: Token[]): string { + let html = ""; + let i = 0; + + while (i < tokens.length) { + const token = tokens[i]; + + switch (token.type) { + case "heading": { + const t = token as HeadingToken; + html += `${parseInline(t.content)}`; + i++; + break; + } + + case "paragraph": { + const t = token as ParagraphToken; + html += `

    ${parseInline(t.content)}

    `; + i++; + break; + } + + case "codeBlock": { + const t = token as CodeBlockToken; + const langAttr = t.language + ? ` data-language="${escapeHtml(t.language)}"` + : ""; + html += `
    ${escapeHtml(t.code)}
    `; + i++; + break; + } + + case "blockquote": { + const t = token as BlockquoteToken; + // Recursively parse blockquote content as markdown + const innerTokens = tokenize(t.content); + const innerHtml = tokensToHtml(innerTokens); + html += `
    ${innerHtml}
    `; + i++; + break; + } + + case "hr": + html += `
    `; + i++; + break; + + case "listItem": { + // Collect consecutive list items and build nested list structure + const listHtml = emitListItems(tokens, i); + html += listHtml.html; + i = listHtml.nextIndex; + break; + } + + case "table": { + const t = token as TableToken; + html += emitTable(t); + i++; + break; + } + + case "rawHtml": { + const t = token as RawHtmlToken; + html += t.content; + i++; + break; + } + + default: + i++; + } + } + + return html; +} + +function emitListItems( + tokens: Token[], + startIdx: number +): { html: string; nextIndex: number } { + let html = ""; + let i = startIdx; + let currentListType: "bullet" | "ordered" | null = null; + + while (i < tokens.length && tokens[i].type === "listItem") { + const item = tokens[i] as ListItemToken; + const effectiveType = getEffectiveListType(item.listType); + + // Check if we need to switch list type + if (currentListType !== null && currentListType !== effectiveType) { + // Close current list, open new one + html += ``; + currentListType = null; + } + + // Open list if needed + if (currentListType === null) { + if (effectiveType === "ordered") { + const startAttr = + item.start !== undefined && item.start !== 1 + ? ` start="${item.start}"` + : ""; + html += ``; + } else { + html += `
      `; + } + currentListType = effectiveType; + } + + // Emit list item + if (item.listType === "task") { + const checkedAttr = item.checked ? " checked" : ""; + html += `
    • ${parseInline(item.content)}

      `; + } else { + html += `
    • ${parseInline(item.content)}

      `; + } + + // Render child content (nested items, continuation paragraphs, etc.) + if (item.childContent) { + const childTokens = tokenize(item.childContent); + html += tokensToHtml(childTokens); + } + + html += `
    • `; + i++; + } + + // Close the list + if (currentListType !== null) { + html += ``; + } + + return { html, nextIndex: i }; +} + +function getEffectiveListType( + listType: "bullet" | "ordered" | "task" +): "bullet" | "ordered" { + return listType === "ordered" ? "ordered" : "bullet"; +} + +function emitTable(table: TableToken): string { + let html = ""; + + // Header row + html += ""; + for (let c = 0; c < table.headers.length; c++) { + const align = table.alignments[c]; + const alignAttr = align ? ` align="${align}"` : ""; + html += `${parseInline(table.headers[c])}`; + } + html += ""; + + // Body rows + if (table.rows.length > 0) { + html += ""; + for (const row of table.rows) { + html += ""; + for (let c = 0; c < table.headers.length; c++) { + const cell = c < row.length ? row[c] : ""; + const align = table.alignments[c]; + const alignAttr = align ? ` align="${align}"` : ""; + html += `${parseInline(cell)}`; + } + html += ""; + } + html += ""; + } + + html += "
      "; + return html; +} + +// ─── Public API ────────────────────────────────────────────────────────────── + +/** + * Convert a markdown string to an HTML string. + * This is a direct replacement for the unified/remark/rehype pipeline. + */ +export function markdownToHtml(markdown: string): string { + const tokens = tokenize(markdown); + return tokensToHtml(tokens); +} diff --git a/packages/core/src/api/parsers/markdown/parseMarkdown.ts b/packages/core/src/api/parsers/markdown/parseMarkdown.ts index e98ef00baa..e1741e214e 100644 --- a/packages/core/src/api/parsers/markdown/parseMarkdown.ts +++ b/packages/core/src/api/parsers/markdown/parseMarkdown.ts @@ -1,11 +1,4 @@ import { Schema } from "prosemirror-model"; -import remarkGfm from "remark-gfm"; -import remarkParse from "remark-parse"; -import remarkRehype, { - defaultHandlers as remarkRehypeDefaultHandlers, -} from "remark-rehype"; -import rehypeStringify from "rehype-stringify"; -import { unified } from "unified"; import { Block } from "../../../blocks/defaultBlocks.js"; import { @@ -14,102 +7,10 @@ import { StyleSchema, } from "../../../schema/index.js"; import { HTMLToBlocks } from "../html/parseHTML.js"; -import { isVideoUrl } from "../../../util/string.js"; - -// modified version of https://github.com/syntax-tree/mdast-util-to-hast/blob/main/lib/handlers/code.js -// that outputs a data-language attribute instead of a CSS class (e.g.: language-typescript) -function code(state: any, node: any) { - const value = node.value ? node.value : ""; - /** @type {Properties} */ - const properties: any = {}; - - if (node.lang) { - // changed line - properties["data-language"] = node.lang; - } - - // Create ``. - /** @type {Element} */ - let result: any = { - type: "element", - tagName: "code", - properties, - children: [{ type: "text", value }], - }; - - if (node.meta) { - result.data = { meta: node.meta }; - } - - state.patch(node, result); - result = state.applyData(node, result); - - // Create `
      `.
      -  result = {
      -    type: "element",
      -    tagName: "pre",
      -    properties: {},
      -    children: [result],
      -  };
      -  state.patch(node, result);
      -  return result;
      -}
      -
      -function video(state: any, node: any) {
      -  const url = String(node?.url || "");
      -  const title = node?.title ? String(node.title) : undefined;
      -
      -  let result: any = {
      -    type: "element",
      -    tagName: "video",
      -    properties: {
      -      src: url,
      -      "data-name": title,
      -      "data-url": url,
      -      controls: true,
      -    },
      -    children: [],
      -  };
      -  state.patch?.(node, result);
      -  result = state.applyData ? state.applyData(node, result) : result;
      -
      -  return result;
      -}
      +import { markdownToHtml } from "./markdownToHtml.js";
       
       export function markdownToHTML(markdown: string): string {
      -  const htmlString = unified()
      -    .use(remarkParse)
      -    .use(remarkGfm)
      -    .use(remarkRehype, {
      -      handlers: {
      -        ...(remarkRehypeDefaultHandlers as any),
      -        image: (state: any, node: any) => {
      -          const url = String(node?.url || "");
      -
      -          if (isVideoUrl(url)) {
      -            return video(state, node);
      -          } else {
      -            return remarkRehypeDefaultHandlers.image(state, node);
      -          }
      -        },
      -        code,
      -        blockquote: (state: any, node: any) => {
      -          const result = {
      -            type: "element",
      -            tagName: "blockquote",
      -            properties: {},
      -            // The only difference from the original is that we don't wrap the children with line endings
      -            children: state.wrap(state.all(node), false),
      -          };
      -          state.patch(node, result);
      -          return state.applyData(node, result);
      -        },
      -      },
      -    })
      -    .use(rehypeStringify)
      -    .processSync(markdown);
      -
      -  return htmlString.value as string;
      +  return markdownToHtml(markdown);
       }
       
       export function markdownToBlocks<
      diff --git a/packages/server-util/src/context/__snapshots__/ServerBlockNoteEditor.test.ts.snap b/packages/server-util/src/context/__snapshots__/ServerBlockNoteEditor.test.ts.snap
      index 1aec369bd8..db260108b3 100644
      --- a/packages/server-util/src/context/__snapshots__/ServerBlockNoteEditor.test.ts.snap
      +++ b/packages/server-util/src/context/__snapshots__/ServerBlockNoteEditor.test.ts.snap
      @@ -129,7 +129,7 @@ exports[`Test ServerBlockNoteEditor > converts to and from HTML (blocksToHTMLLos
       `;
       
       exports[`Test ServerBlockNoteEditor > converts to and from markdown (blocksToMarkdownLossy) 1`] = `
      -"## **Heading ***~~2~~*
      +"## **Heading** *~~2~~*
       
       Paragraph
       
      @@ -154,7 +154,12 @@ exports[`Test ServerBlockNoteEditor > converts to and from markdown (blocksToMar
               "styles": {
                 "bold": true,
               },
      -        "text": "Heading ",
      +        "text": "Heading",
      +        "type": "text",
      +      },
      +      {
      +        "styles": {},
      +        "text": " ",
               "type": "text",
             },
             {
      diff --git a/packages/xl-ai/package.json b/packages/xl-ai/package.json
      index 130e0d420e..804ddd207a 100644
      --- a/packages/xl-ai/package.json
      +++ b/packages/xl-ai/package.json
      @@ -90,9 +90,6 @@
           "react": "^19.2.5",
           "react-dom": "^19.2.5",
           "react-icons": "^5.5.0",
      -    "remark-parse": "^11.0.0",
      -    "remark-stringify": "^11.0.0",
      -    "unified": "^11.0.5",
           "y-prosemirror": "^1.3.7"
         },
         "devDependencies": {
      diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
      index ae431ff9dd..94f6a67ab1 100644
      --- a/pnpm-lock.yaml
      +++ b/pnpm-lock.yaml
      @@ -4577,9 +4577,6 @@ importers:
             fast-deep-equal:
               specifier: ^3.1.3
               version: 3.1.3
      -      hast-util-from-dom:
      -        specifier: ^5.0.1
      -        version: 5.0.1
             lib0:
               specifier: ^0.2.99
               version: 0.2.117
      @@ -4601,36 +4598,6 @@ importers:
             prosemirror-view:
               specifier: ^1.41.4
               version: 1.41.8
      -      rehype-format:
      -        specifier: ^5.0.1
      -        version: 5.0.1
      -      rehype-parse:
      -        specifier: ^9.0.1
      -        version: 9.0.1
      -      rehype-remark:
      -        specifier: ^10.0.1
      -        version: 10.0.1
      -      rehype-stringify:
      -        specifier: ^10.0.1
      -        version: 10.0.1
      -      remark-gfm:
      -        specifier: ^4.0.1
      -        version: 4.0.1
      -      remark-parse:
      -        specifier: ^11.0.0
      -        version: 11.0.0
      -      remark-rehype:
      -        specifier: ^11.1.2
      -        version: 11.1.2
      -      remark-stringify:
      -        specifier: ^11.0.0
      -        version: 11.0.0
      -      unified:
      -        specifier: ^11.0.5
      -        version: 11.0.5
      -      unist-util-visit:
      -        specifier: ^5.0.0
      -        version: 5.1.0
             y-prosemirror:
               specifier: ^1.3.7
               version: 1.3.7(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)
      @@ -4641,9 +4608,6 @@ importers:
               specifier: ^13.6.27
               version: 13.6.30
           devDependencies:
      -      '@types/hast':
      -        specifier: ^3.0.4
      -        version: 3.0.4
             eslint:
               specifier: ^8.57.1
               version: 8.57.1
      @@ -5075,15 +5039,6 @@ importers:
             react-icons:
               specifier: ^5.5.0
               version: 5.6.0(react@19.2.5)
      -      remark-parse:
      -        specifier: ^11.0.0
      -        version: 11.0.0
      -      remark-stringify:
      -        specifier: ^11.0.0
      -        version: 11.0.0
      -      unified:
      -        specifier: ^11.0.5
      -        version: 11.0.5
             y-prosemirror:
               specifier: ^1.3.7
               version: 1.3.7(prosemirror-model@1.25.4)(prosemirror-state@1.4.4)(prosemirror-view@1.41.8)(y-protocols@1.0.7(yjs@13.6.30))(yjs@13.6.30)
      @@ -12958,39 +12913,6 @@ packages:
           resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
           engines: {node: '>= 0.4'}
       
      -  hast-util-embedded@3.0.0:
      -    resolution: {integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==}
      -
      -  hast-util-format@1.1.0:
      -    resolution: {integrity: sha512-yY1UDz6bC9rDvCWHpx12aIBGRG7krurX0p0Fm6pT547LwDIZZiNr8a+IHDogorAdreULSEzP82Nlv5SZkHZcjA==}
      -
      -  hast-util-from-dom@5.0.1:
      -    resolution: {integrity: sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q==}
      -
      -  hast-util-from-html@2.0.3:
      -    resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==}
      -
      -  hast-util-from-parse5@8.0.3:
      -    resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==}
      -
      -  hast-util-has-property@3.0.0:
      -    resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==}
      -
      -  hast-util-is-body-ok-link@3.0.1:
      -    resolution: {integrity: sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ==}
      -
      -  hast-util-is-element@3.0.0:
      -    resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==}
      -
      -  hast-util-minify-whitespace@1.0.1:
      -    resolution: {integrity: sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw==}
      -
      -  hast-util-parse-selector@4.0.0:
      -    resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==}
      -
      -  hast-util-phrasing@3.0.1:
      -    resolution: {integrity: sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==}
      -
         hast-util-to-estree@3.1.3:
           resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==}
       
      @@ -13000,21 +12922,12 @@ packages:
         hast-util-to-jsx-runtime@2.3.6:
           resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==}
       
      -  hast-util-to-mdast@10.1.2:
      -    resolution: {integrity: sha512-FiCRI7NmOvM4y+f5w32jPRzcxDIz+PUqDwEqn1A+1q2cdp3B8Gx7aVrXORdOKjMNDQsD1ogOr896+0jJHW1EFQ==}
      -
         hast-util-to-string@3.0.1:
           resolution: {integrity: sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==}
       
      -  hast-util-to-text@4.0.2:
      -    resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==}
      -
         hast-util-whitespace@3.0.0:
           resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
       
      -  hastscript@9.0.1:
      -    resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==}
      -
         headers-polyfill@4.0.3:
           resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==}
       
      @@ -13052,9 +12965,6 @@ packages:
         html-void-elements@3.0.0:
           resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
       
      -  html-whitespace-sensitive-tag-names@3.0.1:
      -    resolution: {integrity: sha512-q+310vW8zmymYHALr1da4HyXUQ0zgiIwIicEfotYPWGN0OJVEN/58IJ3A4GBYcEq3LGAZqKb+ugvP0GNB9CEAA==}
      -
         htmlfy@0.6.7:
           resolution: {integrity: sha512-r8hRd+oIM10lufovN+zr3VKPTYEIvIwqXGucidh2XQufmiw6sbUXFUFjWlfjo3AnefIDTyzykVzQ8IUVuT1peQ==}
       
      @@ -15033,24 +14943,9 @@ packages:
           resolution: {integrity: sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==}
           hasBin: true
       
      -  rehype-format@5.0.1:
      -    resolution: {integrity: sha512-zvmVru9uB0josBVpr946OR8ui7nJEdzZobwLOOqHb/OOD88W0Vk2SqLwoVOj0fM6IPCCO6TaV9CvQvJMWwukFQ==}
      -
      -  rehype-minify-whitespace@6.0.2:
      -    resolution: {integrity: sha512-Zk0pyQ06A3Lyxhe9vGtOtzz3Z0+qZ5+7icZ/PL/2x1SHPbKao5oB/g/rlc6BCTajqBb33JcOe71Ye1oFsuYbnw==}
      -
      -  rehype-parse@9.0.1:
      -    resolution: {integrity: sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==}
      -
         rehype-recma@1.0.0:
           resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==}
       
      -  rehype-remark@10.0.1:
      -    resolution: {integrity: sha512-EmDndlb5NVwXGfUa4c9GPK+lXeItTilLhE6ADSaQuHr4JUlKw9MidzGzx4HpqZrNCt6vnHmEifXQiiA+CEnjYQ==}
      -
      -  rehype-stringify@10.0.1:
      -    resolution: {integrity: sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==}
      -
         remark-gfm@4.0.1:
           resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==}
       
      @@ -15738,9 +15633,6 @@ packages:
         trim-lines@3.0.1:
           resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
       
      -  trim-trailing-lines@2.1.0:
      -    resolution: {integrity: sha512-5UR5Biq4VlVOtzqkm2AZlgvSlDJtME46uV0br0gENbwN4l5+mMKT4b9gJKqWtuL2zAIqajGJGuvbCbcAJUZqBg==}
      -
         trough@2.2.0:
           resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==}
       
      @@ -15905,9 +15797,6 @@ packages:
         unified@11.0.5:
           resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
       
      -  unist-util-find-after@5.0.0:
      -    resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==}
      -
         unist-util-is@6.0.1:
           resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==}
       
      @@ -15996,9 +15885,6 @@ packages:
           resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==}
           engines: {node: '>= 0.8'}
       
      -  vfile-location@5.0.3:
      -    resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==}
      -
         vfile-message@4.0.3:
           resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==}
       
      @@ -16169,9 +16055,6 @@ packages:
         wcwidth@1.0.1:
           resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==}
       
      -  web-namespaces@2.0.1:
      -    resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
      -
         web-streams-polyfill@4.2.0:
           resolution: {integrity: sha512-0rYDzGOh9EZpig92umN5g5D/9A1Kff7k0/mzPSSCY8jEQeYkgRMoY7LhbXtUCWzLCMX0TUE9aoHkjFNB7D9pfA==}
           engines: {node: '>= 8'}
      @@ -24740,79 +24623,6 @@ snapshots:
           dependencies:
             function-bind: 1.1.2
       
      -  hast-util-embedded@3.0.0:
      -    dependencies:
      -      '@types/hast': 3.0.4
      -      hast-util-is-element: 3.0.0
      -
      -  hast-util-format@1.1.0:
      -    dependencies:
      -      '@types/hast': 3.0.4
      -      hast-util-embedded: 3.0.0
      -      hast-util-minify-whitespace: 1.0.1
      -      hast-util-phrasing: 3.0.1
      -      hast-util-whitespace: 3.0.0
      -      html-whitespace-sensitive-tag-names: 3.0.1
      -      unist-util-visit-parents: 6.0.2
      -
      -  hast-util-from-dom@5.0.1:
      -    dependencies:
      -      '@types/hast': 3.0.4
      -      hastscript: 9.0.1
      -      web-namespaces: 2.0.1
      -
      -  hast-util-from-html@2.0.3:
      -    dependencies:
      -      '@types/hast': 3.0.4
      -      devlop: 1.1.0
      -      hast-util-from-parse5: 8.0.3
      -      parse5: 7.3.0
      -      vfile: 6.0.3
      -      vfile-message: 4.0.3
      -
      -  hast-util-from-parse5@8.0.3:
      -    dependencies:
      -      '@types/hast': 3.0.4
      -      '@types/unist': 3.0.3
      -      devlop: 1.1.0
      -      hastscript: 9.0.1
      -      property-information: 7.1.0
      -      vfile: 6.0.3
      -      vfile-location: 5.0.3
      -      web-namespaces: 2.0.1
      -
      -  hast-util-has-property@3.0.0:
      -    dependencies:
      -      '@types/hast': 3.0.4
      -
      -  hast-util-is-body-ok-link@3.0.1:
      -    dependencies:
      -      '@types/hast': 3.0.4
      -
      -  hast-util-is-element@3.0.0:
      -    dependencies:
      -      '@types/hast': 3.0.4
      -
      -  hast-util-minify-whitespace@1.0.1:
      -    dependencies:
      -      '@types/hast': 3.0.4
      -      hast-util-embedded: 3.0.0
      -      hast-util-is-element: 3.0.0
      -      hast-util-whitespace: 3.0.0
      -      unist-util-is: 6.0.1
      -
      -  hast-util-parse-selector@4.0.0:
      -    dependencies:
      -      '@types/hast': 3.0.4
      -
      -  hast-util-phrasing@3.0.1:
      -    dependencies:
      -      '@types/hast': 3.0.4
      -      hast-util-embedded: 3.0.0
      -      hast-util-has-property: 3.0.0
      -      hast-util-is-body-ok-link: 3.0.1
      -      hast-util-is-element: 3.0.0
      -
         hast-util-to-estree@3.1.3:
           dependencies:
             '@types/estree': 1.0.8
      @@ -24868,46 +24678,14 @@ snapshots:
           transitivePeerDependencies:
             - supports-color
       
      -  hast-util-to-mdast@10.1.2:
      -    dependencies:
      -      '@types/hast': 3.0.4
      -      '@types/mdast': 4.0.4
      -      '@ungap/structured-clone': 1.3.0
      -      hast-util-phrasing: 3.0.1
      -      hast-util-to-html: 9.0.5
      -      hast-util-to-text: 4.0.2
      -      hast-util-whitespace: 3.0.0
      -      mdast-util-phrasing: 4.1.0
      -      mdast-util-to-hast: 13.2.1
      -      mdast-util-to-string: 4.0.0
      -      rehype-minify-whitespace: 6.0.2
      -      trim-trailing-lines: 2.1.0
      -      unist-util-position: 5.0.0
      -      unist-util-visit: 5.1.0
      -
         hast-util-to-string@3.0.1:
           dependencies:
             '@types/hast': 3.0.4
       
      -  hast-util-to-text@4.0.2:
      -    dependencies:
      -      '@types/hast': 3.0.4
      -      '@types/unist': 3.0.3
      -      hast-util-is-element: 3.0.0
      -      unist-util-find-after: 5.0.0
      -
         hast-util-whitespace@3.0.0:
           dependencies:
             '@types/hast': 3.0.4
       
      -  hastscript@9.0.1:
      -    dependencies:
      -      '@types/hast': 3.0.4
      -      comma-separated-tokens: 2.0.3
      -      hast-util-parse-selector: 4.0.0
      -      property-information: 7.1.0
      -      space-separated-tokens: 2.0.2
      -
         headers-polyfill@4.0.3: {}
       
         hermes-estree@0.25.1: {}
      @@ -24948,8 +24726,6 @@ snapshots:
       
         html-void-elements@3.0.0: {}
       
      -  html-whitespace-sensitive-tag-names@3.0.1: {}
      -
         htmlfy@0.6.7: {}
       
         htmlparser2@8.0.2:
      @@ -27305,22 +27081,6 @@ snapshots:
           dependencies:
             jsesc: 3.1.0
       
      -  rehype-format@5.0.1:
      -    dependencies:
      -      '@types/hast': 3.0.4
      -      hast-util-format: 1.1.0
      -
      -  rehype-minify-whitespace@6.0.2:
      -    dependencies:
      -      '@types/hast': 3.0.4
      -      hast-util-minify-whitespace: 1.0.1
      -
      -  rehype-parse@9.0.1:
      -    dependencies:
      -      '@types/hast': 3.0.4
      -      hast-util-from-html: 2.0.3
      -      unified: 11.0.5
      -
         rehype-recma@1.0.0:
           dependencies:
             '@types/estree': 1.0.8
      @@ -27329,20 +27089,6 @@ snapshots:
           transitivePeerDependencies:
             - supports-color
       
      -  rehype-remark@10.0.1:
      -    dependencies:
      -      '@types/hast': 3.0.4
      -      '@types/mdast': 4.0.4
      -      hast-util-to-mdast: 10.1.2
      -      unified: 11.0.5
      -      vfile: 6.0.3
      -
      -  rehype-stringify@10.0.1:
      -    dependencies:
      -      '@types/hast': 3.0.4
      -      hast-util-to-html: 9.0.5
      -      unified: 11.0.5
      -
         remark-gfm@4.0.1:
           dependencies:
             '@types/mdast': 4.0.4
      @@ -28185,8 +27931,6 @@ snapshots:
       
         trim-lines@3.0.1: {}
       
      -  trim-trailing-lines@2.1.0: {}
      -
         trough@2.2.0: {}
       
         ts-api-utils@2.5.0(typescript@5.9.3):
      @@ -28363,11 +28107,6 @@ snapshots:
             trough: 2.2.0
             vfile: 6.0.3
       
      -  unist-util-find-after@5.0.0:
      -    dependencies:
      -      '@types/unist': 3.0.3
      -      unist-util-is: 6.0.1
      -
         unist-util-is@6.0.1:
           dependencies:
             '@types/unist': 3.0.3
      @@ -28475,11 +28214,6 @@ snapshots:
       
         vary@1.1.2: {}
       
      -  vfile-location@5.0.3:
      -    dependencies:
      -      '@types/unist': 3.0.3
      -      vfile: 6.0.3
      -
         vfile-message@4.0.3:
           dependencies:
             '@types/unist': 3.0.3
      @@ -28785,8 +28519,6 @@ snapshots:
           dependencies:
             defaults: 1.0.4
       
      -  web-namespaces@2.0.1: {}
      -
         web-streams-polyfill@4.2.0: {}
       
         webidl-conversions@3.0.1: {}
      diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/audio/basic.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/audio/basic.html
      new file mode 100644
      index 0000000000..bba236e2d5
      --- /dev/null
      +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/audio/basic.html
      @@ -0,0 +1,22 @@
      +
      +
      +
      +
      +
      + +
      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/audio/button.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/audio/button.html new file mode 100644 index 0000000000..2dceaf9f4f --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/audio/button.html @@ -0,0 +1,20 @@ +
      +
      +
      +
      +
      +
      +
      + + + +
      +

      Add audio

      +
      +
      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/audio/noName.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/audio/noName.html new file mode 100644 index 0000000000..9753d9671a --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/audio/noName.html @@ -0,0 +1,21 @@ +
      +
      +
      +
      +
      + +
      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/complex/document.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/complex/document.html new file mode 100644 index 0000000000..4376ebf7f1 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/complex/document.html @@ -0,0 +1,90 @@ +
      +
      +
      +
      +

      Document Title

      +
      +
      +
      +
      +
      +
      +

      Introduction paragraph.

      +
      +
      +
      +
      +
      +
      +

      Section 1

      +
      +
      +
      +
      +
      +
      +

      + Text with + bold + and + a link + . +

      +
      +
      +
      +
      +
      +
      +

      First point

      +
      +
      +
      +
      +
      +
      +

      Second point

      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      +
      A notable quote
      +
      +
      +
      +
      +
      +
      +
      + +
      +
      +          const x = 42;
      +        
      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/h1.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/h1.html new file mode 100644 index 0000000000..3e3e513852 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/h1.html @@ -0,0 +1,9 @@ +
      +
      +
      +
      +

      Heading 1

      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/h2.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/h2.html new file mode 100644 index 0000000000..7ffe42afa3 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/h2.html @@ -0,0 +1,9 @@ +
      +
      +
      +
      +

      Heading 2

      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/h3.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/h3.html new file mode 100644 index 0000000000..437867e0d9 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/h3.html @@ -0,0 +1,9 @@ +
      +
      +
      +
      +

      Heading 3

      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/h4.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/h4.html new file mode 100644 index 0000000000..1ef4e627ff --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/h4.html @@ -0,0 +1,9 @@ +
      +
      +
      +
      +

      Heading 4

      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/h5.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/h5.html new file mode 100644 index 0000000000..f44690aa57 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/h5.html @@ -0,0 +1,9 @@ +
      +
      +
      +
      +
      Heading 5
      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/h6.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/h6.html new file mode 100644 index 0000000000..5daca5fbdf --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/h6.html @@ -0,0 +1,9 @@ +
      +
      +
      +
      +
      Heading 6
      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/styled.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/styled.html new file mode 100644 index 0000000000..31df3416ba --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/styled.html @@ -0,0 +1,12 @@ +
      +
      +
      +
      +

      + Bold + Heading +

      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/toggleable.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/toggleable.html new file mode 100644 index 0000000000..2982ce3673 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/heading/toggleable.html @@ -0,0 +1,38 @@ +
      +
      +
      +
      +
      +
      + +

      Toggle Heading

      +
      +
      +
      +
      +
      +
      +
      +

      Child content

      +
      +
      +
      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/image/withCaption.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/image/withCaption.html new file mode 100644 index 0000000000..bca753588e --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/image/withCaption.html @@ -0,0 +1,31 @@ +
      +
      +
      +
      +
      +
      + Example Image + + +
      +

      This is a caption

      +
      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/plainUrl.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/plainUrl.html new file mode 100644 index 0000000000..db540213b4 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/plainUrl.html @@ -0,0 +1,18 @@ +
      +
      + +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/urlWithParens.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/urlWithParens.html new file mode 100644 index 0000000000..ab632bd13f --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/urlWithParens.html @@ -0,0 +1,18 @@ +
      +
      +
      +
      +

      + Example +

      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/withCode.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/withCode.html new file mode 100644 index 0000000000..45427ff9ad --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/link/withCode.html @@ -0,0 +1,21 @@ +
      +
      +
      +
      +

      + See the + docs + for + config +

      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/lists/numberedListStart.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/lists/numberedListStart.html new file mode 100644 index 0000000000..62b0458466 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/lists/numberedListStart.html @@ -0,0 +1,25 @@ +
      +
      +
      +
      +

      Item 5

      +
      +
      +
      +
      +
      +
      +

      Item 6

      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/paragraph/multiple.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/paragraph/multiple.html new file mode 100644 index 0000000000..a5c65cdb68 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/paragraph/multiple.html @@ -0,0 +1,23 @@ +
      +
      +
      +
      +

      First paragraph

      +
      +
      +
      +
      +
      +
      +

      Second paragraph

      +
      +
      +
      +
      +
      +
      +

      Third paragraph

      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/quote/basic.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/quote/basic.html new file mode 100644 index 0000000000..278aafa3ec --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/quote/basic.html @@ -0,0 +1,9 @@ +
      +
      +
      +
      +
      This is a quote
      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/quote/multiple.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/quote/multiple.html new file mode 100644 index 0000000000..99c7aa530e --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/quote/multiple.html @@ -0,0 +1,16 @@ +
      +
      +
      +
      +
      First quote
      +
      +
      +
      +
      +
      +
      +
      Second quote
      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/quote/nested.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/quote/nested.html new file mode 100644 index 0000000000..da3b3d1215 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/quote/nested.html @@ -0,0 +1,18 @@ +
      +
      +
      +
      +
      Parent quote
      +
      +
      +
      +
      +
      +

      Nested paragraph

      +
      +
      +
      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/quote/styled.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/quote/styled.html new file mode 100644 index 0000000000..244868c2c6 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/quote/styled.html @@ -0,0 +1,14 @@ +
      +
      +
      +
      +
      + Bold + and + italic + quote +
      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/quote/withLink.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/quote/withLink.html new file mode 100644 index 0000000000..5cbacbdec1 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/quote/withLink.html @@ -0,0 +1,19 @@ +
      +
      +
      +
      +
      + Quote with + a link +
      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/backgroundColor.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/backgroundColor.html new file mode 100644 index 0000000000..da1b939f67 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/backgroundColor.html @@ -0,0 +1,11 @@ +
      +
      +
      +
      +

      + Highlighted text +

      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/bold.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/bold.html new file mode 100644 index 0000000000..1834b5c3ca --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/bold.html @@ -0,0 +1,11 @@ +
      +
      +
      +
      +

      + Bold text +

      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/boldItalicStrike.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/boldItalicStrike.html new file mode 100644 index 0000000000..f8baaa4507 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/boldItalicStrike.html @@ -0,0 +1,15 @@ +
      +
      +
      +
      +

      + + + All styles + + +

      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/code.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/code.html new file mode 100644 index 0000000000..31aa7a6dba --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/code.html @@ -0,0 +1,11 @@ +
      +
      +
      +
      +

      + Inline code +

      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/combined.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/combined.html new file mode 100644 index 0000000000..3bcf4491b2 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/combined.html @@ -0,0 +1,13 @@ +
      +
      +
      +
      +

      + + Bold and italic + +

      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/italic.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/italic.html new file mode 100644 index 0000000000..265708f07d --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/italic.html @@ -0,0 +1,11 @@ +
      +
      +
      +
      +

      + Italic text +

      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/mixedInParagraph.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/mixedInParagraph.html new file mode 100644 index 0000000000..5bc3a5a734 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/mixedInParagraph.html @@ -0,0 +1,15 @@ +
      +
      +
      +
      +

      + Normal + bold + italic + code + strike +

      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/strike.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/strike.html new file mode 100644 index 0000000000..294425c21f --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/strike.html @@ -0,0 +1,11 @@ +
      +
      +
      +
      +

      + Strikethrough text +

      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/textColor.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/textColor.html new file mode 100644 index 0000000000..0e6799d766 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/textColor.html @@ -0,0 +1,11 @@ +
      +
      +
      +
      +

      + Colored text +

      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/underline.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/underline.html new file mode 100644 index 0000000000..29ab7e88cf --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/style/underline.html @@ -0,0 +1,11 @@ +
      +
      +
      +
      +

      + Underline text +

      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/advancedExample.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/advancedExample.html new file mode 100644 index 0000000000..1327b27445 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/advancedExample.html @@ -0,0 +1,82 @@ +
      +
      +
      +
      +
      +
      + + + + + + + + + + + + + + + + + + + + + + + +
      +

      This row has headers

      +
      +

      + This is + RED +

      +
      +

      Text is Blue

      +
      +

      + This spans 2 columns +
      + and 2 rows +

      +
      +

      Sooo many features

      +
      +

      +
      +

      A cell

      +
      +

      Another Cell

      +
      +

      Aligned center

      +
      +
      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/cellTextAlignment.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/cellTextAlignment.html new file mode 100644 index 0000000000..8b1b1756b0 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/cellTextAlignment.html @@ -0,0 +1,33 @@ +
      +
      +
      +
      +
      +
      + + + + + + + + + + + +
      +

      Left

      +
      +

      Center

      +
      +

      Right

      +
      +
      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/emptyCells.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/emptyCells.html new file mode 100644 index 0000000000..b3564081f0 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/emptyCells.html @@ -0,0 +1,37 @@ +
      +
      +
      +
      +
      +
      + + + + + + + + + + + + + +
      +

      Has content

      +
      +

      +
      +

      +
      +

      Also has content

      +
      +
      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/hardBreakInCell.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/hardBreakInCell.html new file mode 100644 index 0000000000..d0c5618ffc --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/hardBreakInCell.html @@ -0,0 +1,33 @@ +
      +
      +
      +
      +
      +
      + + + + + + + + + +
      +

      + Line 1 +
      + Line 2 +

      +
      +

      Normal cell

      +
      +
      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/headerRowsAndCols.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/headerRowsAndCols.html new file mode 100644 index 0000000000..945741a785 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/headerRowsAndCols.html @@ -0,0 +1,44 @@ +
      +
      +
      +
      +
      +
      + + + + + + + + + + + + + + + + +
      +

      Corner

      +
      +

      Column Header 1

      +
      +

      Column Header 2

      +
      +

      Row Header 1

      +
      +

      Data 1

      +
      +

      Data 2

      +
      +
      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/linksInCells.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/linksInCells.html new file mode 100644 index 0000000000..8aa07b4b98 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/linksInCells.html @@ -0,0 +1,56 @@ +
      +
      +
      +
      +
      +
      + + + + + + + + + + + + + +
      +

      + Visit + Example +

      +
      +

      Plain cell

      +
      +

      Data

      +
      +

      + Link +

      +
      +
      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/singleCell.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/singleCell.html new file mode 100644 index 0000000000..63c4da11a1 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/singleCell.html @@ -0,0 +1,25 @@ +
      +
      +
      +
      +
      +
      + + + + + + + +
      +

      Only cell

      +
      +
      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/styledCellContent.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/styledCellContent.html new file mode 100644 index 0000000000..9d8035d5c5 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/table/styledCellContent.html @@ -0,0 +1,45 @@ +
      +
      +
      +
      +
      +
      + + + + + + + + + + + + + +
      +

      + Bold +

      +
      +

      + Italic +

      +
      +

      + Strike +

      +
      +

      + Code +

      +
      +
      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/video/withCaption.html b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/video/withCaption.html new file mode 100644 index 0000000000..9de3da2aca --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/video/withCaption.html @@ -0,0 +1,32 @@ +
      +
      +
      +
      +
      +
      + + + +
      +

      Video caption

      +
      +
      +
      +
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/audio/basic.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/audio/basic.html new file mode 100644 index 0000000000..d2a69001ba --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/audio/basic.html @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/audio/button.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/audio/button.html new file mode 100644 index 0000000000..51c429c20a --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/audio/button.html @@ -0,0 +1 @@ +

      Add audio

      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/audio/noName.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/audio/noName.html new file mode 100644 index 0000000000..1699b58c73 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/audio/noName.html @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/complex/document.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/complex/document.html new file mode 100644 index 0000000000..421d420c08 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/complex/document.html @@ -0,0 +1,30 @@ +

      Document Title

      +

      Introduction paragraph.

      +

      Section 1

      +

      + Text with + bold + and + a link + . +

      +
        +
      • +

        First point

        +
      • +
      • +

        Second point

        +
      • +
      +
      +
      A notable quote
      +
      +  const x = 42;
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/h1.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/h1.html new file mode 100644 index 0000000000..ac06cdc123 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/h1.html @@ -0,0 +1 @@ +

      Heading 1

      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/h2.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/h2.html new file mode 100644 index 0000000000..92e9734754 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/h2.html @@ -0,0 +1 @@ +

      Heading 2

      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/h3.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/h3.html new file mode 100644 index 0000000000..df25998db1 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/h3.html @@ -0,0 +1 @@ +

      Heading 3

      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/h4.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/h4.html new file mode 100644 index 0000000000..430144bc54 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/h4.html @@ -0,0 +1 @@ +

      Heading 4

      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/h5.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/h5.html new file mode 100644 index 0000000000..02e7e8fda2 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/h5.html @@ -0,0 +1 @@ +
      Heading 5
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/h6.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/h6.html new file mode 100644 index 0000000000..6e76905810 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/h6.html @@ -0,0 +1 @@ +
      Heading 6
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/styled.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/styled.html new file mode 100644 index 0000000000..7f14fdb711 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/styled.html @@ -0,0 +1,4 @@ +

      + Bold + Heading +

      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/toggleable.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/toggleable.html new file mode 100644 index 0000000000..ecec05b566 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/heading/toggleable.html @@ -0,0 +1,6 @@ +
      + +

      Toggle Heading

      +
      +

      Child content

      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/image/withCaption.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/image/withCaption.html new file mode 100644 index 0000000000..3ecba73103 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/image/withCaption.html @@ -0,0 +1,8 @@ +
      + Example Image +
      This is a caption
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/plainUrl.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/plainUrl.html new file mode 100644 index 0000000000..d014edd8bb --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/plainUrl.html @@ -0,0 +1,10 @@ +

      + https://www.website.com +

      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/urlWithParens.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/urlWithParens.html new file mode 100644 index 0000000000..a783db1f73 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/urlWithParens.html @@ -0,0 +1,10 @@ +

      + Example +

      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/withCode.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/withCode.html new file mode 100644 index 0000000000..385c0be8c9 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/link/withCode.html @@ -0,0 +1,13 @@ +

      + See the + docs + for + config +

      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/lists/numberedListStart.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/lists/numberedListStart.html new file mode 100644 index 0000000000..35535f7db4 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/lists/numberedListStart.html @@ -0,0 +1,8 @@ +
        +
      1. +

        Item 5

        +
      2. +
      3. +

        Item 6

        +
      4. +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/paragraph/multiple.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/paragraph/multiple.html new file mode 100644 index 0000000000..a183a01cd8 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/paragraph/multiple.html @@ -0,0 +1,3 @@ +

      First paragraph

      +

      Second paragraph

      +

      Third paragraph

      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/quote/basic.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/quote/basic.html new file mode 100644 index 0000000000..53c51228f1 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/quote/basic.html @@ -0,0 +1 @@ +
      This is a quote
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/quote/multiple.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/quote/multiple.html new file mode 100644 index 0000000000..80b8a40ae5 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/quote/multiple.html @@ -0,0 +1,2 @@ +
      First quote
      +
      Second quote
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/quote/nested.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/quote/nested.html new file mode 100644 index 0000000000..3e74d08d92 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/quote/nested.html @@ -0,0 +1,2 @@ +
      Parent quote
      +

      Nested paragraph

      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/quote/styled.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/quote/styled.html new file mode 100644 index 0000000000..7f80b7fc7c --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/quote/styled.html @@ -0,0 +1,6 @@ +
      + Bold + and + italic + quote +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/quote/withLink.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/quote/withLink.html new file mode 100644 index 0000000000..c893fa67ee --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/quote/withLink.html @@ -0,0 +1,11 @@ +
      + Quote with + a link +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/backgroundColor.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/backgroundColor.html new file mode 100644 index 0000000000..66f327e85d --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/backgroundColor.html @@ -0,0 +1,8 @@ +

      + Highlighted text +

      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/bold.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/bold.html new file mode 100644 index 0000000000..e57a879f6e --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/bold.html @@ -0,0 +1,3 @@ +

      + Bold text +

      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/boldItalicStrike.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/boldItalicStrike.html new file mode 100644 index 0000000000..d7506fe610 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/boldItalicStrike.html @@ -0,0 +1,7 @@ +

      + + + All styles + + +

      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/code.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/code.html new file mode 100644 index 0000000000..6fe865b744 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/code.html @@ -0,0 +1,3 @@ +

      + Inline code +

      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/combined.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/combined.html new file mode 100644 index 0000000000..920576e90a --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/combined.html @@ -0,0 +1,5 @@ +

      + + Bold and italic + +

      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/italic.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/italic.html new file mode 100644 index 0000000000..fcff5726e6 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/italic.html @@ -0,0 +1,3 @@ +

      + Italic text +

      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/mixedInParagraph.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/mixedInParagraph.html new file mode 100644 index 0000000000..8be1d165ce --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/mixedInParagraph.html @@ -0,0 +1,7 @@ +

      + Normal + bold + italic + code + strike +

      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/strike.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/strike.html new file mode 100644 index 0000000000..abfabbe4e6 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/strike.html @@ -0,0 +1,3 @@ +

      + Strikethrough text +

      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/textColor.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/textColor.html new file mode 100644 index 0000000000..798166dcad --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/textColor.html @@ -0,0 +1,8 @@ +

      + Colored text +

      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/underline.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/underline.html new file mode 100644 index 0000000000..f861031c9e --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/style/underline.html @@ -0,0 +1,3 @@ +

      + Underline text +

      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/table/advancedExample.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/table/advancedExample.html new file mode 100644 index 0000000000..a4f5dfcb31 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/table/advancedExample.html @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + +
      +

      This row has headers

      +
      +

      + This is + RED +

      +
      +

      Text is Blue

      +
      +

      + This spans 2 columns +
      + and 2 rows +

      +
      +

      Sooo many features

      +
      +

      +
      +

      A cell

      +
      +

      Another Cell

      +
      +

      Aligned center

      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/table/cellTextAlignment.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/table/cellTextAlignment.html new file mode 100644 index 0000000000..21f5f0ab0c --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/table/cellTextAlignment.html @@ -0,0 +1,18 @@ + + + + + + + + + + + +
      +

      Left

      +
      +

      Center

      +
      +

      Right

      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/table/emptyCells.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/table/emptyCells.html new file mode 100644 index 0000000000..10a9fb5259 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/table/emptyCells.html @@ -0,0 +1,22 @@ + + + + + + + + + + + + + +
      +

      Has content

      +
      +

      +
      +

      +
      +

      Also has content

      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/table/hardBreakInCell.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/table/hardBreakInCell.html new file mode 100644 index 0000000000..a313a5323d --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/table/hardBreakInCell.html @@ -0,0 +1,18 @@ + + + + + + + + + +
      +

      + Line 1 +
      + Line 2 +

      +
      +

      Normal cell

      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/table/headerRowsAndCols.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/table/headerRowsAndCols.html new file mode 100644 index 0000000000..64ee4183aa --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/table/headerRowsAndCols.html @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + +
      +

      Corner

      +
      +

      Column Header 1

      +
      +

      Column Header 2

      +
      +

      Row Header 1

      +
      +

      Data 1

      +
      +

      Data 2

      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/table/linksInCells.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/table/linksInCells.html new file mode 100644 index 0000000000..0cafd0eda1 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/table/linksInCells.html @@ -0,0 +1,41 @@ + + + + + + + + + + + + + +
      +

      + Visit + Example +

      +
      +

      Plain cell

      +
      +

      Data

      +
      +

      + Link +

      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/table/singleCell.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/table/singleCell.html new file mode 100644 index 0000000000..ce8bea5831 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/table/singleCell.html @@ -0,0 +1,10 @@ + + + + + + + +
      +

      Only cell

      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/table/styledCellContent.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/table/styledCellContent.html new file mode 100644 index 0000000000..91db4da0e4 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/table/styledCellContent.html @@ -0,0 +1,30 @@ + + + + + + + + + + + + + +
      +

      + Bold +

      +
      +

      + Italic +

      +
      +

      + Strike +

      +
      +

      + Code +

      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/video/withCaption.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/video/withCaption.html new file mode 100644 index 0000000000..978dcc0448 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/video/withCaption.html @@ -0,0 +1,8 @@ +
      + +
      Video caption
      +
      \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/audio/basic.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/audio/basic.md new file mode 100644 index 0000000000..b459dbd5a9 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/audio/basic.md @@ -0,0 +1 @@ +[](https://example.com/audio.mp3) diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/audio/button.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/audio/button.md new file mode 100644 index 0000000000..7b4aa9de1b --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/audio/button.md @@ -0,0 +1 @@ +Add audio diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/audio/noName.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/audio/noName.md new file mode 100644 index 0000000000..b459dbd5a9 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/audio/noName.md @@ -0,0 +1 @@ +[](https://example.com/audio.mp3) diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/complex/document.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/complex/document.md new file mode 100644 index 0000000000..6978c659f9 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/complex/document.md @@ -0,0 +1,19 @@ +# Document Title + +Introduction paragraph. + +## Section 1 + +Text with **bold** and [a link](https://example.com). + +* First point + +* Second point + +*** + +> A notable quote + +```javascript +const x = 42; +``` diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/complex/misc.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/complex/misc.md index 4a2de0a7fc..fca446bec3 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/complex/misc.md +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/complex/misc.md @@ -1,4 +1,4 @@ -## **Heading ***~~2~~* +## **Heading** *~~2~~* Paragraph diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/file/noName.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/file/noName.md index c7fefc547f..4cca42f87d 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/file/noName.md +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/file/noName.md @@ -1,3 +1,3 @@ -[exampleURL](exampleURL) +exampleURL Caption diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/hardbreak/only.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/hardbreak/only.md index e69de29bb2..8b13789179 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/hardbreak/only.md +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/hardbreak/only.md @@ -0,0 +1 @@ + diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/h1.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/h1.md new file mode 100644 index 0000000000..bd706e91c4 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/h1.md @@ -0,0 +1 @@ +# Heading 1 diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/h2.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/h2.md new file mode 100644 index 0000000000..cd760a44ba --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/h2.md @@ -0,0 +1 @@ +## Heading 2 diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/h3.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/h3.md new file mode 100644 index 0000000000..607fcc43b6 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/h3.md @@ -0,0 +1 @@ +### Heading 3 diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/h4.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/h4.md new file mode 100644 index 0000000000..9c7bd7c52e --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/h4.md @@ -0,0 +1 @@ +#### Heading 4 diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/h5.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/h5.md new file mode 100644 index 0000000000..2410fdf2b0 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/h5.md @@ -0,0 +1 @@ +##### Heading 5 diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/h6.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/h6.md new file mode 100644 index 0000000000..848d83e6dd --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/h6.md @@ -0,0 +1 @@ +###### Heading 6 diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/styled.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/styled.md new file mode 100644 index 0000000000..90c78848fd --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/styled.md @@ -0,0 +1 @@ +# **Bold** Heading diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/toggleable.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/toggleable.md new file mode 100644 index 0000000000..cc8cbf3aa9 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/heading/toggleable.md @@ -0,0 +1,3 @@ +## Toggle Heading + +Child content diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/image/withCaption.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/image/withCaption.md new file mode 100644 index 0000000000..d68bd090a4 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/image/withCaption.md @@ -0,0 +1,3 @@ +![Example Image](https://example.com/image.png) + +This is a caption diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/link/plainUrl.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/link/plainUrl.md new file mode 100644 index 0000000000..0ba1e54028 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/link/plainUrl.md @@ -0,0 +1 @@ +https://www.website.com diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/link/urlWithParens.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/link/urlWithParens.md new file mode 100644 index 0000000000..ebe94f4ffe --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/link/urlWithParens.md @@ -0,0 +1 @@ +[Example](https://en.wikipedia.org/wiki/Example_\(disambiguation\)) diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/link/withCode.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/link/withCode.md new file mode 100644 index 0000000000..090ae185e1 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/link/withCode.md @@ -0,0 +1 @@ +See the [docs](https://example.com) for `config` diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/lists/numberedListStart.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/lists/numberedListStart.md new file mode 100644 index 0000000000..b924b4b407 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/lists/numberedListStart.md @@ -0,0 +1,3 @@ +5. Item 5 + +6. Item 6 diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/pageBreak/basic.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/pageBreak/basic.md index e69de29bb2..8b13789179 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/pageBreak/basic.md +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/pageBreak/basic.md @@ -0,0 +1 @@ + diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/paragraph/empty.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/paragraph/empty.md index e69de29bb2..8b13789179 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/paragraph/empty.md +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/paragraph/empty.md @@ -0,0 +1 @@ + diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/paragraph/multiple.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/paragraph/multiple.md new file mode 100644 index 0000000000..8fadfa1d86 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/paragraph/multiple.md @@ -0,0 +1,5 @@ +First paragraph + +Second paragraph + +Third paragraph diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/quote/basic.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/quote/basic.md new file mode 100644 index 0000000000..83d6a8096d --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/quote/basic.md @@ -0,0 +1 @@ +> This is a quote diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/quote/multiple.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/quote/multiple.md new file mode 100644 index 0000000000..c2610d0ba7 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/quote/multiple.md @@ -0,0 +1,3 @@ +> First quote + +> Second quote diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/quote/nested.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/quote/nested.md new file mode 100644 index 0000000000..41c50517f2 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/quote/nested.md @@ -0,0 +1,3 @@ +> Parent quote + +Nested paragraph diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/quote/styled.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/quote/styled.md new file mode 100644 index 0000000000..71e0af0173 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/quote/styled.md @@ -0,0 +1 @@ +> **Bold** and *italic* quote diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/quote/withLink.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/quote/withLink.md new file mode 100644 index 0000000000..8510d4defd --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/quote/withLink.md @@ -0,0 +1 @@ +> Quote with [a link](https://www.example.com) diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/backgroundColor.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/backgroundColor.md new file mode 100644 index 0000000000..3ba8964656 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/backgroundColor.md @@ -0,0 +1 @@ +Highlighted text diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/bold.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/bold.md new file mode 100644 index 0000000000..df2474d633 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/bold.md @@ -0,0 +1 @@ +**Bold text** diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/boldItalicStrike.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/boldItalicStrike.md new file mode 100644 index 0000000000..1af450cf5e --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/boldItalicStrike.md @@ -0,0 +1 @@ +***~~All styles~~*** diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/code.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/code.md new file mode 100644 index 0000000000..aa4775ec76 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/code.md @@ -0,0 +1 @@ +`Inline code` diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/combined.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/combined.md new file mode 100644 index 0000000000..b011bd3c15 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/combined.md @@ -0,0 +1 @@ +***Bold and italic*** diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/italic.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/italic.md new file mode 100644 index 0000000000..c6c83dc114 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/italic.md @@ -0,0 +1 @@ +*Italic text* diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/mixedInParagraph.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/mixedInParagraph.md new file mode 100644 index 0000000000..76bd55f326 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/mixedInParagraph.md @@ -0,0 +1 @@ +Normal **bold** *italic* `code `~~strike~~ diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/strike.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/strike.md new file mode 100644 index 0000000000..afe555a038 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/strike.md @@ -0,0 +1 @@ +~~Strikethrough text~~ diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/textColor.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/textColor.md new file mode 100644 index 0000000000..28f332d788 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/textColor.md @@ -0,0 +1 @@ +Colored text diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/underline.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/underline.md new file mode 100644 index 0000000000..2ccc77398c --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/style/underline.md @@ -0,0 +1 @@ +Underline text diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/advancedExample.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/advancedExample.md new file mode 100644 index 0000000000..53599a4feb --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/advancedExample.md @@ -0,0 +1,6 @@ +| This row has headers | This is **RED** | Text is Blue | +| -------------------------------- | --------------- | ------------------ | +| This spans 2 columns\ +and 2 rows | | Sooo many features | +| | | | +| A cell | Another Cell | Aligned center | diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/cellTextAlignment.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/cellTextAlignment.md new file mode 100644 index 0000000000..d3d4211640 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/cellTextAlignment.md @@ -0,0 +1,3 @@ +| | | | +| ---------- | ---------- | ---------- | +| Left | Center | Right | diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/emptyCells.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/emptyCells.md new file mode 100644 index 0000000000..ba81ea2ca9 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/emptyCells.md @@ -0,0 +1,4 @@ +| | | +| ----------- | ---------------- | +| Has content | | +| | Also has content | diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/hardBreakInCell.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/hardBreakInCell.md new file mode 100644 index 0000000000..d9ffaf65a3 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/hardBreakInCell.md @@ -0,0 +1,4 @@ +| | | +| -------------- | ----------- | +| Line 1\ +Line 2 | Normal cell | diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/headerRowsAndCols.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/headerRowsAndCols.md new file mode 100644 index 0000000000..1c29ad9f94 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/headerRowsAndCols.md @@ -0,0 +1,3 @@ +| Corner | Column Header 1 | Column Header 2 | +| ------------ | --------------- | --------------- | +| Row Header 1 | Data 1 | Data 2 | diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/linksInCells.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/linksInCells.md new file mode 100644 index 0000000000..7815cfe199 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/linksInCells.md @@ -0,0 +1,4 @@ +| | | +| ------------------------------------ | ---------------------------- | +| Visit [Example](https://example.com) | Plain cell | +| Data | [Link](https://example2.com) | diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/singleCell.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/singleCell.md new file mode 100644 index 0000000000..3be705c3e8 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/singleCell.md @@ -0,0 +1,3 @@ +| | +| ---------- | +| Only cell | diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/styledCellContent.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/styledCellContent.md new file mode 100644 index 0000000000..ff5eff81a2 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/table/styledCellContent.md @@ -0,0 +1,4 @@ +| | | +| ---------- | ---------- | +| **Bold** | *Italic* | +| ~~Strike~~ | `Code` | diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/video/withCaption.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/video/withCaption.md new file mode 100644 index 0000000000..3f50812477 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/video/withCaption.md @@ -0,0 +1,3 @@ +![](https://example.com/video.mp4) + +Video caption diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/audio/basic.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/audio/basic.json new file mode 100644 index 0000000000..32e28f6803 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/audio/basic.json @@ -0,0 +1,20 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "caption": "", + "name": "example", + "showPreview": true, + "url": "https://example.com/audio.mp3", + }, + "type": "audio", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/audio/button.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/audio/button.json new file mode 100644 index 0000000000..2149eef7c8 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/audio/button.json @@ -0,0 +1,20 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "caption": "", + "name": "", + "showPreview": true, + "url": "", + }, + "type": "audio", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/audio/noName.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/audio/noName.json new file mode 100644 index 0000000000..a9b3396ea4 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/audio/noName.json @@ -0,0 +1,20 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "caption": "", + "name": "", + "showPreview": true, + "url": "https://example.com/audio.mp3", + }, + "type": "audio", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/complex/document.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/complex/document.json new file mode 100644 index 0000000000..0eb89bbcda --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/complex/document.json @@ -0,0 +1,219 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "isToggleable": false, + "level": 1, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "text": "Document Title", + "type": "text", + }, + ], + "type": "heading", + }, + ], + "type": "blockContainer", + }, + { + "attrs": { + "id": "2", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "text": "Introduction paragraph.", + "type": "text", + }, + ], + "type": "paragraph", + }, + ], + "type": "blockContainer", + }, + { + "attrs": { + "id": "3", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "isToggleable": false, + "level": 2, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "text": "Section 1", + "type": "text", + }, + ], + "type": "heading", + }, + ], + "type": "blockContainer", + }, + { + "attrs": { + "id": "4", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "text": "Text with ", + "type": "text", + }, + { + "marks": [ + { + "type": "bold", + }, + ], + "text": "bold", + "type": "text", + }, + { + "text": " and ", + "type": "text", + }, + { + "marks": [ + { + "attrs": { + "href": "https://example.com", + }, + "type": "link", + }, + ], + "text": "a link", + "type": "text", + }, + { + "text": ".", + "type": "text", + }, + ], + "type": "paragraph", + }, + ], + "type": "blockContainer", + }, + { + "attrs": { + "id": "5", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "text": "First point", + "type": "text", + }, + ], + "type": "bulletListItem", + }, + ], + "type": "blockContainer", + }, + { + "attrs": { + "id": "6", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "text": "Second point", + "type": "text", + }, + ], + "type": "bulletListItem", + }, + ], + "type": "blockContainer", + }, + { + "attrs": { + "id": "7", + }, + "content": [ + { + "type": "divider", + }, + ], + "type": "blockContainer", + }, + { + "attrs": { + "id": "8", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textColor": "default", + }, + "content": [ + { + "text": "A notable quote", + "type": "text", + }, + ], + "type": "quote", + }, + ], + "type": "blockContainer", + }, + { + "attrs": { + "id": "9", + }, + "content": [ + { + "attrs": { + "language": "javascript", + }, + "content": [ + { + "text": "const x = 42;", + "type": "text", + }, + ], + "type": "codeBlock", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/h1.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/h1.json new file mode 100644 index 0000000000..d147b23ade --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/h1.json @@ -0,0 +1,26 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "isToggleable": false, + "level": 1, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "text": "Heading 1", + "type": "text", + }, + ], + "type": "heading", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/h2.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/h2.json new file mode 100644 index 0000000000..f9f92e7081 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/h2.json @@ -0,0 +1,26 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "isToggleable": false, + "level": 2, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "text": "Heading 2", + "type": "text", + }, + ], + "type": "heading", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/h3.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/h3.json new file mode 100644 index 0000000000..6399a58563 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/h3.json @@ -0,0 +1,26 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "isToggleable": false, + "level": 3, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "text": "Heading 3", + "type": "text", + }, + ], + "type": "heading", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/h4.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/h4.json new file mode 100644 index 0000000000..c23a0c4809 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/h4.json @@ -0,0 +1,26 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "isToggleable": false, + "level": 4, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "text": "Heading 4", + "type": "text", + }, + ], + "type": "heading", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/h5.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/h5.json new file mode 100644 index 0000000000..0867b7796f --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/h5.json @@ -0,0 +1,26 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "isToggleable": false, + "level": 5, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "text": "Heading 5", + "type": "text", + }, + ], + "type": "heading", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/h6.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/h6.json new file mode 100644 index 0000000000..b5eddefddc --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/h6.json @@ -0,0 +1,26 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "isToggleable": false, + "level": 6, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "text": "Heading 6", + "type": "text", + }, + ], + "type": "heading", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/styled.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/styled.json new file mode 100644 index 0000000000..ff107bc15f --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/styled.json @@ -0,0 +1,35 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "isToggleable": false, + "level": 1, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "marks": [ + { + "type": "bold", + }, + ], + "text": "Bold ", + "type": "text", + }, + { + "text": "Heading", + "type": "text", + }, + ], + "type": "heading", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/toggleable.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/toggleable.json new file mode 100644 index 0000000000..7bb4c57f86 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/heading/toggleable.json @@ -0,0 +1,53 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "isToggleable": true, + "level": 2, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "text": "Toggle Heading", + "type": "text", + }, + ], + "type": "heading", + }, + { + "content": [ + { + "attrs": { + "id": "2", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "text": "Child content", + "type": "text", + }, + ], + "type": "paragraph", + }, + ], + "type": "blockContainer", + }, + ], + "type": "blockGroup", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/image/withCaption.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/image/withCaption.json new file mode 100644 index 0000000000..5016f16a10 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/image/withCaption.json @@ -0,0 +1,22 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "caption": "This is a caption", + "name": "Example Image", + "previewWidth": undefined, + "showPreview": true, + "textAlignment": "left", + "url": "https://example.com/image.png", + }, + "type": "image", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/plainUrl.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/plainUrl.json new file mode 100644 index 0000000000..dc5aa26397 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/plainUrl.json @@ -0,0 +1,32 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "marks": [ + { + "attrs": { + "href": "https://www.website.com", + }, + "type": "link", + }, + ], + "text": "https://www.website.com", + "type": "text", + }, + ], + "type": "paragraph", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/urlWithParens.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/urlWithParens.json new file mode 100644 index 0000000000..4de7926c89 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/urlWithParens.json @@ -0,0 +1,32 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "marks": [ + { + "attrs": { + "href": "https://en.wikipedia.org/wiki/Example_(disambiguation)", + }, + "type": "link", + }, + ], + "text": "Example", + "type": "text", + }, + ], + "type": "paragraph", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/withCode.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/withCode.json new file mode 100644 index 0000000000..bf1f1da31f --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/link/withCode.json @@ -0,0 +1,49 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "text": "See the ", + "type": "text", + }, + { + "marks": [ + { + "attrs": { + "href": "https://example.com", + }, + "type": "link", + }, + ], + "text": "docs", + "type": "text", + }, + { + "text": " for ", + "type": "text", + }, + { + "marks": [ + { + "type": "code", + }, + ], + "text": "config", + "type": "text", + }, + ], + "type": "paragraph", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/lists/numberedListStart.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/lists/numberedListStart.json new file mode 100644 index 0000000000..387b4fa073 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/lists/numberedListStart.json @@ -0,0 +1,48 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "start": 5, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "text": "Item 5", + "type": "text", + }, + ], + "type": "numberedListItem", + }, + ], + "type": "blockContainer", + }, + { + "attrs": { + "id": "2", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "start": undefined, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "text": "Item 6", + "type": "text", + }, + ], + "type": "numberedListItem", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/paragraph/multiple.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/paragraph/multiple.json new file mode 100644 index 0000000000..affba0772c --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/paragraph/multiple.json @@ -0,0 +1,68 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "text": "First paragraph", + "type": "text", + }, + ], + "type": "paragraph", + }, + ], + "type": "blockContainer", + }, + { + "attrs": { + "id": "2", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "text": "Second paragraph", + "type": "text", + }, + ], + "type": "paragraph", + }, + ], + "type": "blockContainer", + }, + { + "attrs": { + "id": "3", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "text": "Third paragraph", + "type": "text", + }, + ], + "type": "paragraph", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/quote/basic.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/quote/basic.json new file mode 100644 index 0000000000..9234a8f05f --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/quote/basic.json @@ -0,0 +1,23 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textColor": "default", + }, + "content": [ + { + "text": "This is a quote", + "type": "text", + }, + ], + "type": "quote", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/quote/multiple.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/quote/multiple.json new file mode 100644 index 0000000000..458e24879a --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/quote/multiple.json @@ -0,0 +1,44 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textColor": "default", + }, + "content": [ + { + "text": "First quote", + "type": "text", + }, + ], + "type": "quote", + }, + ], + "type": "blockContainer", + }, + { + "attrs": { + "id": "2", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textColor": "default", + }, + "content": [ + { + "text": "Second quote", + "type": "text", + }, + ], + "type": "quote", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/quote/nested.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/quote/nested.json new file mode 100644 index 0000000000..b3c46ed220 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/quote/nested.json @@ -0,0 +1,50 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textColor": "default", + }, + "content": [ + { + "text": "Parent quote", + "type": "text", + }, + ], + "type": "quote", + }, + { + "content": [ + { + "attrs": { + "id": "2", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "text": "Nested paragraph", + "type": "text", + }, + ], + "type": "paragraph", + }, + ], + "type": "blockContainer", + }, + ], + "type": "blockGroup", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/quote/styled.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/quote/styled.json new file mode 100644 index 0000000000..a482c2ad58 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/quote/styled.json @@ -0,0 +1,45 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textColor": "default", + }, + "content": [ + { + "marks": [ + { + "type": "bold", + }, + ], + "text": "Bold ", + "type": "text", + }, + { + "text": "and ", + "type": "text", + }, + { + "marks": [ + { + "type": "italic", + }, + ], + "text": "italic", + "type": "text", + }, + { + "text": " quote", + "type": "text", + }, + ], + "type": "quote", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/quote/withLink.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/quote/withLink.json new file mode 100644 index 0000000000..c0e2857679 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/quote/withLink.json @@ -0,0 +1,35 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textColor": "default", + }, + "content": [ + { + "text": "Quote with ", + "type": "text", + }, + { + "marks": [ + { + "attrs": { + "href": "https://www.example.com", + }, + "type": "link", + }, + ], + "text": "a link", + "type": "text", + }, + ], + "type": "quote", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/backgroundColor.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/backgroundColor.json new file mode 100644 index 0000000000..e07954b219 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/backgroundColor.json @@ -0,0 +1,32 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "marks": [ + { + "attrs": { + "stringValue": "blue", + }, + "type": "backgroundColor", + }, + ], + "text": "Highlighted text", + "type": "text", + }, + ], + "type": "paragraph", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/bold.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/bold.json new file mode 100644 index 0000000000..b6d5b7a208 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/bold.json @@ -0,0 +1,29 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "marks": [ + { + "type": "bold", + }, + ], + "text": "Bold text", + "type": "text", + }, + ], + "type": "paragraph", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/boldItalicStrike.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/boldItalicStrike.json new file mode 100644 index 0000000000..7c5f05d763 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/boldItalicStrike.json @@ -0,0 +1,35 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "marks": [ + { + "type": "bold", + }, + { + "type": "italic", + }, + { + "type": "strike", + }, + ], + "text": "All styles", + "type": "text", + }, + ], + "type": "paragraph", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/code.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/code.json new file mode 100644 index 0000000000..2cf0463e03 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/code.json @@ -0,0 +1,29 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "marks": [ + { + "type": "code", + }, + ], + "text": "Inline code", + "type": "text", + }, + ], + "type": "paragraph", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/combined.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/combined.json new file mode 100644 index 0000000000..5b91fb8abb --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/combined.json @@ -0,0 +1,32 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "marks": [ + { + "type": "bold", + }, + { + "type": "italic", + }, + ], + "text": "Bold and italic", + "type": "text", + }, + ], + "type": "paragraph", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/italic.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/italic.json new file mode 100644 index 0000000000..7d22809e81 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/italic.json @@ -0,0 +1,29 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "marks": [ + { + "type": "italic", + }, + ], + "text": "Italic text", + "type": "text", + }, + ], + "type": "paragraph", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/mixedInParagraph.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/mixedInParagraph.json new file mode 100644 index 0000000000..d72aa1d3bb --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/mixedInParagraph.json @@ -0,0 +1,60 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "text": "Normal ", + "type": "text", + }, + { + "marks": [ + { + "type": "bold", + }, + ], + "text": "bold ", + "type": "text", + }, + { + "marks": [ + { + "type": "italic", + }, + ], + "text": "italic ", + "type": "text", + }, + { + "marks": [ + { + "type": "code", + }, + ], + "text": "code ", + "type": "text", + }, + { + "marks": [ + { + "type": "strike", + }, + ], + "text": "strike", + "type": "text", + }, + ], + "type": "paragraph", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/strike.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/strike.json new file mode 100644 index 0000000000..756569ade9 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/strike.json @@ -0,0 +1,29 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "marks": [ + { + "type": "strike", + }, + ], + "text": "Strikethrough text", + "type": "text", + }, + ], + "type": "paragraph", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/textColor.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/textColor.json new file mode 100644 index 0000000000..7bca812fd7 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/textColor.json @@ -0,0 +1,32 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "marks": [ + { + "attrs": { + "stringValue": "red", + }, + "type": "textColor", + }, + ], + "text": "Colored text", + "type": "text", + }, + ], + "type": "paragraph", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/underline.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/underline.json new file mode 100644 index 0000000000..348c2ae742 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/style/underline.json @@ -0,0 +1,29 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "marks": [ + { + "type": "underline", + }, + ], + "text": "Underline text", + "type": "text", + }, + ], + "type": "paragraph", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/advancedExample.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/advancedExample.json new file mode 100644 index 0000000000..1fdde23a6b --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/advancedExample.json @@ -0,0 +1,265 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": [ + 199, + ], + "rowspan": 1, + "textAlignment": "center", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "text": "This row has headers", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableHeader", + }, + { + "attrs": { + "backgroundColor": "red", + "colspan": 1, + "colwidth": [ + 148, + ], + "rowspan": 1, + "textAlignment": "center", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "text": "This is ", + "type": "text", + }, + { + "marks": [ + { + "type": "bold", + }, + ], + "text": "RED", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableHeader", + }, + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": [ + 201, + ], + "rowspan": 1, + "textAlignment": "center", + "textColor": "blue", + }, + "content": [ + { + "content": [ + { + "text": "Text is Blue", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableHeader", + }, + ], + "type": "tableRow", + }, + { + "content": [ + { + "attrs": { + "backgroundColor": "yellow", + "colspan": 2, + "colwidth": [ + 199, + 148, + ], + "rowspan": 2, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "text": "This spans 2 columns", + "type": "text", + }, + { + "type": "hardBreak", + }, + { + "text": "and 2 rows", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableCell", + }, + { + "attrs": { + "backgroundColor": "gray", + "colspan": 1, + "colwidth": [ + 201, + ], + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "text": "Sooo many features", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableCell", + }, + ], + "type": "tableRow", + }, + { + "content": [ + { + "attrs": { + "backgroundColor": "gray", + "colspan": 1, + "colwidth": [ + 201, + ], + "rowspan": 1, + "textAlignment": "left", + "textColor": "purple", + }, + "content": [ + { + "type": "tableParagraph", + }, + ], + "type": "tableCell", + }, + ], + "type": "tableRow", + }, + { + "content": [ + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": [ + 199, + ], + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "text": "A cell", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableCell", + }, + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": [ + 148, + ], + "rowspan": 1, + "textAlignment": "right", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "text": "Another Cell", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableCell", + }, + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": [ + 201, + ], + "rowspan": 1, + "textAlignment": "center", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "text": "Aligned center", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableCell", + }, + ], + "type": "tableRow", + }, + ], + "type": "table", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/cellTextAlignment.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/cellTextAlignment.json new file mode 100644 index 0000000000..c7ded0cfc6 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/cellTextAlignment.json @@ -0,0 +1,89 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": null, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "text": "Left", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableCell", + }, + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": null, + "rowspan": 1, + "textAlignment": "center", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "text": "Center", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableCell", + }, + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": null, + "rowspan": 1, + "textAlignment": "right", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "text": "Right", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableCell", + }, + ], + "type": "tableRow", + }, + ], + "type": "table", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/emptyCells.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/emptyCells.json new file mode 100644 index 0000000000..05bb8aa0af --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/emptyCells.json @@ -0,0 +1,104 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": null, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "text": "Has content", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableCell", + }, + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": null, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "type": "tableParagraph", + }, + ], + "type": "tableCell", + }, + ], + "type": "tableRow", + }, + { + "content": [ + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": null, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "type": "tableParagraph", + }, + ], + "type": "tableCell", + }, + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": null, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "text": "Also has content", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableCell", + }, + ], + "type": "tableRow", + }, + ], + "type": "table", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/hardBreakInCell.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/hardBreakInCell.json new file mode 100644 index 0000000000..121834448d --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/hardBreakInCell.json @@ -0,0 +1,74 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": null, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "text": "Line 1", + "type": "text", + }, + { + "type": "hardBreak", + }, + { + "text": "Line 2", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableCell", + }, + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": null, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "text": "Normal cell", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableCell", + }, + ], + "type": "tableRow", + }, + ], + "type": "table", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/headerRowsAndCols.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/headerRowsAndCols.json new file mode 100644 index 0000000000..606ec05c49 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/headerRowsAndCols.json @@ -0,0 +1,160 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": null, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "text": "Corner", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableHeader", + }, + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": null, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "text": "Column Header 1", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableHeader", + }, + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": null, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "text": "Column Header 2", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableHeader", + }, + ], + "type": "tableRow", + }, + { + "content": [ + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": null, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "text": "Row Header 1", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableHeader", + }, + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": null, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "text": "Data 1", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableCell", + }, + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": null, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "text": "Data 2", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableCell", + }, + ], + "type": "tableRow", + }, + ], + "type": "table", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/linksInCells.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/linksInCells.json new file mode 100644 index 0000000000..6f491b4f48 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/linksInCells.json @@ -0,0 +1,136 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": null, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "text": "Visit ", + "type": "text", + }, + { + "marks": [ + { + "attrs": { + "href": "https://example.com", + }, + "type": "link", + }, + ], + "text": "Example", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableCell", + }, + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": null, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "text": "Plain cell", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableCell", + }, + ], + "type": "tableRow", + }, + { + "content": [ + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": null, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "text": "Data", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableCell", + }, + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": null, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "marks": [ + { + "attrs": { + "href": "https://example2.com", + }, + "type": "link", + }, + ], + "text": "Link", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableCell", + }, + ], + "type": "tableRow", + }, + ], + "type": "table", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/singleCell.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/singleCell.json new file mode 100644 index 0000000000..dd4628d177 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/singleCell.json @@ -0,0 +1,45 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": null, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "text": "Only cell", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableCell", + }, + ], + "type": "tableRow", + }, + ], + "type": "table", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/styledCellContent.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/styledCellContent.json new file mode 100644 index 0000000000..3727fa1cf0 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/table/styledCellContent.json @@ -0,0 +1,136 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": null, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "marks": [ + { + "type": "bold", + }, + ], + "text": "Bold", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableCell", + }, + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": null, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "marks": [ + { + "type": "italic", + }, + ], + "text": "Italic", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableCell", + }, + ], + "type": "tableRow", + }, + { + "content": [ + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": null, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "marks": [ + { + "type": "strike", + }, + ], + "text": "Strike", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableCell", + }, + { + "attrs": { + "backgroundColor": "default", + "colspan": 1, + "colwidth": null, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "content": [ + { + "content": [ + { + "marks": [ + { + "type": "code", + }, + ], + "text": "Code", + "type": "text", + }, + ], + "type": "tableParagraph", + }, + ], + "type": "tableCell", + }, + ], + "type": "tableRow", + }, + ], + "type": "table", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/video/withCaption.json b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/video/withCaption.json new file mode 100644 index 0000000000..6d6c134eb0 --- /dev/null +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/nodes/video/withCaption.json @@ -0,0 +1,22 @@ +[ + { + "attrs": { + "id": "1", + }, + "content": [ + { + "attrs": { + "backgroundColor": "default", + "caption": "Video caption", + "name": "Example Video", + "previewWidth": undefined, + "showPreview": true, + "textAlignment": "left", + "url": "https://example.com/video.mp4", + }, + "type": "video", + }, + ], + "type": "blockContainer", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/exportTestInstances.ts b/tests/src/unit/core/formatConversion/export/exportTestInstances.ts index de46704117..e30cea7272 100644 --- a/tests/src/unit/core/formatConversion/export/exportTestInstances.ts +++ b/tests/src/unit/core/formatConversion/export/exportTestInstances.ts @@ -289,6 +289,653 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< }, executeTest: testExportBlockNoteHTML, }, + // Heading levels + { + testCase: { + name: "heading/h1", + content: [ + { + type: "heading", + props: { level: 1 }, + content: "Heading 1", + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + { + testCase: { + name: "heading/h2", + content: [ + { + type: "heading", + props: { level: 2 }, + content: "Heading 2", + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + { + testCase: { + name: "heading/h3", + content: [ + { + type: "heading", + props: { level: 3 }, + content: "Heading 3", + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + { + testCase: { + name: "heading/h4", + content: [ + { + type: "heading", + props: { level: 4 }, + content: "Heading 4", + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + { + testCase: { + name: "heading/h5", + content: [ + { + type: "heading", + props: { level: 5 }, + content: "Heading 5", + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + { + testCase: { + name: "heading/h6", + content: [ + { + type: "heading", + props: { level: 6 }, + content: "Heading 6", + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + { + testCase: { + name: "heading/styled", + content: [ + { + type: "heading", + props: { level: 1 }, + content: [ + { + type: "text", + text: "Bold ", + styles: { bold: true }, + }, + { + type: "text", + text: "Heading", + styles: {}, + }, + ], + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + { + testCase: { + name: "heading/toggleable", + content: [ + { + type: "heading", + props: { level: 2, isToggleable: true }, + content: "Toggle Heading", + children: [ + { + type: "paragraph", + content: "Child content", + }, + ], + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + // Quote / Blockquote + { + testCase: { + name: "quote/basic", + content: [ + { + type: "quote", + content: "This is a quote", + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + { + testCase: { + name: "quote/styled", + content: [ + { + type: "quote", + content: [ + { + type: "text", + text: "Bold ", + styles: { bold: true }, + }, + { + type: "text", + text: "and ", + styles: {}, + }, + { + type: "text", + text: "italic", + styles: { italic: true }, + }, + { + type: "text", + text: " quote", + styles: {}, + }, + ], + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + { + testCase: { + name: "quote/withLink", + content: [ + { + type: "quote", + content: [ + { + type: "text", + text: "Quote with ", + styles: {}, + }, + { + type: "link", + href: "https://www.example.com", + content: "a link", + }, + ], + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + { + testCase: { + name: "quote/nested", + content: [ + { + type: "quote", + content: "Parent quote", + children: [ + { + type: "paragraph", + content: "Nested paragraph", + }, + ], + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + { + testCase: { + name: "quote/multiple", + content: [ + { + type: "quote", + content: "First quote", + }, + { + type: "quote", + content: "Second quote", + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + // Audio + { + testCase: { + name: "audio/basic", + content: [ + { + type: "audio", + props: { + url: "https://example.com/audio.mp3", + name: "example", + }, + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + { + testCase: { + name: "audio/button", + content: [ + { + type: "audio", + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + { + testCase: { + name: "audio/noName", + content: [ + { + type: "audio", + props: { + url: "https://example.com/audio.mp3", + }, + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + // Individual styles + { + testCase: { + name: "style/bold", + content: [ + { + type: "paragraph", + content: [ + { + type: "text", + text: "Bold text", + styles: { bold: true }, + }, + ], + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + { + testCase: { + name: "style/italic", + content: [ + { + type: "paragraph", + content: [ + { + type: "text", + text: "Italic text", + styles: { italic: true }, + }, + ], + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + { + testCase: { + name: "style/underline", + content: [ + { + type: "paragraph", + content: [ + { + type: "text", + text: "Underline text", + styles: { underline: true }, + }, + ], + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + { + testCase: { + name: "style/strike", + content: [ + { + type: "paragraph", + content: [ + { + type: "text", + text: "Strikethrough text", + styles: { strike: true }, + }, + ], + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + { + testCase: { + name: "style/code", + content: [ + { + type: "paragraph", + content: [ + { + type: "text", + text: "Inline code", + styles: { code: true }, + }, + ], + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + { + testCase: { + name: "style/textColor", + content: [ + { + type: "paragraph", + content: [ + { + type: "text", + text: "Colored text", + styles: { textColor: "red" }, + }, + ], + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + { + testCase: { + name: "style/backgroundColor", + content: [ + { + type: "paragraph", + content: [ + { + type: "text", + text: "Highlighted text", + styles: { backgroundColor: "blue" }, + }, + ], + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + { + testCase: { + name: "style/combined", + content: [ + { + type: "paragraph", + content: [ + { + type: "text", + text: "Bold and italic", + styles: { bold: true, italic: true }, + }, + ], + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + { + testCase: { + name: "style/boldItalicStrike", + content: [ + { + type: "paragraph", + content: [ + { + type: "text", + text: "All styles", + styles: { bold: true, italic: true, strike: true }, + }, + ], + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + { + testCase: { + name: "style/mixedInParagraph", + content: [ + { + type: "paragraph", + content: [ + { + type: "text", + text: "Normal ", + styles: {}, + }, + { + type: "text", + text: "bold ", + styles: { bold: true }, + }, + { + type: "text", + text: "italic ", + styles: { italic: true }, + }, + { + type: "text", + text: "code ", + styles: { code: true }, + }, + { + type: "text", + text: "strike", + styles: { strike: true }, + }, + ], + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + // Numbered list with custom start + { + testCase: { + name: "lists/numberedListStart", + content: [ + { + type: "numberedListItem", + props: { start: 5 }, + content: "Item 5", + }, + { + type: "numberedListItem", + content: "Item 6", + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + // Multiple paragraphs + { + testCase: { + name: "paragraph/multiple", + content: [ + { + type: "paragraph", + content: "First paragraph", + }, + { + type: "paragraph", + content: "Second paragraph", + }, + { + type: "paragraph", + content: "Third paragraph", + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + // Mixed block types document + { + testCase: { + name: "complex/document", + content: [ + { + type: "heading", + props: { level: 1 }, + content: "Document Title", + }, + { + type: "paragraph", + content: "Introduction paragraph.", + }, + { + type: "heading", + props: { level: 2 }, + content: "Section 1", + }, + { + type: "paragraph", + content: [ + { + type: "text", + text: "Text with ", + styles: {}, + }, + { + type: "text", + text: "bold", + styles: { bold: true }, + }, + { + type: "text", + text: " and ", + styles: {}, + }, + { + type: "link", + href: "https://example.com", + content: "a link", + }, + { + type: "text", + text: ".", + styles: {}, + }, + ], + }, + { + type: "bulletListItem", + content: "First point", + }, + { + type: "bulletListItem", + content: "Second point", + }, + { + type: "divider", + }, + { + type: "quote", + content: "A notable quote", + }, + { + type: "codeBlock", + props: { language: "javascript" }, + content: "const x = 42;", + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + // Link with inline code + { + testCase: { + name: "link/withCode", + content: [ + { + type: "paragraph", + content: [ + { + type: "text", + text: "See the ", + styles: {}, + }, + { + type: "link", + href: "https://example.com", + content: "docs", + }, + { + type: "text", + text: " for ", + styles: {}, + }, + { + type: "text", + text: "config", + styles: { code: true }, + }, + ], + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + // Image with caption + { + testCase: { + name: "image/withCaption", + content: [ + { + type: "image", + props: { + url: "https://example.com/image.png", + name: "Example Image", + caption: "This is a caption", + }, + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + // Video with caption + { + testCase: { + name: "video/withCaption", + content: [ + { + type: "video", + props: { + url: "https://example.com/video.mp4", + name: "Example Video", + caption: "Video caption", + }, + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, { testCase: { name: "divider/basic", @@ -491,8 +1138,263 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< caption: "Caption", previewWidth: 256, }, - }, - ], + }, + ], + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + { + testCase: { + name: "table/basic", + content: [ + { + type: "table", + content: { + type: "tableContent", + rows: [ + { + cells: [ + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "default", + colspan: 1, + rowspan: 1, + textAlignment: "left", + textColor: "default", + }, + }, + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "default", + colspan: 1, + rowspan: 1, + textAlignment: "left", + textColor: "default", + }, + }, + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "default", + colspan: 1, + rowspan: 1, + textAlignment: "left", + textColor: "default", + }, + }, + ], + }, + { + cells: [ + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "default", + colspan: 1, + rowspan: 1, + textAlignment: "left", + textColor: "default", + }, + }, + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "default", + colspan: 1, + rowspan: 1, + textAlignment: "left", + textColor: "default", + }, + }, + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "default", + colspan: 1, + rowspan: 1, + textAlignment: "left", + textColor: "default", + }, + }, + ], + }, + { + cells: [ + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "default", + colspan: 1, + rowspan: 1, + textAlignment: "left", + textColor: "default", + }, + }, + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "default", + colspan: 1, + rowspan: 1, + textAlignment: "left", + textColor: "default", + }, + }, + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "default", + colspan: 1, + rowspan: 1, + textAlignment: "left", + textColor: "default", + }, + }, + ], + }, + ], + }, + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + { + testCase: { + name: "table/allColWidths", + content: [ + { + type: "table", + content: { + type: "tableContent", + columnWidths: [100, 200, 300], + rows: [ + { + cells: [ + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "default", + colspan: 1, + rowspan: 1, + textAlignment: "left", + textColor: "default", + }, + }, + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "default", + colspan: 1, + rowspan: 1, + textAlignment: "left", + textColor: "default", + }, + }, + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "default", + colspan: 1, + rowspan: 1, + textAlignment: "left", + textColor: "default", + }, + }, + ], + }, + { + cells: [ + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "default", + colspan: 1, + rowspan: 1, + textAlignment: "left", + textColor: "default", + }, + }, + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "default", + colspan: 1, + rowspan: 1, + textAlignment: "left", + textColor: "default", + }, + }, + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "default", + colspan: 1, + rowspan: 1, + textAlignment: "left", + textColor: "default", + }, + }, + ], + }, + { + cells: [ + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "default", + colspan: 1, + rowspan: 1, + textAlignment: "left", + textColor: "default", + }, + }, + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "default", + colspan: 1, + rowspan: 1, + textAlignment: "left", + textColor: "default", + }, + }, + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "default", + colspan: 1, + rowspan: 1, + textAlignment: "left", + textColor: "default", + }, + }, + ], + }, + ], + }, }, ], }, @@ -500,12 +1402,13 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< }, { testCase: { - name: "table/basic", + name: "table/mixedColWidths", content: [ { type: "table", content: { type: "tableContent", + columnWidths: [100, undefined, 300], rows: [ { cells: [ @@ -627,14 +1530,51 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< }, { testCase: { - name: "table/allColWidths", + name: "table/mixedCellColors", content: [ { type: "table", content: { type: "tableContent", - columnWidths: [100, 200, 300], + columnWidths: [100, undefined, 300], rows: [ + { + cells: [ + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "red", + colspan: 1, + rowspan: 1, + textAlignment: "left", + textColor: "blue", + }, + }, + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "blue", + colspan: 1, + rowspan: 1, + textAlignment: "left", + textColor: "default", + }, + }, + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "yellow", + colspan: 1, + rowspan: 1, + textAlignment: "left", + textColor: "red", + }, + }, + ], + }, { cells: [ { @@ -709,6 +1649,49 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< }, ], }, + ], + }, + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + { + testCase: { + name: "table/mixedRowspansAndColspans", + content: [ + { + type: "table", + content: { + type: "tableContent", + columnWidths: [100, 200, 300], + rows: [ + { + cells: [ + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "red", + colspan: 2, + rowspan: 1, + textAlignment: "left", + textColor: "blue", + }, + }, + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "yellow", + colspan: 1, + rowspan: 1, + textAlignment: "left", + textColor: "red", + }, + }, + ], + }, { cells: [ { @@ -717,11 +1700,26 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< props: { backgroundColor: "default", colspan: 1, + rowspan: 2, + textAlignment: "left", + textColor: "default", + }, + }, + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "default", + colspan: 2, rowspan: 1, textAlignment: "left", textColor: "default", }, }, + ], + }, + { + cells: [ { type: "tableCell", content: ["Table Cell"], @@ -755,13 +1753,13 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< }, { testCase: { - name: "table/mixedColWidths", + name: "table/headerRows", content: [ { type: "table", content: { + headerRows: 1, type: "tableContent", - columnWidths: [100, undefined, 300], rows: [ { cells: [ @@ -883,13 +1881,13 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< }, { testCase: { - name: "table/mixedCellColors", + name: "table/headerCols", content: [ { type: "table", content: { + headerCols: 1, type: "tableContent", - columnWidths: [100, undefined, 300], rows: [ { cells: [ @@ -897,18 +1895,18 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< type: "tableCell", content: ["Table Cell"], props: { - backgroundColor: "red", + backgroundColor: "default", colspan: 1, rowspan: 1, textAlignment: "left", - textColor: "blue", + textColor: "default", }, }, { type: "tableCell", content: ["Table Cell"], props: { - backgroundColor: "blue", + backgroundColor: "default", colspan: 1, rowspan: 1, textAlignment: "left", @@ -919,20 +1917,113 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< type: "tableCell", content: ["Table Cell"], props: { - backgroundColor: "yellow", + backgroundColor: "default", colspan: 1, rowspan: 1, textAlignment: "left", - textColor: "red", + textColor: "default", + }, + }, + ], + }, + { + cells: [ + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "default", + colspan: 1, + rowspan: 1, + textAlignment: "left", + textColor: "default", + }, + }, + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "default", + colspan: 1, + rowspan: 1, + textAlignment: "left", + textColor: "default", + }, + }, + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "default", + colspan: 1, + rowspan: 1, + textAlignment: "left", + textColor: "default", + }, + }, + ], + }, + { + cells: [ + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "default", + colspan: 1, + rowspan: 1, + textAlignment: "left", + textColor: "default", + }, + }, + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "default", + colspan: 1, + rowspan: 1, + textAlignment: "left", + textColor: "default", + }, + }, + { + type: "tableCell", + content: ["Table Cell"], + props: { + backgroundColor: "default", + colspan: 1, + rowspan: 1, + textAlignment: "left", + textColor: "default", }, }, ], }, + ], + }, + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + // Advanced table: header rows + header cols together + { + testCase: { + name: "table/headerRowsAndCols", + content: [ + { + type: "table", + content: { + type: "tableContent", + headerRows: 1, + headerCols: 1, + rows: [ { cells: [ { type: "tableCell", - content: ["Table Cell"], + content: ["Corner"], props: { backgroundColor: "default", colspan: 1, @@ -943,7 +2034,7 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< }, { type: "tableCell", - content: ["Table Cell"], + content: ["Column Header 1"], props: { backgroundColor: "default", colspan: 1, @@ -954,7 +2045,7 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< }, { type: "tableCell", - content: ["Table Cell"], + content: ["Column Header 2"], props: { backgroundColor: "default", colspan: 1, @@ -969,7 +2060,7 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< cells: [ { type: "tableCell", - content: ["Table Cell"], + content: ["Row Header 1"], props: { backgroundColor: "default", colspan: 1, @@ -980,7 +2071,7 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< }, { type: "tableCell", - content: ["Table Cell"], + content: ["Data 1"], props: { backgroundColor: "default", colspan: 1, @@ -991,7 +2082,7 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< }, { type: "tableCell", - content: ["Table Cell"], + content: ["Data 2"], props: { backgroundColor: "default", colspan: 1, @@ -1009,61 +2100,47 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< }, executeTest: testExportBlockNoteHTML, }, + // Advanced table: styled content in cells { testCase: { - name: "table/mixedRowspansAndColspans", + name: "table/styledCellContent", content: [ { type: "table", content: { type: "tableContent", - columnWidths: [100, 200, 300], rows: [ { cells: [ { type: "tableCell", - content: ["Table Cell"], - props: { - backgroundColor: "red", - colspan: 2, - rowspan: 1, - textAlignment: "left", - textColor: "blue", - }, - }, - { - type: "tableCell", - content: ["Table Cell"], - props: { - backgroundColor: "yellow", - colspan: 1, - rowspan: 1, - textAlignment: "left", - textColor: "red", - }, - }, - ], - }, - { - cells: [ - { - type: "tableCell", - content: ["Table Cell"], + content: [ + { + type: "text", + text: "Bold", + styles: { bold: true }, + }, + ], props: { backgroundColor: "default", colspan: 1, - rowspan: 2, + rowspan: 1, textAlignment: "left", textColor: "default", }, }, { type: "tableCell", - content: ["Table Cell"], + content: [ + { + type: "text", + text: "Italic", + styles: { italic: true }, + }, + ], props: { backgroundColor: "default", - colspan: 2, + colspan: 1, rowspan: 1, textAlignment: "left", textColor: "default", @@ -1075,7 +2152,13 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< cells: [ { type: "tableCell", - content: ["Table Cell"], + content: [ + { + type: "text", + text: "Strike", + styles: { strike: true }, + }, + ], props: { backgroundColor: "default", colspan: 1, @@ -1086,7 +2169,13 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< }, { type: "tableCell", - content: ["Table Cell"], + content: [ + { + type: "text", + text: "Code", + styles: { code: true }, + }, + ], props: { backgroundColor: "default", colspan: 1, @@ -1104,21 +2193,32 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< }, executeTest: testExportBlockNoteHTML, }, + // Advanced table: links in cells { testCase: { - name: "table/headerRows", + name: "table/linksInCells", content: [ { type: "table", content: { - headerRows: 1, type: "tableContent", rows: [ { cells: [ { type: "tableCell", - content: ["Table Cell"], + content: [ + { + type: "text", + text: "Visit ", + styles: {}, + }, + { + type: "link", + href: "https://example.com", + content: "Example", + }, + ], props: { backgroundColor: "default", colspan: 1, @@ -1129,7 +2229,7 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< }, { type: "tableCell", - content: ["Table Cell"], + content: ["Plain cell"], props: { backgroundColor: "default", colspan: 1, @@ -1138,9 +2238,13 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< textColor: "default", }, }, + ], + }, + { + cells: [ { type: "tableCell", - content: ["Table Cell"], + content: ["Data"], props: { backgroundColor: "default", colspan: 1, @@ -1149,13 +2253,15 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< textColor: "default", }, }, - ], - }, - { - cells: [ { type: "tableCell", - content: ["Table Cell"], + content: [ + { + type: "link", + href: "https://example2.com", + content: "Link", + }, + ], props: { backgroundColor: "default", colspan: 1, @@ -1164,9 +2270,30 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< textColor: "default", }, }, + ], + }, + ], + }, + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + // Advanced table: empty cells + { + testCase: { + name: "table/emptyCells", + content: [ + { + type: "table", + content: { + type: "tableContent", + rows: [ + { + cells: [ { type: "tableCell", - content: ["Table Cell"], + content: ["Has content"], props: { backgroundColor: "default", colspan: 1, @@ -1177,7 +2304,7 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< }, { type: "tableCell", - content: ["Table Cell"], + content: [], props: { backgroundColor: "default", colspan: 1, @@ -1192,7 +2319,7 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< cells: [ { type: "tableCell", - content: ["Table Cell"], + content: [], props: { backgroundColor: "default", colspan: 1, @@ -1203,7 +2330,7 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< }, { type: "tableCell", - content: ["Table Cell"], + content: ["Also has content"], props: { backgroundColor: "default", colspan: 1, @@ -1212,9 +2339,30 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< textColor: "default", }, }, + ], + }, + ], + }, + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + // Advanced table: single cell + { + testCase: { + name: "table/singleCell", + content: [ + { + type: "table", + content: { + type: "tableContent", + rows: [ + { + cells: [ { type: "tableCell", - content: ["Table Cell"], + content: ["Only cell"], props: { backgroundColor: "default", colspan: 1, @@ -1232,49 +2380,103 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< }, executeTest: testExportBlockNoteHTML, }, + // Advanced table: from the advanced-tables example (large merged cells) { testCase: { - name: "table/headerCols", + name: "table/advancedExample", content: [ { type: "table", content: { - headerCols: 1, type: "tableContent", + columnWidths: [199, 148, 201], + headerRows: 1, rows: [ { cells: [ { type: "tableCell", - content: ["Table Cell"], + content: ["This row has headers"], props: { + colspan: 1, + rowspan: 1, backgroundColor: "default", + textColor: "default", + textAlignment: "center", + }, + }, + { + type: "tableCell", + content: [ + { + type: "text", + text: "This is ", + styles: {}, + }, + { + type: "text", + text: "RED", + styles: { bold: true }, + }, + ], + props: { colspan: 1, rowspan: 1, - textAlignment: "left", + backgroundColor: "red", textColor: "default", + textAlignment: "center", }, }, { type: "tableCell", - content: ["Table Cell"], + content: ["Text is Blue"], props: { - backgroundColor: "default", colspan: 1, rowspan: 1, + backgroundColor: "default", + textColor: "blue", + textAlignment: "center", + }, + }, + ], + }, + { + cells: [ + { + type: "tableCell", + content: ["This spans 2 columns\nand 2 rows"], + props: { + colspan: 2, + rowspan: 2, + backgroundColor: "yellow", + textColor: "default", textAlignment: "left", + }, + }, + { + type: "tableCell", + content: ["Sooo many features"], + props: { + colspan: 1, + rowspan: 1, + backgroundColor: "gray", textColor: "default", + textAlignment: "left", }, }, + ], + }, + { + cells: [ { type: "tableCell", - content: ["Table Cell"], + content: [], props: { - backgroundColor: "default", colspan: 1, rowspan: 1, + backgroundColor: "gray", + textColor: "purple", textAlignment: "left", - textColor: "default", }, }, ], @@ -1283,18 +2485,67 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< cells: [ { type: "tableCell", - content: ["Table Cell"], + content: ["A cell"], props: { - backgroundColor: "default", colspan: 1, rowspan: 1, + backgroundColor: "default", + textColor: "default", textAlignment: "left", + }, + }, + { + type: "tableCell", + content: ["Another Cell"], + props: { + colspan: 1, + rowspan: 1, + backgroundColor: "default", textColor: "default", + textAlignment: "right", }, }, { type: "tableCell", - content: ["Table Cell"], + content: ["Aligned center"], + props: { + colspan: 1, + rowspan: 1, + backgroundColor: "default", + textColor: "default", + textAlignment: "center", + }, + }, + ], + }, + ], + }, + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + // Advanced table: hard breaks in cells + { + testCase: { + name: "table/hardBreakInCell", + content: [ + { + type: "table", + content: { + type: "tableContent", + rows: [ + { + cells: [ + { + type: "tableCell", + content: [ + { + type: "text", + text: "Line 1\nLine 2", + styles: {}, + }, + ], props: { backgroundColor: "default", colspan: 1, @@ -1305,7 +2556,7 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< }, { type: "tableCell", - content: ["Table Cell"], + content: ["Normal cell"], props: { backgroundColor: "default", colspan: 1, @@ -1316,11 +2567,28 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< }, ], }, + ], + }, + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + // Advanced table: mixed text alignment per cell + { + testCase: { + name: "table/cellTextAlignment", + content: [ + { + type: "table", + content: { + type: "tableContent", + rows: [ { cells: [ { type: "tableCell", - content: ["Table Cell"], + content: ["Left"], props: { backgroundColor: "default", colspan: 1, @@ -1331,23 +2599,23 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< }, { type: "tableCell", - content: ["Table Cell"], + content: ["Center"], props: { backgroundColor: "default", colspan: 1, rowspan: 1, - textAlignment: "left", + textAlignment: "center", textColor: "default", }, }, { type: "tableCell", - content: ["Table Cell"], + content: ["Right"], props: { backgroundColor: "default", colspan: 1, rowspan: 1, - textAlignment: "left", + textAlignment: "right", textColor: "default", }, }, @@ -1435,6 +2703,44 @@ export const exportTestInstancesBlockNoteHTML: TestInstance< }, executeTest: testExportBlockNoteHTML, }, + { + testCase: { + name: "link/plainUrl", + content: [ + { + // id: UniqueID.options.generateID(), + type: "paragraph", + content: [ + { + type: "link", + href: "https://www.website.com", + content: "https://www.website.com", + }, + ], + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, + { + testCase: { + name: "link/urlWithParens", + content: [ + { + // id: UniqueID.options.generateID(), + type: "paragraph", + content: [ + { + type: "link", + href: "https://en.wikipedia.org/wiki/Example_(disambiguation)", + content: "Example", + }, + ], + }, + ], + }, + executeTest: testExportBlockNoteHTML, + }, { testCase: { name: "hardbreak/basic", diff --git a/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/bold.json b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/bold.json new file mode 100644 index 0000000000..0569abc8a9 --- /dev/null +++ b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/bold.json @@ -0,0 +1,21 @@ +[ + { + "children": [], + "content": [ + { + "styles": { + "bold": true, + }, + "text": "Bold text", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/boldItalic.json b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/boldItalic.json new file mode 100644 index 0000000000..f6b0ca8045 --- /dev/null +++ b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/boldItalic.json @@ -0,0 +1,22 @@ +[ + { + "children": [], + "content": [ + { + "styles": { + "bold": true, + "italic": true, + }, + "text": "Bold and italic", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/bulletList.json b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/bulletList.json new file mode 100644 index 0000000000..b5999d3ec9 --- /dev/null +++ b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/bulletList.json @@ -0,0 +1,36 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Item 1", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "bulletListItem", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Item 2", + "type": "text", + }, + ], + "id": "2", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "bulletListItem", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/checkList.json b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/checkList.json new file mode 100644 index 0000000000..3f344bf122 --- /dev/null +++ b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/checkList.json @@ -0,0 +1,38 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Unchecked", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "checked": false, + "textAlignment": "left", + "textColor": "default", + }, + "type": "checkListItem", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Checked", + "type": "text", + }, + ], + "id": "2", + "props": { + "backgroundColor": "default", + "checked": true, + "textAlignment": "left", + "textColor": "default", + }, + "type": "checkListItem", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/codeBlock.json b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/codeBlock.json new file mode 100644 index 0000000000..63ebc503a5 --- /dev/null +++ b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/codeBlock.json @@ -0,0 +1,17 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "const x = 42;", + "type": "text", + }, + ], + "id": "1", + "props": { + "language": "javascript", + }, + "type": "codeBlock", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/complexDocument.json b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/complexDocument.json new file mode 100644 index 0000000000..570c7e98d5 --- /dev/null +++ b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/complexDocument.json @@ -0,0 +1,106 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Title", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "isToggleable": false, + "level": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "heading", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Paragraph with ", + "type": "text", + }, + { + "styles": { + "bold": true, + }, + "text": "bold", + "type": "text", + }, + { + "styles": {}, + "text": " text.", + "type": "text", + }, + ], + "id": "2", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Bullet 1", + "type": "text", + }, + ], + "id": "3", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "bulletListItem", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Bullet 2", + "type": "text", + }, + ], + "id": "4", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "bulletListItem", + }, + { + "children": [], + "content": undefined, + "id": "5", + "props": {}, + "type": "divider", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "print('hello')", + "type": "text", + }, + ], + "id": "6", + "props": { + "language": "python", + }, + "type": "codeBlock", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/deeplyNestedLists.json b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/deeplyNestedLists.json new file mode 100644 index 0000000000..f81fde4a33 --- /dev/null +++ b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/deeplyNestedLists.json @@ -0,0 +1,144 @@ +[ + { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Level 4 numbered", + "type": "text", + }, + ], + "id": "4", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "numberedListItem", + }, + ], + "content": [ + { + "styles": {}, + "text": "Level 3 bullet", + "type": "text", + }, + ], + "id": "3", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "bulletListItem", + }, + ], + "content": [ + { + "styles": {}, + "text": "Level 2 numbered", + "type": "text", + }, + ], + "id": "2", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "numberedListItem", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Level 2 sibling", + "type": "text", + }, + ], + "id": "5", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "numberedListItem", + }, + ], + "content": [ + { + "styles": {}, + "text": "Level 1 bullet", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "bulletListItem", + }, + { + "children": [ + { + "children": [ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Deep checklist item", + "type": "text", + }, + ], + "id": "8", + "props": { + "backgroundColor": "default", + "checked": false, + "textAlignment": "left", + "textColor": "default", + }, + "type": "checkListItem", + }, + ], + "content": [ + { + "styles": {}, + "text": "Child of second bullet", + "type": "text", + }, + ], + "id": "7", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "bulletListItem", + }, + ], + "content": [ + { + "styles": {}, + "text": "Another top-level bullet", + "type": "text", + }, + ], + "id": "6", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "bulletListItem", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/divider.json b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/divider.json new file mode 100644 index 0000000000..e944763aea --- /dev/null +++ b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/divider.json @@ -0,0 +1,43 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Before", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, + { + "children": [], + "content": undefined, + "id": "2", + "props": {}, + "type": "divider", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "After", + "type": "text", + }, + ], + "id": "3", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/hardBreak.json b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/hardBreak.json new file mode 100644 index 0000000000..5626739e88 --- /dev/null +++ b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/hardBreak.json @@ -0,0 +1,20 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Line 1 + Line 2", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/headingLevels.json b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/headingLevels.json new file mode 100644 index 0000000000..f1ce124a58 --- /dev/null +++ b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/headingLevels.json @@ -0,0 +1,59 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Heading 1", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "isToggleable": false, + "level": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "heading", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Heading 2", + "type": "text", + }, + ], + "id": "2", + "props": { + "backgroundColor": "default", + "isToggleable": false, + "level": 2, + "textAlignment": "left", + "textColor": "default", + }, + "type": "heading", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Heading 3", + "type": "text", + }, + ], + "id": "3", + "props": { + "backgroundColor": "default", + "isToggleable": false, + "level": 3, + "textAlignment": "left", + "textColor": "default", + }, + "type": "heading", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/image.json b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/image.json new file mode 100644 index 0000000000..c9a6bddd61 --- /dev/null +++ b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/image.json @@ -0,0 +1,16 @@ +[ + { + "children": [], + "content": undefined, + "id": "1", + "props": { + "backgroundColor": "default", + "caption": "", + "name": "Example", + "showPreview": true, + "textAlignment": "left", + "url": "https://example.com/image.png", + }, + "type": "image", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/inlineCode.json b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/inlineCode.json new file mode 100644 index 0000000000..6ddd0e59ee --- /dev/null +++ b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/inlineCode.json @@ -0,0 +1,21 @@ +[ + { + "children": [], + "content": [ + { + "styles": { + "code": true, + }, + "text": "Code text", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/italic.json b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/italic.json new file mode 100644 index 0000000000..01ec89cd69 --- /dev/null +++ b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/italic.json @@ -0,0 +1,21 @@ +[ + { + "children": [], + "content": [ + { + "styles": { + "italic": true, + }, + "text": "Italic text", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/link.json b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/link.json new file mode 100644 index 0000000000..fabbb2daa3 --- /dev/null +++ b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/link.json @@ -0,0 +1,35 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Text ", + "type": "text", + }, + { + "content": [ + { + "styles": {}, + "text": "Link", + "type": "text", + }, + ], + "href": "https://example.com", + "type": "link", + }, + { + "styles": {}, + "text": " more text", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/mixedStyles.json b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/mixedStyles.json new file mode 100644 index 0000000000..7085f4c8b8 --- /dev/null +++ b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/mixedStyles.json @@ -0,0 +1,50 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Normal ", + "type": "text", + }, + { + "styles": { + "bold": true, + }, + "text": "bold", + "type": "text", + }, + { + "styles": {}, + "text": " ", + "type": "text", + }, + { + "styles": { + "italic": true, + }, + "text": "italic", + "type": "text", + }, + { + "styles": {}, + "text": " ", + "type": "text", + }, + { + "styles": { + "strike": true, + }, + "text": "strike", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/multipleParagraphs.json b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/multipleParagraphs.json new file mode 100644 index 0000000000..fc70b307a0 --- /dev/null +++ b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/multipleParagraphs.json @@ -0,0 +1,36 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "First paragraph", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Second paragraph", + "type": "text", + }, + ], + "id": "2", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/nestedLists.json b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/nestedLists.json new file mode 100644 index 0000000000..90bb306cb8 --- /dev/null +++ b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/nestedLists.json @@ -0,0 +1,54 @@ +[ + { + "children": [ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Child 1", + "type": "text", + }, + ], + "id": "2", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "numberedListItem", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Child 2", + "type": "text", + }, + ], + "id": "3", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "numberedListItem", + }, + ], + "content": [ + { + "styles": {}, + "text": "Parent", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "bulletListItem", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/numberedList.json b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/numberedList.json new file mode 100644 index 0000000000..f2dfd7912e --- /dev/null +++ b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/numberedList.json @@ -0,0 +1,36 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Item 1", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "numberedListItem", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Item 2", + "type": "text", + }, + ], + "id": "2", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "numberedListItem", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/paragraph.json b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/paragraph.json new file mode 100644 index 0000000000..575bc9876a --- /dev/null +++ b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/paragraph.json @@ -0,0 +1,19 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Simple paragraph", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/quote.json b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/quote.json new file mode 100644 index 0000000000..7a2b3b4601 --- /dev/null +++ b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/quote.json @@ -0,0 +1,18 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "A quote", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textColor": "default", + }, + "type": "quote", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/specialCharEscaping.json b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/specialCharEscaping.json new file mode 100644 index 0000000000..0ede1c2000 --- /dev/null +++ b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/specialCharEscaping.json @@ -0,0 +1,124 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Literal ", + "type": "text", + }, + { + "styles": { + "italic": true, + }, + "text": "asterisks", + "type": "text", + }, + { + "styles": {}, + "text": " and ", + "type": "text", + }, + { + "styles": { + "bold": true, + }, + "text": "double asterisks", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Backticks ` in plain text and ", + "type": "text", + }, + { + "styles": { + "code": true, + }, + "text": "double", + "type": "text", + }, + ], + "id": "2", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Underscores ", + "type": "text", + }, + { + "styles": { + "italic": true, + }, + "text": "here", + "type": "text", + }, + { + "styles": {}, + "text": " and ~tildes~ and [brackets]", + "type": "text", + }, + ], + "id": "3", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Pipes | and backslash \ and #hash at start", + "type": "text", + }, + ], + "id": "4", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "const x = `template ${literal}`; +const y = '```triple backticks```';", + "type": "text", + }, + ], + "id": "5", + "props": { + "language": "text", + }, + "type": "codeBlock", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/strike.json b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/strike.json new file mode 100644 index 0000000000..7f504a4b3f --- /dev/null +++ b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/strike.json @@ -0,0 +1,21 @@ +[ + { + "children": [], + "content": [ + { + "styles": { + "strike": true, + }, + "text": "Strikethrough text", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/table.json b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/table.json new file mode 100644 index 0000000000..c96eefda40 --- /dev/null +++ b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/table.json @@ -0,0 +1,123 @@ +[ + { + "children": [], + "content": { + "columnWidths": [ + undefined, + undefined, + ], + "headerCols": undefined, + "headerRows": 1, + "rows": [ + { + "cells": [ + { + "content": [], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + { + "content": [], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + ], + }, + { + "cells": [ + { + "content": [ + { + "styles": {}, + "text": "Header 1", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + { + "content": [ + { + "styles": {}, + "text": "Header 2", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + ], + }, + { + "cells": [ + { + "content": [ + { + "styles": {}, + "text": "Cell 1", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + { + "content": [ + { + "styles": {}, + "text": "Cell 2", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + ], + }, + ], + "type": "tableContent", + }, + "id": "1", + "props": { + "textColor": "default", + }, + "type": "table", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/video.json b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/video.json new file mode 100644 index 0000000000..d7fdf700aa --- /dev/null +++ b/tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/video.json @@ -0,0 +1,16 @@ +[ + { + "children": [], + "content": undefined, + "id": "1", + "props": { + "backgroundColor": "default", + "caption": "", + "name": "", + "showPreview": true, + "textAlignment": "left", + "url": "https://example.com/video.mp4", + }, + "type": "video", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/exportParseEquality/exportParseEqualityTestInstances.ts b/tests/src/unit/core/formatConversion/exportParseEquality/exportParseEqualityTestInstances.ts index 57120eb518..b6cf5672fa 100644 --- a/tests/src/unit/core/formatConversion/exportParseEquality/exportParseEqualityTestInstances.ts +++ b/tests/src/unit/core/formatConversion/exportParseEquality/exportParseEqualityTestInstances.ts @@ -2,6 +2,7 @@ import { ExportParseEqualityTestCase } from "../../../shared/formatConversion/ex import { testExportParseEqualityBlockNoteHTML, testExportParseEqualityHTML, + testExportParseEqualityMarkdown, } from "../../../shared/formatConversion/exportParseEquality/exportParseEqualityTestExecutors.js"; import { TestInstance } from "../../../types.js"; import { @@ -371,3 +372,560 @@ export const exportParseEqualityTestInstancesHTML: TestInstance< executeTest: testExportParseEqualityHTML, }, ]; + +// Markdown round-trip tests: blocks → markdown → blocks +// Markdown is a lossy format (no colors, underline, alignment), so these tests +// use snapshot matching to capture the expected round-trip result rather than +// strict equality with the input. This is critical for verifying that the +// custom markdown parser/serializer produces the same round-trip results. +export const exportParseEqualityTestInstancesMarkdown: TestInstance< + ExportParseEqualityTestCase< + TestBlockSchema, + TestInlineContentSchema, + TestStyleSchema + >, + TestBlockSchema, + TestInlineContentSchema, + TestStyleSchema +>[] = [ + { + testCase: { + name: "markdown/paragraph", + content: [ + { + type: "paragraph", + content: "Simple paragraph", + }, + ], + }, + executeTest: testExportParseEqualityMarkdown, + }, + { + testCase: { + name: "markdown/multipleParagraphs", + content: [ + { + type: "paragraph", + content: "First paragraph", + }, + { + type: "paragraph", + content: "Second paragraph", + }, + ], + }, + executeTest: testExportParseEqualityMarkdown, + }, + { + testCase: { + name: "markdown/headingLevels", + content: [ + { + type: "heading", + props: { level: 1 }, + content: "Heading 1", + }, + { + type: "heading", + props: { level: 2 }, + content: "Heading 2", + }, + { + type: "heading", + props: { level: 3 }, + content: "Heading 3", + }, + ], + }, + executeTest: testExportParseEqualityMarkdown, + }, + { + testCase: { + name: "markdown/bulletList", + content: [ + { + type: "bulletListItem", + content: "Item 1", + }, + { + type: "bulletListItem", + content: "Item 2", + }, + ], + }, + executeTest: testExportParseEqualityMarkdown, + }, + { + testCase: { + name: "markdown/numberedList", + content: [ + { + type: "numberedListItem", + content: "Item 1", + }, + { + type: "numberedListItem", + content: "Item 2", + }, + ], + }, + executeTest: testExportParseEqualityMarkdown, + }, + { + testCase: { + name: "markdown/checkList", + content: [ + { + type: "checkListItem", + content: "Unchecked", + }, + { + type: "checkListItem", + props: { checked: true }, + content: "Checked", + }, + ], + }, + executeTest: testExportParseEqualityMarkdown, + }, + { + testCase: { + name: "markdown/nestedLists", + content: [ + { + type: "bulletListItem", + content: "Parent", + children: [ + { + type: "numberedListItem", + content: "Child 1", + }, + { + type: "numberedListItem", + content: "Child 2", + }, + ], + }, + ], + }, + executeTest: testExportParseEqualityMarkdown, + }, + { + testCase: { + name: "markdown/codeBlock", + content: [ + { + type: "codeBlock", + props: { language: "javascript" }, + content: "const x = 42;", + }, + ], + }, + executeTest: testExportParseEqualityMarkdown, + }, + { + testCase: { + name: "markdown/divider", + content: [ + { + type: "paragraph", + content: "Before", + }, + { + type: "divider", + }, + { + type: "paragraph", + content: "After", + }, + ], + }, + executeTest: testExportParseEqualityMarkdown, + }, + { + testCase: { + name: "markdown/bold", + content: [ + { + type: "paragraph", + content: [ + { + type: "text", + text: "Bold text", + styles: { bold: true }, + }, + ], + }, + ], + }, + executeTest: testExportParseEqualityMarkdown, + }, + { + testCase: { + name: "markdown/italic", + content: [ + { + type: "paragraph", + content: [ + { + type: "text", + text: "Italic text", + styles: { italic: true }, + }, + ], + }, + ], + }, + executeTest: testExportParseEqualityMarkdown, + }, + { + testCase: { + name: "markdown/strike", + content: [ + { + type: "paragraph", + content: [ + { + type: "text", + text: "Strikethrough text", + styles: { strike: true }, + }, + ], + }, + ], + }, + executeTest: testExportParseEqualityMarkdown, + }, + { + testCase: { + name: "markdown/inlineCode", + content: [ + { + type: "paragraph", + content: [ + { + type: "text", + text: "Code text", + styles: { code: true }, + }, + ], + }, + ], + }, + executeTest: testExportParseEqualityMarkdown, + }, + { + testCase: { + name: "markdown/boldItalic", + content: [ + { + type: "paragraph", + content: [ + { + type: "text", + text: "Bold and italic", + styles: { bold: true, italic: true }, + }, + ], + }, + ], + }, + executeTest: testExportParseEqualityMarkdown, + }, + { + testCase: { + name: "markdown/link", + content: [ + { + type: "paragraph", + content: [ + { + type: "text", + text: "Text ", + styles: {}, + }, + { + type: "link", + content: "Link", + href: "https://example.com", + }, + { + type: "text", + text: " more text", + styles: {}, + }, + ], + }, + ], + }, + executeTest: testExportParseEqualityMarkdown, + }, + { + testCase: { + name: "markdown/image", + content: [ + { + type: "image", + props: { + url: "https://example.com/image.png", + name: "Example", + }, + }, + ], + }, + executeTest: testExportParseEqualityMarkdown, + }, + { + testCase: { + name: "markdown/video", + content: [ + { + type: "video", + props: { + url: "https://example.com/video.mp4", + name: "Example", + }, + }, + ], + }, + executeTest: testExportParseEqualityMarkdown, + }, + { + testCase: { + name: "markdown/table", + content: [ + { + type: "table", + content: { + type: "tableContent", + rows: [ + { + cells: ["Header 1", "Header 2"], + }, + { + cells: ["Cell 1", "Cell 2"], + }, + ], + }, + }, + ], + }, + executeTest: testExportParseEqualityMarkdown, + }, + { + testCase: { + name: "markdown/quote", + content: [ + { + type: "quote", + content: "A quote", + }, + ], + }, + executeTest: testExportParseEqualityMarkdown, + }, + { + testCase: { + name: "markdown/hardBreak", + content: [ + { + type: "paragraph", + content: [ + { + type: "text", + text: "Line 1\nLine 2", + styles: {}, + }, + ], + }, + ], + }, + executeTest: testExportParseEqualityMarkdown, + }, + { + testCase: { + name: "markdown/mixedStyles", + content: [ + { + type: "paragraph", + content: [ + { + type: "text", + text: "Normal ", + styles: {}, + }, + { + type: "text", + text: "bold ", + styles: { bold: true }, + }, + { + type: "text", + text: "italic ", + styles: { italic: true }, + }, + { + type: "text", + text: "strike", + styles: { strike: true }, + }, + ], + }, + ], + }, + executeTest: testExportParseEqualityMarkdown, + }, + { + testCase: { + name: "markdown/complexDocument", + content: [ + { + type: "heading", + props: { level: 1 }, + content: "Title", + }, + { + type: "paragraph", + content: [ + { + type: "text", + text: "Paragraph with ", + styles: {}, + }, + { + type: "text", + text: "bold", + styles: { bold: true }, + }, + { + type: "text", + text: " text.", + styles: {}, + }, + ], + }, + { + type: "bulletListItem", + content: "Bullet 1", + }, + { + type: "bulletListItem", + content: "Bullet 2", + }, + { + type: "divider", + }, + { + type: "codeBlock", + props: { language: "python" }, + content: "print('hello')", + }, + ], + }, + executeTest: testExportParseEqualityMarkdown, + }, + { + testCase: { + name: "markdown/deeplyNestedLists", + content: [ + { + type: "bulletListItem", + content: "Level 1 bullet", + children: [ + { + type: "numberedListItem", + content: "Level 2 numbered", + children: [ + { + type: "bulletListItem", + content: "Level 3 bullet", + children: [ + { + type: "numberedListItem", + content: "Level 4 numbered", + }, + ], + }, + ], + }, + { + type: "numberedListItem", + content: "Level 2 sibling", + }, + ], + }, + { + type: "bulletListItem", + content: "Another top-level bullet", + children: [ + { + type: "bulletListItem", + content: "Child of second bullet", + children: [ + { + type: "checkListItem", + content: "Deep checklist item", + }, + ], + }, + ], + }, + ], + }, + executeTest: testExportParseEqualityMarkdown, + }, + { + testCase: { + name: "markdown/specialCharEscaping", + content: [ + { + type: "paragraph", + content: [ + { + type: "text", + text: "Literal *asterisks* and **double asterisks**", + styles: {}, + }, + ], + }, + { + type: "paragraph", + content: [ + { + type: "text", + text: "Backticks ` in plain text and `` double ``", + styles: {}, + }, + ], + }, + { + type: "paragraph", + content: [ + { + type: "text", + text: "Underscores _here_ and ~tildes~ and [brackets]", + styles: {}, + }, + ], + }, + { + type: "paragraph", + content: [ + { + type: "text", + text: "Pipes | and backslash \\ and #hash at start", + styles: {}, + }, + ], + }, + { + type: "codeBlock", + props: { language: "" }, + // eslint-disable-next-line no-template-curly-in-string + content: "const x = `template ${literal}`;\nconst y = '```triple backticks```';", + }, + ], + }, + executeTest: testExportParseEqualityMarkdown, + }, +]; diff --git a/tests/src/unit/core/formatConversion/exportParseEquality/runTests.test.ts b/tests/src/unit/core/formatConversion/exportParseEquality/runTests.test.ts index fc7f33f3c8..bcbad6fea9 100644 --- a/tests/src/unit/core/formatConversion/exportParseEquality/runTests.test.ts +++ b/tests/src/unit/core/formatConversion/exportParseEquality/runTests.test.ts @@ -5,6 +5,7 @@ import { testSchema } from "../../testSchema.js"; import { exportParseEqualityTestInstancesBlockNoteHTML, exportParseEqualityTestInstancesHTML, + exportParseEqualityTestInstancesMarkdown, } from "./exportParseEqualityTestInstances.js"; // Tests for verifying that exporting blocks to another format, then importing @@ -36,3 +37,16 @@ describe("Export/parse equality tests (HTML)", () => { }); } }); + +describe("Export/parse equality tests (Markdown)", () => { + const getEditor = createTestEditor(testSchema); + + for (const { + testCase, + executeTest, + } of exportParseEqualityTestInstancesMarkdown) { + it(`${testCase.name}`, async () => { + await executeTest(getEditor(), testCase); + }); + } +}); diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/adjacentFormattedRuns.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/adjacentFormattedRuns.json new file mode 100644 index 0000000000..24ea75b41d --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/adjacentFormattedRuns.json @@ -0,0 +1,35 @@ +[ + { + "children": [], + "content": [ + { + "styles": { + "bold": true, + }, + "text": "bold", + "type": "text", + }, + { + "styles": { + "italic": true, + }, + "text": "italic", + "type": "text", + }, + { + "styles": { + "strike": true, + }, + "text": "strike", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/adjacentLinks.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/adjacentLinks.json new file mode 100644 index 0000000000..bdaf169421 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/adjacentLinks.json @@ -0,0 +1,36 @@ +[ + { + "children": [], + "content": [ + { + "content": [ + { + "styles": {}, + "text": "Link1", + "type": "text", + }, + ], + "href": "https://example1.com", + "type": "link", + }, + { + "content": [ + { + "styles": {}, + "text": "Link2", + "type": "text", + }, + ], + "href": "https://example2.com", + "type": "link", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/backslashEscapes.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/backslashEscapes.json new file mode 100644 index 0000000000..fbdb14c852 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/backslashEscapes.json @@ -0,0 +1,19 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "*not bold* [not a link] ~not strike~", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/bareAngleBrackets.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/bareAngleBrackets.json new file mode 100644 index 0000000000..b50ace7d9e --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/bareAngleBrackets.json @@ -0,0 +1,19 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "1 < 2 and 3 > 0", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockHtmlComment.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockHtmlComment.json new file mode 100644 index 0000000000..dde187fb49 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockHtmlComment.json @@ -0,0 +1,19 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Next paragraph.", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockHtmlDiv.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockHtmlDiv.json new file mode 100644 index 0000000000..76c9d076e7 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockHtmlDiv.json @@ -0,0 +1,19 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "A warning block.", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockHtmlInterruptsParagraph.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockHtmlInterruptsParagraph.json new file mode 100644 index 0000000000..f0b3a0131d --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockHtmlInterruptsParagraph.json @@ -0,0 +1,36 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Some text before.", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "raw block Some text after.", + "type": "text", + }, + ], + "id": "2", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockquoteLazyContinuation.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockquoteLazyContinuation.json new file mode 100644 index 0000000000..4bf1e40314 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockquoteLazyContinuation.json @@ -0,0 +1,18 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "This is a quote that continues here and here too", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textColor": "default", + }, + "type": "quote", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockquoteMultiline.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockquoteMultiline.json new file mode 100644 index 0000000000..abe3612e64 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockquoteMultiline.json @@ -0,0 +1,18 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Line one Line two Line three", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textColor": "default", + }, + "type": "quote", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockquoteWithCode.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockquoteWithCode.json new file mode 100644 index 0000000000..b4a209b413 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockquoteWithCode.json @@ -0,0 +1,30 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Quote with ", + "type": "text", + }, + { + "styles": { + "code": true, + }, + "text": "inline code", + "type": "text", + }, + { + "styles": {}, + "text": " inside", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textColor": "default", + }, + "type": "quote", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockquoteWithLink.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockquoteWithLink.json new file mode 100644 index 0000000000..8cd0e17218 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockquoteWithLink.json @@ -0,0 +1,34 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Quote with ", + "type": "text", + }, + { + "content": [ + { + "styles": {}, + "text": "a link", + "type": "text", + }, + ], + "href": "https://example.com", + "type": "link", + }, + { + "styles": {}, + "text": " inside", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textColor": "default", + }, + "type": "quote", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/boldOnly.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/boldOnly.json new file mode 100644 index 0000000000..0569abc8a9 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/boldOnly.json @@ -0,0 +1,21 @@ +[ + { + "children": [], + "content": [ + { + "styles": { + "bold": true, + }, + "text": "Bold text", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/boldUnderscore.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/boldUnderscore.json new file mode 100644 index 0000000000..fc81db25f4 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/boldUnderscore.json @@ -0,0 +1,21 @@ +[ + { + "children": [], + "content": [ + { + "styles": { + "bold": true, + }, + "text": "Bold with underscores", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/checkListBasic.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/checkListBasic.json new file mode 100644 index 0000000000..62136bf1c9 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/checkListBasic.json @@ -0,0 +1,56 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Unchecked item", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "checked": false, + "textAlignment": "left", + "textColor": "default", + }, + "type": "checkListItem", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Checked item", + "type": "text", + }, + ], + "id": "2", + "props": { + "backgroundColor": "default", + "checked": true, + "textAlignment": "left", + "textColor": "default", + }, + "type": "checkListItem", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Another unchecked", + "type": "text", + }, + ], + "id": "3", + "props": { + "backgroundColor": "default", + "checked": false, + "textAlignment": "left", + "textColor": "default", + }, + "type": "checkListItem", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/checkListMixed.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/checkListMixed.json new file mode 100644 index 0000000000..4084a42458 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/checkListMixed.json @@ -0,0 +1,55 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Regular bullet", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "bulletListItem", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Check item", + "type": "text", + }, + ], + "id": "2", + "props": { + "backgroundColor": "default", + "checked": false, + "textAlignment": "left", + "textColor": "default", + }, + "type": "checkListItem", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Checked item", + "type": "text", + }, + ], + "id": "3", + "props": { + "backgroundColor": "default", + "checked": true, + "textAlignment": "left", + "textColor": "default", + }, + "type": "checkListItem", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/checkListNested.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/checkListNested.json new file mode 100644 index 0000000000..ff5c84bf29 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/checkListNested.json @@ -0,0 +1,57 @@ +[ + { + "children": [ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Child checked", + "type": "text", + }, + ], + "id": "2", + "props": { + "backgroundColor": "default", + "checked": true, + "textAlignment": "left", + "textColor": "default", + }, + "type": "checkListItem", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Child unchecked", + "type": "text", + }, + ], + "id": "3", + "props": { + "backgroundColor": "default", + "checked": false, + "textAlignment": "left", + "textColor": "default", + }, + "type": "checkListItem", + }, + ], + "content": [ + { + "styles": {}, + "text": "Parent item", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "checked": false, + "textAlignment": "left", + "textColor": "default", + }, + "type": "checkListItem", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/codeBlockBasic.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/codeBlockBasic.json new file mode 100644 index 0000000000..cf59869a6f --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/codeBlockBasic.json @@ -0,0 +1,17 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "console.log('Hello');", + "type": "text", + }, + ], + "id": "1", + "props": { + "language": "text", + }, + "type": "codeBlock", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/codeBlockIndented.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/codeBlockIndented.json new file mode 100644 index 0000000000..475525d84e --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/codeBlockIndented.json @@ -0,0 +1,17 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "const x = 1;", + "type": "text", + }, + ], + "id": "1", + "props": { + "language": "ts", + }, + "type": "codeBlock", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/codeBlockPython.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/codeBlockPython.json new file mode 100644 index 0000000000..78cd6179bf --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/codeBlockPython.json @@ -0,0 +1,18 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "def hello(): + print("Hello, world!")", + "type": "text", + }, + ], + "id": "1", + "props": { + "language": "python", + }, + "type": "codeBlock", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/codeBlockTildes.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/codeBlockTildes.json new file mode 100644 index 0000000000..1a656bd726 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/codeBlockTildes.json @@ -0,0 +1,17 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "code with tildes", + "type": "text", + }, + ], + "id": "1", + "props": { + "language": "text", + }, + "type": "codeBlock", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/codeBlockWithLanguage.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/codeBlockWithLanguage.json new file mode 100644 index 0000000000..90eb554680 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/codeBlockWithLanguage.json @@ -0,0 +1,18 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "const x = 42; +console.log(x);", + "type": "text", + }, + ], + "id": "1", + "props": { + "language": "javascript", + }, + "type": "codeBlock", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/codeBlockWithSpecialChars.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/codeBlockWithSpecialChars.json new file mode 100644 index 0000000000..bdf7b585f8 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/codeBlockWithSpecialChars.json @@ -0,0 +1,19 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "
      +

      Hello **not bold**

      +
      ", + "type": "text", + }, + ], + "id": "1", + "props": { + "language": "html", + }, + "type": "codeBlock", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/codeSpanWithNewline.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/codeSpanWithNewline.json new file mode 100644 index 0000000000..b9b3e84746 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/codeSpanWithNewline.json @@ -0,0 +1,21 @@ +[ + { + "children": [], + "content": [ + { + "styles": { + "code": true, + }, + "text": "foo bar baz", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/complexDocument.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/complexDocument.json new file mode 100644 index 0000000000..972d1d02df --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/complexDocument.json @@ -0,0 +1,442 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Main Title", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "isToggleable": false, + "level": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "heading", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "An introduction paragraph with ", + "type": "text", + }, + { + "styles": { + "bold": true, + }, + "text": "bold", + "type": "text", + }, + { + "styles": {}, + "text": " and ", + "type": "text", + }, + { + "styles": { + "italic": true, + }, + "text": "italic", + "type": "text", + }, + { + "styles": {}, + "text": " text.", + "type": "text", + }, + ], + "id": "2", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Section 1", + "type": "text", + }, + ], + "id": "3", + "props": { + "backgroundColor": "default", + "isToggleable": false, + "level": 2, + "textAlignment": "left", + "textColor": "default", + }, + "type": "heading", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "First bullet point", + "type": "text", + }, + ], + "id": "4", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "bulletListItem", + }, + { + "children": [ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Nested point", + "type": "text", + }, + ], + "id": "6", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "bulletListItem", + }, + ], + "content": [ + { + "styles": {}, + "text": "Second bullet point", + "type": "text", + }, + ], + "id": "5", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "bulletListItem", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "A notable quote", + "type": "text", + }, + ], + "id": "7", + "props": { + "backgroundColor": "default", + "textColor": "default", + }, + "type": "quote", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Code Example", + "type": "text", + }, + ], + "id": "8", + "props": { + "backgroundColor": "default", + "isToggleable": false, + "level": 3, + "textAlignment": "left", + "textColor": "default", + }, + "type": "heading", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "function hello() { + return "world"; +}", + "type": "text", + }, + ], + "id": "9", + "props": { + "language": "javascript", + }, + "type": "codeBlock", + }, + { + "children": [], + "content": undefined, + "id": "10", + "props": {}, + "type": "divider", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Section 2", + "type": "text", + }, + ], + "id": "11", + "props": { + "backgroundColor": "default", + "isToggleable": false, + "level": 2, + "textAlignment": "left", + "textColor": "default", + }, + "type": "heading", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Step one", + "type": "text", + }, + ], + "id": "12", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "numberedListItem", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Step two", + "type": "text", + }, + ], + "id": "13", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "numberedListItem", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Step three", + "type": "text", + }, + ], + "id": "14", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "numberedListItem", + }, + { + "children": [], + "content": { + "columnWidths": [ + undefined, + undefined, + ], + "headerCols": undefined, + "headerRows": 1, + "rows": [ + { + "cells": [ + { + "content": [ + { + "styles": {}, + "text": "Feature", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + { + "content": [ + { + "styles": {}, + "text": "Status", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + ], + }, + { + "cells": [ + { + "content": [ + { + "styles": {}, + "text": "Bold", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + { + "content": [ + { + "styles": {}, + "text": "Done", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + ], + }, + { + "cells": [ + { + "content": [ + { + "styles": {}, + "text": "Italic", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + { + "content": [ + { + "styles": {}, + "text": "Done", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + ], + }, + ], + "type": "tableContent", + }, + "id": "15", + "props": { + "textColor": "default", + }, + "type": "table", + }, + { + "children": [], + "content": undefined, + "id": "16", + "props": { + "backgroundColor": "default", + "caption": "", + "name": "Image", + "showPreview": true, + "textAlignment": "left", + "url": "https://example.com/image.png", + }, + "type": "image", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Final paragraph with ", + "type": "text", + }, + { + "content": [ + { + "styles": {}, + "text": "a link", + "type": "text", + }, + ], + "href": "https://example.com", + "type": "link", + }, + { + "styles": {}, + "text": ".", + "type": "text", + }, + ], + "id": "17", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/deeplyNestedLists.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/deeplyNestedLists.json new file mode 100644 index 0000000000..535c584553 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/deeplyNestedLists.json @@ -0,0 +1,73 @@ +[ + { + "children": [ + { + "children": [ + { + "children": [ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Level 4", + "type": "text", + }, + ], + "id": "4", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "bulletListItem", + }, + ], + "content": [ + { + "styles": {}, + "text": "Level 3", + "type": "text", + }, + ], + "id": "3", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "bulletListItem", + }, + ], + "content": [ + { + "styles": {}, + "text": "Level 2", + "type": "text", + }, + ], + "id": "2", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "bulletListItem", + }, + ], + "content": [ + { + "styles": {}, + "text": "Level 1", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "bulletListItem", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/emptyString.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/emptyString.json new file mode 100644 index 0000000000..45f0949abe --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/emptyString.json @@ -0,0 +1,13 @@ +[ + { + "children": [], + "content": [], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/escapedDelimiterInEmphasis.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/escapedDelimiterInEmphasis.json new file mode 100644 index 0000000000..219c8e869a --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/escapedDelimiterInEmphasis.json @@ -0,0 +1,21 @@ +[ + { + "children": [], + "content": [ + { + "styles": { + "italic": true, + }, + "text": "*", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/hardBreakBackslash.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/hardBreakBackslash.json new file mode 100644 index 0000000000..e4ed206bcf --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/hardBreakBackslash.json @@ -0,0 +1,20 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Line one + Line two", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/hardBreakMultiple.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/hardBreakMultiple.json new file mode 100644 index 0000000000..359a3b1cbc --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/hardBreakMultiple.json @@ -0,0 +1,21 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Line one + Line two + Line three", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/hardBreakTwoSpaces.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/hardBreakTwoSpaces.json new file mode 100644 index 0000000000..e4ed206bcf --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/hardBreakTwoSpaces.json @@ -0,0 +1,20 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Line one + Line two", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingH1.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingH1.json new file mode 100644 index 0000000000..27be2c1d52 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingH1.json @@ -0,0 +1,21 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Heading 1", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "isToggleable": false, + "level": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "heading", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingH2.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingH2.json new file mode 100644 index 0000000000..2cb042a21b --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingH2.json @@ -0,0 +1,21 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Heading 2", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "isToggleable": false, + "level": 2, + "textAlignment": "left", + "textColor": "default", + }, + "type": "heading", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingH3.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingH3.json new file mode 100644 index 0000000000..3e79e93fa0 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingH3.json @@ -0,0 +1,21 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Heading 3", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "isToggleable": false, + "level": 3, + "textAlignment": "left", + "textColor": "default", + }, + "type": "heading", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingH4.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingH4.json new file mode 100644 index 0000000000..b5dffeaff8 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingH4.json @@ -0,0 +1,21 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Heading 4", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "isToggleable": false, + "level": 4, + "textAlignment": "left", + "textColor": "default", + }, + "type": "heading", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingH5.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingH5.json new file mode 100644 index 0000000000..9f69aff1a8 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingH5.json @@ -0,0 +1,21 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Heading 5", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "isToggleable": false, + "level": 5, + "textAlignment": "left", + "textColor": "default", + }, + "type": "heading", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingH6.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingH6.json new file mode 100644 index 0000000000..c01c6b3437 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingH6.json @@ -0,0 +1,21 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Heading 6", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "isToggleable": false, + "level": 6, + "textAlignment": "left", + "textColor": "default", + }, + "type": "heading", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingInternalPadding.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingInternalPadding.json new file mode 100644 index 0000000000..c61af59e1d --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingInternalPadding.json @@ -0,0 +1,21 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "foo", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "isToggleable": false, + "level": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "heading", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingThenCode.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingThenCode.json new file mode 100644 index 0000000000..d32797e0b3 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingThenCode.json @@ -0,0 +1,36 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Code Section", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "isToggleable": false, + "level": 2, + "textAlignment": "left", + "textColor": "default", + }, + "type": "heading", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "x = 42", + "type": "text", + }, + ], + "id": "2", + "props": { + "language": "python", + }, + "type": "codeBlock", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingTrailingWhitespace.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingTrailingWhitespace.json new file mode 100644 index 0000000000..4a72b6b759 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingTrailingWhitespace.json @@ -0,0 +1,21 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "foo", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "isToggleable": false, + "level": 3, + "textAlignment": "left", + "textColor": "default", + }, + "type": "heading", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingWithInlineStyles.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingWithInlineStyles.json new file mode 100644 index 0000000000..61518fb6d7 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/headingWithInlineStyles.json @@ -0,0 +1,52 @@ +[ + { + "children": [], + "content": [ + { + "styles": { + "bold": true, + }, + "text": "Bold", + "type": "text", + }, + { + "styles": {}, + "text": " ", + "type": "text", + }, + { + "styles": { + "italic": true, + }, + "text": "Italic", + "type": "text", + }, + { + "styles": {}, + "text": " ", + "type": "text", + }, + { + "styles": { + "strike": true, + }, + "text": "Strike", + "type": "text", + }, + { + "styles": {}, + "text": " Heading", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "isToggleable": false, + "level": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "heading", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/horizontalRuleAsterisks.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/horizontalRuleAsterisks.json new file mode 100644 index 0000000000..6d2e457fd8 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/horizontalRuleAsterisks.json @@ -0,0 +1,43 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Paragraph above", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, + { + "children": [], + "content": undefined, + "id": "2", + "props": {}, + "type": "divider", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Paragraph below", + "type": "text", + }, + ], + "id": "3", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/horizontalRuleDashes.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/horizontalRuleDashes.json new file mode 100644 index 0000000000..6d2e457fd8 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/horizontalRuleDashes.json @@ -0,0 +1,43 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Paragraph above", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, + { + "children": [], + "content": undefined, + "id": "2", + "props": {}, + "type": "divider", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Paragraph below", + "type": "text", + }, + ], + "id": "3", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/horizontalRuleUnderscores.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/horizontalRuleUnderscores.json new file mode 100644 index 0000000000..6d2e457fd8 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/horizontalRuleUnderscores.json @@ -0,0 +1,43 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Paragraph above", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, + { + "children": [], + "content": undefined, + "id": "2", + "props": {}, + "type": "divider", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Paragraph below", + "type": "text", + }, + ], + "id": "3", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/imageAngleBracketUrl.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/imageAngleBracketUrl.json new file mode 100644 index 0000000000..8ecc4b0a3b --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/imageAngleBracketUrl.json @@ -0,0 +1,16 @@ +[ + { + "children": [], + "content": undefined, + "id": "1", + "props": { + "backgroundColor": "default", + "caption": "", + "name": "alt", + "showPreview": true, + "textAlignment": "left", + "url": "https://example.com/image.png", + }, + "type": "image", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/imageNestedBracketsAlt.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/imageNestedBracketsAlt.json new file mode 100644 index 0000000000..bd2ec4d1a0 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/imageNestedBracketsAlt.json @@ -0,0 +1,16 @@ +[ + { + "children": [], + "content": undefined, + "id": "1", + "props": { + "backgroundColor": "default", + "caption": "", + "name": "alt [with] brackets", + "showPreview": true, + "textAlignment": "left", + "url": "https://example.com/image.png", + }, + "type": "image", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/imageWithAlt.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/imageWithAlt.json new file mode 100644 index 0000000000..7f7ff95459 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/imageWithAlt.json @@ -0,0 +1,16 @@ +[ + { + "children": [], + "content": undefined, + "id": "1", + "props": { + "backgroundColor": "default", + "caption": "", + "name": "Alt text for image", + "showPreview": true, + "textAlignment": "left", + "url": "https://example.com/photo.jpg", + }, + "type": "image", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/imageWithTitle.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/imageWithTitle.json new file mode 100644 index 0000000000..a6279cc8a6 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/imageWithTitle.json @@ -0,0 +1,16 @@ +[ + { + "children": [], + "content": undefined, + "id": "1", + "props": { + "backgroundColor": "default", + "caption": "", + "name": "alt text", + "showPreview": true, + "textAlignment": "left", + "url": "https://example.com/image.png", + }, + "type": "image", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/inlineCode.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/inlineCode.json new file mode 100644 index 0000000000..7e02a1406d --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/inlineCode.json @@ -0,0 +1,31 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "This has ", + "type": "text", + }, + { + "styles": { + "code": true, + }, + "text": "inline code", + "type": "text", + }, + { + "styles": {}, + "text": " in it", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/inlineCodeWithSpecialChars.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/inlineCodeWithSpecialChars.json new file mode 100644 index 0000000000..8b77e45fc7 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/inlineCodeWithSpecialChars.json @@ -0,0 +1,31 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Use ", + "type": "text", + }, + { + "styles": { + "code": true, + }, + "text": "const x = 42;", + "type": "text", + }, + { + "styles": {}, + "text": " to declare", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/inlineHtmlTag.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/inlineHtmlTag.json new file mode 100644 index 0000000000..775c811913 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/inlineHtmlTag.json @@ -0,0 +1,31 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Hello ", + "type": "text", + }, + { + "styles": { + "italic": true, + }, + "text": "world", + "type": "text", + }, + { + "styles": {}, + "text": "!", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/inlineHtmlVoidTag.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/inlineHtmlVoidTag.json new file mode 100644 index 0000000000..a617cae33f --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/inlineHtmlVoidTag.json @@ -0,0 +1,20 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Line one +line two.", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/inlineHtmlWithAttributes.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/inlineHtmlWithAttributes.json new file mode 100644 index 0000000000..839e11fbb7 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/inlineHtmlWithAttributes.json @@ -0,0 +1,47 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Text with ", + "type": "text", + }, + { + "styles": { + "bold": true, + }, + "text": "bold", + "type": "text", + }, + { + "styles": {}, + "text": " and ", + "type": "text", + }, + { + "content": [ + { + "styles": {}, + "text": "link", + "type": "text", + }, + ], + "href": "https://example.com", + "type": "link", + }, + { + "styles": {}, + "text": ".", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/inlineImage.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/inlineImage.json new file mode 100644 index 0000000000..35a0bc23d1 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/inlineImage.json @@ -0,0 +1,19 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Text before text after", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/italicOnly.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/italicOnly.json new file mode 100644 index 0000000000..01ec89cd69 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/italicOnly.json @@ -0,0 +1,21 @@ +[ + { + "children": [], + "content": [ + { + "styles": { + "italic": true, + }, + "text": "Italic text", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/italicUnderscore.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/italicUnderscore.json new file mode 100644 index 0000000000..3e39b28872 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/italicUnderscore.json @@ -0,0 +1,21 @@ +[ + { + "children": [], + "content": [ + { + "styles": { + "italic": true, + }, + "text": "Italic with underscores", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/linkAndText.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/linkAndText.json new file mode 100644 index 0000000000..4e6bd86d51 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/linkAndText.json @@ -0,0 +1,35 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Before ", + "type": "text", + }, + { + "content": [ + { + "styles": {}, + "text": "Link", + "type": "text", + }, + ], + "href": "https://example.com", + "type": "link", + }, + { + "styles": {}, + "text": " after", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/linkBasic.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/linkBasic.json new file mode 100644 index 0000000000..2d0b7cff77 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/linkBasic.json @@ -0,0 +1,25 @@ +[ + { + "children": [], + "content": [ + { + "content": [ + { + "styles": {}, + "text": "Example", + "type": "text", + }, + ], + "href": "https://example.com", + "type": "link", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/linkInParagraph.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/linkInParagraph.json new file mode 100644 index 0000000000..0509ca27e9 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/linkInParagraph.json @@ -0,0 +1,35 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Check out ", + "type": "text", + }, + { + "content": [ + { + "styles": {}, + "text": "this link", + "type": "text", + }, + ], + "href": "https://example.com", + "type": "link", + }, + { + "styles": {}, + "text": " for more info.", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/linkWithStyledContent.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/linkWithStyledContent.json new file mode 100644 index 0000000000..17d11b4dde --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/linkWithStyledContent.json @@ -0,0 +1,27 @@ +[ + { + "children": [], + "content": [ + { + "content": [ + { + "styles": { + "bold": true, + }, + "text": "Bold link", + "type": "text", + }, + ], + "href": "https://example.com", + "type": "link", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/linkWithTitle.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/linkWithTitle.json new file mode 100644 index 0000000000..aac8fd51d6 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/linkWithTitle.json @@ -0,0 +1,25 @@ +[ + { + "children": [], + "content": [ + { + "content": [ + { + "styles": {}, + "text": "example", + "type": "text", + }, + ], + "href": "https://example.com", + "type": "link", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/listWithStyledItems.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/listWithStyledItems.json new file mode 100644 index 0000000000..95ff31e2d2 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/listWithStyledItems.json @@ -0,0 +1,83 @@ +[ + { + "children": [], + "content": [ + { + "styles": { + "bold": true, + }, + "text": "Bold item", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "bulletListItem", + }, + { + "children": [], + "content": [ + { + "styles": { + "italic": true, + }, + "text": "Italic item", + "type": "text", + }, + ], + "id": "2", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "bulletListItem", + }, + { + "children": [], + "content": [ + { + "styles": { + "strike": true, + }, + "text": "Strikethrough item", + "type": "text", + }, + ], + "id": "3", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "bulletListItem", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Item with ", + "type": "text", + }, + { + "styles": { + "code": true, + }, + "text": "code", + "type": "text", + }, + ], + "id": "4", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "bulletListItem", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/mixedInlineContent.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/mixedInlineContent.json new file mode 100644 index 0000000000..71ff4f8a21 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/mixedInlineContent.json @@ -0,0 +1,78 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Normal ", + "type": "text", + }, + { + "styles": { + "bold": true, + }, + "text": "bold", + "type": "text", + }, + { + "styles": {}, + "text": " ", + "type": "text", + }, + { + "styles": { + "italic": true, + }, + "text": "italic", + "type": "text", + }, + { + "styles": {}, + "text": " ", + "type": "text", + }, + { + "styles": { + "strike": true, + }, + "text": "strike", + "type": "text", + }, + { + "styles": {}, + "text": " ", + "type": "text", + }, + { + "styles": { + "code": true, + }, + "text": "code", + "type": "text", + }, + { + "styles": {}, + "text": " ", + "type": "text", + }, + { + "content": [ + { + "styles": {}, + "text": "link", + "type": "text", + }, + ], + "href": "https://example.com", + "type": "link", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/mixedListTypes.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/mixedListTypes.json new file mode 100644 index 0000000000..a877f90459 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/mixedListTypes.json @@ -0,0 +1,90 @@ +[ + { + "children": [ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Numbered child", + "type": "text", + }, + ], + "id": "2", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "numberedListItem", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Another numbered", + "type": "text", + }, + ], + "id": "3", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "numberedListItem", + }, + ], + "content": [ + { + "styles": {}, + "text": "Bullet item", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "bulletListItem", + }, + { + "children": [ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Check child", + "type": "text", + }, + ], + "id": "5", + "props": { + "backgroundColor": "default", + "checked": false, + "textAlignment": "left", + "textColor": "default", + }, + "type": "checkListItem", + }, + ], + "content": [ + { + "styles": {}, + "text": "Another bullet", + "type": "text", + }, + ], + "id": "4", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "bulletListItem", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/multipleImages.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/multipleImages.json new file mode 100644 index 0000000000..11f15e765d --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/multipleImages.json @@ -0,0 +1,30 @@ +[ + { + "children": [], + "content": undefined, + "id": "1", + "props": { + "backgroundColor": "default", + "caption": "", + "name": "First", + "showPreview": true, + "textAlignment": "left", + "url": "https://example.com/first.png", + }, + "type": "image", + }, + { + "children": [], + "content": undefined, + "id": "2", + "props": { + "backgroundColor": "default", + "caption": "", + "name": "Second", + "showPreview": true, + "textAlignment": "left", + "url": "https://example.com/second.png", + }, + "type": "image", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/multipleParagraphs.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/multipleParagraphs.json new file mode 100644 index 0000000000..de4db270fe --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/multipleParagraphs.json @@ -0,0 +1,53 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "First paragraph", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Second paragraph", + "type": "text", + }, + ], + "id": "2", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Third paragraph", + "type": "text", + }, + ], + "id": "3", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/nestedBulletLists.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/nestedBulletLists.json new file mode 100644 index 0000000000..d2d96963e9 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/nestedBulletLists.json @@ -0,0 +1,89 @@ +[ + { + "children": [ + { + "children": [ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Deep nested", + "type": "text", + }, + ], + "id": "3", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "bulletListItem", + }, + ], + "content": [ + { + "styles": {}, + "text": "Nested 1", + "type": "text", + }, + ], + "id": "2", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "bulletListItem", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Nested 2", + "type": "text", + }, + ], + "id": "4", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "bulletListItem", + }, + ], + "content": [ + { + "styles": {}, + "text": "Item 1", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "bulletListItem", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Item 2", + "type": "text", + }, + ], + "id": "5", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "bulletListItem", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/nestedEmphasis.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/nestedEmphasis.json new file mode 100644 index 0000000000..2e5c63d508 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/nestedEmphasis.json @@ -0,0 +1,22 @@ +[ + { + "children": [], + "content": [ + { + "styles": { + "bold": true, + "italic": true, + }, + "text": "bold and italic", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/nestedEmphasisComplex.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/nestedEmphasisComplex.json new file mode 100644 index 0000000000..717e251a84 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/nestedEmphasisComplex.json @@ -0,0 +1,36 @@ +[ + { + "children": [], + "content": [ + { + "styles": { + "bold": true, + }, + "text": "bold ", + "type": "text", + }, + { + "styles": { + "bold": true, + "italic": true, + }, + "text": "bold and italic", + "type": "text", + }, + { + "styles": { + "bold": true, + }, + "text": " bold", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/nestedOrderedLists.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/nestedOrderedLists.json new file mode 100644 index 0000000000..301593b562 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/nestedOrderedLists.json @@ -0,0 +1,71 @@ +[ + { + "children": [ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Sub first", + "type": "text", + }, + ], + "id": "2", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "numberedListItem", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Sub second", + "type": "text", + }, + ], + "id": "3", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "numberedListItem", + }, + ], + "content": [ + { + "styles": {}, + "text": "First", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "numberedListItem", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Second", + "type": "text", + }, + ], + "id": "4", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "numberedListItem", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/onlyWhitespace.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/onlyWhitespace.json new file mode 100644 index 0000000000..45f0949abe --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/onlyWhitespace.json @@ -0,0 +1,13 @@ +[ + { + "children": [], + "content": [], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/orderedListStart.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/orderedListStart.json new file mode 100644 index 0000000000..35d2df68a3 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/orderedListStart.json @@ -0,0 +1,54 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Third item", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "start": 3, + "textAlignment": "left", + "textColor": "default", + }, + "type": "numberedListItem", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Fourth item", + "type": "text", + }, + ], + "id": "2", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "numberedListItem", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Fifth item", + "type": "text", + }, + ], + "id": "3", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "numberedListItem", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/paragraphContinuation.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/paragraphContinuation.json new file mode 100644 index 0000000000..6f7169f109 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/paragraphContinuation.json @@ -0,0 +1,19 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Line one still same paragraph", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/paragraphLeadingIndent.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/paragraphLeadingIndent.json new file mode 100644 index 0000000000..b249d3a2d8 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/paragraphLeadingIndent.json @@ -0,0 +1,19 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "aaa bbb", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/setextH1.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/setextH1.json new file mode 100644 index 0000000000..27be2c1d52 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/setextH1.json @@ -0,0 +1,21 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Heading 1", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "isToggleable": false, + "level": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "heading", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/setextH2.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/setextH2.json new file mode 100644 index 0000000000..2cb042a21b --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/setextH2.json @@ -0,0 +1,21 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Heading 2", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "isToggleable": false, + "level": 2, + "textAlignment": "left", + "textColor": "default", + }, + "type": "heading", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/strikethroughOnly.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/strikethroughOnly.json new file mode 100644 index 0000000000..7f504a4b3f --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/strikethroughOnly.json @@ -0,0 +1,21 @@ +[ + { + "children": [], + "content": [ + { + "styles": { + "strike": true, + }, + "text": "Strikethrough text", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/tableAlignment.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/tableAlignment.json new file mode 100644 index 0000000000..35d1354f9f --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/tableAlignment.json @@ -0,0 +1,132 @@ +[ + { + "children": [], + "content": { + "columnWidths": [ + undefined, + undefined, + undefined, + ], + "headerCols": undefined, + "headerRows": 1, + "rows": [ + { + "cells": [ + { + "content": [ + { + "styles": {}, + "text": "Left", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + { + "content": [ + { + "styles": {}, + "text": "Center", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + { + "content": [ + { + "styles": {}, + "text": "Right", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + ], + }, + { + "cells": [ + { + "content": [ + { + "styles": {}, + "text": "L", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + { + "content": [ + { + "styles": {}, + "text": "C", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + { + "content": [ + { + "styles": {}, + "text": "R", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + ], + }, + ], + "type": "tableContent", + }, + "id": "1", + "props": { + "textColor": "default", + }, + "type": "table", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/tableBasic.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/tableBasic.json new file mode 100644 index 0000000000..7a5d236441 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/tableBasic.json @@ -0,0 +1,135 @@ +[ + { + "children": [], + "content": { + "columnWidths": [ + undefined, + undefined, + ], + "headerCols": undefined, + "headerRows": 1, + "rows": [ + { + "cells": [ + { + "content": [ + { + "styles": {}, + "text": "Header 1", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + { + "content": [ + { + "styles": {}, + "text": "Header 2", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + ], + }, + { + "cells": [ + { + "content": [ + { + "styles": {}, + "text": "Cell 1", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + { + "content": [ + { + "styles": {}, + "text": "Cell 2", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + ], + }, + { + "cells": [ + { + "content": [ + { + "styles": {}, + "text": "Cell 3", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + { + "content": [ + { + "styles": {}, + "text": "Cell 4", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + ], + }, + ], + "type": "tableContent", + }, + "id": "1", + "props": { + "textColor": "default", + }, + "type": "table", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/tableFollowedByParagraph.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/tableFollowedByParagraph.json new file mode 100644 index 0000000000..36896f03df --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/tableFollowedByParagraph.json @@ -0,0 +1,114 @@ +[ + { + "children": [], + "content": { + "columnWidths": [ + undefined, + undefined, + ], + "headerCols": undefined, + "headerRows": 1, + "rows": [ + { + "cells": [ + { + "content": [ + { + "styles": {}, + "text": "Col 1", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + { + "content": [ + { + "styles": {}, + "text": "Col 2", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + ], + }, + { + "cells": [ + { + "content": [ + { + "styles": {}, + "text": "A", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + { + "content": [ + { + "styles": {}, + "text": "B", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + ], + }, + ], + "type": "tableContent", + }, + "id": "1", + "props": { + "textColor": "default", + }, + "type": "table", + }, + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Paragraph after table", + "type": "text", + }, + ], + "id": "2", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/tablePipeless.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/tablePipeless.json new file mode 100644 index 0000000000..4052304874 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/tablePipeless.json @@ -0,0 +1,97 @@ +[ + { + "children": [], + "content": { + "columnWidths": [ + undefined, + undefined, + ], + "headerCols": undefined, + "headerRows": 1, + "rows": [ + { + "cells": [ + { + "content": [ + { + "styles": {}, + "text": "Col 1", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + { + "content": [ + { + "styles": {}, + "text": "Col 2", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + ], + }, + { + "cells": [ + { + "content": [ + { + "styles": {}, + "text": "A", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + { + "content": [ + { + "styles": {}, + "text": "B", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + ], + }, + ], + "type": "tableContent", + }, + "id": "1", + "props": { + "textColor": "default", + }, + "type": "table", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/tableThreeColumns.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/tableThreeColumns.json new file mode 100644 index 0000000000..e235519185 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/tableThreeColumns.json @@ -0,0 +1,132 @@ +[ + { + "children": [], + "content": { + "columnWidths": [ + undefined, + undefined, + undefined, + ], + "headerCols": undefined, + "headerRows": 1, + "rows": [ + { + "cells": [ + { + "content": [ + { + "styles": {}, + "text": "A", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + { + "content": [ + { + "styles": {}, + "text": "B", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + { + "content": [ + { + "styles": {}, + "text": "C", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + ], + }, + { + "cells": [ + { + "content": [ + { + "styles": {}, + "text": "1", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + { + "content": [ + { + "styles": {}, + "text": "2", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + { + "content": [ + { + "styles": {}, + "text": "3", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + ], + }, + ], + "type": "tableContent", + }, + "id": "1", + "props": { + "textColor": "default", + }, + "type": "table", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/tableWithInlineFormatting.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/tableWithInlineFormatting.json new file mode 100644 index 0000000000..7d0cb2bfe3 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/tableWithInlineFormatting.json @@ -0,0 +1,141 @@ +[ + { + "children": [], + "content": { + "columnWidths": [ + undefined, + undefined, + ], + "headerCols": undefined, + "headerRows": 1, + "rows": [ + { + "cells": [ + { + "content": [ + { + "styles": {}, + "text": "Header", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + { + "content": [ + { + "styles": {}, + "text": "Styled", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + ], + }, + { + "cells": [ + { + "content": [ + { + "styles": {}, + "text": "Normal", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + { + "content": [ + { + "styles": { + "bold": true, + }, + "text": "Bold", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + ], + }, + { + "cells": [ + { + "content": [ + { + "styles": { + "italic": true, + }, + "text": "Italic", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + { + "content": [ + { + "styles": { + "strike": true, + }, + "text": "Strike", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + ], + }, + ], + "type": "tableContent", + }, + "id": "1", + "props": { + "textColor": "default", + }, + "type": "table", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/tableWithLinks.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/tableWithLinks.json new file mode 100644 index 0000000000..7ac6eab9fb --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/tableWithLinks.json @@ -0,0 +1,103 @@ +[ + { + "children": [], + "content": { + "columnWidths": [ + undefined, + undefined, + ], + "headerCols": undefined, + "headerRows": 1, + "rows": [ + { + "cells": [ + { + "content": [ + { + "styles": {}, + "text": "Name", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + { + "content": [ + { + "styles": {}, + "text": "Link", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + ], + }, + { + "cells": [ + { + "content": [ + { + "styles": {}, + "text": "Example", + "type": "text", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + { + "content": [ + { + "content": [ + { + "styles": {}, + "text": "Click", + "type": "text", + }, + ], + "href": "https://example.com", + "type": "link", + }, + ], + "props": { + "backgroundColor": "default", + "colspan": 1, + "rowspan": 1, + "textAlignment": "left", + "textColor": "default", + }, + "type": "tableCell", + }, + ], + }, + ], + "type": "tableContent", + }, + "id": "1", + "props": { + "textColor": "default", + }, + "type": "table", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/parseTestInstances.ts b/tests/src/unit/core/formatConversion/parse/parseTestInstances.ts index 266d87a68a..0da7436615 100644 --- a/tests/src/unit/core/formatConversion/parse/parseTestInstances.ts +++ b/tests/src/unit/core/formatConversion/parse/parseTestInstances.ts @@ -1279,4 +1279,770 @@ Regular paragraph`, }, executeTest: testParseMarkdown, }, + // Individual heading levels + { + testCase: { + name: "headingH1", + content: `# Heading 1`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "headingH2", + content: `## Heading 2`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "headingH3", + content: `### Heading 3`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "headingH4", + content: `#### Heading 4`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "headingH5", + content: `##### Heading 5`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "headingH6", + content: `###### Heading 6`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "headingWithInlineStyles", + content: `# **Bold** *Italic* ~~Strike~~ Heading`, + }, + executeTest: testParseMarkdown, + }, + // Setext headings + { + testCase: { + name: "setextH1", + content: `Heading 1 +===`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "setextH2", + content: `Heading 2 +---`, + }, + executeTest: testParseMarkdown, + }, + // Code blocks + { + testCase: { + name: "codeBlockBasic", + content: `\`\`\` +console.log('Hello'); +\`\`\``, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "codeBlockWithLanguage", + content: `\`\`\`javascript +const x = 42; +console.log(x); +\`\`\``, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "codeBlockPython", + content: `\`\`\`python +def hello(): + print("Hello, world!") +\`\`\``, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "codeBlockWithSpecialChars", + content: `\`\`\`html +
      +

      Hello **not bold**

      +
      +\`\`\``, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "codeBlockTildes", + content: `~~~ +code with tildes +~~~`, + }, + executeTest: testParseMarkdown, + }, + // Horizontal rules + { + testCase: { + name: "horizontalRuleDashes", + content: `Paragraph above + +--- + +Paragraph below`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "horizontalRuleAsterisks", + content: `Paragraph above + +*** + +Paragraph below`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "horizontalRuleUnderscores", + content: `Paragraph above + +___ + +Paragraph below`, + }, + executeTest: testParseMarkdown, + }, + // Inline code + { + testCase: { + name: "inlineCode", + content: `This has \`inline code\` in it`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "inlineCodeWithSpecialChars", + content: `Use \`const x = 42;\` to declare`, + }, + executeTest: testParseMarkdown, + }, + // Links + { + testCase: { + name: "linkBasic", + content: `[Example](https://example.com)`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "linkInParagraph", + content: `Check out [this link](https://example.com) for more info.`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "linkWithStyledContent", + content: `[**Bold link**](https://example.com)`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "adjacentLinks", + content: `[Link1](https://example1.com)[Link2](https://example2.com)`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "linkAndText", + content: `Before [Link](https://example.com) after`, + }, + executeTest: testParseMarkdown, + }, + // Tables + { + testCase: { + name: "tableBasic", + content: `| Header 1 | Header 2 | +| -------- | -------- | +| Cell 1 | Cell 2 | +| Cell 3 | Cell 4 |`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "tableThreeColumns", + content: `| A | B | C | +| - | - | - | +| 1 | 2 | 3 |`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "tableWithInlineFormatting", + content: `| Header | Styled | +| ------ | ------ | +| Normal | **Bold** | +| *Italic* | ~~Strike~~ |`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "tableWithLinks", + content: `| Name | Link | +| ---- | ---- | +| Example | [Click](https://example.com) |`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "tableAlignment", + content: `| Left | Center | Right | +| :--- | :----: | ----: | +| L | C | R |`, + }, + executeTest: testParseMarkdown, + }, + // Task lists / check lists + { + testCase: { + name: "checkListBasic", + content: `- [ ] Unchecked item +- [x] Checked item +- [ ] Another unchecked`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "checkListMixed", + content: `- Regular bullet +- [ ] Check item +- [x] Checked item`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "checkListNested", + content: `- [ ] Parent item + - [x] Child checked + - [ ] Child unchecked`, + }, + executeTest: testParseMarkdown, + }, + // Ordered list with start number + { + testCase: { + name: "orderedListStart", + content: `3. Third item +4. Fourth item +5. Fifth item`, + }, + executeTest: testParseMarkdown, + }, + // Hard breaks + { + testCase: { + name: "hardBreakBackslash", + content: `Line one\\ +Line two`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "hardBreakMultiple", + content: `Line one\\ +Line two\\ +Line three`, + }, + executeTest: testParseMarkdown, + }, + // Backslash escapes + { + testCase: { + name: "backslashEscapes", + content: `\\*not bold\\* \\[not a link\\] \\~not strike\\~`, + }, + executeTest: testParseMarkdown, + }, + // Escaped delimiter inside emphasis + { + testCase: { + name: "escapedDelimiterInEmphasis", + content: `*\\**`, + }, + executeTest: testParseMarkdown, + }, + // Nested emphasis + { + testCase: { + name: "nestedEmphasis", + content: `***bold and italic***`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "nestedEmphasisComplex", + content: `**bold *bold and italic* bold**`, + }, + executeTest: testParseMarkdown, + }, + // Individual styles + { + testCase: { + name: "boldOnly", + content: `**Bold text**`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "italicOnly", + content: `*Italic text*`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "strikethroughOnly", + content: `~~Strikethrough text~~`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "boldUnderscore", + content: `__Bold with underscores__`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "italicUnderscore", + content: `_Italic with underscores_`, + }, + executeTest: testParseMarkdown, + }, + // Mixed inline content + { + testCase: { + name: "mixedInlineContent", + content: `Normal **bold** *italic* ~~strike~~ \`code\` [link](https://example.com)`, + }, + executeTest: testParseMarkdown, + }, + // Multiple paragraphs + { + testCase: { + name: "multipleParagraphs", + content: `First paragraph + +Second paragraph + +Third paragraph`, + }, + executeTest: testParseMarkdown, + }, + // Empty content + { + testCase: { + name: "emptyString", + content: ``, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "onlyWhitespace", + content: ` + + `, + }, + executeTest: testParseMarkdown, + }, + // Paragraph continuation (lines without blank line) + { + testCase: { + name: "paragraphContinuation", + content: `Line one +still same paragraph`, + }, + executeTest: testParseMarkdown, + }, + // Nested lists - complex + { + testCase: { + name: "nestedBulletLists", + content: `- Item 1 + - Nested 1 + - Deep nested + - Nested 2 +- Item 2`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "nestedOrderedLists", + content: `1. First + 1. Sub first + 2. Sub second +2. Second`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "mixedListTypes", + content: `- Bullet item + 1. Numbered child + 2. Another numbered +- Another bullet + - [ ] Check child`, + }, + executeTest: testParseMarkdown, + }, + // Blockquote with multiple blocks + { + testCase: { + name: "blockquoteMultiline", + content: `> Line one +> Line two +> Line three`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "blockquoteWithCode", + content: `> Quote with \`inline code\` inside`, + }, + executeTest: testParseMarkdown, + }, + { + testCase: { + name: "blockquoteWithLink", + content: `> Quote with [a link](https://example.com) inside`, + }, + executeTest: testParseMarkdown, + }, + // Blockquote with lazy continuation (no > on continuation lines) + { + testCase: { + name: "blockquoteLazyContinuation", + content: `> This is a quote +that continues here +and here too`, + }, + executeTest: testParseMarkdown, + }, + // Complex document + { + testCase: { + name: "complexDocument", + content: `# Main Title + +An introduction paragraph with **bold** and *italic* text. + +## Section 1 + +- First bullet point +- Second bullet point + - Nested point + +> A notable quote + +### Code Example + +\`\`\`javascript +function hello() { + return "world"; +} +\`\`\` + +--- + +## Section 2 + +1. Step one +2. Step two +3. Step three + +| Feature | Status | +| ------- | ------ | +| Bold | Done | +| Italic | Done | + +![Image](https://example.com/image.png) + +Final paragraph with [a link](https://example.com).`, + }, + executeTest: testParseMarkdown, + }, + // Image with alt text + { + testCase: { + name: "imageWithAlt", + content: `![Alt text for image](https://example.com/photo.jpg)`, + }, + executeTest: testParseMarkdown, + }, + // Multiple images + { + testCase: { + name: "multipleImages", + content: `![First](https://example.com/first.png) + +![Second](https://example.com/second.png)`, + }, + executeTest: testParseMarkdown, + }, + // Inline image within text (should be handled) + { + testCase: { + name: "inlineImage", + content: `Text before ![inline](https://example.com/img.png) text after`, + }, + executeTest: testParseMarkdown, + }, + // Code block immediately after heading + { + testCase: { + name: "headingThenCode", + content: `## Code Section + +\`\`\`python +x = 42 +\`\`\``, + }, + executeTest: testParseMarkdown, + }, + // List with styled items + { + testCase: { + name: "listWithStyledItems", + content: `- **Bold item** +- *Italic item* +- ~~Strikethrough item~~ +- Item with \`code\``, + }, + executeTest: testParseMarkdown, + }, + // Deeply nested lists + { + testCase: { + name: "deeplyNestedLists", + content: `- Level 1 + - Level 2 + - Level 3 + - Level 4`, + }, + executeTest: testParseMarkdown, + }, + // Table followed by paragraph + { + testCase: { + name: "tableFollowedByParagraph", + content: `| Col 1 | Col 2 | +| ----- | ----- | +| A | B | + +Paragraph after table`, + }, + executeTest: testParseMarkdown, + }, + // Paragraphs with various inline formatting + { + testCase: { + name: "adjacentFormattedRuns", + content: `**bold***italic*~~strike~~`, + }, + executeTest: testParseMarkdown, + }, + // Table without outer pipes (GFM allows optional outer pipes) + { + testCase: { + name: "tablePipeless", + content: `Col 1 | Col 2 +----- | ----- +A | B`, + }, + executeTest: testParseMarkdown, + }, + // Indented fenced code block (up to 3 leading spaces per CommonMark) + { + testCase: { + name: "codeBlockIndented", + content: ` \`\`\`ts +const x = 1; + \`\`\``, + }, + executeTest: testParseMarkdown, + }, + // Link with title (title should not appear in href) + { + testCase: { + name: "linkWithTitle", + content: `[example](https://example.com "Example Site")`, + }, + executeTest: testParseMarkdown, + }, + // Image with nested brackets in alt text + { + testCase: { + name: "imageNestedBracketsAlt", + content: `![alt [with] brackets](https://example.com/image.png)`, + }, + executeTest: testParseMarkdown, + }, + // Inline raw HTML tag inside a paragraph passes through verbatim + { + testCase: { + name: "inlineHtmlTag", + content: `Hello world!`, + }, + executeTest: testParseMarkdown, + }, + // Multiple inline HTML tags with attributes + { + testCase: { + name: "inlineHtmlWithAttributes", + content: `Text with bold and link.`, + }, + executeTest: testParseMarkdown, + }, + // A self-closing-style void HTML tag inside a paragraph + { + testCase: { + name: "inlineHtmlVoidTag", + content: `Line one
      line two.`, + }, + executeTest: testParseMarkdown, + }, + // Block-level raw HTML is emitted verbatim — not wrapped in

      + { + testCase: { + name: "blockHtmlDiv", + content: `

      +A warning block. +
      `, + }, + executeTest: testParseMarkdown, + }, + // Block-level HTML comment + { + testCase: { + name: "blockHtmlComment", + content: ` + +Next paragraph.`, + }, + executeTest: testParseMarkdown, + }, + // Bare angle brackets that don't form a valid tag must still be escaped + { + testCase: { + name: "bareAngleBrackets", + content: `1 < 2 and 3 > 0`, + }, + executeTest: testParseMarkdown, + }, + // Block HTML interrupting a paragraph above it + { + testCase: { + name: "blockHtmlInterruptsParagraph", + content: `Some text before. +
      raw block
      +Some text after.`, + }, + executeTest: testParseMarkdown, + }, + // Hard line break via two trailing spaces (CommonMark ex. 633) + { + testCase: { + name: "hardBreakTwoSpaces", + content: `Line one \nLine two`, + }, + executeTest: testParseMarkdown, + }, + // ATX heading: closing #'s and trailing whitespace are stripped (ex. 73) + { + testCase: { + name: "headingTrailingWhitespace", + content: `### foo ### `, + }, + executeTest: testParseMarkdown, + }, + // ATX heading: lots of internal padding still produces a clean heading (ex. 67) + { + testCase: { + name: "headingInternalPadding", + content: `# foo `, + }, + executeTest: testParseMarkdown, + }, + // Code span with internal newline collapses to space (CommonMark ex. 337) + { + testCase: { + name: "codeSpanWithNewline", + content: "`foo bar \nbaz`", + }, + executeTest: testParseMarkdown, + }, + // Image with title attribute (CommonMark ex. 572). The title is parsed + // even if the BlockNote image block doesn't surface it as a prop — + // the point is to not leak `"title"` into the alt or src. + { + testCase: { + name: "imageWithTitle", + content: `![alt text](https://example.com/image.png "An image title")`, + }, + executeTest: testParseMarkdown, + }, + // Angle-bracket-wrapped image URL — brackets are stripped (ex. 580) + { + testCase: { + name: "imageAngleBracketUrl", + content: `![alt]()`, + }, + executeTest: testParseMarkdown, + }, + // Paragraph lines with up to 3 leading spaces of indent are still a + // paragraph; the indent is stripped (CommonMark ex. 222) + { + testCase: { + name: "paragraphLeadingIndent", + content: ` aaa\n bbb`, + }, + executeTest: testParseMarkdown, + }, ]; diff --git a/tests/src/unit/shared/formatConversion/exportParseEquality/exportParseEqualityTestExecutors.ts b/tests/src/unit/shared/formatConversion/exportParseEquality/exportParseEqualityTestExecutors.ts index a42f7c7c4b..0606d7dd85 100644 --- a/tests/src/unit/shared/formatConversion/exportParseEquality/exportParseEqualityTestExecutors.ts +++ b/tests/src/unit/shared/formatConversion/exportParseEquality/exportParseEqualityTestExecutors.ts @@ -63,6 +63,34 @@ export const testExportParseEqualityHTML = async < ); }; +export const testExportParseEqualityMarkdown = async < + B extends BlockSchema, + I extends InlineContentSchema, + S extends StyleSchema, +>( + editor: BlockNoteEditor, + testCase: ExportParseEqualityTestCase, +) => { + (window as any).__TEST_OPTIONS.mockID = 0; + + addIdsToBlocks(testCase.content); + + const exported = await editor.blocksToMarkdownLossy(testCase.content); + + // Reset mock ID as we don't expect block IDs to be preserved in this + // conversion. + (window as any).__TEST_OPTIONS.mockID = 0; + + // Markdown is lossy (colors, underline, alignment are dropped), so we use + // snapshot matching to capture the expected round-trip result rather than + // strict equality with the input. + await expect( + await editor.tryParseMarkdownToBlocks(exported), + ).toMatchFileSnapshot( + `./__snapshots__/markdown/${testCase.name}.json`, + ); +}; + export const testExportParseEqualityNodes = async < B extends BlockSchema, I extends InlineContentSchema, From bca6680d839fae09f41b2afdd3c27024a0860974 Mon Sep 17 00:00:00 2001 From: Matthew Lipski <50169049+matthewlipski@users.noreply.github.com> Date: Wed, 6 May 2026 14:18:29 +0200 Subject: [PATCH 48/76] fix: Pasting plain text from VSCode (BLO-366) (#2713) --- .../src/api/clipboard/fromClipboard/handleVSCodePaste.ts | 8 ++------ .../src/api/clipboard/fromClipboard/pasteExtension.ts | 9 +++++++-- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/packages/core/src/api/clipboard/fromClipboard/handleVSCodePaste.ts b/packages/core/src/api/clipboard/fromClipboard/handleVSCodePaste.ts index b566dfdbe2..ffb298544f 100644 --- a/packages/core/src/api/clipboard/fromClipboard/handleVSCodePaste.ts +++ b/packages/core/src/api/clipboard/fromClipboard/handleVSCodePaste.ts @@ -1,9 +1,6 @@ import { EditorView } from "prosemirror-view"; -export async function handleVSCodePaste( - event: ClipboardEvent, - view: EditorView, -) { +export function handleVSCodePaste(event: ClipboardEvent, view: EditorView) { const { schema } = view.state; if (!event.clipboardData) { @@ -17,8 +14,7 @@ export async function handleVSCodePaste( } if (!schema.nodes.codeBlock) { - view.pasteText(text); - return true; + return false; } const vscode = event.clipboardData!.getData("vscode-editor-data"); diff --git a/packages/core/src/api/clipboard/fromClipboard/pasteExtension.ts b/packages/core/src/api/clipboard/fromClipboard/pasteExtension.ts index 415b3cb7be..9fa4ed3c55 100644 --- a/packages/core/src/api/clipboard/fromClipboard/pasteExtension.ts +++ b/packages/core/src/api/clipboard/fromClipboard/pasteExtension.ts @@ -57,8 +57,13 @@ function defaultPasteHandler({ } if (format === "vscode-editor-data") { - handleVSCodePaste(event, editor.prosemirrorView); - return true; + // If VSCode clipboard data cannot be parsed as a code block, try parsing + // `text/plain` as a fallback. + if (handleVSCodePaste(event, editor.prosemirrorView)) { + return true; + } + + format = "text/plain"; } if (format === "Files") { From 5edef6abb1c77a6c7b8e68fdef37750193f2c848 Mon Sep 17 00:00:00 2001 From: Matthew Lipski <50169049+matthewlipski@users.noreply.github.com> Date: Wed, 6 May 2026 14:24:43 +0200 Subject: [PATCH 49/76] fix(drag-n-drop): support PDF block drag & drop (BLO-893) (#2714) --- .../core/src/extensions/SideMenu/dragging.ts | 17 ++-- .../src/end-to-end/dragdrop/dragdrop.test.ts | 26 +++++- .../dragPdf-chromium-linux.json | 87 +++++++++++++++++++ .../dragPdf-webkit-linux.json | 87 +++++++++++++++++++ tests/src/utils/const.ts | 5 ++ 5 files changed, 208 insertions(+), 14 deletions(-) create mode 100644 tests/src/end-to-end/dragdrop/dragdrop.test.ts-snapshots/dragPdf-chromium-linux.json create mode 100644 tests/src/end-to-end/dragdrop/dragdrop.test.ts-snapshots/dragPdf-webkit-linux.json diff --git a/packages/core/src/extensions/SideMenu/dragging.ts b/packages/core/src/extensions/SideMenu/dragging.ts index 54dc3eeae2..f8ba326538 100644 --- a/packages/core/src/extensions/SideMenu/dragging.ts +++ b/packages/core/src/extensions/SideMenu/dragging.ts @@ -101,16 +101,13 @@ function setDragImage(view: EditorView, from: number, to = from) { // Browsers may have CORS policies which prevents iframes from being // manipulated, so better to stay on the safe side and remove them from the - // drag preview. The drag preview doesn't work with iframes anyway. - const iframes = dragImageElement.getElementsByTagName("iframe"); - for (let i = 0; i < iframes.length; i++) { - const iframe = iframes[i]; - const parent = iframe.parentElement; - - if (parent) { - parent.removeChild(iframe); - } - } + // drag preview. The drag preview doesn't work with embedded documents + // (iframe/embed/object) anyway, and including an (e.g. a PDF) + // can prevent the drag from initiating at all. + const embeddedDocs = dragImageElement.querySelectorAll( + "iframe, embed, object", + ); + embeddedDocs.forEach((el) => el.parentElement?.removeChild(el)); // TODO: This is hacky, need a better way of assigning classes to the editor so that they can also be applied to the // drag preview. diff --git a/tests/src/end-to-end/dragdrop/dragdrop.test.ts b/tests/src/end-to-end/dragdrop/dragdrop.test.ts index 45a3e4a3db..5303af7118 100644 --- a/tests/src/end-to-end/dragdrop/dragdrop.test.ts +++ b/tests/src/end-to-end/dragdrop/dragdrop.test.ts @@ -7,6 +7,8 @@ import { H_TWO_BLOCK_SELECTOR, IMAGE_SELECTOR, PARAGRAPH_SELECTOR, + PDF_FILE_BLOCK_URL, + PDF_SELECTOR, } from "../../utils/const.js"; import { insertHeading, insertParagraph } from "../../utils/copypaste.js"; import { compareDocToSnapshot, focusOnEditor } from "../../utils/editor.js"; @@ -15,10 +17,6 @@ import { executeSlashCommand } from "../../utils/slashmenu.js"; test.describe.configure({ mode: "serial" }); -test.beforeEach(async ({ page }) => { - await page.goto(BASE_URL, { waitUntil: "networkidle" }); -}); - test.describe("Check Block Dragging Functionality", () => { test("Should be able to drag & drop non-nested blocks", async ({ page, @@ -28,6 +26,7 @@ test.describe("Check Block Dragging Functionality", () => { browserName === "firefox", "Playwright doesn't correctly simulate drag events in Firefox.", ); + await page.goto(BASE_URL, { waitUntil: "networkidle" }); await focusOnEditor(page); await insertHeading(page, 1); @@ -52,6 +51,7 @@ test.describe("Check Block Dragging Functionality", () => { browserName === "firefox", "Playwright doesn't correctly simulate drag events in Firefox.", ); + await page.goto(BASE_URL, { waitUntil: "networkidle" }); await focusOnEditor(page); await insertHeading(page, 1); @@ -89,6 +89,7 @@ test.describe("Check Block Dragging Functionality", () => { browserName === "firefox", "Playwright doesn't correctly simulate drag events in Firefox.", ); + await page.goto(BASE_URL, { waitUntil: "networkidle" }); await focusOnEditor(page); await executeSlashCommand(page, "image"); @@ -110,6 +111,7 @@ test.describe("Check Block Dragging Functionality", () => { browserName === "firefox", "Playwright doesn't correctly simulate drag events in Firefox.", ); + await page.goto(BASE_URL, { waitUntil: "networkidle" }); await focusOnEditor(page); await executeSlashCommand(page, "image"); await insertHeading(page, 1); @@ -121,4 +123,20 @@ test.describe("Check Block Dragging Functionality", () => { const toolbar = page.locator(".bn-formatting-toolbar"); await expect(toolbar).not.toBeVisible(); }); + + test("Should be able to drag PDF block", async ({ page, browserName }) => { + test.skip( + browserName === "firefox", + "Playwright doesn't correctly simulate drag events in Firefox.", + ); + await page.goto(PDF_FILE_BLOCK_URL, { waitUntil: "networkidle" }); + await focusOnEditor(page); + await page.waitForSelector(PDF_SELECTOR); + + const dragTarget = page.locator(PDF_SELECTOR); + const dropTarget = page.locator(PARAGRAPH_SELECTOR).first(); + await dragAndDropBlock(page, dragTarget, dropTarget, false); + + await compareDocToSnapshot(page, "dragPdf"); + }); }); diff --git a/tests/src/end-to-end/dragdrop/dragdrop.test.ts-snapshots/dragPdf-chromium-linux.json b/tests/src/end-to-end/dragdrop/dragdrop.test.ts-snapshots/dragPdf-chromium-linux.json new file mode 100644 index 0000000000..438581c950 --- /dev/null +++ b/tests/src/end-to-end/dragdrop/dragdrop.test.ts-snapshots/dragPdf-chromium-linux.json @@ -0,0 +1,87 @@ +{ + "type": "doc", + "content": [ + { + "type": "blockGroup", + "content": [ + { + "type": "blockContainer", + "attrs": { + "id": "0" + }, + "content": [ + { + "type": "paragraph", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left" + }, + "content": [ + { + "type": "text", + "text": "Welcome to this demo!" + } + ] + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "1" + }, + "content": [ + { + "type": "pdf", + "attrs": { + "name": "", + "url": "https://pdfobject.com/pdf/sample.pdf", + "caption": "", + "showPreview": true + } + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "2" + }, + "content": [ + { + "type": "paragraph", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left" + }, + "content": [ + { + "type": "text", + "text": "Press the '/' key to open the Slash Menu and add another PDF" + } + ] + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "3" + }, + "content": [ + { + "type": "paragraph", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/src/end-to-end/dragdrop/dragdrop.test.ts-snapshots/dragPdf-webkit-linux.json b/tests/src/end-to-end/dragdrop/dragdrop.test.ts-snapshots/dragPdf-webkit-linux.json new file mode 100644 index 0000000000..438581c950 --- /dev/null +++ b/tests/src/end-to-end/dragdrop/dragdrop.test.ts-snapshots/dragPdf-webkit-linux.json @@ -0,0 +1,87 @@ +{ + "type": "doc", + "content": [ + { + "type": "blockGroup", + "content": [ + { + "type": "blockContainer", + "attrs": { + "id": "0" + }, + "content": [ + { + "type": "paragraph", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left" + }, + "content": [ + { + "type": "text", + "text": "Welcome to this demo!" + } + ] + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "1" + }, + "content": [ + { + "type": "pdf", + "attrs": { + "name": "", + "url": "https://pdfobject.com/pdf/sample.pdf", + "caption": "", + "showPreview": true + } + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "2" + }, + "content": [ + { + "type": "paragraph", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left" + }, + "content": [ + { + "type": "text", + "text": "Press the '/' key to open the Slash Menu and add another PDF" + } + ] + } + ] + }, + { + "type": "blockContainer", + "attrs": { + "id": "3" + }, + "content": [ + { + "type": "paragraph", + "attrs": { + "backgroundColor": "default", + "textColor": "default", + "textAlignment": "left" + } + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/tests/src/utils/const.ts b/tests/src/utils/const.ts index 7431d2db2a..40716ca2c5 100644 --- a/tests/src/utils/const.ts +++ b/tests/src/utils/const.ts @@ -47,6 +47,10 @@ export const NON_EDITABLE_BLOCK_URL = !process.env.RUN_IN_DOCKER ? `http://localhost:${PORT}/custom-schema/non-editable-block?hideMenu` : `http://host.docker.internal:${PORT}/custom-schema/non-editable-block?hideMenu`; +export const PDF_FILE_BLOCK_URL = !process.env.RUN_IN_DOCKER + ? `http://localhost:${PORT}/custom-schema/pdf-file-block?hideMenu` + : `http://host.docker.internal:${PORT}/custom-schema/pdf-file-block?hideMenu`; + export const COMMENTS_URL = !process.env.RUN_IN_DOCKER ? `http://localhost:${PORT}/collaboration/comments-testing?hideMenu` : `http://host.docker.internal:${PORT}/collaboration/comments-testing?hideMenu`; @@ -64,6 +68,7 @@ export const NUMBERED_LIST_SELECTOR = `[data-content-type="numberedListItem"]`; export const BULLET_LIST_SELECTOR = `[data-content-type="bulletListItem"]`; export const PARAGRAPH_SELECTOR = `[data-content-type="paragraph"]`; export const IMAGE_SELECTOR = `[data-content-type="image"]`; +export const PDF_SELECTOR = `[data-content-type="pdf"]`; export const TABLE_SELECTOR = `[data-content-type="table"]`; export const DRAG_HANDLE_SELECTOR = `[data-test="dragHandle"]`; From 677fbbfba63336f9405021f132963411f47529c3 Mon Sep 17 00:00:00 2001 From: Matthew Lipski <50169049+matthewlipski@users.noreply.github.com> Date: Wed, 6 May 2026 14:26:12 +0200 Subject: [PATCH 50/76] docs: refactor custom components in examples (BLO-869) (#2705) --- .../02-formatting-toolbar-buttons/src/App.tsx | 89 ++++------- .../src/App.tsx | 45 +++--- .../04-side-menu-buttons/src/App.tsx | 19 +-- .../src/App.tsx | 11 +- .../11-uppy-file-panel/src/App.tsx | 27 ++-- .../16-link-toolbar-buttons/src/App.tsx | 41 ++--- .../03-font-style/src/App.tsx | 80 ++++------ .../05-alert-block-full-ux/src/App.tsx | 45 +++--- examples/09-ai/01-minimal/src/App.tsx | 70 ++++----- examples/09-ai/02-playground/src/App.tsx | 61 +++----- .../09-ai/03-custom-ai-menu-items/src/App.tsx | 147 ++++++++---------- .../09-ai/04-with-collaboration/src/App.tsx | 65 +++----- .../06-client-side-transport/src/App.tsx | 65 +++----- .../09-ai/07-server-persistence/src/App.tsx | 65 +++----- 14 files changed, 361 insertions(+), 469 deletions(-) diff --git a/examples/03-ui-components/02-formatting-toolbar-buttons/src/App.tsx b/examples/03-ui-components/02-formatting-toolbar-buttons/src/App.tsx index b5a5abb6bc..900f1c6080 100644 --- a/examples/03-ui-components/02-formatting-toolbar-buttons/src/App.tsx +++ b/examples/03-ui-components/02-formatting-toolbar-buttons/src/App.tsx @@ -18,6 +18,39 @@ import { import { BlueButton } from "./BlueButton"; +const CustomFormattingToolbar = () => ( + + + + {/* Extra button to toggle blue text & background */} + + + + + + + + + + {/* Extra button to toggle code styles */} + + + + + + + + + + + + + +); + export default function App() { // Creates a new editor instance. const editor = useCreateBlockNote({ @@ -80,61 +113,7 @@ export default function App() { // Renders the editor instance. return ( - ( - - - - {/* Extra button to toggle blue text & background */} - - - - - - - - - - {/* Extra button to toggle code styles */} - - - - - - - - - - - - - - )} - /> + ); } diff --git a/examples/03-ui-components/03-formatting-toolbar-block-type-items/src/App.tsx b/examples/03-ui-components/03-formatting-toolbar-block-type-items/src/App.tsx index 2ee1da2771..54f6f43d3f 100644 --- a/examples/03-ui-components/03-formatting-toolbar-block-type-items/src/App.tsx +++ b/examples/03-ui-components/03-formatting-toolbar-block-type-items/src/App.tsx @@ -5,6 +5,7 @@ import "@blocknote/mantine/style.css"; import { FormattingToolbarController, blockTypeSelectItems, + useBlockNoteEditor, useCreateBlockNote, BlockTypeSelectItem, FormattingToolbar, @@ -24,6 +25,31 @@ const schema = BlockNoteSchema.create({ }, }); +const CustomFormattingToolbar = () => { + const editor = useBlockNoteEditor< + typeof schema.blockSchema, + typeof schema.inlineContentSchema, + typeof schema.styleSchema + >(); + + return ( + // Uses the default Formatting Toolbar. + + ); +}; + export default function App() { // Creates a new editor instance. const editor = useCreateBlockNote({ @@ -53,24 +79,7 @@ export default function App() { return ( {/* Replaces the default Formatting Toolbar */} - ( - // Uses the default Formatting Toolbar. - - )} - /> + ); } diff --git a/examples/03-ui-components/04-side-menu-buttons/src/App.tsx b/examples/03-ui-components/04-side-menu-buttons/src/App.tsx index 96ef099ef3..29e82e9f2f 100644 --- a/examples/03-ui-components/04-side-menu-buttons/src/App.tsx +++ b/examples/03-ui-components/04-side-menu-buttons/src/App.tsx @@ -5,11 +5,20 @@ import { DragHandleButton, SideMenu, SideMenuController, + SideMenuProps, useCreateBlockNote, } from "@blocknote/react"; import { RemoveBlockButton } from "./RemoveBlockButton"; +const CustomSideMenu = (props: SideMenuProps) => ( + + {/* Button which removes the hovered block. */} + + + +); + export default function App() { // Creates a new editor instance. const editor = useCreateBlockNote({ @@ -35,15 +44,7 @@ export default function App() { // Renders the editor instance. return ( - ( - - {/* Button which removes the hovered block. */} - - - - )} - /> + ); } diff --git a/examples/03-ui-components/05-side-menu-drag-handle-items/src/App.tsx b/examples/03-ui-components/05-side-menu-drag-handle-items/src/App.tsx index 0ff3a07174..f734898e1a 100644 --- a/examples/03-ui-components/05-side-menu-drag-handle-items/src/App.tsx +++ b/examples/03-ui-components/05-side-menu-drag-handle-items/src/App.tsx @@ -7,6 +7,7 @@ import { RemoveBlockItem, SideMenu, SideMenuController, + SideMenuProps, useCreateBlockNote, } from "@blocknote/react"; @@ -24,6 +25,10 @@ const CustomDragHandleMenu = () => ( ); +const CustomSideMenu = (props: SideMenuProps) => ( + +); + export default function App() { // Creates a new editor instance. const editor = useCreateBlockNote({ @@ -50,11 +55,7 @@ export default function App() { // Renders the editor instance. return ( - ( - - )} - /> + ); } diff --git a/examples/03-ui-components/11-uppy-file-panel/src/App.tsx b/examples/03-ui-components/11-uppy-file-panel/src/App.tsx index 8f4ed37a5b..aa66eedd49 100644 --- a/examples/03-ui-components/11-uppy-file-panel/src/App.tsx +++ b/examples/03-ui-components/11-uppy-file-panel/src/App.tsx @@ -5,6 +5,7 @@ import { FilePanelController, FormattingToolbar, FormattingToolbarController, + FormattingToolbarProps, getFormattingToolbarItems, useCreateBlockNote, } from "@blocknote/react"; @@ -12,6 +13,18 @@ import { import { FileReplaceButton } from "./FileReplaceButton"; import { uploadFile, UppyFilePanel } from "./UppyFilePanel"; +const CustomFormattingToolbar = (props: FormattingToolbarProps) => { + // Replaces default file replace button with one that opens Uppy. + const items = getFormattingToolbarItems(); + items.splice( + items.findIndex((c) => c.key === "replaceFileButton"), + 1, + , + ); + + return {items}; +}; + export default function App() { // Creates a new editor instance. const editor = useCreateBlockNote({ @@ -37,19 +50,7 @@ export default function App() { // Renders the editor instance using a React component. return ( - { - // Replaces default file replace button with one that opens Uppy. - const items = getFormattingToolbarItems(); - items.splice( - items.findIndex((c) => c.key === "replaceFileButton"), - 1, - , - ); - - return {items}; - }} - /> + {/* Replaces default file panel with Uppy one. */} diff --git a/examples/03-ui-components/16-link-toolbar-buttons/src/App.tsx b/examples/03-ui-components/16-link-toolbar-buttons/src/App.tsx index 1714e18a0d..4b44b399d9 100644 --- a/examples/03-ui-components/16-link-toolbar-buttons/src/App.tsx +++ b/examples/03-ui-components/16-link-toolbar-buttons/src/App.tsx @@ -6,12 +6,32 @@ import { EditLinkButton, LinkToolbar, LinkToolbarController, + LinkToolbarProps, OpenLinkButton, useCreateBlockNote, } from "@blocknote/react"; import { AlertButton } from "./AlertButton"; +const CustomLinkToolbar = (props: LinkToolbarProps) => ( + + + + + {/* Extra button to open alert. */} + + +); + export default function App() { // Creates a new editor instance. const editor = useCreateBlockNote({ @@ -49,26 +69,7 @@ export default function App() { // Renders the editor instance. return ( - ( - - - - - {/* Extra button to open alert. */} - - - )} - /> + ); } diff --git a/examples/06-custom-schema/03-font-style/src/App.tsx b/examples/06-custom-schema/03-font-style/src/App.tsx index 4cae9935b1..25667f9d70 100644 --- a/examples/06-custom-schema/03-font-style/src/App.tsx +++ b/examples/06-custom-schema/03-font-style/src/App.tsx @@ -60,6 +60,36 @@ const SetFontStyleButton = () => { ); }; +const CustomFormattingToolbar = () => ( + + + + + + + + + + + {/* Adds SetFontStyleButton */} + + + + + + + + + + + + + +); + export default function App() { // Creates a new editor instance. const editor = useCreateBlockNote({ @@ -100,55 +130,7 @@ export default function App() { return ( {/* Replaces the default Formatting Toolbar. */} - ( - - - - - - - - - - - {/* Adds SetFontStyleButton */} - - - - - - - - - - - - - - )} - /> + ); } diff --git a/examples/06-custom-schema/05-alert-block-full-ux/src/App.tsx b/examples/06-custom-schema/05-alert-block-full-ux/src/App.tsx index 625dcce896..09393854b6 100644 --- a/examples/06-custom-schema/05-alert-block-full-ux/src/App.tsx +++ b/examples/06-custom-schema/05-alert-block-full-ux/src/App.tsx @@ -13,6 +13,7 @@ import { SuggestionMenuController, blockTypeSelectItems, getDefaultReactSlashMenuItems, + useBlockNoteEditor, useCreateBlockNote, } from "@blocknote/react"; @@ -28,6 +29,31 @@ const schema = BlockNoteSchema.create().extend({ }, }); +const CustomFormattingToolbar = () => { + const editor = useBlockNoteEditor< + typeof schema.blockSchema, + typeof schema.inlineContentSchema, + typeof schema.styleSchema + >(); + + return ( + // Uses the default Formatting Toolbar. + + ); +}; + // Slash menu item to insert an Alert block const insertAlert = (editor: typeof schema.BlockNoteEditor) => ({ title: "Alert", @@ -85,24 +111,7 @@ export default function App() { return ( {/* Replaces the default Formatting Toolbar */} - ( - // Uses the default Formatting Toolbar. - - )} - /> + {/* Replaces the default Slash Menu. */} ( + + {...getFormattingToolbarItems()} + {/* Add the AI button */} + + +); + +// Slash menu items with the AI option added +const getSlashMenuItemsWithAI = (editor: BlockNoteEditor) => [ + ...getDefaultReactSlashMenuItems(editor), + // add the default AI slash menu items, or define your own + ...getAISlashMenuItems(editor), +]; + export default function App() { // Creates a new editor instance. const editor = useCreateBlockNote({ @@ -84,54 +99,23 @@ export default function App() { {/* Add the AI Command menu to the editor */} - {/* We disabled the default formatting toolbar with `formattingToolbar=false` - and replace it for one with an "AI button" (defined below). + {/* We disabled the default formatting toolbar with `formattingToolbar=false` + and replace it for one with an "AI button" (defined below). (See "Formatting Toolbar" in docs) */} - + - {/* We disabled the default SlashMenu with `slashMenu=false` - and replace it for one with an AI option (defined below). + {/* We disabled the default SlashMenu with `slashMenu=false` + and replace it for one with an AI option (defined below). (See "Suggestion Menus" in docs) */} - + + filterSuggestionItems(getSlashMenuItemsWithAI(editor), query) + } + />

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 z z%-DZIxFxUSbkk>$*uo(g^buxmncFMNxd6%a=Jaw|pA@8Z?dZLZOlsGT2>kaDXz$gt zncoN|&(E5?2G#K6L!^9aG+*!GmsbU@sZjY&i?qlcRgAytJ{`NEkj!=HC0cI5oZ<(<>Gb<$SYtltOvcrqPJgYMKxzeT5o1y^>;9evb+ zU7H_3v&JfFHqAPq1$Gvv+1Bf}kLnU2XQ$C-tAKxz!)UR%#hUd_DO&S~0*n~~n>J=b zsUsW5zW~u($7o0anS}+s0DJ7~Q_WzNWx=j&8W>55h#uZ6wcQHHP+gXfpXouPbw%jq}tjT*S2g7zd z4^n=H0dDCursFzcpA^G#a}>+w3i3YMBcihIZG)VXJ6>kicA*_@FdKuHQXS-7(jNc~ zUP=y^!p|J;rkyXhdH}EBra_ELDjqTL^S0W<fD?c@Y1q{xwXIl`(l+WfapMRsvpqxZ?8~tDj-(7C4`? z9Ow1Oxt_FEMKoIn&yD|KvjXU*e3u=4_c!Dzw~!{L*mn4mnJ8Fmny$Jax>^qKmb|4WHxGtvnB-q8CoAVd-9QX`G;nXC;~ zUo!;`pfL2e2W5^69wTvd^w277NW_9DM4$ze?uKO8qcCO7`<35m138?IgW3!|B~x3Y zY_{^Y{^&;S4a`RF6kN?<#{=6bB9prZ{AW*MVlz0Rej?Fd{C@EQr6Y;-WK)S;OSg@x zi%o?N?0zv24)#Jr=T_UnIErQlt{E@SFfv)V<npxqKV3*=r2w1dzEI0%H45K=-&2_dBy`ym2~6itMa5l%)p8R2AvlMzlv zG=Z=JL=zBAKr{i-1Vj^7MVb&zcsZKz_UWbq40}D;#mRxU62(KS_j0R;Rt!aZ39%a4 z3$hm^N+3}Ji4sVZK%xW^C6FeA(gIOdP{n+>YIJ$oLkm8(K z+_P9L)*PjM@<&-L`f~ccfBlaC`LVd0@V{v`M-_Lo;!9SvPI_=J4 ztzs$3?>crN>BUt=?$);Q*Wxu#@thH(TK}?q>yvx#k*i`}+&eYrBun#`n>+oQ_`Zq z3C?op9oTWL<)(DCv$K+Q?>)U9{>Sn0@j|#7&dW{yZL!_IzhSZNO)X|k`}eo2{`${1 z|5*cU)c@>*|EvLm!vC=kf()hbhc}!mD=S4@rzVa+JFR3^n=CNYRma6EdEVV+axA~E zkdH4;E2YRTPbDtJw7OtobfBdxt;vU1%1-`Wz?KNd;clxRiG>Q`vd+(V=P_}|O>`sc z7Z%Ip?l$8?6F-dQJjG0_oW2&;rJD0-=sFmNxQw;mymjm2n|9f3yYBkszS8~s4u(mO z8iX&GJb%V(rHrJceRsY4TTTpn;~$cVm)SLZ>u1vc^{rJ;_VCINNqQ5_Tn6v&h};Ye ztbP&o9M0idvSi7ekUyATcROhF>nggZ z?dDop6aDXMe9G?mNOn9)A8GcK>&vLKc)o?+<6^k$>p9}`&+WR7UJnqvefzdmdt~6F zW8C9|39h{P`T28hc(}V8hdFH6aPZFIo{S?A3i*T8dQGhBt887T2Etp~ABV>e*T4Ad zSA&WtN9Npk(*7hq-lr|xRd%XBFt@@n)wnc_-f{cRP0UqsYbTk_z*DW+ZrQjZA!qDt zs)6W}syJ=F4>p!Lqef;m&mtS!^z0jK2gBZ`It+Y^bTX(HOvtj{d1Ze`LTc*v$Y;mo z^K43GxB_+TG?Ps}Zg?HF%2vwm$G-M(5ycf&^50&IuC~k`R6iIZAri1z)34lV;9K#w zkblvKyO|wf{l;Q-nCE*e5hxWpk^bi;rIDvwv{U6ZH8uAqrKF@BQCDAD$ZLP%s_L}6 zM>RE<-`b$;QMl4^bKMc<;?Jz1+~jt#F2~uiC@HFO#T)**6jKeY0W90{{lA<(s-vTm zH8s{LV%3~?JlDlJwT1b$50{zUHE4G)VeiyNY|}R<7s~$luxFmKY0lH9f9_FoJBaPz zPWz*;*;Cj^ic&g@rF`R;RV>zFOBu(ZgAPM?41C_=*J7Q=hsv<4kEdDa>>t4MS$^oZ zhtZE7ZI~J3vr}_G&mdIEb9Bc;atV zD$(L~raE5d>Y`~;8wCYDX)|_bb_%u1(eJaSR!`rF)ZAE`Y_cdq(HGBHBd7m%vc=C~DC4VJIG?Q31*gFnJ@fRP^73>fTdv7XoI2lKKk61{*_h=}?=s$17I`4>_d~x= ztewpzx))8(cUEn28A=MzPc^TT z?a#={%1XzkZFTp* z&puFne8}p(NMYXRmzN?83VmvP#-cvn-*YX!H9%Xx=9!@gqQmh-{k>VkjgDo}YB3uH z1g@8tmv7v%#T(aYrg%jq5&`4R4jZF-`zGfjM~>X=l3?y~oj+}X8>#AXTKVn^*6QcE zFR1Z(#V$*;Z2Df8W|?ZhVi)S+prwy~3r^yt^kG6+QJ|1Wc{gmap+)KIz4-ozv#C+>#e_aVc6^St*pBNHS6` zO3J=C=&?veTI7-m^HVHV(4%@fzbw}07qHc*_I+_S?pccNY1s<-K=ZOaUNg1tK&XSGuCd6u&}VTjgCj-v5LydeEiiKadGkf z{{CmY{31i$4V^YsEcz*a{>Ms_EBmepJFU(cN=exJ_)zG-pU;Lo*Y&^QzK>^Lw9P_9 zq(dyI9_x;!6yLOI(}T=R$slpdl?eY{&CSiDPLVQnGh5dL?_t)_U-)I6jKBIX(DpVMqy!J{F0)YTIG~+Fy3_U-n~{M zU#==fXKih*yZf7W?>vQcGJmkMY;h*=qyxV9v=%%? z+B=?g!76K@L@Lp`wdi=t*~+O>b9svVw13NREwnH31QaL=p1R)vRWrc;f|w{Yk?O_If{in&b>L*T{|x3hQP`=(J>M9rV=EG zi1h5)v)u9HO*zgj6{;%Uw+=}PczAkl3rbs^-TP{`h(rI^i=}gxZ(Y}&-s0nB6crV9 z{kEV+0UgmhNO`fEN#ESQoi#O$$jXu~diRdqZ9qHV=32!9I;DEKE;9_5KYjLW>$lQy zzJ%-{t%Jeaw_vBqT0KHEt%}tgxEbCe>pYhC;rE_-%9N*@QwlGft z)khP`0we6&Oj}d4hD@;lWiPt^VanM#UbQNk)6wQr<2*4}Q`lq2&< zC440%BD}o9vXLQ=rWniUhdJ+(d7-d=3xK&$W45iCt_0m@JVd!`%f9~0)>5B z-vt)#nJ2UO*WdqepDmQW>i2mooel@^%e@7DYEH|YG?(tnTO<&U4ZmQX+{C$wvFcnO zg!OeLxQR1m5BC19s;~kdDq{5h&i9XxRTN5@Ao}@p1PeJ>`F&%yqXA`!cY0G>4UC1f zk~hZZjCC-f`qgY;^x66^|DMi->+fX|i^g{x$gi`^<+ZQ3QY^?3kBNzC`ErfV2M;1YEoU%JqW{g> zkFrTXA|e-mewP?{zipn!Q94RZq=F^e|nA2MWQ=ry!%s< zvC5^8re)jBYZo_-me}i0jP!XQ#SgT9d|YT4sI%1O+k2CWY^B3$YDFtk#xsy)~!Cj3bXVV^c}pD>X1NF*#vdsaA$atFVt)AJ&VP z`zh@PxkafyE`~P%=~(q`z<%+xX;UL6LXE?nx9hr$wwe{bxr2qukMNbP{q6|RvmB7UgI_iNs|#Xg08sB=Vo0dJU++AG1TYWVUeDjiKc-7k|2cJS4Rx)4pfrHD0^p zix)4>>uz|CH|I^%&-WN<;bSig-fq5sbb>$Z!kQ91!teDNHnp0!^uN8oYr;jzpNmpT zghqmH8P-?g>y177rC~COHf<#Y5GICQ+4h7w1j2I>n(xRs+J#sb37E9L_ec8j^55&} z>Dlthz}FiUYT^BBE4dM(uhWtSTjnh9$r?DMWemu>1JQB;^2UBCkK0?25_-v$Wh`Q@z+j2cPjRH;+nCa?YFu%x;{pjf2157&_7Y8$j7TUUR(Vj zIr*o-Y@a>X=6W9x&KA{mXuW-*_vH+OmICj=MpbQX9^u>xYp3=Ddi!^n`Vs0%DwPfH zcLES-j*f}3uEn%DNHCil=ip`KbIK)k+c^0u63I`W%hfN0)P@PaSnC| zWp$ur1)%Q-RMuoU4A2HdxKTiWcpoe-yg?;wg_xL_Nsku5_N~pVc-(et&6n5L3cbY} zmu=BX9?3Hv=~jW8WiMknRqe=mED86e|OS^#2z83@NhU$&m>C7jDyz96Poch`_79z8<;N3t#4y zM;XSX(B4O;0R0I>uu`iDi*8GD+!fqQE?qp&9)cP ze73H0`imVl-{j5B&9mD;Z>*3TeXG(D>iYG~%|z^w3xGo%+1u7MBf3jIndOF+uo|q? zDAY6#9lV(+JnpFT%3-nsYPZb0r>|A>#gJuIk#J~j0yIi`8eh3 zXV*}hk{u!z_36K6whK02vi?A!F{RhtM2DAaQ}>P%0~MEB;1xC{L?T*eLH$ z!ZSK#B4h%H=~sRNCCmz&_aXwt-&$Mqt8=FY&!Dc%Hr7CVDK9w~gtWHb1~EW6BkMwU zM%$wa?xsuajv2tqeSGXbJ}d0<>Q03ZSnMf!`}R60 zp5e7}serAYz_1`BOcnbQfd|sAyfL&xFe=TWA!w-k(dP%ALLM!?azK^t>NsVd)7(3_{x2xzD+jprp?tq zmizVp2$ON#>bLsV(Jd@>HMM+S(1Dk}Elql~Ayk9cmrqVsJ@)v`m!cDETU%QNipBDq z=5=&>Z7bO~Zu@xwpZ{N|WW&qNq7y`zT;cX>ByCg8DnyR&SaF4tjX{#d# z9PWx+>Yl)n6frFF|CC{4{JSdRm4E*aTtAZn^d>tr60KSa{&>{P*2=Ipqzqgq@(h>4 zb~%pP^p6!1e@52O^8n+ezzJV36#HhKWU<~noA&GP@)j0GQ%xb~EuKe%ve|d_U`KU= zp4I?Pg^0_<$Vj`2EB9JOA1?~o7l(c<$68+BGk3?jJpyvh$R!W3a|N0#)RC!(X_W>9 z7rD^;d6~qylRvxa#8G4iRdxOCbPt7{uJd5!g`Z`L!KV|`62V;<|A;-WE2V?q#Og19 z$FLGCzDNJH7+#^3*pm3~;uThT3;s={X|-W9=Ald&Zn{bbvyji#X@zaY5vutV5K5@D zpEYaN)&=ADfPDBKhuUd@{@u})L^bOL5JQt@c-0eNN zY!|b-)GetN4ct_7DF<(7IE62-t|XqVj5aGYU5HQ_n3yzI=H~~mP^MmD-F?VhbHH2u zw=dOCzC%e*MOHU5fLE9{ZV&Lo8xMD?I37gOcdYIThp#v3!#8f)|u|CI+PgwdMhG1S(GB<>7S3%%r1fzXekzN z@}e3DXrTUU;D+2Z<{|c)Fz7+l1Z-1ZLywC%sE0*>2Hu&^u?@n2$}jZ4{wzOWfVBoKRQ1FWyh2Mpm!21wo|DL$H3~i}n5vQ}E-V1I*nv!B z#+H<7T~9>EydO15NxU5JwQm_)N*YD`*Fo$+i_G>%u||~Fu~VdTrUnxVNBUZLCKO(+ zJA*(_?=(=XnY-Ky$zB9(PCCkb1EilL8XAF>(ldyUdUPn1o6Z=)h+|U>H^w^pfS&le zSK#@Y1GFu!|NZyhW{THAGvuugJhAW=zlz0A?U}(retv#LV$xnm`4TQCH#OPBmT?*T z7_NY_C$+^XcCY8s{M#D3%Mr3X5v`4-<}yL&#z~5UJN5tI*}fSyO%4%ZsS)z>dD+8_ zJg65ne$=K2)*X4)fqKEqu{(nwR6$VJ#sv!)hG&j={e08v_+mT%+-(RN=|i=qJd-JJ znRkBiQi+P??{?hDNIOiTjn_8m}>i8-@p56gkC>pATt%v{}v^Nf-(;|g{G zk##uW{KUiIxF({yzA)aEX3$<9nTTu)uH5{?AHFg}$DP>YO_m>cl|G`RS_V4c4?bCk zfeIVYw2T)(IzD@-mWa*D7!5_>?#~-q43HJmil)P)$DFpPz zW1YNr#l_yG(0{C6&E%IK?rw-c2+}pupULxr|GpjeYxR6%Ji`LAf%(~}@>x#%+Dbx6!W1aAL_)h{G7__Ni&h@!9+37aas?KsWWm`7e>oPuxw83- z+q7S|KFf`b-MqGqxh$6QEe#ePf$||hRkQkZk)aZdw+LZr%W(XJm7&zmkRw?OKrTQIWk-9wPZrXJNjPVt zi0UvQ^Hvf{h4im}2aX2mp!N>A*b!yYC5+9D>w(%CKWqjDp}e-CVzT#|oEHexYDWuP zn+X?d?V4G$XR8JYZrZeebm+zThy60gR8<#2bur;ust4A>f0jG5GCQp=O#hRzOEPre zxpEV|{ziP@Qj+xsGf`{#duT6M5GrZA-_%~!9$@FO=r9W2$O*~%+-R`g>kkAx6xBX@ z)UT@h7)bq1kr||X#AQQx(3SrAVUI~DQ)011ojG@N3qls~zp{zlXn!lwX~{!!lRrNS zl;Y7z#Wg55;JFL$O zEN9g?0>M2cZs4_|q}+*C;TG}SQRN?XX$iVEbU2?kO$t%Q_8(fhc(FXH|D!?59#fO! zk0&-YRO`9QkPx1a$KEM3Uch6?Xjip73rO_xH~vV%p#Qg(7r)>4FY=)>heA7*m;OT> zwD*?DqoPWr<1SvZBvP8~sW-7E2dZ8H=r!VQ*u6DGF%viC*fg$7RJw{on?qYD7s~X5 z4ze?;as>ruS2VEA=)L6Ux1f`ZlYF?g<&cruu?~BYf$|Y0^6U|zJIXt zHElqmYrmC*I_@m(X?QM9VqFdjC-wHCU*9iH0TzA zQVovWM=~1fiiO#Z!#-F`MUY7msJrQipsHhHoW~Nu@)AeXx{A8Gy0vW&AAsW$C?&a& z*cJZJ^GAu?0qwnjtQ82jg%F1xpfrV?LTQG?>PHh7Pct{PDudB^H<%(L_Ti!)>-n;RRJ~_&(DHPfJTYI3RRvT6Dmhf zoLDhAKI{uL6X{fdlWu?`wfrCl9k1A&^~*AdP|rx%!cQsyGnk{}knJDR4t znjRbo6sqy*n}>oaUp%MJ`%P(S=~*8Xmg1(*!OBJ83~1JI{2!v5iCVj-Bn64C8GG(M z_{vJ$EEz0XAk+i)C{!XPkI&eyrq4C4=)etwy6ft#evP8 z27;TwAQeom9RX%tp~!1{ETWsUf4BoV@80_LYu;Wior;ILGwPAX(h=U}2Ge5ZpgJ+_rdtgSmTrC`u>+M!6`G4s1;#+fJR_Tw-JchoeLsPGt^2g+1m-6jN*Q{O;1TN+YPNaYH?w)fjg&HNX3 zUgr;6hQR5K6d^hy#MvazIh^fI=M~Uf`aWNpSAg1`QMVvnD%3ULjHg4TZoa(e(3#{= zC1SqPJL8}014{SxzMfYI#)HS)etf8_g<`ufOa*1JnjfbOx=~_~irEJ~H+`3^BIVT+ zICf>wUA@BRFdr@|qdcDLg)f~hlb*gr?kVAd>!Y(2Nf(eek50w%p;uss;B%IXRW!ue;hv4I_Dvl_wPrXq? zfNz`8!4RPNzW#T@g<#@%c*HGYhj);=H&7}k_xl{~#i*#}+*r(9)R`h{5IG&sco9lh zsUjcnP^=)-g&j%?HR%uy_D$ZzXJWk`Kq}QrKC=L;aveffp4{X|xxJ7ES3m;+|FweH zcl`P3@j&atQIMNZ`tAjOBijU?Bv(()xCNq^JkT+bzCZ<_)8vs%A5h2x@5KP&?)n}7 z=<1Br4(O8Vx?{Np5-A~jHss~&fUbpDV`8`y5!$ITBR*lS)Q_iB4?`*6OC&RNI`ACl z54*@RckA{mBT71TfCCp$7TcA>*`%yN=8u^lVXx1{<8+C zssFPN{^!@=1>3l%le5G`sT*pzd?cj=e273OscIoum692(34#{;<#^rOVprn#d4v<@I;+nWh-SH z53+~Yg1dL`l4CB@fpGUPWJ$5TA*?MSiLiqn_(pFoA!e4J$?GLypfTSSz3c# z84`D<1qXRNxkk_XNh(=C`di<1W_oY6gE~hH+}%EqwRgl!)guRR!6TA0{gGNX)4gmI z5{iGi0emGD=}53Oe}`6jL!m6NbQuVS`S7Jtr$z4M5KK0uOFKMHlMr!z5x=@tb*?Kr zZm2CAY9*M^q&uMcohJGU``+@0=fRSv_DD!ZM#iqewwmBLD6ExzN#T>5A$T00!Eq3> z2E7H{{(ZUNHR*EWv-*pye{}<*_6C@ETt0ef#ylS{FR$7&=1GkJw8dB1Yo?qtKLG}} zz>Zb7TcoG$t%p+QUJnx*O>muz z36T1WJpxEcMhVY+Pp;}Sp~N%M<$Xd$%veD|dhxAxS0+>`=^UqH-`S^&OQ~D4*#pbdn)5sAt+7`|SLzg}z+70G9oVTf4MbSX}I#!ea zSQ<3JN^5@YYs7nDCq&wU399?0;prAZAt4{^&O#K-dV-ySV8wOp8EPH|#$XDktFd zCfI#`dyckQE;(t)P_!kL^X@llxhrgc1&QW*+R!i` z1;}D5x9Rag1DsD9VS`=W7CW4{ObbiT0|yRx8u-d=C&r6}3!uBba63GJLnRUD-a_@% zzSJzJo#_CC(V~yRB@(AfR?M$$ZH1`scnK*&NmwVEi*4Nv%82{~^OrAQUTMO^-0r8V z|3VZ!Y(8Vfxt-@bDx!)8WT7sQHX|4Z=I}TQ>dc}}dk|$sHmTcdYHDtVhU!$Cn~7|W6+Gj=MIwc~y!c>_zN2i}9I zp3qCwhEtXflk-pwe>`d*@(D+p=AiKWCt>W2Ebq*uZ1Jf!RySL+5oG%QPFhLh5G#c% zUvk+2p`pBFrrJH8i{F~5$HVden>`Pqjj486ON$%3#{>5I4G^)`tX;bnboK+3E<`G1 zS|sczk`N0+vOb|@oW(Qs=~ki^^%6m%CJPDM|NLp*mb*M!rH3eYYa5#uS`ZKya4&eF zgpkKJHh_!D6Ifp!54Iz-_#v5NVzp8>;UgcQY^0Bb#!aIAR*gP&l(SAZ4>uqtt$^fo z@InL5Oa4v8mE^duHESR&-&%CL4DOK2)tquVRfg8%h8w9H{sO9GHBW@nY;DSzzN!BJ zt_xy$H}&-4>E$662*y1JwThjzQcX7(`2>s%58PR&a8hOv(NbI`ZrLb(ak!foG0pe~ zb`=?SH}z;PB6b(SKC3(vS5R<7kyovCP_@hX*ak4u^e$x8BnA=!Ld-1Fj~_o8z(MMP z!bk>G_97VPOmFWtvo*&p^i^qF=08-rwP_*;HbGgcw`jLjsWk^Xx;E8W74nj^NKMxf zSAY9=5QbRY=^Sw2R!pG7t@sVN_VJ!vIbEl|{Qag}n~%>2ZSD>YKCk!7YlAm8R^LRD z?A67-?1TKRrj>@sb-CJWWO$~@q74V#$=8H8T@)4w+Eew>L6Vf9`oLzk3~e1oDX*?o z!p!gYVSMApjZexmqsC-6J%iPm+!|!{L|zX35JK@8)~5GiGEz)Bs!R1IR~0civ{$y+ zpKwMmLSMa2X+8-+s8oaFbg+|2g`r=7xyuZ?gEUUt?OxsM6J|)&YqxIQx=?q(k;v;O zlon$8YnikBB6Tl?!c9+|M*E4^+PylN4OVI~d#J9O2xYKVuwff zX(3{G;_k@?M#_xZEOCo19d+Y(ByG=5Ky;4oJys+SJ%1BXBNsq?F)RW+U)z*;H>e=a}rKZ|g4hpVqm0je-Zut>Olg?p{>U1EcNFov@Ak!mzKKHXdGr z*p#9E%A&~;8d3`}MexdN)vdjY!jYXJ@sY9r@^(k=JBQ))mH7Q>T=3TS+#cRQE7W9FCw1(AoS_ zb=9a9AtoV5%cNoTwG|5yQR;u;W$v04^?u0<7OQs=*?Y^YCko}J7EoV8d3D^G1W3@A z&u-hc&EWHkzv$$XN9ZfaLdZt?Mg9Uai}}FB!s>7?CTCVU9u4SzviUBIr`Y}j5RllV zPst{#IG9}2jduB4JR&qv+sj1s5+Vn zhr0-w5I<-JNN5 zz2Coo&nKge2SH~R2F>H`lH{iiK@!JV^E^9zLbY|$k*F*<0@nwLnJ%R$iHh>m@s2<)a9i z_)h3KL85srh@v8}moJmKc%B+7?x&DHdCQnBDQyT8i|9Z`rVwv<_wxqMLv!Hd=TF>* zMn(nnGmk^8_uuW+lh1>#nU7EeUCzt|0;z&`w*;70Myt)NUNkWt z1&F?bw1M<5S9vz+*z`5$lMT+BTWr62aO)=cNXTJ9zT*9+!2lzG4OS?!D$c5K)_!s| z6IBx7Br1UK?dG{jk-`v6JLE`7r#_e={;aa3r?J=G~&n1N^<2}eYwJgL!_|9o&zZ>6bVxH zE<(PD?GO3+^QYGLhZiAYtPsxrdGzbIZ|bH~sMZZ$U7krc4ZeaQz$?aTb?(J9HQCjP z@s(}EM}V#=CXnGB^4_9t#wGP@_?0b`Do2NpYw&M}!pRhR)atr>kOVDsASs|S{I849 zpo=(MN{(4F1e5&Xm-_7=!Hb$s06JVrb0(X@!#KU*j+SvUSRwKjAel5nKxxz;KbnZU z$V2zkHEMq1e3EH=#s=W-vl-i%hjCA~?xK$X(xRUck_4lh25mPF`kB%M)FXjaYJop} z|J{$@C;}mTlZ}atEVJ0=>#O2*c&c^mbzXhReLYv|;0Q-H+c%3Ct|yQ2baT_$Q{zTuDcS<^JGHOwiM3iaOqhl_7fS^|JjpiX; zMQ1C(A*zqq&UA^87K4C#NcU3RJrFMBr+w7~BqA*$1iu62k=7Dsk=)GpUdpt@p$8sZna#x*#Ibv4R)*u5ia3q*zIpTJ$$x$Nb-G`(J>@7V+CuGpC_Mf? zcg3;=3y5XH!jN;r2`+oGA#DoXssWLOG-`mpYW2F54Qh>w0BO=FeP>qAT`4Vb2vxBE ztkaKzVCBxkYVqJ%o9`Z^(lG?O7-f)%_18C-U%S#@0xD_$ zvt^zvnfe8vwZ^wIaLevu>&P|c)f%ZvqH;Uxz zgPqm<$={$9FNCx6Npd{M&6#m&>v0EVhzR>lsaX!*?3r=m2#FWqAv#;Do=s&TL$EBK zl4|kVMqQm``t|1=Ww&ChUsmCyEyDAMGgdJVNK;%p5NMs`bz+E!FtJcZ+9a081)ehg zmeIQkR%J>6I;x6;@qw)FAGsLUVuHEs)_w)T?e5H9$~7mex>VV z*pmkMQfj{sR-g}HdV}E>&QiKCRqw^G6iY;VmoA{Q2E*JoQbDQFf+THGvrm7brll;< z_bu3x>;a2vZQ#rGKnAH!9@ILb*QkgV;WeN-@c_4L50k(P@UVdVTjYEtI|R(4L@`q} z4d%1}2-~k#+d1WY`_bxk;I{D6mSF;%BD{4=X!{%llDI$i_7*?&zL_Ss!K=Au+qNVH z(~5wxepxaj{5oT<7fwb>c`fk+G+^OjH)n-kR0(9q6ItbFN`5pv&@IoZDYhUsG^}w{ z({Og+BjfSWYE!hl(%DneS;Sn0+m-`V4|m)p3kK}5D-g-zE1k*Rfzy>xDdTrPC(D-@ z6l}k+jYwxAs=lJEgm_HHj zX~9bQf~-p|==55#!#YMTg9F>$iXsd2I#EY%BK$hhZJ+B2ftLCL$qFK-J3wSD&QCrv zddTIuX|ZFyvN`j3FfL;U)%L_@mrnry6u!B+mb!0KDpoT$$I|v=t)dVQGEd~>3pctr zee|Od3P<^3y?E);4OvVqr{_-|pg*Q2)9~hC51L`~^SU%wawE!>WyH$@vfCxuXr)>3 zGDy~at&cmsJ4%>!*p3Bbc4OCP7^ZJjxM+@;E z!IIey|8tw+A7yl1(+obR`GB-1HlrhtvJlzB!1oE+HmG080bfF04+hx2REaK=zHp9Q zy{J(;GQ~I>_|w@)kYfQ=wn!xv!qnvG?heEMb04XwPoQ#$$d9U&sZF!wL*+O5WdNNQ zX#U)F7ml0Sz2M*cQhUHX^I-~7t8W3f*xALPG_M2It~U=qtqGcf@)S*?;Pci)FATY+ zBs7X_muzgCb;hOQOl-e+T(6PB?*FkoLFmZZM|LlIq2Jh z8>{zF8z-oB%@}7+_AoOg;_6-)gh1tt7C_9VSE1{SP^Gu}B!E*!H4JIRV77hUHxd|V z=u-h~=?kOTUvH@}3^4la8QLnYfAN0iF5QmZ=17olDtOq6y)k#KdqDx!#Eb*{qfPWT_-4y?@%y0iWBzjg7z`))$dTE$q#%D6K!GN`3L(6NLx7oX18#JAe0#-5lxh`o$u&d7*yZ! z@{zyp+^d;}uUr=}o;TF;0a87ve!T$(9u9HR#?vj zZ(Fmm+_)y$MQKz8l$&53Vi>3^cxww5Q4fD*oMbZqO%5H`eQ2`S21#-SbxmMW05J#T z4JJbz8b*A>(V9+2pW8XEDHy}cpkT(mAA#>}K7el2c^8~G>Z6vO8fiI>LYrU?u8OhO zLD^y)0FXiw!8xgobw|el5ifObsNx#8tNU}pd2JmRV=s}(rXK_e-@$n`pNB; zo1UF~`S%4JP=ajKDvlz>9nSqi=n=e#UFUW`mUlsjYW3m676=XvMA-+^fg(8)48!1p z6-wl+Jj-ns?cx{e`e@Z+N_M!DT|~p6S%o_fX%aO|nlSYpMZo8|Bz_zCcG9Ts_MzGN z{wvl=R2M|>G6Pk>P8Y>#;)ZeaJ=aR9-XjMmmEqT&9F}N7nUaR(-LPPMxF@%U^_kj7 z;Dqo*t&?5fMxIAd-->4I&+QoFLsi5*8SA$^>^jOB4imQt& z&mvPkMef}3h8}XiD7CLYLQDb9&t9}NzOq3-=>qX4C&s=@4bOp&=H_b9Z;zZqhHhwOG1jmN66!Dg2CHVx;1A4&&VxhTGg#6=uZspu6`3%=c4P09xu}C9`%F&|6*li5okG@{-p(%2YpupNZtcm)t z1;a~xhyVumUre?I2&ev0+L$sW4Uf7AhH-HZ`ne-gFpsyoOhKNJkf}sPxlc!p#utFJ z6jmjhE=`Vz=G`5PpbOO=LbU=0{Se=ph*Wz=*7+iem(+s|)HQ}y01`UR4j#UVGO+-P zzecMAC0;a1RF9m_b9dDfnJ7OXOmjK3zGeC^Q(wU6%1+SR75=p$@sN zk9#0$*jN=THpz&g7+?_v9?ammW%}aGVt}JQ)I1N((6_MgTGHeon1yAU$ZGxOd(kt~e zsEt41tjoqgDmBfflWd)iKA#AjO*t<}1%l+K2s~k}y!#bzEK*02uYD7pTKlnQ@FfgJ*ncpAK zKna3CIPcWsL#`88sw+ECG0!2Z7tz1CW=qyAY6y83a<3YaGc~4VOnZT*c4;Cj z;0}vb7hdufVHQv9`N2Du7-8XyabIM3co&)mkItqUELheT5#t;=`3I4J5?_APU~@c% z>u%B#R3w5&%O_5MijEC7cpj+oPCDf8LeUTQ>yUY7 zRilGY`687&!j4zkdC?&Y45@xS8KxL}1ZJZSkvdT?7+BCv{|wi0pBoF_ITD zN=cuku`EPo6R$2asUN zC;!Rhap)%LP+`se2M#dJps)oTr->gBW$CaYdTmK-s;vN-Q7oIVG4^=qpZf6WtN|gk zhFa7FvmRwY7NvkroJ;-rkIGiKG!2J;lC#S}hJZS5Wc1A_yt*LDwn>U;8j_8HhSiQI z;q&NV!f*NIS|Tw~r>^lXy|%)7U*xHz(?wV}+=(zrwzEvZ$I(b9xv?Oq58TvuBK=xr%IvW4;S#MRAKPR3Ij?KIZI|J8cy@z$&>Gj zgGB$gc#AXUh~h8{P9?Fkm67G@o&p0B_fBo$YC&Wkpk5hfvK%ZKnFag{)c0bzM01d7 zeAH3*Ein3^!r;?5VYQdYPqCb<0Gy)qN7VgakAzLL6XG^ZXjCKVlVD{9m{X|79;>!i zdAb=HGM7Esqy4ju18eWeGOVWg3G(sHa~;{kjBrA5-&DK>mMc8^Lfi@$$f=ZyQ<_9I zQs*9xsZ}2peNK~J$YV!zd&;mY92-n$Bt%81qF6*=J*C>HOHmKuoU?-8@%FeG;F#E4 zea@LT>tvRIoT)U`fI6f{!17UZGI{z&kmnZ8GLZp5B7SXTwA3|cdgf#r(0qPtpx(;1 z5Sv4=H1JbbF=NsUlX?C=B}wi!uo+43m^s3$mZR^0kL*M5xc~TOu&yLpAV4`HH_VlD zBAFX&m#Z9hAq`nTePlD{ITqc=Nv78n`Q}(7yAWE)7DNqazI)f8Q5qB>+KTD5BHk&qyWK9D>&}L7paHn5Q&14pAx+BxMe9QYNnrhA+T1cy1U2Ggty$-=^;>-`g(grU zA8wDjtQ|x97&BJ^oLf7r-Fo?Pn1U2$G?njs1nj zD^UjyPV*-FL)7I3wN_Z1mA)Ph!)=sE@nhs%ArlBT48dSBEehF}pv`mBADA@)l!u=0 z*!LHxwm=Q_$^n^mU(uB9eIUtJAF`^h^_5;oY7HE})~IGQ7t!dyE2hwGOWvO0@WUsA z8G}#V6Z{Mv$s%Vv{CDbHWVb8fKG+%3>UYr4l(Vj_ny?2EqBjHpIlCA$XEqPZXFwZM zPuEpT=qyIKK%gps?b}6E7rHOH`dhEI65s#hQ=(d}v1vI3DyscZbZsq#dm)2Hf08!> zTc_`}Z7#HrKIn1<5ZQ}DxfW2j-FHm&GEXHhKLB74XCb3;e~DCT^Lz)K?QD)sD)FH4 zm-K)kT_$3l7ddJTpjo!YYv`W*vj#&$^(%EpJ0J? zbuG~g2o%xQ^H8M;FJgJQrz2I7gVzINUa-*>NR=Y$5x1mWJou)PKmg@>ioLC}uH?c( ze)559jP4X-)*DR40a7lGcf>RqwF}m(n0sMeU%-N8$ov>UU=NUI3XD=&^0> zmZM0C7P+-J)Rg4$_(#i-(1I0l$G3;;xM_+fBbsOR?!F=hnKD?$yf1eSucRm$6i%mb zGWXNs=rO(Lr~)n;pq{(lH1SPbOe+Ghm<9-0-uzfkr4#k^VaHaU2?ggNiH32VB<+?6d%{Q{)6+-@^AHZG*u79@WG2R&UX$#Hgn8cL^bRVL4o zhu{L376Z%$7s2GWS*G?dNmFe=H>D!+Tc8=}1ZNuHNHcF>h7;GvG(4cu!xrXv# z1SxL<;&S&i0Zok{R&bO4LEW}gg>Mxj@tP7622!NHX?NG&t)-S=neIWuf;{=6y zl7{_e43g-Fe6L6q2?hi!IdBG*vL+O@fZ0rR#HX=#PHx5gKX>;}aE^4QFN!vWv7Ird zA+I*$4Lxx+gwsi3wL?mX>mIA3ZUvO_G);!!H1cy9xEUZa6I3^=k^Z$z9l2nvqUsSa znjj*aKOQ*zWPR&Y?zOamD1$M5OZrfi$%EW`7#X=2Au-vkW-B;L;h&t%b=Z@bxqXt; zc5=>yTWuhRSL1xkQe*0&f4=#DBXOyr=+Nuf*zWURn)XhA`rEVx^Yd44yuWzyt|JfJ zgHpZA&WNs5{&Q{vcgtmo8EXnxZ%O99^zw{o#s`U%?^XvRR<>m5uQ}rTlC|~vv|S&L zu2H=`eewPKn>!|7ypvtC*kH-=p`PLPnv^QtPWBJuo_Qy#i(RMfT>IZUiM;=N^N{H7 zU)=t=U^Ef`ivrd^um3xKDSR6S3qUS4aSWWsx$vj|y#wn1!aMqB`TxJ3lCz;B7kLlCGg@?Fs@uV_f4KB7W+WM75XmTl+(%%Xu7#{0xN`DgQ;!yKZw)HzR0rzE z!Rx~fhH77M7GwY-c6MVT%r{HoF*fct$VJPTXS2}Nl{3Gv3)04;e64#f=dH?}2l(a}X1 z|Dvj{9)K>Q$FNP*Ae~#oNNI7-SD6Nw!Eq*mG2c6y-Pd-6q(RM~as|$>gK&@fJp{=p zuw{!fYziMADosu_MWLgb#{R&*bqF;-MpA!7g!=)=*N!p{_7cc<=9)h_Z?I_!T&>Fs`#6(AL1qQ@?@+DO?Re)#`8X1HbYnx+V zY;y)HM>W;DyI__ekKe&uUSsfgG{`o+aaid1(^X`r?*|ngiNQSRUsuIe4FoA83?ij^ zL$w|j2Kj-UJOaYPD#-XraDPT3V_zvfaofiyJ$ zbwAdAf<|h*;DI#*&9xy>o*5BelH%q535FzQV}R(`PALSC>ZTZOVtVq4IuPxMu#1XRG8R*sIcKDWu$QHhxW&Sv&sW$Si;sI9)J;w(K3drBKw zZv03Kq<$A<=m3=Iaof@`jv)hH-txyP;d7k0*`-wz1x$2y6aJlY=gI7qut`$a2U))7 zN`Ajbi58?^5ezoB)~R5a0j5paV041nP%Wm|EQgJ5^@U>?bQ$3zxd|BB6i*?5nSj~a z>HybR5^^_rOa$QHt{y+&M{Q&oVC7~dp!F*h2CA4S%m+ja+y+=l|8j;V{G2p*4DVx6 zCQGI$GLO9K#K^j}2ogYmZvmQV=aUPG=8WN|Gu2kV5X0WE#{NEyqi6ycf_cATIA!0U zcfCOw_zZ^>=SOA~wXQWiR-Ee2*gie>pk4-mdDX1>c9@k$9Z+)qOep}W#JZSVK1@0-!X)VcggB_CKylhk)b|4J zMz6<(hC|V;NBqn>B~%&ZC`{1Rb{b3vb725`M(_p&Pt?%)l*6=$XCPKYvCU{$ToUfV zHYZ|mvR)4UzCSSe9yaVICYAu+(@oP{SWG7|M6_5AEtuwUEIK4{Dq^_oMy?eT7Ejhu zS0Jm3Y<-9whLAXS;BkM1V{%>0B}e*~Q4S!DrC3h!{}v!%rH)x&xEYfm2S%gtRQy zcsFCfS_e3C%OQOhHyT3&yE6Yc4&+wQ6QqH~#XF*ke~WP#cd%YGiH7DkhyInSECy%c zK}@717b7*&rTC18;@{42ne5bS1O6@olQuyA3JE6IluMeD&~v3%54Pg1uot0uW@&-x z*|YuQO>9}Xr%GXO$9zfOuP8BMk{*HL{|dK!Dd^}MkQcQpm>lQOFaRvwZ_WXFICEVlWLMmI$hyKhluhQI5vWpP~jd8?3_;$=b@QDkI!7 z4P>W@Ra%zbS1)vA0RB*8q^n_b#QQaQ6|l25;A<33Jq$!P!&L z!Tn-ouiBxyF}=d}dx%dbIho2E$mkEFqtDLnd1wL7^Bp8Hzjbi4oe-P|Tn7jJTa0tL zgPyOr`47j;UYM$4RF)yAXBE^BSLgAC;oqpx551>}RklXS%&&w&A^i~NE#Gd5GlT}Z z0}sLG?fSsjB~u6d5}dnCN19){fe4dd7y{k~r1v3Nscg;RWzK)w~BTQG$F=>X)}D;YdVcy`nVhF%$i zDoy5z(8I;12!|XIHGk@Wy4*FwQgl4a5n9&8gtuSKNtiRq!zo5m=kTH!akHf~P6Kj6 zTY!uXp`O`>au1@4O;R;D8F2&k?n*7~0Al!Z5yG%`RueZQ*f*HBe0zg(6`P$yt#!0g8KAe5KwWrYW-OK2 zvs>utAp?cdFnUci_~0ki+Cb6{7E$jIFsUJ;JpG=Sol)Qu zG~!%)h%s(-96`!dX{BL=B?PTKr`jycTf ztDlFByaMBxZ5f#f(`#({>zbyvFXBIR5V3X$TJd0s`Tw(_zY}VUr9#xycG-9q8qs#2 zYbTrgk3p2h)$3xOhfTH$yGGgQ?!g|8tz6Orno{U|)_7LjOm-Yht;sLvANNaOf=N?scy{>z@xAKy$Q<nIXruJ=P1%i4eLJ)M&$$vENH2Zar9D8{OlU$cS>Mu4okXJM+UT z@}gY#JvdjKm2#q%16r-do+_*4+W9t*RX9wi#LG!<+bwo~hZH>Lph9xld@-RSWBG#> zk5~dz$#OAGyH=*J^oZ}JF?MQ_^z$%yMiX$icJLTYYCXgfU;@0BG7a|G{=GI-)~XSD z!wId5jGRH>>Hw=_DtsqaAqqb4I^Ul;|CRMP8vrWDkjfQeltEKM^4gsJ`K^qYKI|^R%1~( zoiu$Nz0vbkl1_==;yjEfve1mb!CrD?JgF0R|5SH7ILg+|hx~sz1k}X)F&mtN1NiYX zD2vQtekgAIe}3nQE!_EF@SfD27Yif;T8!>!2EWq$PnEPFmSc(INl*jAlgu7hm{{*Q zDZH#l)Sa=V_Xhf>ciGUe^~DjHpgm#HGI4=vGbIM)bNH> zZ8iKB7h93O_3vktvqx?qwnt>eZh02cjw0rTY?B*xRGox}+ z#h%XX=)oMW&%7?9ksh&4;kLh|^}@S@+Vt$T3|@FQqh_#r#=U4c88hFoKAt&LF-O>J z6T_VJ5UKfKO1{;8J>j+T_y+KNS#09cq7NvnX?M5rKpmNx3m~ypP!1i*ZfeM$!EAXN zw<>^xFz4jFByW7QuCg*_tf>>zNon}hsW7a~kLN40VS=gF#|{muiX#h zB2d&Y@3#(3*53TK!L<_`sA48P+0+KwSoZwU0sZz?(@{;@w*hq#CL#L{hPAhw^erNy zytoC8wv}nU&UMYC~de{=kUUjopEvJe{n0W00caLZ9UcC zp$rNeulU^vd$!NLKmpn2#jhGD&U~h>HoFDfs74I1+AqxP-f{i@t*0*B6a2kw%qQAi z@@`#xf!*>pwdXbTv?5>K@zm<&mFuiz;i7p`pV^e0)@xy~pd7?kSb%vwu8OPh$&I}g zGJ5-t!B`efC*;Ue|28IwbLQThG2pQ8=r$b({Cxq_)$SR0?$OTA+w{q9Oy+mY4MY7_ z=vcjH#3SL80eG;k-gCCr_kElqsnNz)plES^@Y}W_g^m|_*E0QkA4j6P?9wR*5^-CU z%XVtUnKs)CDjrb8Oh=CpxU!gdj@sWY%(FFY>DhZ7VGFk*_kxh9Cf5^w+D?4>Kq|GrLOv=kX3+ZQC;Z!9oI zbel%eVvZi?;Sr5!ZqA#nBMlm&mBF~718Nif$C_*M&QrWlLKKxJk=bVhX6~z)Oq%2S zwx*|tWM1KK=3|u@#+iWO5jmF$*|^>PZL%8%ox6mJ#S zug1ub3!Ur_Y*eNulM|zESDt)h2i1<}R_{A|`OpeSCRc9L!?H&$As0TXx3Us1hjL2Y zty(l>ecg=u@AIF@rYIZ9u`n4BPK?sL5isJ*;34XZRehWXmZ*oI-9WtDcCk{;XGGl1 zl!a_UimRQZg_lU6DsV6;pxI455mv`ornm&aSff&qj7h1{noQ_U1Y@L85BXE-T~)vx zyZCkl!R^Ib|EIYi+7BsjL`yE_`}x4VU>?_!FI4bzXtwQYqWpC3RcF2Li*`5TpZDwN zkt)0hHuY*<)Fm(Nd{v9ehIWq|+?m|vXpY;{8y5#LW|}XG4rr(~M`E!Q{^gxCerF%_ z8EQ`%vF%_#`?OPlBIzWKNE)i0)R|w^3hj_ewp{+yGCxlUl3Hy}R(<*W>Wg8~yJ5<- zQ7eu9OU1BSQL~5mrg|nGX%Q|i$RuUGj3#)W2Z*vU5w8d=A1gi~}o{6RreE;6*;7ae)Y zuEH~r3HmuVHkSw%!yumkmG5AnH3+%Nv@>Vo#IsHTa66Ht+py?Ov&^HAH0r4-q6b6f z^ufhBuw08S<$hi>w&}OAui4pM{5}jSB!)7t58-g85Ga-xCg*Ux&fLe4__)j|hnxK@ zEzi*RZq^*Weg|MkJeD>o7S=z2ku0aYIi^@3yI$`VOuNg)^Z3&&)S+_NG}-)s?Xr<5 z0?P2EI070}Y>V{7V=*>7<&?t(P4_&Tyd#QaX5dd(I0JSo7?xS;&_!iEJaf4L8>rsA zm?4cXz8A4P_@hliSZ`IOV`Z9idN=nLt(Do16 z9EdzdL1v0;`?USLD>5JCXjdQEViaX90MJRAdDK;lqk`Ua=YAt){TexzmtaqF*m`pK zY4eNdit@0U+R(3Mc~ZFsPg~_>y-G7EOU*Ps*}>zNJDHvKdBR< zlJ8&~+?!rbF679uj#GI=(=imeSD9I^6s7M`q(M~z!*y;m*?Sg@*U}p(HKC@;WcxNeP+~$!?{_0i%gQ3v!goWgJTYuM*7jr zY(d6WASiFBYg*M7CW&WVNUse!j5vP$zB&3(f^KHSAAOxd_ukM>sqSuWB7>?t9=HC; zzE6tu*#3jYunpjD$G{HP5=!S(ST{$ZOnb@lUkt;Q%pa(_JpBGwP2Yet`c?a}>(h>Y^mi(?bRfWY3`XWJ#_{@jd0Po2?#@=Q(WdXC*7tyz>m(1c z$|GliYHaz1jfKbwIh@UEl``P3QAT5~)5q|N9dIi*U4;zs@Uz*)>+FSYhdn220leaa zG^#&*3C2O}JSLX>9Y=CpV})_O=RpJy8A;3;aiyvgC? z1k=yuDw&-sJSeO!h0p2cv*AAMiMPqNox|?^mdk|F2Nesc*u~Qs>M0?4JNnFx0yGst z0Z+Hz@=S8Nx-Un>3W!yF(1u%9_emSi@zzgqaL1Lg9BiY>i?_^6qcdw&jMOWalD#*l z^>N3_R68li#O@n%kujRO3|lUaP=LBathH{iNm>4vC4%h1^!i=9_iw-|H&bMSG>%ny z0L$HX=Bq=k525+^EttnS+C~K(jPmm~4Zt)e6OAT5&uNr5Mibz?s5yO(OHX6qXkppZ zQ>!Hu)@$qyVJgoVbe|)|Er6&&_a?qG+xmN!^t7lkefpt8&By8fn=kFsyAzai`JBX_ zYT{A%Ny-3n(N*g6G1T)NH!l}yN?V*yN1~0Ma{NX3S)T2+lZ8BNsUS7{$+-m+EoinYHMMR&kxL|aAfmt;4( zU%p!k-8+E8I_s8G^A8?pNzk7C)h>Y{MQGg9sPN^zGBgTjFa>Lx!+pt&Llp^2LLC02u+fB$jrGabZ-Nfy%vu^ahQTUJFaJS#o@9hWf|bTk#Q5aDf9Pm>OM+WW~NOz9qw(UGvZ7| zAj;FW%Hw2v%@bO{j$FMxdipXnqho-R!1Gn~YC7zweet9SI@+$reENZqL>WAcHEEt$ zhCYguRMq7a+oM4}bRML4)IxOARm*sbTpNXu!vc{#0&);2gYmT(&yP_T{p zxO$;1=HJR=9$b%Mp~(4{1Fa|Hz?#=tOc;OR;&49IvfiK@1|yQ7)PSxf#p>HoIvCJB z(SV=0V^`5C_W#sn4u-tHxHXVT-0swbN7NXoVIz5tp^QnH)huP&mjFRhzt<)dA8c~KQ|Nk_p+Jh{)nsJ3q7Kmix?8Tr!<=wXT_kkH^dQ2s@PV8&!W){MizicIXEZmg!O~> zoMH(HofSG&8!jtWoThGE3j?w>BV(YLLFulftN@pkkSz7%Gv9<7) zLE8c_{PR;9tUuc4pEfVU10PmDH1uvFDb<2j0yl3(PR4T&25IU8il|Y7U_g!A_;HoV zBs<^vhj70kcMm?D1UxXEN?Pe?nEA zK_;cV$@IZ07?=vgA)~0+Ya|*G-806qY}I_ETcNAlG*zu$wd(5Th%x6bPP6<(8=pR- zt?6QT4WIlp3NfQg(6bFbcdPf1_X4nEdVaE;noBmLwb$2@zbeX4ILzp0t77I-E?hbf zDz=5vN)8KnRhIs|rEmuTHWfty*xR_tlQ&Q>i|*nRnxPVk!Y|&f31;UQm4A#u5EJok zJ-f(e&{+tzgydc)Oam2_!XmH4Jjwe%b{#%*OWWkdZ{IG8j^-068ew6LG*TTHv>puP z3X$-N$Z|e+X4F7Kse_xy&TfHn2-Lx32dS(gA36j_ z6Tg-IBuxW1TZ3)wYbsM7dZN?U{CU>WYL6O6ZC{jb!X)J+LV@G=>ubcummg}?E3PhV zh(fX+2b7W?2R+#gNV8GAFmvk@MX3dgU*)l69bCCyv6+-A@dfjheFfO*bgEUOUo;=5 zRH@VF)YZte?s`Lgc2iwbxwckLwX_sBI1jbKqb#43O-D=cirIrWaRxWdLZyXns* zKvPzdb#MWlpi(Nji|kxZckzH3WZ66nz}MiZ?EC9rG0fDts}1nEp5i7n!wj(GIpZd_ zjH@WCwosv%J;rz?6&fOgsC z?3v4R%}RO@eki_v{Yt0G?HbV1Vklr{j~A-ZGCMtV;NF>_6_kodw7zeb)o|a50{rZ? zJqb_8G>#G9Z*F6wed1KAM={*nebHXc7UZrIIsS%QcsLnTda%Sk;dzUVYI#~Uqf8|h zSa8u8PGP^akIy2VdFpZ^sP?8V$J`S6<~PKfU#{h+d_!9=A)V-ErV6++F=9Gs{x0ln zcgYszZN9Us$7Ho#gsGZg z(XfIhWAR1RX(r`yTg;GuW`*O)=bLp!dt= zV~bW@K^!?ovCta@o_s<&5L%_zuvAx&{)ye3j^qNvz?+0tVq5_-8 zTP9e>_fihccw{{Lp3ZCy9sBK@8{0kb=8fv*Qm@Aa-oJ@wyFdCy1$rjQjxZmZl6#@5 z5@+1h&9uyF13+sg-E9Eo_2)=TNB8ksj~>U!DUpB@p|N+)jn95io4AKlJq;zfB-Tmk zKU{!Qd#dv}Ekm!Ysjh-0W=GUUi8r46Rh!*@gi7jIwo9m(pNV zu=h8Yp3fW?=B~*zByJdu^~X>6sN3O>J?Ebot~VnZNPLz!uvUj3sv~cW&D5 zMB67HMgRu&RaGB$vt)z=-7L;}J>Mj|$mH4R^3whi$Yq?&08I2zCW*tr#bHiA#yP5LM z936Dvp{AEYgI@G<4laNC{;1Txuk`Hx<&uBwYxn5z$LwDizGCGw!{4g>@h#ij@89kE z=S^>oZ=F;BlgE{Z=Y06c8mBey_I}Ih6}x%U9=6-}%fk=-_4Dojc(Sw0S)aR&@63B* z^YuC3b>>)xXN zP2k0biO;N8*NTJ3&Zb}&aEh4wS6?-{{PU)V4!eW&79^uB&yef zboavN-F-gnKbhFRBJ>VY;d3?aKD&pnWKV}7S4b1i?9b-+q*Ty+gvmhM{B3rq>okIT z_fH3wGLV;?AP2oazPpO^^zL`-a(kTvB-}YD`z<7-U5(onr=q(IPV*BJ@_egPf$?TU_wx)1{ zA3W*hg$NZoW_bFZe%8x<$JVdid;_U@a!Q9Kg-p23S$geL`x#`SCks|bMi$RLtGbEK+AQU=POj|_Oq#`;dXK!!nCmaL#YK@)@eAkVCHNyER#kfx%piiQ z%y`X8#&#d6cJ+f%8bz1+ht?Vz{W&Px5avbg+xgr(aT0oo8 zL#s4Yp?nCwv4MCrh&jQdDj3ygF-t%NdZAlv^CYr|Sc$iLTHs%t&_D)9i%6A)_9rROi7wmI#C3P9l!m$0Gn6_*ydBGLky` zvMBfPrn>M~jT+RUJlsOV7*X__WhenmHNqecSAOOm3(j^`*-h`%YHBP`l-XQD_h&4DehE9gGc=ze&IRS73t??_`2*0Qa7Ju@5H=+cIZ#m*b9Nu8sVFG@?$@7cH_`>2MOvIhzAhu*EY?~d*)Ie$ zR3ny6ysjfN!483IEicx_J9(D-8X*42^U8x7JusS3&h%69;63O;@?g@=AgwO7@W-o@$EZ+vdhp%vasuV1VtVc`OHq9Q=f_m}Syfa2yg$~<>w_6m91I)a{lL}WCmLv@&EJp(p{mb{TH zdtAx-UNs6BkQZAX(P{VRv2No=Z*uK7{Xm?9NE5H&2mEN&ygjt{c^V>|jO_~QW1_r+gcRJD)VW~;YAykeO=W){>I3a{4hHvOIcAY2}|i6hbYL z7eqk&m>Lr+38WfIDjd! zm9xvE0AbJ`Yz4|_=}RsRGLNLgmfk~P4@J?~?8S}#stt&gYsndOv}u}x6YeSnH{w{| zN>lOA90ZB#(%A8F8_8vVx!-BlXAzfYEpiOY{H5?Cf83j<2@k$vtCz>!j*_FdlELC% zzw~_n!dM_nt1o~m;CEnn*6>j|QM}a?41`U$clwilobXtO?RV18*FkL_*K7s4y>bGe zX2=5cYm{{0eWmfTNSOh2{DEFHX&6k0;IREct+t;?N4yqK895dUWEIKhP~sCoPa%19 zFqUNjD0?h?a{!#__~3Zz_%fX~90LQGGTMsVOS6l>u_w97D}vpv;jGxQLvYbSlD})m zXYN%DX-X@q9z-$k+R7$BW=ME)P2mcohpWbmgopFk%W2+vKKhVrAttf4OP{r>gXVn}sW<`P}qq=y_j^TwAe>0~8$^3Kf9 zZY;?zL;YrHT?mF{6iOcEb6TM$k2n03G7i=j7iOW1@9^f7x0!;mz+Ny5)WNPr6H@7k z%CHqY+pTdR>o>lodMc;n5;)R_>!VSmqsf{Mg0Ix6at?m*^{}>z5aafhuC7}I2~|$~ ziBAo+-sroph!6YjMXl`+3}m{&Yj$KecIAz8IvyH^QRW&uYu0t!3RI>)t6iQ&aU5MW z(N&jU9g!mbdiJmBYc%$=m zQobgn)LF+i+PR$LAN*k&t|FmikRje2_aOaTD$t^y4diJIAX37-EIw?h{j#5pnZXCH zzS4q;1P9mKR^TAN{$uP~Bwmu{J9+XpxVE%w-+y^~(@TxrrH0NJOj{MQqod^sO!2iv z-LLo0hl%MAKK<9fXC3-~a28t#uRQigEM}=d@`=!FOpLrN$O$$g{u`{f2*Tj!!?A-MaJ<%X_`+bVAa_ ztiK8KRU(o!+R|nS^grFT@F>HHPuUX=8ahrZfXB_=Rl&b;xaOuLDeFI}Z8Y-R*?Hd_ zDOMy$j9Gkd79#3NPv(TJUeS3#%B>D#cwgfp$9-^WPasvfY6u7~ z(E!HW=?@oH$#e}MeDd8i+Qrz$NvombCAN^wg8FR=_kq%l3Z{)uIk)p% zLnzBb;e%KwhJ1HVQL#D+xNkH&h3EJKs1CaY? zfZ44@T|jvnL9xA+-*T3Nb&4xlo3L?bm?pxgF{UGnnnj1Nkq8kr6rLj)Y>KW*K8dJY zQ!|p;soE1L+j+s6F2I+g5aT3Qd(_|WH|KnRwSLj@7ur#j>0R|Ep`moq+`OvGlYC5? zgPcW2w7NRf(wmA+znl#4r~AAthDUkHsj+oYS?I2Wf=kqEH8?wWGYTO)WR^ggN@Tqu zwlTB$6hC1-#Yh^y(OopkS3m}k;?M;0OY8+tlKhlSTPkf$s|PS7GL6<=vc>>ni*RP| zIMnRfQB)&+NW>G(wVLv!c=STI%#qKf!oYf00KMC11LDuYA$%isz=~poR3{Jpid^d> zUz=TYp{^c*&hmY=&&Tq7I{FzIbnI+BiH0w8S25zgiPLV)f^$scy4R@cJKD%jF%uY0 zFO(tI+`Qw)P$X?!uCZa~$8A`>+~;pU{=?F?Jpab_+k(IISlE&D&cR(6gH&iXh!09c zr%T#anqRegNg9!^8|>Ma>Q*SHD%zs{sf8}?W&FlqLCA5njXh$T=;^oQd{CMm=i%8r z=04%c!mtlDKrMf-4mlpRXFabI8jpkOOuSpq1Bp9jGsQRS33Eg1d=_aP4NXVF(&{kE zy5DoIXAkQKqUrvj?@_$p8D#=~D#J(nC{<6iCW#bvlQ@yZ_tqg0{Hq2~AP)rzaJB<4 zf(6TvCHD)P)6}}Xaa(+S*gVxA+>iA64g8i_h(tcvchFav$e(VI*CCn zA+!0(w?fcUv^v~l|EJE=kTIp9s;SB8=qE7qI=q-PqMT?cnAAcvR)@#HAk{u~ttay? z;;cl98+xSoy$SYzme{XuL3c|SkZcEd%~}v>&KNOTb1kU4o_+WqoOHDxCrMzMn~~U7 z`dpf$R}~=`R!J_p>0hYXp9G9FhxR*Ukk5zZ-JmRoEYLj_D<|!)sFdjWohN}5YIIfe z)MaI5`UaI*xNNj{YB!ld1ptY${_shDw-(n{NkAx^`p|@GRPtLS{^!0iJsf@&iA^4J zcB|x%0h-|}OP zhAN>^?Np$=)s7LRKx4Pf$Y!xl~9u z@3Z@-=gs3wWoP_k6Wfh?9VQXa{^Uo+1X98@QK}ka5)$Mvv(sE>eMUoXRf_IWV?i=` zK0k(qR)VKw!H0k_T#6n==fI0<>U(|KB#cG=X%aPGUc^_G3X%`QEq1}OK74}W6#_r0WFf`0qyyGuEHyA(_zkF=_rPt*8p zj*TZTsBn3xr98hB8|O7nmQp{Jt38yv=z2U6uHy_P6}k48VcY9j17hH3T8GEcM=v~c z4t{0Ts{5tkmEl)9mUjQ=6OGK;yO_PvN^R2(Rhwm>Q+^XHKlZVdtTR*JnE1@i{Ve^q z(v(_yUwA0osBw$?H)aeuR+m+m3GA?=D7o-6wZe=)jMCli5^I{s}7)ei>rANJC)bji<)(^IH~j4q!(Zhqy~KGN26=|fz$5T6}!H;;&W za?#3{hAduM7x%Q-V<~41^=AtfuK|Ex9Pcd_xf7G6Mw8UF5zD^z_WpR_Qp;nz6=+di znx|09ESoaMSz`TZ{W9+T#vyG#TLu>Bqq1|>IS>0JcKKtmr)YR>ht2FUV88QouTM%F zOJn=gJBi71ylP7_aVvE8oV{~5HPf;ykcWX;i{=r{=TQIshE2n~@@HqkNBzCO;@KPF)1E%*dwd41Ctq1@Eh)4!zE(*&?Z%D%c&zy( z%A%SfO*KQ7#f(MP<(643$BoPd=iQTsP4*oTytr`0Vr=Ftlcvg515x@hlsew@Tz0JV z0;-Emn=vcVy)jogI`Q{{YGwN*@>c}7*H8V=ul~zC0>g#}jSaFHF(+%Iv;V2l{oR=~JEFmv+8(adpm(?rB*LIen}OHqZ7d z`gXOwQySg`Z;^J+K6d54I6n=$hh+NEcheT__gGy6RRBx%r?Mqxk)Y&YbuX6P~4A}*wmk)S{GwASsGV}z6|bpsrOdKxB%|cHT7~+{6w%ld; zLiO3(8j4pt{}4m1UhR~bnzdnVx=YOOw=>#$JNpAk_NGMVLW~d20((GnU+`{h1!(i@ zonR>I?U#p3Y;AECBic&D-iaGi`;jX{11V5Bf)r>+CdXgw15X#SqwLtu|0>~BnY>&* zBhnrtA;}*Qu0pzb%TheQD0T@Uw-7fB*bn?b^&K zb5~@4v=+C*1uFuCAZqjV-r0q-H=UN=>DinkFM@AK^uQS6#HtukBkj7mIr^t$@zMty zO?W}=&e@%7lsG9QzT#LyGlBI~Oo8&*32$w-(9rL6;{WKRU-p1<78G5#m6Y%DUHSDb z*jtkg(N^1Ie$UybKAeknvL!?qXb(KD+&|i`3Ycn=?~`*`W@5kK5f4vj*D*~Fe z(Y;sbqKSn+{p)R6j`d1S0;>g+sqPpinq&bYK122}mdFslQm=aMq>?dYC3ns3hqb|>UscUkokIZ=o1b&g0kCUs28Yrqt$exSu@0_;c-~bnt~LCN>=Kg| zU9<}y6v)$Vl%K9bp`ib{2s%863Oar?BJeL;HFp5Xkx-W$tJ7#Zz^IML%dWspC(g^F z2sgSsdSCYEMP_Xd;bi<8;^LMm)zRO-LkzWjUZW~S>2D~L<9qMDJFR}q>9RiiDhE+5 z@14`i(rzz##hO<)f_w{m0iKnpPgy4TyIA8ncp?Tjah zX-@G|L3X6g34kmrBUerIUKmg7ZH0Ce*X~aeojZ4u#}P9xrsw=!aq93yCGOE~ih?1) zWLBlErkS)C%DyP>+;g{z-2LK{Ld)P}gbSP=eZu(+7=BGe%zc0@w&czpwnQsOq$q<_ zDO13XZEcg_WV?tX893R`x3H|w8A9rzUyI{My`yGTSSol8FW#+L81eG3dRj0fMYqlpeixo)qRDChKYF!6>3}hp zQAvM`qn2DMGG-v6Nbfew3sbd`q}}oigvb6RzNuxRXVLXaG$fp!=HP(|dgl3?Q>Sgq zNly|kz_ocl>6bd$5^8)SUrJXLB-+0sd`7=p)TYtIbXh{pU~X@(`6s0JvP^^k+)TvN zOPLlyQyD$>aSePR+1PP&&YMymtRsC_hz^qd1O5TM3<0M<98s8FQ+}_%1Z)Ks8%=GR)~+?sHrWPgyHhYo zomiV^2PYzJaIOzJNSWe#?F~oNl;_Fpvi{TLQ=xmK^NwRP=9X1=Gs;chl3w|hm#c?c zKE%7}XM8LzP~3jrNBfmjYiVPueL)^H;ii$7mzwU5P|8A(y*ptPY{&b7dX(}n6sRfd zu6kPEeL3kudO8nSaGXza;;RjMQ{wOCJ*gFBKL=KG2uBmlE4{u7lpnhsAhFS1EMG+# zX3*|9C-g*=C-;$$xX{rwn$l3RatQgAddbs?|{LsF@a-ykZN-9V~ z6zgiU{6ISeou5~am)-vS&^Sxb0!Fg9FwnA0EL#VqR6*Tyj4sW+te)~x93ySx5o$7} zs`ChuV&l&uV+p{0bQ%#U(50chJ-<$rvo>v5RPjvU$lWk5u#sVaJ#Ik-y(XKLr7#Bj zRsbjvo6+UGS%yly_`+j@#&1d3a1hI>a7p9T%msQ-5;)4|w<6qihLGuqpngpMJ z;Ki8ZM^8TNORFy}aZ$Z(?DEHDDB~0x|N0Z1=Ds}#n(OubTbL5<)>Pfpn7ycOe`)-w zLG&UqjCQ_7Aakp#rGz+reX#j^RAC66+|>oSI-cB1!)VbFQX?wg#7Ei+`P9Z}4G8X` zdUs7L7t5@HG%knB*)E9=Vx~c-wBp?T$|L|(HOe~X=qi2+@yK=>(s+HW{7K>*?l>6L zb8()_)XvdxxmDT!Z|tQH(waZAm(J0}4~E116-bB1588J0?V03ii#U`|OCzJMRmpAH zV@uh-FnQi(O+Z+@(E?q!*~J{B)9R@dsRH?Ql0f{9tX1TgN>fNR zwTJlYx7Sw8F^5Orf)1CoA-Ylta9e|rVhQRAR)V(>(2no0B+gqpH4SKEAG{4!0gUC9 zi$fiM*8*Iy-FV=fG|#tLAJl_DDyVJ`X!F)@7CXnd!o(DrgC>F+>D$R$JhsHoW_xer zjDeL)njlU?P%(Y^>2W_KCTk^w_e+7h=`_OV9TJA&3eXzPD6Bb%Z>6ZSXrORq*Ev@yQajFXRfvVq>IL=n!lDm`u6XCw0Ysrzt8kx$NAnLxTKbE zXn9I4N8^8i<}LT(-*q3}b@@EP#^&*djemV-d`rk_IamL#bJcQ|TFz3-S^Dpjvp3ol YFaB?y<9YKO&)tiC?>2RPzn@{PbDih8*6qGeO?lRI?&&NR zYnI9`B@Gsf{`L3UfBu30@ndnf;D4rAYbbAHC6)1f!8gBIZ&T6w6JL&h9(7}}ma|lp zwrZUV?QA-4Q_~-;_)Tb<;4eq6@4d3}&xh^;JH_uV-;q+CUf*$0FHtk`!0(B+QM&Jp z3_3LKB_%6gHv*f7~z zn(xKnu$-met~vc(?YFe?wGfZO`P#Dcg_`ZZ->_J>M;5TA{QK?lUxit}{QJ$8KQvgs z{ripU%qZ5M|9-<-x@*eZ|9rFl+Aquh^Ucxazi;`^H_x|Bcm2;d*Z%(R2VpV(yL5CS z{`U?;tYQ4G_~GE>++4ZiuR|90wU_(aeyuG^GRV1mtn@}js%g1&M{ML>D|T_5PiBj5 z*4bmPLL^0-T_(rtA0FGi(X4v4j9upvWgaUfo1SL*nqGPo7AtlNo!Q$v@2N-d4Ys(r z+&`GoYOUCO|4?dX=fl$008KUb`}gn5sAWtxWZRm{jeL$=XV+OT;duP9>y&jipWmFQ zy0@2i6+Id5_o0XJ_|o9THG00sq{PSDp(oEiIefe}BY)wuE3-U9Lqm1dcBrVRG@f}j zE5+tZrM$wsyE{CGYLcB7Hf7r;Ts+GB9+se{9p`1gcuO_cfBkM$D0J*eO!$TPMf171 zdV5RwOT;r8AL@K6aC4irY*S&m%S7L5Vd1z>|Ni)`Ww_R{*Qd>2RroczAiQHqddHjX zbG&D)$vo^^-gMz>BK;1X(J}MnyiFlemf^e70))lIy*<}tuf9`RA2IPGX7%dTv6r=! zl;kGI`m6?<>~$P0o?rXR>a}ED^)`WBjj}zt^ULK2_0!u&etem~{mRU^%SvA&u``Aj zzC@qH-%pT#7ri?u^YdL#v%fgu$2O7Kz-w=7la2T-^M{Yen^ecI+8feYW8ITCXn3mr z!JUS7Bd7kFnsAl$;0>m$98DURS>~qbTvm-we)w?xorhXVg`N`mOBNeBT5UYtu<=FQ zax1+@r&K<>n9NofdjIjN%8D6_*LdxZ+*vd>+&4d@ytH)pSpjB2HFi+QihZJdCL!}s;agQ7EC(jet#(%=fi~GE!<4# zjZfSiv}Rg4pYzZMl|4^m(oa+fG-O!vCmcvrJ&}L=_VO3*u1eZkT7^cFBXvt8%>v$S zW3YFCZ#C8BC27+?Ds2()@bGB8 zvdqE_`>8oRht|qfBAQ~omLATv$>%qBYQjgm?F;lG-~IYFwMtD^T*kITD=~O%Y%KHr zKQqjPxgKP^eEHJ&)y;Li7x~AQH#?7Z{rmF2GA}=Ec%-g?Z?WOI4~B}0C*Is1niwoF za`@ZL&26VQcaen4a4BxkYeV^nprFMWO?G-|=5cC@eIgXF@paUyo^LZ{^+*1u{U#ufaU%YVNy(UYrY;${PtWkk8Z%m`2 z?dLat;lmb2?)3JkGj!;h5%IMqK}X;EwPZz>b$j-Vsbik6Z%LJ~eHHm8`xGbrJ66*| zusGRl`H@414)vxdJBg1BbS;$;3*M{z&gXt~y_3>SHw)~D z9Syr7u2=k8s)fgMk+{dw4aW=pR_<<%^i}XE_FkqOqZW4e!GpEaXUte3BqUU`|44xr zva`RCy3c5Ljs(tv2Jck*XxEv{CR86}7kjfm`m6i+t1E1-**~Os;m2n#`3paG+0J}F zN!N^Byv%Zs?M(U^*7{IN#gdf;E|Z^Y6ZJI8#e{|3xmN5H-01KnI%wx$cawiejEes% z75OjLXv@!6~`f1JP#(6=gDX!TM!Mk(*Ygaj}BIg7IY za&}ik`fjc$ZhUwo7VqrYvjVd3qCbDR8y_!%&s+HR?c3}A{{9`(OHJC#!W2x?Z{u%0 zeE6`kW6&+xW&A61!m#9FKQ}0fYw`xJ_4>l^pGr+WJiWYMOKZXI8)EKr6vx(LE$<>6 zegFRbu6DwK{dhTpY#aBoFj?hf!#srCMd^OWMhCi54nO(l((xR-F7CazHtjuo*CjqS z)(wY48S&u0e%5-d35sxR(8G1 z@KpCT?>2!sPfM8=D?KppQe>irAZYSt%kmKHkI6&+p))Q-{Qi^5tri43-rY z6;ZsXPdll3>g~g0gQ-}9ihFx+H5uJ`cqC;-HW|{-^E%RSQd4)i-qqQ>ceh`iy>vWJfAJ&B7QVi=*Pe3} zhL+!0W58W{L;T%%mbcr9=G^mX7ELnQc>6FJTMs_@3rZOlO&w`AO~|R42uP8ZE&102 z1GP;Zm_zV;CEwXtH04??)kpf#EfPS9Rz-(mq#5! zL`6hAaI?xC?<@QAS+%+g6_AAZ_3!3 z?YX)3FA))u0cp+s`?*99+#hNzx58C1L3+39Oerb;>nhJ(rA1s=G*2X+b-2ZY64CD` z&2ckR05uM#ov7%JU_JuDRc-U9fD_oq#I{^S$JX4wGEYQG-6l@xYNNRBy0L%Yon^`P zIr0nm9lvdTYPu(Q{mOfLg6HL3==Zp@{c3H;EX%kD$TK&kt&AxR;UxQA7{HM=uDH9S z_x;5=#nXgB=eCDCSX6p?j>hAJ-`sRsS8n`A)jF4nv8ZqZ4UKu~3d2X`hCljOB{bEt-8p4qXGp(q}e4Kj_(P$abs0iW0B|LlGY+m_H|`G_vSo@lC1Xd zWlp05O+uyq4i5pX&S4u`zr;kS4SC`CE|I@rGxkN@#bbsmse ztwR?7j9;Nq&V+@-Es>NwWy|9KrO}{X15vhx1Tm+7UloLaZ7E{1VD@0&vhBZq`pbv0opXx(?WeJ8T2x zSvLRV5&*OP6U^Z|oJ_^tmJo_TlOxHK9zjOVSqBEamPxH~9{*}&s=r^P)n6x=4#ql@ zVy}Q>tAPiB9Tmb|CWZr!?UGt1W#I)lwyxNR_f{nj)^%T_(_qtnL&NY&9tYf|L$vod zW$i6qu9q9AH?b-e&!|2h{Ai6hBArF%hby|`2XEZCQT*-0v-uZ3^>3ZZyMVI&Si$7r zUGOCq<*nP?`GQ)B~_*Y8a{6JlX<)QY?=X;;8@Ku_e7+)bOny{#fiGvT4 zIT!g`g)%=K0nHd$1go&hTP5)(2n)TQMq>h97Q#7SlX5gJEISfUD9zHj?^fEV0=J^G zqwZq;AcSE$A5|Uqo_?u{VWI)*^f(_st#XCYQ?G7GC6^5Z1_Tshi8FK}N}fJ_nmP8p zG!og{_8ODzU7Z4%h5DP0`ITAAIvjf_q{!NL-|x$->Hi$*Ta19L!OOPxUb0R=+`?-2 zWjcd6Qa3u5M2H&9NYcx&@CNMLfNJJ?$LfgQr!ype77Hq=$SCI!{P0UZzVK&bK^ocC z{a@>nFK(nwVs(CH@_7**b9MQCEmgbn2t`E%F+aa12XoxB-d0bEdosm~MTCV_-quM3 zZnA9VK_XPO^^&kfYAnHB$D!fiocFD4Ct!Kzl_)z3fO_l9i*hvUV*F zoX@@05iLWX-;a$%25s`=asDjW{x*qu%v)H-mW7+0CE1y^Z)S%?aXl~%em=kk$e ztcE`Yl|26Y*A-GygEJyV2k~+T9~|B)_xtXD>a(Xh#c-KS5#C} z82K$5PxvBU z1LMzEms{t9hs^wP@0Kx2g_`EU@1+uyx^6v^5?-Z=8vCiyt$+UcXUXQX9}Qb>)Po+t zzaEwQ_W0M{&eZY)4lO^vRG9#g3KxW>L`4ZAu?M|51xU!gcgw;92eiBQEf8IiWS#!} ztGspx8-YWnb&0N7<3o8P+xF{?H;yv@=KTwU-MpvYJ@Q7CvBS>J4r#R*8*lvNpWoLV zd3x!lqKmV){oas`!bw?eA)Q1y^A_;9I8eth_)RBp z|NM~BjR2RsP9&iuo~=0c?b31Uvu9hcDvllb`010jgWZ?P=xJSh?x7MB+-N`EUnit* zDEIY#>O5!fp8OwqjZrH8Lrp!-i`zr3)zU3~%j?M>B{oU2!NC8a81tN+v!s~JDgEKn z{MPt{B#*|%Mzhy7$wrE6vOfB)23`damHjZja^*^t8P~o!o~A6b&012t%kh(_k^6x} zT`)c`Ocic~h4E5IK!Lb3_4w<%2(BF;og1EO2%Ld)2nPG(af) zobiH1i&o`k;J>ds{Mhy8#*-T9raJczUjNo?W8L>!N=Qqt3+P$jzRA|A$+m7~t^>gG zv~mXOJZ|2{;MHq@K_IUZ?1p>zJL;180o{rebXZ~%66z-`UWZ6ZHs}G+XLdb$M->Z=_tQoXtlP^jwc)K7EnK*8T8rvpE&_c;x3^xL`1JL=FTdpGj7>Ol zMTbno`m^}oWm%h^diO|Nb@%ScPbK)NyAFfhlFebCMdPF_8V|CYzPumnEB9r{jbVh! z!lkC6ToQRdG`97PR_^s+wk%4B!sf1DTZYT*=Q+P_SG4J<7XD*4&ywW40o`qV?=mct zD<&Gwy#IUZs*Qs$MUxBd3r3qx;LV@r`0vke(2=xgl)jTiB^Cg9D-hS-bM~ka?;;^g zE04JaAgxRrcqsLF`dMcru6ZHvP#pUCSLdMu8)}m(IK;MAQyl+sX@;wN{+eaXGYuTz zP!fbB%}FnQ zMTMGm8uwNuPmHH^c6NRScHNc=!p$A|BkCjbnXcvRg^y7Z8s|9-`gC@F9Lv}&nbj4K z>PvX3Uz}-qxMYX~auvM_qRhJ`a_7zv%T@tu5QVA%&zZ+lR8+Gjzf{L*ZZxkI`|$2H zxB)g`l{f0fja0BXjr?$@!W4no+$Lvv#A*a!sTRi#d=8x{X<`Glfe7(YVcPz6YC2%? zz;RVRWS;DC41;$)(oa^cI%z6-;?44trqLHK&QXy5NutG9Y{qe1=R7vllyT>nscFf6 zW!{BX`7WH`Is5!C;tQyx$5lUC*xXK+T}|do6xE*I<)BY9sAz2%9|ULXX_$9m2k_io z(7p6yxXzNzsma4bY+vR^QjJJAQZHl8fh7H<)@`rc5nrNZ40Wmgt}HXFe{iI-jJa^G zM;TnXVE6Hqqeh|+K7IUHh%~*#zR^lqqdXB6KG8||$HXz6BS((>=zP0@>Xgs8zeGde z0QqG*7+JLio34sx4Y`OPdMF6Y@LfW&4!a}W>bAnp#egsofSmeBw@oUZ46E5}@J%oE z_+CVeRW~Gzy8B-^{Dq`^(ll$`0$NB{8-|GzzHz^9vO9t9kh)y25=ip92L@4kJKkGR z|LF9)&j2(CG&_$R`JiC`%y=)|w<|N3&MQ}(bWH5g%{^x&W|(_!u%#WT4Olu799aJM zz+}Pxdl_0I-=583qZabSaV~llyrJo%&UR-@PW|X|o9f4?bnL^>+j8ec#G!+-lxZ^1 z*XJph>)RvO_i6(LQ9>P|HkB$=@XEZtp0ppOw~{@)O=~KtgJkTY}bmcfx6(y z#i=C-KCL%ReB5zgWnOD&5+4BGg2Lk-BYNMpOl(4&)Z}fS@j6UaYE4e(!zJsCm8io1&nw)c6+G(o_peinQA{ib3#P(U zPJ_)3>@wLNFJzo(8C6wYoO&xjxk5ll4c?Uk0z~9z4m6mXe0mA)_4`tKri7&I_%fqg z9J;ad7U$V3ak`M0rnWYiCwl`XM9Zj+^(VV{=X7U_+I2SucdQn!0iw?QbVJX$(2a|B zNUOx1I0up~(z1_OBAu-}`|-I<(_6qUnI;bOtrn*kzMM_yodAN%NL56usp9A%oU?ly z%M0D-vr|g=cAvarb1g7%VF{nZDKBnGk)2*kxP&4c&#Ly}hzd}34=Or1r;iw+; z5-OxxJw#h6#6U~PRI_7l9xHCYL=Dw;^J zc!87H0T$z{jit=X*RQ=zeC0R!$Pd($Vnkqcoqc!XIb_$!sHiBlR8pZhx2 zo`#D`b*sO#1%g^6Lb27iCsUPw=9h|mr%@opmho4p6t4Zq;~bL_%EYXJX++b}S)c{^ z^yyQIlWoSqtw6&3+>rjYyY9^mRB))2OoqRI>U}bmzwn>mXBeX_R1yDOEmV3P zJ;Vtd;>xndAe0J9Kgr4paE5Mf_37q16pRksKgb2hnsTnU_2y>l;{*v#I#At2x?eJo zm5QvjB~{j73BtZPUi@QLtKaT5?nIP_Y&soM$dSSx=Wn6Hqh4YoGC;P?mwChj)9w`t zML!15cvIfNjuIU{Z9iKc@b#U6g-JOcJtJp9eX>!3+fdYk%(I_fQc1K2kB-GU#Fj_$ zS5=wv4cTPZ&}cl;oE0`(88xMUC>a9qc{+^tF`D?tEN&%mQjzp`AW0P7vdmwaaXLc~ zC!6sCP}PfgEaZ56|NiU09G(U0*>X@cOkK7s?O^7aBXU39Y$rv#O&k%dE(Xu&r=cxH;dL3so%#OuSdAvo2l#iJ_(rZceKps;c3iVYOS?wP89GXeE zyhE`Y*9v3Q&C?*1kx%Rosg=97FQWq{N#v~OO(ulRoh%f~!q7s;U$)-~WpZ1|J zQ8nhCxPvt$!smIJTBmOcm;ql@-K#d&gs;?<>qM2RF|c^y!j+$RnCDt9fByHiKnZq4 z9HZjG8S)uIezc!lEh_qMybc$Fl1O)fMN_uqBa0?(%6Q;a@9rF(F=NL3@Yk|ra-a&y2mKo?5qj^Mm@lmrudx|m;<`|ata3y*z^ll^^zoJ}7#F#GKKij%IR0m}vDMp1+P z#pg2COE)^b4IFzb0=_k6>}g%tQg4E%8*d3?R|CH#*t7svF*^7yDa)jR&Ucmtyr>Cx zov>6=LiU{(p6Cv2x^m+n=r}0fVf>K>o?x22@e5Z@ZI@#H+Lt)oqM<7R9s z&-wG`Q&2$F!+b!ZQ8Si_q<*V5O|{L@#imF90f$rwuzd)hc}?bTk4Q8C;PMOT=rcI? z;WA|n-KOhn2(C(xcBZl+`|kEGi^EAH%B{oO_VVS+B=*!c3_FkzNm>X#eU)Qz+Q}+o zP!TG77(mGC6wUo*2}(OXEDM6GPznMv6_>;{F7WHGlFRh^!J~yI8xzz z7i5R)ODe+o*JKryKF^a7q}(BE%AVtpu>C$s4Uk zEQ>{MZ}D^332Xx-Z0L`m<7)7(_+#dhxx~o5=w4=#`PZ?WpT9DO!K``6OY+1JfZX%~ zEGpu)Z{*^YvDsxC5I_=1BQ}yzJ6A_oftDaxtjW7VK!7T2D#cdF=2%Sr>HOsP#f5jS z^6AFNa(;U@=YjL!Ns$KWR@Gtqm{J<~ObQAN64fIVtm+Kxci=Q>5{g4LJ{KgmY3PNH zIG{L*j*(TR^VOvPDpQ;slX=HMT2WVsq`St2FlFLoMp|BPxn*HJcu+TUZaxd z%U%1PW|C(L*Ol=2SMrqbSnrVo@lcUr*%Ht;BoGs3ryCY<&=;z4=ETU?NTi7L{26rS zS-TQ1Fs6ikyvls%kIIdGd)8a6sZOl^U3_Yp-5~UvH6R+LVXygm%Jd!)vW?*Ji9I8| z=~QE8N|_ywvjD~RA#xP-cSH~JTVF+yfphLdCW!R!n`J=bFa#(P-^%e*%x5njj~Xmk ziq#w9@m?n7vs)r>Bh}{TzkV)SThpr4JP|Sr zFHM`@N{9BoVP1CaK)Pj%0-ZSNFH!z?VdqGHB=putwmb72C6N}ehWEMMx1Y`&lCmq{mTioGxDW-r2N?28O>9+^ZW_uD|2fqEPT~HH% z`le;1Hly{`hH@`3wnZobjiJBp*Vor)r@l)!U;OLT*Hn`e5=-%4yC0YizUqD+LOl#lN8QZFGQ%YpKK(5 zM9XON;9b<#!h3FTL(Dxg24Tyd)NTqk0>mj>A+`P#c14S(G1-;1T=IX#!68yZ`J|d` zs@k2!pmh+L@EO!GZ;Waf@J$hvY;xa3jP{ZXZB6dCZ7a7_?!<#Sj`fyMiSryX6^N@7 zAo!|5Al6hci{|RYIHsrFg7<{5bIm#hHU<3drW}{Hc2M(N8;-xKXOBrid9g zp=H#NxV8@)K&iVSo5<%sZFx{-iG`zH|%!e3O@Uf9P$%a;+?_AvpGD71T za2CGm>&{W}#yoE>q`)|z-laeoP3?$D-@qHp*17!ekND>)H=K!~G8ISME$D#n!`%SHn2uCaz* z6Z=VUZVD0%6$#GDqPAhV0C z(b-he?wSvO8R6zafd9TM{z+Inml3JTSe$Rj0Jj{U$*(}RIfcFy;O3&!8BLE`a_0qC zGj2m5l7v(zh$TJ7y{$#Ij~K@&>-njE4UQ)UbVnhcYiSF%oi;B8H~9ph3Xfg=5z6IS zB?;EJA&fqVhvg?W9F`(LYfn&rJ5lHjB&-*-C5tzo{Rq~W`y zasZWdmQEjz^g0+KGyBS9$xeB_o_W>B&Pqt`u9y1Z$pqbfuq%s*W$=ZALj)-o)0Pel zgRV##*pn^1dbJzyidM<4Wxx-t1O?p zIby3IkJ5t^T&wTi7VuD&-xHU1@RYpq4rQC-4Ib^$CJ8%EpN`{=)u^Z#IccTk;nr|> z^`aeH#gzB2{bknNx!acivFrPI#qXMXwl!aqdb}*jJW=dLU!y~htn3SZG3V}a9MF{u zSmXv{17x)%NV4M15EG`=P#tE~TeMiYtKrz>!Wyg||68|~kwg2k?fB@RFM?fcn%ab%uH$UZj1XnYCK6` zBX@v!*ZX0YD`u6>0RaI@hK7cY{WUstq~Lb&0-jYSgnn)NZ1+Xtx=Nr)2JLUDFbXIH z;{^*AD1qQSdi?lK5~YzeqLW$^y(IF71ny*$iJ_x9&i`93E~qc*0jS#_m1GmT#qW&- z@|;#ai+LX&M_Q2OQ{ct+Ciw+_aS`Y)iPSc|mXQNQsgfo_XX*!&XOLo&o@VP=WUYj) zQuoX7jOo*jC&q?*$tr}~yM)Y_CQhLJsF(sQ^_A|H7}avuQl9RWO?P5d?z-Tk^5S1r(N`5`pE6C z)$7Gs2pn}X$I67_#;rT^{&8Nms-ya7MinYbZoGQ(k4BUZ_t&zPa9s}y5~8{lU!B)k z%kj^xSnx3-P{=9vw1F-WnGnZ@de?!+Um|03;^@(%g1NQWyH+e{@&gO-a?{F}_Lk4D zyr&k%O-3eA2P@^)Ku@B0iM$5aH&vfh#N|!r@AihR_R>J)?c29C`tEf&2biMlTX*bb zz&ZGOR^XlQtV2*IGM$KRx&CU+3fK|JcWw+z!hVR(X5Hs{5K4>4r9|vCw1MsvJ5(7= zc?mP!Lelk#6hYv)@lDr#?34|R&6QPE^TVxUK!>c<8tkt#(z#&4y!re00<;F7D09OF zC%9nSs1C6@E#uwx^ccjMZM10243W8C501K(43jvH+UJwNgh@3+Um@8CA9q*dL-DUW z_P+C_%8oqlXVs(kR3nfvKSDlI(uk-m@srsTj@t7aBmnYR-TzTf&bQFb)~yqxJ-!S@ zb`Kp5B;L!{I*z_;NwSgPx_;*QL%Y*1$2j%-z^j5)p!b#{Xt%;znrt)FV?^c|^1fw4 z8CbDl!v^=Jm2JcA5$c~+KfD|vXCV0tK}K&z6?g5&aKi4r4ZaA(=SIH7uo0NmJ91%# zbt5**BB$#SsRtVENn~Cgg0z#T^PwON?(No*ugShGV{KAaupwz5R75;kvi|6E!{iJh z_i(u^#b?i$Ro!B?>ssXWgn=4b=?J%6GZ;b%WiNe z4U$NHa1W_#n$bdzP{or=SNQ!h(lKZa8XU>81VK{zWS{m?sQ$h1XKRnjV4IBm=Dm!! zkUXu}2ELbF;+s5R%Xi`P9T6k((3yaKzMy~wPWFkzcS%OcsMk7&;QHvrGUyz%hlHmL zeP&>*GUu&DtO++cK9hhB6IDK3FgaR4w347x^Y>a2F|j?dn^vq?frPmLbd@I=hX8ef zQ#RtNTz@k}R%VElvp*-enpZj_niaxM9&*MBh?7uS1$Z$sn>r$*r=0ol^ipvfbTXnk z(F#)C{OHyK((9nwN0ki|)AIhw#YhO%Dq&JwL;zy-4;-`y;nsbTbMjranA_j7@4%LL zIPNNtjbjm%#&A^JHe0u8nUx`7Fg9H3VmWZ@7&Su?9Gq5TNN#_K&O3>{$fN!XS|zko z<(F&*3(h8cH*8D}$s>uhvQSWh_bpiiKRa1h$y9(a(m7y3`#?{M7ZV9>S9clF)Iam& z_lis_c3yW@{L2xiPH+mOD|2r;wS@8p+1aO0pFS^q1Gs}WScfAiw-)GFRSgArH_}F*YxD{aR{(>kN;qqH#iHPE&4`S4Lun~U_R1b4brxf zAC>%Vmf#Qh+C?C|U7oSHyYIICd9oc+4CR4KZ$HQugYt~i?-=_ZWceb1&v_wVvEvOf zMmk7i)OMC)T;ws`Tmp=u#*@9w5p#VQ#pLMsTLP|M=Yqm>Vr-~Ham~UBPd5TxWAJ*p zQ(wu4&EUJLjy^hg55a1smVKp)koG}MV0_XmMP>?6u()%rX=0!M0Le3CBbTp@ijFQq zfGV9e*%g4~{p{)-^%G4;jS6xyCfJG-D=f0V+=KI=)Z#;d+hk7muuj2MpAn6YR+iWY-KgBW_{Tph6ML+EFh}Aa zEzrR#iRRczFBq!{C|u<^y9>Fzd!(np8AV=<$Z4HhA!+;s3xO~san9^VsX>FtZse_v zr|Q>&SezGS+JF9>N3foJFHA=#2%n4FyNodZy!Zl$8SG2*)nXqxGoS4m@?x4Ri}h_5 zuz9kUQ=)EqD^RB|w5!gPB$;PBWr>@=quC^2T$dh2`WeY3=pb8wA^_5a=OuML**9-} zo1kSEp__$TW;|eQn0(vPB^ZU8E0C`W@ZwSjxI+;B z5fUQMgyY)Of1d(8#Bk|}A-1T~w$_OQ{)0r9k|a(Q6LG+ht{$kXg){~Yv<+Ihgw^8= z%|+kS8RC1V)y!G4b~%~upFe*d`=5tUrH3%PiSx&35nwhnE89YWtX{!8Las0}=0+fD zka86D+9=Gdm4J64K58zxyden*jh-@inSswA8ZLL?gICgGTR;7jo@Jio`VAWrvN%HE z?Nzd8e1uU)__e`2=WR6By0`*2AgX+vT3;6G=yS~%Qri<;)dpyfwmso)@bH<#ZMQB@ z&Ynx59bCBlhi@%F3nF72j3aoNLU;8(@_8_zw8yE(p=SLgLiJKA@S$$y>9(mq3VFa! zTrkC55)v?3g-#ZHj80i3>Lh*QMwnm%O zy0H`FOsC$=%1WN6oJAK5a&cm@TrcV$KYpC)AA-S~T-s#GKx^;H zOnyCgDx?CTrG*o@vY`ZaJ1kf~1)nKs@<=QGpa=pA9-t)hy4)Wh65ZY6j^$o6C{% zZ>~ME4c6VB6tXKXHQJ_86E#kG>#`*2Y=qQ5Y^ETK^-NOLo9a!N91xEzk$ca*B5H*c z%}bNaXSiH$G}$mvMrGq(A`#UGzAnT;d9|1&AMqPuD@{{)d0j-QV&h= zLi$|gR2CA8f}3I~@mllvHkeh%sv0ci6ul2J^rrwjOOnnhATOWyG@JZHn@%?byb1MO zEa8Lru63{uQQ}hDyCB@*YE%&Wi0VwG&)muq0qM!CW!{-gwhM1YYzg z;N(fgd7Jm2K~235Rwe3KES;sWXz}6_q7o?@YK$hhBY`X`82cn4>ZH*Ma~CORDqrs4 zWcJ1=jtdKOh&z^~KNDb<6K^asGk1p)xhu#;NOl0GRtI$vi||ZpIQR)R8ivd%aNd!e zBis3a@`<)y@*>G&iqwycdjxeZwK47}INe8WLFMIynjV>T{E>Mk8*`7Qbj{pMwsWhtfc)9XfxW$hn8aZsl zmLd(d(N_csRcbODt8*FGc?Dl3(E41!=J@ZSIQ(|RS;E&FacTBoB2s|tvnwE!y^t)# z2subHeJ%*Z#3CoeZD*E+HL#Ks@IeMp4-rA05+cV@`q3(5m-d`vB0Cw(skV6WzNH|3 z+9*+3ir`n-1Y4;pDwQbULDs5g-y~Yr7k!A-5)p|%8jaQDd{(?(B5tzZcoP=(K@V9m zP(D*&CBrpFEl_I_%(F+39h49XDG-6;U-}azjW?Z5SM49K2hgB;kAg8WnkW4XI3Us% zNIE5NAZXlxtfZyPhq@L{V{z&pe7j}3DpP}V9*4yW{Fm&Z{~*l3lb?U2ag8p*&#$QE zv_?O_c5S8Y{P}h5pPxh_eZTzo|M5|DYJPsXE)e|5D$#%V?+4K;aF%XYHYG>+jRx#F zY6jwM$p5oTZ`MO(v+KuEln>;VB4;bPWJ1w>N=>^xJ&#`YqrH!zIBvoVi7^ptND(1Q z8j}~gdTMEDL07wKC%|=k)J19vYs>5PFi5(&eSVwT?%W;aNYIjc(sb)ifD?ry^l)7} z@n8@DG;9%mJ&^oYoo-_Kg7b&ln!;-m^`we@`T5DV(;)NWAucP$M^H{y8SP|J1V}oe zXlwgk6jvD4TF?bUWK5VW8-(QHJf~JLhM>XE(FmIAcx_R#_s~ay*(*76m3P&14vg5h zHx&2e@z#@waWr4X%z#Z5HSxPS3NBz*jM17L-9e%VX^@q*<5dw8S{;WFGsv(`eOOV6 z{$gliHQIf7Qa~X5LWl5_$MQsEqUYm&bszQ10ORWIl#ray4L)je84#+&eR&w> zsQ-)@VoEEu`JA=D#4CQ#LSDMiw#8q|Z{c=gVnM+2X!p&!1xmE<`=KcD+-UYX8Ce;%EDSzhi7$@j)+ zK6C;rI5-*iNo?$Dv{djV=YCfOY6y%s0Gi(uF1Hyb_5ESuzcMSrvw&VjdUcr7z*}O` zx>Jsm&#-8rPQb7QG>ZM0$RO|25;5fwPWcXCp`*u+b!G60B%l~2HhjG4k7Fdwnczep z%g;eSc`M1q;7Cj}+KKCcHk3!xeuB9B2=5RyfBx##{Tt4lrJTLUry95Bwic2pO4b&( zGEQgwX}Ksrz`5J6+QIwy@{hfr8vPW`VCr6j)$PtJn!Dpp?BW0?NuODJ_Lt=>7S9$C zF-!slra6eJgXkCtIjy9X(2Nv7j>SutE_Dbs!K=|7*C_XeZyrawhp&X(zYwyQka}x^ zMYs;#iHbRJZPY45hDaZ@u?&^j=g$XCl~7riU4{7B+GO7%-k*zYqH#>qOH9$r1MRpK zr6ILWUN*Z3JZ86d>tTpP2Vu;*X$B2B=O!ZOBY!* z&H8KfY_e#)Slv7Q=zqYTRRf41g=z`6TseivS0 z2~LX#S;_?j0H4_C_VxieB?W5sW&q#IR1A+;f=2gXhaBuF9D;LbumhdxLK0xVeEIUJ ztRFr?GMB}*gDj1E;QRd--*ofQudA6$u|<1$G1f?$Mg0k+lmH^tn>5jw4{E?Pn)n_> z`zUy<3r|{H?mUo6EdtTSd&6WTY2MdRGDaLQGjJ}bR8ygf@k9_60>0fuLB`x+WvQawV}5Ndh3R6;Wb&|S<$MNA_|N-{(oh`aiI0qP2xMT87ub~$}=yk(M? zR)OwAqj|#MKw3$d(25(;@lWvZ!>H?n znx+D4Cn$DPH51%}0$~9i93E&MWNI3KkVUR!5OjahVM9({t(}1j zaC7}J)tUG%`NHaQlv=H1HTaQ9(+!X*;vLr;7b+$%afYdw3b^QIG$|AT4;XfzyvTV? zK{YCw22#U56j0R!HE>+I^T9I#0rGA4g8B?tdf3x#h`QK6vEEa)y*^^_OO+7hSDzD& znY~G-H0pzDSc|MrH#A~;_99YK0Z9Ixz>&D;)cFtQXiZ-exR#}8=IO8~CllzokJpu3 zA>D~-D}tPZ061jWzwZ3^kLx2`dK_9jBQQ*jsy>5q(&x|&;{`u%jMjL>j5ge#l~wYYS0$id#35`vGf5vaxESl*2&hITXkO ztr0PY+CF{^aOkq!xpOB?<)E7ErPI%I7@)#%J1puarn-xoTfQEGogorzkyTeZGe>B* z_b{}KMWoaR2WQoNU1OA=`>Gw~SQ!ZZFs8TZqu*{asQ9|MgwLxd9UuDulJtNB>kQ)7 zF$GJ+DkNY;Cn@yWP<01;?@kU#xIm#4PrnG=kq$M_P$xx#3niYBJV;6BnNEJ>F4eHx zbyzE+r-G+ErUrI!wRcfTIn?YvPmuj)(y9B6;sV^rkaB`w&GG7l@4xWKR93Vb)KI;UV^nL#xzkr2-S;Bq8 zc(<3l*3_a*gK*$lK!DG$Gw<>KK4JjaLxd$v`WhVu;40V{>f!}L8>6oJ;~o1?fv{pj zc74}B3=)VJ{xfeH3+CWt0rd1T3_`fXmnn}4ku@%FA;z#q$H*ITH@7fx6H@#6|~z zfyN{#%z@d88iZc8lZ5@wB1aszkQa$txIZ5SJ@)y~r*B4w$a8`H6O}5|!QdboNtDI5 z$4HPL;Yijx-8nyg{E&vXuGBFD$1`g1A(D0`Xk5aJ*hYJhX4<+r7$Ze30|CR`&<5Q|9we3(ht!8$KmWFWK~Wb;%*mksT(YzS-~?XC zKvx?Xz@bL%fOk0(zCFg!i?t(9(WmgTATe-51Qif-$g%Vsoh5+cRLYljX2_(UdVAKl zr*wvB_ueHb$VPAxBf&vm`eaxI|1=ZLiQyx$ob22pd5btNlf&o<<6DscU>w)9AtZLYCXJsB=xAOy1FklJtHjWTkJ)o$IqB%B*#$z z1jv>K6o`cXLq#_449Sl`qzs=5lv8u|pXTP+&!!^c;^(hEnM3}PS=?z~`{1}9LYFqv zC`7<~+Gb8v$8qx0*OjAtElZ&Pmmo5FU$Z2+hz7b!Vn8 zH&9*Rz8A>eVhFUladY(`Ka)X@guP6()g(C1I*o=B`cG?Mxu6bDWBj(Mdxk7scH{NX zVqOe2oxfnb%d%AN$wRP-6R0R0A|^NT9zqOTb$9b;7ZUB;}o{gnuR++T!9X-vSt z){Mz&FkAHM?1!amJgJ5O;Gj7#Wc|>nD|6N)M-00A-AT|0%r`zy#vV-PyD_{*TwI)_ ze7d(}G_QlpDxIL()KBjA5II*55~UfvJ%+PGWBe454hP|Gp<&XTgeaOabHe9?b@zb8I^6*O8KjouL7X;s9h3frlV4 zH>gf!p>Ayk4g)`gDf_(K|nzNAVQH$z;G@x<50U`rO<*(5_BjP`+y@j zv9G%ks(|`VPtF=m6{l^K-W44aQv!cssiQrH9(HDH3>tOSr>uZs%c$)pBKpeof`?QW z6QBn}fK?`F8Z7jZ5?AA}h=YOUg$oy`D+&KO<6R#KkT@;DN3wErb4f6WuHAf%)DenZ zDA=Q$37WtPZ8G%j19?~t>c+7!k_s>hFsO_zAV96Is7daZ)pE)_Gda$q(kM(=Cifq| z-2*Akm(&Csi`Mh9HF4I zEsGZ~4w^nW{(h>W8x5XIu9cljUJN`+D@_jwZ09DA8LZxDqzSylQJ7h?EjYn;87w7m zQOH+domG8#v0Kb{aM753zJH49ci{SN?b}IktP;-zXV)9UWEYAAD5H6i%v571Xy!4& zR)@UizXf1Yn!r%h4K&`4XtU@NQ_%Uu?&uhvKSo{*ZW#{UD?OA+QkWarXCS;UBr?hb zK$bew&zh4;LV1sF>u%}af=&^CLP9UGcvQYHzTSQN_8li<<4g$HBZEEs)Y*hDk>nO^ z$`H!vWfBErXLF&DQ6G_pB#EVP=awMCr>LtbH!jA1T}V4hRSA<!jxY4{3NQ4+BK*!BsQCg}zjuRK) z8q-JxCRG`OC+D15uF}>c&3w$6!)KVe0XB$R_~m$HW$18&=jR}FyzMG1aOvW}J(k%o zL~(4H-cc1(o>bM9e-aBo-tngBFXxq_;N-0;vQOljnG<2sZ|GOSyFfMQr_X^5;Wups?D}iTs zk%S=+&6~hpF(f;FWzN8z`wI3V=9Yb6pYhS;l*9}b#@J7_vRPNWV~ZmC&JU&-;}Xzd z3~&i#&>+ZU@DD`t}!+y^KBDg^Mb1cU*vP?$}nVKOFVr<%9m zB(wm5@ASge(^=AIbnNI+hSmU?)x@4y1UCvAo)^$fgUYqu+y`&W;1A^gWBDz^PD_CA zsE3IBUyy4mlLo=Z3NK{oV`ddBP$x68Ek~$HhNxOXEALy+M#=iLT}5B3iJiSdcwB0ph3xke{223lFbBH44q}ErNidT7xMX ztCCR0QYXZ~gJqL3A_Z*b{y+YEE8+juRpj!bwI`{YhLTfu71MhprhpE3H@6{|$(~7? z1Hx9s_;yiwdzyp5ujs7vZMD3-JT>VPpAExhAx@kzB1kV9$&{g->D$(5Q=*M>cH-h9 zM>)~GISM_f@u{Mro@ZcN3Y|sN&9R{Nbb|afPM-4%Oiv*2;$*l_8h?Rm`}YVG{szC zVz{pYN+)KCpQhVO7nQ_NaxWkTQE5#&)A~9+RCeSPBZ{Aki^3e34P}HEM>GbcU=9w+ z6hy+QoFlq#*&MlVTd30dSp$NUIM89b@omc>NOBS49!OqAbSc7*Ad4)et52FF$P;39 z$lY6pg`8gC(=o=Ge9sz~MU~3!0F)pU_GqXRd8LV6RvO!oIY^B(ggz+-kmHhi`AI2` zZi8$znJ+pfb?)1H8oCh)pq6s@(TokCt zfEWo_p3@8jUIH6BL)KEC0?mFx4hb}D2mjx=@E3ECZ6s@2!K2h=*U=2BiLw3>S&OSN z58*;w>dlQbjY}5e03%xHqjo;|04jC`JiYK>7n|Xy7W7zPxj+7Qql#~ ze%GImqK28(jlpv?jD|dMG~_c&p3J*sX_dw?WTQp0#rCo#rc7E`E8vB4p1Mp9SWYei z!Epo$*Gy+GBB~tnEAi4pU@REb2)5pw>I(#GQGZ$L4E0bu2Qr6Kox2^f6Vvd5&!rQn zJ{0xB2qP9i8ZM;^k6{BA8N+t*K0TwLn=?dt&NrNl*#QpJuInvLsHgGJG`Q>6IdTua znzen`8vGejA6PP$_4kvh_Q_WJgN7$dTAuypw*1du{LcNk@|)O_FBeox_g1Y>tf@@% zKXmBcq2N{K=5f5WV&bV6Vh?3q4?LF8zae9faMQy=mimlchi?{HeT<#*bj7q*? zq<>W#z0f>TreCLDhp`GDuK1R`!yxj^A=FPNfeb^|AM;qbL{R0Ai(4_n@-no>6X$!t z33wY$0w(y0_}qaN*dqN~gdnC_oy5GV>9c3o;!m^>9;`2vP3cC%1%%!pLCjjq&>d3u z!zteAJa(=LN8!eD?HX5|?F$zziidf3JvT%9V)ldXiW9X3E-rA`>-imBA8dnAd#_PL zQrU;60zFG4g29`pQi+;735vqYvm5(}!tPqF7bn0H*0%XF15bcq2l1CDqddwS;fuPs zQf>%;TSP*l+-xr%GaDAeehfv@d+OpBZ(CMcUaoWa@NInq1IZ&#f5Raupa+$cle2+Z zq+5$HVxKq)l&}|~T7uvgV2f%9hzGl*^)5cSjqb+|Pk}oIuy4o&BVWAP`@C zA+WQz(U)iQT}+Poj6rx0F5!9F*B*U7m*}J*PfyP%4^!Q`o|kME=p&ex|IQm6`b&{;|~GLQW-`?R#BX zTH29|;mx;e*;dQUFhw1uc>=~gX|H&GKs!RgNvsahWN&k_UrtUA1gAAZF%6R~K`}8g zuoCl$AAGO{0oTLby#f-17#pH!$U2iNpso%qT(IDIRaI4o;fD_&Mlc3g%g`_hI<`zf zdA6CKprxfHmdpr%#!oQ8U>N0`4Ma<{qVK&rhyMT^1L?N-KYU3yDVeQO2|u$9+7b1d zQi0yG5f;;($1fyU$7dsqnE$p@;;3)C0t!GZ-^-43Xl%6^?aKHHK3MD2srwiri25%> zx4mK1l7pzRPH8h`0Ak6304}sf#>?ROiH*Ad>_*qQUSwTQeM)4MN0KR$W?0Snf$5Vf z@wE#rA>!Qdv0rSaHk9o5v%*ey|zxi`jVxhq}!|a&r2xuUr#MD1Y+y zZPw1IPiAO${euBwhi$_nA|ihI<(Cfq1i!0Sui}h!gu-pFr?OD_Jz(9VhJzX!ek)Ia z*Q=M=e${UyjGKSdtc=?!q-1_-yb;W12B}GMt!c2P#tnl>A*PHd98Q0hC zDV!e+ z+xwVv`uym6VId*q81;x+#mV7vGj{F9kM_qfVK?s6=*t%`_N%ITfJ!v8ZTa!Trj+PN z!=4euTYnrT_ys${^mNW7DZD=4-EYeqAd_!cUPZ>|V(Y9T?z|;1Jr?;b;io$9XkpLP+2f#S) zV}&>gX4L4+RqiRZvWG!zR+XOb@EZ6(+b(gCr_LYNrc196`TFY#qSR*8 zJtW&<_sEswsZJc|*s&vJYRbtrp#^^Xa&k;`#;mb;^5jW9%3B9syjV?kH~hs@(=Dsx zt6toh#<^(w(MR)5OiZ>_s?P>pPKS+Idud3QO_ezj8%08P+lBe%qyK)Ww_ixor={ii zIhA44sZ;;K#@NSSRDjj1!nyLwW+NK88x(rIQJDTDN5@D)>%AD&O5BR+GdasSu;7Gl1W&YHqi`6Pm zPqhu6+5AH-ik*(&CL1ZTu465a9BPiyg|eGLs$&+fo9 zv5O9X0MZOLUF7jSH=!VC9X~iVd|}fwb=hy%p09q?&UkZLjbkYs?w>zzRxIL1yL};% zh?Z7d@4kJfk{%wW&2U}B!Gry|2bi$e2s%t{Y+|opw?LkK3RXZC#n$=plP6b+p+x?M z=hIJDchb2nJqn;%h@L%Aag`Wdm>l}VZj%$5C?TUEJ?i!OAaHlhKPMm19ogIT-RrQno#er)axv#fF?d#9J@Cuh@4QoX_wM2k zvd)}6TNwL@7`BQMdSWhJnV+=lJai)KR8vcENmiUYvH0V;t#?awT zDj0F!#^}^6w|qsUs`uwff<7m5Dzox@bprQVW~8rg%6{^E6dD*9fy16`W*D4fpZjxulScd2(elxwM`;v0^;bW(SLWazR}mC^5r-kQ zMA+;iG~4pF*Z!hi`g zlkE*cJ+UIL#c8H;3OrWiU0RtPwJ+mq$B(;@zFw+!`Lt_SYd8Dl{6SC^bxOL}qW1fhU_zNE4bbZ=n~8 zJ7*NqpRVXPa%4(LPt(PnKGJqAN|{UEe2q?=g|#U~7&lsQ&4UVRbx!(zg_p>zrF<8A zY5I&Axq$aw)m{@sYGmln8S2fvB&p6!RsXcIcAdW2Tev#!_F~&_3FEw->2xuOOdh}V z{;)xVW)V}UFEI!&j~A%==nrKMBLd1QEBk9)7CUnl*p0J?YTGs-u_&xaW^r+`wzvJs z@)bjOCgJ`AgM#vn8p%*9H1^!+V>4szW->Mps$ob64KMo2ek$AvBzV)JM;`Q|$JB@> zNLXm5R#wpu9xQ)&BXJ6xxE-WHv$1ZhbwtTHd2WV%q7YtRq2m{*#z*Wpv^tT#zPbs&$TCCFuq=uI(z5PNz`z6 z!UJW;jNCb+H%){6h76GeJ_j&p;46@z;@)*Fl=nd^f|I;7I9_9&NJUOlDz9S2_mZ9E z-S~C|*>}*K9eVA0jIqI1n!^q=nKw_p z5OsWq4juNt+$bQ*4w+zchr4?$7v-cC06Oa>REe6 zM~O{mM+U9L4H|=GrqS@CUU_$NXwmv5VdZ0%Ui^$r!gQ1RV65y-t8(hfrnJK|)5bip zvbm3reYp91FlI2xFUlW1iU+U2aoN_BL9ltv7GI*VV>n4-mnqi@H=MS=0%DST%x%G1 zDA*e|ZHgOm2-X4wfzVZG$Pk|zIQ8J^6A_r%p*`U^;5d%`;~vfr{mVwB+rZ&?fXR)oB(cC8cwgLt?60 zioBCm01EcgESILF< z8eYG4O`G!Vx8H*jNBr=^+o@@3{lEF<@YQo|3(Dxg4O-z2oVAO}S1%<*4~QCv5cwMn zbJZ585Z~vNTSyfY$5+4+DgE=$eN<2{a0VSu^D2AvXhmYk zUwF4xz~a5{Xm*F$(&1e`@6;*s)TvWuaeovP6m*O~8qD*IVgq;;A27Id=@O^iFERgd zUEMLCo=3-!R1*xEvYA5Fn{O-+A|LUXwQ}W=GDmysUuHjiQe-@O^k-eVIA7Cmd9S-G zogX$I*TcVH&c!uRMVm{Wwc7)y6iHC1boR37$b-;)?2Ty7D77B{lH~K$;WZ5Ht@E$G z_XO}Ty7u}VtODHSX{ypYclOJ0B|WP?fB)sUdCj(0tKlp3yk^$ZBSk124uf^-)vH&< zU~;d0&CSiRsS?K4BTF?f%#y}ANq;t&zVr7B4e!?MwNCX=5u!CBkKzKlQ<&;;2z#vt zDYPor*4B20veAV~?1$!m6)3c{uB;NSFHGx?e=jI7heN+@eh0_(r4Jv*LCkT6DMF+_ zchRE#n8o=7mGBVye)G*7x*N>N2M8ssju&QxJA<4wTO?rPObZJO zm*6*-s#UvRvs3@=JMI6Wv23m1(X7D#W;O1s^5G^x%2I&u)dTe`H3%iXiN?C9r|A%* zUd+l`{@m!Ruf7VZs;P0;?bBzvip1*kPd>R)>WPxkGg8n2W5(DKmRuo&54Ck!Onm5C za>5esP86p6AX*{k&zy-kQ}yN{JoriTRIZEz^SMF=Bo^;5P1UPcFDV6@MU_G2vqHl@ zvEbLuo0DzA#`@dg3&Io?a3ih|VTY<85!vf1L6Y;SQI=L$--@;BTE*KVJ9SKNu6 zIX2TJk2$tPms$bF%_qK+KFnBVn^?ebpO0m63BLQunzd{73Ir56e%x=u;#_ zw8=ADF8frEw=^exZ+of8(I(yWZ%2OeKovBG;FskXGwsKUw8ovF|1 zS%xSWj#$5qX8nCoRGpx7#dXwrR##U*x+C9l=H-_1AMwQFbU=;-JY z{I_X^?fRbP@=t9bgHx)QPZfu^7@$yu2M%b7khB7tGOZmGHT(-U*=R zRPa5C$|=(2rJW-sU&Y4CBxtGVF3<%ds3-5+x6kaI0IrZu`Q5~SE;>ENtVxmZ4*X_B zR7(L@>y%xyVKi$P{7aLff&$l70>GZ$-rgh>0{?OEZ!Und zj}8$dq~RG3iI#vlyj4DUhP)1UoJm-4Prqf~YR#M^H8W6G9uW`Z8bw9{sZ)<1pC0}G zqt^s_62lAbM0`FGwq6{Yqd2k_h|>9kCMMCDiN=x~k-O3XBmfQ`$BE2Kx;sEfmV2*P z(dJW2)5kQ``0?YDzWa0hdu`fSp9Qm}j4~+BCe`G~kt4GD!$bHTuFLgoONNK`pKTyzv^)G{dWP&L)n=#{`wwvqK2RUR| zooxyyLJEM@`KwmRd=abIH(PhF;Ygunu_GoQxEf!D)b<40lky>n^-&gPtUZp+8Kjg{ z!c(wrx}G@{Lpy!s6?IyY7ielrmV^_Pth#;bEuE3yjZ=Nr`~U_3EEAp_bLlhw??uqs z8`XT}|L+iC_~Xal31S8!o2?1Ezb7187_?*I(Kf0 zxGrjYOz1lZqNFo+oz1N^PdBk-vIi*EnIHg_ONjpP-{0=DS#h?So8&JiQ{~EmasQ0= zZ>gt-7N0jpy>Px)}Q=AxRa(QJOt_?CYem7q>VXfXKHVdA6*UR=eh- zdTP?S;$mBd$Q{@Ixcfk*(Ra54F6}YCxnFk?o*k=spn=NFIw^wX5qVpV$X?X}OAk zduicn4d&VS5Asj?H6j4@Wuk7{pFelCIv&1pGD`_RR-x3O$i%o8^77PYM+3%Fl%A&g zVg35DKmS~q*ySVb_0)|cfth_khRBQaepnZX2?C{AU}@JzTf6YzcV%kxS-gH4Ea{nm zpg3=NF|qSdoao6k#bQ=m^PN^1rQZ?=}A4S6wMRDv-%u(Zn5aMdtRG4q9Vj4{hHoyI;#$8s&Tdt(}iz}=D{Ws)$-;Hbi&YMMQU5z(u@!#DWe*t=@ z&RhZnAp-#B*-oncHDMS?OcVehL4wP}nkzq`YtsjL;3z^Dv5!Rk-x1yk#0r)a3FNh@ zagC2pDp0Pja?hSUZQp-C@<=00sc;}raVX%iiOS-ZEBtc6`Wwp)j(K(9J1-Xhx^d&S z@UatL+>_Mh|TD{w2)y z3-n8zZD46Cq4=s4XU?6Qu4;rNQibNk(X3PyCvy)>`PjOo1=Sn3`>$O=$3!q)?1Pn% zORdwNGE#i7(%s$prS?too>z6%1yp|afq@qo9Rk;-MfsQEG>`PI{x^9DJ0ILw!JA8X}T*^TEX@#s;sC!T#+j5l`B_#-wE){o(Z~26TGgHp|Bx5n%ZM0 zU(ZB)Yx*WnhKmlFx#OE}RZ0F$>x>~85_rT8sYduSAL`j)bMpeDs%WcQ)G6SP*ezb3 z8#$LcNj%C=bIQ9&=1G<%z&sdZZl}7(kFQXqjbPkwg=)HUQy-hMx>b3m=25iYO4>>M zy`uBS7@!VXNoO(w2?UaSYn`XRc=Wp`1c9ox`N?x?M`#8sbn4)hg9}>86)~uar4-e>5+u?D~K&n&ZrrfGt~QuOAge3ES%T1yWd9W~ugt z7nHQ{5ADn<8TuMLzcXXijYLaln~s^-al+YdJ8wYLtt=l3?MLOH4)o;K+?46 z_dgtDcfvxnRe*~^(-%wttZ-uTGI54j5I~!RAAfvzdfys)v9<%85-Jink@5GTIbtdX zn4C6w)rcYn($X=pSZ!@*O8N>G9;{H3Ca@tw<-K_95^3`z0k71H&a{nLc>d0vMd@TO z^$6^aRet_e&c#cfVCNgQY+*?1KFD*Xy1jcl)5YiRB5s~X;8_cSRp9@iBgpehJ)xeqn0>jq^W*H&t)v?; z&i2`uhQ|{!-R?7$Ef?KCvpAPxpbly}1{ENGxhRQ80p^LYt67!Nniq$kSKmsYVb6(g zRMH4j*8SlTH=Y`*DJwo`5-Ju?T;0vk7M2!4@?1Lne%M1FCpT^pm#&K<@HJQfunO=J z77tfH5br9tK;kFxgybMWcLRQD*VW;JSK`a|MD{_zYofTV^^e?Jec27f*O$x^3% z+~x^{-%9AlzbV9dvrY8U{J9`#C}QN9Cg=nUHxI5|?tf+V%?*9<8uemR$b6rl%i=Ix zcQ1X2_#5@Gp`j1V!*DC?ysVCm+Z4PGCzfYmsS1aNz;SY+r$6uawNy~BvLPef_LQan z_~Va8b#TqLQM{AclzI()Ojm6&2T$V$;DoRN<%um{O8XSh?gO zEo#wHJEhx0rAVg~sP2B;rr(GW=Jcee(<8TX`iq1bmbw~p)a>cOXU?CWN=HSM)!s`N zE-1MK>_~*f6JcR)>gPd+{pwaIbMRZ9B1sWrs-n16i}od9#7wsMJV?4O+gm`EEB2Zo zKcF{aG6gV92SnYuUQB%}d38IXOrR)!kcH?wa^&^O6U_3kh#xj|Xh?cB6|K1L539<` zA`rfws+tuxCJxBcp}OD`=LkjkBPf_@BNxgLOVzl>V5}SOV(kj@L z((kOyffGD;@fx^8@TsgB1`WQclG z+I`$@EqExk~6o#kIw7^_7BEPOw5xUKBtuB-q zCP7=5tyyy-&xft*S#m(H&UodWA9efs@P~Q#$N20+WH#5Zq@(O#rG#w}9t&NGbgZHk zfA9VPht$9F|85sxkHph|QHd{6iCpjgvmFk{=|O!XTH!zF5qX=#^ac-hdtNVnYaT^; zd3o-(CMG!#UU%7_(bGDje!O!#5?s6Lx}K&VPj^_d#Nzi5Y+}&kU0`bKH;1%)|NS}c z?nfzRJ9*Bs)%n0Roz~a1vb1M>Z5ne0qT zj-&RqAZ53=Haod?@G^YTp?nKDLQ#S7%7gc5l^VUFr{H8T*$%Sz?qhw9RISV3JnQuW zlLZB5rkQT(8eiD%NF^ku7$KTzR~PSEyvsG!Elv|g_wJeCz69wlx+3Ju58k@FK9UiP)k9A+Ahq$F;!8)H~{G| z&5zb6Jh)HSWgd-9E;>X2bJ*n6_-;h*{j$l|LWRxp<_BF11N#>c>7GiIYPQp0 zee3q-WzQEuzFC_2g;GLXX*5*kF)Jv`jqAK1>?rs&frbGbo* zU$+|46X(?UE{Yi6CGm$2E!(JL=#sfMrerou&-8P>zWm|~gQ^#c{2tfTuL=4i z0XH>t%fdtFt**P@B1z1wC03}~9kye~_1M=|<4MFc_StdxG}SuV`^@5-MY_1Ky(^j_ zm;sVK5T9FV{Mc)ZiYeyCIyE|^a+I%H_Z^3Je*zXo^}6ld@M2}mQ?KfhI4a9Q{bQ~& z8_=@+1>PR1A1|d!lm(nm>JZ4u`A{VR%Mo7Yr{;?(5x39!QT=go&rU8HAqDOF+HDG< zZg^_X%yvi=O|0Gpt{-9}gzhEL8bzU)r8kNXl}Cy{gt?b`*MbgM#t%52mDd}>5S=5(F6>Fp zf!C5*D|CC8@0NoX`hw9}AB~;t$6TgbPF;bK*_=6h>B+UQ+tOof#@StX?MwnhXh*)h zK_F@?RaRss+-Zh^TS=^V+&1mIIhqwG7kLBL^3>{tp+-_{(wu!zvBlA{b75zX_aRoxr39&sumd^vS67-P(Ri%(;M6^eQX9CVAR7}_FhreZsC|ylU ztV;^Sbo5s!CSvD|)-|MH4B|u~`}^;|r|+QvMI|@5fG)J}3%1JdS{*O#La-^s)=85m zYiL{m(88w?f(fqzpEr>{HieQ*TtY~f*gwn558-pgQ;K;PyCrlVC<`^upPLbt3S)-k zIyXmonA(N_B_XEA_3CthMoG0J?%#KOSdwl{P#nUPZ@T!08jcz@0NM|v##|svp$0*+ zrAnP)Svw*R?Wo+uWwUh^iu(_b-O}tz;!VkziMH5v^_)C>Gj&J;1iHV>tE{+`dV)t` zVF){ln4{+L<2l3ypHT)^9cz{p;^8!&YpyU4I!q$xJmtrAjBsh!_&}6#-_wF;6SJwn zbB6O`4E)+@GiJ=^(ZL@Z`0c4^(!{;*efY(Fw4jo1WMr2?SK*(Ih<>rk=9mcRbb-zu zG_LLSdz3mwL=*>@T8@Bd1<*Z#7_R{LF>v3J4++|oy!x>`&-m1PU3ODB7bfPq*R|&G zU@le`5nnl8Q0WRL=Jh(cuz=_eHN`nBGNH^NNO@=e^{?C=1(1l1AD?Zj&%(_xu6 z;-uk+Vxnwu=LXg{fte*&5w)xXS1lH=p~_%&+$#>XibaXWOifTs6ox0^M_K8!TmC_- zSFgS=-keED2e{;8i+-xD!VVHTAAswbZWSIdHg3|qFD0;kJAw{#sb3q|o0efLP*_l$W-P9Xa{?#LmJz?vju zM;s>yLQq`%UA{q!&NQK~f!*s>_vzicFhV5Tn?GDWa!9;UR5*!$-QJ=LnbhRWkeyp$ zk`cjR&dl99#YTa{$OIER`83mc5I8Uq~-9S>G$2@PcIz&EAiC@)!eCqT1t}P_NNKF@>*7d*WPR+M? zc=#@XDNcINXDbKafX zckAVae{%um^jdK~=dB-;0@^*D@}=9jko2x8H81B|dcLB2!Z0{vOHOn`xm>_|3N0ao zX+8qp?x@ugqKtd%15Ke?^OL;+?*?eTkWX{Qy*-ZqHGlN&`Bu;7ulW4gR*k!D{&(A{ zn%17?fBav0n?eTRdQ6N{e4_NNlGJ8GM&FHtgNi#QbWQuv zLeQ3B6rvSMiTY6f;GMd-_$Bl6J%nmT^x9|DWz?l-4>{8=`CzKs2e+E-;q?#;>4D2w z45cH41ZSWqvWnQc4Co8>n^v{t&cA+*FhsWITyR*XZigz`P+CPF*EA zdMF+{@1})juN>C>lwEkrJ8R?MjFg#|Le$^kL3)OxXT zK|?QbV|UJMe7e3zgZ;LDzI6RX$IAj7Y&*;q1&Q=$S}Mg(V?VEoQ7aL!$#v06iOOih z3+okMV?2hL+g;5Yp9-2KJNDLB%%Sc~)3K@)@Zu6mnJRik$^ayboZmi`9YI)7QGC44 zVfO@7ta6}OWE-_fUSa)vo#sWfl6za9>u!&nXP`(dk$SL5VA1QCA<;+4;L6>+nCqpe zx0-+3GplU?aFR|9T`+x=LI-DA$5KGZ4x@2S#s<)?cA5H0TD}XTp}Ouw(VBS1s&I@q z>5|XW>=CltM5hz5WContM6~QX9D-t>gm%p92tEoAywK)baOVJ?ZNrOjZ1&b)&&l>8D!o8u4~dbiP8HHTM9KKlxe zoQ-OUyc%xU-0uwU$>DJ z8g+F^rG~!@8jt8o4`UqFaAFL<2S=umfd+BT_1Ag5e0qyxD5_YVUXRX3#>ZcxOS^_> zWf@In{ov{l8mib_OL^gGJW=P@MW9ik3LhForzJqF?@yoLz}IVlF$*fH?bl|sse1Jh zYdHd1n1iYm@?qcfMzYa^>EQ%7wnSYJ!{yUBuA&!i z39S(^C;YR9oGWEqiq)1;am9==3?#W&6j*?Ds?2#p(s}f()?tuEdL(V_{2r=JO9pVq zY~@|Rml^rDop~k^M_`lKxV#w7@)Z#!z6@iq5~Mj`U6}|h`j|1h?}p50#M8aUgPUpw ztF;4wbL51`q~n34toc=<*~}cQdy{`!NQ=%zf_o3%Ga@=VI^W~@E&nEwX~Ni)Yj1h# z%6ew$7ualrJmD8uCtFiG#%1tLO5x?f{*BaMQt~6+)?O-}BgS{;h~oJhDl_8fnlz-s z;<9O_`I_g!e&`H51r`WiHwIQ^)o?AF;Of&qk6F)Yh^pNqBaL#NAnBpo?A`2Rdhta- zwTM~;^-71XFo=NS4`BYX`-+u>u^OC}d2T#iF+3H$X(m|=}O}pt^ zjXZh<0jZ!nFrNm~M}3iSJcw%@C4+eg^N;3~2akOvDNS5LpBsB`RiC}SW7%O=LS1r= z9vyS5-69?x`fQ!%xY>JXe1PAFh17KvAs>;2W3%5rTWq5OJu1gP zT}DnKc-t(asHEa*gjs4xjh7L6?8GmjSpOScVWT)T*Y6Lh%7lkG{mBAMLQUwchTgd4 z>(efmk$UX9)znxQk+SMv|L8Da?d$~BS)p(JIdR$&=&wEX9pz9+_3FEHPM>xWV^v#2V8vz5Vf<>1x*D@ZIa)+Bi<}Q+8 zv%+4_m_|3%@ z1k}ZqDsuMRwDbps18?nliQ?h;%l?f|O@D}xO-kK)DxUZnqqwr5w|)KSpchf1uPP)k zSFR`U_n2^ppZ-<$+dU$H5MC#?u2ZJ@KABE^4f7;JB_du7j(br_ewX) zQt$CiQ6imhYO1Tego{U%yS>`(5H=V9vfg3A=_&~zk>xsGSZ7|e{{@(^ZFLoL0Q$+HIvA{A+DsRtCfLn$BReRfaw}|C%sy$aIveY7Yt_r#Bfn)4y?67tR0VVbSBZ>uO^ja9uIR$B5hv5eHT&IBVw}Hf}A*JGfd~6YJT#Xk1V&)^qUo-**)vX_JzvrGF#`TU%pRJ?NS3f*GldKCIk{n0_M^lVSsVY9UCyqooq`Ub#$ z1K%teqv^8yRfj3v<{H^$bSVyUcxiT(3w2%#$b3~bJX`8&&7ENEOAh_REA#DOKZ zEU1KEwz@20V-kxfE{Lf6rtXPjB&bt5n@zUC4})Q*pY=CuSeJJ$|Ei~x$C&k++kI@C zlzndxUw(EWZFy&_n_elkf>lM_C1i~A(p58$q?8KC1-7VUGjaMU*1?W$o`B6NIGMUp zH)_0WWA#qOxVdc98Iez;eW)nMV*$bv#ki7VrlOH^6k^mtIwUF}0;PFZ?*X68zuAp$ zvjou~qs~7|B|@GQr)H?Sxu5^a@c!QQIhKF>MDt*lHh+kHP)^yeY00D8|OY)vS0a8psmmzVk zH?O575u!I#H#NFdl!L5!>>g8BaI#TtXI^Bz@~0D?#TTC*&nR04N2rk*2ga0!R(Ge` zFXFlw@mT8bH-v+rRB=<~3{i|eR(>DHmnqRZj=T(cgBb)6s*s1@1-tz!hfd>!5U@1h}S7!+u4nj1M+Pey2|Wo2SEJJ zLzhey>*2feoaFZc6`;vx$CeJFsO>=Z?n5Av$V3Bi*=8FN#5ty2{{LF7N!{TREyV!>9E9>CKnXg>ckal!YgAV~$T*0!cs-00T zwJ$%?U^l1oCrTDu^(VCREN*Zfg{`Vrg4B|MjJUBzvXPu8y1_O_^Iw$XRxXkqnV6ae zO86rhdg)mpi34dq@RMtoS;4!j@ zqw#t#8NFwg;BlS9Cw<#8jYXu~#Gi>%PUSvj8N`W+kIAnJA;leh#((U~3$xvModhq> zbA&Cf&x~UoaV$5mECs7)5eq|j-le#)G}zY6=OpvXR+SWzb}oCzA=OLnP9?=wV4JRL zow}g-F)hw&dvl=hoAiuxkSepHJxpq?7_^M9Q#yLX$g3{gJj&= zk&%(-#mu5u89`mh5bpoHxpR+PIJ*GAB~XXxoq9Gt5Ya~?yCJ<|U5JMV#4YjS z%*GqMU|Y>v!C)_=uE)5ph}D%?_^79@4kP{rLg9`}m3ZtT;e?rA2{nkPaLoEBX_g8z z+WiN9+WmrVa49QriAeZ(;p#X7BSP>ss&Kqj)oU9n2x+TM96VnI-*j-Cy`_0{OpFI% z>>%s^*WQw;^wRp2(Z{mw{{mWxh`rl@USyfdA4$gS72;*lqVq5%~_M;wb^?!BD zf4U0sJLgRuZX<6LL~$PhrmtRJZfdw}_0Fl!k7+j%rB<%VsEQsGc3RH#=3~jG9h+m4 zNpFusHgT``4&r)*%D(&k1D7I)+M8)!53Sld?;$<*{ZPh1ZkH4tSE+LxWdaZCJc?f7Z>Z3}+4f@{qv7ze#>>#0yq_1=J`8xLecv-% zIo96dpG8+z;6&=+yQxeL#68+;x9?_=_Dk6S{ro`MDazQ_GfkeB4`o|Q0xEAS{*|D; zoK!B8iC)|J8dAXXhsR6quENeGZ74w_ER@3Oa6uc$(j}E4^=Xqz!PA}meHoBs?D4KM z-19A$3AUGoMO1+fH~_1?5^S#e?Db%WRi>kPR5S~x6-J^X5p0yu&(V=_t#hJl1GAvCZ z-wMM~JQojo<8sgCHXpBzO9V#my91Cic>G=pyvCIAZK_>jJGIMzYVT=qtWacgMW`_@ zCPGb)(Nw#jDNu~@taBo;BQrL-VFL!Fk3ntKNN3sFB&N}eZjh*1S{)mX*3C-BG>4Vq z)-Ga{tOjeGkPOw40TdU+4p$k9U&m+!5tiqtjW0=)u>z8*<5kuK)WstZd=+KZ4AK!jV68}WE0B?4umpLxet_MwbNWCKw_|jX-VqF9^8$+Q+FdeXR zSFZZ_w9iroG3VO9R3uo%g6{Sz?00i{qR$sO2@mV?0I1v5ClbbFp#p0HH41FI;E&}6 zGi{C6gRV;Hh6V>|2a)8pcKBjB=vvonB=?T=czc}u3;t03vJdSwU&*Kc$+fuuW@WJ* zsZ8>6kJ&9{NG*%8X8*Yr%Kzr7ygg1Hujb=F;2FO?uK8B@+a2)(W6q4hkpo`=@+ z&=M}Rh7PUqQfpKxx|hu#t>>ZjJhYyN*7NYUJ!s9RTS0`@q^UJ&`rju_&IRo$s%dGx z``W*F^EmJKKl&h`#c+J1c!LX`+WK#;uM^(x+44)Rf6%&0ty`n@JhT{u|07moarhV% z=-<1iocQhhmSSA1jcPT_t?sMUXVWY4*GKDl_)jda^uK<)m2?SQwBLke))QGZ{OOZFrtSmk$CppBL8;fR0Sjlc^LYDOMz!I_rR)wimgx&W&?-+5 zb_N-4UmFWM;vDSo`E3D2+Q*?8$%J}(Rlzl$BPf^0KHUw^VmRK?iG>3a+SH z^6WN1UE3X&!cURcz;!V_+-j?EH~_rbx@0FQbDJj3wIj7xi6}eCUkTr4yBs2XV|XlF;o# z*X(=;YN(2F?9aP6%bS;gZsSY90if>ICsfZL9qcVXOM{B&A21LjBn5^+&kToYV=J_H z8rjp4!xfvIgB@18Rf3|622QwgsXzH>q0(RE*QUIJxS{d zB9#tG|5K-vnQ7Zev2U`e%Fy4f*pv^_^f9LG2gD)Xg`?irj+DrEW21v^D;DR2|68-; znYayMu%jlr=j%~StlMM~d<$jlEoJ1?_=3EY4jSs z^{%SL@JtdkLzOwnIv(WkAzWpB!zP3Q#q^ESHNfq_J7hEdh#WP(<_9(xPaX|?^2Og@ za#rfaYjqJCoz3=QnV`fme2UbxBu_@S{1&1JC2gpk#QXK%@}?4CYsN(|2L+;o$kNkIEY7{;YRS)Q^`A*W;CzU; zPEKfiDP_|+35Sv0EIZ;Cn^JlZc>TnK7TiILl$DzK9(BHveT3Oosh&|vWHj*PgLrQH zVoYKTT)T`$+}Pe^|623Cx;lGEVrsjb=g>*@e}(sQe%I5-?pZwHd6$K4U__>D--;G2 zpYhXKDUxrVW@@Y6)ARjOgCJ>agaA`B#-NbflWlMLr?M|InT}~~2_Q8p#S%ktnO)Hw z3(~Q}y06D1F3t~1J}*7ZfJ=Pzr3=NaSoql9hnhUDc?Sif*oZIErHFm>)5A9l*s}{0 z?3a$4==)k{kq{G{#0~jMi+7yv$rl1M`gI@WG@D)mEl6m1%)rOzKPY#Eu)1=ie?RY&2HBdC@EgsKDX>OF8NiP>eMuHji)|QSLe{G%vAW z@N{y~5sIDyegFuJM?V)ioa98c?07ylPEbK1&9&ksziJVBlVCH+{uS`yIDNfxGflT7 zXegG@JNFKPUYNFE6&GyAg9)GrcK(%tK&V$=Z;ce1Y)21i$YsUOm8G^IqycGp`iIl| zjsP)45)Wp*;y*P`uJ)ka%wBtRFzGqMC}H*r=?wEinE5d$r?uL)tKI>TeY5`b{Wje5 zP_xRecABcXWgz=iTGI~dL$6drS8ej!e}Z%)my7{>#zf3CCBTiF_+v^Y zJZVKm_c#99H7-$el?+GnZVJ-bA6Fkt+~=AvdsrIiGXi2A6K9Vm*m)Orw4c-Ad9Q#A zlZ;XI8(?dqq>qK0Mp(pL{gSGNmx%@fnL7May|c9wwB3~dQ%gncw#W|WaGk6qi6}>O z_Xf25)sA~Ebmi8H4b{yJB}SrpbS#8{E$&RK_&>f4S@8(|@iWdE8!xzPU!OL(c#uyF!yTC+BtY&X7}F)js}y+bv; z?y$$pb;p)(e|S~}Yv9T-(P0d$=i|CYFnRL#>y@zo^kf7nL+Z*W52E2#NfFZ&QUhk~ zl(I?&sV4pvW}Veq1=1@#hfo<#U7eIz*-?QgzWrVFo13^+ViZ^1O#3+MmVQHT&jZ8v z@F9p1?f`qc&Eg>;tGZSJlBiqJ*~$wCEbsn2;*E0~du{w1Kk6B0)EkRt`sl~?8 zJGpOa0DQ%j&ghxGu8!IXzl~*@ze$FuK}1P@2w5=TD8%1;T_##`AVP4WkW z6cfGjVTf$v!_b&@X^pEc!F3^L<(ygD-)H=UA)n&sM~}0?;=aRf$k$qs3!B{+m!fWc zviV$iS)_U2eJUBiyqMka1uV-!rEwhD=2?uf95(5_J0?t_3_?-%<3-zU2{pXW#1 z`R`0OKY3g4;l`R|{Q+&5I`HLI(EUR^ZyNOOWSCi|Fnv8A^)2?Gif>!4m z^2pLYD1Hp|rx641LuJ#$Q2hNG9y5hF{ijxY)1jd?(~|sVnP$w>f3n$wpA*N!5~-zz z9CWZ>YUSqi=XtQ$o2JxyE`N-l6)%u_ApEuF1UuIHtd+C&CgdD1F3m+x}r4j6%27m zQa9e-T5IuK$ZDJaNf)2ppW_;8tJQ7h@I5Ej1n^qZd*zA`44+VT58?1JW1MN;z{I_|xzwVhy4PT*I0Qpd{hnn_p^O->3Ia;}D4U&QME2O}4bq zkM*Y{5UURWHjh^4OM#f|+xwpWpPDInX(G-G@S8pZmy59UUVMO_UO9qV5j}7~4sZc^l$<>DZHgORqh_9Njy-jlU1*%7!1*Y&}BIZO2Vfb*kleT6(KMH9T@=k!LyF zF?1WYnx$M6e!Q#eM6GCK1lJtB=a!vo;2?BVe`-O)#v+z&%38`1yg)_21qW9~V3b7d z5v@ozxn3!n9ZdXgvt;<>DQ$Ii;&D`|ru25`E`_ymk>B2s$I912CgFE2iU@}GLp5)a zomecLYM>M%&r3lcj#?sjV-6IFnRWvMT4>y-o#D;ZP8COF?$(wa{ByBmbbwvMft`A+yF1RS2sS{xSJyg zNuPcC9-=K9cnZGQP12o|kSg?=Tn7k%7m{Huk`FT5bf8i={cS3W!@XX(5M(C<}@QkH6r%#XnA@7ZD;YLS`mnp z2Ph!2omzjFl;-$3YN%q*YtyNm+JE_qOMg!kdSsZk66~FuS?}e%E|t)*%j=g{iga67 zhB{(VYx%)`99?zZ@++?#S)Z4ad^;;=qJ()Ah zh-wcV(HH0l(Mc{YE_dZg;vP``)Bx^|6!gpebV&6Lq%ucp>o9F}%6xOU-@{D`?<5Nn zJ`Y1h@??4~toVXWdY|LaIrfU;u1N6d-vMk|dlh!xBmV;#k1s0Ac=#OYAD3wPVfAGBPc)@=rhn!=VK4DGf44WCGno6$Uc$Arg@BvpQKgZIe32U#a zs{9WR)IQ9qwT{=phXX*J?S5sRiwt(jrDF#%IfL6{5T|YKa-o5f$jy}4*+F~wzBdE3 z$A?UZf`MT%Y;xnn8ZS@AA=dDaK{(5#<1xQPGHUMNU0%_&v=6v=kE^!-Dl|e24vx2C zy1h#%5~w<>(B3ZI@?_h^^(!h+9T)xh} zkKoV!&AW!*p4)zDb2Y(e{(5!)-rQ)0^PloX%D{1yCvJOrqad5$yy+u54E$bf^WUyP zA5jKI1-~H$@o`%cb#)&;EI}L<#W49L2Ir%=D)a>tKdhGkq3Nlphs%z>eADj!&JPeuI7(-CIP@bd!KVk009EAs&pnX(^JQ3v?KP@V2;K4 zP1b4pvoSTemv%PUw648F@dTb1xH`2EaD2_tPFh0~Dkw1jsL{VN5I9@A?dnfRc{}(C zl7C!UH1Nuo$GJi21}y++-AZ#=(CRs0Gv3{ zi>0UMUSxzgM_lS)^6mTl`&|Ey6){$peE^s;LLE!Xd%-6&oaoP ztj6gEtaLXY8=};L_FtWUt=EDRym!FpA|A`?Ha1w_qOB7|PD492OylsP&hcKWA_X~E z`d9SGFHe*khLjsZhMb@<#hecqK;e>m3zz_4)D`|a@H9>PG9v?44*@$ZN?`yq&DS2*emtA* zV{uY9nfq@OCrtoQdU(XY+pMKou-9k)+DcFFOz2!5A_|1HV9Jr$vGte)SM6l77B|4k zpf9ZfDpKv^P|I62}XQ~wZLq1HpPF-sA-#KWwn1@X>pxLP@Bk`h^pk|wf2&T{>k z-^$6AQG1?SM~%804g#sd{&OF@1})3Y+UMxLbjiD|Fc%k(-naDH0}ZYdUX4Tta>qDyoj$3Wkdq3%ahEzfoVnNp_<@Btp+kx=M zv>(;c9|cv_C2+BITDi)WV@5fEa;x1qO|w)oyNO{}S6!Dpoh+P2#H9qrKMnC4@3v;AEz zXd}_SmrZ?7k@M;^BX2blMe`cvjv+GK#_9-R;S&*yz7p_EB!RBs^?Ox9SK2FSXO%Ae zsC3~3VwE6v_OXi4)6;UUUjfYup|LIF?Ss1PMn^L%Ep?XlH$t=vD7*O%`*Sv>f_40q z?uAXadfkp(mx&mUqh-5|3C{O-EtmYg?h4O|h;S#hWz!WMGlz)yyFh9{uCf5Wwld(K zKq=c;=mzC~*54Gte!9#Y;mSgWRNN(GKSjcA+I+2no%X=AKxXQ@i89H4pIMrjIj)x- z^eB_SKz;FZA9y72rP$#r+|9}=UQj*Qwz9WUQ-5njf1c~+9)DIjX3KyPk1anMXI@pX zOVR=ZG@{YZsl2l|jp9;{R(q}f0U+j6+}D;d4-f$}^&{?z^h#mppyE=SkVTMQHvgW^ z&2-ftC-?joG;i3Dw;QQ_s?_4nf_qL@29gka90?ra=e?o2qgoE4$3g`%&o{<)I1ny9WGjdn$z&3U6sHwhgOzj?bN z$vY}}_eXWD{$&=TXRC92y+$A_G2^t>j_n6xER;0YRJ(Q-P5Z8yIU*)D$OJ;tAJe1j zVB8WU)4QM}>4g@SEao=H?%kZm$fqz-DQ$IYxi6h-WK0nW+;fc%Gq>*eCa9CAL{F%X z`|VXbV1)a2qo!F=YM=5NJ6jcA!U&H%as?Tb5d7{$-bqVG&FuHDL`HFDzW{ziRU}TI zy^_E(S zZ=2irGSFKkLHi_&vQN3dG7l>_x=5T?t}Bfc{SeN zllR}R_kzIP;)$D=yAQpy9HX4*N`8tx4-|ZNR|6mgM4qqQSDwflXj87tHE++470N;w z^XV%_9UAe0UHu`Kp`|;|Pjm@$C7GGw2M3hs@&1exCS~-fG-}jLS4vCwSEFNv`q}+4 ztitTJ#0uxHgJ9*}%-+-g1~h>{@|10@lu-Q)0j5QPt%+P6sNehh`q(;YDUq=+MzP9H zrTA_XHxKHibtiqeXXzp-pn%t96K<}TslVe%+)TZ?2k@U178bHvzyGnrvs38$X;ftP zD7Di;OlXtiq7@>7@}*x&=-1Idnn}^80l+MP(^dVdq+-3aI09SLf1HKQ^?7IcNE-~N z#lKfM#e6DPH7U*D)U4nmF|kU_J|N_`E~C=~?zJllilC=?$I*6ldT5>IIWCH@Y|+A` zCDg};p4>YF*bc*g0s!Af>&_JQf{+3U49{OmikOQQWtr7e*Yx%ue> z!&q*$7vAvfJ6ZVO{{bGr{sZg-{A((?nJ2Jyt4-lo+&LGvoc-C+^etf@anMfUZcVe$ z?;Wf6SWd0LMsA@VB`dzsDM@wIR&_WyC&;d)azX{{N5nOTcK^Zz69p<*+!22@J$hTcRzwf=;rt)|8Spz+fP&F~`Ack$ll5hGK{A6n&G z&OtUVEiodp`{HZx5$m}h(=EdFvViDrQdXYe5^Mu8q^=!Fn}1$ayI>z?M{d`@5j_5?ZgHR;GWfG~V-sHUx%;(-jqp?!>VL z{yf9Z8H6o(zJ(J1$9|tW+iXSq`~;H?Two0@hPuH zhiO~IvS+Ei_Ka)&=N^n~Y4D?iMgd!M?2XR&drVvXj8X!2PyDJfX=*!sD>|#6bFP`< z5GTo>U*NwPt`IG~Gu2@V>)a)y_OVh%^Uf1*Giq2eTC7}Lwt++o>fHAY^DOHIM%(Ky zVtJwstE+71K$$R?ebt&~ic4+Wjb|)%%SW)?*CAiz2!YMav!v8s>dXKFd*Ok@q0x6;4F#XA;+*&J_$57`vqQ2g@ZZ zbG}`Khngc(4b*R7!YCuA-TCmq(>IX*(b3m6M$J49n;i7?jJV$Ybb@Ez*NQeD6CT zeZs@N6J17+=kp?R`g^K)f?U=P-cdRG&hTiO{jrWBbwA%dTy|(c(%-qnPM_R0J0OEk_UA^lYWj<<@y#i2~*YUJc+JogA;Q)*r|yx7W?-LGFqRZzCRq z;i!)$T6e{StjVv&~K#5P)c)VCV83%0#ra^A(<- zY>q{{DVh6#4xZ3_4P)Ll6~2krgRLBxW8bvm3HMt2<_Ktgo2~B5`XzT)*U+=LbyB~? zH)rsXi*TeDQD$$sysTW|(?hO8!SM;Vz#tTx9kjuzw%C>1gO?z&O6TB-@Jkmi?a>3~ z10w14sA=*GG74IhR-w;5x_{lA<-gMZ2zhUqvcjHqB2n};PQZh#Mx1`R3Eg?3{aj`N< zXDY`5jj0~fo1&~>?qQeFY->3(F@)JUT2v+Vy=W1Fx;GC@eet$8m zUHoPHYCpy!zV*|E`luo?s~mk$op9TvIFD2%!!`d2JHVVeMQN&%2utf6c;iC;gk#<2 z)1G40RjTxrTW|<;>eFzuq%`dI&I|DmpRXF1*c9Pclw9wCWuPM))nXm6a=al-vA+Tx z7Qsw>eS ztTXuMHUclFoWNPcmByoBtHmXjy`IRv$#f_xKu9sddmnLjXFTFfn z^K)1_lzq2&w&!EbQt2LG!u5oH=s8FI(V|S;%Cx@VXi!m9PXD-8m9(#xdkpW_b(@p9 zx)AQ3fV$qZ|Hqu|jWu#F0-7$gz$lvQ>5}2`Vs;XIGjz}Jum?;{gV!N^&1>}WZ-n4= za$>9x!hE7Ue%QxpSHH+Gr$5H(L1@zXF5@g==^bgCb2ShDb|yYcXD`6``UL=Z`WYra zci8e9hCG7(vKBdTMHML%^JndggPL4faH3_+Lx#Is%(dD@ODJ0!XCOI%#_L}=2fN{LU)ChZN3?VQ$h zng;MbA6tJ4(zLpCUi`WQU)Nuo<#*H|KokD@6J40v{&lK#QHElN>6&+lzYOWHR$D~$-gojFH_?ev@XI=WXGRAzOW!(wjfa(s zdfw7c@F%3>2#o{nM(XFJnuh#-1A2*wrC{zs002new>&nus_}VlFzgUkY8$W5bwotu z8W!%X1VFWb=p(bk5RG~LmOXiY8d!k$+m=ezH08zEU6bN+6m71quB;>v&ND4OAuT+S zxg0&jWCqY7u`v?^bp(NYy&!sMM-zxS+^zY=nP^^~uBg=M7z(13u;tWIl_%a>r@sYy5!D&c*m)2 zSR@i{MA$x?Oi*kgM8wlJb|xkPrgKi`BrW}0=<>yMMk3s-+`^i@zPp96@$*Zl_P#ff zB9-7U&}=Hp90JyL8S}drpW`I<7SFA196#M#b?FxW)>7WaiwrtW_d&zA$$Nkpv)He! z8m%lVT>EY=66lFrZ=lW*^!80laIA^nK9HeIN%_$GP1O|}rQ2dV^UAJp)}P!NDmG-j z+BaaD=VB)-Hg$0@5~OmYa@#AFT#U=J?N>$dPa0OPf|jGYbmVUIvPef!U$6e+7)<;Y z#RF_vTbzpbR(;sk$yEr6D@q=pBpVzP<*2yEBUS~g?Oy^f4&L0W*YSI(Ww}cPo7Q+M z(WAApmZej_vr8&v&cGgJis7)td1$U-YTXq54y&d~z+I;xCivcKb;Kq&t@gCdvFFA% z;KXjb(nYrEL(bg3wfq`0pxhzwQe81c84oiHv!;Y3BFLdu8XXEEq|Hl3pmcH}W7-xH z!>Pe8&dpg+8@nJTw5e+Z19<@qx6}+U8pm+|uLjd3(`-QsB`OqyCq-Fn>LB+=wmy`|alr=PkpBo&IiUkkn<>;sq zcKcoqfE};rYf+(xy$K~Hx@E)~=ulZu@-e2Ps3|O|($ypEow_4tx{behN*Y;L{Y{P) zKd5p*iyBPItP|sS;pTDa^N$XY9BAV-{>u6`%oOU<7W-*3_tvc=I`f`RqRVUQHKs6< zHKY321lA@xzv1b+s9*TS*~SE)f!TJJHpnzkum*iyBcpDuFX40YyW9VYjxf0pN)S~5aKaf`^I|_VfkNz^f zqK>a4KCt^5UPfeBty_}cTDht>|CI7>Maq2FGJMQc9M)3+1F^p20 zoBEao)v5d<#&&U*6rP=#nPW&${Q`wD$*BSWm`SMpT`eFQ9TIIE0d@%QkkW`l6tm;SR&z&uyGP^a6*Nqw@xi?$Is-%iB!3RVg)-v}kj|OCc)_Zjw#BrfXemMR%_u*OBGe3>Vf zWQLcNY>$ns8wwzpz#smy_}EQO<_M&+<66Lr>vINs%zj~_@L*sL%}z-NZ^KeUeY9;6 zWud)rsYGlc?Ng&*;+G*IZsGFrJj|BUxSss_;$r!aLYozSYW1c!0XAflO3sP2QK6`k z`y5j54;ny6&A&oIUR9@(Xv)DlWm_~Am19ZJ0Q~O`f2Wbxq;cfP`nQ^aBQXPlVaQ&< z->CR0cFzlI#NNEe8t1`|?*qzXH;VYLue$cF)A;z)EIGC;@vv6+Ni7ZFJ6(+fGkSTf zzT8lxxk(ut?$GYO{NhLD9z(9TLRMop=f6F-sU7#R2LQevYn#ypK1HaxfF69tzTRGM zK&$SSxznfadx0ru0YIJ7vDOEn;Rx1FL0CwntLx?d*Ji9qkQOd>oscvyEUaYPeTuT~ zZbx2ustIr4>pZ1k+~ha3I^)NB{_!_!>u*u8GS%2yx_CyDLi2u~gG@P#Tq{#KhM}Ma zQ$bz_+)$oV+xV5^{tw{$0bruY`+w;b5w4*LgSkYU=+Ww6W@cgby<8uy;G8y81qd?$ zo03J~RQPy#8a&}({z?`JHAYQ*PWM6RG{2s&nPpLO|Ip2Al02?H*sm0@(rwEUdFdG# z-xIw}N!ZpolD3mCRqAhTq@FnXKL3CEW6?7$LT&7UzG_>tC9CI&%dEmIHI7l>IALjp zajpFyIXeBaiJ>5lN!b=U_hV0{`xXcZMjHPyAbHildCcaTW`CJ$LjMPb= zoO#=hEv$bKTyGO)7IbK=`UY%m*uoXtCzHRQZSWhdf=PuB+fJ>C8s-%4*$4Zl6FtFe z>Ja|@IfU^UKLJ>a9C3BEN(N<52b(Uqdm$^ zZJciNaswgB##wC(h5F9o(ABh!t%$ee(zk4HK8%@SGzp(}ypc4*dkX;VM(PGQjJ(1y zn^RA*4e!yvp}w=B|M8%-fhvDheK22$YErH?rw#i++_3>*^48;4fJb9Ol1K{X_gA!=?u?`pQ7Mw=dBIC+#zC{Wfp zYIe4rnHHL3=+|Ut>>w2D1Rsxmzx8d_&vD*5A8lEV%JSS2sRQKa1%KfAnH_zj! zhjQFoQCSBmLw><#;xRiLC&Y`9CkBF%c^NzW_@j?tPrTGB~Hmps(Si?x?%f9ByIu97lI{&BSC{n9aUwa0h}5>VGDe)x^vLw46n_d~OvPlqR;)z7=OcKySRmq25+S0tqX z`_&8UTe{{UVbyRkgSnqSqmQ3hdZG1MG|e*swM?8kc=gHePqEr+FpQbKuF>-6_eb~U oUCTLWw9vy3(X0-2_4l5Fi8)qzgz1 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�U`Y$Ra9p7YP*;N;03?Z8vtxmPs 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 b@3D-V*EKl$;u7HPOPCs4{a$Ny|DXQ@xqg%w literal 63701 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 E01Sl_h5!Hn diff --git a/tests/src/end-to-end/static/static.test.ts-snapshots/static-rendering-equality-firefox-linux.png b/tests/src/end-to-end/static/static.test.ts-snapshots/static-rendering-equality-firefox-linux.png index f9615e0153bf263aa83687045a6e5c9568cbf53e..b9cb882b0153898af8596322bb11858b1cc15784 100644 GIT binary patch literal 120351 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

); } - -// Formatting toolbar with the `AIToolbarButton` added -function FormattingToolbarWithAI() { - return ( - ( - - {...getFormattingToolbarItems()} - {/* Add the AI button */} - - - )} - /> - ); -} - -// Slash menu with the AI option added -function SuggestionMenuWithAI(props: { - editor: BlockNoteEditor; -}) { - return ( - - filterSuggestionItems( - [ - ...getDefaultReactSlashMenuItems(props.editor), - // add the default AI slash menu items, or define your own - ...getAISlashMenuItems(props.editor), - ], - query, - ) - } - /> - ); -} diff --git a/examples/09-ai/02-playground/src/App.tsx b/examples/09-ai/02-playground/src/App.tsx index ace8b47d79..008b17b40a 100644 --- a/examples/09-ai/02-playground/src/App.tsx +++ b/examples/09-ai/02-playground/src/App.tsx @@ -33,6 +33,20 @@ import { getEnv } from "./getEnv"; const BASE_URL = getEnv("BLOCKNOTE_AI_SERVER_BASE_URL") || "https://localhost:3000/ai"; +// Formatting toolbar with the `AIToolbarButton` added +const FormattingToolbarWithAI = () => ( + + {...getFormattingToolbarItems()} + + +); + +// Slash menu items with the AI option added +const getSlashMenuItemsWithAI = (editor: BlockNoteEditor) => [ + ...getDefaultReactSlashMenuItems(editor), + ...getAISlashMenuItems(editor), +]; + export default function App() { const [model, setModel] = useState( "groq.chat/llama-3.3-70b-versatile", @@ -129,52 +143,23 @@ export default function App() { {/* Add the AI Command menu to the editor */} - {/* We disabled the default formatting toolbar with `formattingToolbar=false` - and replace it for one with an "AI button" (defined below). + {/* We disabled the default formatting toolbar with `formattingToolbar=false` + and replace it for one with an "AI button" (defined below). (See "Formatting Toolbar" in docs) */} - + {/* We disabled the default SlashMenu with `slashMenu=false` and replace it for one with an AI option (defined below). (See "Suggestion Menus" in docs) */} - + + filterSuggestionItems(getSlashMenuItemsWithAI(editor), query) + } + />
); } - -// Formatting toolbar with the `AIToolbarButton` added -function FormattingToolbarWithAI() { - return ( - ( - - {...getFormattingToolbarItems()} - - - )} - /> - ); -} - -// Slash menu with the AI option added -function SuggestionMenuWithAI(props: { - editor: BlockNoteEditor; -}) { - return ( - - filterSuggestionItems( - [ - ...getDefaultReactSlashMenuItems(props.editor), - ...getAISlashMenuItems(props.editor), - ], - query, - ) - } - /> - ); -} diff --git a/examples/09-ai/03-custom-ai-menu-items/src/App.tsx b/examples/09-ai/03-custom-ai-menu-items/src/App.tsx index 8eee964b9f..3646cc8d9e 100644 --- a/examples/09-ai/03-custom-ai-menu-items/src/App.tsx +++ b/examples/09-ai/03-custom-ai-menu-items/src/App.tsx @@ -30,6 +30,63 @@ import { addRelatedTopics, makeInformal } from "./customAIMenuItems"; const BASE_URL = getEnv("BLOCKNOTE_AI_SERVER_BASE_URL") || "https://localhost:3000/ai"; +function CustomAIMenu() { + return ( + , + aiResponseStatus: + | "user-input" + | "thinking" + | "ai-writing" + | "error" + | "user-reviewing" + | "closed", + ) => { + if (aiResponseStatus === "user-input") { + // Returns different items based on whether the AI Menu was + // opened via the Formatting Toolbar or the Slash Menu. + if (editor.getSelection()) { + return [ + // Gets the default AI Menu items + ...getDefaultAIMenuItems(editor, aiResponseStatus), + // Adds our custom item to make the text more casual. + // Only appears when the AI Menu is opened via the + // Formatting Toolbar. + makeInformal(editor), + ]; + } else { + return [ + // Gets the default AI Menu items + ...getDefaultAIMenuItems(editor, aiResponseStatus), + // Adds our custom item to find related topics. Only + // appears when the AI Menu is opened via the Slash + // Menu. + addRelatedTopics(editor), + ]; + } + } + // for other states, return the default items + return getDefaultAIMenuItems(editor, aiResponseStatus); + }} + /> + ); +} + +// Formatting toolbar with the `AIToolbarButton` added +const FormattingToolbarWithAI = () => ( + + {...getFormattingToolbarItems()} + + +); + +// Slash menu items with the AI option added +const getSlashMenuItemsWithAI = (editor: BlockNoteEditor) => [ + ...getDefaultReactSlashMenuItems(editor), + ...getAISlashMenuItems(editor), +]; + export default function App() { // Creates a new editor instance. const editor = useCreateBlockNote({ @@ -85,95 +142,23 @@ export default function App() { as well as our custom ones. */} - {/* We disabled the default formatting toolbar with `formattingToolbar=false` - and replace it for one with an "AI button" (defined below). + {/* We disabled the default formatting toolbar with `formattingToolbar=false` + and replace it for one with an "AI button" (defined below). (See "Formatting Toolbar" in docs) */} - + {/* We disabled the default SlashMenu with `slashMenu=false` and replace it for one with an AI option (defined below). (See "Suggestion Menus" in docs) */} - + + filterSuggestionItems(getSlashMenuItemsWithAI(editor), query) + } + />
); } - -function CustomAIMenu() { - return ( - , - aiResponseStatus: - | "user-input" - | "thinking" - | "ai-writing" - | "error" - | "user-reviewing" - | "closed", - ) => { - if (aiResponseStatus === "user-input") { - // Returns different items based on whether the AI Menu was - // opened via the Formatting Toolbar or the Slash Menu. - if (editor.getSelection()) { - return [ - // Gets the default AI Menu items - ...getDefaultAIMenuItems(editor, aiResponseStatus), - // Adds our custom item to make the text more casual. - // Only appears when the AI Menu is opened via the - // Formatting Toolbar. - makeInformal(editor), - ]; - } else { - return [ - // Gets the default AI Menu items - ...getDefaultAIMenuItems(editor, aiResponseStatus), - // Adds our custom item to find related topics. Only - // appears when the AI Menu is opened via the Slash - // Menu. - addRelatedTopics(editor), - ]; - } - } - // for other states, return the default items - return getDefaultAIMenuItems(editor, aiResponseStatus); - }} - /> - ); -} - -// Formatting toolbar with the `AIToolbarButton` added -function FormattingToolbarWithAI() { - return ( - ( - - {...getFormattingToolbarItems()} - - - )} - /> - ); -} - -// Slash menu with the AI option added -function SuggestionMenuWithAI(props: { - editor: BlockNoteEditor; -}) { - return ( - - filterSuggestionItems( - [ - ...getDefaultReactSlashMenuItems(props.editor), - ...getAISlashMenuItems(props.editor), - ], - query, - ) - } - /> - ); -} diff --git a/examples/09-ai/04-with-collaboration/src/App.tsx b/examples/09-ai/04-with-collaboration/src/App.tsx index 3fd8076ccd..9073141352 100644 --- a/examples/09-ai/04-with-collaboration/src/App.tsx +++ b/examples/09-ai/04-with-collaboration/src/App.tsx @@ -58,6 +58,22 @@ if (isGhostWriting) { const ghostContent = "This demo shows a two-way sync of documents. It allows you to test collaboration features, and see how stable the editor is. "; +// Formatting toolbar with the `AIToolbarButton` added +const FormattingToolbarWithAI = () => ( + + {...getFormattingToolbarItems()} + {/* Add the AI button */} + + +); + +// Slash menu items with the AI option added +const getSlashMenuItemsWithAI = (editor: BlockNoteEditor) => [ + ...getDefaultReactSlashMenuItems(editor), + // add the default AI slash menu items, or define your own + ...getAISlashMenuItems(editor), +]; + export default function App() { const [numGhostWriters, setNumGhostWriters] = useState(1); const [isPaused, setIsPaused] = useState(false); @@ -176,17 +192,22 @@ export default function App() { {/* Add the AI Command menu to the editor */} - {/* We disabled the default formatting toolbar with `formattingToolbar=false` - and replace it for one with an "AI button" (defined below). + {/* We disabled the default formatting toolbar with `formattingToolbar=false` + and replace it for one with an "AI button" (defined below). (See "Formatting Toolbar" in docs) */} - + {/* We disabled the default SlashMenu with `slashMenu=false` and replace it for one with an AI option (defined below). (See "Suggestion Menus" in docs) */} - + + filterSuggestionItems(getSlashMenuItemsWithAI(editor), query) + } + /> {!isGhostWriting && ( @@ -205,39 +226,3 @@ export default function App() { ); } - -// Formatting toolbar with the `AIToolbarButton` added -function FormattingToolbarWithAI() { - return ( - ( - - {...getFormattingToolbarItems()} - {/* Add the AI button */} - - - )} - /> - ); -} - -// Slash menu with the AI option added -function SuggestionMenuWithAI(props: { - editor: BlockNoteEditor; -}) { - return ( - - filterSuggestionItems( - [ - ...getDefaultReactSlashMenuItems(props.editor), - // add the default AI slash menu items, or define your own - ...getAISlashMenuItems(props.editor), - ], - query, - ) - } - /> - ); -} diff --git a/examples/09-ai/06-client-side-transport/src/App.tsx b/examples/09-ai/06-client-side-transport/src/App.tsx index ca7b64518e..14ed72abdb 100644 --- a/examples/09-ai/06-client-side-transport/src/App.tsx +++ b/examples/09-ai/06-client-side-transport/src/App.tsx @@ -28,6 +28,22 @@ import { getEnv } from "./getEnv"; const BASE_URL = getEnv("BLOCKNOTE_AI_SERVER_BASE_URL") || "https://localhost:3000/ai"; +// Formatting toolbar with the `AIToolbarButton` added +const FormattingToolbarWithAI = () => ( + + {...getFormattingToolbarItems()} + {/* Add the AI button */} + + +); + +// Slash menu items with the AI option added +const getSlashMenuItemsWithAI = (editor: BlockNoteEditor) => [ + ...getDefaultReactSlashMenuItems(editor), + // add the default AI slash menu items, or define your own + ...getAISlashMenuItems(editor), +]; + // We define the model directly in our app using the Vercel AI SDK const model = createGroq({ // We supply a custom fetch function so that requests are routed through our proxy server @@ -97,54 +113,23 @@ export default function App() { {/* Add the AI Command menu to the editor */} - {/* We disabled the default formatting toolbar with `formattingToolbar=false` - and replace it for one with an "AI button" (defined below). + {/* We disabled the default formatting toolbar with `formattingToolbar=false` + and replace it for one with an "AI button" (defined below). (See "Formatting Toolbar" in docs) */} - + {/* We disabled the default SlashMenu with `slashMenu=false` and replace it for one with an AI option (defined below). (See "Suggestion Menus" in docs) */} - + + filterSuggestionItems(getSlashMenuItemsWithAI(editor), query) + } + />
); } - -// Formatting toolbar with the `AIToolbarButton` added -function FormattingToolbarWithAI() { - return ( - ( - - {...getFormattingToolbarItems()} - {/* Add the AI button */} - - - )} - /> - ); -} - -// Slash menu with the AI option added -function SuggestionMenuWithAI(props: { - editor: BlockNoteEditor; -}) { - return ( - - filterSuggestionItems( - [ - ...getDefaultReactSlashMenuItems(props.editor), - // add the default AI slash menu items, or define your own - ...getAISlashMenuItems(props.editor), - ], - query, - ) - } - /> - ); -} diff --git a/examples/09-ai/07-server-persistence/src/App.tsx b/examples/09-ai/07-server-persistence/src/App.tsx index a22d9c9e1c..1d07beafac 100644 --- a/examples/09-ai/07-server-persistence/src/App.tsx +++ b/examples/09-ai/07-server-persistence/src/App.tsx @@ -26,6 +26,22 @@ import { getEnv } from "./getEnv"; const BASE_URL = getEnv("BLOCKNOTE_AI_SERVER_BASE_URL") || "https://localhost:3000/ai"; +// Formatting toolbar with the `AIToolbarButton` added +const FormattingToolbarWithAI = () => ( + + {...getFormattingToolbarItems()} + {/* Add the AI button */} + + +); + +// Slash menu items with the AI option added +const getSlashMenuItemsWithAI = (editor: BlockNoteEditor) => [ + ...getDefaultReactSlashMenuItems(editor), + // add the default AI slash menu items, or define your own + ...getAISlashMenuItems(editor), +]; + export default function App() { // Creates a new editor instance. const editor = useCreateBlockNote({ @@ -112,54 +128,23 @@ export default function App() { {/* Add the AI Command menu to the editor */} - {/* We disabled the default formatting toolbar with `formattingToolbar=false` - and replace it for one with an "AI button" (defined below). + {/* We disabled the default formatting toolbar with `formattingToolbar=false` + and replace it for one with an "AI button" (defined below). (See "Formatting Toolbar" in docs) */} - + {/* We disabled the default SlashMenu with `slashMenu=false` and replace it for one with an AI option (defined below). (See "Suggestion Menus" in docs) */} - + + filterSuggestionItems(getSlashMenuItemsWithAI(editor), query) + } + />
); } - -// Formatting toolbar with the `AIToolbarButton` added -function FormattingToolbarWithAI() { - return ( - ( - - {...getFormattingToolbarItems()} - {/* Add the AI button */} - - - )} - /> - ); -} - -// Slash menu with the AI option added -function SuggestionMenuWithAI(props: { - editor: BlockNoteEditor; -}) { - return ( - - filterSuggestionItems( - [ - ...getDefaultReactSlashMenuItems(props.editor), - // add the default AI slash menu items, or define your own - ...getAISlashMenuItems(props.editor), - ], - query, - ) - } - /> - ); -} From a77c8875d777d7d97ab81ea056f993e76429efcf Mon Sep 17 00:00:00 2001 From: Matthew Lipski <50169049+matthewlipski@users.noreply.github.com> Date: Wed, 6 May 2026 17:06:40 +0200 Subject: [PATCH 51/76] fix: Parse new lines in `text/plain` as line breaks (BLO-1170) (#2712) * Made single new lines in Markdown get parsed as line breaks * Removed logs * Updated logic & tests for new Markdown to HTML converter * Removed unused snapshot * Reverted lock file --- .../api/parsers/markdown/markdownToHtml.ts | 2 +- .../markdown/blockquoteLazyContinuation.json | 4 +++- .../markdown/blockquoteMultiline.json | 4 +++- ...graphContinuation.json => lineBreaks.json} | 4 +++- .../markdown/paragraphLeadingIndent.json | 3 ++- .../markdown/singleNewLines.json | 22 +++++++++++++++++++ .../parse/parseTestInstances.ts | 7 +++--- 7 files changed, 38 insertions(+), 8 deletions(-) rename tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/{paragraphContinuation.json => lineBreaks.json} (84%) create mode 100644 tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/singleNewLines.json diff --git a/packages/core/src/api/parsers/markdown/markdownToHtml.ts b/packages/core/src/api/parsers/markdown/markdownToHtml.ts index 2380397db4..450f403ea6 100644 --- a/packages/core/src/api/parsers/markdown/markdownToHtml.ts +++ b/packages/core/src/api/parsers/markdown/markdownToHtml.ts @@ -139,7 +139,7 @@ function trySoftBreak( i: number ): { html: string; end: number } | null { if (text[i] === "\n") { - return { html: "\n", end: i + 1 }; + return { html: "
\n", end: i + 1 }; } return null; } diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockquoteLazyContinuation.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockquoteLazyContinuation.json index 4bf1e40314..146a54b49b 100644 --- a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockquoteLazyContinuation.json +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockquoteLazyContinuation.json @@ -4,7 +4,9 @@ "content": [ { "styles": {}, - "text": "This is a quote that continues here and here too", + "text": "This is a quote + that continues here + and here too", "type": "text", }, ], diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockquoteMultiline.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockquoteMultiline.json index abe3612e64..669e44db40 100644 --- a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockquoteMultiline.json +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/blockquoteMultiline.json @@ -4,7 +4,9 @@ "content": [ { "styles": {}, - "text": "Line one Line two Line three", + "text": "Line one + Line two + Line three", "type": "text", }, ], diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/paragraphContinuation.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/lineBreaks.json similarity index 84% rename from tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/paragraphContinuation.json rename to tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/lineBreaks.json index 6f7169f109..359a3b1cbc 100644 --- a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/paragraphContinuation.json +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/lineBreaks.json @@ -4,7 +4,9 @@ "content": [ { "styles": {}, - "text": "Line one still same paragraph", + "text": "Line one + Line two + Line three", "type": "text", }, ], diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/paragraphLeadingIndent.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/paragraphLeadingIndent.json index b249d3a2d8..613cf56ae2 100644 --- a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/paragraphLeadingIndent.json +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/paragraphLeadingIndent.json @@ -4,7 +4,8 @@ "content": [ { "styles": {}, - "text": "aaa bbb", + "text": "aaa + bbb", "type": "text", }, ], diff --git a/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/singleNewLines.json b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/singleNewLines.json new file mode 100644 index 0000000000..3cd78e1f12 --- /dev/null +++ b/tests/src/unit/core/formatConversion/parse/__snapshots__/markdown/singleNewLines.json @@ -0,0 +1,22 @@ +[ + { + "children": [], + "content": [ + { + "styles": {}, + "text": "Line 1 + Line 2 + Line 3 + Line 4", + "type": "text", + }, + ], + "id": "1", + "props": { + "backgroundColor": "default", + "textAlignment": "left", + "textColor": "default", + }, + "type": "paragraph", + }, +] \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/parse/parseTestInstances.ts b/tests/src/unit/core/formatConversion/parse/parseTestInstances.ts index 0da7436615..5bb72fec41 100644 --- a/tests/src/unit/core/formatConversion/parse/parseTestInstances.ts +++ b/tests/src/unit/core/formatConversion/parse/parseTestInstances.ts @@ -1689,12 +1689,13 @@ Third paragraph`, }, executeTest: testParseMarkdown, }, - // Paragraph continuation (lines without blank line) + // Line breaks { testCase: { - name: "paragraphContinuation", + name: "lineBreaks", content: `Line one -still same paragraph`, +Line two +Line three`, }, executeTest: testParseMarkdown, }, From e077c1b840a36de963281dd7fa8ffa2e9625947a Mon Sep 17 00:00:00 2001 From: Nick Perez Date: Wed, 6 May 2026 17:50:16 +0200 Subject: [PATCH 52/76] fix(markdown): emit tight lists when serializing blocks to markdown (#2715) --- .../api/exporters/markdown/htmlToMarkdown.ts | 47 +++++++++++++++---- .../markdown/complex/document.md | 1 - .../__snapshots__/markdown/lists/basic.md | 4 -- .../__snapshots__/markdown/lists/nested.md | 6 --- .../markdown/lists/numberedListStart.md | 1 - 5 files changed, 37 insertions(+), 22 deletions(-) diff --git a/packages/core/src/api/exporters/markdown/htmlToMarkdown.ts b/packages/core/src/api/exporters/markdown/htmlToMarkdown.ts index 40c2542e6a..4d3f5f7c8a 100644 --- a/packages/core/src/api/exporters/markdown/htmlToMarkdown.ts +++ b/packages/core/src/api/exporters/markdown/htmlToMarkdown.ts @@ -15,13 +15,19 @@ export function htmlToMarkdown(html: string): string { // globally available in Node.js. const container = document.createElement("div"); container.innerHTML = html; - const result = serializeChildren(container, { indent: "", inList: false }); + const result = serializeChildren(container, { + indent: "", + inListItem: false, + }); return result.trim() + "\n"; } interface SerializeContext { indent: string; // current indentation prefix for list nesting - inList: boolean; // whether we're inside a list + // True when the current node is being serialized as continuation content + // of a parent list item. Used to suppress trailing blank lines that would + // otherwise turn the parent list into a "loose" list. + inListItem: boolean; } // ─── Main Serializer ───────────────────────────────────────────────────────── @@ -101,7 +107,7 @@ function serializeParagraph(el: HTMLElement, ctx: SerializeContext): string { const content = serializeInlineContent(el); // Trim leading/trailing hard breaks (matching remark behavior) const trimmed = trimHardBreaks(content); - if (ctx.inList) { + if (ctx.inListItem) { return trimmed; } return ctx.indent + trimmed + "\n\n"; @@ -130,7 +136,7 @@ function serializeBlockquote(el: HTMLElement, ctx: SerializeContext): string { if (tag === "p") { parts.push(serializeInlineContent(child as HTMLElement)); } else { - const innerCtx: SerializeContext = { indent: "", inList: false }; + const innerCtx: SerializeContext = { indent: "", inListItem: false }; parts.push(serializeNode(child, innerCtx).trim()); } } @@ -215,6 +221,12 @@ function serializeUnorderedList( result += serializeListItem(item as HTMLElement, "bullet", ctx); } + // Trailing blank line separates the list from the next block. Skip when + // this list is nested inside another list item — adding it would convert + // the parent list into a "loose" list (or break tightness). + if (!ctx.inListItem) { + result += "\n"; + } return result; } @@ -230,6 +242,9 @@ function serializeOrderedList(el: HTMLElement, ctx: SerializeContext): string { result += serializeListItem(items[i] as HTMLElement, "ordered", ctx, num); } + if (!ctx.inListItem) { + result += "\n"; + } return result; } @@ -284,11 +299,15 @@ function serializeListItem( inlineContent = firstContentEl ? serializeInlineContent(firstContentEl) : ""; } - let result = ctx.indent + marker + inlineContent + "\n\n"; + // The marker line ends with a single `\n` so that consecutive list items + // produce a "tight" list (no blank line between markers). Continuation + // content within the item (nested lists, continuation paragraphs, other + // blocks) injects its own spacing as needed. + let result = ctx.indent + marker + inlineContent + "\n"; // Serialize child content (nested lists, continuation paragraphs, etc.) const childIndent = ctx.indent + " ".repeat(markerWidth); - const childCtx: SerializeContext = { indent: childIndent, inList: true }; + const childCtx: SerializeContext = { indent: childIndent, inListItem: true }; // For toggle items, also serialize children inside the details element if (details) { @@ -298,7 +317,10 @@ function serializeListItem( const childTag = child.tagName.toLowerCase(); if (childTag === "p") { const content = serializeInlineContent(child as HTMLElement); - result += childIndent + content + "\n\n"; + // Continuation paragraph needs a blank line to separate it from the + // previous content; CommonMark would otherwise treat it as a soft + // wrap of that content. + result += "\n" + childIndent + content + "\n"; } else { result += serializeNode(child, childCtx); } @@ -315,13 +337,18 @@ function serializeListItem( // Nested lists and other block content if (childTag === "ul" || childTag === "ol") { + // Nested list flows directly under the parent marker — no blank line. result += serializeNode(child, childCtx); } else if (childTag === "p") { - // Continuation paragraph within list item + // Continuation paragraph within list item — requires blank line before + // so it isn't read as part of the marker line's text. const content = serializeInlineContent(child as HTMLElement); - result += childIndent + content + "\n\n"; + result += "\n" + childIndent + content + "\n"; } else { - result += serializeNode(child, childCtx); + // Other block-level children (code blocks, blockquotes, etc.) already + // emit their own separating newlines; prefix with a blank line so they + // are recognized as separate blocks. + result += "\n" + serializeNode(child, childCtx); } } diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/complex/document.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/complex/document.md index 6978c659f9..47cf4739db 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/complex/document.md +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/complex/document.md @@ -7,7 +7,6 @@ Introduction paragraph. Text with **bold** and [a link](https://example.com). * First point - * Second point *** diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/lists/basic.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/lists/basic.md index f092d8bf95..a083f00804 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/lists/basic.md +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/lists/basic.md @@ -1,13 +1,9 @@ * Bullet List Item 1 - * Bullet List Item 2 1. Numbered List Item 1 - 2. Numbered List Item 2 * [ ] Check List Item 1 - * [x] Check List Item 2 - * Toggle List Item 1 diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/lists/nested.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/lists/nested.md index c43ddb13ef..a0388ef96d 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/lists/nested.md +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/lists/nested.md @@ -1,13 +1,7 @@ * Bullet List Item 1 - * Bullet List Item 2 - 1. Numbered List Item 1 - 2. Numbered List Item 2 - * [ ] Check List Item 1 - * [x] Check List Item 2 - * Toggle List Item 1 diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/lists/numberedListStart.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/lists/numberedListStart.md index b924b4b407..bb4415d690 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/lists/numberedListStart.md +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/lists/numberedListStart.md @@ -1,3 +1,2 @@ 5. Item 5 - 6. Item 6 From b0d0985ce3f31b5c1a940676ee5c5e4144cc1d33 Mon Sep 17 00:00:00 2001 From: Nick Perez Date: Wed, 6 May 2026 17:51:39 +0200 Subject: [PATCH 53/76] fix(core): trigger codeblock input rule on Enter and place cursor inside (#2686) --- packages/core/src/blocks/Code/block.test.ts | 258 ++++++++++++++++++ .../editor/managers/ExtensionManager/index.ts | 105 +++++-- packages/xl-pdf-exporter/vite.config.ts | 1 + 3 files changed, 339 insertions(+), 25 deletions(-) create mode 100644 packages/core/src/blocks/Code/block.test.ts diff --git a/packages/core/src/blocks/Code/block.test.ts b/packages/core/src/blocks/Code/block.test.ts new file mode 100644 index 0000000000..b687c03b22 --- /dev/null +++ b/packages/core/src/blocks/Code/block.test.ts @@ -0,0 +1,258 @@ +import { afterAll, beforeAll, beforeEach, describe, expect, it } from "vitest"; +import { BlockNoteEditor } from "../../editor/BlockNoteEditor.js"; +import type { PartialBlock } from "../defaultBlocks.js"; +import { getLanguageId, type CodeBlockOptions } from "./block.js"; + +/** + * @vitest-environment jsdom + */ + +/** + * Simulate typing text into the editor at the current cursor position. + * This triggers input rules by calling the view's handleTextInput prop, + * which is how ProseMirror processes keyboard text input. + */ +function simulateTextInput(editor: BlockNoteEditor, text: string) { + const view = editor.prosemirrorView; + const { from, to } = view.state.selection; + const deflt = () => view.state.tr.insertText(text, from, to); + const handled = view.someProp("handleTextInput", (f) => + f(view, from, to, text, deflt), + ); + if (!handled) { + view.dispatch(deflt()); + } +} + +function typeString(editor: BlockNoteEditor, str: string) { + for (const char of str) { + simulateTextInput(editor, char); + } +} + +/** + * Simulate a keyboard shortcut by invoking the view's handleKeyDown prop, + * which is how ProseMirror routes keymap-based handlers like Enter. + */ +function pressKey(editor: BlockNoteEditor, key: string) { + const view = editor.prosemirrorView; + const event = new KeyboardEvent("keydown", { key }); + view.someProp("handleKeyDown", (f) => f(view, event)); +} + +describe("Code block input rule", () => { + let editor: BlockNoteEditor; + const div = document.createElement("div"); + + beforeAll(() => { + editor = BlockNoteEditor.create(); + editor.mount(div); + }); + + afterAll(() => { + editor._tiptapEditor.destroy(); + editor = undefined as any; + }); + + beforeEach(() => { + const testDoc: PartialBlock[] = [ + { + id: "test-paragraph", + type: "paragraph", + content: "", + }, + ]; + editor.replaceBlocks(editor.document, testDoc); + editor.setTextCursorPosition("test-paragraph", "start"); + }); + + it("converts ```ts + space into a codeBlock", () => { + typeString(editor, "```ts "); + + const block = editor.document[0]; + expect(block.type).toBe("codeBlock"); + // Without supportedLanguages configured, the raw alias is used + expect((block.props as any).language).toBe("ts"); + }); + + it("converts ``` + space into a codeBlock with empty language", () => { + typeString(editor, "``` "); + + const block = editor.document[0]; + expect(block.type).toBe("codeBlock"); + expect((block.props as any).language).toBe(""); + }); + + it("converts ```javascript + space into a codeBlock", () => { + typeString(editor, "```javascript "); + + const block = editor.document[0]; + expect(block.type).toBe("codeBlock"); + expect((block.props as any).language).toBe("javascript"); + }); + + it("does not trigger input rule without trailing space", () => { + typeString(editor, "```ts"); + + const block = editor.document[0]; + expect(block.type).toBe("paragraph"); + }); + + it("does not trigger with only two backticks", () => { + typeString(editor, "``ts "); + + const block = editor.document[0]; + expect(block.type).toBe("paragraph"); + }); + + it("does not trigger in non-empty paragraph with preceding text", () => { + typeString(editor, "some text ```ts "); + + const block = editor.document[0]; + // The ^ anchor in the regex means it only triggers at the start of a block + expect(block.type).toBe("paragraph"); + }); + + it("code block content is empty after conversion", () => { + typeString(editor, "```ts "); + + const block = editor.document[0]; + expect(block.type).toBe("codeBlock"); + expect(block.content).toEqual([]); + }); + + it("converts ```ts + Enter into a codeBlock", () => { + typeString(editor, "```ts"); + pressKey(editor, "Enter"); + + const block = editor.document[0]; + expect(block.type).toBe("codeBlock"); + expect((block.props as any).language).toBe("ts"); + expect(block.content).toEqual([]); + }); + + it("converts ``` + Enter into a codeBlock with empty language", () => { + typeString(editor, "```"); + pressKey(editor, "Enter"); + + const block = editor.document[0]; + expect(block.type).toBe("codeBlock"); + expect((block.props as any).language).toBe(""); + }); + + it("converts ```javascript + Enter into a codeBlock", () => { + typeString(editor, "```javascript"); + pressKey(editor, "Enter"); + + const block = editor.document[0]; + expect(block.type).toBe("codeBlock"); + expect((block.props as any).language).toBe("javascript"); + }); + + it("does not trigger Enter conversion in non-empty paragraph with preceding text", () => { + typeString(editor, "some text ```ts"); + pressKey(editor, "Enter"); + + const block = editor.document[0]; + expect(block.type).toBe("paragraph"); + }); + + it("does not trigger Enter conversion with only two backticks", () => { + typeString(editor, "``ts"); + pressKey(editor, "Enter"); + + const block = editor.document[0]; + expect(block.type).toBe("paragraph"); + }); + + it("places cursor inside the new code block after space conversion", () => { + typeString(editor, "```ts "); + + const block = editor.document[0]; + expect(block.type).toBe("codeBlock"); + + const { block: cursorBlock } = editor.getTextCursorPosition(); + expect(cursorBlock.id).toBe(block.id); + + // Typing should now go into the code block, not after it. + typeString(editor, "hello"); + const after = editor.document[0]; + expect(after.type).toBe("codeBlock"); + expect(after.id).toBe(block.id); + expect((after.content as Array<{ type: string; text: string }>)[0].text).toBe( + "hello", + ); + }); + + it("places cursor inside the new code block after Enter conversion", () => { + typeString(editor, "```ts"); + pressKey(editor, "Enter"); + + const block = editor.document[0]; + expect(block.type).toBe("codeBlock"); + + const { block: cursorBlock } = editor.getTextCursorPosition(); + expect(cursorBlock.id).toBe(block.id); + + typeString(editor, "world"); + const after = editor.document[0]; + expect(after.type).toBe("codeBlock"); + expect(after.id).toBe(block.id); + expect((after.content as Array<{ type: string; text: string }>)[0].text).toBe( + "world", + ); + }); + + it("Enter inside an existing code block does not retrigger conversion", () => { + typeString(editor, "```ts "); + + const block = editor.document[0]; + expect(block.type).toBe("codeBlock"); + + typeString(editor, "```js"); + pressKey(editor, "Enter"); + + // Enter inside a code block should insert a newline, not convert again. + const after = editor.document[0]; + expect(after.type).toBe("codeBlock"); + expect((after.props as any).language).toBe("ts"); + }); +}); + +describe("getLanguageId", () => { + const options: CodeBlockOptions = { + supportedLanguages: { + typescript: { + name: "TypeScript", + aliases: ["ts", "typescript"], + }, + javascript: { + name: "JavaScript", + aliases: ["js", "javascript"], + }, + python: { + name: "Python", + aliases: ["py", "python"], + }, + }, + }; + + it("resolves alias to language id", () => { + expect(getLanguageId(options, "ts")).toBe("typescript"); + expect(getLanguageId(options, "js")).toBe("javascript"); + expect(getLanguageId(options, "py")).toBe("python"); + }); + + it("resolves language id directly", () => { + expect(getLanguageId(options, "typescript")).toBe("typescript"); + expect(getLanguageId(options, "javascript")).toBe("javascript"); + }); + + it("returns undefined for unknown language", () => { + expect(getLanguageId(options, "unknown")).toBeUndefined(); + }); + + it("returns undefined with no supportedLanguages", () => { + expect(getLanguageId({}, "ts")).toBeUndefined(); + }); +}); diff --git a/packages/core/src/editor/managers/ExtensionManager/index.ts b/packages/core/src/editor/managers/ExtensionManager/index.ts index 67b50871ed..d34521fecc 100644 --- a/packages/core/src/editor/managers/ExtensionManager/index.ts +++ b/packages/core/src/editor/managers/ExtensionManager/index.ts @@ -7,8 +7,9 @@ import { Extension as TiptapExtension, } from "@tiptap/core"; import { keymap } from "@tiptap/pm/keymap"; -import { Plugin } from "prosemirror-state"; +import { Plugin, TextSelection } from "prosemirror-state"; import { updateBlockTr } from "../../../api/blockManipulation/commands/updateBlock/updateBlock.js"; +import { setTextCursorPosition } from "../../../api/blockManipulation/selections/textCursorPosition.js"; import { getBlockInfoFromTransaction } from "../../../api/getBlockInfoFromPos.js"; import { sortByDependencies } from "../../../util/topo-sort.js"; import type { @@ -369,7 +370,49 @@ export class ExtensionManager { // Append in reverse priority order rules.push(...inputRulesByPriority.get(priority)!); }); - return [inputRulesPlugin({ rules })]; + const inputRules = inputRulesPlugin({ rules }); + // Sidecar plugin: triggers the same input rules on Enter by + // delegating to the inputRules plugin's handleTextInput with a + // synthetic "\n" insertion. The handlewithcare regex `\s$` already + // matches `\n`, so any rule that fires on space fires on Enter too. + // We call its handleTextInput directly (rather than via + // view.someProp) so other plugins don't observe the synthetic input, + // and so the rule's undo metadata is keyed to the same plugin + // instance that Tiptap's `commands.undoInputRule` reads from. + const inputRulesEnter = new Plugin({ + props: { + handleKeyDown(view, event) { + if (event.key !== "Enter") { + return false; + } + // Only trigger on plain Enter — modifier combos like + // Shift/Cmd/Ctrl/Alt+Enter are reserved for other handlers + // (e.g. soft-break, submit) and should fall through. + if ( + event.shiftKey || + event.ctrlKey || + event.metaKey || + event.altKey + ) { + return false; + } + const { $cursor } = view.state.selection as TextSelection; + if (!$cursor) { + return false; + } + return !!inputRules.props.handleTextInput?.call( + inputRules, + view, + $cursor.pos, + $cursor.pos, + "\n", + () => + view.state.tr.insertText("\n", $cursor.pos, $cursor.pos), + ); + }, + }, + }); + return [inputRules, inputRulesEnter]; }, }), ); @@ -408,30 +451,42 @@ export class ExtensionManager { if (extension.inputRules?.length) { inputRules.push( ...extension.inputRules.map((inputRule) => { - return new InputRule(inputRule.find, (state, match, start, end) => { - const replaceWith = inputRule.replace({ - match, - range: { from: start, to: end }, - editor: this.editor, - }); - if (replaceWith) { - const cursorPosition = this.editor.getTextCursorPosition(); - - if ( - this.editor.schema.blockSchema[cursorPosition.block.type] - .content !== "inline" - ) { - return null; + return new InputRule( + inputRule.find, + (state, match, start, end) => { + const replaceWith = inputRule.replace({ + match, + range: { from: start, to: end }, + editor: this.editor, + }); + if (replaceWith) { + const tr = state.tr; + const blockInfo = getBlockInfoFromTransaction(tr); + + if ( + !blockInfo.isBlockContainer || + this.editor.schema.blockSchema[blockInfo.blockNoteType] + ?.content !== "inline" + ) { + return null; + } + + tr.deleteRange(start, end); + updateBlockTr(tr, blockInfo.bnBlock.beforePos, replaceWith); + // updateBlockTr's replaceWith path leaves the selection after + // the new block when the content is replaced wholesale (e.g. + // when the rule returns content: []). Move the cursor back + // inside the new block so the user can keep typing. + const blockId = blockInfo.bnBlock.node.attrs.id; + if (blockId) { + setTextCursorPosition(tr, blockId, "start"); + } + return tr; } - - const blockInfo = getBlockInfoFromTransaction(state.tr); - const tr = state.tr.deleteRange(start, end); - - updateBlockTr(tr, blockInfo.bnBlock.beforePos, replaceWith); - return tr; - } - return null; - }); + return null; + }, + { undoable: true }, + ); }), ); } diff --git a/packages/xl-pdf-exporter/vite.config.ts b/packages/xl-pdf-exporter/vite.config.ts index 0e3b6568f2..115ca2c340 100644 --- a/packages/xl-pdf-exporter/vite.config.ts +++ b/packages/xl-pdf-exporter/vite.config.ts @@ -9,6 +9,7 @@ export default defineConfig((conf) => ({ test: { environment: "jsdom", setupFiles: ["./vitestSetup.ts"], + testTimeout: 15000, // assetsInclude: [ // "**/*.woff", // "**/*.woff2", From 531ea324340036eb077c1c603faf42c9f8c9354e Mon Sep 17 00:00:00 2001 From: Nick Perez Date: Thu, 7 May 2026 06:00:59 +0200 Subject: [PATCH 54/76] fix(markdown): skip placeholder text for empty files (#434) (#2719) --- .../api/exporters/markdown/htmlToMarkdown.ts | 20 ++++++++++++------- packages/core/src/blocks/Audio/block.ts | 5 +---- packages/core/src/blocks/File/block.ts | 5 +---- packages/core/src/blocks/Image/block.ts | 5 +---- packages/core/src/blocks/Video/block.ts | 5 +---- .../__snapshots__/text/html/basicBlocks.html | 2 +- .../__snapshots__/html/audio/button.html | 2 +- .../__snapshots__/html/file/button.html | 2 +- .../__snapshots__/html/image/button.html | 2 +- .../__snapshots__/markdown/audio/button.md | 2 +- .../__snapshots__/markdown/file/button.md | 2 +- .../__snapshots__/markdown/image/button.md | 2 +- .../__snapshots__/html/reactFile/button.html | 2 +- .../__snapshots__/html/reactImage/button.html | 2 +- 14 files changed, 26 insertions(+), 32 deletions(-) diff --git a/packages/core/src/api/exporters/markdown/htmlToMarkdown.ts b/packages/core/src/api/exporters/markdown/htmlToMarkdown.ts index 4d3f5f7c8a..da63166851 100644 --- a/packages/core/src/api/exporters/markdown/htmlToMarkdown.ts +++ b/packages/core/src/api/exporters/markdown/htmlToMarkdown.ts @@ -84,6 +84,8 @@ function serializeNode(node: Node, ctx: SerializeContext): string { return serializeVideo(el, ctx); case "audio": return serializeAudio(el, ctx); + case "embed": + return serializeEmbed(el, ctx); case "figure": return serializeFigure(el, ctx); case "a": @@ -501,9 +503,9 @@ function formatSeparatorRow(colWidths: number[], colCount: number): string { function serializeImage(el: HTMLElement, ctx: SerializeContext): string { const src = el.getAttribute("src") || ""; const alt = el.getAttribute("alt") || ""; - if (!src) { - return ctx.indent + "Add image\n\n"; - } + // Empty placeholder — preserve the block-level break, matching how + // serializeParagraph/serializeHeading emit `\n\n` for empty content. + if (!src) {return "\n\n";} return ctx.indent + `![${alt}](${src})\n\n`; } @@ -511,19 +513,23 @@ function serializeVideo(el: HTMLElement, ctx: SerializeContext): string { const src = el.getAttribute("src") || el.getAttribute("data-url") || ""; const name = el.getAttribute("data-name") || el.getAttribute("title") || ""; - if (!src) { - return ctx.indent + "Add video\n\n"; - } + if (!src) {return "\n\n";} return ctx.indent + `![${name}](${src})\n\n`; } function serializeAudio(el: HTMLElement, ctx: SerializeContext): string { const src = el.getAttribute("src") || ""; - if (!src) {return "";} + if (!src) {return "\n\n";} // Audio has no visible representation in markdown; output as link with empty text return ctx.indent + `[](${src})\n\n`; } +function serializeEmbed(el: HTMLElement, ctx: SerializeContext): string { + const src = el.getAttribute("src") || ""; + if (!src) {return "\n\n";} + return ctx.indent + `[](${src})\n\n`; +} + function serializeFigure(el: HTMLElement, ctx: SerializeContext): string { let result = ""; diff --git a/packages/core/src/blocks/Audio/block.ts b/packages/core/src/blocks/Audio/block.ts index f271fcb16a..78722cf988 100644 --- a/packages/core/src/blocks/Audio/block.ts +++ b/packages/core/src/blocks/Audio/block.ts @@ -129,11 +129,8 @@ export const audioToExternalHTML = >, ) => { if (!block.props.url) { - const div = document.createElement("p"); - div.textContent = "Add audio"; - return { - dom: div, + dom: document.createElement("audio"), }; } diff --git a/packages/core/src/blocks/File/block.ts b/packages/core/src/blocks/File/block.ts index a506cc45a3..8e1ddf622f 100644 --- a/packages/core/src/blocks/File/block.ts +++ b/packages/core/src/blocks/File/block.ts @@ -75,11 +75,8 @@ export const createFileBlockSpec = createBlockSpec(createFileBlockConfig, { }, toExternalHTML(block) { if (!block.props.url) { - const div = document.createElement("p"); - div.textContent = "Add file"; - return { - dom: div, + dom: document.createElement("embed"), }; } diff --git a/packages/core/src/blocks/Image/block.ts b/packages/core/src/blocks/Image/block.ts index 83138c8842..503c483527 100644 --- a/packages/core/src/blocks/Image/block.ts +++ b/packages/core/src/blocks/Image/block.ts @@ -141,11 +141,8 @@ export const imageToExternalHTML = >, ) => { if (!block.props.url) { - const div = document.createElement("p"); - div.textContent = "Add image"; - return { - dom: div, + dom: document.createElement("img"), }; } diff --git a/packages/core/src/blocks/Video/block.ts b/packages/core/src/blocks/Video/block.ts index 026b333ba5..9d91ddb6f0 100644 --- a/packages/core/src/blocks/Video/block.ts +++ b/packages/core/src/blocks/Video/block.ts @@ -105,11 +105,8 @@ export const createVideoBlockSpec = createBlockSpec( }, toExternalHTML(block) { if (!block.props.url) { - const div = document.createElement("p"); - div.textContent = "Add video"; - return { - dom: div, + dom: document.createElement("video"), }; } diff --git a/tests/src/unit/core/clipboard/copy/__snapshots__/text/html/basicBlocks.html b/tests/src/unit/core/clipboard/copy/__snapshots__/text/html/basicBlocks.html index 0854870529..b59aa81d46 100644 --- a/tests/src/unit/core/clipboard/copy/__snapshots__/text/html/basicBlocks.html +++ b/tests/src/unit/core/clipboard/copy/__snapshots__/text/html/basicBlocks.html @@ -46,6 +46,6 @@

Heading 1

-

Add image

+

Paragraph 2

\ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/audio/button.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/audio/button.html index 51c429c20a..915743c700 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/html/audio/button.html +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/audio/button.html @@ -1 +1 @@ -

Add audio

\ No newline at end of file + \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/file/button.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/file/button.html index cc675c57a7..90ce06d701 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/html/file/button.html +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/file/button.html @@ -1 +1 @@ -

Add file

\ No newline at end of file + \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/html/image/button.html b/tests/src/unit/core/formatConversion/export/__snapshots__/html/image/button.html index 8553433aff..df18852143 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/html/image/button.html +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/html/image/button.html @@ -1 +1 @@ -

Add image

\ No newline at end of file + \ No newline at end of file diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/audio/button.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/audio/button.md index 7b4aa9de1b..8b13789179 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/audio/button.md +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/audio/button.md @@ -1 +1 @@ -Add audio + diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/file/button.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/file/button.md index 8d3fa6a207..8b13789179 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/file/button.md +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/file/button.md @@ -1 +1 @@ -Add file + diff --git a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/image/button.md b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/image/button.md index 02184caf8a..8b13789179 100644 --- a/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/image/button.md +++ b/tests/src/unit/core/formatConversion/export/__snapshots__/markdown/image/button.md @@ -1 +1 @@ -Add image + diff --git a/tests/src/unit/react/formatConversion/export/__snapshots__/html/reactFile/button.html b/tests/src/unit/react/formatConversion/export/__snapshots__/html/reactFile/button.html index cc675c57a7..90ce06d701 100644 --- a/tests/src/unit/react/formatConversion/export/__snapshots__/html/reactFile/button.html +++ b/tests/src/unit/react/formatConversion/export/__snapshots__/html/reactFile/button.html @@ -1 +1 @@ -

Add file

\ No newline at end of file + \ No newline at end of file diff --git a/tests/src/unit/react/formatConversion/export/__snapshots__/html/reactImage/button.html b/tests/src/unit/react/formatConversion/export/__snapshots__/html/reactImage/button.html index 8553433aff..df18852143 100644 --- a/tests/src/unit/react/formatConversion/export/__snapshots__/html/reactImage/button.html +++ b/tests/src/unit/react/formatConversion/export/__snapshots__/html/reactImage/button.html @@ -1 +1 @@ -

Add image

\ No newline at end of file + \ No newline at end of file From 1c720f228252c1d321b0edfd27f2e14ca31d615b Mon Sep 17 00:00:00 2001 From: Nick Perez Date: Thu, 7 May 2026 07:07:06 +0200 Subject: [PATCH 55/76] fix(markdown): stable round-trip for tables, captions, and audio (#2720) --- .../api/exporters/markdown/htmlToMarkdown.ts | 104 +++- .../api/parsers/markdown/markdownToHtml.ts | 57 ++- .../src/blocks/Video/parseVideoElement.ts | 3 +- .../ServerBlockNoteEditor.test.ts.snap | 27 +- .../blocknoteHTML/image/urlOnly.html | 28 ++ .../__snapshots__/html/image/urlOnly.html | 1 + .../__snapshots__/markdown/audio/basic.md | 2 +- .../__snapshots__/markdown/audio/noName.md | 2 +- .../__snapshots__/markdown/image/basic.md | 4 +- .../__snapshots__/markdown/image/nested.md | 8 +- .../__snapshots__/markdown/image/noName.md | 4 +- .../__snapshots__/markdown/image/urlOnly.md | 1 + .../markdown/image/withCaption.md | 4 +- .../markdown/video/withCaption.md | 4 +- .../__snapshots__/nodes/image/urlOnly.json | 22 + .../export/exportTestInstances.ts | 17 + .../markdown/markdown/defaultBlocks.json | 474 ++++++++++++++++++ .../markdown/markdown/table.json | 28 +- .../markdown/markdown/tableWithHeaderRow.json | 97 ++++ .../markdown/markdown/video.json | 2 +- .../exportParseEqualityTestInstances.ts | 163 ++++++ .../parse/__snapshots__/markdown/video.json | 2 +- 22 files changed, 936 insertions(+), 118 deletions(-) create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/blocknoteHTML/image/urlOnly.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/html/image/urlOnly.html create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/markdown/image/urlOnly.md create mode 100644 tests/src/unit/core/formatConversion/export/__snapshots__/nodes/image/urlOnly.json create mode 100644 tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/defaultBlocks.json create mode 100644 tests/src/unit/core/formatConversion/exportParseEquality/__snapshots__/markdown/markdown/tableWithHeaderRow.json diff --git a/packages/core/src/api/exporters/markdown/htmlToMarkdown.ts b/packages/core/src/api/exporters/markdown/htmlToMarkdown.ts index da63166851..7faa154dc6 100644 --- a/packages/core/src/api/exporters/markdown/htmlToMarkdown.ts +++ b/packages/core/src/api/exporters/markdown/htmlToMarkdown.ts @@ -520,8 +520,10 @@ function serializeVideo(el: HTMLElement, ctx: SerializeContext): string { function serializeAudio(el: HTMLElement, ctx: SerializeContext): string { const src = el.getAttribute("src") || ""; if (!src) {return "\n\n";} - // Audio has no visible representation in markdown; output as link with empty text - return ctx.indent + `[](${src})\n\n`; + // Audio has no markdown syntax, so emit raw HTML. The markdown parser + // passes