@payloadcms/richtext-lexical 4.0.0-internal.5f0cd13 → 4.0.0-internal.811e0a4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +1 -1
- package/dist/cell/rscEntry.d.ts.map +1 -1
- package/dist/cell/rscEntry.js +5 -5
- package/dist/cell/rscEntry.js.map +1 -1
- package/dist/exports/client/Field-XH5C4HFU.js +2 -0
- package/dist/exports/client/Field-XH5C4HFU.js.map +7 -0
- package/dist/exports/client/bundled.css +1 -1
- package/dist/exports/client/chunk-5VIL27GI.js +2 -0
- package/dist/exports/client/chunk-5VIL27GI.js.map +7 -0
- package/dist/exports/client/chunk-ESITTE3C.js +2 -0
- package/dist/exports/client/chunk-ESITTE3C.js.map +7 -0
- package/dist/exports/client/chunk-UD4DQ4AK.js +2 -0
- package/dist/exports/client/chunk-UD4DQ4AK.js.map +7 -0
- package/dist/exports/client/chunk-X3D4LZS7.js +2 -0
- package/dist/exports/client/chunk-X3D4LZS7.js.map +7 -0
- package/dist/exports/client/{component-HKTAZ77E.js → component-PHZQBOJE.js} +2 -2
- package/dist/exports/client/componentInline-H24N7GUG.js +2 -0
- package/dist/exports/client/index.d.ts +0 -1
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +20 -21
- package/dist/exports/client/index.js.map +4 -4
- package/dist/features/blockquote/client/index.js +2 -2
- package/dist/features/blockquote/client/index.js.map +1 -1
- package/dist/features/blockquote/server/index.js +2 -2
- package/dist/features/blockquote/server/index.js.map +1 -1
- package/dist/features/blocks/client/component/index.css +2 -2
- package/dist/features/blocks/client/component/index.d.ts +1 -0
- package/dist/features/blocks/client/component/index.d.ts.map +1 -1
- package/dist/features/blocks/client/component/index.js +16 -8
- package/dist/features/blocks/client/component/index.js.map +1 -1
- package/dist/features/blocks/client/componentInline/index.css +8 -8
- package/dist/features/blocks/client/componentInline/index.d.ts +1 -0
- package/dist/features/blocks/client/componentInline/index.d.ts.map +1 -1
- package/dist/features/blocks/client/componentInline/index.js +15 -7
- package/dist/features/blocks/client/componentInline/index.js.map +1 -1
- package/dist/features/blocks/client/index.d.ts.map +1 -1
- package/dist/features/blocks/client/index.js +4 -2
- package/dist/features/blocks/client/index.js.map +1 -1
- package/dist/features/blocks/client/markdown/getLexicalToMarkdown.d.ts +1 -1
- package/dist/features/blocks/client/markdown/getLexicalToMarkdown.d.ts.map +1 -1
- package/dist/features/blocks/client/markdown/getLexicalToMarkdown.js +1 -1
- package/dist/features/blocks/client/markdown/getLexicalToMarkdown.js.map +1 -1
- package/dist/features/blocks/client/markdown/getMarkdownToLexical.d.ts +1 -1
- package/dist/features/blocks/client/markdown/getMarkdownToLexical.d.ts.map +1 -1
- package/dist/features/blocks/client/markdown/getMarkdownToLexical.js +5 -2
- package/dist/features/blocks/client/markdown/getMarkdownToLexical.js.map +1 -1
- package/dist/features/blocks/client/markdown/markdownTransformer.d.ts +1 -2
- package/dist/features/blocks/client/markdown/markdownTransformer.d.ts.map +1 -1
- package/dist/features/blocks/client/markdown/markdownTransformer.js.map +1 -1
- package/dist/features/blocks/premade/CodeBlock/Component/Block.d.ts.map +1 -1
- package/dist/features/blocks/premade/CodeBlock/Component/Block.js +1 -0
- package/dist/features/blocks/premade/CodeBlock/Component/Block.js.map +1 -1
- package/dist/features/blocks/premade/CodeBlock/Component/Collapse/index.css +1 -1
- package/dist/features/blocks/premade/CodeBlock/Component/FloatingCollapse/index.css +2 -4
- package/dist/features/blocks/premade/CodeBlock/Component/index.css +5 -5
- package/dist/features/blocks/server/index.d.ts.map +1 -1
- package/dist/features/blocks/server/index.js +6 -8
- package/dist/features/blocks/server/index.js.map +1 -1
- package/dist/features/blocks/server/markdown/markdownTransformer.d.ts +1 -1
- package/dist/features/blocks/server/markdown/markdownTransformer.d.ts.map +1 -1
- package/dist/features/blocks/server/markdown/markdownTransformer.js.map +1 -1
- package/dist/features/blocks/server/schema.d.ts +5 -5
- package/dist/features/blocks/server/schema.d.ts.map +1 -1
- package/dist/features/blocks/server/schema.js +28 -24
- package/dist/features/blocks/server/schema.js.map +1 -1
- package/dist/features/converters/lexicalToHtml/async/types.d.ts +13 -15
- package/dist/features/converters/lexicalToHtml/async/types.d.ts.map +1 -1
- package/dist/features/converters/lexicalToHtml/async/types.js.map +1 -1
- package/dist/features/converters/lexicalToHtml/sync/types.d.ts +13 -15
- package/dist/features/converters/lexicalToHtml/sync/types.d.ts.map +1 -1
- package/dist/features/converters/lexicalToHtml/sync/types.js.map +1 -1
- package/dist/features/converters/lexicalToJSX/Component/index.d.ts +2 -2
- package/dist/features/converters/lexicalToJSX/Component/index.d.ts.map +1 -1
- package/dist/features/converters/lexicalToJSX/Component/index.js +5 -4
- package/dist/features/converters/lexicalToJSX/Component/index.js.map +1 -1
- package/dist/features/converters/lexicalToJSX/converter/types.d.ts +12 -14
- package/dist/features/converters/lexicalToJSX/converter/types.d.ts.map +1 -1
- package/dist/features/converters/lexicalToJSX/converter/types.js.map +1 -1
- package/dist/features/converters/lexicalToMarkdown/index.d.ts.map +1 -1
- package/dist/features/converters/lexicalToMarkdown/index.js +1 -1
- package/dist/features/converters/lexicalToMarkdown/index.js.map +1 -1
- package/dist/features/converters/lexicalToPlaintext/sync/types.d.ts +12 -14
- package/dist/features/converters/lexicalToPlaintext/sync/types.d.ts.map +1 -1
- package/dist/features/converters/lexicalToPlaintext/sync/types.js.map +1 -1
- package/dist/features/converters/markdownToLexical/index.d.ts.map +1 -1
- package/dist/features/converters/markdownToLexical/index.js +5 -2
- package/dist/features/converters/markdownToLexical/index.js.map +1 -1
- package/dist/features/debug/jsxConverter/client/plugin/style.css +2 -2
- package/dist/features/experimental_table/client/index.js +2 -2
- package/dist/features/experimental_table/client/index.js.map +1 -1
- package/dist/features/experimental_table/markdownTransformer.d.ts +2 -2
- package/dist/features/experimental_table/markdownTransformer.d.ts.map +1 -1
- package/dist/features/experimental_table/markdownTransformer.js +6 -3
- package/dist/features/experimental_table/markdownTransformer.js.map +1 -1
- package/dist/features/experimental_table/server/index.js +2 -2
- package/dist/features/experimental_table/server/index.js.map +1 -1
- package/dist/features/experimental_table/server/schema.d.ts.map +1 -1
- package/dist/features/experimental_table/server/schema.js +6 -3
- package/dist/features/experimental_table/server/schema.js.map +1 -1
- package/dist/features/format/bold/feature.client.js +1 -1
- package/dist/features/format/bold/feature.client.js.map +1 -1
- package/dist/features/format/bold/feature.server.d.ts.map +1 -1
- package/dist/features/format/bold/feature.server.js +1 -1
- package/dist/features/format/bold/feature.server.js.map +1 -1
- package/dist/features/format/inlineCode/feature.client.js +1 -1
- package/dist/features/format/inlineCode/feature.client.js.map +1 -1
- package/dist/features/format/inlineCode/feature.server.d.ts.map +1 -1
- package/dist/features/format/inlineCode/feature.server.js +1 -1
- package/dist/features/format/inlineCode/feature.server.js.map +1 -1
- package/dist/features/format/italic/feature.client.js +1 -1
- package/dist/features/format/italic/feature.client.js.map +1 -1
- package/dist/features/format/italic/feature.server.d.ts.map +1 -1
- package/dist/features/format/italic/feature.server.js +1 -1
- package/dist/features/format/italic/feature.server.js.map +1 -1
- package/dist/features/format/strikethrough/feature.client.js +1 -1
- package/dist/features/format/strikethrough/feature.client.js.map +1 -1
- package/dist/features/format/strikethrough/feature.server.d.ts.map +1 -1
- package/dist/features/format/strikethrough/feature.server.js +1 -1
- package/dist/features/format/strikethrough/feature.server.js.map +1 -1
- package/dist/features/heading/client/index.js +2 -2
- package/dist/features/heading/client/index.js.map +1 -1
- package/dist/features/heading/markdownTransformer.d.ts +2 -2
- package/dist/features/heading/markdownTransformer.d.ts.map +1 -1
- package/dist/features/heading/markdownTransformer.js +6 -19
- package/dist/features/heading/markdownTransformer.js.map +1 -1
- package/dist/features/heading/server/index.js +2 -2
- package/dist/features/heading/server/index.js.map +1 -1
- package/dist/features/horizontalRule/client/index.js +2 -2
- package/dist/features/horizontalRule/client/index.js.map +1 -1
- package/dist/features/horizontalRule/client/markdownTransformer.d.ts +2 -2
- package/dist/features/horizontalRule/client/markdownTransformer.d.ts.map +1 -1
- package/dist/features/horizontalRule/client/markdownTransformer.js +1 -1
- package/dist/features/horizontalRule/client/markdownTransformer.js.map +1 -1
- package/dist/features/horizontalRule/client/plugin/index.css +2 -2
- package/dist/features/horizontalRule/server/index.js +2 -2
- package/dist/features/horizontalRule/server/index.js.map +1 -1
- package/dist/features/horizontalRule/server/markdownTransformer.d.ts +2 -2
- package/dist/features/horizontalRule/server/markdownTransformer.d.ts.map +1 -1
- package/dist/features/horizontalRule/server/markdownTransformer.js +1 -1
- package/dist/features/horizontalRule/server/markdownTransformer.js.map +1 -1
- package/dist/features/link/client/index.js +2 -2
- package/dist/features/link/client/index.js.map +1 -1
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js +3 -3
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
- package/dist/features/link/client/plugins/floatingLinkEditor/index.css +7 -11
- package/dist/features/link/markdownTransformer.d.ts +4 -4
- package/dist/features/link/markdownTransformer.d.ts.map +1 -1
- package/dist/features/link/markdownTransformer.js +2 -2
- package/dist/features/link/markdownTransformer.js.map +1 -1
- package/dist/features/link/markdownTransformer.spec.js +10 -10
- package/dist/features/link/markdownTransformer.spec.js.map +1 -1
- package/dist/features/link/server/baseFields.js.map +1 -1
- package/dist/features/link/server/index.js +2 -2
- package/dist/features/link/server/index.js.map +1 -1
- package/dist/features/link/server/schema.d.ts.map +1 -1
- package/dist/features/link/server/schema.js +14 -9
- package/dist/features/link/server/schema.js.map +1 -1
- package/dist/features/lists/checklist/client/index.js +1 -1
- package/dist/features/lists/checklist/client/index.js.map +1 -1
- package/dist/features/lists/checklist/server/index.js +1 -1
- package/dist/features/lists/checklist/server/index.js.map +1 -1
- package/dist/features/lists/orderedList/client/index.js +1 -1
- package/dist/features/lists/orderedList/client/index.js.map +1 -1
- package/dist/features/lists/orderedList/server/index.js +1 -1
- package/dist/features/lists/orderedList/server/index.js.map +1 -1
- package/dist/features/lists/unorderedList/client/index.js +1 -1
- package/dist/features/lists/unorderedList/client/index.js.map +1 -1
- package/dist/features/lists/unorderedList/server/index.js +1 -1
- package/dist/features/lists/unorderedList/server/index.js.map +1 -1
- package/dist/features/relationship/server/schema.d.ts +3 -3
- package/dist/features/relationship/server/schema.d.ts.map +1 -1
- package/dist/features/relationship/server/schema.js +27 -13
- package/dist/features/relationship/server/schema.js.map +1 -1
- package/dist/features/textState/feature.client.js +1 -1
- package/dist/features/textState/feature.client.js.map +1 -1
- package/dist/features/toolbars/fixed/client/Toolbar/index.css +2 -2
- package/dist/features/toolbars/inline/client/Toolbar/index.css +2 -13
- package/dist/features/toolbars/shared/ToolbarDropdown/index.css +8 -12
- package/dist/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -1
- package/dist/features/toolbars/shared/useToolbarStates.d.ts.map +1 -1
- package/dist/features/toolbars/shared/useToolbarStates.js +3 -1
- package/dist/features/toolbars/shared/useToolbarStates.js.map +1 -1
- package/dist/features/typesClient.d.ts +1 -1
- package/dist/features/typesClient.d.ts.map +1 -1
- package/dist/features/typesClient.js.map +1 -1
- package/dist/features/typesServer.d.ts +2 -2
- package/dist/features/typesServer.d.ts.map +1 -1
- package/dist/features/typesServer.js.map +1 -1
- package/dist/features/upload/client/component/index.css +11 -11
- package/dist/features/upload/client/plugin/index.js +5 -5
- package/dist/features/upload/client/plugin/index.js.map +1 -1
- package/dist/features/upload/server/index.js +2 -2
- package/dist/features/upload/server/index.js.map +1 -1
- package/dist/features/upload/server/markdownTransformer.d.ts +2 -2
- package/dist/features/upload/server/markdownTransformer.d.ts.map +1 -1
- package/dist/features/upload/server/markdownTransformer.js +1 -1
- package/dist/features/upload/server/markdownTransformer.js.map +1 -1
- package/dist/features/upload/server/schema.d.ts +8 -8
- package/dist/features/upload/server/schema.d.ts.map +1 -1
- package/dist/features/upload/server/schema.js +59 -23
- package/dist/features/upload/server/schema.js.map +1 -1
- package/dist/field/Diff/converters/unknown/index.css +1 -1
- package/dist/field/Field.js +1 -1
- package/dist/field/Field.js.map +1 -1
- package/dist/field/ViewSelector.css +1 -1
- package/dist/field/bundled.css +1 -1
- package/dist/field/index.css +5 -5
- package/dist/field/index.js +1 -1
- package/dist/field/index.js.map +1 -1
- package/dist/field/rscEntry.d.ts.map +1 -1
- package/dist/field/rscEntry.js +2 -0
- package/dist/field/rscEntry.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/lexical/LexicalEditor.css +2 -2
- package/dist/lexical/config/client/loader.d.ts.map +1 -1
- package/dist/lexical/config/client/loader.js +5 -1
- package/dist/lexical/config/client/loader.js.map +1 -1
- package/dist/lexical/plugins/DecoratorPlugin/index.css +1 -1
- package/dist/lexical/plugins/DecoratorPlugin/index.js.map +1 -1
- package/dist/lexical/plugins/MarkdownShortcut/index.d.ts.map +1 -1
- package/dist/lexical/plugins/MarkdownShortcut/index.js +1 -1
- package/dist/lexical/plugins/MarkdownShortcut/index.js.map +1 -1
- package/dist/lexical/plugins/SlashMenu/index.css +1 -5
- package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.css +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.css +3 -3
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
- package/dist/lexical/theme/EditorTheme.css +18 -19
- package/dist/lexical/ui/ContentEditable.css +5 -5
- package/dist/lexical/utils/markdown/convertFromMarkdownString.d.ts +17 -0
- package/dist/lexical/utils/markdown/convertFromMarkdownString.d.ts.map +1 -0
- package/dist/lexical/utils/markdown/convertFromMarkdownString.js +27 -0
- package/dist/lexical/utils/markdown/convertFromMarkdownString.js.map +1 -0
- package/dist/lexical/utils/markdown/convertFromMarkdownString.spec.js +88 -0
- package/dist/lexical/utils/markdown/convertFromMarkdownString.spec.js.map +1 -0
- package/dist/lexical/utils/markdown/createBlockNode.d.ts +1 -1
- package/dist/lexical/utils/markdown/createBlockNode.d.ts.map +1 -1
- package/dist/lexical/utils/markdown/createBlockNode.js.map +1 -1
- package/dist/lexical/utils/markdown/normalizeMarkdown.d.ts +25 -0
- package/dist/lexical/utils/markdown/normalizeMarkdown.d.ts.map +1 -0
- package/dist/lexical/utils/markdown/normalizeMarkdown.js +91 -0
- package/dist/lexical/utils/markdown/normalizeMarkdown.js.map +1 -0
- package/dist/lexical-proxy/@lexical-markdown.d.ts +1 -1
- package/dist/lexical-proxy/@lexical-markdown.d.ts.map +1 -1
- package/dist/lexical-proxy/@lexical-markdown.js +1 -1
- package/dist/lexical-proxy/@lexical-markdown.js.map +1 -1
- package/dist/types/builtInNodes.d.ts.map +1 -1
- package/dist/types/builtInNodes.js +17 -17
- package/dist/types/builtInNodes.js.map +1 -1
- package/dist/types/index.d.ts +16 -16
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/jsonSchemaHelpers.d.ts +2 -0
- package/dist/types/jsonSchemaHelpers.d.ts.map +1 -1
- package/dist/types/jsonSchemaHelpers.js +7 -3
- package/dist/types/jsonSchemaHelpers.js.map +1 -1
- package/dist/types/nodeTypes.d.ts +51 -9
- package/dist/types/nodeTypes.d.ts.map +1 -1
- package/dist/types/nodeTypes.js +3 -3
- package/dist/types/nodeTypes.js.map +1 -1
- package/dist/types/schema.d.ts.map +1 -1
- package/dist/types/schema.js +24 -7
- package/dist/types/schema.js.map +1 -1
- package/dist/utilities/applyBaseFilterToFields.d.ts.map +1 -1
- package/dist/utilities/applyBaseFilterToFields.js +1 -2
- package/dist/utilities/applyBaseFilterToFields.js.map +1 -1
- package/dist/utilities/buildEditorState.d.ts +17 -3
- package/dist/utilities/buildEditorState.d.ts.map +1 -1
- package/dist/utilities/buildEditorState.js +8 -0
- package/dist/utilities/buildEditorState.js.map +1 -1
- package/dist/utilities/buildInitialState.d.ts +2 -1
- package/dist/utilities/buildInitialState.d.ts.map +1 -1
- package/dist/utilities/buildInitialState.js.map +1 -1
- package/dist/utilities/fieldsDrawer/Drawer.d.ts.map +1 -1
- package/dist/utilities/fieldsDrawer/Drawer.js +19 -10
- package/dist/utilities/fieldsDrawer/Drawer.js.map +1 -1
- package/dist/utilities/fieldsDrawer/DrawerContent.d.ts +4 -1
- package/dist/utilities/fieldsDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/utilities/fieldsDrawer/DrawerContent.js +8 -7
- package/dist/utilities/fieldsDrawer/DrawerContent.js.map +1 -1
- package/dist/utilities/fieldsDrawer/index.css +12 -0
- package/dist/utilities/fieldsDrawer/useDrawerSubmit.d.ts +29 -0
- package/dist/utilities/fieldsDrawer/useDrawerSubmit.d.ts.map +1 -0
- package/dist/utilities/fieldsDrawer/useDrawerSubmit.js +97 -0
- package/dist/utilities/fieldsDrawer/useDrawerSubmit.js.map +1 -0
- package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.js +1 -1
- package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.js.map +1 -1
- package/package.json +22 -26
- package/dist/exports/client/Field-G5Z2HM5Y.js +0 -2
- package/dist/exports/client/Field-G5Z2HM5Y.js.map +0 -7
- package/dist/exports/client/chunk-6QWQ7JV4.js +0 -2
- package/dist/exports/client/chunk-6QWQ7JV4.js.map +0 -7
- package/dist/exports/client/chunk-INBEEENE.js +0 -2
- package/dist/exports/client/chunk-INBEEENE.js.map +0 -7
- package/dist/exports/client/chunk-LH634DPU.js +0 -12
- package/dist/exports/client/chunk-LH634DPU.js.map +0 -7
- package/dist/exports/client/chunk-UAKNDD6R.js +0 -2
- package/dist/exports/client/chunk-UAKNDD6R.js.map +0 -7
- package/dist/exports/client/componentInline-D3A6OW76.js +0 -2
- package/dist/features/blockquote/markdownTransformer.d.ts +0 -3
- package/dist/features/blockquote/markdownTransformer.d.ts.map +0 -1
- package/dist/features/blockquote/markdownTransformer.js +0 -33
- package/dist/features/blockquote/markdownTransformer.js.map +0 -1
- package/dist/features/format/bold/markdownTransformers.d.ts +0 -6
- package/dist/features/format/bold/markdownTransformers.d.ts.map +0 -1
- package/dist/features/format/bold/markdownTransformers.js +0 -23
- package/dist/features/format/bold/markdownTransformers.js.map +0 -1
- package/dist/features/format/inlineCode/markdownTransformers.d.ts +0 -3
- package/dist/features/format/inlineCode/markdownTransformers.d.ts.map +0 -1
- package/dist/features/format/inlineCode/markdownTransformers.js +0 -6
- package/dist/features/format/inlineCode/markdownTransformers.js.map +0 -1
- package/dist/features/format/italic/markdownTransformers.d.ts +0 -4
- package/dist/features/format/italic/markdownTransformers.d.ts.map +0 -1
- package/dist/features/format/italic/markdownTransformers.js +0 -12
- package/dist/features/format/italic/markdownTransformers.js.map +0 -1
- package/dist/features/format/strikethrough/markdownTransformers.d.ts +0 -3
- package/dist/features/format/strikethrough/markdownTransformers.d.ts.map +0 -1
- package/dist/features/format/strikethrough/markdownTransformers.js +0 -6
- package/dist/features/format/strikethrough/markdownTransformers.js.map +0 -1
- package/dist/features/lists/checklist/markdownTransformers.d.ts +0 -3
- package/dist/features/lists/checklist/markdownTransformers.d.ts.map +0 -1
- package/dist/features/lists/checklist/markdownTransformers.js +0 -12
- package/dist/features/lists/checklist/markdownTransformers.js.map +0 -1
- package/dist/features/lists/orderedList/markdownTransformer.d.ts +0 -3
- package/dist/features/lists/orderedList/markdownTransformer.d.ts.map +0 -1
- package/dist/features/lists/orderedList/markdownTransformer.js +0 -12
- package/dist/features/lists/orderedList/markdownTransformer.js.map +0 -1
- package/dist/features/lists/shared/markdown.d.ts +0 -6
- package/dist/features/lists/shared/markdown.d.ts.map +0 -1
- package/dist/features/lists/shared/markdown.js +0 -57
- package/dist/features/lists/shared/markdown.js.map +0 -1
- package/dist/features/lists/unorderedList/markdownTransformer.d.ts +0 -3
- package/dist/features/lists/unorderedList/markdownTransformer.d.ts.map +0 -1
- package/dist/features/lists/unorderedList/markdownTransformer.js +0 -12
- package/dist/features/lists/unorderedList/markdownTransformer.js.map +0 -1
- package/dist/lexical/utils/guard.d.ts +0 -5
- package/dist/lexical/utils/guard.d.ts.map +0 -1
- package/dist/lexical/utils/guard.js +0 -9
- package/dist/lexical/utils/guard.js.map +0 -1
- package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.d.ts +0 -2
- package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.d.ts.map +0 -1
- package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.js +0 -2
- package/dist/lexical-proxy/@lexical-react/LexicalContextMenuPlugin.js.map +0 -1
- package/dist/packages/@lexical/markdown/MarkdownExport.d.ts +0 -14
- package/dist/packages/@lexical/markdown/MarkdownExport.d.ts.map +0 -1
- package/dist/packages/@lexical/markdown/MarkdownExport.js +0 -213
- package/dist/packages/@lexical/markdown/MarkdownExport.js.map +0 -1
- package/dist/packages/@lexical/markdown/MarkdownImport.d.ts +0 -19
- package/dist/packages/@lexical/markdown/MarkdownImport.d.ts.map +0 -1
- package/dist/packages/@lexical/markdown/MarkdownImport.js +0 -198
- package/dist/packages/@lexical/markdown/MarkdownImport.js.map +0 -1
- package/dist/packages/@lexical/markdown/MarkdownShortcuts.d.ts +0 -11
- package/dist/packages/@lexical/markdown/MarkdownShortcuts.d.ts.map +0 -1
- package/dist/packages/@lexical/markdown/MarkdownShortcuts.js +0 -304
- package/dist/packages/@lexical/markdown/MarkdownShortcuts.js.map +0 -1
- package/dist/packages/@lexical/markdown/MarkdownTransformers.d.ts +0 -147
- package/dist/packages/@lexical/markdown/MarkdownTransformers.d.ts.map +0 -1
- package/dist/packages/@lexical/markdown/MarkdownTransformers.js +0 -268
- package/dist/packages/@lexical/markdown/MarkdownTransformers.js.map +0 -1
- package/dist/packages/@lexical/markdown/importTextFormatTransformer.d.ts +0 -22
- package/dist/packages/@lexical/markdown/importTextFormatTransformer.d.ts.map +0 -1
- package/dist/packages/@lexical/markdown/importTextFormatTransformer.js +0 -91
- package/dist/packages/@lexical/markdown/importTextFormatTransformer.js.map +0 -1
- package/dist/packages/@lexical/markdown/importTextMatchTransformer.d.ts +0 -21
- package/dist/packages/@lexical/markdown/importTextMatchTransformer.d.ts.map +0 -1
- package/dist/packages/@lexical/markdown/importTextMatchTransformer.js +0 -54
- package/dist/packages/@lexical/markdown/importTextMatchTransformer.js.map +0 -1
- package/dist/packages/@lexical/markdown/importTextTransformers.d.ts +0 -18
- package/dist/packages/@lexical/markdown/importTextTransformers.d.ts.map +0 -1
- package/dist/packages/@lexical/markdown/importTextTransformers.js +0 -54
- package/dist/packages/@lexical/markdown/importTextTransformers.js.map +0 -1
- package/dist/packages/@lexical/markdown/index.d.ts +0 -29
- package/dist/packages/@lexical/markdown/index.d.ts.map +0 -1
- package/dist/packages/@lexical/markdown/index.js +0 -39
- package/dist/packages/@lexical/markdown/index.js.map +0 -1
- package/dist/packages/@lexical/markdown/utils.d.ts +0 -34
- package/dist/packages/@lexical/markdown/utils.d.ts.map +0 -1
- package/dist/packages/@lexical/markdown/utils.js +0 -267
- package/dist/packages/@lexical/markdown/utils.js.map +0 -1
- /package/dist/exports/client/{component-HKTAZ77E.js.map → component-PHZQBOJE.js.map} +0 -0
- /package/dist/exports/client/{componentInline-D3A6OW76.js.map → componentInline-H24N7GUG.js.map} +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
+
import { QUOTE } from '@lexical/markdown';
|
|
3
4
|
import { $createQuoteNode, $isQuoteNode, QuoteNode } from '@lexical/rich-text';
|
|
4
5
|
import { $setBlocksType } from '@lexical/selection';
|
|
5
6
|
import { $getSelection, $isRangeSelection } from 'lexical';
|
|
@@ -7,7 +8,6 @@ import { BlockquoteIcon } from '../../../lexical/ui/icons/Blockquote/index.js';
|
|
|
7
8
|
import { createClientFeature } from '../../../utilities/createClientFeature.js';
|
|
8
9
|
import { slashMenuBasicGroupWithItems } from '../../shared/slashMenu/basicGroup.js';
|
|
9
10
|
import { toolbarTextDropdownGroupWithItems } from '../../shared/toolbar/textDropdownGroup.js';
|
|
10
|
-
import { MarkdownTransformer } from '../markdownTransformer.js';
|
|
11
11
|
const toolbarGroups = [toolbarTextDropdownGroupWithItems([{
|
|
12
12
|
ChildComponent: BlockquoteIcon,
|
|
13
13
|
isActive: ({
|
|
@@ -40,7 +40,7 @@ const toolbarGroups = [toolbarTextDropdownGroupWithItems([{
|
|
|
40
40
|
order: 20
|
|
41
41
|
}])];
|
|
42
42
|
export const BlockquoteFeatureClient = createClientFeature({
|
|
43
|
-
markdownTransformers: [
|
|
43
|
+
markdownTransformers: [QUOTE],
|
|
44
44
|
nodes: [QuoteNode],
|
|
45
45
|
slashMenu: {
|
|
46
46
|
groups: [slashMenuBasicGroupWithItems([{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["$createQuoteNode","$isQuoteNode","QuoteNode","$setBlocksType","$getSelection","$isRangeSelection","BlockquoteIcon","createClientFeature","slashMenuBasicGroupWithItems","toolbarTextDropdownGroupWithItems","
|
|
1
|
+
{"version":3,"file":"index.js","names":["QUOTE","$createQuoteNode","$isQuoteNode","QuoteNode","$setBlocksType","$getSelection","$isRangeSelection","BlockquoteIcon","createClientFeature","slashMenuBasicGroupWithItems","toolbarTextDropdownGroupWithItems","toolbarGroups","ChildComponent","isActive","selection","node","getNodes","getParent","key","label","i18n","t","onSelect","editor","update","order","BlockquoteFeatureClient","markdownTransformers","nodes","slashMenu","groups","Icon","keywords","toolbarFixed","toolbarInline"],"sources":["../../../../src/features/blockquote/client/index.tsx"],"sourcesContent":["'use client'\n\nimport { QUOTE } from '@lexical/markdown'\nimport { $createQuoteNode, $isQuoteNode, QuoteNode } from '@lexical/rich-text'\nimport { $setBlocksType } from '@lexical/selection'\nimport { $getSelection, $isRangeSelection } from 'lexical'\n\nimport type { ToolbarGroup } from '../../toolbars/types.js'\n\nimport { BlockquoteIcon } from '../../../lexical/ui/icons/Blockquote/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { slashMenuBasicGroupWithItems } from '../../shared/slashMenu/basicGroup.js'\nimport { toolbarTextDropdownGroupWithItems } from '../../shared/toolbar/textDropdownGroup.js'\n\nconst toolbarGroups: ToolbarGroup[] = [\n toolbarTextDropdownGroupWithItems([\n {\n ChildComponent: BlockquoteIcon,\n isActive: ({ selection }) => {\n if (!$isRangeSelection(selection)) {\n return false\n }\n for (const node of selection.getNodes()) {\n if (!$isQuoteNode(node) && !$isQuoteNode(node.getParent())) {\n return false\n }\n }\n return true\n },\n key: 'blockquote',\n label: ({ i18n }) => {\n return i18n.t('lexical:blockquote:label')\n },\n onSelect: ({ editor }) => {\n editor.update(() => {\n const selection = $getSelection()\n $setBlocksType(selection, () => $createQuoteNode())\n })\n },\n order: 20,\n },\n ]),\n]\n\nexport const BlockquoteFeatureClient = createClientFeature({\n markdownTransformers: [QUOTE],\n nodes: [QuoteNode],\n\n slashMenu: {\n groups: [\n slashMenuBasicGroupWithItems([\n {\n Icon: BlockquoteIcon,\n key: 'blockquote',\n keywords: ['quote', 'blockquote'],\n label: ({ i18n }) => {\n return i18n.t('lexical:blockquote:label')\n },\n onSelect: ({ editor }) => {\n editor.update(() => {\n const selection = $getSelection()\n $setBlocksType(selection, () => $createQuoteNode())\n })\n },\n },\n ]),\n ],\n },\n toolbarFixed: {\n groups: toolbarGroups,\n },\n toolbarInline: {\n groups: toolbarGroups,\n },\n})\n"],"mappings":"AAAA;;AAEA,SAASA,KAAK,QAAQ;AACtB,SAASC,gBAAgB,EAAEC,YAAY,EAAEC,SAAS,QAAQ;AAC1D,SAASC,cAAc,QAAQ;AAC/B,SAASC,aAAa,EAAEC,iBAAiB,QAAQ;AAIjD,SAASC,cAAc,QAAQ;AAC/B,SAASC,mBAAmB,QAAQ;AACpC,SAASC,4BAA4B,QAAQ;AAC7C,SAASC,iCAAiC,QAAQ;AAElD,MAAMC,aAAA,GAAgC,CACpCD,iCAAA,CAAkC,CAChC;EACEE,cAAA,EAAgBL,cAAA;EAChBM,QAAA,EAAUA,CAAC;IAAEC;EAAS,CAAE;IACtB,IAAI,CAACR,iBAAA,CAAkBQ,SAAA,GAAY;MACjC,OAAO;IACT;IACA,KAAK,MAAMC,IAAA,IAAQD,SAAA,CAAUE,QAAQ,IAAI;MACvC,IAAI,CAACd,YAAA,CAAaa,IAAA,KAAS,CAACb,YAAA,CAAaa,IAAA,CAAKE,SAAS,KAAK;QAC1D,OAAO;MACT;IACF;IACA,OAAO;EACT;EACAC,GAAA,EAAK;EACLC,KAAA,EAAOA,CAAC;IAAEC;EAAI,CAAE;IACd,OAAOA,IAAA,CAAKC,CAAC,CAAC;EAChB;EACAC,QAAA,EAAUA,CAAC;IAAEC;EAAM,CAAE;IACnBA,MAAA,CAAOC,MAAM,CAAC;MACZ,MAAMV,SAAA,GAAYT,aAAA;MAClBD,cAAA,CAAeU,SAAA,EAAW,MAAMb,gBAAA;IAClC;EACF;EACAwB,KAAA,EAAO;AACT,EACD,EACF;AAED,OAAO,MAAMC,uBAAA,GAA0BlB,mBAAA,CAAoB;EACzDmB,oBAAA,EAAsB,CAAC3B,KAAA,CAAM;EAC7B4B,KAAA,EAAO,CAACzB,SAAA,CAAU;EAElB0B,SAAA,EAAW;IACTC,MAAA,EAAQ,CACNrB,4BAAA,CAA6B,CAC3B;MACEsB,IAAA,EAAMxB,cAAA;MACNW,GAAA,EAAK;MACLc,QAAA,EAAU,CAAC,SAAS,aAAa;MACjCb,KAAA,EAAOA,CAAC;QAAEC;MAAI,CAAE;QACd,OAAOA,IAAA,CAAKC,CAAC,CAAC;MAChB;MACAC,QAAA,EAAUA,CAAC;QAAEC;MAAM,CAAE;QACnBA,MAAA,CAAOC,MAAM,CAAC;UACZ,MAAMV,SAAA,GAAYT,aAAA;UAClBD,cAAA,CAAeU,SAAA,EAAW,MAAMb,gBAAA;QAClC;MACF;IACF,EACD;EAEL;EACAgC,YAAA,EAAc;IACZH,MAAA,EAAQnB;EACV;EACAuB,aAAA,EAAe;IACbJ,MAAA,EAAQnB;EACV;AACF","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
+
import { QUOTE } from '@lexical/markdown';
|
|
1
2
|
import { QuoteNode } from '@lexical/rich-text';
|
|
2
3
|
import { createServerFeature } from '../../../utilities/createServerFeature.js';
|
|
3
4
|
import { createNode } from '../../typeUtilities.js';
|
|
4
|
-
import { MarkdownTransformer } from '../markdownTransformer.js';
|
|
5
5
|
import { i18n } from './i18n.js';
|
|
6
6
|
import { quoteNodeJSONSchema } from './schema.js';
|
|
7
7
|
export const BlockquoteFeature = createServerFeature({
|
|
@@ -9,7 +9,7 @@ export const BlockquoteFeature = createServerFeature({
|
|
|
9
9
|
ClientFeature: '@payloadcms/richtext-lexical/client#BlockquoteFeatureClient',
|
|
10
10
|
clientFeatureProps: null,
|
|
11
11
|
i18n,
|
|
12
|
-
markdownTransformers: [
|
|
12
|
+
markdownTransformers: [QUOTE],
|
|
13
13
|
nodes: [createNode({
|
|
14
14
|
jsonSchema: quoteNodeJSONSchema,
|
|
15
15
|
node: QuoteNode
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["QuoteNode","createServerFeature","createNode","
|
|
1
|
+
{"version":3,"file":"index.js","names":["QUOTE","QuoteNode","createServerFeature","createNode","i18n","quoteNodeJSONSchema","BlockquoteFeature","feature","ClientFeature","clientFeatureProps","markdownTransformers","nodes","jsonSchema","node","key"],"sources":["../../../../src/features/blockquote/server/index.ts"],"sourcesContent":["import { QUOTE } from '@lexical/markdown'\nimport { QuoteNode } from '@lexical/rich-text'\n\nimport { createServerFeature } from '../../../utilities/createServerFeature.js'\nimport { createNode } from '../../typeUtilities.js'\nimport { i18n } from './i18n.js'\nimport { quoteNodeJSONSchema } from './schema.js'\n\nexport type { SerializedQuoteNode } from './schema.js'\n\nexport const BlockquoteFeature = createServerFeature({\n feature: {\n ClientFeature: '@payloadcms/richtext-lexical/client#BlockquoteFeatureClient',\n clientFeatureProps: null,\n i18n,\n markdownTransformers: [QUOTE],\n nodes: [\n createNode({\n jsonSchema: quoteNodeJSONSchema,\n node: QuoteNode,\n }),\n ],\n },\n key: 'blockquote',\n})\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ;AACtB,SAASC,SAAS,QAAQ;AAE1B,SAASC,mBAAmB,QAAQ;AACpC,SAASC,UAAU,QAAQ;AAC3B,SAASC,IAAI,QAAQ;AACrB,SAASC,mBAAmB,QAAQ;AAIpC,OAAO,MAAMC,iBAAA,GAAoBJ,mBAAA,CAAoB;EACnDK,OAAA,EAAS;IACPC,aAAA,EAAe;IACfC,kBAAA,EAAoB;IACpBL,IAAA;IACAM,oBAAA,EAAsB,CAACV,KAAA,CAAM;IAC7BW,KAAA,EAAO,CACLR,UAAA,CAAW;MACTS,UAAA,EAAYP,mBAAA;MACZQ,IAAA,EAAMZ;IACR;EAEJ;EACAa,GAAA,EAAK;AACP","ignoreList":[]}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
.collapsible__header-wrap {
|
|
12
|
-
|
|
12
|
+
inset-inline-end: var(--spacer-4);
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
|
|
69
69
|
.LexicalEditorTheme__block__header-action {
|
|
70
70
|
cursor: pointer;
|
|
71
|
-
margin-
|
|
71
|
+
margin-inline-start: var(--spacer-1);
|
|
72
72
|
|
|
73
73
|
&:hover,
|
|
74
74
|
&:focus-visible {
|
|
@@ -2,6 +2,7 @@ import React from 'react';
|
|
|
2
2
|
import type { ViewMapBlockComponentProps } from '../../../../types/index.js';
|
|
3
3
|
import type { BlockFields } from '../../server/schema.js';
|
|
4
4
|
import './index.css';
|
|
5
|
+
import '../../../../utilities/fieldsDrawer/index.css';
|
|
5
6
|
export type BlockComponentProps<TFormData extends Record<string, unknown> = BlockFields> = {
|
|
6
7
|
/**
|
|
7
8
|
* Can be modified by the node in order to trigger the re-fetch of the initial state based on the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/client/component/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/client/component/index.tsx"],"names":[],"mappings":"AAqCA,OAAO,KAAkD,MAAM,OAAO,CAAA;AAGtE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAA;AAC5E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEzD,OAAO,aAAa,CAAA;AACpB,OAAO,8CAA8C,CAAA;AAerD,MAAM,MAAM,mBAAmB,CAAC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,IAAI;IACzF;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAAC,CAAA;IAC3D;;;OAGG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAAC,CAAA;IAC3D;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA0uBxD,CAAA"}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { jsx as _jsx, jsxs as _jsxs
|
|
3
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
4
|
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
|
|
5
5
|
import { useLexicalEditable } from '@lexical/react/useLexicalEditable';
|
|
6
6
|
import { getTranslation } from '@payloadcms/translations';
|
|
7
|
-
import { Button, Collapsible, Drawer, EditDepthProvider, ErrorPill, Form, formatDrawerSlug,
|
|
7
|
+
import { Button, Collapsible, Drawer, EditDepthProvider, ErrorPill, Form, formatDrawerSlug, MoreIcon, Pill, Popup, PopupList, RenderFields, SectionTitle, useConfig, useDocumentForm, useDocumentInfo, useEditDepth, useFormSubmitted, useServerFunctions, useTranslation, XIcon } from '@payloadcms/ui';
|
|
8
8
|
import { abortAndIgnore } from '@payloadcms/ui/shared';
|
|
9
9
|
import { $getNodeByKey, $getRoot, SKIP_DOM_SELECTION_TAG } from 'lexical';
|
|
10
10
|
import { deepCopyObjectSimpleWithoutReactComponents, reduceFieldsToValues } from 'payload/shared';
|
|
11
11
|
import React, { useCallback, useEffect, useMemo, useRef } from 'react';
|
|
12
12
|
import { v4 as uuid } from 'uuid';
|
|
13
13
|
import './index.css';
|
|
14
|
+
import '../../../../utilities/fieldsDrawer/index.css';
|
|
14
15
|
import { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js';
|
|
16
|
+
import { RegisterFormSubmit, useDrawerSubmit } from '../../../../utilities/fieldsDrawer/useDrawerSubmit.js';
|
|
15
17
|
import { useLexicalDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDrawer.js';
|
|
16
18
|
import { $isBlockNode } from '../nodes/BlocksNode.js';
|
|
17
19
|
import { BlockContent, useBlockComponentContext } from './BlockContent.js';
|
|
@@ -226,7 +228,8 @@ export const BlockComponent = props => {
|
|
|
226
228
|
const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_blocks.${blockType}`;
|
|
227
229
|
const clientSchemaMap = featureClientSchemaMap['blocks'];
|
|
228
230
|
const blocksField = clientSchemaMap?.[componentMapRenderedBlockPath]?.[0];
|
|
229
|
-
const
|
|
231
|
+
const blockOrSlug = blocksField?.blocks?.[0];
|
|
232
|
+
const clientBlock = typeof blockOrSlug === 'string' ? config.blocksMap[blockOrSlug] : blockOrSlug;
|
|
230
233
|
const {
|
|
231
234
|
i18n,
|
|
232
235
|
t
|
|
@@ -477,14 +480,20 @@ export const BlockComponent = props => {
|
|
|
477
480
|
});
|
|
478
481
|
}, [resolvedCustomBlock, resolvedCustomLabel, blockDisplayName, baseClass, clientBlock?.admin?.disableBlockName, blockType, i18n, isCollapsed, onCollapsedChange, isEditable, nodeKey, removeBlock, rowIndex, t, toggleDrawer]);
|
|
479
482
|
const blockID = formData?.id;
|
|
483
|
+
const {
|
|
484
|
+
headerActions,
|
|
485
|
+
submitRef
|
|
486
|
+
} = useDrawerSubmit();
|
|
480
487
|
const BlockDrawer = useMemo(() => () => /*#__PURE__*/_jsx(EditDepthProvider, {
|
|
481
488
|
children: /*#__PURE__*/_jsx(Drawer, {
|
|
482
489
|
className: '',
|
|
490
|
+
headerActions: headerActions,
|
|
483
491
|
slug: drawerSlug,
|
|
484
492
|
title: t(`lexical:blocks:inlineBlocks:${blockID ? 'edit' : 'create'}`, {
|
|
485
493
|
label: blockDisplayName ?? t('lexical:blocks:inlineBlocks:label')
|
|
486
494
|
}),
|
|
487
|
-
children: initialState ? /*#__PURE__*/_jsxs(
|
|
495
|
+
children: initialState ? /*#__PURE__*/_jsxs("div", {
|
|
496
|
+
className: "fields-drawer",
|
|
488
497
|
children: [/*#__PURE__*/_jsx(RenderFields, {
|
|
489
498
|
fields: clientBlock?.fields ?? [],
|
|
490
499
|
forceRender: true,
|
|
@@ -493,13 +502,12 @@ export const BlockComponent = props => {
|
|
|
493
502
|
parentSchemaPath: schemaFieldsPath,
|
|
494
503
|
permissions: true,
|
|
495
504
|
readOnly: !isEditable
|
|
496
|
-
}), /*#__PURE__*/_jsx(
|
|
497
|
-
|
|
498
|
-
children: t('fields:saveChanges')
|
|
505
|
+
}), /*#__PURE__*/_jsx(RegisterFormSubmit, {
|
|
506
|
+
submitRef: submitRef
|
|
499
507
|
})]
|
|
500
508
|
}) : null
|
|
501
509
|
})
|
|
502
|
-
}), [initialState, drawerSlug, blockID, blockDisplayName, t, isEditable, clientBlock?.fields, schemaFieldsPath]);
|
|
510
|
+
}), [initialState, drawerSlug, blockID, blockDisplayName, t, isEditable, clientBlock?.fields, schemaFieldsPath, headerActions, submitRef]);
|
|
503
511
|
// Memoized Form JSX
|
|
504
512
|
const Block = useMemo(() => {
|
|
505
513
|
if (!initialState) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useLexicalComposerContext","useLexicalEditable","getTranslation","Button","Collapsible","Drawer","EditDepthProvider","ErrorPill","Form","formatDrawerSlug","FormSubmit","MoreIcon","Pill","Popup","PopupList","RenderFields","SectionTitle","useConfig","useDocumentForm","useDocumentInfo","useEditDepth","useFormSubmitted","useServerFunctions","useTranslation","XIcon","abortAndIgnore","$getNodeByKey","$getRoot","SKIP_DOM_SELECTION_TAG","deepCopyObjectSimpleWithoutReactComponents","reduceFieldsToValues","React","useCallback","useEffect","useMemo","useRef","v4","uuid","useEditorConfigContext","useLexicalDrawer","$isBlockNode","BlockContent","useBlockComponentContext","removeEmptyArrayValues","BlockComponent","props","cacheBuster","className","baseClass","CustomBlock","CustomBlockFromProps","CustomLabel","CustomLabelFromProps","formData","nodeKey","submitted","id","collectionSlug","globalSlug","fieldProps","featureClientSchemaMap","field","parentLexicalRichTextField","initialLexicalFormState","schemaPath","uuidFromContext","fields","parentDocumentFields","onChangeAbortControllerRef","AbortController","editDepth","errorCount","setErrorCount","useState","config","drawerSlug","slug","depth","toggleDrawer","getDocPreferences","setDocFieldPreferences","editor","isEditable","blockType","getFormState","schemaFieldsPath","initialState","setInitialState","cachedFormState","formState","mergedState","Object","fromEntries","entries","map","fieldName","fieldState","initialValue","value","blockName","passesCondition","valid","hasMounted","prevCacheBuster","current","formUuid","setCustomLabel","undefined","customComponents","BlockLabel","setCustomBlock","Block","resolvedCustomBlock","_jsx","isEditor","isJSXConverter","resolvedCustomLabel","abortController","awaitInitialState","state","data","docPermissions","docPreferences","documentFormState","excludeFiles","initialBlockData","operation","readOnly","renderAllFields","signal","newFormStateData","update","node","newData","setFields","tag","_components","isCollapsed","setIsCollapsed","collapsed","componentMapRenderedBlockPath","clientSchemaMap","blocksField","clientBlock","blockReferences","blocksMap","blocks","i18n","t","onChange","prevFormState","submit","controller","newFormState","initialBlockFormState","setTimeout","rowErrorCount","formField","values","removeBlock","remove","rowIndex","setRowIndex","updateIndex","getEditorState","read","root","children","getChildren","blockCount","child","getKey","registerUpdateListener","blockDisplayName","labels","singular","onCollapsedChange","changedCollapsed","then","currentDocPreferences","currentFieldPreferences","name","collapsedArray","newCollapsed","length","includes","push","splice","indexOf","hello","EditButton","buttonStyle","disabled","el","icon","onClick","e","preventDefault","stopPropagation","onMouseDown","round","size","tooltip","label","RemoveButton","BlockCollapsible","Actions","collapsibleProps","disableBlockName","editButton","fieldHasErrors","Label","CustomPill","removeButton","showDragHandle","showRowNumber","actions","button","buttonClassName","caret","horizontalAlign","render","close","_jsxs","ButtonGroup","buttonSize","filter","Boolean","join","collapsibleStyle","dragHandleProps","attributes","role","tabIndex","listeners","header","String","padStart","pillStyle","admin","path","count","withMessage","onToggle","incomingCollapsedState","blockID","BlockDrawer","title","_Fragment","forceRender","parentIndexPath","parentPath","parentSchemaPath","permissions","programmaticSubmit","style","display","beforeSubmit","onSubmit","formSchema"],"sources":["../../../../../src/features/blocks/client/component/index.tsx"],"sourcesContent":["'use client'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n Collapsible,\n Drawer,\n EditDepthProvider,\n ErrorPill,\n Form,\n formatDrawerSlug,\n FormSubmit,\n MoreIcon,\n Pill,\n Popup,\n PopupList,\n RenderFields,\n SectionTitle,\n useConfig,\n useDocumentForm,\n useDocumentInfo,\n useEditDepth,\n useFormSubmitted,\n useServerFunctions,\n useTranslation,\n XIcon,\n} from '@payloadcms/ui'\nimport { abortAndIgnore } from '@payloadcms/ui/shared'\nimport { $getNodeByKey, $getRoot, SKIP_DOM_SELECTION_TAG } from 'lexical'\nimport {\n type BlocksFieldClient,\n type ClientBlock,\n type CollapsedPreferences,\n type FormState,\n} from 'payload'\nimport { deepCopyObjectSimpleWithoutReactComponents, reduceFieldsToValues } from 'payload/shared'\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react'\nimport { v4 as uuid } from 'uuid'\n\nimport type { ViewMapBlockComponentProps } from '../../../../types/index.js'\nimport type { BlockFields } from '../../server/schema.js'\n\nimport './index.css'\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { useLexicalDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDrawer.js'\nimport { $isBlockNode } from '../nodes/BlocksNode.js'\nimport {\n type BlockCollapsibleWithErrorProps,\n BlockContent,\n useBlockComponentContext,\n} from './BlockContent.js'\nimport { removeEmptyArrayValues } from './removeEmptyArrayValues.js'\n\nexport type BlockComponentProps<TFormData extends Record<string, unknown> = BlockFields> = {\n /**\n * Can be modified by the node in order to trigger the re-fetch of the initial state based on the\n * formData. This is useful when node.setFields() is explicitly called from outside of the form - in\n * this case, the new field state is likely not reflected in the form state, so we need to re-fetch\n */\n readonly cacheBuster: number\n readonly className: string\n /**\n * Custom block component from view map\n * Will be rendered with useBlockComponentContext hook.\n */\n readonly CustomBlock?: React.FC<ViewMapBlockComponentProps>\n /**\n * Custom block label from view map\n * Will be rendered with useBlockComponentContext hook.\n */\n readonly CustomLabel?: React.FC<ViewMapBlockComponentProps>\n /**\n * The block's form data (field values).\n */\n readonly formData: TFormData\n /**\n * The unique key identifying this block node in the current editor instance.\n */\n readonly nodeKey: string\n}\n\nexport const BlockComponent: React.FC<BlockComponentProps> = (props) => {\n const {\n cacheBuster,\n className: baseClass,\n CustomBlock: CustomBlockFromProps,\n CustomLabel: CustomLabelFromProps,\n formData,\n nodeKey,\n } = props\n\n const submitted = useFormSubmitted()\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n const {\n fieldProps: {\n featureClientSchemaMap,\n field: parentLexicalRichTextField,\n initialLexicalFormState,\n schemaPath,\n },\n uuid: uuidFromContext,\n } = useEditorConfigContext()\n\n const { fields: parentDocumentFields } = useDocumentForm()\n const onChangeAbortControllerRef = useRef(new AbortController())\n const editDepth = useEditDepth()\n const [errorCount, setErrorCount] = React.useState(0)\n\n const { config } = useConfig()\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-blocks-create-${uuidFromContext}-${formData.id}`,\n depth: editDepth,\n })\n const { toggleDrawer } = useLexicalDrawer(drawerSlug)\n\n // Used for saving collapsed to preferences (and gettin' it from there again)\n // Remember, these preferences are scoped to the whole document, not just this form. This\n // is important to consider for the data path used in setDocFieldPreferences\n const { getDocPreferences, setDocFieldPreferences } = useDocumentInfo()\n const [editor] = useLexicalComposerContext()\n const isEditable = useLexicalEditable()\n\n const blockType = formData.blockType\n\n const { getFormState } = useServerFunctions()\n const schemaFieldsPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_blocks.${blockType}.fields`\n\n const [initialState, setInitialState] = React.useState<false | FormState | undefined>(() => {\n // Initial form state that was calculated server-side. May have stale values\n const cachedFormState = initialLexicalFormState?.[formData.id]?.formState\n if (!cachedFormState) {\n return false\n }\n\n // Merge current formData values into the cached form state\n // This ensures that when the component remounts (e.g., due to view changes), we don't lose user edits\n const mergedState = Object.fromEntries(\n Object.entries(cachedFormState).map(([fieldName, fieldState]) => [\n fieldName,\n fieldName in formData\n ? {\n ...fieldState,\n initialValue: formData[fieldName],\n value: formData[fieldName],\n }\n : fieldState,\n ]),\n )\n\n // Manually add blockName, as it's not part of cachedFormState\n mergedState.blockName = {\n initialValue: formData.blockName,\n passesCondition: true,\n valid: true,\n value: formData.blockName,\n }\n\n return mergedState\n })\n\n const hasMounted = useRef(false)\n const prevCacheBuster = useRef(cacheBuster)\n useEffect(() => {\n if (hasMounted.current) {\n if (prevCacheBuster.current !== cacheBuster) {\n setInitialState(false)\n }\n prevCacheBuster.current = cacheBuster\n } else {\n hasMounted.current = true\n }\n }, [cacheBuster])\n\n const [formUuid] = React.useState(() => uuid())\n\n // Server-rendered custom components (from admin.components, NOT viewMap).\n // When viewMap components exist (CustomBlockFromProps/CustomLabelFromProps),\n // we render them directly with formData instead, so these states are unused.\n const [CustomLabel, setCustomLabel] = React.useState<React.ReactNode | undefined>(() => {\n if (CustomLabelFromProps) {\n return undefined\n }\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n return initialState?.['_components']?.customComponents?.BlockLabel ?? undefined\n })\n\n const [CustomBlock, setCustomBlock] = React.useState<React.ReactNode | undefined>(() => {\n if (CustomBlockFromProps) {\n return undefined\n }\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n return initialState?.['_components']?.customComponents?.Block ?? undefined\n })\n\n // When viewMap components exist, render directly with formData (always current from\n // the lexical node). When they don't, fall back to server-rendered state.\n const resolvedCustomBlock = useMemo(() => {\n if (CustomBlockFromProps) {\n return (\n <CustomBlockFromProps\n className={baseClass}\n formData={formData}\n isEditor={true}\n isJSXConverter={false}\n nodeKey={nodeKey}\n // eslint-disable-next-line react-compiler/react-compiler -- intentionally passed as a prop for custom block components to call\n useBlockComponentContext={useBlockComponentContext}\n />\n )\n }\n return CustomBlock\n }, [CustomBlockFromProps, baseClass, formData, nodeKey, CustomBlock])\n\n const resolvedCustomLabel = useMemo(() => {\n if (CustomLabelFromProps) {\n return (\n <CustomLabelFromProps\n className={baseClass}\n formData={formData}\n isEditor={true}\n isJSXConverter={false}\n nodeKey={nodeKey}\n // eslint-disable-next-line react-compiler/react-compiler -- intentionally passed as a prop for custom block components to call\n useBlockComponentContext={useBlockComponentContext}\n />\n )\n }\n return CustomLabel\n }, [CustomLabelFromProps, baseClass, formData, nodeKey, CustomLabel])\n\n // Initial state for newly created blocks\n useEffect(() => {\n const abortController = new AbortController()\n\n const awaitInitialState = async () => {\n /*\n * This will only run if a new block is created. For all existing blocks that are loaded when the document is loaded, or when the form is saved,\n * this is not run, as the lexical field RSC will fetch the state server-side and pass it to the client. That way, we avoid unnecessary client-side\n * requests. Though for newly created blocks, we need to fetch the state client-side, as the server doesn't know about the block yet.\n */\n const { state } = await getFormState({\n id,\n collectionSlug,\n data: formData,\n docPermissions: { fields: true },\n docPreferences: await getDocPreferences(),\n documentFormState: deepCopyObjectSimpleWithoutReactComponents(parentDocumentFields, {\n excludeFiles: true,\n }),\n globalSlug,\n initialBlockData: formData,\n operation: 'update',\n readOnly: !isEditable,\n renderAllFields: true,\n schemaPath: schemaFieldsPath,\n signal: abortController.signal,\n })\n\n if (state) {\n state.blockName = {\n initialValue: formData.blockName,\n passesCondition: true,\n valid: true,\n value: formData.blockName,\n }\n\n const newFormStateData: BlockFields = reduceFieldsToValues(\n deepCopyObjectSimpleWithoutReactComponents(state, { excludeFiles: true }),\n true,\n ) as BlockFields\n\n // Things like default values may come back from the server => update the node with the new data\n editor.update(\n () => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isBlockNode(node)) {\n const newData = newFormStateData\n newData.blockType = blockType\n\n node.setFields(newData, true)\n }\n },\n // Without this, the outer editor's reconciler resets DOM selection\n // back into its own root, kicking focus out of any nested richText.\n { tag: SKIP_DOM_SELECTION_TAG },\n )\n\n setInitialState(state)\n if (!CustomLabelFromProps) {\n setCustomLabel(state._components?.customComponents?.BlockLabel ?? undefined)\n }\n if (!CustomBlockFromProps) {\n setCustomBlock(state._components?.customComponents?.Block ?? undefined)\n }\n }\n }\n\n if (formData && !initialState) {\n void awaitInitialState()\n }\n\n return () => {\n abortAndIgnore(abortController)\n }\n }, [\n getFormState,\n schemaFieldsPath,\n isEditable,\n id,\n CustomLabelFromProps,\n CustomBlockFromProps,\n formData,\n editor,\n nodeKey,\n initialState,\n collectionSlug,\n globalSlug,\n getDocPreferences,\n parentDocumentFields,\n blockType,\n ])\n\n const [isCollapsed, setIsCollapsed] = React.useState<boolean>(\n initialLexicalFormState?.[formData.id]?.collapsed ?? false,\n )\n\n const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_blocks.${blockType}`\n\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient | undefined = clientSchemaMap?.[\n componentMapRenderedBlockPath\n ]?.[0] as BlocksFieldClient\n\n const clientBlock: ClientBlock | undefined = blocksField.blockReferences\n ? typeof blocksField?.blockReferences?.[0] === 'string'\n ? config.blocksMap[blocksField?.blockReferences?.[0]]\n : blocksField?.blockReferences?.[0]\n : blocksField?.blocks?.[0]\n\n const { i18n, t } = useTranslation<object, string>()\n\n const onChange = useCallback(\n async ({ formState: prevFormState, submit }: { formState: FormState; submit?: boolean }) => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n\n const controller = new AbortController()\n onChangeAbortControllerRef.current = controller\n\n const { state: newFormState } = await getFormState({\n id,\n collectionSlug,\n docPermissions: {\n fields: true,\n },\n docPreferences: await getDocPreferences(),\n documentFormState: deepCopyObjectSimpleWithoutReactComponents(parentDocumentFields, {\n excludeFiles: true,\n }),\n formState: prevFormState,\n globalSlug,\n initialBlockFormState: prevFormState,\n operation: 'update',\n readOnly: !isEditable,\n renderAllFields: submit ? true : false,\n schemaPath: schemaFieldsPath,\n signal: controller.signal,\n })\n\n if (!newFormState) {\n return prevFormState\n }\n\n if (prevFormState.blockName) {\n newFormState.blockName = prevFormState.blockName\n }\n\n const newFormStateData: BlockFields = reduceFieldsToValues(\n removeEmptyArrayValues({\n fields: deepCopyObjectSimpleWithoutReactComponents(newFormState, { excludeFiles: true }),\n }),\n true,\n ) as BlockFields\n\n setTimeout(() => {\n editor.update(\n () => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isBlockNode(node)) {\n const newData = newFormStateData\n newData.blockType = blockType\n node.setFields(newData, true)\n }\n },\n // Without this, the outer editor's reconciler resets DOM selection\n // back into its own root, kicking focus out of any nested richText.\n { tag: SKIP_DOM_SELECTION_TAG },\n )\n }, 0)\n\n if (submit) {\n if (!CustomLabelFromProps) {\n setCustomLabel(newFormState._components?.customComponents?.BlockLabel ?? undefined)\n }\n if (!CustomBlockFromProps) {\n setCustomBlock(newFormState._components?.customComponents?.Block ?? undefined)\n }\n\n let rowErrorCount = 0\n for (const formField of Object.values(newFormState)) {\n if (formField?.valid === false) {\n rowErrorCount++\n }\n }\n setErrorCount(rowErrorCount)\n }\n\n return newFormState\n },\n\n [\n getFormState,\n id,\n collectionSlug,\n getDocPreferences,\n globalSlug,\n schemaFieldsPath,\n blockType,\n parentDocumentFields,\n isEditable,\n editor,\n nodeKey,\n CustomBlockFromProps,\n CustomLabelFromProps,\n ],\n )\n\n useEffect(() => {\n return () => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n }\n }, [])\n\n const removeBlock = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey)?.remove()\n })\n }, [editor, nodeKey])\n\n const [rowIndex, setRowIndex] = React.useState<number>(0)\n\n useEffect(() => {\n const updateIndex = () => {\n editor.getEditorState().read(() => {\n const root = $getRoot()\n const children = root.getChildren()\n let blockCount = 0\n for (const child of children) {\n if ($isBlockNode(child)) {\n if (child.getKey() === nodeKey) {\n setRowIndex(blockCount)\n return\n }\n blockCount++\n }\n }\n })\n }\n updateIndex()\n return editor.registerUpdateListener(() => {\n updateIndex()\n })\n }, [editor, nodeKey])\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock.labels.singular, i18n)\n : clientBlock?.slug\n\n const onCollapsedChange = useCallback(\n (changedCollapsed: boolean) => {\n void getDocPreferences().then((currentDocPreferences) => {\n const currentFieldPreferences =\n currentDocPreferences?.fields?.[parentLexicalRichTextField.name]\n\n const collapsedArray = currentFieldPreferences?.collapsed\n\n const newCollapsed: CollapsedPreferences =\n collapsedArray && collapsedArray?.length ? collapsedArray : []\n\n if (changedCollapsed) {\n if (!newCollapsed.includes(formData.id)) {\n newCollapsed.push(formData.id)\n }\n } else {\n if (newCollapsed.includes(formData.id)) {\n newCollapsed.splice(newCollapsed.indexOf(formData.id), 1)\n }\n }\n\n setDocFieldPreferences(parentLexicalRichTextField.name, {\n collapsed: newCollapsed,\n hello: 'hi',\n })\n })\n },\n [getDocPreferences, parentLexicalRichTextField.name, setDocFieldPreferences, formData.id],\n )\n\n const EditButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"ghost\"\n className={`${baseClass}__editButton`}\n disabled={!isEditable}\n el=\"button\"\n icon=\"edit\"\n onClick={(e) => {\n e.preventDefault()\n e.stopPropagation()\n toggleDrawer()\n return false\n }}\n onMouseDown={(e) => {\n // Needed to preserve lexical selection for toggleDrawer lexical selection restore.\n // I believe this is needed due to this button (usually) being inside of a collapsible.\n e.preventDefault()\n }}\n round\n size=\"medium\"\n tooltip={t('lexical:blocks:inlineBlocks:edit', { label: blockDisplayName })}\n />\n ),\n [baseClass, isEditable, t, blockDisplayName, toggleDrawer],\n )\n\n const RemoveButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"ghost\"\n className={`${baseClass}__removeButton`}\n disabled={!isEditable}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeBlock()\n }}\n round\n tooltip=\"Remove Block\"\n />\n ),\n [baseClass, isEditable, removeBlock],\n )\n\n const BlockCollapsible = useMemo(\n () =>\n ({\n Actions,\n children,\n className,\n collapsibleProps,\n disableBlockName,\n editButton,\n errorCount,\n fieldHasErrors,\n Label,\n Pill: CustomPill,\n removeButton,\n showDragHandle = true,\n showRowNumber = true,\n }: BlockCollapsibleWithErrorProps) => {\n return (\n <div className={`${baseClass}__container ${baseClass}-${blockType}`}>\n <Collapsible\n actions={\n typeof Actions !== 'undefined' ? (\n Actions\n ) : isEditable ? (\n <Popup\n button={<MoreIcon />}\n buttonClassName={`${baseClass}__actions-button`}\n caret={false}\n horizontalAlign=\"right\"\n render={({ close }) => (\n <PopupList.ButtonGroup buttonSize=\"medium\">\n {((resolvedCustomBlock && editButton !== false) ||\n (!resolvedCustomBlock && editButton)) && (\n <PopupList.Button\n onClick={() => {\n toggleDrawer()\n close()\n }}\n >\n {t('general:edit')}\n </PopupList.Button>\n )}\n {removeButton !== false && (\n <PopupList.Button\n onClick={() => {\n removeBlock()\n close()\n }}\n >\n <XIcon />\n {t('general:remove')}\n </PopupList.Button>\n )}\n </PopupList.ButtonGroup>\n )}\n size=\"large\"\n />\n ) : null\n }\n className={[\n `${baseClass}__row`,\n fieldHasErrors ? `${baseClass}__row--has-errors` : `${baseClass}__row--no-errors`,\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n collapsibleStyle={fieldHasErrors ? 'error' : 'default'}\n dragHandleProps={\n showDragHandle\n ? {\n id: nodeKey,\n attributes: { role: 'button', tabIndex: 0 },\n listeners: {},\n }\n : undefined\n }\n header={\n <div className={`${baseClass}__block-header`}>\n {typeof Label !== 'undefined' ? (\n Label\n ) : typeof resolvedCustomLabel !== 'undefined' ? (\n resolvedCustomLabel\n ) : (\n <div className={`${baseClass}__block-label`}>\n {showRowNumber && (\n <span className={`${baseClass}__block-number`}>\n {String(rowIndex + 1).padStart(2, '0')}\n </span>\n )}\n {typeof CustomPill !== 'undefined' ? (\n CustomPill\n ) : (\n <Pill\n className={`${baseClass}__block-pill ${baseClass}__block-pill-${blockType}`}\n pillStyle=\"white\"\n size=\"small\"\n >\n {blockDisplayName ?? blockType}\n </Pill>\n )}\n {!disableBlockName && !clientBlock?.admin?.disableBlockName && (\n <SectionTitle path=\"blockName\" readOnly={!isEditable} />\n )}\n\n {fieldHasErrors && (\n <ErrorPill count={errorCount ?? 0} i18n={i18n} withMessage />\n )}\n </div>\n )}\n </div>\n }\n isCollapsed={isCollapsed}\n key={0}\n onToggle={(incomingCollapsedState) => {\n onCollapsedChange(incomingCollapsedState)\n setIsCollapsed(incomingCollapsedState)\n }}\n {...(collapsibleProps || {})}\n >\n {children}\n </Collapsible>\n </div>\n )\n },\n [\n resolvedCustomBlock,\n resolvedCustomLabel,\n blockDisplayName,\n baseClass,\n clientBlock?.admin?.disableBlockName,\n blockType,\n i18n,\n isCollapsed,\n onCollapsedChange,\n isEditable,\n nodeKey,\n removeBlock,\n rowIndex,\n t,\n toggleDrawer,\n ],\n )\n\n const blockID = formData?.id\n\n const BlockDrawer = useMemo(\n () => () => (\n <EditDepthProvider>\n <Drawer\n className={''}\n slug={drawerSlug}\n title={t(`lexical:blocks:inlineBlocks:${blockID ? 'edit' : 'create'}`, {\n label: blockDisplayName ?? t('lexical:blocks:inlineBlocks:label'),\n })}\n >\n {initialState ? (\n <>\n <RenderFields\n fields={clientBlock?.fields ?? []}\n forceRender\n parentIndexPath=\"\"\n parentPath=\"\" // See Blocks feature path for details as for why this is empty\n parentSchemaPath={schemaFieldsPath}\n permissions={true}\n readOnly={!isEditable}\n />\n <FormSubmit programmaticSubmit={true}>{t('fields:saveChanges')}</FormSubmit>\n </>\n ) : null}\n </Drawer>\n </EditDepthProvider>\n ),\n [\n initialState,\n drawerSlug,\n blockID,\n blockDisplayName,\n t,\n isEditable,\n clientBlock?.fields,\n schemaFieldsPath,\n // DO NOT ADD FORMDATA HERE! Adding formData will kick you out of sub block editors while writing.\n ],\n )\n\n // Memoized Form JSX\n const Block = useMemo(() => {\n if (!initialState) {\n return null\n }\n return (\n <div data-block-drawer-slug={drawerSlug} style={{ display: 'contents' }}>\n <Form\n beforeSubmit={[\n async ({ formState }) => {\n // This is only called when form is submitted from drawer - usually only the case if the block has a custom Block component\n return await onChange({ formState, submit: true })\n },\n ]}\n el=\"div\"\n fields={clientBlock?.fields ?? []}\n initialState={initialState}\n onChange={[onChange]}\n onSubmit={(formState, newData) => {\n // This is only called when form is submitted from drawer - usually only the case if the block has a custom Block component\n newData.blockType = blockType\n editor.update(\n () => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isBlockNode(node)) {\n node.setFields(newData as BlockFields, true)\n }\n },\n // Without this, the outer editor's reconciler resets DOM selection\n // back into its own root, kicking focus out of any nested richText.\n { tag: SKIP_DOM_SELECTION_TAG },\n )\n toggleDrawer()\n }}\n submitted={submitted}\n uuid={formUuid}\n >\n <BlockContent\n baseClass={baseClass}\n BlockDrawer={BlockDrawer}\n Collapsible={BlockCollapsible}\n CustomBlock={resolvedCustomBlock}\n CustomLabel={resolvedCustomLabel}\n EditButton={EditButton}\n errorCount={errorCount}\n formSchema={clientBlock?.fields ?? []}\n initialState={initialState}\n nodeKey={nodeKey}\n RemoveButton={RemoveButton}\n />\n </Form>\n </div>\n )\n }, [\n BlockCollapsible,\n BlockDrawer,\n resolvedCustomBlock,\n resolvedCustomLabel,\n blockType,\n drawerSlug,\n RemoveButton,\n EditButton,\n baseClass,\n editor,\n errorCount,\n toggleDrawer,\n clientBlock?.fields,\n formUuid,\n initialState,\n nodeKey,\n onChange,\n submitted,\n ])\n\n if (!clientBlock) {\n return (\n <BlockCollapsible disableBlockName={true} fieldHasErrors={true}>\n <div className={`${baseClass}-not-found`}>\n Error: Block '{blockType}' not found in the config but exists in the lexical data\n </div>\n </BlockCollapsible>\n )\n }\n\n return Block\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["useLexicalComposerContext","useLexicalEditable","getTranslation","Button","Collapsible","Drawer","EditDepthProvider","ErrorPill","Form","formatDrawerSlug","MoreIcon","Pill","Popup","PopupList","RenderFields","SectionTitle","useConfig","useDocumentForm","useDocumentInfo","useEditDepth","useFormSubmitted","useServerFunctions","useTranslation","XIcon","abortAndIgnore","$getNodeByKey","$getRoot","SKIP_DOM_SELECTION_TAG","deepCopyObjectSimpleWithoutReactComponents","reduceFieldsToValues","React","useCallback","useEffect","useMemo","useRef","v4","uuid","useEditorConfigContext","RegisterFormSubmit","useDrawerSubmit","useLexicalDrawer","$isBlockNode","BlockContent","useBlockComponentContext","removeEmptyArrayValues","BlockComponent","props","cacheBuster","className","baseClass","CustomBlock","CustomBlockFromProps","CustomLabel","CustomLabelFromProps","formData","nodeKey","submitted","id","collectionSlug","globalSlug","fieldProps","featureClientSchemaMap","field","parentLexicalRichTextField","initialLexicalFormState","schemaPath","uuidFromContext","fields","parentDocumentFields","onChangeAbortControllerRef","AbortController","editDepth","errorCount","setErrorCount","useState","config","drawerSlug","slug","depth","toggleDrawer","getDocPreferences","setDocFieldPreferences","editor","isEditable","blockType","getFormState","schemaFieldsPath","initialState","setInitialState","cachedFormState","formState","mergedState","Object","fromEntries","entries","map","fieldName","fieldState","initialValue","value","blockName","passesCondition","valid","hasMounted","prevCacheBuster","current","formUuid","setCustomLabel","undefined","customComponents","BlockLabel","setCustomBlock","Block","resolvedCustomBlock","_jsx","isEditor","isJSXConverter","resolvedCustomLabel","abortController","awaitInitialState","state","data","docPermissions","docPreferences","documentFormState","excludeFiles","initialBlockData","operation","readOnly","renderAllFields","signal","newFormStateData","update","node","newData","setFields","tag","_components","isCollapsed","setIsCollapsed","collapsed","componentMapRenderedBlockPath","clientSchemaMap","blocksField","blockOrSlug","blocks","clientBlock","blocksMap","i18n","t","onChange","prevFormState","submit","controller","newFormState","initialBlockFormState","setTimeout","rowErrorCount","formField","values","removeBlock","remove","rowIndex","setRowIndex","updateIndex","getEditorState","read","root","children","getChildren","blockCount","child","getKey","registerUpdateListener","blockDisplayName","labels","singular","onCollapsedChange","changedCollapsed","then","currentDocPreferences","currentFieldPreferences","name","collapsedArray","newCollapsed","length","includes","push","splice","indexOf","hello","EditButton","buttonStyle","disabled","el","icon","onClick","e","preventDefault","stopPropagation","onMouseDown","round","size","tooltip","label","RemoveButton","BlockCollapsible","Actions","collapsibleProps","disableBlockName","editButton","fieldHasErrors","Label","CustomPill","removeButton","showDragHandle","showRowNumber","actions","button","buttonClassName","caret","horizontalAlign","render","close","_jsxs","ButtonGroup","buttonSize","filter","Boolean","join","collapsibleStyle","dragHandleProps","attributes","role","tabIndex","listeners","header","String","padStart","pillStyle","admin","path","count","withMessage","onToggle","incomingCollapsedState","blockID","headerActions","submitRef","BlockDrawer","title","forceRender","parentIndexPath","parentPath","parentSchemaPath","permissions","style","display","beforeSubmit","onSubmit","formSchema"],"sources":["../../../../../src/features/blocks/client/component/index.tsx"],"sourcesContent":["'use client'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n Button,\n Collapsible,\n Drawer,\n EditDepthProvider,\n ErrorPill,\n Form,\n formatDrawerSlug,\n MoreIcon,\n Pill,\n Popup,\n PopupList,\n RenderFields,\n SectionTitle,\n useConfig,\n useDocumentForm,\n useDocumentInfo,\n useEditDepth,\n useFormSubmitted,\n useServerFunctions,\n useTranslation,\n XIcon,\n} from '@payloadcms/ui'\nimport { abortAndIgnore } from '@payloadcms/ui/shared'\nimport { $getNodeByKey, $getRoot, SKIP_DOM_SELECTION_TAG } from 'lexical'\nimport {\n type BlocksFieldClient,\n type ClientBlock,\n type CollapsedPreferences,\n type FormState,\n} from 'payload'\nimport { deepCopyObjectSimpleWithoutReactComponents, reduceFieldsToValues } from 'payload/shared'\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react'\nimport { v4 as uuid } from 'uuid'\n\nimport type { ViewMapBlockComponentProps } from '../../../../types/index.js'\nimport type { BlockFields } from '../../server/schema.js'\n\nimport './index.css'\nimport '../../../../utilities/fieldsDrawer/index.css'\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport {\n RegisterFormSubmit,\n useDrawerSubmit,\n} from '../../../../utilities/fieldsDrawer/useDrawerSubmit.js'\nimport { useLexicalDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDrawer.js'\nimport { $isBlockNode } from '../nodes/BlocksNode.js'\nimport {\n type BlockCollapsibleWithErrorProps,\n BlockContent,\n useBlockComponentContext,\n} from './BlockContent.js'\nimport { removeEmptyArrayValues } from './removeEmptyArrayValues.js'\n\nexport type BlockComponentProps<TFormData extends Record<string, unknown> = BlockFields> = {\n /**\n * Can be modified by the node in order to trigger the re-fetch of the initial state based on the\n * formData. This is useful when node.setFields() is explicitly called from outside of the form - in\n * this case, the new field state is likely not reflected in the form state, so we need to re-fetch\n */\n readonly cacheBuster: number\n readonly className: string\n /**\n * Custom block component from view map\n * Will be rendered with useBlockComponentContext hook.\n */\n readonly CustomBlock?: React.FC<ViewMapBlockComponentProps>\n /**\n * Custom block label from view map\n * Will be rendered with useBlockComponentContext hook.\n */\n readonly CustomLabel?: React.FC<ViewMapBlockComponentProps>\n /**\n * The block's form data (field values).\n */\n readonly formData: TFormData\n /**\n * The unique key identifying this block node in the current editor instance.\n */\n readonly nodeKey: string\n}\n\nexport const BlockComponent: React.FC<BlockComponentProps> = (props) => {\n const {\n cacheBuster,\n className: baseClass,\n CustomBlock: CustomBlockFromProps,\n CustomLabel: CustomLabelFromProps,\n formData,\n nodeKey,\n } = props\n\n const submitted = useFormSubmitted()\n const { id, collectionSlug, globalSlug } = useDocumentInfo()\n const {\n fieldProps: {\n featureClientSchemaMap,\n field: parentLexicalRichTextField,\n initialLexicalFormState,\n schemaPath,\n },\n uuid: uuidFromContext,\n } = useEditorConfigContext()\n\n const { fields: parentDocumentFields } = useDocumentForm()\n const onChangeAbortControllerRef = useRef(new AbortController())\n const editDepth = useEditDepth()\n const [errorCount, setErrorCount] = React.useState(0)\n\n const { config } = useConfig()\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-blocks-create-${uuidFromContext}-${formData.id}`,\n depth: editDepth,\n })\n const { toggleDrawer } = useLexicalDrawer(drawerSlug)\n\n // Used for saving collapsed to preferences (and gettin' it from there again)\n // Remember, these preferences are scoped to the whole document, not just this form. This\n // is important to consider for the data path used in setDocFieldPreferences\n const { getDocPreferences, setDocFieldPreferences } = useDocumentInfo()\n const [editor] = useLexicalComposerContext()\n const isEditable = useLexicalEditable()\n\n const blockType = formData.blockType\n\n const { getFormState } = useServerFunctions()\n const schemaFieldsPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_blocks.${blockType}.fields`\n\n const [initialState, setInitialState] = React.useState<false | FormState | undefined>(() => {\n // Initial form state that was calculated server-side. May have stale values\n const cachedFormState = initialLexicalFormState?.[formData.id]?.formState\n if (!cachedFormState) {\n return false\n }\n\n // Merge current formData values into the cached form state\n // This ensures that when the component remounts (e.g., due to view changes), we don't lose user edits\n const mergedState = Object.fromEntries(\n Object.entries(cachedFormState).map(([fieldName, fieldState]) => [\n fieldName,\n fieldName in formData\n ? {\n ...fieldState,\n initialValue: formData[fieldName],\n value: formData[fieldName],\n }\n : fieldState,\n ]),\n )\n\n // Manually add blockName, as it's not part of cachedFormState\n mergedState.blockName = {\n initialValue: formData.blockName,\n passesCondition: true,\n valid: true,\n value: formData.blockName,\n }\n\n return mergedState\n })\n\n const hasMounted = useRef(false)\n const prevCacheBuster = useRef(cacheBuster)\n useEffect(() => {\n if (hasMounted.current) {\n if (prevCacheBuster.current !== cacheBuster) {\n setInitialState(false)\n }\n prevCacheBuster.current = cacheBuster\n } else {\n hasMounted.current = true\n }\n }, [cacheBuster])\n\n const [formUuid] = React.useState(() => uuid())\n\n // Server-rendered custom components (from admin.components, NOT viewMap).\n // When viewMap components exist (CustomBlockFromProps/CustomLabelFromProps),\n // we render them directly with formData instead, so these states are unused.\n const [CustomLabel, setCustomLabel] = React.useState<React.ReactNode | undefined>(() => {\n if (CustomLabelFromProps) {\n return undefined\n }\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n return initialState?.['_components']?.customComponents?.BlockLabel ?? undefined\n })\n\n const [CustomBlock, setCustomBlock] = React.useState<React.ReactNode | undefined>(() => {\n if (CustomBlockFromProps) {\n return undefined\n }\n // @ts-expect-error - vestiges of when tsconfig was not strict. Feel free to improve\n return initialState?.['_components']?.customComponents?.Block ?? undefined\n })\n\n // When viewMap components exist, render directly with formData (always current from\n // the lexical node). When they don't, fall back to server-rendered state.\n const resolvedCustomBlock = useMemo(() => {\n if (CustomBlockFromProps) {\n return (\n <CustomBlockFromProps\n className={baseClass}\n formData={formData}\n isEditor={true}\n isJSXConverter={false}\n nodeKey={nodeKey}\n // eslint-disable-next-line react-compiler/react-compiler -- intentionally passed as a prop for custom block components to call\n useBlockComponentContext={useBlockComponentContext}\n />\n )\n }\n return CustomBlock\n }, [CustomBlockFromProps, baseClass, formData, nodeKey, CustomBlock])\n\n const resolvedCustomLabel = useMemo(() => {\n if (CustomLabelFromProps) {\n return (\n <CustomLabelFromProps\n className={baseClass}\n formData={formData}\n isEditor={true}\n isJSXConverter={false}\n nodeKey={nodeKey}\n // eslint-disable-next-line react-compiler/react-compiler -- intentionally passed as a prop for custom block components to call\n useBlockComponentContext={useBlockComponentContext}\n />\n )\n }\n return CustomLabel\n }, [CustomLabelFromProps, baseClass, formData, nodeKey, CustomLabel])\n\n // Initial state for newly created blocks\n useEffect(() => {\n const abortController = new AbortController()\n\n const awaitInitialState = async () => {\n /*\n * This will only run if a new block is created. For all existing blocks that are loaded when the document is loaded, or when the form is saved,\n * this is not run, as the lexical field RSC will fetch the state server-side and pass it to the client. That way, we avoid unnecessary client-side\n * requests. Though for newly created blocks, we need to fetch the state client-side, as the server doesn't know about the block yet.\n */\n const { state } = await getFormState({\n id,\n collectionSlug,\n data: formData,\n docPermissions: { fields: true },\n docPreferences: await getDocPreferences(),\n documentFormState: deepCopyObjectSimpleWithoutReactComponents(parentDocumentFields, {\n excludeFiles: true,\n }),\n globalSlug,\n initialBlockData: formData,\n operation: 'update',\n readOnly: !isEditable,\n renderAllFields: true,\n schemaPath: schemaFieldsPath,\n signal: abortController.signal,\n })\n\n if (state) {\n state.blockName = {\n initialValue: formData.blockName,\n passesCondition: true,\n valid: true,\n value: formData.blockName,\n }\n\n const newFormStateData: BlockFields = reduceFieldsToValues(\n deepCopyObjectSimpleWithoutReactComponents(state, { excludeFiles: true }),\n true,\n ) as BlockFields\n\n // Things like default values may come back from the server => update the node with the new data\n editor.update(\n () => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isBlockNode(node)) {\n const newData = newFormStateData\n newData.blockType = blockType\n\n node.setFields(newData, true)\n }\n },\n // Without this, the outer editor's reconciler resets DOM selection\n // back into its own root, kicking focus out of any nested richText.\n { tag: SKIP_DOM_SELECTION_TAG },\n )\n\n setInitialState(state)\n if (!CustomLabelFromProps) {\n setCustomLabel(state._components?.customComponents?.BlockLabel ?? undefined)\n }\n if (!CustomBlockFromProps) {\n setCustomBlock(state._components?.customComponents?.Block ?? undefined)\n }\n }\n }\n\n if (formData && !initialState) {\n void awaitInitialState()\n }\n\n return () => {\n abortAndIgnore(abortController)\n }\n }, [\n getFormState,\n schemaFieldsPath,\n isEditable,\n id,\n CustomLabelFromProps,\n CustomBlockFromProps,\n formData,\n editor,\n nodeKey,\n initialState,\n collectionSlug,\n globalSlug,\n getDocPreferences,\n parentDocumentFields,\n blockType,\n ])\n\n const [isCollapsed, setIsCollapsed] = React.useState<boolean>(\n initialLexicalFormState?.[formData.id]?.collapsed ?? false,\n )\n\n const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_blocks.${blockType}`\n\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient | undefined = clientSchemaMap?.[\n componentMapRenderedBlockPath\n ]?.[0] as BlocksFieldClient | undefined\n\n const blockOrSlug = blocksField?.blocks?.[0]\n const clientBlock: ClientBlock | undefined =\n typeof blockOrSlug === 'string' ? config.blocksMap[blockOrSlug] : blockOrSlug\n\n const { i18n, t } = useTranslation<object, string>()\n\n const onChange = useCallback(\n async ({ formState: prevFormState, submit }: { formState: FormState; submit?: boolean }) => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n\n const controller = new AbortController()\n onChangeAbortControllerRef.current = controller\n\n const { state: newFormState } = await getFormState({\n id,\n collectionSlug,\n docPermissions: {\n fields: true,\n },\n docPreferences: await getDocPreferences(),\n documentFormState: deepCopyObjectSimpleWithoutReactComponents(parentDocumentFields, {\n excludeFiles: true,\n }),\n formState: prevFormState,\n globalSlug,\n initialBlockFormState: prevFormState,\n operation: 'update',\n readOnly: !isEditable,\n renderAllFields: submit ? true : false,\n schemaPath: schemaFieldsPath,\n signal: controller.signal,\n })\n\n if (!newFormState) {\n return prevFormState\n }\n\n if (prevFormState.blockName) {\n newFormState.blockName = prevFormState.blockName\n }\n\n const newFormStateData: BlockFields = reduceFieldsToValues(\n removeEmptyArrayValues({\n fields: deepCopyObjectSimpleWithoutReactComponents(newFormState, { excludeFiles: true }),\n }),\n true,\n ) as BlockFields\n\n setTimeout(() => {\n editor.update(\n () => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isBlockNode(node)) {\n const newData = newFormStateData\n newData.blockType = blockType\n node.setFields(newData, true)\n }\n },\n // Without this, the outer editor's reconciler resets DOM selection\n // back into its own root, kicking focus out of any nested richText.\n { tag: SKIP_DOM_SELECTION_TAG },\n )\n }, 0)\n\n if (submit) {\n if (!CustomLabelFromProps) {\n setCustomLabel(newFormState._components?.customComponents?.BlockLabel ?? undefined)\n }\n if (!CustomBlockFromProps) {\n setCustomBlock(newFormState._components?.customComponents?.Block ?? undefined)\n }\n\n let rowErrorCount = 0\n for (const formField of Object.values(newFormState)) {\n if (formField?.valid === false) {\n rowErrorCount++\n }\n }\n setErrorCount(rowErrorCount)\n }\n\n return newFormState\n },\n\n [\n getFormState,\n id,\n collectionSlug,\n getDocPreferences,\n globalSlug,\n schemaFieldsPath,\n blockType,\n parentDocumentFields,\n isEditable,\n editor,\n nodeKey,\n CustomBlockFromProps,\n CustomLabelFromProps,\n ],\n )\n\n useEffect(() => {\n return () => {\n abortAndIgnore(onChangeAbortControllerRef.current)\n }\n }, [])\n\n const removeBlock = useCallback(() => {\n editor.update(() => {\n $getNodeByKey(nodeKey)?.remove()\n })\n }, [editor, nodeKey])\n\n const [rowIndex, setRowIndex] = React.useState<number>(0)\n\n useEffect(() => {\n const updateIndex = () => {\n editor.getEditorState().read(() => {\n const root = $getRoot()\n const children = root.getChildren()\n let blockCount = 0\n for (const child of children) {\n if ($isBlockNode(child)) {\n if (child.getKey() === nodeKey) {\n setRowIndex(blockCount)\n return\n }\n blockCount++\n }\n }\n })\n }\n updateIndex()\n return editor.registerUpdateListener(() => {\n updateIndex()\n })\n }, [editor, nodeKey])\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock.labels.singular, i18n)\n : clientBlock?.slug\n\n const onCollapsedChange = useCallback(\n (changedCollapsed: boolean) => {\n void getDocPreferences().then((currentDocPreferences) => {\n const currentFieldPreferences =\n currentDocPreferences?.fields?.[parentLexicalRichTextField.name]\n\n const collapsedArray = currentFieldPreferences?.collapsed\n\n const newCollapsed: CollapsedPreferences =\n collapsedArray && collapsedArray?.length ? collapsedArray : []\n\n if (changedCollapsed) {\n if (!newCollapsed.includes(formData.id)) {\n newCollapsed.push(formData.id)\n }\n } else {\n if (newCollapsed.includes(formData.id)) {\n newCollapsed.splice(newCollapsed.indexOf(formData.id), 1)\n }\n }\n\n setDocFieldPreferences(parentLexicalRichTextField.name, {\n collapsed: newCollapsed,\n hello: 'hi',\n })\n })\n },\n [getDocPreferences, parentLexicalRichTextField.name, setDocFieldPreferences, formData.id],\n )\n\n const EditButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"ghost\"\n className={`${baseClass}__editButton`}\n disabled={!isEditable}\n el=\"button\"\n icon=\"edit\"\n onClick={(e) => {\n e.preventDefault()\n e.stopPropagation()\n toggleDrawer()\n return false\n }}\n onMouseDown={(e) => {\n // Needed to preserve lexical selection for toggleDrawer lexical selection restore.\n // I believe this is needed due to this button (usually) being inside of a collapsible.\n e.preventDefault()\n }}\n round\n size=\"medium\"\n tooltip={t('lexical:blocks:inlineBlocks:edit', { label: blockDisplayName })}\n />\n ),\n [baseClass, isEditable, t, blockDisplayName, toggleDrawer],\n )\n\n const RemoveButton = useMemo(\n () => () => (\n <Button\n buttonStyle=\"ghost\"\n className={`${baseClass}__removeButton`}\n disabled={!isEditable}\n icon=\"x\"\n onClick={(e) => {\n e.preventDefault()\n removeBlock()\n }}\n round\n tooltip=\"Remove Block\"\n />\n ),\n [baseClass, isEditable, removeBlock],\n )\n\n const BlockCollapsible = useMemo(\n () =>\n ({\n Actions,\n children,\n className,\n collapsibleProps,\n disableBlockName,\n editButton,\n errorCount,\n fieldHasErrors,\n Label,\n Pill: CustomPill,\n removeButton,\n showDragHandle = true,\n showRowNumber = true,\n }: BlockCollapsibleWithErrorProps) => {\n return (\n <div className={`${baseClass}__container ${baseClass}-${blockType}`}>\n <Collapsible\n actions={\n typeof Actions !== 'undefined' ? (\n Actions\n ) : isEditable ? (\n <Popup\n button={<MoreIcon />}\n buttonClassName={`${baseClass}__actions-button`}\n caret={false}\n horizontalAlign=\"right\"\n render={({ close }) => (\n <PopupList.ButtonGroup buttonSize=\"medium\">\n {((resolvedCustomBlock && editButton !== false) ||\n (!resolvedCustomBlock && editButton)) && (\n <PopupList.Button\n onClick={() => {\n toggleDrawer()\n close()\n }}\n >\n {t('general:edit')}\n </PopupList.Button>\n )}\n {removeButton !== false && (\n <PopupList.Button\n onClick={() => {\n removeBlock()\n close()\n }}\n >\n <XIcon />\n {t('general:remove')}\n </PopupList.Button>\n )}\n </PopupList.ButtonGroup>\n )}\n size=\"large\"\n />\n ) : null\n }\n className={[\n `${baseClass}__row`,\n fieldHasErrors ? `${baseClass}__row--has-errors` : `${baseClass}__row--no-errors`,\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n collapsibleStyle={fieldHasErrors ? 'error' : 'default'}\n dragHandleProps={\n showDragHandle\n ? {\n id: nodeKey,\n attributes: { role: 'button', tabIndex: 0 },\n listeners: {},\n }\n : undefined\n }\n header={\n <div className={`${baseClass}__block-header`}>\n {typeof Label !== 'undefined' ? (\n Label\n ) : typeof resolvedCustomLabel !== 'undefined' ? (\n resolvedCustomLabel\n ) : (\n <div className={`${baseClass}__block-label`}>\n {showRowNumber && (\n <span className={`${baseClass}__block-number`}>\n {String(rowIndex + 1).padStart(2, '0')}\n </span>\n )}\n {typeof CustomPill !== 'undefined' ? (\n CustomPill\n ) : (\n <Pill\n className={`${baseClass}__block-pill ${baseClass}__block-pill-${blockType}`}\n pillStyle=\"white\"\n size=\"small\"\n >\n {blockDisplayName ?? blockType}\n </Pill>\n )}\n {!disableBlockName && !clientBlock?.admin?.disableBlockName && (\n <SectionTitle path=\"blockName\" readOnly={!isEditable} />\n )}\n\n {fieldHasErrors && (\n <ErrorPill count={errorCount ?? 0} i18n={i18n} withMessage />\n )}\n </div>\n )}\n </div>\n }\n isCollapsed={isCollapsed}\n key={0}\n onToggle={(incomingCollapsedState) => {\n onCollapsedChange(incomingCollapsedState)\n setIsCollapsed(incomingCollapsedState)\n }}\n {...(collapsibleProps || {})}\n >\n {children}\n </Collapsible>\n </div>\n )\n },\n [\n resolvedCustomBlock,\n resolvedCustomLabel,\n blockDisplayName,\n baseClass,\n clientBlock?.admin?.disableBlockName,\n blockType,\n i18n,\n isCollapsed,\n onCollapsedChange,\n isEditable,\n nodeKey,\n removeBlock,\n rowIndex,\n t,\n toggleDrawer,\n ],\n )\n\n const blockID = formData?.id\n\n const { headerActions, submitRef } = useDrawerSubmit()\n\n const BlockDrawer = useMemo(\n () => () => (\n <EditDepthProvider>\n <Drawer\n className={''}\n headerActions={headerActions}\n slug={drawerSlug}\n title={t(`lexical:blocks:inlineBlocks:${blockID ? 'edit' : 'create'}`, {\n label: blockDisplayName ?? t('lexical:blocks:inlineBlocks:label'),\n })}\n >\n {initialState ? (\n <div className=\"fields-drawer\">\n <RenderFields\n fields={clientBlock?.fields ?? []}\n forceRender\n parentIndexPath=\"\"\n parentPath=\"\" // See Blocks feature path for details as for why this is empty\n parentSchemaPath={schemaFieldsPath}\n permissions={true}\n readOnly={!isEditable}\n />\n <RegisterFormSubmit submitRef={submitRef} />\n </div>\n ) : null}\n </Drawer>\n </EditDepthProvider>\n ),\n [\n initialState,\n drawerSlug,\n blockID,\n blockDisplayName,\n t,\n isEditable,\n clientBlock?.fields,\n schemaFieldsPath,\n headerActions,\n submitRef,\n // DO NOT ADD FORMDATA HERE! Adding formData will kick you out of sub block editors while writing.\n ],\n )\n\n // Memoized Form JSX\n const Block = useMemo(() => {\n if (!initialState) {\n return null\n }\n return (\n <div data-block-drawer-slug={drawerSlug} style={{ display: 'contents' }}>\n <Form\n beforeSubmit={[\n async ({ formState }) => {\n // This is only called when form is submitted from drawer - usually only the case if the block has a custom Block component\n return await onChange({ formState, submit: true })\n },\n ]}\n el=\"div\"\n fields={clientBlock?.fields ?? []}\n initialState={initialState}\n onChange={[onChange]}\n onSubmit={(formState, newData) => {\n // This is only called when form is submitted from drawer - usually only the case if the block has a custom Block component\n newData.blockType = blockType\n editor.update(\n () => {\n const node = $getNodeByKey(nodeKey)\n if (node && $isBlockNode(node)) {\n node.setFields(newData as BlockFields, true)\n }\n },\n // Without this, the outer editor's reconciler resets DOM selection\n // back into its own root, kicking focus out of any nested richText.\n { tag: SKIP_DOM_SELECTION_TAG },\n )\n toggleDrawer()\n }}\n submitted={submitted}\n uuid={formUuid}\n >\n <BlockContent\n baseClass={baseClass}\n BlockDrawer={BlockDrawer}\n Collapsible={BlockCollapsible}\n CustomBlock={resolvedCustomBlock}\n CustomLabel={resolvedCustomLabel}\n EditButton={EditButton}\n errorCount={errorCount}\n formSchema={clientBlock?.fields ?? []}\n initialState={initialState}\n nodeKey={nodeKey}\n RemoveButton={RemoveButton}\n />\n </Form>\n </div>\n )\n }, [\n BlockCollapsible,\n BlockDrawer,\n resolvedCustomBlock,\n resolvedCustomLabel,\n blockType,\n drawerSlug,\n RemoveButton,\n EditButton,\n baseClass,\n editor,\n errorCount,\n toggleDrawer,\n clientBlock?.fields,\n formUuid,\n initialState,\n nodeKey,\n onChange,\n submitted,\n ])\n\n if (!clientBlock) {\n return (\n <BlockCollapsible disableBlockName={true} fieldHasErrors={true}>\n <div className={`${baseClass}-not-found`}>\n Error: Block '{blockType}' not found in the config but exists in the lexical data\n </div>\n </BlockCollapsible>\n )\n }\n\n return Block\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
outline: unset !important;
|
|
10
10
|
|
|
11
11
|
.LexicalEditorTheme__inlineBlock__container {
|
|
12
|
-
box-shadow: 0 0 0
|
|
12
|
+
box-shadow: 0 0 0 var(--stroke-width-medium) var(--color-border-selected);
|
|
13
13
|
outline: none;
|
|
14
14
|
}
|
|
15
15
|
}
|
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
.LexicalEditorTheme__inlineBlock__container {
|
|
23
|
-
box-shadow:
|
|
24
|
-
margin-
|
|
25
|
-
margin-
|
|
23
|
+
box-shadow: var(--elevation-100-canvas);
|
|
24
|
+
margin-inline-end: var(--spacer-1);
|
|
25
|
+
margin-inline-start: var(--spacer-1);
|
|
26
26
|
padding: 0;
|
|
27
27
|
padding-inline-start: var(--spacer-2);
|
|
28
28
|
background: var(--color-bg);
|
|
@@ -54,9 +54,9 @@
|
|
|
54
54
|
align-items: center;
|
|
55
55
|
|
|
56
56
|
& > .btn {
|
|
57
|
-
width:
|
|
58
|
-
height:
|
|
59
|
-
margin:
|
|
57
|
+
width: var(--spacer-3);
|
|
58
|
+
height: var(--spacer-3);
|
|
59
|
+
margin: calc(var(--spacer-1) / 2);
|
|
60
60
|
|
|
61
61
|
&:not(:disabled):hover {
|
|
62
62
|
background: var(--color-bg-hover);
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
|
|
71
71
|
.LexicalEditorTheme__inlineBlock__removeButton.btn {
|
|
72
72
|
padding: 0;
|
|
73
|
-
margin:
|
|
73
|
+
margin: calc(var(--spacer-1) / 2);
|
|
74
74
|
color: var(--color-icon-secondary);
|
|
75
75
|
|
|
76
76
|
line {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { FormState } from 'payload';
|
|
2
2
|
import './index.css';
|
|
3
|
+
import '../../../../utilities/fieldsDrawer/index.css';
|
|
3
4
|
import React from 'react';
|
|
4
5
|
import type { ViewMapInlineBlockComponentProps } from '../../../../types/index.js';
|
|
5
6
|
import type { InlineBlockFields } from '../../server/schema.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/client/componentInline/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAwC,SAAS,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/client/componentInline/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAwC,SAAS,EAAE,MAAM,SAAS,CAAA;AAuB9E,OAAO,aAAa,CAAA;AACpB,OAAO,8CAA8C,CAAA;AAGrD,OAAO,KAAiE,MAAM,OAAO,CAAA;AAGrF,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,4BAA4B,CAAA;AAClF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAA;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAUhE,MAAM,MAAM,yBAAyB,CACnC,SAAS,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,iBAAiB,IAC3D;IACF,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,gCAAgC,CAAC,CAAA;IACjE,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,gCAAgC,CAAC,CAAA;CAClE,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE,aAAa,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,CAAC,CAAA;AAE9F,MAAM,MAAM,+BAA+B,GAAG;IAC5C,UAAU,CAAC,EAAE,KAAK,CAAC,EAAE,CAAA;IACrB,YAAY,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS,CAAA;IAC3C,oBAAoB,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;QAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE,CAAC,CAAA;IAC9D,KAAK,CAAC,EAAE,KAAK,CAAC,EAAE,CAAA;IAChB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,KAAK,CAAC,EAAE,CAAA;CACxB,CAAA;AAMD,eAAO,MAAM,8BAA8B,uCAA+C,CAAA;AAE1F,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAAC,iBAAiB,CAAC,CA+fvF,CAAA"}
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { jsx as _jsx, jsxs as _jsxs
|
|
3
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
4
|
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
|
|
5
5
|
import { useLexicalEditable } from '@lexical/react/useLexicalEditable';
|
|
6
6
|
import { getTranslation } from '@payloadcms/translations';
|
|
7
|
-
import { Button, Drawer, EditDepthProvider, Form, formatDrawerSlug,
|
|
7
|
+
import { Button, Drawer, EditDepthProvider, Form, formatDrawerSlug, RenderFields, ShimmerEffect, useConfig, useDocumentForm, useDocumentInfo, useEditDepth, useServerFunctions, useTranslation } from '@payloadcms/ui';
|
|
8
8
|
import { abortAndIgnore } from '@payloadcms/ui/shared';
|
|
9
9
|
import { $getNodeByKey, SKIP_DOM_SELECTION_TAG } from 'lexical';
|
|
10
10
|
import './index.css';
|
|
11
|
+
import '../../../../utilities/fieldsDrawer/index.css';
|
|
11
12
|
import { deepCopyObjectSimpleWithoutReactComponents, reduceFieldsToValues } from 'payload/shared';
|
|
12
13
|
import React, { createContext, useCallback, useEffect, useMemo, useRef } from 'react';
|
|
13
14
|
import { v4 as uuid } from 'uuid';
|
|
14
15
|
import { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js';
|
|
16
|
+
import { RegisterFormSubmit, useDrawerSubmit } from '../../../../utilities/fieldsDrawer/useDrawerSubmit.js';
|
|
15
17
|
import { useLexicalDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDrawer.js';
|
|
16
18
|
import { $isInlineBlockNode } from '../nodes/InlineBlocksNode.js';
|
|
17
19
|
const InlineBlockComponentContext = /*#__PURE__*/createContext({
|
|
@@ -142,7 +144,8 @@ export const InlineBlockComponent = props => {
|
|
|
142
144
|
const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.${formData.blockType}`;
|
|
143
145
|
const clientSchemaMap = featureClientSchemaMap['blocks'];
|
|
144
146
|
const blocksField = clientSchemaMap?.[componentMapRenderedBlockPath]?.[0];
|
|
145
|
-
const
|
|
147
|
+
const blockOrSlug = blocksField?.blocks?.[0];
|
|
148
|
+
const clientBlock = typeof blockOrSlug === 'string' ? config.blocksMap[blockOrSlug] : blockOrSlug;
|
|
146
149
|
const clientBlockFields = clientBlock?.fields ?? [];
|
|
147
150
|
// Open drawer on "mount"
|
|
148
151
|
useEffect(() => {
|
|
@@ -304,6 +307,10 @@ export const InlineBlockComponent = props => {
|
|
|
304
307
|
tag: SKIP_DOM_SELECTION_TAG
|
|
305
308
|
});
|
|
306
309
|
}, [editor, nodeKey, formData]);
|
|
310
|
+
const {
|
|
311
|
+
headerActions,
|
|
312
|
+
submitRef
|
|
313
|
+
} = useDrawerSubmit();
|
|
307
314
|
const RemoveButton = useMemo(() => () => /*#__PURE__*/_jsx(Button, {
|
|
308
315
|
buttonStyle: "ghost",
|
|
309
316
|
className: `${baseClass}__removeButton`,
|
|
@@ -397,11 +404,13 @@ export const InlineBlockComponent = props => {
|
|
|
397
404
|
children: [/*#__PURE__*/_jsx(EditDepthProvider, {
|
|
398
405
|
children: /*#__PURE__*/_jsx(Drawer, {
|
|
399
406
|
className: '',
|
|
407
|
+
headerActions: headerActions,
|
|
400
408
|
slug: drawerSlug,
|
|
401
409
|
title: t(`lexical:blocks:inlineBlocks:${formData?.id ? 'edit' : 'create'}`, {
|
|
402
410
|
label: blockDisplayName ?? t('lexical:blocks:inlineBlocks:label')
|
|
403
411
|
}),
|
|
404
|
-
children: initialState ? /*#__PURE__*/_jsxs(
|
|
412
|
+
children: initialState ? /*#__PURE__*/_jsxs("div", {
|
|
413
|
+
className: "fields-drawer",
|
|
405
414
|
children: [/*#__PURE__*/_jsx(RenderFields, {
|
|
406
415
|
fields: clientBlock?.fields,
|
|
407
416
|
forceRender: true,
|
|
@@ -410,9 +419,8 @@ export const InlineBlockComponent = props => {
|
|
|
410
419
|
parentSchemaPath: schemaFieldsPath,
|
|
411
420
|
permissions: true,
|
|
412
421
|
readOnly: !isEditable
|
|
413
|
-
}), /*#__PURE__*/_jsx(
|
|
414
|
-
|
|
415
|
-
children: t('fields:saveChanges')
|
|
422
|
+
}), /*#__PURE__*/_jsx(RegisterFormSubmit, {
|
|
423
|
+
submitRef: submitRef
|
|
416
424
|
})]
|
|
417
425
|
}) : null
|
|
418
426
|
})
|