@payloadcms/richtext-lexical 4.0.0-internal.934870d → 4.0.0-internal.94ef095
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/dist/exports/client/Field-334JNLRF.js +2 -0
- package/dist/exports/client/Field-334JNLRF.js.map +7 -0
- package/dist/exports/client/{RelationshipComponent-YCPAKOL7.js → RelationshipComponent-TVK6I4W4.js} +2 -2
- package/dist/exports/client/chunk-3V7KW5XF.js +2 -0
- package/dist/exports/client/chunk-3V7KW5XF.js.map +7 -0
- package/dist/exports/client/chunk-A7DZCL6D.js +2 -0
- package/dist/exports/client/chunk-A7DZCL6D.js.map +7 -0
- package/dist/exports/client/{chunk-WSAPGI3Z.js → chunk-EA5BHQ2T.js} +1 -1
- package/dist/exports/client/{chunk-WSAPGI3Z.js.map → chunk-EA5BHQ2T.js.map} +1 -1
- package/dist/exports/client/chunk-FAJJXXCW.js +2 -0
- package/dist/exports/client/{chunk-3LRZDIIG.js.map → chunk-FAJJXXCW.js.map} +2 -2
- package/dist/exports/client/{chunk-5VIL27GI.js → chunk-IYBYNEKX.js} +1 -1
- package/dist/exports/client/{chunk-5VIL27GI.js.map → chunk-IYBYNEKX.js.map} +1 -1
- package/dist/exports/client/{component-6DQLENIE.js → component-FCCSBBZG.js} +2 -2
- package/dist/exports/client/componentInline-7FQV2X7Z.js +2 -0
- package/dist/exports/client/index.js +27 -27
- package/dist/exports/client/index.js.map +3 -3
- package/dist/features/align/client/index.js.map +1 -1
- package/dist/features/blocks/client/component/BlockContent.js.map +1 -1
- package/dist/features/blocks/client/component/components/BlockCollapsible.js.map +1 -1
- package/dist/features/blocks/client/component/components/BlockEditButton.js.map +1 -1
- package/dist/features/blocks/client/component/components/BlockRemoveButton.js.map +1 -1
- package/dist/features/blocks/client/component/index.d.ts.map +1 -1
- package/dist/features/blocks/client/component/index.js +62 -85
- package/dist/features/blocks/client/component/index.js.map +1 -1
- package/dist/features/blocks/client/componentInline/components/InlineBlockContainer.js.map +1 -1
- package/dist/features/blocks/client/componentInline/components/InlineBlockEditButton.js.map +1 -1
- package/dist/features/blocks/client/componentInline/components/InlineBlockLabel.js.map +1 -1
- package/dist/features/blocks/client/componentInline/components/InlineBlockRemoveButton.js.map +1 -1
- package/dist/features/blocks/client/componentInline/index.d.ts.map +1 -1
- package/dist/features/blocks/client/componentInline/index.js +22 -69
- package/dist/features/blocks/client/componentInline/index.js.map +1 -1
- package/dist/features/blocks/client/getCachedFormStateIfDataMatches.d.ts +0 -1
- package/dist/features/blocks/client/getCachedFormStateIfDataMatches.d.ts.map +1 -1
- package/dist/features/blocks/client/getCachedFormStateIfDataMatches.js +7 -30
- package/dist/features/blocks/client/getCachedFormStateIfDataMatches.js.map +1 -1
- package/dist/features/blocks/client/plugin/index.js.map +1 -1
- package/dist/features/blocks/premade/CodeBlock/Component/Block.js +121 -78
- package/dist/features/blocks/premade/CodeBlock/Component/Block.js.map +1 -1
- package/dist/features/blocks/premade/CodeBlock/Component/Code.js +142 -87
- package/dist/features/blocks/premade/CodeBlock/Component/Code.js.map +1 -1
- package/dist/features/converters/lexicalToHtml/async/converters/table.d.ts.map +1 -1
- package/dist/features/converters/lexicalToHtml/async/converters/table.js +6 -4
- package/dist/features/converters/lexicalToHtml/async/converters/table.js.map +1 -1
- package/dist/features/converters/lexicalToHtml/async/converters/upload.d.ts.map +1 -1
- package/dist/features/converters/lexicalToHtml/async/converters/upload.js +2 -1
- package/dist/features/converters/lexicalToHtml/async/converters/upload.js.map +1 -1
- package/dist/features/converters/lexicalToHtml/sync/converters/table.d.ts.map +1 -1
- package/dist/features/converters/lexicalToHtml/sync/converters/table.js +6 -4
- package/dist/features/converters/lexicalToHtml/sync/converters/table.js.map +1 -1
- package/dist/features/converters/lexicalToHtml/sync/converters/upload.d.ts.map +1 -1
- package/dist/features/converters/lexicalToHtml/sync/converters/upload.js +2 -1
- package/dist/features/converters/lexicalToHtml/sync/converters/upload.js.map +1 -1
- 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/converter/converters/table.d.ts.map +1 -1
- package/dist/features/converters/lexicalToJSX/converter/converters/table.js +3 -2
- package/dist/features/converters/lexicalToJSX/converter/converters/table.js.map +1 -1
- package/dist/features/debug/jsxConverter/client/plugin/index.js.map +1 -1
- package/dist/features/debug/testRecorder/client/plugin/index.js.map +1 -1
- package/dist/features/debug/treeView/client/plugin/index.js.map +1 -1
- package/dist/features/heading/client/index.js.map +1 -1
- package/dist/features/horizontalRule/client/plugin/index.js.map +1 -1
- package/dist/features/indent/client/index.d.ts.map +1 -1
- package/dist/features/indent/client/index.js +0 -2
- package/dist/features/indent/client/index.js.map +1 -1
- package/dist/features/indent/server/i18n.d.ts.map +1 -1
- package/dist/features/indent/server/i18n.js.map +1 -1
- package/dist/features/link/client/plugins/autoLink/index.js.map +1 -1
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -1
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js +12 -4
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
- package/dist/features/link/client/plugins/link/index.js.map +1 -1
- package/dist/features/link/markdownTransformer.js +2 -2
- package/dist/features/link/markdownTransformer.js.map +1 -1
- package/dist/features/link/server/baseFields.js.map +1 -1
- package/dist/features/lists/shared/schema.d.ts.map +1 -1
- package/dist/features/lists/shared/schema.js.map +1 -1
- package/dist/features/relationship/client/drawer/index.js.map +1 -1
- package/dist/features/relationship/client/plugins/index.js.map +1 -1
- package/dist/features/relationship/client/utils/useEnabledRelationships.js.map +1 -1
- package/dist/features/table/client/plugins/TableActionMenuPlugin/index.css +1 -1
- package/dist/features/table/client/plugins/TableActionMenuPlugin/index.js.map +1 -1
- package/dist/features/table/client/plugins/TableCellResizerPlugin/index.js +7 -7
- package/dist/features/table/client/plugins/TableCellResizerPlugin/index.js.map +1 -1
- package/dist/features/table/client/plugins/TableHoverActionsPlugin/index.js.map +1 -1
- package/dist/features/table/client/plugins/TablePlugin/index.js +54 -18
- package/dist/features/table/client/plugins/TablePlugin/index.js.map +1 -1
- package/dist/features/table/client/utils/useDebounce.js.map +1 -1
- package/dist/features/table/server/index.d.ts.map +1 -1
- package/dist/features/table/server/index.js +3 -1
- package/dist/features/table/server/index.js.map +1 -1
- package/dist/features/table/server/validate.d.ts +4 -0
- package/dist/features/table/server/validate.d.ts.map +1 -0
- package/dist/features/table/server/validate.js +15 -0
- package/dist/features/table/server/validate.js.map +1 -0
- package/dist/features/textState/defaultColors.js +1 -1
- package/dist/features/textState/defaultColors.js.map +1 -1
- package/dist/features/toolbars/fixed/client/Toolbar/horizontalWheelScroll.js.map +1 -1
- package/dist/features/toolbars/fixed/client/Toolbar/index.js +126 -70
- package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -1
- package/dist/features/toolbars/inline/client/Toolbar/index.js +67 -35
- package/dist/features/toolbars/inline/client/Toolbar/index.js.map +1 -1
- package/dist/features/toolbars/shared/ToolbarButton/index.d.ts.map +1 -1
- package/dist/features/toolbars/shared/ToolbarButton/index.js +26 -2
- package/dist/features/toolbars/shared/ToolbarButton/index.js.map +1 -1
- package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js +137 -72
- package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -1
- package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts.map +1 -1
- package/dist/features/toolbars/shared/ToolbarDropdown/index.js +22 -6
- package/dist/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -1
- package/dist/features/toolbars/shared/useToolbarKeyboardNavigation.js +100 -70
- package/dist/features/toolbars/shared/useToolbarKeyboardNavigation.js.map +1 -1
- package/dist/features/upload/client/drawer/index.js.map +1 -1
- package/dist/features/upload/client/plugin/index.js.map +1 -1
- package/dist/field/Diff/converters/upload/index.d.ts.map +1 -1
- package/dist/field/Diff/converters/upload/index.js +8 -7
- package/dist/field/Diff/converters/upload/index.js.map +1 -1
- package/dist/field/Diff/index.d.ts.map +1 -1
- package/dist/field/Diff/index.js +1 -0
- package/dist/field/Diff/index.js.map +1 -1
- package/dist/field/RenderLexical/index.js.map +1 -1
- package/dist/field/ViewSelector.js +12 -4
- package/dist/field/ViewSelector.js.map +1 -1
- package/dist/field/bundled.css +1 -1
- package/dist/field/index.js.map +1 -1
- package/dist/i18n.d.ts.map +1 -1
- package/dist/i18n.js +44 -0
- package/dist/i18n.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lexical/LexicalEditor.js.map +1 -1
- package/dist/lexical/plugins/ClipboardPlugin/index.js.map +1 -1
- package/dist/lexical/plugins/DecoratorPlugin/index.js.map +1 -1
- package/dist/lexical/plugins/InsertParagraphAtEnd/index.js.map +1 -1
- package/dist/lexical/plugins/MarkdownShortcut/index.js.map +1 -1
- package/dist/lexical/plugins/NodeViewOverridePlugin/index.js.map +1 -1
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +234 -87
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
- package/dist/lexical/plugins/SlashMenu/useMenuTriggerMatch.js.map +1 -1
- package/dist/lexical/plugins/TextPlugin/index.js.map +1 -1
- package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.css +16 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.d.ts.map +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js +126 -38
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/moveBlock.d.ts +7 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/moveBlock.d.ts.map +1 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/moveBlock.js +15 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/moveBlock.js.map +1 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/useKeyboardReordering.d.ts.map +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/useKeyboardReordering.js +9 -12
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/useKeyboardReordering.js.map +1 -1
- package/dist/lexical/ui/ContentEditable.d.ts.map +1 -1
- package/dist/lexical/ui/ContentEditable.js +16 -9
- package/dist/lexical/ui/ContentEditable.js.map +1 -1
- package/dist/lexical/utils/nodeFormat.d.ts.map +1 -1
- package/dist/lexical/utils/nodeFormat.js +0 -2
- package/dist/lexical/utils/nodeFormat.js.map +1 -1
- package/dist/lexical/utils/url.d.ts.map +1 -1
- package/dist/lexical/utils/url.js +1 -1
- package/dist/lexical/utils/url.js.map +1 -1
- package/dist/populateGraphQL/populate.d.ts.map +1 -1
- package/dist/populateGraphQL/populate.js +4 -1
- package/dist/populateGraphQL/populate.js.map +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/utilities/buildEditorState.d.ts.map +1 -1
- package/dist/utilities/buildEditorState.js.map +1 -1
- package/dist/utilities/fieldsDrawer/Drawer.js +36 -36
- package/dist/utilities/fieldsDrawer/Drawer.js.map +1 -1
- package/dist/utilities/fieldsDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/utilities/fieldsDrawer/DrawerContent.js +127 -107
- package/dist/utilities/fieldsDrawer/DrawerContent.js.map +1 -1
- package/dist/utilities/fieldsDrawer/useDrawerSubmit.js.map +1 -1
- package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js.map +1 -1
- package/dist/utilities/fieldsDrawer/useLexicalDrawer.js.map +1 -1
- package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js.map +1 -1
- package/dist/utilities/initLexicalFeatures.d.ts.map +1 -1
- package/dist/utilities/initLexicalFeatures.js +38 -4
- package/dist/utilities/initLexicalFeatures.js.map +1 -1
- package/dist/utilities/useLexicalFeature.js +15 -6
- package/dist/utilities/useLexicalFeature.js.map +1 -1
- package/dist/utilities/useRunDeprioritized.js.map +1 -1
- package/package.json +47 -50
- package/dist/exports/client/Field-MT4FK3IP.js +0 -2
- package/dist/exports/client/Field-MT4FK3IP.js.map +0 -7
- package/dist/exports/client/chunk-3LRZDIIG.js +0 -2
- package/dist/exports/client/chunk-E6LSRRP2.js +0 -2
- package/dist/exports/client/chunk-E6LSRRP2.js.map +0 -7
- package/dist/exports/client/chunk-ZQX5HXUL.js +0 -2
- package/dist/exports/client/chunk-ZQX5HXUL.js.map +0 -7
- package/dist/exports/client/componentInline-HNE5G4TE.js +0 -2
- /package/dist/exports/client/{RelationshipComponent-YCPAKOL7.js.map → RelationshipComponent-TVK6I4W4.js.map} +0 -0
- /package/dist/exports/client/{component-6DQLENIE.js.map → component-FCCSBBZG.js.map} +0 -0
- /package/dist/exports/client/{componentInline-HNE5G4TE.js.map → componentInline-7FQV2X7Z.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","$isDecoratorBlockNode","$findMatchingParent","$getSelection","$isElementNode","$isNodeSelection","$isRangeSelection","COMMAND_PRIORITY_LOW","FORMAT_ELEMENT_COMMAND","useEffect","AlignCenterIcon","AlignJustifyIcon","AlignLeftIcon","AlignRightIcon","createClientFeature","toolbarAlignGroupWithItems","getFormatType","node","__format","toolbarGroups","ChildComponent","isActive","selection","getNodes","parent","getParent","key","label","i18n","t","onSelect","editor","dispatchCommand","order","AlignPlugin","$","t0","t1","registerCommand","_temp2","AlignFeatureClient","plugins","Component","position","toolbarFixed","groups","toolbarInline","_temp","parentNode","isInline","format","nodes","element","setFormat"],"sources":["../../../../src/features/align/client/index.tsx"],"sourcesContent":["'use client'\n\nimport type { DecoratorBlockNode } from '@lexical/react/LexicalDecoratorBlockNode'\nimport type { ElementFormatType, ElementNode } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { $isDecoratorBlockNode } from '@lexical/react/LexicalDecoratorBlockNode'\nimport { $findMatchingParent } from '@lexical/utils'\nimport {\n $getSelection,\n $isElementNode,\n $isNodeSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_LOW,\n FORMAT_ELEMENT_COMMAND,\n} from 'lexical'\nimport { useEffect } from 'react'\n\nimport type { ToolbarGroup } from '../../toolbars/types.js'\n\nimport { AlignCenterIcon } from '../../../lexical/ui/icons/AlignCenter/index.js'\nimport { AlignJustifyIcon } from '../../../lexical/ui/icons/AlignJustify/index.js'\nimport { AlignLeftIcon } from '../../../lexical/ui/icons/AlignLeft/index.js'\nimport { AlignRightIcon } from '../../../lexical/ui/icons/AlignRight/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { toolbarAlignGroupWithItems } from './toolbarAlignGroup.js'\n\n// DecoratorBlockNode has format, but Lexical forgot\n// to add the getters like ElementNode does.\nconst getFormatType = (node: DecoratorBlockNode | ElementNode): ElementFormatType => {\n if ($isElementNode(node)) {\n return node.getFormatType()\n }\n return node.__format\n}\n\nconst toolbarGroups: ToolbarGroup[] = [\n toolbarAlignGroupWithItems([\n {\n ChildComponent: AlignLeftIcon,\n isActive: ({ selection }) => {\n if (!$isRangeSelection(selection)) {\n return false\n }\n for (const node of selection.getNodes()) {\n if ($isElementNode(node) || $isDecoratorBlockNode(node)) {\n if (getFormatType(node) === 'left') {\n continue\n }\n }\n\n const parent = node.getParent()\n if ($isElementNode(parent) || $isDecoratorBlockNode(parent)) {\n if (getFormatType(parent) === 'left') {\n continue\n }\n }\n\n return false\n }\n return true\n },\n key: 'alignLeft',\n label: ({ i18n }) => {\n return i18n.t('lexical:align:alignLeftLabel')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, 'left')\n },\n order: 1,\n },\n {\n ChildComponent: AlignCenterIcon,\n isActive: ({ selection }) => {\n if (!$isRangeSelection(selection)) {\n return false\n }\n for (const node of selection.getNodes()) {\n if ($isElementNode(node) || $isDecoratorBlockNode(node)) {\n if (getFormatType(node) === 'center') {\n continue\n }\n }\n\n const parent = node.getParent()\n if ($isElementNode(parent) || $isDecoratorBlockNode(parent)) {\n if (getFormatType(parent) === 'center') {\n continue\n }\n }\n\n return false\n }\n return true\n },\n key: 'alignCenter',\n label: ({ i18n }) => {\n return i18n.t('lexical:align:alignCenterLabel')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, 'center')\n },\n order: 2,\n },\n {\n ChildComponent: AlignRightIcon,\n isActive: ({ selection }) => {\n if (!$isRangeSelection(selection)) {\n return false\n }\n for (const node of selection.getNodes()) {\n if ($isElementNode(node) || $isDecoratorBlockNode(node)) {\n if (getFormatType(node) === 'right') {\n continue\n }\n }\n\n const parent = node.getParent()\n if ($isElementNode(parent) || $isDecoratorBlockNode(parent)) {\n if (getFormatType(parent) === 'right') {\n continue\n }\n }\n\n return false\n }\n return true\n },\n key: 'alignRight',\n label: ({ i18n }) => {\n return i18n.t('lexical:align:alignRightLabel')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, 'right')\n },\n order: 3,\n },\n {\n ChildComponent: AlignJustifyIcon,\n isActive: ({ selection }) => {\n if (!$isRangeSelection(selection)) {\n return false\n }\n for (const node of selection.getNodes()) {\n if ($isElementNode(node) || $isDecoratorBlockNode(node)) {\n if (getFormatType(node) === 'justify') {\n continue\n }\n }\n\n const parent = node.getParent()\n if ($isElementNode(parent) || $isDecoratorBlockNode(parent)) {\n if (getFormatType(parent) === 'justify') {\n continue\n }\n }\n\n return false\n }\n return true\n },\n key: 'alignJustify',\n label: ({ i18n }) => {\n return i18n.t('lexical:align:alignJustifyLabel')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, 'justify')\n },\n order: 4,\n },\n ]),\n]\n\nconst AlignPlugin = () => {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n // Just like the default Lexical configuration, but in\n // addition to ElementNode we also set DecoratorBlocks\n return editor.registerCommand(\n FORMAT_ELEMENT_COMMAND,\n (format) => {\n const selection = $getSelection()\n if (!$isRangeSelection(selection) && !$isNodeSelection(selection)) {\n return false\n }\n const nodes = selection.getNodes()\n for (const node of nodes) {\n const element = $findMatchingParent(\n node,\n (parentNode): parentNode is DecoratorBlockNode | ElementNode =>\n ($isElementNode(parentNode) || $isDecoratorBlockNode(parentNode)) &&\n !parentNode.isInline(),\n )\n if (element !== null) {\n element.setFormat(format)\n }\n }\n return true\n },\n COMMAND_PRIORITY_LOW,\n )\n }, [editor])\n return null\n}\n\nexport const AlignFeatureClient = createClientFeature({\n plugins: [\n {\n Component: AlignPlugin,\n position: 'normal',\n },\n ],\n toolbarFixed: {\n groups: toolbarGroups,\n },\n toolbarInline: {\n groups: toolbarGroups,\n },\n})\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","$isDecoratorBlockNode","$findMatchingParent","$getSelection","$isElementNode","$isNodeSelection","$isRangeSelection","COMMAND_PRIORITY_LOW","FORMAT_ELEMENT_COMMAND","useEffect","AlignCenterIcon","AlignJustifyIcon","AlignLeftIcon","AlignRightIcon","createClientFeature","toolbarAlignGroupWithItems","getFormatType","node","__format","toolbarGroups","ChildComponent","isActive","selection","getNodes","parent","getParent","key","label","i18n","t","onSelect","editor","dispatchCommand","order","AlignPlugin","$","t0","t1","registerCommand","_temp2","AlignFeatureClient","plugins","Component","position","toolbarFixed","groups","toolbarInline","_temp","parentNode","isInline","format","nodes","element","setFormat"],"sources":["../../../../src/features/align/client/index.tsx"],"sourcesContent":["'use client'\n\nimport type { DecoratorBlockNode } from '@lexical/react/LexicalDecoratorBlockNode'\nimport type { ElementFormatType, ElementNode } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { $isDecoratorBlockNode } from '@lexical/react/LexicalDecoratorBlockNode'\nimport { $findMatchingParent } from '@lexical/utils'\nimport {\n $getSelection,\n $isElementNode,\n $isNodeSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_LOW,\n FORMAT_ELEMENT_COMMAND,\n} from 'lexical'\nimport { useEffect } from 'react'\n\nimport type { ToolbarGroup } from '../../toolbars/types.js'\n\nimport { AlignCenterIcon } from '../../../lexical/ui/icons/AlignCenter/index.js'\nimport { AlignJustifyIcon } from '../../../lexical/ui/icons/AlignJustify/index.js'\nimport { AlignLeftIcon } from '../../../lexical/ui/icons/AlignLeft/index.js'\nimport { AlignRightIcon } from '../../../lexical/ui/icons/AlignRight/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { toolbarAlignGroupWithItems } from './toolbarAlignGroup.js'\n\n// DecoratorBlockNode has format, but Lexical forgot\n// to add the getters like ElementNode does.\nconst getFormatType = (node: DecoratorBlockNode | ElementNode): ElementFormatType => {\n if ($isElementNode(node)) {\n return node.getFormatType()\n }\n return node.__format\n}\n\nconst toolbarGroups: ToolbarGroup[] = [\n toolbarAlignGroupWithItems([\n {\n ChildComponent: AlignLeftIcon,\n isActive: ({ selection }) => {\n if (!$isRangeSelection(selection)) {\n return false\n }\n for (const node of selection.getNodes()) {\n if ($isElementNode(node) || $isDecoratorBlockNode(node)) {\n if (getFormatType(node) === 'left') {\n continue\n }\n }\n\n const parent = node.getParent()\n if ($isElementNode(parent) || $isDecoratorBlockNode(parent)) {\n if (getFormatType(parent) === 'left') {\n continue\n }\n }\n\n return false\n }\n return true\n },\n key: 'alignLeft',\n label: ({ i18n }) => {\n return i18n.t('lexical:align:alignLeftLabel')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, 'left')\n },\n order: 1,\n },\n {\n ChildComponent: AlignCenterIcon,\n isActive: ({ selection }) => {\n if (!$isRangeSelection(selection)) {\n return false\n }\n for (const node of selection.getNodes()) {\n if ($isElementNode(node) || $isDecoratorBlockNode(node)) {\n if (getFormatType(node) === 'center') {\n continue\n }\n }\n\n const parent = node.getParent()\n if ($isElementNode(parent) || $isDecoratorBlockNode(parent)) {\n if (getFormatType(parent) === 'center') {\n continue\n }\n }\n\n return false\n }\n return true\n },\n key: 'alignCenter',\n label: ({ i18n }) => {\n return i18n.t('lexical:align:alignCenterLabel')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, 'center')\n },\n order: 2,\n },\n {\n ChildComponent: AlignRightIcon,\n isActive: ({ selection }) => {\n if (!$isRangeSelection(selection)) {\n return false\n }\n for (const node of selection.getNodes()) {\n if ($isElementNode(node) || $isDecoratorBlockNode(node)) {\n if (getFormatType(node) === 'right') {\n continue\n }\n }\n\n const parent = node.getParent()\n if ($isElementNode(parent) || $isDecoratorBlockNode(parent)) {\n if (getFormatType(parent) === 'right') {\n continue\n }\n }\n\n return false\n }\n return true\n },\n key: 'alignRight',\n label: ({ i18n }) => {\n return i18n.t('lexical:align:alignRightLabel')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, 'right')\n },\n order: 3,\n },\n {\n ChildComponent: AlignJustifyIcon,\n isActive: ({ selection }) => {\n if (!$isRangeSelection(selection)) {\n return false\n }\n for (const node of selection.getNodes()) {\n if ($isElementNode(node) || $isDecoratorBlockNode(node)) {\n if (getFormatType(node) === 'justify') {\n continue\n }\n }\n\n const parent = node.getParent()\n if ($isElementNode(parent) || $isDecoratorBlockNode(parent)) {\n if (getFormatType(parent) === 'justify') {\n continue\n }\n }\n\n return false\n }\n return true\n },\n key: 'alignJustify',\n label: ({ i18n }) => {\n return i18n.t('lexical:align:alignJustifyLabel')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, 'justify')\n },\n order: 4,\n },\n ]),\n]\n\nconst AlignPlugin = () => {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n // Just like the default Lexical configuration, but in\n // addition to ElementNode we also set DecoratorBlocks\n return editor.registerCommand(\n FORMAT_ELEMENT_COMMAND,\n (format) => {\n const selection = $getSelection()\n if (!$isRangeSelection(selection) && !$isNodeSelection(selection)) {\n return false\n }\n const nodes = selection.getNodes()\n for (const node of nodes) {\n const element = $findMatchingParent(\n node,\n (parentNode): parentNode is DecoratorBlockNode | ElementNode =>\n ($isElementNode(parentNode) || $isDecoratorBlockNode(parentNode)) &&\n !parentNode.isInline(),\n )\n if (element !== null) {\n element.setFormat(format)\n }\n }\n return true\n },\n COMMAND_PRIORITY_LOW,\n )\n }, [editor])\n return null\n}\n\nexport const AlignFeatureClient = createClientFeature({\n plugins: [\n {\n Component: AlignPlugin,\n position: 'normal',\n },\n ],\n toolbarFixed: {\n groups: toolbarGroups,\n },\n toolbarInline: {\n groups: toolbarGroups,\n },\n})\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlockContent.js","names":["c","_c","useLexicalEditable","RenderFields","useFormSubmitted","React","createContext","useMemo","BlockComponentContext","baseClass","BlockCollapsible","BlockDrawer","EditButton","errorCount","formSchema","initialState","nodeKey","RemoveButton","useBlockComponentContext","use","BlockContent","props","$","Collapsible","CustomBlock","CustomLabel","contextProps","hasSubmitted","fieldHasErrors","isEditable","t0","collapsibleProps","children","rest","_jsx","CollapsibleWithErrorProps","blockContextValue","_jsxs","value","fields","forceRender","parentIndexPath","parentPath","parentSchemaPath","permissions","readOnly"],"sources":["../../../../../src/features/blocks/client/component/BlockContent.tsx"],"sourcesContent":["'use client'\nimport type { CollapsibleProps } from '@payloadcms/ui/elements/Collapsible'\nimport type { ClientField, FormState } from 'payload'\n\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport { RenderFields, useFormSubmitted } from '@payloadcms/ui'\nimport React, { createContext, useMemo } from 'react'\n\nexport type BlockCollapsibleProps = {\n /**\n * Replace the top-right portion of the header that renders the Edit and Remove buttons with custom content.\n * If this property is provided, the `removeButton` and `editButton` properties are ignored.\n */\n Actions?: React.ReactNode\n children?: React.ReactNode\n /**\n * Additional className to the collapsible wrapper\n */\n className?: string\n /**\n * Props to pass to the underlying Collapsible component. You could use this to override the `Header` entirely, for example.\n */\n collapsibleProps?: Partial<CollapsibleProps>\n /**\n * Whether to disable rendering the block name field in the header Label\n * @default false\n */\n disableBlockName?: boolean\n /**\n * Whether to show the Edit button\n * If `Actions` is provided, this property is ignored.\n * @default true\n */\n editButton?: boolean\n /**\n * Replace the default Label component with a custom Label\n */\n Label?: React.ReactNode\n /**\n * Replace the default Pill component component that's rendered within the default Label component with a custom Pill.\n * This property has no effect if you provide a custom Label component via the `Label` property.\n */\n Pill?: React.ReactNode\n /**\n * Whether to show the Remove button\n * If `Actions` is provided, this property is ignored.\n * @default true\n */\n removeButton?: boolean\n /**\n * Whether to show the drag handle icon\n * @default true\n */\n showDragHandle?: boolean\n /**\n * Whether to show the row number\n * @default true\n */\n showRowNumber?: boolean\n}\n\nexport type BlockCollapsibleWithErrorProps = {\n errorCount?: number\n fieldHasErrors?: boolean\n} & BlockCollapsibleProps\n\nexport type BlockContentProps = {\n baseClass: string\n BlockDrawer: React.FC\n Collapsible: React.FC<BlockCollapsibleWithErrorProps>\n /**\n * Custom block component (pre-rendered ReactNode).\n */\n CustomBlock?: React.ReactNode\n CustomLabel: React.ReactNode\n EditButton: React.FC\n errorCount: number\n formSchema: ClientField[]\n initialState: false | FormState | undefined\n\n nodeKey: string\n RemoveButton: React.FC\n}\n\nexport type BlockComponentContextType = {\n BlockCollapsible: React.FC<BlockCollapsibleProps>\n} & Omit<BlockContentProps, 'Collapsible' | 'CustomBlock' | 'CustomLabel'>\n\nconst BlockComponentContext = createContext<BlockComponentContextType>({\n baseClass: 'LexicalEditorTheme__block',\n BlockCollapsible: () => null,\n BlockDrawer: () => null,\n EditButton: () => null,\n errorCount: 0,\n formSchema: [],\n initialState: false,\n nodeKey: '',\n RemoveButton: () => null,\n})\n\nexport const useBlockComponentContext = () => React.use(BlockComponentContext)\n\n/**\n * The actual content of the Block. This should be INSIDE a Form component,\n * scoped to the block. All format operations in here are thus scoped to the block's form, and\n * not the whole document.\n */\nexport const BlockContent: React.FC<BlockContentProps> = (props) => {\n const { Collapsible, CustomBlock, CustomLabel, ...contextProps } = props\n\n const { BlockDrawer, errorCount, formSchema } = contextProps\n\n const hasSubmitted = useFormSubmitted()\n\n const fieldHasErrors = hasSubmitted && errorCount > 0\n const isEditable = useLexicalEditable()\n\n const CollapsibleWithErrorProps = useMemo(\n () => (collapsibleProps: BlockCollapsibleProps) => {\n const { children, ...rest } = collapsibleProps\n return (\n <Collapsible errorCount={errorCount} fieldHasErrors={fieldHasErrors} {...rest}>\n {children}\n </Collapsible>\n )\n },\n [Collapsible, fieldHasErrors, errorCount],\n )\n\n const blockContextValue: BlockComponentContextType = {\n ...contextProps,\n BlockCollapsible: CollapsibleWithErrorProps,\n }\n\n // Provide context for useBlockComponentContext() hook\n return CustomBlock ? (\n <BlockComponentContext value={blockContextValue}>\n {CustomBlock}\n <BlockDrawer />\n </BlockComponentContext>\n ) : (\n <CollapsibleWithErrorProps>\n <RenderFields\n fields={formSchema}\n forceRender={true}\n parentIndexPath=\"\"\n parentPath={''}\n parentSchemaPath=\"\"\n permissions={true}\n readOnly={!isEditable}\n />\n </CollapsibleWithErrorProps>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAIA,SAASC,kBAAkB,QAAQ;AACnC,SAASC,YAAY,EAAEC,gBAAgB,QAAQ;AAC/C,OAAOC,KAAA,IAASC,aAAa,EAAEC,OAAO,QAAQ;AAkF9C,MAAMC,qBAAA,gBAAwBF,aAAA,CAAyC;EACrEG,SAAA,EAAW;EACXC,gBAAA,EAAkBA,CAAA,KAAM;EACxBC,WAAA,EAAaA,CAAA,KAAM;EACnBC,UAAA,EAAYA,CAAA,KAAM;EAClBC,UAAA,EAAY;EACZC,UAAA,EAAY,EAAE;EACdC,YAAA,EAAc;EACdC,OAAA,EAAS;EACTC,YAAA,EAAcA,CAAA,KAAM;AACtB;AAEA,OAAO,MAAMC,wBAAA,GAA2BA,CAAA,KAAMb,KAAA,CAAMc,GAAG,CAACX,qBAAA;AAExD;;;;;AAKA,OAAO,MAAMY,YAAA,GAA4CC,KAAA;EAAA,MAAAC,CAAA,GAAArB,EAAA;EACvD;IAAAsB,WAAA;IAAAC,WAAA;IAAAC,WAAA;IAAA,GAAAC;EAAA,IAAmEL,KAAA;EAEnE;IAAAV,WAAA;IAAAE,UAAA;IAAAC;EAAA,IAAgDY,YAAA;EAEhD,MAAAC,YAAA,GAAqBvB,gBAAA;EAErB,MAAAwB,cAAA,GAAuBD,
|
|
1
|
+
{"version":3,"file":"BlockContent.js","names":["c","_c","useLexicalEditable","RenderFields","useFormSubmitted","React","createContext","useMemo","BlockComponentContext","baseClass","BlockCollapsible","BlockDrawer","EditButton","errorCount","formSchema","initialState","nodeKey","RemoveButton","useBlockComponentContext","use","BlockContent","props","$","Collapsible","CustomBlock","CustomLabel","contextProps","hasSubmitted","fieldHasErrors","isEditable","t0","collapsibleProps","children","rest","_jsx","CollapsibleWithErrorProps","blockContextValue","_jsxs","value","fields","forceRender","parentIndexPath","parentPath","parentSchemaPath","permissions","readOnly"],"sources":["../../../../../src/features/blocks/client/component/BlockContent.tsx"],"sourcesContent":["'use client'\nimport type { CollapsibleProps } from '@payloadcms/ui/elements/Collapsible'\nimport type { ClientField, FormState } from 'payload'\n\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport { RenderFields, useFormSubmitted } from '@payloadcms/ui'\nimport React, { createContext, useMemo } from 'react'\n\nexport type BlockCollapsibleProps = {\n /**\n * Replace the top-right portion of the header that renders the Edit and Remove buttons with custom content.\n * If this property is provided, the `removeButton` and `editButton` properties are ignored.\n */\n Actions?: React.ReactNode\n children?: React.ReactNode\n /**\n * Additional className to the collapsible wrapper\n */\n className?: string\n /**\n * Props to pass to the underlying Collapsible component. You could use this to override the `Header` entirely, for example.\n */\n collapsibleProps?: Partial<CollapsibleProps>\n /**\n * Whether to disable rendering the block name field in the header Label\n * @default false\n */\n disableBlockName?: boolean\n /**\n * Whether to show the Edit button\n * If `Actions` is provided, this property is ignored.\n * @default true\n */\n editButton?: boolean\n /**\n * Replace the default Label component with a custom Label\n */\n Label?: React.ReactNode\n /**\n * Replace the default Pill component component that's rendered within the default Label component with a custom Pill.\n * This property has no effect if you provide a custom Label component via the `Label` property.\n */\n Pill?: React.ReactNode\n /**\n * Whether to show the Remove button\n * If `Actions` is provided, this property is ignored.\n * @default true\n */\n removeButton?: boolean\n /**\n * Whether to show the drag handle icon\n * @default true\n */\n showDragHandle?: boolean\n /**\n * Whether to show the row number\n * @default true\n */\n showRowNumber?: boolean\n}\n\nexport type BlockCollapsibleWithErrorProps = {\n errorCount?: number\n fieldHasErrors?: boolean\n} & BlockCollapsibleProps\n\nexport type BlockContentProps = {\n baseClass: string\n BlockDrawer: React.FC\n Collapsible: React.FC<BlockCollapsibleWithErrorProps>\n /**\n * Custom block component (pre-rendered ReactNode).\n */\n CustomBlock?: React.ReactNode\n CustomLabel: React.ReactNode\n EditButton: React.FC\n errorCount: number\n formSchema: ClientField[]\n initialState: false | FormState | undefined\n\n nodeKey: string\n RemoveButton: React.FC\n}\n\nexport type BlockComponentContextType = {\n BlockCollapsible: React.FC<BlockCollapsibleProps>\n} & Omit<BlockContentProps, 'Collapsible' | 'CustomBlock' | 'CustomLabel'>\n\nconst BlockComponentContext = createContext<BlockComponentContextType>({\n baseClass: 'LexicalEditorTheme__block',\n BlockCollapsible: () => null,\n BlockDrawer: () => null,\n EditButton: () => null,\n errorCount: 0,\n formSchema: [],\n initialState: false,\n nodeKey: '',\n RemoveButton: () => null,\n})\n\nexport const useBlockComponentContext = () => React.use(BlockComponentContext)\n\n/**\n * The actual content of the Block. This should be INSIDE a Form component,\n * scoped to the block. All format operations in here are thus scoped to the block's form, and\n * not the whole document.\n */\nexport const BlockContent: React.FC<BlockContentProps> = (props) => {\n const { Collapsible, CustomBlock, CustomLabel, ...contextProps } = props\n\n const { BlockDrawer, errorCount, formSchema } = contextProps\n\n const hasSubmitted = useFormSubmitted()\n\n const fieldHasErrors = hasSubmitted && errorCount > 0\n const isEditable = useLexicalEditable()\n\n const CollapsibleWithErrorProps = useMemo(\n () => (collapsibleProps: BlockCollapsibleProps) => {\n const { children, ...rest } = collapsibleProps\n return (\n <Collapsible errorCount={errorCount} fieldHasErrors={fieldHasErrors} {...rest}>\n {children}\n </Collapsible>\n )\n },\n [Collapsible, fieldHasErrors, errorCount],\n )\n\n const blockContextValue: BlockComponentContextType = {\n ...contextProps,\n BlockCollapsible: CollapsibleWithErrorProps,\n }\n\n // Provide context for useBlockComponentContext() hook\n return CustomBlock ? (\n <BlockComponentContext value={blockContextValue}>\n {CustomBlock}\n <BlockDrawer />\n </BlockComponentContext>\n ) : (\n <CollapsibleWithErrorProps>\n <RenderFields\n fields={formSchema}\n forceRender={true}\n parentIndexPath=\"\"\n parentPath={''}\n parentSchemaPath=\"\"\n permissions={true}\n readOnly={!isEditable}\n />\n </CollapsibleWithErrorProps>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAIA,SAASC,kBAAkB,QAAQ;AACnC,SAASC,YAAY,EAAEC,gBAAgB,QAAQ;AAC/C,OAAOC,KAAA,IAASC,aAAa,EAAEC,OAAO,QAAQ;AAkF9C,MAAMC,qBAAA,gBAAwBF,aAAA,CAAyC;EACrEG,SAAA,EAAW;EACXC,gBAAA,EAAkBA,CAAA,KAAM;EACxBC,WAAA,EAAaA,CAAA,KAAM;EACnBC,UAAA,EAAYA,CAAA,KAAM;EAClBC,UAAA,EAAY;EACZC,UAAA,EAAY,EAAE;EACdC,YAAA,EAAc;EACdC,OAAA,EAAS;EACTC,YAAA,EAAcA,CAAA,KAAM;AACtB;AAEA,OAAO,MAAMC,wBAAA,GAA2BA,CAAA,KAAMb,KAAA,CAAMc,GAAG,CAACX,qBAAA;AAExD;;;;;AAKA,OAAO,MAAMY,YAAA,GAA4CC,KAAA;EAAA,MAAAC,CAAA,GAAArB,EAAA;EACvD;IAAAsB,WAAA;IAAAC,WAAA;IAAAC,WAAA;IAAA,GAAAC;EAAA,IAAmEL,KAAA;EAEnE;IAAAV,WAAA;IAAAE,UAAA;IAAAC;EAAA,IAAgDY,YAAA;EAEhD,MAAAC,YAAA,GAAqBvB,gBAAA;EAErB,MAAAwB,cAAA,GAAuBD,YAA6B,IAAbd,UAAA,GAAa;EACpD,MAAAgB,UAAA,GAAmB3B,kBAAA;EAAA,IAAA4B,EAAA;EAAA,IAAAR,CAAA,QAAAC,WAAA,IAAAD,CAAA,QAAAT,UAAA,IAAAS,CAAA,QAAAM,cAAA;IAGXE,EAAA,GAAAC,gBAAA;MACJ;QAAAC,QAAA;QAAA,GAAAC;MAAA,IAA8BF,gBAAA;MAAA,OAE5BG,IAAA,CAACX,WAAA;QAAAV,UAAA;QAAAe,cAAA;QAAA,GAAwEK,IAAI;QAAAD;;KAIjF;IAAAV,CAAA,MAAAC,WAAA;IAAAD,CAAA,MAAAT,UAAA;IAAAS,CAAA,MAAAM,cAAA;IAAAN,CAAA,MAAAQ,EAAA;EAAA;IAAAA,EAAA,GAAAR,CAAA;EAAA;EARF,MAAAa,yBAAA,GACQL,EAON;EAIF,MAAAM,iBAAA,GAAqD;IAAA,GAChDV,YAAY;IAAAhB,gBAAA,EACGyB;EACpB;EAAA,OAGOX,WAAA,GACLa,KAAA,CAAC7B,qBAAA;IAAA8B,KAAA,EAA6BF,iBAAA;IAAAJ,QAAA,E,CAC3BR,WAAA,EACDU,IAAA,CAACvB,WAAA;OAGHuB,IAAA,CAACC,yBAAA;IAAAH,QAAA,EACCE,IAAA,CAAC/B,YAAA;MAAAoC,MAAA,EACSzB,UAAA;MAAA0B,WAAA,EACK;MAAAC,eAAA,EACG;MAAAC,UAAA,EACJ;MAAAC,gBAAA,EACK;MAAAC,WAAA,EACJ;MAAAC,QAAA,EACH,CAAChB;;;CAInB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlockCollapsible.js","names":["React","useBlockComponentContext","BlockCollapsible","props","children","rest","_jsx"],"sources":["../../../../../../src/features/blocks/client/component/components/BlockCollapsible.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport { type BlockCollapsibleProps, useBlockComponentContext } from '../BlockContent.js'\n\nexport const BlockCollapsible: React.FC<BlockCollapsibleProps> = (props) => {\n const { children, ...rest } = props\n const { BlockCollapsible } = useBlockComponentContext()\n\n return BlockCollapsible ? <BlockCollapsible {...rest}>{children}</BlockCollapsible> : null\n}\n"],"mappings":"AAAA;;;AACA,OAAOA,KAAA,MAAW;AAElB,SAAqCC,wBAAwB,QAAQ;AAErE,OAAO,MAAMC,gBAAA,GAAoDC,KAAA;EAC/D;IAAAC,QAAA;IAAA,GAAAC;EAAA,IAA8BF,KAAA;EAC9B;IAAAD;EAAA,IAA6BD,wBAAA;EAAA,OAEtBC,gBAAA,GAAmBI,IAAA,CAACJ,gBAAA;IAAA,GAAqBG,IAAI;IAAAD;
|
|
1
|
+
{"version":3,"file":"BlockCollapsible.js","names":["React","useBlockComponentContext","BlockCollapsible","props","children","rest","_jsx"],"sources":["../../../../../../src/features/blocks/client/component/components/BlockCollapsible.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport { type BlockCollapsibleProps, useBlockComponentContext } from '../BlockContent.js'\n\nexport const BlockCollapsible: React.FC<BlockCollapsibleProps> = (props) => {\n const { children, ...rest } = props\n const { BlockCollapsible } = useBlockComponentContext()\n\n return BlockCollapsible ? <BlockCollapsible {...rest}>{children}</BlockCollapsible> : null\n}\n"],"mappings":"AAAA;;;AACA,OAAOA,KAAA,MAAW;AAElB,SAAqCC,wBAAwB,QAAQ;AAErE,OAAO,MAAMC,gBAAA,GAAoDC,KAAA;EAC/D;IAAAC,QAAA;IAAA,GAAAC;EAAA,IAA8BF,KAAA;EAC9B;IAAAD;EAAA,IAA6BD,wBAAA;EAAA,OAEtBC,gBAAA,GAAmBI,IAAA,CAACJ,gBAAA;IAAA,GAAqBG,IAAI;IAAAD;GAAkC,IAA/E,IAA+E;AAAA,CACxF","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlockEditButton.js","names":["c","_c","React","useBlockComponentContext","BlockEditButton","$","EditButton","t0","_jsx"],"sources":["../../../../../../src/features/blocks/client/component/components/BlockEditButton.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport { useBlockComponentContext } from '../BlockContent.js'\n\nexport const BlockEditButton = () => {\n const { EditButton } = useBlockComponentContext()\n\n return EditButton ? <EditButton /> : null\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,OAAOC,KAAA,MAAW;AAElB,SAASC,wBAAwB,QAAQ;AAEzC,OAAO,MAAMC,eAAA,GAAkBA,CAAA;EAAA,MAAAC,CAAA,GAAAJ,EAAA;EAC7B;IAAAK;EAAA,IAAuBH,wBAAA;EAAA,IAAAI,EAAA;EAAA,IAAAF,CAAA,QAAAC,UAAA;IAEhBC,EAAA,GAAAD,UAAA,GAAaE,IAAA,CAACF,UAAA,
|
|
1
|
+
{"version":3,"file":"BlockEditButton.js","names":["c","_c","React","useBlockComponentContext","BlockEditButton","$","EditButton","t0","_jsx"],"sources":["../../../../../../src/features/blocks/client/component/components/BlockEditButton.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport { useBlockComponentContext } from '../BlockContent.js'\n\nexport const BlockEditButton = () => {\n const { EditButton } = useBlockComponentContext()\n\n return EditButton ? <EditButton /> : null\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,OAAOC,KAAA,MAAW;AAElB,SAASC,wBAAwB,QAAQ;AAEzC,OAAO,MAAMC,eAAA,GAAkBA,CAAA;EAAA,MAAAC,CAAA,GAAAJ,EAAA;EAC7B;IAAAK;EAAA,IAAuBH,wBAAA;EAAA,IAAAI,EAAA;EAAA,IAAAF,CAAA,QAAAC,UAAA;IAEhBC,EAAA,GAAAD,UAAA,GAAaE,IAAA,CAACF,UAAA,IAAgB,IAA9B,IAA8B;IAAAD,CAAA,MAAAC,UAAA;IAAAD,CAAA,MAAAE,EAAA;EAAA;IAAAA,EAAA,GAAAF,CAAA;EAAA;EAAA,OAA9BE,EAA8B;AAAA,CACvC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlockRemoveButton.js","names":["c","_c","React","useBlockComponentContext","BlockRemoveButton","$","RemoveButton","t0","_jsx"],"sources":["../../../../../../src/features/blocks/client/component/components/BlockRemoveButton.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport { useBlockComponentContext } from '../BlockContent.js'\n\nexport const BlockRemoveButton = () => {\n const { RemoveButton } = useBlockComponentContext()\n\n return RemoveButton ? <RemoveButton /> : null\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,OAAOC,KAAA,MAAW;AAElB,SAASC,wBAAwB,QAAQ;AAEzC,OAAO,MAAMC,iBAAA,GAAoBA,CAAA;EAAA,MAAAC,CAAA,GAAAJ,EAAA;EAC/B;IAAAK;EAAA,IAAyBH,wBAAA;EAAA,IAAAI,EAAA;EAAA,IAAAF,CAAA,QAAAC,YAAA;IAElBC,EAAA,GAAAD,YAAA,GAAeE,IAAA,CAACF,YAAA,
|
|
1
|
+
{"version":3,"file":"BlockRemoveButton.js","names":["c","_c","React","useBlockComponentContext","BlockRemoveButton","$","RemoveButton","t0","_jsx"],"sources":["../../../../../../src/features/blocks/client/component/components/BlockRemoveButton.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nimport { useBlockComponentContext } from '../BlockContent.js'\n\nexport const BlockRemoveButton = () => {\n const { RemoveButton } = useBlockComponentContext()\n\n return RemoveButton ? <RemoveButton /> : null\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,OAAOC,KAAA,MAAW;AAElB,SAASC,wBAAwB,QAAQ;AAEzC,OAAO,MAAMC,iBAAA,GAAoBA,CAAA;EAAA,MAAAC,CAAA,GAAAJ,EAAA;EAC/B;IAAAK;EAAA,IAAyBH,wBAAA;EAAA,IAAAI,EAAA;EAAA,IAAAF,CAAA,QAAAC,YAAA;IAElBC,EAAA,GAAAD,YAAA,GAAeE,IAAA,CAACF,YAAA,IAAkB,IAAlC,IAAkC;IAAAD,CAAA,MAAAC,YAAA;IAAAD,CAAA,MAAAE,EAAA;EAAA;IAAAA,EAAA,GAAAF,CAAA;EAAA;EAAA,OAAlCE,EAAkC;AAAA,CAC3C","ignoreList":[]}
|
|
@@ -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":"AAwCA,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;AAgBrD,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,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAA;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAivBxD,CAAA"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
+
import { c as _c } from "react/compiler-runtime";
|
|
3
4
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
4
5
|
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
|
|
5
6
|
import { useLexicalEditable } from '@lexical/react/useLexicalEditable';
|
|
6
7
|
import { getTranslation } from '@payloadcms/translations';
|
|
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
|
+
import { Button, Collapsible, Drawer, EditDepthProvider, ErrorPill, Form, formatDrawerSlug, MoreIcon, Pill, Popup, PopupList, RenderFields, SectionTitle, useConfig, useDocumentForm, useDocumentInfo, useEditDepth, useFormSubmitted, useOperation, useServerFunctions, useTranslation, XIcon } from '@payloadcms/ui';
|
|
8
9
|
import { abortAndIgnore } from '@payloadcms/ui/shared';
|
|
9
10
|
import { $getNodeByKey, $getRoot, SKIP_DOM_SELECTION_TAG } from 'lexical';
|
|
10
|
-
import { deepCopyObjectSimpleWithoutReactComponents } from 'payload/shared';
|
|
11
|
+
import { deepCopyObjectSimpleWithoutReactComponents, getDataFromFormState } from 'payload/shared';
|
|
11
12
|
import React, { useCallback, useEffect, useMemo, useRef } from 'react';
|
|
12
13
|
import { v4 as uuid } from 'uuid';
|
|
13
14
|
import './index.css';
|
|
@@ -15,7 +16,7 @@ import '../../../../utilities/fieldsDrawer/index.css';
|
|
|
15
16
|
import { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js';
|
|
16
17
|
import { RegisterFormSubmit, useDrawerSubmit } from '../../../../utilities/fieldsDrawer/useDrawerSubmit.js';
|
|
17
18
|
import { useLexicalDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDrawer.js';
|
|
18
|
-
import { getCachedFormStateIfDataMatches
|
|
19
|
+
import { getCachedFormStateIfDataMatches } from '../getCachedFormStateIfDataMatches.js';
|
|
19
20
|
import { $isBlockNode } from '../nodes/BlocksNode.js';
|
|
20
21
|
import { BlockContent, useBlockComponentContext } from './BlockContent.js';
|
|
21
22
|
import { BlockReordering } from './BlockReordering/index.js';
|
|
@@ -46,7 +47,6 @@ export const BlockComponent = props => {
|
|
|
46
47
|
const {
|
|
47
48
|
fields: parentDocumentFields
|
|
48
49
|
} = useDocumentForm();
|
|
49
|
-
const onChangeAbortControllerRef = useRef(new AbortController());
|
|
50
50
|
const editDepth = useEditDepth();
|
|
51
51
|
const [errorCount, setErrorCount] = React.useState(0);
|
|
52
52
|
const {
|
|
@@ -68,9 +68,8 @@ export const BlockComponent = props => {
|
|
|
68
68
|
} = useDocumentInfo();
|
|
69
69
|
const [editor] = useLexicalComposerContext();
|
|
70
70
|
const isEditable = useLexicalEditable();
|
|
71
|
+
const operation = useOperation();
|
|
71
72
|
const blockType = formData.blockType;
|
|
72
|
-
const formDataRef = useRef(formData);
|
|
73
|
-
formDataRef.current = formData;
|
|
74
73
|
const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_blocks.${blockType}`;
|
|
75
74
|
const clientSchemaMap = featureClientSchemaMap['blocks'];
|
|
76
75
|
const blocksField = clientSchemaMap?.[componentMapRenderedBlockPath]?.[0];
|
|
@@ -147,7 +146,7 @@ export const BlockComponent = props => {
|
|
|
147
146
|
isEditor: true,
|
|
148
147
|
isJSXConverter: false,
|
|
149
148
|
nodeKey: nodeKey,
|
|
150
|
-
// eslint-disable-next-line react-
|
|
149
|
+
// eslint-disable-next-line react-hooks/hooks -- intentionally passed as a prop for custom block components to call
|
|
151
150
|
useBlockComponentContext: useBlockComponentContext
|
|
152
151
|
});
|
|
153
152
|
}
|
|
@@ -161,7 +160,7 @@ export const BlockComponent = props => {
|
|
|
161
160
|
isEditor: true,
|
|
162
161
|
isJSXConverter: false,
|
|
163
162
|
nodeKey: nodeKey,
|
|
164
|
-
// eslint-disable-next-line react-
|
|
163
|
+
// eslint-disable-next-line react-hooks/hooks -- intentionally passed as a prop for custom block components to call
|
|
165
164
|
useBlockComponentContext: useBlockComponentContext
|
|
166
165
|
});
|
|
167
166
|
}
|
|
@@ -186,12 +185,10 @@ export const BlockComponent = props => {
|
|
|
186
185
|
fields: true
|
|
187
186
|
},
|
|
188
187
|
docPreferences: await getDocPreferences(),
|
|
189
|
-
documentFormState:
|
|
190
|
-
excludeFiles: true
|
|
191
|
-
}),
|
|
188
|
+
documentFormState: parentDocumentFields,
|
|
192
189
|
globalSlug,
|
|
193
190
|
initialBlockData: formData,
|
|
194
|
-
operation
|
|
191
|
+
operation,
|
|
195
192
|
readOnly: !isEditable,
|
|
196
193
|
renderAllFields: true,
|
|
197
194
|
schemaPath: schemaFieldsPath,
|
|
@@ -204,9 +201,9 @@ export const BlockComponent = props => {
|
|
|
204
201
|
valid: true,
|
|
205
202
|
value: formData.blockName
|
|
206
203
|
};
|
|
207
|
-
const newFormStateData =
|
|
204
|
+
const newFormStateData = getDataFromFormState(deepCopyObjectSimpleWithoutReactComponents(state, {
|
|
208
205
|
excludeFiles: true
|
|
209
|
-
}));
|
|
206
|
+
}), true);
|
|
210
207
|
// Things like default values may come back from the server => update the node with the new data
|
|
211
208
|
editor.update(() => {
|
|
212
209
|
const node = $getNodeByKey(nodeKey);
|
|
@@ -236,53 +233,19 @@ export const BlockComponent = props => {
|
|
|
236
233
|
return () => {
|
|
237
234
|
abortAndIgnore(abortController);
|
|
238
235
|
};
|
|
239
|
-
}, [getFormState, schemaFieldsPath, isEditable, id, CustomLabelFromProps, CustomBlockFromProps, formData, editor, nodeKey, initialState, collectionSlug, globalSlug, getDocPreferences, parentDocumentFields, blockType, clientBlock]);
|
|
236
|
+
}, [getFormState, schemaFieldsPath, isEditable, id, CustomLabelFromProps, CustomBlockFromProps, formData, editor, nodeKey, initialState, collectionSlug, globalSlug, getDocPreferences, operation, parentDocumentFields, blockType, clientBlock]);
|
|
240
237
|
const [isCollapsed, setIsCollapsed] = React.useState(initialLexicalFormState?.[formData.id]?.collapsed ?? false);
|
|
241
238
|
const {
|
|
242
239
|
i18n,
|
|
243
240
|
t
|
|
244
241
|
} = useTranslation();
|
|
245
|
-
const
|
|
246
|
-
formState: prevFormState,
|
|
247
|
-
submit
|
|
248
|
-
}) => {
|
|
249
|
-
abortAndIgnore(onChangeAbortControllerRef.current);
|
|
250
|
-
const controller = new AbortController();
|
|
251
|
-
onChangeAbortControllerRef.current = controller;
|
|
252
|
-
const blockData = reduceFormStateToBlockData(deepCopyObjectSimpleWithoutReactComponents(prevFormState, {
|
|
253
|
-
excludeFiles: true
|
|
254
|
-
}), formDataRef.current);
|
|
255
|
-
const {
|
|
256
|
-
state: newFormState
|
|
257
|
-
} = await getFormState({
|
|
258
|
-
id,
|
|
259
|
-
collectionSlug,
|
|
260
|
-
data: blockData,
|
|
261
|
-
docPermissions: {
|
|
262
|
-
fields: true
|
|
263
|
-
},
|
|
264
|
-
docPreferences: await getDocPreferences(),
|
|
265
|
-
documentFormState: deepCopyObjectSimpleWithoutReactComponents(parentDocumentFields, {
|
|
266
|
-
excludeFiles: true
|
|
267
|
-
}),
|
|
268
|
-
formState: prevFormState,
|
|
269
|
-
globalSlug,
|
|
270
|
-
initialBlockData: blockData,
|
|
271
|
-
operation: 'update',
|
|
272
|
-
readOnly: !isEditable,
|
|
273
|
-
renderAllFields: submit ? true : false,
|
|
274
|
-
schemaPath: schemaFieldsPath,
|
|
275
|
-
signal: controller.signal
|
|
276
|
-
});
|
|
277
|
-
if (!newFormState) {
|
|
278
|
-
return prevFormState;
|
|
279
|
-
}
|
|
242
|
+
const applyServerState = useCallback((newFormState, prevFormState) => {
|
|
280
243
|
if (prevFormState.blockName) {
|
|
281
244
|
newFormState.blockName = prevFormState.blockName;
|
|
282
245
|
}
|
|
283
|
-
const newFormStateData_0 =
|
|
246
|
+
const newFormStateData_0 = getDataFromFormState(deepCopyObjectSimpleWithoutReactComponents(newFormState, {
|
|
284
247
|
excludeFiles: true
|
|
285
|
-
}),
|
|
248
|
+
}), true);
|
|
286
249
|
setTimeout(() => {
|
|
287
250
|
editor.update(() => {
|
|
288
251
|
const node_0 = $getNodeByKey(nodeKey);
|
|
@@ -298,28 +261,22 @@ export const BlockComponent = props => {
|
|
|
298
261
|
tag: SKIP_DOM_SELECTION_TAG
|
|
299
262
|
});
|
|
300
263
|
}, 0);
|
|
301
|
-
|
|
264
|
+
}, [blockType, editor, nodeKey]);
|
|
265
|
+
const onChange = useCallback(({
|
|
266
|
+
formState,
|
|
267
|
+
submitted: submitted_0
|
|
268
|
+
}) => {
|
|
269
|
+
applyServerState(formState, formState);
|
|
270
|
+
if (submitted_0) {
|
|
302
271
|
if (!CustomLabelFromProps) {
|
|
303
|
-
setCustomLabel(
|
|
272
|
+
setCustomLabel(formState._components?.customComponents?.BlockLabel ?? undefined);
|
|
304
273
|
}
|
|
305
274
|
if (!CustomBlockFromProps) {
|
|
306
|
-
setCustomBlock(
|
|
307
|
-
}
|
|
308
|
-
let rowErrorCount = 0;
|
|
309
|
-
for (const formField of Object.values(newFormState)) {
|
|
310
|
-
if (formField?.valid === false) {
|
|
311
|
-
rowErrorCount++;
|
|
312
|
-
}
|
|
275
|
+
setCustomBlock(formState._components?.customComponents?.Block ?? undefined);
|
|
313
276
|
}
|
|
314
|
-
setErrorCount(
|
|
277
|
+
setErrorCount(Object.values(formState).filter(field => field.valid === false).length);
|
|
315
278
|
}
|
|
316
|
-
|
|
317
|
-
}, [getFormState, id, collectionSlug, getDocPreferences, globalSlug, schemaFieldsPath, blockType, parentDocumentFields, isEditable, editor, nodeKey, CustomBlockFromProps, CustomLabelFromProps]);
|
|
318
|
-
useEffect(() => {
|
|
319
|
-
return () => {
|
|
320
|
-
abortAndIgnore(onChangeAbortControllerRef.current);
|
|
321
|
-
};
|
|
322
|
-
}, []);
|
|
279
|
+
}, [applyServerState, CustomLabelFromProps, CustomBlockFromProps]);
|
|
323
280
|
const removeBlock = useCallback(() => {
|
|
324
281
|
editor.update(() => {
|
|
325
282
|
$getNodeByKey(nodeKey)?.remove();
|
|
@@ -498,6 +455,7 @@ export const BlockComponent = props => {
|
|
|
498
455
|
role: 'button',
|
|
499
456
|
tabIndex: 0
|
|
500
457
|
},
|
|
458
|
+
draggable: true,
|
|
501
459
|
listeners: {
|
|
502
460
|
onBlur
|
|
503
461
|
}
|
|
@@ -517,10 +475,8 @@ export const BlockComponent = props => {
|
|
|
517
475
|
}), !disableBlockName && !clientBlock?.admin?.disableBlockName && /*#__PURE__*/_jsx(SectionTitle, {
|
|
518
476
|
path: "blockName",
|
|
519
477
|
readOnly: !isEditable
|
|
520
|
-
}), fieldHasErrors && /*#__PURE__*/_jsx(
|
|
521
|
-
count: errorCount_0 ?? 0
|
|
522
|
-
i18n: i18n,
|
|
523
|
-
withMessage: true
|
|
478
|
+
}), fieldHasErrors && /*#__PURE__*/_jsx(BlockErrorPill, {
|
|
479
|
+
count: errorCount_0 ?? 0
|
|
524
480
|
})]
|
|
525
481
|
})
|
|
526
482
|
}),
|
|
@@ -545,7 +501,7 @@ export const BlockComponent = props => {
|
|
|
545
501
|
}, 0)
|
|
546
502
|
})
|
|
547
503
|
});
|
|
548
|
-
}, [editor, resolvedCustomBlock, resolvedCustomLabel, blockDisplayName, baseClass, clientBlock?.admin?.disableBlockName, blockType,
|
|
504
|
+
}, [editor, resolvedCustomBlock, resolvedCustomLabel, blockDisplayName, baseClass, clientBlock?.admin?.disableBlockName, blockType, isCollapsed, onCollapsedChange, isEditable, nodeKey, removeBlock, rowIndex, t, toggleDrawer]);
|
|
549
505
|
const blockID = formData?.id;
|
|
550
506
|
const {
|
|
551
507
|
headerActions,
|
|
@@ -586,22 +542,13 @@ export const BlockComponent = props => {
|
|
|
586
542
|
display: 'contents'
|
|
587
543
|
},
|
|
588
544
|
children: /*#__PURE__*/_jsx(Form, {
|
|
589
|
-
beforeSubmit: [async ({
|
|
590
|
-
formState
|
|
591
|
-
}) => {
|
|
592
|
-
// This is only called when form is submitted from drawer - usually only the case if the block has a custom Block component
|
|
593
|
-
return await onChange({
|
|
594
|
-
formState,
|
|
595
|
-
submit: true
|
|
596
|
-
});
|
|
597
|
-
}],
|
|
598
545
|
el: "div",
|
|
599
546
|
fields: clientBlock?.fields ?? [],
|
|
600
547
|
initialState: initialState,
|
|
601
548
|
onChange: [onChange],
|
|
602
549
|
onSubmit: formState_0 => {
|
|
603
550
|
// This is only called when form is submitted from drawer - usually only the case if the block has a custom Block component
|
|
604
|
-
const newData_1 =
|
|
551
|
+
const newData_1 = getDataFromFormState(formState_0, true);
|
|
605
552
|
newData_1.blockType = blockType;
|
|
606
553
|
editor.update(() => {
|
|
607
554
|
const node_1 = $getNodeByKey(nodeKey);
|
|
@@ -616,6 +563,8 @@ export const BlockComponent = props => {
|
|
|
616
563
|
});
|
|
617
564
|
toggleDrawer();
|
|
618
565
|
},
|
|
566
|
+
readOnly: !isEditable,
|
|
567
|
+
schemaPath: schemaFieldsPath,
|
|
619
568
|
submitted: submitted,
|
|
620
569
|
uuid: formUuid,
|
|
621
570
|
children: /*#__PURE__*/_jsx(BlockContent, {
|
|
@@ -633,7 +582,7 @@ export const BlockComponent = props => {
|
|
|
633
582
|
})
|
|
634
583
|
})
|
|
635
584
|
});
|
|
636
|
-
}, [BlockCollapsible, BlockDrawer, resolvedCustomBlock, resolvedCustomLabel, blockType, drawerSlug, RemoveButton, EditButton, baseClass, editor, errorCount, toggleDrawer, clientBlock?.fields, formUuid, initialState, nodeKey, onChange, submitted]);
|
|
585
|
+
}, [BlockCollapsible, BlockDrawer, resolvedCustomBlock, resolvedCustomLabel, blockType, drawerSlug, RemoveButton, EditButton, baseClass, editor, errorCount, toggleDrawer, clientBlock?.fields, formUuid, initialState, nodeKey, schemaFieldsPath, isEditable, onChange, submitted]);
|
|
637
586
|
if (!clientBlock) {
|
|
638
587
|
return /*#__PURE__*/_jsx(BlockCollapsible, {
|
|
639
588
|
disableBlockName: true,
|
|
@@ -646,4 +595,32 @@ export const BlockComponent = props => {
|
|
|
646
595
|
}
|
|
647
596
|
return Block;
|
|
648
597
|
};
|
|
598
|
+
/**
|
|
599
|
+
* Reads `i18n` itself so `BlockCollapsible` does not depend on it. `BlockCollapsible` is created in
|
|
600
|
+
* a `useMemo`, so each new `i18n` object (e.g. once the date-fns locale is set after mount) would
|
|
601
|
+
* remount the whole block, closing its open menus and dropping focus.
|
|
602
|
+
*/
|
|
603
|
+
const BlockErrorPill = t0 => {
|
|
604
|
+
const $ = _c(3);
|
|
605
|
+
const {
|
|
606
|
+
count
|
|
607
|
+
} = t0;
|
|
608
|
+
const {
|
|
609
|
+
i18n
|
|
610
|
+
} = useTranslation();
|
|
611
|
+
let t1;
|
|
612
|
+
if ($[0] !== count || $[1] !== i18n) {
|
|
613
|
+
t1 = _jsx(ErrorPill, {
|
|
614
|
+
count,
|
|
615
|
+
i18n,
|
|
616
|
+
withMessage: true
|
|
617
|
+
});
|
|
618
|
+
$[0] = count;
|
|
619
|
+
$[1] = i18n;
|
|
620
|
+
$[2] = t1;
|
|
621
|
+
} else {
|
|
622
|
+
t1 = $[2];
|
|
623
|
+
}
|
|
624
|
+
return t1;
|
|
625
|
+
};
|
|
649
626
|
//# sourceMappingURL=index.js.map
|