diff --git a/apps/web/src/components/ui/report/AppReport.stories.tsx b/apps/web/src/components/ui/report/AppReport.stories.tsx index 5fa7ab3fd..15b43795f 100644 --- a/apps/web/src/components/ui/report/AppReport.stories.tsx +++ b/apps/web/src/components/ui/report/AppReport.stories.tsx @@ -74,6 +74,10 @@ const sampleValue = [ type: 'code_block', lang: 'javascript', children: [{ text: 'const greeting = "Hello, World!";\nconsole.log(greeting);' }] + }, + { + type: 'h1', + children: [{ text: 'Hello' }] } ] satisfies ReportElement[]; @@ -92,37 +96,3 @@ export const ReadOnly: Story = { readOnly: true } }; - -export const Disabled: Story = { - args: { - value: plateValue, - disabled: true - } -}; - -export const Empty: Story = { - args: { - value: [] - } -}; - -// Example with inline type checking - this shows how to get compile-time errors for invalid types -export const TypeSafeExample: Story = { - args: { - value: [ - { - type: 'h1', - children: [{ text: 'Type Safe Example' }] - }, - { - type: 'p', - children: [{ text: 'This value is type-checked at compile time' }] - } - // Try uncommenting this to see the type error: - // { - // type: 'xxxh3', // TypeScript error: Type '"xxxh3"' is not assignable - // children: [{ text: 'This will error' }] - // }, - ] - } -}; diff --git a/apps/web/src/components/ui/report/elements/CodeBlockNode.tsx b/apps/web/src/components/ui/report/elements/CodeBlockNode.tsx index cf01fb401..6dae74e73 100644 --- a/apps/web/src/components/ui/report/elements/CodeBlockNode.tsx +++ b/apps/web/src/components/ui/report/elements/CodeBlockNode.tsx @@ -168,91 +168,91 @@ export function CodeSyntaxLeaf(props: PlateLeafProps) { const languages: { label: string; value: string }[] = [ { label: 'Auto', value: 'auto' }, { label: 'Plain Text', value: 'plaintext' }, - { label: 'ABAP', value: 'abap' }, - { label: 'Agda', value: 'agda' }, - { label: 'Arduino', value: 'arduino' }, - { label: 'ASCII Art', value: 'ascii' }, - { label: 'Assembly', value: 'x86asm' }, + // { label: 'ABAP', value: 'abap' }, + // { label: 'Agda', value: 'agda' }, + // { label: 'Arduino', value: 'arduino' }, + // { label: 'ASCII Art', value: 'ascii' }, + // { label: 'Assembly', value: 'x86asm' }, { label: 'Bash', value: 'bash' }, - { label: 'BASIC', value: 'basic' }, - { label: 'BNF', value: 'bnf' }, - { label: 'C', value: 'c' }, - { label: 'C#', value: 'csharp' }, - { label: 'C++', value: 'cpp' }, - { label: 'Clojure', value: 'clojure' }, - { label: 'CoffeeScript', value: 'coffeescript' }, - { label: 'Coq', value: 'coq' }, - { label: 'CSS', value: 'css' }, - { label: 'Dart', value: 'dart' }, - { label: 'Dhall', value: 'dhall' }, - { label: 'Diff', value: 'diff' }, - { label: 'Docker', value: 'dockerfile' }, - { label: 'EBNF', value: 'ebnf' }, - { label: 'Elixir', value: 'elixir' }, - { label: 'Elm', value: 'elm' }, - { label: 'Erlang', value: 'erlang' }, - { label: 'F#', value: 'fsharp' }, - { label: 'Flow', value: 'flow' }, - { label: 'Fortran', value: 'fortran' }, - { label: 'Gherkin', value: 'gherkin' }, - { label: 'GLSL', value: 'glsl' }, - { label: 'Go', value: 'go' }, - { label: 'GraphQL', value: 'graphql' }, - { label: 'Groovy', value: 'groovy' }, - { label: 'Haskell', value: 'haskell' }, - { label: 'HCL', value: 'hcl' }, - { label: 'HTML', value: 'html' }, - { label: 'Idris', value: 'idris' }, - { label: 'Java', value: 'java' }, + // { label: 'BASIC', value: 'basic' }, + // { label: 'BNF', value: 'bnf' }, + // { label: 'C', value: 'c' }, + // { label: 'C#', value: 'csharp' }, + // { label: 'C++', value: 'cpp' }, + // { label: 'Clojure', value: 'clojure' }, + // { label: 'CoffeeScript', value: 'coffeescript' }, + // { label: 'Coq', value: 'coq' }, + // { label: 'CSS', value: 'css' }, + // { label: 'Dart', value: 'dart' }, + // { label: 'Dhall', value: 'dhall' }, + // { label: 'Diff', value: 'diff' }, + // { label: 'Docker', value: 'dockerfile' }, + // { label: 'EBNF', value: 'ebnf' }, + // { label: 'Elixir', value: 'elixir' }, + // { label: 'Elm', value: 'elm' }, + // { label: 'Erlang', value: 'erlang' }, + // { label: 'F#', value: 'fsharp' }, + // { label: 'Flow', value: 'flow' }, + // { label: 'Fortran', value: 'fortran' }, + // { label: 'Gherkin', value: 'gherkin' }, + // { label: 'GLSL', value: 'glsl' }, + // { label: 'Go', value: 'go' }, + // { label: 'GraphQL', value: 'graphql' }, + // { label: 'Groovy', value: 'groovy' }, + // { label: 'Haskell', value: 'haskell' }, + // { label: 'HCL', value: 'hcl' }, + // { label: 'HTML', value: 'html' }, + // { label: 'Idris', value: 'idris' }, + // { label: 'Java', value: 'java' }, { label: 'JavaScript', value: 'javascript' }, { label: 'JSON', value: 'json' }, - { label: 'Julia', value: 'julia' }, - { label: 'Kotlin', value: 'kotlin' }, - { label: 'LaTeX', value: 'latex' }, - { label: 'Less', value: 'less' }, - { label: 'Lisp', value: 'lisp' }, - { label: 'LiveScript', value: 'livescript' }, - { label: 'LLVM IR', value: 'llvm' }, - { label: 'Lua', value: 'lua' }, - { label: 'Makefile', value: 'makefile' }, - { label: 'Markdown', value: 'markdown' }, - { label: 'Markup', value: 'markup' }, - { label: 'MATLAB', value: 'matlab' }, - { label: 'Mathematica', value: 'mathematica' }, - { label: 'Mermaid', value: 'mermaid' }, - { label: 'Nix', value: 'nix' }, - { label: 'Notion Formula', value: 'notion' }, - { label: 'Objective-C', value: 'objectivec' }, - { label: 'OCaml', value: 'ocaml' }, - { label: 'Pascal', value: 'pascal' }, - { label: 'Perl', value: 'perl' }, - { label: 'PHP', value: 'php' }, - { label: 'PowerShell', value: 'powershell' }, - { label: 'Prolog', value: 'prolog' }, - { label: 'Protocol Buffers', value: 'protobuf' }, - { label: 'PureScript', value: 'purescript' }, - { label: 'Python', value: 'python' }, - { label: 'R', value: 'r' }, - { label: 'Racket', value: 'racket' }, - { label: 'Reason', value: 'reasonml' }, - { label: 'Ruby', value: 'ruby' }, - { label: 'Rust', value: 'rust' }, - { label: 'Sass', value: 'scss' }, - { label: 'Scala', value: 'scala' }, - { label: 'Scheme', value: 'scheme' }, - { label: 'SCSS', value: 'scss' }, - { label: 'Shell', value: 'shell' }, - { label: 'Smalltalk', value: 'smalltalk' }, - { label: 'Solidity', value: 'solidity' }, + // { label: 'Julia', value: 'julia' }, + // { label: 'Kotlin', value: 'kotlin' }, + // { label: 'LaTeX', value: 'latex' }, + // { label: 'Less', value: 'less' }, + // { label: 'Lisp', value: 'lisp' }, + // { label: 'LiveScript', value: 'livescript' }, + // { label: 'LLVM IR', value: 'llvm' }, + // { label: 'Lua', value: 'lua' }, + // { label: 'Makefile', value: 'makefile' }, + // { label: 'Markdown', value: 'markdown' }, + // { label: 'Markup', value: 'markup' }, + // { label: 'MATLAB', value: 'matlab' }, + // { label: 'Mathematica', value: 'mathematica' }, + // { label: 'Mermaid', value: 'mermaid' }, + // { label: 'Nix', value: 'nix' }, + // { label: 'Notion Formula', value: 'notion' }, + // { label: 'Objective-C', value: 'objectivec' }, + // { label: 'OCaml', value: 'ocaml' }, + // { label: 'Pascal', value: 'pascal' }, + // { label: 'Perl', value: 'perl' }, + // { label: 'PHP', value: 'php' }, + // { label: 'PowerShell', value: 'powershell' }, + // { label: 'Prolog', value: 'prolog' }, + // { label: 'Protocol Buffers', value: 'protobuf' }, + // { label: 'PureScript', value: 'purescript' }, + // { label: 'Python', value: 'python' }, + // { label: 'R', value: 'r' }, + // { label: 'Racket', value: 'racket' }, + // { label: 'Reason', value: 'reasonml' }, + // { label: 'Ruby', value: 'ruby' }, + // { label: 'Rust', value: 'rust' }, + // { label: 'Sass', value: 'scss' }, + // { label: 'Scala', value: 'scala' }, + // { label: 'Scheme', value: 'scheme' }, + // { label: 'SCSS', value: 'scss' }, + // { label: 'Shell', value: 'shell' }, + // { label: 'Smalltalk', value: 'smalltalk' }, + // { label: 'Solidity', value: 'solidity' }, { label: 'SQL', value: 'sql' }, - { label: 'Swift', value: 'swift' }, - { label: 'TOML', value: 'toml' }, + // { label: 'Swift', value: 'swift' }, + // { label: 'TOML', value: 'toml' }, { label: 'TypeScript', value: 'typescript' }, - { label: 'VB.Net', value: 'vbnet' }, - { label: 'Verilog', value: 'verilog' }, - { label: 'VHDL', value: 'vhdl' }, - { label: 'Visual Basic', value: 'vbnet' }, - { label: 'WebAssembly', value: 'wasm' }, - { label: 'XML', value: 'xml' }, + // { label: 'VB.Net', value: 'vbnet' }, + // { label: 'Verilog', value: 'verilog' }, + // { label: 'VHDL', value: 'vhdl' }, + // { label: 'Visual Basic', value: 'vbnet' }, + // { label: 'WebAssembly', value: 'wasm' }, + // { label: 'XML', value: 'xml' }, { label: 'YAML', value: 'yaml' } ]; diff --git a/apps/web/src/components/ui/report/plugins/code-block-kit.tsx b/apps/web/src/components/ui/report/plugins/code-block-kit.tsx index e686d89e6..a98a4f720 100644 --- a/apps/web/src/components/ui/report/plugins/code-block-kit.tsx +++ b/apps/web/src/components/ui/report/plugins/code-block-kit.tsx @@ -2,6 +2,9 @@ import { CodeBlockPlugin, CodeLinePlugin, CodeSyntaxPlugin } from '@platejs/code-block/react'; import { createLowlight } from 'lowlight'; +import { KEYS, type AnyPluginConfig } from 'platejs'; + +import { ExitBreakRule } from '@udecode/plate-break'; import { CodeBlockElement, CodeLineElement, CodeSyntaxLeaf } from '../elements/CodeBlockNode'; import sql from 'highlight.js/lib/languages/sql'; @@ -16,58 +19,19 @@ lowlight.register('yaml', yaml); lowlight.register('javascript', javascript); lowlight.register('typescript', typescript); -export const CodeBlockKit = [ +export const CodeBlockKit: AnyPluginConfig[] = [ CodeBlockPlugin.configure({ node: { component: CodeBlockElement // Removed isVoid: true as it prevents content from displaying }, options: { lowlight, defaultLanguage: 'sql' }, + rules: { + // When pressing Enter at the end of a code block, create a paragraph + break: { empty: 'reset' } + }, shortcuts: { toggle: { keys: 'mod+alt+8' } - // Add shortcuts for easy deletion - // deleteBackward: { - // keys: 'Backspace', - // handler: ({ editor }) => { - // // Check if there's a selection - // if (!editor.selection) return false; - - // // Find the current CodeBlock node - // const codeBlockEntry = editor.api.above({ - // match: { type: 'code_block' }, - // at: editor.selection - // }); - - // if (codeBlockEntry) { - // // Remove the entire CodeBlock node - // editor.tf.removeNodes({ at: codeBlockEntry[1] }); - // return true; // Prevent default backspace behavior - // } - - // return false; // Allow default behavior if not in a code block - // } - // }, - // deleteForward: { - // keys: 'Delete', - // handler: ({ editor }) => { - // // Check if there's a selection - // if (!editor.selection) return false; - - // // Find the current CodeBlock node - // const codeBlockEntry = editor.api.above({ - // match: { type: 'code_block' }, - // at: editor.selection - // }); - - // if (codeBlockEntry) { - // // Remove the entire CodeBlock node - // editor.tf.removeNodes({ at: codeBlockEntry[1] }); - // return true; // Prevent default delete behavior - // } - - // return false; // Allow default behavior if not in a code block - // } - // } } }), CodeLinePlugin.withComponent(CodeLineElement), diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3860c5024..a48ec5d36 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -422,6 +422,9 @@ importers: '@udecode/cn': specifier: ^49.0.15 version: 49.0.15(@types/react@18.3.23)(class-variance-authority@0.7.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(tailwind-merge@3.3.1) + '@udecode/plate-break': + specifier: ^49.0.0 + version: 49.0.0(@udecode/plate@49.0.0(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) axios: specifier: ^1.11.0 version: 1.11.0 @@ -5705,18 +5708,57 @@ packages: react-dom: '>=18.0.0' tailwind-merge: '>=2.2.0' + '@udecode/plate-break@49.0.0': + resolution: {integrity: sha512-0ej9Yj1s1hZoZJf74hsVrtEKbDzWEfza0lD2dYkp86MsPpern4LKA+FHiQmtrq8XOkC4jqrWKDLWluH3En1dXg==} + deprecated: Package no longer supported, use @platejs/utils instead. + peerDependencies: + '@udecode/plate': '>=49.0.0' + react: '>=18.0.0' + react-dom: '>=18.0.0' + + '@udecode/plate-core@49.0.0': + resolution: {integrity: sha512-KaLv2coeHWy/Q3L9ldMXqfVK/d17EnyiMNH39M2iW3NSG6PZ1Kr9i43/z2u59pwFIUlJd4yt/g9idz8jgaWXfw==} + deprecated: Package no longer supported, use @platejs/core instead. + peerDependencies: + react: '>=18.0.0' + react-dom: '>=18.0.0' + + '@udecode/plate-utils@49.0.0': + resolution: {integrity: sha512-WkU+PQIhJ4vrrbPMb2SqfjURV3HxmHky7O4TvaKAVhGdo9L0Rql9TKfO6OKt+kF7dD7VaYf0dZcdWLgM6dDONA==} + deprecated: Package no longer supported, use @platejs/utils instead. + peerDependencies: + react: '>=18.0.0' + react-dom: '>=18.0.0' + + '@udecode/plate@49.0.0': + resolution: {integrity: sha512-jhvQ47+lxiEzUEmXMWBK5YpAT1rIFxf78zoiH98r2CQ9NsZrBqce4onCQ684o5EhU0/7MpHBOqRkBuPnZWtFZA==} + deprecated: Package no longer supported, use platejs instead. + peerDependencies: + react: '>=18.0.0' + react-dom: '>=18.0.0' + '@udecode/react-hotkeys@37.0.0': resolution: {integrity: sha512-3ZV5LiaTnKyhXwN6U0NE2cofNsNN2IPMkNCDntbSIIRLYmI+o6LRkDwAucSNh/BIdNXfvxscsR04RYyIwjGbJw==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' + '@udecode/react-utils@47.3.1': + resolution: {integrity: sha512-fHnY0RGOeKKPnFW8xx8VWlLI0yscHd/kIU5t0bZ5bJ7Vanlhk1CUnPGDNa5HCIMVQrLARngGut/lIyGtoF65EQ==} + peerDependencies: + react: '>=18.0.0' + react-dom: '>=18.0.0' + '@udecode/react-utils@49.0.15': resolution: {integrity: sha512-ra9e0WyECZEnOLyW1nf4pqGBBTLcktHfFhL+qlr7woMAwmNHs7HLbw/khoKfpSFt2RgjieE+QhawT6haFQAuhA==} peerDependencies: react: '>=18.0.0' react-dom: '>=18.0.0' + '@udecode/slate@49.0.0': + resolution: {integrity: sha512-WttifcApSM+KNNivTC64XtgsRL4+OJ03qEaQmuW04Uoh8tKK/z5DePCRwWL19d+jkrPiPtzSB2/edtNJUhtgRQ==} + deprecated: Package no longer supported, use @platejs/slate instead. + '@udecode/utils@47.2.7': resolution: {integrity: sha512-tQ8tIcdW+ZqWWrDgyf/moTLWtcErcHxaOfuCD/6qIL5hCq+jZm67nGHQToOT4Czti5Jr7CDPMgr8lYpdTEZcew==} @@ -8595,6 +8637,18 @@ packages: jotai: '>=2.0.0' optics-ts: '>=2.0.0' + jotai-x@2.3.2: + resolution: {integrity: sha512-WjOfSO4lZBtuy7igTcJ8ZMq9zf/MfjnJnMgsdLNLZrFeiaAWif7Kh/kXwIG4dFMLTOFZ9Bf96bztv21VBcTB0g==} + peerDependencies: + '@types/react': '>=17.0.0' + jotai: '>=2.0.0' + react: '>=17.0.0' + peerDependenciesMeta: + '@types/react': + optional: true + react: + optional: true + jotai-x@2.3.3: resolution: {integrity: sha512-ZeSPjf77VINlJ0HyMfYcPv/9psjB0CtJIZP6S+s/eefaO/9+U37M9Jx5dWmILgTe8hAol99EbAv6DDrHobOucA==} peerDependencies: @@ -10747,6 +10801,11 @@ packages: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} + slate-dom@0.114.0: + resolution: {integrity: sha512-3LWIfiDPNQSY+SCPsvMTErCkx2gXTViLoWISisw6uM+unwiOkEF9ZmpHp88/SSmcq6k3P4aIquehUNeNUlkdiA==} + peerDependencies: + slate: '>=0.99.0' + slate-dom@0.116.0: resolution: {integrity: sha512-ZyyPdT4zY4d/P/gfqMWBaAWWqV3N2BbAiDqEfOtZwPLcy7vvC02PsVvSZLaGun7DvaM2EIqdN7tTq3REbQkYgA==} peerDependencies: @@ -10757,6 +10816,14 @@ packages: peerDependencies: slate: '>=0.65.3' + slate-react@0.114.2: + resolution: {integrity: sha512-yqJnX1/7A30szl9BxW3qX99MZy6mM6VtUi1rXTy0JpRMTKv3rduo0WOxqcX90tpt0ke2pzHGbrLLr1buIN4vrw==} + peerDependencies: + react: '>=18.2.0' + react-dom: '>=18.2.0' + slate: '>=0.114.0' + slate-dom: '>=0.110.2' + slate-react@0.117.1: resolution: {integrity: sha512-zwcuXRzSTMk6L1ILUC6PhEqwSIHKUq9ry13oL2ul2zKsCr6J+aVDoyU2K+IW+hk+c/8VW6U0/jUSl8mZgBc9kA==} peerDependencies: @@ -10765,6 +10832,9 @@ packages: slate: '>=0.114.0' slate-dom: '>=0.116.0' + slate@0.114.0: + resolution: {integrity: sha512-r3KHl22433DlN5BpLAlL4b3D8ItoGKAkj91YT6GhP39XuLoBT+YFd9ObKuL/okgiPb5lbwnW+71fM45hHceN9w==} + slate@0.117.0: resolution: {integrity: sha512-qPReb7Z7OQ5ryoStjlnC9tQd3294SdV5Y1aLjstAK/zckfvVYApI3GVdOawFdPgI+++KpZYiz6EHjwJGFVdbmA==} @@ -18231,11 +18301,96 @@ snapshots: transitivePeerDependencies: - '@types/react' + '@udecode/plate-break@49.0.0(@udecode/plate@49.0.0(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@udecode/plate': 49.0.0(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + + '@udecode/plate-core@49.0.0(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1))': + dependencies: + '@udecode/react-hotkeys': 37.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@udecode/react-utils': 47.3.1(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@udecode/slate': 49.0.0 + '@udecode/utils': 47.2.7 + clsx: 2.1.1 + html-entities: 2.6.0 + is-hotkey: 0.2.0 + jotai: 2.8.4(@types/react@18.3.23)(react@18.3.1) + jotai-optics: 0.4.0(jotai@2.8.4(@types/react@18.3.23)(react@18.3.1))(optics-ts@2.4.1) + jotai-x: 2.3.2(@types/react@18.3.23)(jotai@2.8.4(@types/react@18.3.23)(react@18.3.1))(react@18.3.1) + lodash: 4.17.21 + nanoid: 5.1.5 + optics-ts: 2.4.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + slate-hyperscript: 0.100.0(slate@0.117.0) + slate-react: 0.114.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0) + use-deep-compare: 1.3.0(react@18.3.1) + zustand: 5.0.6(@types/react@18.3.23)(immer@10.1.1)(react@18.3.1)(use-sync-external-store@1.5.0(react@18.3.1)) + zustand-x: 6.1.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(zustand@5.0.6(@types/react@18.3.23)(immer@10.1.1)(react@18.3.1)(use-sync-external-store@1.5.0(react@18.3.1))) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler + - slate + - slate-dom + - use-sync-external-store + + '@udecode/plate-utils@49.0.0(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1))': + dependencies: + '@udecode/plate-core': 49.0.0(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)) + '@udecode/react-utils': 47.3.1(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@udecode/slate': 49.0.0 + '@udecode/utils': 47.2.7 + clsx: 2.1.1 + lodash: 4.17.21 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler + - slate + - slate-dom + - use-sync-external-store + + '@udecode/plate@49.0.0(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1))': + dependencies: + '@udecode/plate-core': 49.0.0(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)) + '@udecode/plate-utils': 49.0.0(@types/react@18.3.23)(immer@10.1.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(scheduler@0.23.2)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0)(use-sync-external-store@1.5.0(react@18.3.1)) + '@udecode/react-hotkeys': 37.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@udecode/react-utils': 47.3.1(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@udecode/slate': 49.0.0 + '@udecode/utils': 47.2.7 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + - immer + - react-native + - scheduler + - slate + - slate-dom + - use-sync-external-store + '@udecode/react-hotkeys@37.0.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) + '@udecode/react-utils@47.3.1(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@radix-ui/react-slot': 1.2.3(@types/react@18.3.23)(react@18.3.1) + '@udecode/utils': 47.2.7 + clsx: 2.1.1 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + transitivePeerDependencies: + - '@types/react' + '@udecode/react-utils@49.0.15(@types/react@18.3.23)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/react-slot': 1.2.3(@types/react@18.3.23)(react@18.3.1) @@ -18246,6 +18401,14 @@ snapshots: transitivePeerDependencies: - '@types/react' + '@udecode/slate@49.0.0': + dependencies: + '@udecode/utils': 47.2.7 + is-plain-object: 5.0.0 + lodash: 4.17.21 + slate: 0.114.0 + slate-dom: 0.114.0(slate@0.114.0) + '@udecode/utils@47.2.7': {} '@ungap/structured-clone@1.3.0': {} @@ -21513,6 +21676,13 @@ snapshots: jotai: 2.8.4(@types/react@18.3.23)(react@18.3.1) optics-ts: 2.4.1 + jotai-x@2.3.2(@types/react@18.3.23)(jotai@2.8.4(@types/react@18.3.23)(react@18.3.1))(react@18.3.1): + dependencies: + jotai: 2.8.4(@types/react@18.3.23)(react@18.3.1) + optionalDependencies: + '@types/react': 18.3.23 + react: 18.3.1 + jotai-x@2.3.3(@types/react@18.3.23)(jotai@2.8.4(@types/react@18.3.23)(react@18.3.1))(react@18.3.1): dependencies: jotai: 2.8.4(@types/react@18.3.23)(react@18.3.1) @@ -24137,6 +24307,17 @@ snapshots: slash@3.0.0: {} + slate-dom@0.114.0(slate@0.114.0): + dependencies: + '@juggle/resize-observer': 3.4.0 + direction: 1.0.4 + is-hotkey: 0.2.0 + is-plain-object: 5.0.0 + lodash: 4.17.21 + scroll-into-view-if-needed: 3.1.0 + slate: 0.114.0 + tiny-invariant: 1.3.1 + slate-dom@0.116.0(slate@0.117.0): dependencies: '@juggle/resize-observer': 3.4.0 @@ -24153,6 +24334,20 @@ snapshots: is-plain-object: 5.0.0 slate: 0.117.0 + slate-react@0.114.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0): + dependencies: + '@juggle/resize-observer': 3.4.0 + direction: 1.0.4 + is-hotkey: 0.2.0 + is-plain-object: 5.0.0 + lodash: 4.17.21 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + scroll-into-view-if-needed: 3.1.0 + slate: 0.117.0 + slate-dom: 0.116.0(slate@0.117.0) + tiny-invariant: 1.3.1 + slate-react@0.117.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(slate-dom@0.116.0(slate@0.117.0))(slate@0.117.0): dependencies: '@juggle/resize-observer': 3.4.0 @@ -24166,6 +24361,12 @@ snapshots: slate-dom: 0.116.0(slate@0.117.0) tiny-invariant: 1.3.1 + slate@0.114.0: + dependencies: + immer: 10.1.1 + is-plain-object: 5.0.0 + tiny-warning: 1.0.3 + slate@0.117.0: dependencies: immer: 10.1.1