diff --git a/.changeset/dirty-mangos-cover.md b/.changeset/dirty-mangos-cover.md new file mode 100644 index 0000000000..dd9ec576f2 --- /dev/null +++ b/.changeset/dirty-mangos-cover.md @@ -0,0 +1,5 @@ +--- +'@udecode/plate-heading': patch +--- + +- Use `useEditorScrollRef` instead of `useEditorContainerRef` diff --git a/.changeset/sour-files-drum.md b/.changeset/sour-files-drum.md new file mode 100644 index 0000000000..af3dbcb0cd --- /dev/null +++ b/.changeset/sour-files-drum.md @@ -0,0 +1,6 @@ +--- +'@udecode/plate-core': patch +--- + +- Add `scrollRef` in Plate store +- Add `useEditorScrollRef` to get the scroll container ref, that can be used in plugins to control the scroll position diff --git a/apps/www/content/docs/api/core.mdx b/apps/www/content/docs/api/core.mdx index f033d49df0..c8f572e8a6 100644 --- a/apps/www/content/docs/api/core.mdx +++ b/apps/www/content/docs/api/core.mdx @@ -160,6 +160,32 @@ a A new `PlatePlugin` with precise type control. +### useEditorContainerRef + +Get the editor container DOM reference. + + + + The ID of the plate editor. Default is using the closest editor id. + + + + A React ref object containing the editor container DOM element. + + +### useEditorScrollRef + +Get the editor scroll container reference. Returns the scroll ref if it exists, otherwise returns the container ref. + + + + The ID of the plate editor. Default is using the closest editor id. + + + + A React ref object containing either the scroll container or the editor container DOM element. + + ### useEditorPlugin Get editor and plugin context. diff --git a/apps/www/content/docs/block-selection.mdx b/apps/www/content/docs/block-selection.mdx index 478b2e6570..b862570054 100644 --- a/apps/www/content/docs/block-selection.mdx +++ b/apps/www/content/docs/block-selection.mdx @@ -92,7 +92,7 @@ BlockSelectionPlugin.configure({ useing `options.areaOptions.behaviour.scrolling.speedDivider` to set the scroll speed. -The value of `1.5` is our recommended speed.Since it's same with the default speed of the browser. +The value of `1.5` is our recommended speed since it's near the browser-native speed. ```ts diff --git a/apps/www/content/docs/components/changelog.mdx b/apps/www/content/docs/components/changelog.mdx index 3059826548..99d0aa7aa2 100644 --- a/apps/www/content/docs/components/changelog.mdx +++ b/apps/www/content/docs/components/changelog.mdx @@ -11,6 +11,10 @@ Use the [CLI](https://platejs.org/docs/components/cli) to install the latest ver ## November 2024 #16 +### November 13 #16.6 + +- `resizable`: hide `ResizeHandle` when read-only + ### November 8 #16.5 - Add this to your tailwind config: diff --git a/apps/www/public/r/styles/default/ai-plugins.json b/apps/www/public/r/styles/default/ai-plugins.json index 18f90c7bfe..b9b1aaa0d5 100644 --- a/apps/www/public/r/styles/default/ai-plugins.json +++ b/apps/www/public/r/styles/default/ai-plugins.json @@ -7,12 +7,11 @@ "@udecode/plate-heading", "@udecode/plate-horizontal-rule", "@udecode/plate-link", - "@udecode/plate-markdown", - "@udecode/plate-selection" + "@udecode/plate-markdown" ], "files": [ { - "content": "'use client';\n\nimport React from 'react';\n\nimport { withProps } from '@udecode/cn';\nimport { AIChatPlugin, AIPlugin } from '@udecode/plate-ai/react';\nimport {\n BoldPlugin,\n CodePlugin,\n ItalicPlugin,\n StrikethroughPlugin,\n UnderlinePlugin,\n} from '@udecode/plate-basic-marks/react';\nimport { BlockquotePlugin } from '@udecode/plate-block-quote/react';\nimport {\n CodeBlockPlugin,\n CodeLinePlugin,\n CodeSyntaxPlugin,\n} from '@udecode/plate-code-block/react';\nimport {\n ParagraphPlugin,\n PlateLeaf,\n createPlateEditor,\n} from '@udecode/plate-common/react';\nimport { HEADING_KEYS } from '@udecode/plate-heading';\nimport { HorizontalRulePlugin } from '@udecode/plate-horizontal-rule/react';\nimport { LinkPlugin } from '@udecode/plate-link/react';\nimport { MarkdownPlugin } from '@udecode/plate-markdown';\nimport { BlockSelectionPlugin } from '@udecode/plate-selection/react';\n\nimport { AIMenu } from '@/components/plate-ui/ai-menu';\nimport { BlockquoteElement } from '@/components/plate-ui/blockquote-element';\nimport { CodeBlockElement } from '@/components/plate-ui/code-block-element';\nimport { CodeLeaf } from '@/components/plate-ui/code-leaf';\nimport { CodeLineElement } from '@/components/plate-ui/code-line-element';\nimport { CodeSyntaxLeaf } from '@/components/plate-ui/code-syntax-leaf';\nimport { HeadingElement } from '@/components/plate-ui/heading-element';\nimport { HrElement } from '@/components/plate-ui/hr-element';\nimport { LinkElement } from '@/components/plate-ui/link-element';\nimport { ParagraphElement } from '@/components/plate-ui/paragraph-element';\n\nimport { basicNodesPlugins } from './basic-nodes-plugins';\nimport { indentListPlugins } from './indent-list-plugins';\nimport { linkPlugin } from './link-plugin';\n\nconst createAIEditor = () => {\n const editor = createPlateEditor({\n id: 'ai',\n override: {\n components: {\n [BlockquotePlugin.key]: BlockquoteElement,\n [BoldPlugin.key]: withProps(PlateLeaf, { as: 'strong' }),\n [CodeBlockPlugin.key]: CodeBlockElement,\n [CodeLinePlugin.key]: CodeLineElement,\n [CodePlugin.key]: CodeLeaf,\n [CodeSyntaxPlugin.key]: CodeSyntaxLeaf,\n [HEADING_KEYS.h1]: withProps(HeadingElement, { variant: 'h1' }),\n [HEADING_KEYS.h2]: withProps(HeadingElement, { variant: 'h2' }),\n [HEADING_KEYS.h3]: withProps(HeadingElement, { variant: 'h3' }),\n [HorizontalRulePlugin.key]: HrElement,\n [ItalicPlugin.key]: withProps(PlateLeaf, { as: 'em' }),\n [LinkPlugin.key]: LinkElement,\n [ParagraphPlugin.key]: ParagraphElement,\n [StrikethroughPlugin.key]: withProps(PlateLeaf, { as: 's' }),\n [UnderlinePlugin.key]: withProps(PlateLeaf, { as: 'u' }),\n },\n },\n plugins: [\n ParagraphPlugin,\n ...basicNodesPlugins,\n HorizontalRulePlugin,\n linkPlugin,\n ...indentListPlugins,\n MarkdownPlugin.configure({ options: { indentList: true } }),\n // FIXME\n BlockSelectionPlugin.configure({\n api: {},\n extendEditor: null,\n options: {},\n render: {},\n useHooks: null,\n handlers: {},\n }),\n ],\n value: [{ children: [{ text: '' }], type: 'p' }],\n });\n\n return editor;\n};\n\nconst systemCommon = `\\\nYou are an advanced AI-powered note-taking assistant, designed to enhance productivity and creativity in note management.\nRespond directly to user prompts with clear, concise, and relevant content. Maintain a neutral, helpful tone.\n\nRules:\n- is the entire note the user is working on.\n- is a reminder of how you should reply to INSTRUCTIONS. It does not apply to questions.\n- Anything else is the user prompt.\n- Your response should be tailored to the user's prompt, providing precise assistance to optimize note management.\n- For INSTRUCTIONS: Follow the exactly. Provide ONLY the content to be inserted or replaced. No explanations or comments.\n- For QUESTIONS: Provide a helpful and concise answer. You may include brief explanations if necessary.\n- CRITICAL: Distinguish between INSTRUCTIONS and QUESTIONS. Instructions typically ask you to modify or add content. Questions ask for information or clarification.\n`;\n\nconst systemDefault = `\\\n${systemCommon}\n- is the current block of text the user is working on.\n- Ensure your output can seamlessly fit into the existing structure.\n- CRITICAL: Provide only a single block of text. DO NOT create multiple paragraphs or separate blocks.\n\n{block}\n\n`;\n\nconst systemSelecting = `\\\n${systemCommon}\n- is the block of text containing the user's selection, providing context.\n- Ensure your output can seamlessly fit into the existing structure.\n- is the specific text the user has selected in the block and wants to modify or ask about.\n- Consider the context provided by , but only modify . Your response should be a direct replacement for .\n\n{block}\n\n\n{selection}\n\n`;\n\nconst systemBlockSelecting = `\\\n${systemCommon}\n- represents the full blocks of text the user has selected and wants to modify or ask about.\n- Your response should be a direct replacement for the entire .\n- Maintain the overall structure and formatting of the selected blocks, unless explicitly instructed otherwise.\n- CRITICAL: Provide only the content to replace . Do not add additional blocks or change the block structure unless specifically requested.\n\n{block}\n\n`;\n\nconst userDefault = `\nCRITICAL: DO NOT use block formatting. You can only use inline formatting.\nCRITICAL: DO NOT start new lines or paragraphs.\nNEVER write .\n\n{prompt}`;\n\nconst userSelecting = `\nIf this is a question, provide a helpful and concise answer about .\nIf this is an instruction, provide ONLY the text to replace . No explanations.\nEnsure it fits seamlessly within . If is empty, write ONE random sentence.\nNEVER write or .\n\n{prompt} about `;\n\nconst userBlockSelecting = `\nIf this is a question, provide a helpful and concise answer about .\nIf this is an instruction, provide ONLY the content to replace the entire . No explanations.\nMaintain the overall structure unless instructed otherwise.\nNEVER write or .\n\n{prompt} about `;\n\nexport const PROMPT_TEMPLATES = {\n systemBlockSelecting,\n systemDefault,\n systemSelecting,\n userBlockSelecting,\n userDefault,\n userSelecting,\n};\n\nexport const aiPlugins = [\n MarkdownPlugin.configure({ options: { indentList: true } }),\n AIPlugin,\n AIChatPlugin.configure({\n options: {\n createAIEditor,\n promptTemplate: ({ isBlockSelecting, isSelecting }) => {\n return isBlockSelecting\n ? PROMPT_TEMPLATES.userBlockSelecting\n : isSelecting\n ? PROMPT_TEMPLATES.userSelecting\n : PROMPT_TEMPLATES.userDefault;\n },\n systemTemplate: ({ isBlockSelecting, isSelecting }) => {\n return isBlockSelecting\n ? PROMPT_TEMPLATES.systemBlockSelecting\n : isSelecting\n ? PROMPT_TEMPLATES.systemSelecting\n : PROMPT_TEMPLATES.systemDefault;\n },\n },\n render: { afterEditable: () => },\n }),\n] as const;\n", + "content": "'use client';\n\nimport React from 'react';\n\nimport { withProps } from '@udecode/cn';\nimport { AIChatPlugin, AIPlugin } from '@udecode/plate-ai/react';\nimport {\n BoldPlugin,\n CodePlugin,\n ItalicPlugin,\n StrikethroughPlugin,\n UnderlinePlugin,\n} from '@udecode/plate-basic-marks/react';\nimport { BlockquotePlugin } from '@udecode/plate-block-quote/react';\nimport {\n CodeBlockPlugin,\n CodeLinePlugin,\n CodeSyntaxPlugin,\n} from '@udecode/plate-code-block/react';\nimport {\n ParagraphPlugin,\n PlateLeaf,\n createPlateEditor,\n} from '@udecode/plate-common/react';\nimport { HEADING_KEYS } from '@udecode/plate-heading';\nimport { HorizontalRulePlugin } from '@udecode/plate-horizontal-rule/react';\nimport { LinkPlugin } from '@udecode/plate-link/react';\nimport { MarkdownPlugin } from '@udecode/plate-markdown';\n\nimport { cursorOverlayPlugin } from '@/components/editor/plugins/cursor-overlay-plugin';\nimport { AIMenu } from '@/components/plate-ui/ai-menu';\nimport { BlockquoteElement } from '@/components/plate-ui/blockquote-element';\nimport { CodeBlockElement } from '@/components/plate-ui/code-block-element';\nimport { CodeLeaf } from '@/components/plate-ui/code-leaf';\nimport { CodeLineElement } from '@/components/plate-ui/code-line-element';\nimport { CodeSyntaxLeaf } from '@/components/plate-ui/code-syntax-leaf';\nimport { HeadingElement } from '@/components/plate-ui/heading-element';\nimport { HrElement } from '@/components/plate-ui/hr-element';\nimport { LinkElement } from '@/components/plate-ui/link-element';\nimport { ParagraphElement } from '@/components/plate-ui/paragraph-element';\n\nimport { basicNodesPlugins } from './basic-nodes-plugins';\nimport { blockSelectionReadOnlyPlugin } from './block-selection-plugins';\nimport { indentListPlugins } from './indent-list-plugins';\nimport { linkPlugin } from './link-plugin';\n\nconst createAIEditor = () => {\n const editor = createPlateEditor({\n id: 'ai',\n override: {\n components: {\n [BlockquotePlugin.key]: BlockquoteElement,\n [BoldPlugin.key]: withProps(PlateLeaf, { as: 'strong' }),\n [CodeBlockPlugin.key]: CodeBlockElement,\n [CodeLinePlugin.key]: CodeLineElement,\n [CodePlugin.key]: CodeLeaf,\n [CodeSyntaxPlugin.key]: CodeSyntaxLeaf,\n [HEADING_KEYS.h1]: withProps(HeadingElement, { variant: 'h1' }),\n [HEADING_KEYS.h2]: withProps(HeadingElement, { variant: 'h2' }),\n [HEADING_KEYS.h3]: withProps(HeadingElement, { variant: 'h3' }),\n [HorizontalRulePlugin.key]: HrElement,\n [ItalicPlugin.key]: withProps(PlateLeaf, { as: 'em' }),\n [LinkPlugin.key]: LinkElement,\n [ParagraphPlugin.key]: ParagraphElement,\n [StrikethroughPlugin.key]: withProps(PlateLeaf, { as: 's' }),\n [UnderlinePlugin.key]: withProps(PlateLeaf, { as: 'u' }),\n },\n },\n plugins: [\n ...basicNodesPlugins,\n ...indentListPlugins,\n HorizontalRulePlugin,\n linkPlugin,\n MarkdownPlugin.configure({ options: { indentList: true } }),\n blockSelectionReadOnlyPlugin,\n ],\n });\n\n return editor;\n};\n\nconst systemCommon = `\\\nYou are an advanced AI-powered note-taking assistant, designed to enhance productivity and creativity in note management.\nRespond directly to user prompts with clear, concise, and relevant content. Maintain a neutral, helpful tone.\n\nRules:\n- is the entire note the user is working on.\n- is a reminder of how you should reply to INSTRUCTIONS. It does not apply to questions.\n- Anything else is the user prompt.\n- Your response should be tailored to the user's prompt, providing precise assistance to optimize note management.\n- For INSTRUCTIONS: Follow the exactly. Provide ONLY the content to be inserted or replaced. No explanations or comments.\n- For QUESTIONS: Provide a helpful and concise answer. You may include brief explanations if necessary.\n- CRITICAL: Distinguish between INSTRUCTIONS and QUESTIONS. Instructions typically ask you to modify or add content. Questions ask for information or clarification.\n`;\n\nconst systemDefault = `\\\n${systemCommon}\n- is the current block of text the user is working on.\n- Ensure your output can seamlessly fit into the existing structure.\n- CRITICAL: Provide only a single block of text. DO NOT create multiple paragraphs or separate blocks.\n\n{block}\n\n`;\n\nconst systemSelecting = `\\\n${systemCommon}\n- is the block of text containing the user's selection, providing context.\n- Ensure your output can seamlessly fit into the existing structure.\n- is the specific text the user has selected in the block and wants to modify or ask about.\n- Consider the context provided by , but only modify . Your response should be a direct replacement for .\n\n{block}\n\n\n{selection}\n\n`;\n\nconst systemBlockSelecting = `\\\n${systemCommon}\n- represents the full blocks of text the user has selected and wants to modify or ask about.\n- Your response should be a direct replacement for the entire .\n- Maintain the overall structure and formatting of the selected blocks, unless explicitly instructed otherwise.\n- CRITICAL: Provide only the content to replace . Do not add additional blocks or change the block structure unless specifically requested.\n\n{block}\n\n`;\n\nconst userDefault = `\nCRITICAL: DO NOT use block formatting. You can only use inline formatting.\nCRITICAL: DO NOT start new lines or paragraphs.\nNEVER write .\n\n{prompt}`;\n\nconst userSelecting = `\nIf this is a question, provide a helpful and concise answer about .\nIf this is an instruction, provide ONLY the text to replace . No explanations.\nEnsure it fits seamlessly within . If is empty, write ONE random sentence.\nNEVER write or .\n\n{prompt} about `;\n\nconst userBlockSelecting = `\nIf this is a question, provide a helpful and concise answer about .\nIf this is an instruction, provide ONLY the content to replace the entire . No explanations.\nMaintain the overall structure unless instructed otherwise.\nNEVER write or .\n\n{prompt} about `;\n\nexport const PROMPT_TEMPLATES = {\n systemBlockSelecting,\n systemDefault,\n systemSelecting,\n userBlockSelecting,\n userDefault,\n userSelecting,\n};\n\nexport const aiPlugins = [\n cursorOverlayPlugin,\n MarkdownPlugin.configure({ options: { indentList: true } }),\n AIPlugin,\n AIChatPlugin.configure({\n options: {\n createAIEditor,\n promptTemplate: ({ isBlockSelecting, isSelecting }) => {\n return isBlockSelecting\n ? PROMPT_TEMPLATES.userBlockSelecting\n : isSelecting\n ? PROMPT_TEMPLATES.userSelecting\n : PROMPT_TEMPLATES.userDefault;\n },\n systemTemplate: ({ isBlockSelecting, isSelecting }) => {\n return isBlockSelecting\n ? PROMPT_TEMPLATES.systemBlockSelecting\n : isSelecting\n ? PROMPT_TEMPLATES.systemSelecting\n : PROMPT_TEMPLATES.systemDefault;\n },\n },\n render: { afterEditable: () => },\n }),\n] as const;\n", "path": "components/editor/plugins/ai-plugins.tsx", "target": "components/editor/plugins/ai-plugins.tsx", "type": "registry:component" @@ -21,6 +20,8 @@ "name": "ai-plugins", "registryDependencies": [ "basic-nodes-plugins", + "block-selection-plugins", + "cursor-overlay-plugin", "indent-list-plugins", "link-plugin", "ai-menu", diff --git a/apps/www/public/r/styles/default/block-selection-plugins.json b/apps/www/public/r/styles/default/block-selection-plugins.json index 09be42384b..2b6049ba63 100644 --- a/apps/www/public/r/styles/default/block-selection-plugins.json +++ b/apps/www/public/r/styles/default/block-selection-plugins.json @@ -4,7 +4,7 @@ ], "files": [ { - "content": "'use client';\n\nimport { BlockSelectionPlugin } from '@udecode/plate-selection/react';\n\nexport const blockSelectionPlugins = [\n BlockSelectionPlugin.configure({\n inject: {\n excludeBelowPlugins: ['tr'],\n excludePlugins: ['table', 'code_line', 'column_group', 'column'],\n },\n options: {\n areaOptions: {\n behaviour: {\n scrolling: {\n speedDivider: 1.5,\n },\n startThreshold: 4,\n },\n },\n enableContextMenu: true,\n },\n }),\n] as const;\n", + "content": "'use client';\n\nimport { BlockSelectionPlugin } from '@udecode/plate-selection/react';\n\nexport const blockSelectionPlugins = [\n BlockSelectionPlugin.configure({\n inject: {\n excludeBelowPlugins: ['tr'],\n excludePlugins: ['table', 'code_line', 'column_group', 'column'],\n },\n options: {\n areaOptions: {\n behaviour: {\n scrolling: {\n speedDivider: 1.5,\n },\n startThreshold: 4,\n },\n },\n enableContextMenu: true,\n },\n }),\n] as const;\n\nexport const blockSelectionReadOnlyPlugin = BlockSelectionPlugin.configure({\n api: {},\n extendEditor: null,\n options: {},\n render: {},\n useHooks: null,\n handlers: {},\n});\n", "path": "components/editor/plugins/block-selection-plugins.ts", "target": "components/editor/plugins/block-selection-plugins.ts", "type": "registry:component" diff --git a/apps/www/public/r/styles/default/cursor-overlay-plugin.json b/apps/www/public/r/styles/default/cursor-overlay-plugin.json new file mode 100644 index 0000000000..547de77c40 --- /dev/null +++ b/apps/www/public/r/styles/default/cursor-overlay-plugin.json @@ -0,0 +1,18 @@ +{ + "dependencies": [ + "@udecode/plate-selection" + ], + "files": [ + { + "content": "'use client';\n\nimport { CursorOverlayPlugin } from '@udecode/plate-selection/react';\n\nimport { CursorOverlay } from '@/components/plate-ui/cursor-overlay';\n\nexport const cursorOverlayPlugin = CursorOverlayPlugin.configure({\n render: {\n afterEditable: () => ,\n },\n});\n", + "path": "components/editor/plugins/cursor-overlay-plugin.tsx", + "target": "components/editor/plugins/cursor-overlay-plugin.tsx", + "type": "registry:component" + } + ], + "name": "cursor-overlay-plugin", + "registryDependencies": [ + "cursor-overlay" + ], + "type": "registry:component" +} \ No newline at end of file diff --git a/apps/www/public/r/styles/default/editor-basic.json b/apps/www/public/r/styles/default/editor-basic.json index abb17070bf..3177538874 100644 --- a/apps/www/public/r/styles/default/editor-basic.json +++ b/apps/www/public/r/styles/default/editor-basic.json @@ -18,7 +18,7 @@ "type": "registry:component" }, { - "content": "'use client';\n\nimport { withProps } from '@udecode/cn';\nimport { BasicElementsPlugin } from '@udecode/plate-basic-elements/react';\nimport {\n BasicMarksPlugin,\n BoldPlugin,\n ItalicPlugin,\n StrikethroughPlugin,\n UnderlinePlugin,\n} from '@udecode/plate-basic-marks/react';\nimport {\n ParagraphPlugin,\n PlateElement,\n PlateLeaf,\n usePlateEditor,\n} from '@udecode/plate-common/react';\n\nexport const useCreateEditor = () => {\n return usePlateEditor({\n override: {\n // Default styles in globals.css\n components: {\n [BoldPlugin.key]: withProps(PlateLeaf, { as: 'strong' }),\n [ItalicPlugin.key]: withProps(PlateLeaf, { as: 'em' }),\n [ParagraphPlugin.key]: withProps(PlateElement, {\n as: 'p',\n className: 'mb-4',\n }),\n [StrikethroughPlugin.key]: withProps(PlateLeaf, { as: 's' }),\n [UnderlinePlugin.key]: withProps(PlateLeaf, { as: 'u' }),\n blockquote: withProps(PlateElement, {\n as: 'blockquote',\n className: 'mb-4 border-l-4 border-[#d0d7de] pl-4 text-[#636c76]',\n }),\n h1: withProps(PlateElement, {\n as: 'h1',\n className:\n 'mb-4 mt-6 text-3xl font-semibold tracking-tight lg:text-4xl',\n }),\n h2: withProps(PlateElement, {\n as: 'h2',\n className: 'mb-4 mt-6 text-2xl font-semibold tracking-tight',\n }),\n h3: withProps(PlateElement, {\n as: 'h3',\n className: 'mb-4 mt-6 text-xl font-semibold tracking-tight',\n }),\n },\n },\n plugins: [BasicElementsPlugin, BasicMarksPlugin],\n value: [\n {\n children: [{ text: 'Basic Editor' }],\n type: 'h1',\n },\n {\n children: [{ text: 'Heading 2' }],\n type: 'h2',\n },\n {\n children: [{ text: 'Heading 3' }],\n type: 'h3',\n },\n {\n children: [{ text: 'This is a blockquote element' }],\n type: 'blockquote',\n },\n {\n children: [\n { text: 'Basic marks: ' },\n { bold: true, text: 'bold' },\n { text: ', ' },\n { italic: true, text: 'italic' },\n { text: ', ' },\n { text: 'underline', underline: true },\n { text: ', ' },\n { strikethrough: true, text: 'strikethrough' },\n { text: '.' },\n ],\n type: ParagraphPlugin.key,\n },\n ],\n });\n};\n", + "content": "'use client';\n\nimport { withProps } from '@udecode/cn';\nimport { BasicElementsPlugin } from '@udecode/plate-basic-elements/react';\nimport {\n BasicMarksPlugin,\n BoldPlugin,\n ItalicPlugin,\n StrikethroughPlugin,\n UnderlinePlugin,\n} from '@udecode/plate-basic-marks/react';\nimport {\n ParagraphPlugin,\n PlateElement,\n PlateLeaf,\n usePlateEditor,\n} from '@udecode/plate-common/react';\n\nexport const useCreateEditor = () => {\n return usePlateEditor({\n override: {\n components: {\n [BoldPlugin.key]: withProps(PlateLeaf, { as: 'strong' }),\n [ItalicPlugin.key]: withProps(PlateLeaf, { as: 'em' }),\n [ParagraphPlugin.key]: withProps(PlateElement, {\n as: 'p',\n className: 'mb-4',\n }),\n [StrikethroughPlugin.key]: withProps(PlateLeaf, { as: 's' }),\n [UnderlinePlugin.key]: withProps(PlateLeaf, { as: 'u' }),\n blockquote: withProps(PlateElement, {\n as: 'blockquote',\n className: 'mb-4 border-l-4 border-[#d0d7de] pl-4 text-[#636c76]',\n }),\n h1: withProps(PlateElement, {\n as: 'h1',\n className:\n 'mb-4 mt-6 text-3xl font-semibold tracking-tight lg:text-4xl',\n }),\n h2: withProps(PlateElement, {\n as: 'h2',\n className: 'mb-4 mt-6 text-2xl font-semibold tracking-tight',\n }),\n h3: withProps(PlateElement, {\n as: 'h3',\n className: 'mb-4 mt-6 text-xl font-semibold tracking-tight',\n }),\n },\n },\n plugins: [BasicElementsPlugin, BasicMarksPlugin],\n value: [\n {\n children: [{ text: 'Basic Editor' }],\n type: 'h1',\n },\n {\n children: [{ text: 'Heading 2' }],\n type: 'h2',\n },\n {\n children: [{ text: 'Heading 3' }],\n type: 'h3',\n },\n {\n children: [{ text: 'This is a blockquote element' }],\n type: 'blockquote',\n },\n {\n children: [\n { text: 'Basic marks: ' },\n { bold: true, text: 'bold' },\n { text: ', ' },\n { italic: true, text: 'italic' },\n { text: ', ' },\n { text: 'underline', underline: true },\n { text: ', ' },\n { strikethrough: true, text: 'strikethrough' },\n { text: '.' },\n ],\n type: ParagraphPlugin.key,\n },\n ],\n });\n};\n", "path": "block/editor-basic/components/editor/use-create-editor.tsx", "target": "components/editor/use-create-editor.tsx", "type": "registry:component" diff --git a/apps/www/public/r/styles/default/resizable.json b/apps/www/public/r/styles/default/resizable.json index 5d90490e6f..8978380ac1 100644 --- a/apps/www/public/r/styles/default/resizable.json +++ b/apps/www/public/r/styles/default/resizable.json @@ -16,7 +16,7 @@ }, "files": [ { - "content": "'use client';\n\nimport React from 'react';\n\nimport { cn, withRef, withVariants } from '@udecode/cn';\nimport {\n Resizable as ResizablePrimitive,\n ResizeHandle as ResizeHandlePrimitive,\n} from '@udecode/plate-resizable';\nimport { cva } from 'class-variance-authority';\n\nexport const mediaResizeHandleVariants = cva(\n cn(\n 'top-0 flex w-6 select-none flex-col justify-center',\n \"after:flex after:h-16 after:w-[3px] after:rounded-[6px] after:bg-ring after:opacity-0 after:content-['_'] group-hover:after:opacity-100\"\n ),\n {\n variants: {\n direction: {\n left: '-left-3 -ml-3 pl-3',\n right: '-right-3 -mr-3 items-end pr-3',\n },\n },\n }\n);\n\nconst resizeHandleVariants = cva(cn('absolute z-40'), {\n variants: {\n direction: {\n bottom: 'w-full cursor-row-resize',\n left: 'h-full cursor-col-resize',\n right: 'h-full cursor-col-resize',\n top: 'w-full cursor-row-resize',\n },\n },\n});\n\nconst ResizeHandleVariants = withVariants(\n ResizeHandlePrimitive,\n resizeHandleVariants,\n ['direction']\n);\n\nexport const ResizeHandle = withRef(\n (props, ref) => (\n \n )\n);\n\nconst resizableVariants = cva('', {\n variants: {\n align: {\n center: 'mx-auto',\n left: 'mr-auto',\n right: 'ml-auto',\n },\n },\n});\n\nexport const Resizable = withVariants(ResizablePrimitive, resizableVariants, [\n 'align',\n]);\n", + "content": "'use client';\n\nimport React from 'react';\n\nimport { cn, createPrimitiveElement, withRef, withVariants } from '@udecode/cn';\nimport {\n type ResizeHandle as ResizeHandlePrimitive,\n Resizable as ResizablePrimitive,\n useResizeHandle,\n useResizeHandleState,\n} from '@udecode/plate-resizable';\nimport { cva } from 'class-variance-authority';\n\nexport const mediaResizeHandleVariants = cva(\n cn(\n 'top-0 flex w-6 select-none flex-col justify-center',\n \"after:flex after:h-16 after:w-[3px] after:rounded-[6px] after:bg-ring after:opacity-0 after:content-['_'] group-hover:after:opacity-100\"\n ),\n {\n variants: {\n direction: {\n left: '-left-3 -ml-3 pl-3',\n right: '-right-3 -mr-3 items-end pr-3',\n },\n },\n }\n);\n\nconst resizeHandleVariants = cva(cn('absolute z-40'), {\n variants: {\n direction: {\n bottom: 'w-full cursor-row-resize',\n left: 'h-full cursor-col-resize',\n right: 'h-full cursor-col-resize',\n top: 'w-full cursor-row-resize',\n },\n },\n});\n\nconst ResizeHandleVariants = withVariants(\n createPrimitiveElement('div'),\n resizeHandleVariants,\n ['direction']\n);\n\nexport const ResizeHandle = withRef(\n ({ options, ...props }, ref) => {\n const state = useResizeHandleState(options ?? {});\n const resizeHandle = useResizeHandle(state);\n\n if (state.readOnly) return null;\n\n return (\n \n );\n }\n);\n\nconst resizableVariants = cva('', {\n variants: {\n align: {\n center: 'mx-auto',\n left: 'mr-auto',\n right: 'ml-auto',\n },\n },\n});\n\nexport const Resizable = withVariants(ResizablePrimitive, resizableVariants, [\n 'align',\n]);\n", "path": "plate-ui/resizable.tsx", "target": "components/plate-ui/resizable.tsx", "type": "registry:ui" diff --git a/apps/www/src/__registry__/index.tsx b/apps/www/src/__registry__/index.tsx index 32a3cf6184..bde83db01b 100644 --- a/apps/www/src/__registry__/index.tsx +++ b/apps/www/src/__registry__/index.tsx @@ -1077,7 +1077,7 @@ export const Index: Record = { name: "ai-plugins", description: "", type: "registry:component", - registryDependencies: ["basic-nodes-plugins","indent-list-plugins","link-plugin","ai-menu","blockquote-element","code-block-element","code-leaf","code-line-element","code-syntax-leaf","cursor-overlay","heading-element","hr-element","link-element","paragraph-element"], + registryDependencies: ["basic-nodes-plugins","block-selection-plugins","cursor-overlay-plugin","indent-list-plugins","link-plugin","ai-menu","blockquote-element","code-block-element","code-leaf","code-line-element","code-syntax-leaf","cursor-overlay","heading-element","hr-element","link-element","paragraph-element"], files: ["registry/default/components/editor/plugins/ai-plugins.tsx"], component: React.lazy(() => import("@/registry/default/components/editor/plugins/ai-plugins.tsx")), source: "", @@ -1169,6 +1169,18 @@ export const Index: Record = { subcategory: "", chunks: [] }, + "cursor-overlay-plugin": { + name: "cursor-overlay-plugin", + description: "", + type: "registry:component", + registryDependencies: ["cursor-overlay"], + files: ["registry/default/components/editor/plugins/cursor-overlay-plugin.tsx"], + component: React.lazy(() => import("@/registry/default/components/editor/plugins/cursor-overlay-plugin.tsx")), + source: "", + category: "", + subcategory: "", + chunks: [] + }, "copilot-plugins": { name: "copilot-plugins", description: "", diff --git a/apps/www/src/registry/default/block/editor-basic/components/editor/use-create-editor.tsx b/apps/www/src/registry/default/block/editor-basic/components/editor/use-create-editor.tsx index ef89c6c2dd..b84b16c066 100644 --- a/apps/www/src/registry/default/block/editor-basic/components/editor/use-create-editor.tsx +++ b/apps/www/src/registry/default/block/editor-basic/components/editor/use-create-editor.tsx @@ -19,7 +19,6 @@ import { export const useCreateEditor = () => { return usePlateEditor({ override: { - // Default styles in globals.css components: { [BoldPlugin.key]: withProps(PlateLeaf, { as: 'strong' }), [ItalicPlugin.key]: withProps(PlateLeaf, { as: 'em' }), diff --git a/apps/www/src/registry/default/components/editor/plugins/ai-plugins.tsx b/apps/www/src/registry/default/components/editor/plugins/ai-plugins.tsx index 09762f7dfa..cde23f15a1 100644 --- a/apps/www/src/registry/default/components/editor/plugins/ai-plugins.tsx +++ b/apps/www/src/registry/default/components/editor/plugins/ai-plugins.tsx @@ -26,8 +26,8 @@ import { HEADING_KEYS } from '@udecode/plate-heading'; import { HorizontalRulePlugin } from '@udecode/plate-horizontal-rule/react'; import { LinkPlugin } from '@udecode/plate-link/react'; import { MarkdownPlugin } from '@udecode/plate-markdown'; -import { BlockSelectionPlugin } from '@udecode/plate-selection/react'; +import { cursorOverlayPlugin } from '@/registry/default/components/editor/plugins/cursor-overlay-plugin'; import { AIMenu } from '@/registry/default/plate-ui/ai-menu'; import { BlockquoteElement } from '@/registry/default/plate-ui/blockquote-element'; import { CodeBlockElement } from '@/registry/default/plate-ui/code-block-element'; @@ -40,6 +40,7 @@ import { LinkElement } from '@/registry/default/plate-ui/link-element'; import { ParagraphElement } from '@/registry/default/plate-ui/paragraph-element'; import { basicNodesPlugins } from './basic-nodes-plugins'; +import { blockSelectionReadOnlyPlugin } from './block-selection-plugins'; import { indentListPlugins } from './indent-list-plugins'; import { linkPlugin } from './link-plugin'; @@ -66,23 +67,13 @@ const createAIEditor = () => { }, }, plugins: [ - ParagraphPlugin, ...basicNodesPlugins, + ...indentListPlugins, HorizontalRulePlugin, linkPlugin, - ...indentListPlugins, MarkdownPlugin.configure({ options: { indentList: true } }), - // FIXME - BlockSelectionPlugin.configure({ - api: {}, - extendEditor: null, - options: {}, - render: {}, - useHooks: null, - handlers: {}, - }), + blockSelectionReadOnlyPlugin, ], - value: [{ children: [{ text: '' }], type: 'p' }], }); return editor; @@ -170,6 +161,7 @@ export const PROMPT_TEMPLATES = { }; export const aiPlugins = [ + cursorOverlayPlugin, MarkdownPlugin.configure({ options: { indentList: true } }), AIPlugin, AIChatPlugin.configure({ diff --git a/apps/www/src/registry/default/components/editor/plugins/block-selection-plugins.ts b/apps/www/src/registry/default/components/editor/plugins/block-selection-plugins.ts index ab35e38f68..eb855ab3c7 100644 --- a/apps/www/src/registry/default/components/editor/plugins/block-selection-plugins.ts +++ b/apps/www/src/registry/default/components/editor/plugins/block-selection-plugins.ts @@ -21,3 +21,12 @@ export const blockSelectionPlugins = [ }, }), ] as const; + +export const blockSelectionReadOnlyPlugin = BlockSelectionPlugin.configure({ + api: {}, + extendEditor: null, + options: {}, + render: {}, + useHooks: null, + handlers: {}, +}); diff --git a/apps/www/src/registry/default/components/editor/plugins/cursor-overlay-plugin.tsx b/apps/www/src/registry/default/components/editor/plugins/cursor-overlay-plugin.tsx new file mode 100644 index 0000000000..0fd2a1009e --- /dev/null +++ b/apps/www/src/registry/default/components/editor/plugins/cursor-overlay-plugin.tsx @@ -0,0 +1,11 @@ +'use client'; + +import { CursorOverlayPlugin } from '@udecode/plate-selection/react'; + +import { CursorOverlay } from '@/registry/default/plate-ui/cursor-overlay'; + +export const cursorOverlayPlugin = CursorOverlayPlugin.configure({ + render: { + afterEditable: () => , + }, +}); diff --git a/apps/www/src/registry/default/plate-ui/resizable.tsx b/apps/www/src/registry/default/plate-ui/resizable.tsx index f78842a2a8..71b0dba4d7 100644 --- a/apps/www/src/registry/default/plate-ui/resizable.tsx +++ b/apps/www/src/registry/default/plate-ui/resizable.tsx @@ -2,10 +2,12 @@ import React from 'react'; -import { cn, withRef, withVariants } from '@udecode/cn'; +import { cn, createPrimitiveElement, withRef, withVariants } from '@udecode/cn'; import { + type ResizeHandle as ResizeHandlePrimitive, Resizable as ResizablePrimitive, - ResizeHandle as ResizeHandlePrimitive, + useResizeHandle, + useResizeHandleState, } from '@udecode/plate-resizable'; import { cva } from 'class-variance-authority'; @@ -36,19 +38,28 @@ const resizeHandleVariants = cva(cn('absolute z-40'), { }); const ResizeHandleVariants = withVariants( - ResizeHandlePrimitive, + createPrimitiveElement('div'), resizeHandleVariants, ['direction'] ); export const ResizeHandle = withRef( - (props, ref) => ( - - ) + ({ options, ...props }, ref) => { + const state = useResizeHandleState(options ?? {}); + const resizeHandle = useResizeHandle(state); + + if (state.readOnly) return null; + + return ( + + ); + } ); const resizableVariants = cva('', { diff --git a/apps/www/src/registry/registry-components.ts b/apps/www/src/registry/registry-components.ts index c40f71038a..90f0baeea4 100644 --- a/apps/www/src/registry/registry-components.ts +++ b/apps/www/src/registry/registry-components.ts @@ -53,12 +53,13 @@ const plugins: Registry = [ '@udecode/plate-horizontal-rule', '@udecode/plate-link', '@udecode/plate-markdown', - '@udecode/plate-selection', ], files: ['components/editor/plugins/ai-plugins.tsx'], name: 'ai-plugins', registryDependencies: [ 'basic-nodes-plugins', + 'block-selection-plugins', + 'cursor-overlay-plugin', 'indent-list-plugins', 'link-plugin', 'ai-menu', @@ -149,6 +150,13 @@ const plugins: Registry = [ registryDependencies: ['comments-popover'], type: 'registry:component', }, + { + dependencies: ['@udecode/plate-selection'], + files: ['components/editor/plugins/cursor-overlay-plugin.tsx'], + name: 'cursor-overlay-plugin', + registryDependencies: ['cursor-overlay'], + type: 'registry:component', + }, { dependencies: [ '@udecode/plate-ai', diff --git a/packages/core/src/react/components/Plate.tsx b/packages/core/src/react/components/Plate.tsx index 92382fbc39..8ef273189d 100644 --- a/packages/core/src/react/components/Plate.tsx +++ b/packages/core/src/react/components/Plate.tsx @@ -39,10 +39,14 @@ function PlateInner({ readOnly, renderElement, renderLeaf, + scrollRef, onChange, onSelectionChange, onValueChange, -}: PlateProps & { containerRef: React.RefObject }) { +}: PlateProps & { + containerRef: React.RefObject; + scrollRef: React.RefObject; +}) { return ( {children} @@ -68,6 +73,7 @@ export function Plate( const id = useId(); const containerRef = React.useRef(null); + const scrollRef = React.useRef(null); usePlateInstancesWarn(props.suppressInstanceWarning); @@ -79,6 +85,7 @@ export function Plate( ); diff --git a/packages/core/src/react/stores/plate/PlateStore.ts b/packages/core/src/react/stores/plate/PlateStore.ts index da0c5a3c7e..6ee445dadc 100644 --- a/packages/core/src/react/stores/plate/PlateStore.ts +++ b/packages/core/src/react/stores/plate/PlateStore.ts @@ -69,6 +69,13 @@ export type PlateStoreState = Nullable<{ * @default createPlateFallbackEditor() */ editor: E; + + /** + * A reference to the editor scroll container element. + * + * @default containerRef + */ + scrollRef: React.RefObject; }; // A list of store keys to be exposed in `editor.api.plate.set`. diff --git a/packages/core/src/react/stores/plate/createPlateStore.ts b/packages/core/src/react/stores/plate/createPlateStore.ts index 23869e298b..5abfff443b 100644 --- a/packages/core/src/react/stores/plate/createPlateStore.ts +++ b/packages/core/src/react/stores/plate/createPlateStore.ts @@ -27,6 +27,7 @@ export const createPlateStore = ({ readOnly = null, renderElement = null, renderLeaf = null, + scrollRef = { current: null }, versionDecorate = 1, versionEditor = 1, versionSelection = 1, @@ -46,6 +47,7 @@ export const createPlateStore = ({ readOnly, renderElement, renderLeaf, + scrollRef, versionDecorate, versionEditor, versionSelection, @@ -91,10 +93,6 @@ export const usePlateEditorStore = ( // Try to fetch the store from a Plate provider const localStore = usePlateStore(id).store({ warnIfNoStore: false }) ?? null; - /** - * To preserve hook order, only use `localStore` if it was present on first - * render. This lets us call `usePlateControllerEditorStore` conditionally. - */ const [localStoreExists] = React.useState(!!localStore); // If no store was found, try to fetch the store from a PlateController diff --git a/packages/core/src/react/stores/plate/selectors/useEditorContainerRef.ts b/packages/core/src/react/stores/plate/selectors/useEditorContainerRef.ts index 870052020d..7e1a92d77e 100644 --- a/packages/core/src/react/stores/plate/selectors/useEditorContainerRef.ts +++ b/packages/core/src/react/stores/plate/selectors/useEditorContainerRef.ts @@ -5,3 +5,14 @@ export const useEditorContainerRef = (id?: string) => { debugHookName: 'useEditorContainerRef', }).containerRef(); }; + +/** Returns the scrollRef if it exists, otherwise returns the containerRef. */ +export const useEditorScrollRef = (id?: string) => { + const scrollRef = usePlateSelectors(id, { + debugHookName: 'useEditorScrollRef', + }).scrollRef(); + + const containerRef = useEditorContainerRef(id); + + return scrollRef.current ? scrollRef : containerRef; +}; diff --git a/packages/heading/src/react/hooks/useTocElement.ts b/packages/heading/src/react/hooks/useTocElement.ts index 4ef0e3bed2..9a7c6436a7 100644 --- a/packages/heading/src/react/hooks/useTocElement.ts +++ b/packages/heading/src/react/hooks/useTocElement.ts @@ -3,8 +3,8 @@ import React from 'react'; import { getNode } from '@udecode/plate-common'; import { toDOMNode, - useEditorContainerRef, useEditorPlugin, + useEditorScrollRef, useEditorSelector, } from '@udecode/plate-common/react'; @@ -20,7 +20,7 @@ export const useTocElementState = () => { const headingList = useEditorSelector(getHeadingList, []); - const containerRef = useEditorContainerRef(); + const containerRef = useEditorScrollRef(); const onContentScroll = React.useCallback( (el: HTMLElement, id: string, behavior: ScrollBehavior = 'instant') => { diff --git a/packages/heading/src/react/hooks/useTocSideBar.ts b/packages/heading/src/react/hooks/useTocSideBar.ts index df275ca483..f2712bf87c 100644 --- a/packages/heading/src/react/hooks/useTocSideBar.ts +++ b/packages/heading/src/react/hooks/useTocSideBar.ts @@ -3,8 +3,8 @@ import React from 'react'; import { getNode } from '@udecode/plate-common'; import { toDOMNode, - useEditorContainerRef, useEditorPlugin, + useEditorScrollRef, useEditorSelector, } from '@udecode/plate-common/react'; @@ -23,7 +23,7 @@ export const useTocSideBarState = ({ }: TocSideBarProps) => { const { editor } = useEditorPlugin(TocPlugin); const headingList = useEditorSelector(getHeadingList, []); - const containerRef = useEditorContainerRef(); + const containerRef = useEditorScrollRef(); const tocRef = React.useRef(null); diff --git a/templates/plate-playground-template/src/components/editor/plate-editor.tsx b/templates/plate-playground-template/src/components/editor/plate-editor.tsx index d0cd3d129a..85c96457ba 100644 --- a/templates/plate-playground-template/src/components/editor/plate-editor.tsx +++ b/templates/plate-playground-template/src/components/editor/plate-editor.tsx @@ -6,8 +6,8 @@ import { HTML5Backend } from 'react-dnd-html5-backend'; import { Plate } from '@udecode/plate-common/react'; -import { useCreateEditor } from '@/components/editor/use-create-editor'; import { SettingsDialog } from '@/components/editor/use-chat'; +import { useCreateEditor } from '@/components/editor/use-create-editor'; import { Editor, EditorContainer } from '@/components/plate-ui/editor'; export function PlateEditor() { diff --git a/yarn.lock b/yarn.lock index 9d992886cb..078b46b442 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6195,13 +6195,13 @@ __metadata: version: 0.0.0-use.local resolution: "@udecode/plate-ai@workspace:packages/ai" dependencies: - "@udecode/plate-combobox": "npm:39.0.0" - "@udecode/plate-markdown": "npm:39.2.0" - "@udecode/plate-selection": "npm:39.3.7" + "@udecode/plate-combobox": "npm:40.0.0" + "@udecode/plate-markdown": "npm:40.0.0" + "@udecode/plate-selection": "npm:40.0.0" ai: "npm:^3.4.10" lodash: "npm:^4.17.21" peerDependencies: - "@udecode/plate-common": ">=39.2.13" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6212,13 +6212,13 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-alignment@npm:39.0.0, @udecode/plate-alignment@workspace:^, @udecode/plate-alignment@workspace:packages/alignment": +"@udecode/plate-alignment@npm:40.0.0, @udecode/plate-alignment@workspace:^, @udecode/plate-alignment@workspace:packages/alignment": version: 0.0.0-use.local resolution: "@udecode/plate-alignment@workspace:packages/alignment" dependencies: "@udecode/plate-common": "workspace:^" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6229,14 +6229,14 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-autoformat@npm:39.0.0, @udecode/plate-autoformat@workspace:^, @udecode/plate-autoformat@workspace:packages/autoformat": +"@udecode/plate-autoformat@npm:40.0.0, @udecode/plate-autoformat@workspace:^, @udecode/plate-autoformat@workspace:packages/autoformat": version: 0.0.0-use.local resolution: "@udecode/plate-autoformat@workspace:packages/autoformat" dependencies: "@udecode/plate-common": "workspace:^" lodash: "npm:^4.17.21" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6247,16 +6247,16 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-basic-elements@npm:39.0.0, @udecode/plate-basic-elements@workspace:^, @udecode/plate-basic-elements@workspace:packages/basic-elements": +"@udecode/plate-basic-elements@npm:40.0.0, @udecode/plate-basic-elements@workspace:^, @udecode/plate-basic-elements@workspace:packages/basic-elements": version: 0.0.0-use.local resolution: "@udecode/plate-basic-elements@workspace:packages/basic-elements" dependencies: - "@udecode/plate-block-quote": "npm:39.0.0" - "@udecode/plate-code-block": "npm:39.0.0" + "@udecode/plate-block-quote": "npm:40.0.0" + "@udecode/plate-code-block": "npm:40.0.0" "@udecode/plate-common": "workspace:^" - "@udecode/plate-heading": "npm:39.0.0" + "@udecode/plate-heading": "npm:40.0.0" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6267,13 +6267,13 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-basic-marks@npm:39.0.0, @udecode/plate-basic-marks@workspace:^, @udecode/plate-basic-marks@workspace:packages/basic-marks": +"@udecode/plate-basic-marks@npm:40.0.0, @udecode/plate-basic-marks@workspace:^, @udecode/plate-basic-marks@workspace:packages/basic-marks": version: 0.0.0-use.local resolution: "@udecode/plate-basic-marks@workspace:packages/basic-marks" dependencies: "@udecode/plate-common": "workspace:^" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6284,13 +6284,13 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-block-quote@npm:39.0.0, @udecode/plate-block-quote@workspace:^, @udecode/plate-block-quote@workspace:packages/block-quote": +"@udecode/plate-block-quote@npm:40.0.0, @udecode/plate-block-quote@workspace:^, @udecode/plate-block-quote@workspace:packages/block-quote": version: 0.0.0-use.local resolution: "@udecode/plate-block-quote@workspace:packages/block-quote" dependencies: "@udecode/plate-common": "workspace:^" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6301,13 +6301,13 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-break@npm:39.0.0, @udecode/plate-break@workspace:^, @udecode/plate-break@workspace:packages/break": +"@udecode/plate-break@npm:40.0.0, @udecode/plate-break@workspace:^, @udecode/plate-break@workspace:packages/break": version: 0.0.0-use.local resolution: "@udecode/plate-break@workspace:packages/break" dependencies: "@udecode/plate-common": "workspace:^" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6324,7 +6324,7 @@ __metadata: dependencies: "@udecode/plate-common": "workspace:^" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6342,7 +6342,7 @@ __metadata: "@udecode/plate-common": "workspace:^" react-textarea-autosize: "npm:^8.5.3" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6362,7 +6362,7 @@ __metadata: delay: "npm:5.0.0" p-defer: "npm:^4.0.1" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6373,14 +6373,14 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-code-block@npm:39.0.0, @udecode/plate-code-block@workspace:^, @udecode/plate-code-block@workspace:packages/code-block": +"@udecode/plate-code-block@npm:40.0.0, @udecode/plate-code-block@workspace:^, @udecode/plate-code-block@workspace:packages/code-block": version: 0.0.0-use.local resolution: "@udecode/plate-code-block@workspace:packages/code-block" dependencies: "@udecode/plate-common": "workspace:^" prismjs: "npm:^1.29.0" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6391,13 +6391,13 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-combobox@npm:39.0.0, @udecode/plate-combobox@workspace:^, @udecode/plate-combobox@workspace:packages/combobox": +"@udecode/plate-combobox@npm:40.0.0, @udecode/plate-combobox@workspace:^, @udecode/plate-combobox@workspace:packages/combobox": version: 0.0.0-use.local resolution: "@udecode/plate-combobox@workspace:packages/combobox" dependencies: "@udecode/plate-common": "workspace:^" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6408,14 +6408,14 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-comments@npm:39.0.0, @udecode/plate-comments@workspace:^, @udecode/plate-comments@workspace:packages/comments": +"@udecode/plate-comments@npm:40.0.0, @udecode/plate-comments@workspace:^, @udecode/plate-comments@workspace:packages/comments": version: 0.0.0-use.local resolution: "@udecode/plate-comments@workspace:packages/comments" dependencies: "@udecode/plate-common": "workspace:^" lodash: "npm:^4.17.21" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6426,16 +6426,16 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-common@npm:39.2.21, @udecode/plate-common@workspace:^, @udecode/plate-common@workspace:packages/common": +"@udecode/plate-common@npm:40.0.0, @udecode/plate-common@workspace:^, @udecode/plate-common@workspace:packages/common": version: 0.0.0-use.local resolution: "@udecode/plate-common@workspace:packages/common" dependencies: - "@udecode/plate-core": "npm:39.2.21" - "@udecode/plate-utils": "npm:39.2.21" + "@udecode/plate-core": "npm:40.0.0" + "@udecode/plate-utils": "npm:40.0.0" "@udecode/react-hotkeys": "npm:37.0.0" "@udecode/react-utils": "npm:39.0.0" "@udecode/slate": "npm:39.2.1" - "@udecode/slate-react": "npm:39.2.1" + "@udecode/slate-react": "npm:40.0.0" "@udecode/slate-utils": "npm:39.2.20" "@udecode/utils": "npm:37.0.0" peerDependencies: @@ -6449,14 +6449,14 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-core@npm:39.2.21, @udecode/plate-core@workspace:^, @udecode/plate-core@workspace:packages/core": +"@udecode/plate-core@npm:40.0.0, @udecode/plate-core@workspace:^, @udecode/plate-core@workspace:packages/core": version: 0.0.0-use.local resolution: "@udecode/plate-core@workspace:packages/core" dependencies: "@udecode/react-hotkeys": "npm:37.0.0" "@udecode/react-utils": "npm:39.0.0" "@udecode/slate": "npm:39.2.1" - "@udecode/slate-react": "npm:39.2.1" + "@udecode/slate-react": "npm:40.0.0" "@udecode/slate-utils": "npm:39.2.20" "@udecode/utils": "npm:37.0.0" clsx: "npm:^2.1.1" @@ -6481,16 +6481,16 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-csv@npm:39.1.6, @udecode/plate-csv@workspace:^, @udecode/plate-csv@workspace:packages/csv": +"@udecode/plate-csv@npm:40.0.0, @udecode/plate-csv@workspace:^, @udecode/plate-csv@workspace:packages/csv": version: 0.0.0-use.local resolution: "@udecode/plate-csv@workspace:packages/csv" dependencies: "@types/papaparse": "npm:^5.3.14" "@udecode/plate-common": "workspace:^" - "@udecode/plate-table": "npm:39.1.6" + "@udecode/plate-table": "npm:40.0.0" papaparse: "npm:^5.4.1" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6507,7 +6507,7 @@ __metadata: dependencies: "@udecode/plate-common": "workspace:^" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6524,7 +6524,7 @@ __metadata: dependencies: "@udecode/plate-common": "workspace:^" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.94.0" @@ -6534,7 +6534,7 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-diff@npm:39.0.0, @udecode/plate-diff@workspace:^, @udecode/plate-diff@workspace:packages/diff": +"@udecode/plate-diff@npm:40.0.0, @udecode/plate-diff@workspace:^, @udecode/plate-diff@workspace:packages/diff": version: 0.0.0-use.local resolution: "@udecode/plate-diff@workspace:packages/diff" dependencies: @@ -6542,7 +6542,7 @@ __metadata: diff-match-patch-ts: "npm:^0.6.0" lodash: "npm:^4.17.21" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6561,7 +6561,7 @@ __metadata: lodash: "npm:^4.17.21" raf: "npm:^3.4.1" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dnd: ">=14.0.0" react-dnd-html5-backend: ">=14.0.0" @@ -6574,19 +6574,19 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-docx@npm:39.3.3, @udecode/plate-docx@workspace:^, @udecode/plate-docx@workspace:packages/docx": +"@udecode/plate-docx@npm:40.0.0, @udecode/plate-docx@workspace:^, @udecode/plate-docx@workspace:packages/docx": version: 0.0.0-use.local resolution: "@udecode/plate-docx@workspace:packages/docx" dependencies: "@udecode/plate-common": "workspace:^" - "@udecode/plate-heading": "npm:39.0.0" - "@udecode/plate-indent": "npm:39.0.0" - "@udecode/plate-indent-list": "npm:39.1.10" - "@udecode/plate-media": "npm:39.3.3" - "@udecode/plate-table": "npm:39.1.6" + "@udecode/plate-heading": "npm:40.0.0" + "@udecode/plate-indent": "npm:40.0.0" + "@udecode/plate-indent-list": "npm:40.0.0" + "@udecode/plate-media": "npm:40.0.0" + "@udecode/plate-table": "npm:40.0.0" validator: "npm:^13.12.0" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6602,10 +6602,10 @@ __metadata: resolution: "@udecode/plate-emoji@workspace:packages/emoji" dependencies: "@emoji-mart/data": "npm:^1.2.1" - "@udecode/plate-combobox": "npm:39.0.0" + "@udecode/plate-combobox": "npm:40.0.0" "@udecode/plate-common": "workspace:^" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6623,7 +6623,7 @@ __metadata: "@excalidraw/excalidraw": "npm:0.16.4" "@udecode/plate-common": "workspace:^" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6634,13 +6634,13 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-find-replace@npm:39.0.0, @udecode/plate-find-replace@workspace:^, @udecode/plate-find-replace@workspace:packages/find-replace": +"@udecode/plate-find-replace@npm:40.0.0, @udecode/plate-find-replace@workspace:^, @udecode/plate-find-replace@workspace:packages/find-replace": version: 0.0.0-use.local resolution: "@udecode/plate-find-replace@workspace:packages/find-replace" dependencies: "@udecode/plate-common": "workspace:^" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6651,7 +6651,7 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-floating@npm:39.1.6, @udecode/plate-floating@workspace:^, @udecode/plate-floating@workspace:packages/floating": +"@udecode/plate-floating@npm:40.0.0, @udecode/plate-floating@workspace:^, @udecode/plate-floating@workspace:packages/floating": version: 0.0.0-use.local resolution: "@udecode/plate-floating@workspace:packages/floating" dependencies: @@ -6659,7 +6659,7 @@ __metadata: "@floating-ui/react": "npm:^0.26.23" "@udecode/plate-common": "workspace:^" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6670,14 +6670,14 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-font@npm:39.0.0, @udecode/plate-font@workspace:^, @udecode/plate-font@workspace:packages/font": +"@udecode/plate-font@npm:40.0.0, @udecode/plate-font@workspace:^, @udecode/plate-font@workspace:packages/font": version: 0.0.0-use.local resolution: "@udecode/plate-font@workspace:packages/font" dependencies: "@udecode/plate-common": "workspace:^" lodash: "npm:^4.17.21" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6688,13 +6688,13 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-heading@npm:39.0.0, @udecode/plate-heading@workspace:^, @udecode/plate-heading@workspace:packages/heading": +"@udecode/plate-heading@npm:40.0.0, @udecode/plate-heading@workspace:^, @udecode/plate-heading@workspace:packages/heading": version: 0.0.0-use.local resolution: "@udecode/plate-heading@workspace:packages/heading" dependencies: "@udecode/plate-common": "workspace:^" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6705,13 +6705,13 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-highlight@npm:39.0.0, @udecode/plate-highlight@workspace:^, @udecode/plate-highlight@workspace:packages/highlight": +"@udecode/plate-highlight@npm:40.0.0, @udecode/plate-highlight@workspace:^, @udecode/plate-highlight@workspace:packages/highlight": version: 0.0.0-use.local resolution: "@udecode/plate-highlight@workspace:packages/highlight" dependencies: "@udecode/plate-common": "workspace:^" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6722,13 +6722,13 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-horizontal-rule@npm:39.0.0, @udecode/plate-horizontal-rule@workspace:^, @udecode/plate-horizontal-rule@workspace:packages/horizontal-rule": +"@udecode/plate-horizontal-rule@npm:40.0.0, @udecode/plate-horizontal-rule@workspace:^, @udecode/plate-horizontal-rule@workspace:packages/horizontal-rule": version: 0.0.0-use.local resolution: "@udecode/plate-horizontal-rule@workspace:packages/horizontal-rule" dependencies: "@udecode/plate-common": "workspace:^" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6739,7 +6739,7 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-html@npm:39.0.0, @udecode/plate-html@workspace:^, @udecode/plate-html@workspace:packages/html": +"@udecode/plate-html@npm:40.0.0, @udecode/plate-html@workspace:^, @udecode/plate-html@workspace:packages/html": version: 0.0.0-use.local resolution: "@udecode/plate-html@workspace:packages/html" dependencies: @@ -6747,7 +6747,7 @@ __metadata: "@udecode/plate-common": "workspace:^" html-entities: "npm:^2.5.2" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6758,16 +6758,16 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-indent-list@npm:39.1.10, @udecode/plate-indent-list@workspace:^, @udecode/plate-indent-list@workspace:packages/indent-list": +"@udecode/plate-indent-list@npm:40.0.0, @udecode/plate-indent-list@workspace:^, @udecode/plate-indent-list@workspace:packages/indent-list": version: 0.0.0-use.local resolution: "@udecode/plate-indent-list@workspace:packages/indent-list" dependencies: "@udecode/plate-common": "workspace:^" - "@udecode/plate-indent": "npm:39.0.0" - "@udecode/plate-list": "npm:39.0.0" + "@udecode/plate-indent": "npm:40.0.0" + "@udecode/plate-list": "npm:40.0.0" clsx: "npm:^2.1.1" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6778,13 +6778,13 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-indent@npm:39.0.0, @udecode/plate-indent@workspace:^, @udecode/plate-indent@workspace:packages/indent": +"@udecode/plate-indent@npm:40.0.0, @udecode/plate-indent@workspace:^, @udecode/plate-indent@workspace:packages/indent": version: 0.0.0-use.local resolution: "@udecode/plate-indent@workspace:packages/indent" dependencies: "@udecode/plate-common": "workspace:^" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6802,7 +6802,7 @@ __metadata: "@udecode/plate-common": "workspace:^" juice: "npm:^8.1.0" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6813,13 +6813,13 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-kbd@npm:39.0.0, @udecode/plate-kbd@workspace:^, @udecode/plate-kbd@workspace:packages/kbd": +"@udecode/plate-kbd@npm:40.0.0, @udecode/plate-kbd@workspace:^, @udecode/plate-kbd@workspace:packages/kbd": version: 0.0.0-use.local resolution: "@udecode/plate-kbd@workspace:packages/kbd" dependencies: "@udecode/plate-common": "workspace:^" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6830,13 +6830,13 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-layout@npm:39.0.0, @udecode/plate-layout@workspace:^, @udecode/plate-layout@workspace:packages/layout": +"@udecode/plate-layout@npm:40.0.0, @udecode/plate-layout@workspace:^, @udecode/plate-layout@workspace:packages/layout": version: 0.0.0-use.local resolution: "@udecode/plate-layout@workspace:packages/layout" dependencies: "@udecode/plate-common": "workspace:^" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6847,13 +6847,13 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-line-height@npm:39.0.0, @udecode/plate-line-height@workspace:^, @udecode/plate-line-height@workspace:packages/line-height": +"@udecode/plate-line-height@npm:40.0.0, @udecode/plate-line-height@workspace:^, @udecode/plate-line-height@workspace:packages/line-height": version: 0.0.0-use.local resolution: "@udecode/plate-line-height@workspace:packages/line-height" dependencies: "@udecode/plate-common": "workspace:^" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6864,15 +6864,15 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-link@npm:39.1.9, @udecode/plate-link@workspace:^, @udecode/plate-link@workspace:packages/link": +"@udecode/plate-link@npm:40.0.0, @udecode/plate-link@workspace:^, @udecode/plate-link@workspace:packages/link": version: 0.0.0-use.local resolution: "@udecode/plate-link@workspace:packages/link" dependencies: "@udecode/plate-common": "workspace:^" - "@udecode/plate-floating": "npm:39.1.6" - "@udecode/plate-normalizers": "npm:39.0.0" + "@udecode/plate-floating": "npm:40.0.0" + "@udecode/plate-normalizers": "npm:40.0.0" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6883,15 +6883,15 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-list@npm:39.0.0, @udecode/plate-list@workspace:^, @udecode/plate-list@workspace:packages/list": +"@udecode/plate-list@npm:40.0.0, @udecode/plate-list@workspace:^, @udecode/plate-list@workspace:packages/list": version: 0.0.0-use.local resolution: "@udecode/plate-list@workspace:packages/list" dependencies: "@udecode/plate-common": "workspace:^" - "@udecode/plate-reset-node": "npm:39.0.0" + "@udecode/plate-reset-node": "npm:40.0.0" lodash: "npm:^4.17.21" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6902,7 +6902,7 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-markdown@npm:39.2.0, @udecode/plate-markdown@workspace:^, @udecode/plate-markdown@workspace:packages/markdown": +"@udecode/plate-markdown@npm:40.0.0, @udecode/plate-markdown@workspace:^, @udecode/plate-markdown@workspace:packages/markdown": version: 0.0.0-use.local resolution: "@udecode/plate-markdown@workspace:packages/markdown" dependencies: @@ -6912,7 +6912,7 @@ __metadata: remark-parse: "npm:^9.0.0" unified: "npm:^11.0.5" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6931,7 +6931,7 @@ __metadata: "@udecode/plate-common": "workspace:^" katex: "npm:0.16.11" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6942,14 +6942,14 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-media@npm:39.3.3, @udecode/plate-media@workspace:^, @udecode/plate-media@workspace:packages/media": +"@udecode/plate-media@npm:40.0.0, @udecode/plate-media@workspace:^, @udecode/plate-media@workspace:packages/media": version: 0.0.0-use.local resolution: "@udecode/plate-media@workspace:packages/media" dependencies: "@udecode/plate-common": "workspace:^" js-video-url-parser: "npm:^0.5.1" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6960,14 +6960,14 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-mention@npm:39.3.4, @udecode/plate-mention@workspace:^, @udecode/plate-mention@workspace:packages/mention": +"@udecode/plate-mention@npm:40.0.0, @udecode/plate-mention@workspace:^, @udecode/plate-mention@workspace:packages/mention": version: 0.0.0-use.local resolution: "@udecode/plate-mention@workspace:packages/mention" dependencies: - "@udecode/plate-combobox": "npm:39.0.0" + "@udecode/plate-combobox": "npm:40.0.0" "@udecode/plate-common": "workspace:^" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6978,14 +6978,14 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-node-id@npm:39.0.0, @udecode/plate-node-id@workspace:^, @udecode/plate-node-id@workspace:packages/node-id": +"@udecode/plate-node-id@npm:40.0.0, @udecode/plate-node-id@workspace:^, @udecode/plate-node-id@workspace:packages/node-id": version: 0.0.0-use.local resolution: "@udecode/plate-node-id@workspace:packages/node-id" dependencies: "@udecode/plate-common": "workspace:^" lodash: "npm:^4.17.21" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -6996,14 +6996,14 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-normalizers@npm:39.0.0, @udecode/plate-normalizers@workspace:^, @udecode/plate-normalizers@workspace:packages/normalizers": +"@udecode/plate-normalizers@npm:40.0.0, @udecode/plate-normalizers@workspace:^, @udecode/plate-normalizers@workspace:packages/normalizers": version: 0.0.0-use.local resolution: "@udecode/plate-normalizers@workspace:packages/normalizers" dependencies: "@udecode/plate-common": "workspace:^" lodash: "npm:^4.17.21" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -7021,7 +7021,7 @@ __metadata: "@udecode/plate-common": "workspace:^" peerDependencies: "@playwright/test": ">=1.42.1" - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -7032,13 +7032,13 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-reset-node@npm:39.0.0, @udecode/plate-reset-node@workspace:^, @udecode/plate-reset-node@workspace:packages/reset-node": +"@udecode/plate-reset-node@npm:40.0.0, @udecode/plate-reset-node@workspace:^, @udecode/plate-reset-node@workspace:packages/reset-node": version: 0.0.0-use.local resolution: "@udecode/plate-reset-node@workspace:packages/reset-node" dependencies: "@udecode/plate-common": "workspace:^" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -7049,13 +7049,13 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-resizable@npm:39.1.6, @udecode/plate-resizable@workspace:^, @udecode/plate-resizable@workspace:packages/resizable": +"@udecode/plate-resizable@npm:40.0.0, @udecode/plate-resizable@workspace:^, @udecode/plate-resizable@workspace:packages/resizable": version: 0.0.0-use.local resolution: "@udecode/plate-resizable@workspace:packages/resizable" dependencies: "@udecode/plate-common": "workspace:^" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -7066,13 +7066,13 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-select@npm:39.0.0, @udecode/plate-select@workspace:^, @udecode/plate-select@workspace:packages/select": +"@udecode/plate-select@npm:40.0.0, @udecode/plate-select@workspace:^, @udecode/plate-select@workspace:packages/select": version: 0.0.0-use.local resolution: "@udecode/plate-select@workspace:packages/select" dependencies: "@udecode/plate-common": "workspace:^" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -7083,14 +7083,14 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-selection@npm:39.3.7, @udecode/plate-selection@workspace:^, @udecode/plate-selection@workspace:packages/selection": +"@udecode/plate-selection@npm:40.0.0, @udecode/plate-selection@workspace:^, @udecode/plate-selection@workspace:packages/selection": version: 0.0.0-use.local resolution: "@udecode/plate-selection@workspace:packages/selection" dependencies: "@udecode/plate-common": "workspace:^" copy-to-clipboard: "npm:^3.3.3" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -7101,14 +7101,14 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-slash-command@npm:39.0.0, @udecode/plate-slash-command@workspace:^, @udecode/plate-slash-command@workspace:packages/slash-command": +"@udecode/plate-slash-command@npm:40.0.0, @udecode/plate-slash-command@workspace:^, @udecode/plate-slash-command@workspace:packages/slash-command": version: 0.0.0-use.local resolution: "@udecode/plate-slash-command@workspace:packages/slash-command" dependencies: - "@udecode/plate-combobox": "npm:39.0.0" + "@udecode/plate-combobox": "npm:40.0.0" "@udecode/plate-common": "workspace:^" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -7119,15 +7119,15 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-suggestion@npm:39.0.0, @udecode/plate-suggestion@workspace:^, @udecode/plate-suggestion@workspace:packages/suggestion": +"@udecode/plate-suggestion@npm:40.0.0, @udecode/plate-suggestion@workspace:^, @udecode/plate-suggestion@workspace:packages/suggestion": version: 0.0.0-use.local resolution: "@udecode/plate-suggestion@workspace:packages/suggestion" dependencies: "@udecode/plate-common": "workspace:^" - "@udecode/plate-diff": "npm:39.0.0" + "@udecode/plate-diff": "npm:40.0.0" lodash: "npm:^4.17.21" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -7138,14 +7138,14 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-tabbable@npm:39.0.0, @udecode/plate-tabbable@workspace:^, @udecode/plate-tabbable@workspace:packages/tabbable": +"@udecode/plate-tabbable@npm:40.0.0, @udecode/plate-tabbable@workspace:^, @udecode/plate-tabbable@workspace:packages/tabbable": version: 0.0.0-use.local resolution: "@udecode/plate-tabbable@workspace:packages/tabbable" dependencies: "@udecode/plate-common": "workspace:^" tabbable: "npm:^6.2.0" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -7156,15 +7156,15 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-table@npm:39.1.6, @udecode/plate-table@workspace:^, @udecode/plate-table@workspace:packages/table": +"@udecode/plate-table@npm:40.0.0, @udecode/plate-table@workspace:^, @udecode/plate-table@workspace:packages/table": version: 0.0.0-use.local resolution: "@udecode/plate-table@workspace:packages/table" dependencies: "@udecode/plate-common": "workspace:^" - "@udecode/plate-resizable": "npm:39.1.6" + "@udecode/plate-resizable": "npm:40.0.0" lodash: "npm:^4.17.21" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -7183,16 +7183,16 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-toggle@npm:39.0.0, @udecode/plate-toggle@workspace:^, @udecode/plate-toggle@workspace:packages/toggle": +"@udecode/plate-toggle@npm:40.0.0, @udecode/plate-toggle@workspace:^, @udecode/plate-toggle@workspace:packages/toggle": version: 0.0.0-use.local resolution: "@udecode/plate-toggle@workspace:packages/toggle" dependencies: "@udecode/plate-common": "workspace:^" - "@udecode/plate-indent": "npm:39.0.0" - "@udecode/plate-node-id": "npm:39.0.0" + "@udecode/plate-indent": "npm:40.0.0" + "@udecode/plate-node-id": "npm:40.0.0" lodash: "npm:^4.17.21" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -7203,13 +7203,13 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-trailing-block@npm:39.0.0, @udecode/plate-trailing-block@workspace:^, @udecode/plate-trailing-block@workspace:packages/trailing-block": +"@udecode/plate-trailing-block@npm:40.0.0, @udecode/plate-trailing-block@workspace:^, @udecode/plate-trailing-block@workspace:packages/trailing-block": version: 0.0.0-use.local resolution: "@udecode/plate-trailing-block@workspace:packages/trailing-block" dependencies: "@udecode/plate-common": "workspace:^" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -7220,14 +7220,14 @@ __metadata: languageName: unknown linkType: soft -"@udecode/plate-utils@npm:39.2.21, @udecode/plate-utils@workspace:^, @udecode/plate-utils@workspace:packages/plate-utils": +"@udecode/plate-utils@npm:40.0.0, @udecode/plate-utils@workspace:^, @udecode/plate-utils@workspace:packages/plate-utils": version: 0.0.0-use.local resolution: "@udecode/plate-utils@workspace:packages/plate-utils" dependencies: - "@udecode/plate-core": "npm:39.2.21" + "@udecode/plate-core": "npm:40.0.0" "@udecode/react-utils": "npm:39.0.0" "@udecode/slate": "npm:39.2.1" - "@udecode/slate-react": "npm:39.2.1" + "@udecode/slate-react": "npm:40.0.0" "@udecode/slate-utils": "npm:39.2.20" "@udecode/utils": "npm:37.0.0" clsx: "npm:^2.1.1" @@ -7251,7 +7251,7 @@ __metadata: "@udecode/plate-common": "workspace:^" yjs: "npm:^13.6.19" peerDependencies: - "@udecode/plate-common": ">=39.2.21" + "@udecode/plate-common": ">=40.0.0" react: ">=16.8.0" react-dom: ">=16.8.0" slate: ">=0.103.0" @@ -7266,48 +7266,48 @@ __metadata: version: 0.0.0-use.local resolution: "@udecode/plate@workspace:packages/plate" dependencies: - "@udecode/plate-alignment": "npm:39.0.0" - "@udecode/plate-autoformat": "npm:39.0.0" - "@udecode/plate-basic-elements": "npm:39.0.0" - "@udecode/plate-basic-marks": "npm:39.0.0" - "@udecode/plate-block-quote": "npm:39.0.0" - "@udecode/plate-break": "npm:39.0.0" - "@udecode/plate-code-block": "npm:39.0.0" - "@udecode/plate-combobox": "npm:39.0.0" - "@udecode/plate-comments": "npm:39.0.0" - "@udecode/plate-common": "npm:39.2.21" - "@udecode/plate-csv": "npm:39.1.6" - "@udecode/plate-diff": "npm:39.0.0" - "@udecode/plate-docx": "npm:39.3.3" - "@udecode/plate-find-replace": "npm:39.0.0" - "@udecode/plate-floating": "npm:39.1.6" - "@udecode/plate-font": "npm:39.0.0" - "@udecode/plate-heading": "npm:39.0.0" - "@udecode/plate-highlight": "npm:39.0.0" - "@udecode/plate-horizontal-rule": "npm:39.0.0" - "@udecode/plate-html": "npm:39.0.0" - "@udecode/plate-indent": "npm:39.0.0" - "@udecode/plate-indent-list": "npm:39.1.10" - "@udecode/plate-kbd": "npm:39.0.0" - "@udecode/plate-layout": "npm:39.0.0" - "@udecode/plate-line-height": "npm:39.0.0" - "@udecode/plate-link": "npm:39.1.9" - "@udecode/plate-list": "npm:39.0.0" - "@udecode/plate-markdown": "npm:39.2.0" - "@udecode/plate-media": "npm:39.3.3" - "@udecode/plate-mention": "npm:39.3.4" - "@udecode/plate-node-id": "npm:39.0.0" - "@udecode/plate-normalizers": "npm:39.0.0" - "@udecode/plate-reset-node": "npm:39.0.0" - "@udecode/plate-resizable": "npm:39.1.6" - "@udecode/plate-select": "npm:39.0.0" - "@udecode/plate-selection": "npm:39.3.7" - "@udecode/plate-slash-command": "npm:39.0.0" - "@udecode/plate-suggestion": "npm:39.0.0" - "@udecode/plate-tabbable": "npm:39.0.0" - "@udecode/plate-table": "npm:39.1.6" - "@udecode/plate-toggle": "npm:39.0.0" - "@udecode/plate-trailing-block": "npm:39.0.0" + "@udecode/plate-alignment": "npm:40.0.0" + "@udecode/plate-autoformat": "npm:40.0.0" + "@udecode/plate-basic-elements": "npm:40.0.0" + "@udecode/plate-basic-marks": "npm:40.0.0" + "@udecode/plate-block-quote": "npm:40.0.0" + "@udecode/plate-break": "npm:40.0.0" + "@udecode/plate-code-block": "npm:40.0.0" + "@udecode/plate-combobox": "npm:40.0.0" + "@udecode/plate-comments": "npm:40.0.0" + "@udecode/plate-common": "npm:40.0.0" + "@udecode/plate-csv": "npm:40.0.0" + "@udecode/plate-diff": "npm:40.0.0" + "@udecode/plate-docx": "npm:40.0.0" + "@udecode/plate-find-replace": "npm:40.0.0" + "@udecode/plate-floating": "npm:40.0.0" + "@udecode/plate-font": "npm:40.0.0" + "@udecode/plate-heading": "npm:40.0.0" + "@udecode/plate-highlight": "npm:40.0.0" + "@udecode/plate-horizontal-rule": "npm:40.0.0" + "@udecode/plate-html": "npm:40.0.0" + "@udecode/plate-indent": "npm:40.0.0" + "@udecode/plate-indent-list": "npm:40.0.0" + "@udecode/plate-kbd": "npm:40.0.0" + "@udecode/plate-layout": "npm:40.0.0" + "@udecode/plate-line-height": "npm:40.0.0" + "@udecode/plate-link": "npm:40.0.0" + "@udecode/plate-list": "npm:40.0.0" + "@udecode/plate-markdown": "npm:40.0.0" + "@udecode/plate-media": "npm:40.0.0" + "@udecode/plate-mention": "npm:40.0.0" + "@udecode/plate-node-id": "npm:40.0.0" + "@udecode/plate-normalizers": "npm:40.0.0" + "@udecode/plate-reset-node": "npm:40.0.0" + "@udecode/plate-resizable": "npm:40.0.0" + "@udecode/plate-select": "npm:40.0.0" + "@udecode/plate-selection": "npm:40.0.0" + "@udecode/plate-slash-command": "npm:40.0.0" + "@udecode/plate-suggestion": "npm:40.0.0" + "@udecode/plate-tabbable": "npm:40.0.0" + "@udecode/plate-table": "npm:40.0.0" + "@udecode/plate-toggle": "npm:40.0.0" + "@udecode/plate-trailing-block": "npm:40.0.0" peerDependencies: react: ">=16.8.0" react-dom: ">=16.8.0" @@ -7341,7 +7341,7 @@ __metadata: languageName: unknown linkType: soft -"@udecode/slate-react@npm:39.2.1, @udecode/slate-react@workspace:^, @udecode/slate-react@workspace:packages/slate-react": +"@udecode/slate-react@npm:40.0.0, @udecode/slate-react@workspace:^, @udecode/slate-react@workspace:packages/slate-react": version: 0.0.0-use.local resolution: "@udecode/slate-react@workspace:packages/slate-react" dependencies: