@payloadcms/richtext-lexical 4.0.0-internal.a1317b2 → 4.0.0-internal.a2d053c
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-BEKGION5.js +2 -0
- package/dist/exports/client/chunk-BEKGION5.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-FAJJXXCW.js.map +7 -0
- 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/chunk-SE5IITBK.js +2 -0
- package/dist/exports/client/chunk-SE5IITBK.js.map +7 -0
- package/dist/exports/client/{component-D5QLYS7W.js → component-QENB4QTS.js} +2 -2
- package/dist/exports/client/componentInline-AU7IBNY7.js +2 -0
- package/dist/exports/client/index.js +28 -28
- package/dist/exports/client/index.js.map +4 -4
- 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/BlockReordering/index.d.ts +11 -0
- package/dist/features/blocks/client/component/BlockReordering/index.d.ts.map +1 -0
- package/dist/features/blocks/client/component/BlockReordering/index.js +18 -0
- package/dist/features/blocks/client/component/BlockReordering/index.js.map +1 -0
- 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 +0 -6
- package/dist/features/blocks/client/component/index.d.ts.map +1 -1
- package/dist/features/blocks/client/component/index.js +199 -109
- package/dist/features/blocks/client/component/index.js.map +1 -1
- package/dist/features/blocks/client/component/useBlockReordering.d.ts +16 -0
- package/dist/features/blocks/client/component/useBlockReordering.d.ts.map +1 -0
- package/dist/features/blocks/client/component/useBlockReordering.js +178 -0
- package/dist/features/blocks/client/component/useBlockReordering.js.map +1 -0
- 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.css +0 -1
- package/dist/features/blocks/client/componentInline/index.d.ts.map +1 -1
- package/dist/features/blocks/client/componentInline/index.js +32 -30
- package/dist/features/blocks/client/componentInline/index.js.map +1 -1
- package/dist/features/blocks/client/getCachedFormStateIfDataMatches.d.ts +9 -0
- package/dist/features/blocks/client/getCachedFormStateIfDataMatches.d.ts.map +1 -0
- package/dist/features/blocks/client/getCachedFormStateIfDataMatches.js +95 -0
- package/dist/features/blocks/client/getCachedFormStateIfDataMatches.js.map +1 -0
- package/dist/features/blocks/client/nodes/BlocksNode.d.ts.map +1 -1
- package/dist/features/blocks/client/nodes/BlocksNode.js +0 -10
- package/dist/features/blocks/client/nodes/BlocksNode.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/blocks/server/nodes/BlocksNode.d.ts.map +1 -1
- package/dist/features/blocks/server/nodes/BlocksNode.js +1 -12
- package/dist/features/blocks/server/nodes/BlocksNode.js.map +1 -1
- package/dist/features/blocks/server/nodes/InlineBlocksNode.js +2 -2
- package/dist/features/blocks/server/nodes/InlineBlocksNode.js.map +1 -1
- package/dist/features/blocks/server/schema.d.ts +2 -0
- package/dist/features/blocks/server/schema.d.ts.map +1 -1
- package/dist/features/blocks/server/schema.js +7 -9
- package/dist/features/blocks/server/schema.js.map +1 -1
- package/dist/features/blocks/server/validate.js +1 -1
- package/dist/features/blocks/server/validate.js.map +1 -1
- package/dist/features/converters/lexicalToHtml/async/converters/heading.js +1 -1
- package/dist/features/converters/lexicalToHtml/async/converters/heading.js.map +1 -1
- package/dist/features/converters/lexicalToHtml/async/converters/list.d.ts.map +1 -1
- package/dist/features/converters/lexicalToHtml/async/converters/list.js +4 -3
- package/dist/features/converters/lexicalToHtml/async/converters/list.js.map +1 -1
- package/dist/features/converters/lexicalToHtml/async/converters/upload.js +3 -3
- package/dist/features/converters/lexicalToHtml/async/converters/upload.js.map +1 -1
- package/dist/features/converters/lexicalToHtml/sync/converters/heading.js +1 -1
- package/dist/features/converters/lexicalToHtml/sync/converters/heading.js.map +1 -1
- package/dist/features/converters/lexicalToHtml/sync/converters/list.d.ts.map +1 -1
- package/dist/features/converters/lexicalToHtml/sync/converters/list.js +4 -3
- package/dist/features/converters/lexicalToHtml/sync/converters/list.js.map +1 -1
- package/dist/features/converters/lexicalToHtml/sync/converters/upload.js +3 -3
- 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/heading.d.ts.map +1 -1
- package/dist/features/converters/lexicalToJSX/converter/converters/heading.js +2 -1
- package/dist/features/converters/lexicalToJSX/converter/converters/heading.js.map +1 -1
- package/dist/features/converters/lexicalToJSX/converter/converters/list.d.ts.map +1 -1
- package/dist/features/converters/lexicalToJSX/converter/converters/list.js +2 -1
- package/dist/features/converters/lexicalToJSX/converter/converters/list.js.map +1 -1
- package/dist/features/converters/lexicalToJSX/converter/converters/upload.d.ts.map +1 -1
- package/dist/features/converters/lexicalToJSX/converter/converters/upload.js +4 -5
- package/dist/features/converters/lexicalToJSX/converter/converters/upload.js.map +1 -1
- package/dist/features/converters/utilities/payloadPopulateFn.d.ts.map +1 -1
- package/dist/features/converters/utilities/payloadPopulateFn.js +4 -2
- package/dist/features/converters/utilities/payloadPopulateFn.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/heading/constants.d.ts +2 -0
- package/dist/features/heading/constants.d.ts.map +1 -0
- package/dist/features/heading/constants.js +2 -0
- package/dist/features/heading/constants.js.map +1 -0
- package/dist/features/heading/server/index.d.ts.map +1 -1
- package/dist/features/heading/server/index.js +5 -1
- package/dist/features/heading/server/index.js.map +1 -1
- package/dist/features/heading/server/validate.d.ts +6 -0
- package/dist/features/heading/server/validate.d.ts.map +1 -0
- package/dist/features/heading/server/validate.js +15 -0
- package/dist/features/heading/server/validate.js.map +1 -0
- package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.d.ts +11 -1
- package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.d.ts.map +1 -1
- package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.js +17 -0
- package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.js.map +1 -1
- package/dist/features/horizontalRule/client/plugin/index.js.map +1 -1
- package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js +2 -2
- package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js.map +1 -1
- package/dist/features/horizontalRule/server/schema.d.ts +1 -0
- package/dist/features/horizontalRule/server/schema.d.ts.map +1 -1
- package/dist/features/horizontalRule/server/schema.js +6 -5
- package/dist/features/horizontalRule/server/schema.js.map +1 -1
- package/dist/features/indent/client/IndentPlugin.d.ts.map +1 -1
- package/dist/features/indent/client/IndentPlugin.js +122 -1
- package/dist/features/indent/client/IndentPlugin.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 +74 -37
- 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 +18 -7
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
- package/dist/features/link/client/plugins/floatingLinkEditor/index.css +0 -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/nodes/AutoLinkNode.d.ts.map +1 -1
- package/dist/features/link/nodes/AutoLinkNode.js +2 -10
- package/dist/features/link/nodes/AutoLinkNode.js.map +1 -1
- package/dist/features/link/nodes/LinkNode.d.ts.map +1 -1
- package/dist/features/link/nodes/LinkNode.js +2 -15
- package/dist/features/link/nodes/LinkNode.js.map +1 -1
- package/dist/features/link/server/baseFields.js.map +1 -1
- package/dist/features/link/server/validate.js +1 -1
- package/dist/features/link/server/validate.js.map +1 -1
- package/dist/features/lists/checklist/server/index.d.ts.map +1 -1
- package/dist/features/lists/checklist/server/index.js +5 -2
- package/dist/features/lists/checklist/server/index.js.map +1 -1
- package/dist/features/lists/orderedList/server/index.d.ts.map +1 -1
- package/dist/features/lists/orderedList/server/index.js +5 -2
- package/dist/features/lists/orderedList/server/index.js.map +1 -1
- package/dist/features/lists/shared/constants.d.ts +2 -0
- package/dist/features/lists/shared/constants.d.ts.map +1 -0
- package/dist/features/lists/shared/constants.js +2 -0
- package/dist/features/lists/shared/constants.js.map +1 -0
- package/dist/features/lists/shared/schema.d.ts.map +1 -1
- package/dist/features/lists/shared/schema.js.map +1 -1
- package/dist/features/lists/shared/validate.d.ts +5 -0
- package/dist/features/lists/shared/validate.d.ts.map +1 -0
- package/dist/features/lists/shared/validate.js +15 -0
- package/dist/features/lists/shared/validate.js.map +1 -0
- package/dist/features/lists/unorderedList/server/index.d.ts.map +1 -1
- package/dist/features/lists/unorderedList/server/index.js +5 -2
- package/dist/features/lists/unorderedList/server/index.js.map +1 -1
- package/dist/features/relationship/client/components/index.css +3 -6
- package/dist/features/relationship/client/drawer/index.js.map +1 -1
- package/dist/features/relationship/client/index.d.ts +2 -2
- package/dist/features/relationship/client/index.d.ts.map +1 -1
- package/dist/features/relationship/client/index.js.map +1 -1
- package/dist/features/relationship/client/nodes/RelationshipNode.d.ts.map +1 -1
- package/dist/features/relationship/client/nodes/RelationshipNode.js +0 -3
- package/dist/features/relationship/client/nodes/RelationshipNode.js.map +1 -1
- package/dist/features/relationship/client/plugins/index.d.ts +2 -2
- package/dist/features/relationship/client/plugins/index.d.ts.map +1 -1
- package/dist/features/relationship/client/plugins/index.js +27 -31
- package/dist/features/relationship/client/plugins/index.js.map +1 -1
- package/dist/features/relationship/client/utils/useEnabledRelationships.d.ts +2 -4
- package/dist/features/relationship/client/utils/useEnabledRelationships.d.ts.map +1 -1
- package/dist/features/relationship/client/utils/useEnabledRelationships.js +53 -20
- package/dist/features/relationship/client/utils/useEnabledRelationships.js.map +1 -1
- package/dist/features/relationship/server/graphQLPopulationPromise.d.ts +2 -2
- package/dist/features/relationship/server/graphQLPopulationPromise.d.ts.map +1 -1
- package/dist/features/relationship/server/graphQLPopulationPromise.js +2 -2
- package/dist/features/relationship/server/graphQLPopulationPromise.js.map +1 -1
- package/dist/features/relationship/server/index.d.ts +8 -1
- package/dist/features/relationship/server/index.d.ts.map +1 -1
- package/dist/features/relationship/server/index.js +28 -11
- package/dist/features/relationship/server/index.js.map +1 -1
- package/dist/features/relationship/server/nodes/RelationshipNode.d.ts.map +1 -1
- package/dist/features/relationship/server/nodes/RelationshipNode.js +1 -5
- package/dist/features/relationship/server/nodes/RelationshipNode.js.map +1 -1
- package/dist/features/relationship/server/schema.d.ts +3 -2
- package/dist/features/relationship/server/schema.d.ts.map +1 -1
- package/dist/features/relationship/server/schema.js +9 -12
- package/dist/features/relationship/server/schema.js.map +1 -1
- package/dist/features/relationship/shared/filterEnabledRelationshipCollections.d.ts +1 -6
- package/dist/features/relationship/shared/filterEnabledRelationshipCollections.d.ts.map +1 -1
- package/dist/features/relationship/shared/filterEnabledRelationshipCollections.js +1 -5
- package/dist/features/relationship/shared/filterEnabledRelationshipCollections.js.map +1 -1
- package/dist/features/table/client/plugins/TableActionMenuPlugin/computeSelectionCount.d.ts +8 -0
- package/dist/features/table/client/plugins/TableActionMenuPlugin/computeSelectionCount.d.ts.map +1 -0
- package/dist/features/table/client/plugins/TableActionMenuPlugin/computeSelectionCount.js +19 -0
- package/dist/features/table/client/plugins/TableActionMenuPlugin/computeSelectionCount.js.map +1 -0
- package/dist/features/table/client/plugins/TableActionMenuPlugin/index.css +1 -2
- package/dist/features/table/client/plugins/TableActionMenuPlugin/index.d.ts.map +1 -1
- package/dist/features/table/client/plugins/TableActionMenuPlugin/index.js +17 -44
- package/dist/features/table/client/plugins/TableActionMenuPlugin/index.js.map +1 -1
- package/dist/features/table/client/plugins/TableCellResizerPlugin/index.d.ts.map +1 -1
- package/dist/features/table/client/plugins/TableCellResizerPlugin/index.js +47 -24
- 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/TableGridPopup/index.css +0 -3
- 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/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.d.ts.map +1 -1
- package/dist/features/toolbars/fixed/client/Toolbar/index.js +141 -70
- package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -1
- package/dist/features/toolbars/inline/client/Toolbar/index.d.ts.map +1 -1
- package/dist/features/toolbars/inline/client/Toolbar/index.js +84 -37
- 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 +27 -2
- package/dist/features/toolbars/shared/ToolbarButton/index.js.map +1 -1
- package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts.map +1 -1
- package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js +199 -81
- package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -1
- package/dist/features/toolbars/shared/ToolbarDropdown/index.css +16 -12
- 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.d.ts +5 -0
- package/dist/features/toolbars/shared/useToolbarKeyboardNavigation.d.ts.map +1 -0
- package/dist/features/toolbars/shared/useToolbarKeyboardNavigation.js +109 -0
- package/dist/features/toolbars/shared/useToolbarKeyboardNavigation.js.map +1 -0
- package/dist/features/typesServer.d.ts +16 -11
- 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 +0 -2
- package/dist/features/upload/client/drawer/index.js.map +1 -1
- package/dist/features/upload/client/index.d.ts +3 -2
- package/dist/features/upload/client/index.d.ts.map +1 -1
- package/dist/features/upload/client/index.js.map +1 -1
- package/dist/features/upload/client/nodes/UploadNode.d.ts.map +1 -1
- package/dist/features/upload/client/nodes/UploadNode.js +0 -7
- package/dist/features/upload/client/nodes/UploadNode.js.map +1 -1
- package/dist/features/upload/client/plugin/index.d.ts.map +1 -1
- package/dist/features/upload/client/plugin/index.js +50 -53
- package/dist/features/upload/client/plugin/index.js.map +1 -1
- package/dist/features/upload/server/graphQLPopulationPromise.d.ts +2 -2
- package/dist/features/upload/server/graphQLPopulationPromise.d.ts.map +1 -1
- package/dist/features/upload/server/graphQLPopulationPromise.js +1 -1
- package/dist/features/upload/server/graphQLPopulationPromise.js.map +1 -1
- package/dist/features/upload/server/index.d.ts +7 -3
- package/dist/features/upload/server/index.d.ts.map +1 -1
- package/dist/features/upload/server/index.js +18 -14
- package/dist/features/upload/server/index.js.map +1 -1
- package/dist/features/upload/server/nodes/UploadNode.d.ts.map +1 -1
- package/dist/features/upload/server/nodes/UploadNode.js +1 -9
- package/dist/features/upload/server/nodes/UploadNode.js.map +1 -1
- package/dist/features/upload/server/schema.d.ts +4 -16
- package/dist/features/upload/server/schema.d.ts.map +1 -1
- package/dist/features/upload/server/schema.js +8 -10
- package/dist/features/upload/server/schema.js.map +1 -1
- package/dist/features/upload/server/validate.d.ts +2 -2
- package/dist/features/upload/server/validate.d.ts.map +1 -1
- package/dist/features/upload/server/validate.js +4 -1
- package/dist/features/upload/server/validate.js.map +1 -1
- package/dist/field/Diff/converters/listitem/index.d.ts.map +1 -1
- package/dist/field/Diff/converters/listitem/index.js +2 -1
- package/dist/field/Diff/converters/listitem/index.js.map +1 -1
- package/dist/field/Diff/converters/relationship/index.css +0 -1
- package/dist/field/Diff/converters/unknown/index.css +0 -1
- package/dist/field/Diff/converters/upload/index.css +0 -1
- package/dist/field/Diff/converters/upload/index.js.map +1 -1
- package/dist/field/Diff/index.css +0 -2
- package/dist/field/Diff/index.d.ts +3 -2
- package/dist/field/Diff/index.d.ts.map +1 -1
- package/dist/field/Diff/index.js +3 -2
- package/dist/field/Diff/index.js.map +1 -1
- package/dist/field/Field.d.ts.map +1 -1
- package/dist/field/Field.js +8 -1
- package/dist/field/Field.js.map +1 -1
- package/dist/field/RenderLexical/index.d.ts +3 -1
- package/dist/field/RenderLexical/index.d.ts.map +1 -1
- package/dist/field/RenderLexical/index.js +23 -23
- package/dist/field/RenderLexical/index.js.map +1 -1
- package/dist/field/ViewSelector.d.ts.map +1 -1
- package/dist/field/ViewSelector.js +13 -4
- package/dist/field/ViewSelector.js.map +1 -1
- package/dist/field/bundled.css +1 -1
- package/dist/field/index.css +0 -1
- package/dist/field/index.js.map +1 -1
- package/dist/field/rscEntry.d.ts +2 -2
- package/dist/field/rscEntry.d.ts.map +1 -1
- package/dist/field/rscEntry.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 +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -1
- package/dist/index.js.map +1 -1
- package/dist/lexical/LexicalEditor.css +21 -10
- package/dist/lexical/LexicalEditor.d.ts.map +1 -1
- package/dist/lexical/LexicalEditor.js +61 -64
- package/dist/lexical/LexicalEditor.js.map +1 -1
- package/dist/lexical/plugins/ClipboardPlugin/index.js.map +1 -1
- package/dist/lexical/plugins/DecoratorPlugin/index.d.ts.map +1 -1
- package/dist/lexical/plugins/DecoratorPlugin/index.js +24 -21
- package/dist/lexical/plugins/DecoratorPlugin/index.js.map +1 -1
- package/dist/lexical/plugins/InsertParagraphAtEnd/index.css +2 -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 +235 -88
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
- package/dist/lexical/plugins/SlashMenu/index.css +0 -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.css +1 -0
- package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js +2 -2
- package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.css +17 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.d.ts.map +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js +139 -37
- 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 +7 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/useKeyboardReordering.d.ts.map +1 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/useKeyboardReordering.js +62 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/useKeyboardReordering.js.map +1 -0
- package/dist/lexical/plugins/handles/utils/setHandlePosition.d.ts.map +1 -1
- package/dist/lexical/plugins/handles/utils/setHandlePosition.js +2 -0
- package/dist/lexical/plugins/handles/utils/setHandlePosition.js.map +1 -1
- package/dist/lexical/theme/EditorTheme.css +0 -2
- package/dist/lexical/ui/ContentEditable.d.ts +2 -1
- package/dist/lexical/ui/ContentEditable.d.ts.map +1 -1
- package/dist/lexical/ui/ContentEditable.js +32 -11
- package/dist/lexical/ui/ContentEditable.js.map +1 -1
- package/dist/lexical/ui/icons/H3/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/H3/index.js +13 -6
- package/dist/lexical/ui/icons/H3/index.js.map +1 -1
- package/dist/lexical/ui/icons/H4/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/H4/index.js +13 -6
- package/dist/lexical/ui/icons/H4/index.js.map +1 -1
- package/dist/lexical/ui/icons/H5/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/H5/index.js +13 -6
- package/dist/lexical/ui/icons/H5/index.js.map +1 -1
- package/dist/lexical/ui/icons/H6/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/H6/index.js +13 -6
- package/dist/lexical/ui/icons/H6/index.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.js.map +1 -1
- package/dist/presets/llmInstructions.d.ts +2 -0
- package/dist/presets/llmInstructions.d.ts.map +1 -0
- package/dist/presets/llmInstructions.js +13 -0
- package/dist/presets/llmInstructions.js.map +1 -0
- package/dist/types/builtInNodes.d.ts +1 -1
- package/dist/types/builtInNodes.d.ts.map +1 -1
- package/dist/types/builtInNodes.js +8 -3
- package/dist/types/builtInNodes.js.map +1 -1
- package/dist/types/index.d.ts +3 -6
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/jsonSchemaHelpers.d.ts +5 -1
- package/dist/types/jsonSchemaHelpers.d.ts.map +1 -1
- package/dist/types/jsonSchemaHelpers.js +7 -2
- package/dist/types/jsonSchemaHelpers.js.map +1 -1
- package/dist/types/nodeTypes.d.ts +5 -0
- package/dist/types/nodeTypes.d.ts.map +1 -1
- package/dist/types/nodeTypes.js.map +1 -1
- package/dist/utilities/buildEditorState.d.ts.map +1 -1
- package/dist/utilities/buildEditorState.js.map +1 -1
- package/dist/utilities/buildInitialState.d.ts +3 -2
- package/dist/utilities/buildInitialState.d.ts.map +1 -1
- package/dist/utilities/buildInitialState.js +1 -0
- package/dist/utilities/buildInitialState.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 +6 -9
- 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/generateImportMap.d.ts +2 -2
- package/dist/utilities/generateImportMap.d.ts.map +1 -1
- package/dist/utilities/generateImportMap.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/upgradeLexicalData/index.js +6 -3
- package/dist/utilities/upgradeLexicalData/index.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/dist/validate/hasText.d.ts +2 -2
- package/dist/validate/hasText.d.ts.map +1 -1
- package/dist/validate/hasText.js.map +1 -1
- package/dist/validate/index.d.ts +1 -1
- package/dist/validate/index.d.ts.map +1 -1
- package/package.json +50 -53
- package/dist/dependencyChecker.spec.js +0 -16
- package/dist/dependencyChecker.spec.js.map +0 -1
- package/dist/exports/client/Field-F22V5L4V.js +0 -2
- package/dist/exports/client/Field-F22V5L4V.js.map +0 -7
- package/dist/exports/client/bundled.css +0 -1
- package/dist/exports/client/chunk-43E5QYAA.js +0 -2
- package/dist/exports/client/chunk-43E5QYAA.js.map +0 -7
- package/dist/exports/client/chunk-ESITTE3C.js +0 -2
- package/dist/exports/client/chunk-ESITTE3C.js.map +0 -7
- package/dist/exports/client/chunk-LN6VX25I.js +0 -2
- package/dist/exports/client/chunk-LN6VX25I.js.map +0 -7
- package/dist/exports/client/componentInline-H24N7GUG.js +0 -2
- package/dist/features/blocks/client/component/removeEmptyArrayValues.d.ts +0 -11
- package/dist/features/blocks/client/component/removeEmptyArrayValues.d.ts.map +0 -1
- package/dist/features/blocks/client/component/removeEmptyArrayValues.js +0 -20
- package/dist/features/blocks/client/component/removeEmptyArrayValues.js.map +0 -1
- package/dist/features/converters/lexicalToHtml/sync/alignment.spec.js +0 -92
- package/dist/features/converters/lexicalToHtml/sync/alignment.spec.js.map +0 -1
- package/dist/features/converters/lexicalToPlaintext/convertLexicalToPlaintext.spec.js +0 -180
- package/dist/features/converters/lexicalToPlaintext/convertLexicalToPlaintext.spec.js.map +0 -1
- package/dist/features/link/markdownTransformer.spec.js +0 -195
- package/dist/features/link/markdownTransformer.spec.js.map +0 -1
- package/dist/features/toolbars/fixed/client/Toolbar/horizontalWheelScroll.spec.js +0 -65
- package/dist/features/toolbars/fixed/client/Toolbar/horizontalWheelScroll.spec.js.map +0 -1
- package/dist/lexical/utils/markdown/convertFromMarkdownString.spec.js +0 -88
- package/dist/lexical/utils/markdown/convertFromMarkdownString.spec.js.map +0 -1
- package/dist/lexical/utils/url.spec.js +0 -114
- package/dist/lexical/utils/url.spec.js.map +0 -1
- package/dist/utilities/jsx/jsx.spec.js +0 -178
- package/dist/utilities/jsx/jsx.spec.js.map +0 -1
- /package/dist/exports/client/{RelationshipComponent-YCPAKOL7.js.map → RelationshipComponent-TVK6I4W4.js.map} +0 -0
- /package/dist/exports/client/{component-D5QLYS7W.js.map → component-QENB4QTS.js.map} +0 -0
- /package/dist/exports/client/{componentInline-H24N7GUG.js.map → componentInline-AU7IBNY7.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","$findMatchingParent","$insertNodeToNearestRoot","$getRoot","$getSelection","$isRangeSelection","$isRootOrShadowRoot","COMMAND_PRIORITY_EDITOR","useEffect","INSERT_HORIZONTAL_RULE_COMMAND","$createHorizontalRuleNode","$isHorizontalRuleNode","HR_SELECTED_CLASS","HorizontalRulePlugin","$","editor","t0","t1","unregisterCommand","registerCommand","_temp","unregisterUpdateListener","registerUpdateListener","t2","editorState","read","root","children","getChildren","selection_0","hrEntries","i","length","child","element","getElementByKey","getKey","push","index","selection","isCollapsed","element_0","classList","remove","anchorNode","anchor","getNode","focusNode_0","focus","anchorTopLevel","_temp2","focusTopLevel","focusNode","_temp3","anchorIdx","indexOf","focusIdx","startIdx","Math","min","endIdx","max","element_1","add","type","horizontalRuleNode","n","getParent","n_0"],"sources":["../../../../../src/features/horizontalRule/client/plugin/index.tsx"],"sourcesContent":["'use client'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $findMatchingParent, $insertNodeToNearestRoot } from '@lexical/utils'\nimport {\n $getRoot,\n $getSelection,\n $isRangeSelection,\n $isRootOrShadowRoot,\n COMMAND_PRIORITY_EDITOR,\n} from 'lexical'\nimport { useEffect } from 'react'\n\nimport type { PluginComponent } from '../../../typesClient.js'\n\nimport { INSERT_HORIZONTAL_RULE_COMMAND } from '../../server/nodes/HorizontalRuleNode.js'\nimport { $createHorizontalRuleNode, $isHorizontalRuleNode } from '../nodes/HorizontalRuleNode.js'\nimport './index.css'\n\nconst HR_SELECTED_CLASS = 'LexicalEditorTheme__hrSelected'\n\n/**\n * Registers the INSERT_HORIZONTAL_RULE_COMMAND lexical command and defines the behavior for when it is called.\n */\nexport const HorizontalRulePlugin: PluginComponent<undefined> = () => {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n const unregisterCommand = editor.registerCommand(\n INSERT_HORIZONTAL_RULE_COMMAND,\n (type) => {\n const selection = $getSelection()\n\n if (!$isRangeSelection(selection)) {\n return false\n }\n\n const focusNode = selection.focus.getNode()\n\n if (focusNode !== null) {\n const horizontalRuleNode = $createHorizontalRuleNode()\n $insertNodeToNearestRoot(horizontalRuleNode)\n }\n\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n )\n\n const unregisterUpdateListener = editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n const root = $getRoot()\n const children = root.getChildren()\n const selection = $getSelection()\n\n // Collect all HR nodes and their elements\n const hrEntries: Array<{ element: HTMLElement; index: number }> = []\n for (let i = 0; i < children.length; i++) {\n const child = children[i]\n if ($isHorizontalRuleNode(child)) {\n const element = editor.getElementByKey(child.getKey())\n if (element) {\n hrEntries.push({ element, index: i })\n }\n }\n }\n\n if (hrEntries.length === 0) {\n return\n }\n\n if (!$isRangeSelection(selection) || selection.isCollapsed()) {\n // Remove range-selection highlighting from all HRs\n for (const { element } of hrEntries) {\n element.classList.remove(HR_SELECTED_CLASS)\n }\n return\n }\n\n const anchorNode = selection.anchor.getNode()\n const focusNode = selection.focus.getNode()\n\n const anchorTopLevel =\n $findMatchingParent(anchorNode, (n) => $isRootOrShadowRoot(n.getParent())) || anchorNode\n const focusTopLevel =\n $findMatchingParent(focusNode, (n) => $isRootOrShadowRoot(n.getParent())) || focusNode\n\n const anchorIdx = children.indexOf(anchorTopLevel)\n const focusIdx = children.indexOf(focusTopLevel)\n\n if (anchorIdx === -1 || focusIdx === -1) {\n return\n }\n\n const startIdx = Math.min(anchorIdx, focusIdx)\n const endIdx = Math.max(anchorIdx, focusIdx)\n\n for (const { element, index } of hrEntries) {\n if (index >= startIdx && index <= endIdx) {\n element.classList.add(HR_SELECTED_CLASS)\n } else {\n element.classList.remove(HR_SELECTED_CLASS)\n }\n }\n })\n })\n\n return () => {\n unregisterCommand()\n unregisterUpdateListener()\n }\n }, [editor])\n\n return null\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAEA,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,mBAAmB,EAAEC,wBAAwB,QAAQ;AAC9D,SACEC,QAAQ,EACRC,aAAa,EACbC,iBAAiB,EACjBC,mBAAmB,EACnBC,uBAAuB,QAClB;AACP,SAASC,SAAS,QAAQ;AAI1B,SAASC,8BAA8B,QAAQ;AAC/C,SAASC,yBAAyB,EAAEC,qBAAqB,QAAQ;AACjE,OAAO;AAEP,MAAMC,iBAAA,GAAoB;AAE1B;;;AAGA,OAAO,MAAMC,oBAAA,GAAmDA,CAAA;EAAA,MAAAC,CAAA,GAAAf,EAAA;EAC9D,OAAAgB,MAAA,IAAiBf,yBAAA;EAAA,IAAAgB,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAH,CAAA,QAAAC,MAAA;IAEPC,EAAA,GAAAA,CAAA;MACR,MAAAE,iBAAA,GAA0BH,MAAA,CAAAI,
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","$findMatchingParent","$insertNodeToNearestRoot","$getRoot","$getSelection","$isRangeSelection","$isRootOrShadowRoot","COMMAND_PRIORITY_EDITOR","useEffect","INSERT_HORIZONTAL_RULE_COMMAND","$createHorizontalRuleNode","$isHorizontalRuleNode","HR_SELECTED_CLASS","HorizontalRulePlugin","$","editor","t0","t1","unregisterCommand","registerCommand","_temp","unregisterUpdateListener","registerUpdateListener","t2","editorState","read","root","children","getChildren","selection_0","hrEntries","i","length","child","element","getElementByKey","getKey","push","index","selection","isCollapsed","element_0","classList","remove","anchorNode","anchor","getNode","focusNode_0","focus","anchorTopLevel","_temp2","focusTopLevel","focusNode","_temp3","anchorIdx","indexOf","focusIdx","startIdx","Math","min","endIdx","max","element_1","add","type","horizontalRuleNode","n","getParent","n_0"],"sources":["../../../../../src/features/horizontalRule/client/plugin/index.tsx"],"sourcesContent":["'use client'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $findMatchingParent, $insertNodeToNearestRoot } from '@lexical/utils'\nimport {\n $getRoot,\n $getSelection,\n $isRangeSelection,\n $isRootOrShadowRoot,\n COMMAND_PRIORITY_EDITOR,\n} from 'lexical'\nimport { useEffect } from 'react'\n\nimport type { PluginComponent } from '../../../typesClient.js'\n\nimport { INSERT_HORIZONTAL_RULE_COMMAND } from '../../server/nodes/HorizontalRuleNode.js'\nimport { $createHorizontalRuleNode, $isHorizontalRuleNode } from '../nodes/HorizontalRuleNode.js'\nimport './index.css'\n\nconst HR_SELECTED_CLASS = 'LexicalEditorTheme__hrSelected'\n\n/**\n * Registers the INSERT_HORIZONTAL_RULE_COMMAND lexical command and defines the behavior for when it is called.\n */\nexport const HorizontalRulePlugin: PluginComponent<undefined> = () => {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n const unregisterCommand = editor.registerCommand(\n INSERT_HORIZONTAL_RULE_COMMAND,\n (type) => {\n const selection = $getSelection()\n\n if (!$isRangeSelection(selection)) {\n return false\n }\n\n const focusNode = selection.focus.getNode()\n\n if (focusNode !== null) {\n const horizontalRuleNode = $createHorizontalRuleNode()\n $insertNodeToNearestRoot(horizontalRuleNode)\n }\n\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n )\n\n const unregisterUpdateListener = editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n const root = $getRoot()\n const children = root.getChildren()\n const selection = $getSelection()\n\n // Collect all HR nodes and their elements\n const hrEntries: Array<{ element: HTMLElement; index: number }> = []\n for (let i = 0; i < children.length; i++) {\n const child = children[i]\n if ($isHorizontalRuleNode(child)) {\n const element = editor.getElementByKey(child.getKey())\n if (element) {\n hrEntries.push({ element, index: i })\n }\n }\n }\n\n if (hrEntries.length === 0) {\n return\n }\n\n if (!$isRangeSelection(selection) || selection.isCollapsed()) {\n // Remove range-selection highlighting from all HRs\n for (const { element } of hrEntries) {\n element.classList.remove(HR_SELECTED_CLASS)\n }\n return\n }\n\n const anchorNode = selection.anchor.getNode()\n const focusNode = selection.focus.getNode()\n\n const anchorTopLevel =\n $findMatchingParent(anchorNode, (n) => $isRootOrShadowRoot(n.getParent())) || anchorNode\n const focusTopLevel =\n $findMatchingParent(focusNode, (n) => $isRootOrShadowRoot(n.getParent())) || focusNode\n\n const anchorIdx = children.indexOf(anchorTopLevel)\n const focusIdx = children.indexOf(focusTopLevel)\n\n if (anchorIdx === -1 || focusIdx === -1) {\n return\n }\n\n const startIdx = Math.min(anchorIdx, focusIdx)\n const endIdx = Math.max(anchorIdx, focusIdx)\n\n for (const { element, index } of hrEntries) {\n if (index >= startIdx && index <= endIdx) {\n element.classList.add(HR_SELECTED_CLASS)\n } else {\n element.classList.remove(HR_SELECTED_CLASS)\n }\n }\n })\n })\n\n return () => {\n unregisterCommand()\n unregisterUpdateListener()\n }\n }, [editor])\n\n return null\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HorizontalRuleNode.js","names":["addClassNamesToElement","$applyNodeReplacement","createCommand","DecoratorNode","INSERT_HORIZONTAL_RULE_COMMAND","HorizontalRuleServerNode","clone","node","__key","getType","importDOM","hr","conversion","$convertHorizontalRuleElement","priority","importJSON","_serializedNode","$createHorizontalRuleServerNode","createDOM","config","element","document","createElement","theme","decorate","exportDOM","exportJSON","type","
|
|
1
|
+
{"version":3,"file":"HorizontalRuleNode.js","names":["addClassNamesToElement","$applyNodeReplacement","createCommand","DecoratorNode","INSERT_HORIZONTAL_RULE_COMMAND","HorizontalRuleServerNode","clone","node","__key","getType","importDOM","hr","conversion","$convertHorizontalRuleElement","priority","importJSON","_serializedNode","$createHorizontalRuleServerNode","createDOM","config","element","document","createElement","theme","decorate","exportDOM","exportJSON","type","getTextContent","isInline","updateDOM","$isHorizontalRuleServerNode"],"sources":["../../../../../src/features/horizontalRule/server/nodes/HorizontalRuleNode.tsx"],"sourcesContent":["import type {\n DOMConversionMap,\n DOMConversionOutput,\n DOMExportOutput,\n EditorConfig,\n LexicalCommand,\n LexicalNode,\n SerializedLexicalNode,\n} from 'lexical'\nimport type * as React from 'react'\n\nimport { addClassNamesToElement } from '@lexical/utils'\nimport { $applyNodeReplacement, createCommand, DecoratorNode } from 'lexical'\n\nimport type { SerializedHorizontalRuleNode } from '../schema.js'\n\nexport const INSERT_HORIZONTAL_RULE_COMMAND: LexicalCommand<void> = createCommand(\n 'INSERT_HORIZONTAL_RULE_COMMAND',\n)\n\n/**\n * This node is a DecoratorNode. DecoratorNodes allow you to render React components in the editor.\n *\n * They need both createDom and decorate functions. createDom => outside of the html. decorate => React Component inside of the html.\n *\n * If we used DecoratorBlockNode instead, we would only need a decorate method\n */\nexport class HorizontalRuleServerNode extends DecoratorNode<null | React.ReactElement> {\n static override clone(node: HorizontalRuleServerNode): HorizontalRuleServerNode {\n return new this(node.__key)\n }\n\n static override getType(): string {\n return 'horizontalrule'\n }\n\n /**\n * Defines what happens if you copy an hr element from another page and paste it into the lexical editor\n *\n * This also determines the behavior of lexical's internal HTML -> Lexical converter\n */\n static override importDOM(): DOMConversionMap | null {\n return {\n hr: () => ({\n conversion: $convertHorizontalRuleElement,\n priority: 0,\n }),\n }\n }\n\n /**\n * The data for this node is stored serialized as JSON. This is the \"load function\" of that node: it takes the saved data and converts it into a node.\n */\n static override importJSON(\n _serializedNode: Record<string, unknown> & SerializedHorizontalRuleNode,\n ): HorizontalRuleServerNode {\n return $createHorizontalRuleServerNode()\n }\n\n /**\n * Determines how the hr element is rendered in the lexical editor. This is only the \"initial\" / \"outer\" HTML element.\n */\n override createDOM(config: EditorConfig): HTMLElement {\n const element = document.createElement('hr')\n addClassNamesToElement(element, config.theme.hr)\n return element\n }\n\n override decorate(): null | React.ReactElement {\n return null\n }\n\n /**\n * Opposite of importDOM, this function defines what happens when you copy an hr element from the lexical editor and paste it into another page.\n *\n * This also determines the behavior of lexical's internal Lexical -> HTML converter\n */\n override exportDOM(): DOMExportOutput {\n return { element: document.createElement('hr') }\n }\n /**\n * Opposite of importJSON. This determines what data is saved in the database / in the lexical editor state.\n */\n override exportJSON(): SerializedLexicalNode {\n return {\n ...super.exportJSON(),\n type: 'horizontalrule',\n }\n }\n\n override getTextContent(): string {\n return '\\n'\n }\n\n override isInline(): false {\n return false\n }\n\n override updateDOM(): boolean {\n return false\n }\n}\n\nfunction $convertHorizontalRuleElement(): DOMConversionOutput {\n return { node: $createHorizontalRuleServerNode() }\n}\n\nexport function $createHorizontalRuleServerNode(): HorizontalRuleServerNode {\n return $applyNodeReplacement(new HorizontalRuleServerNode())\n}\n\nexport function $isHorizontalRuleServerNode(\n node: LexicalNode | null | undefined,\n): node is HorizontalRuleServerNode {\n return node instanceof HorizontalRuleServerNode\n}\n"],"mappings":"AAWA,SAASA,sBAAsB,QAAQ;AACvC,SAASC,qBAAqB,EAAEC,aAAa,EAAEC,aAAa,QAAQ;AAIpE,OAAO,MAAMC,8BAAA,GAAuDF,aAAA,CAClE;AAGF;;;;;;;AAOA,OAAO,MAAMG,wBAAA,SAAiCF,aAAA;EAC5C,OAAgBG,MAAMC,IAA8B,EAA4B;IAC9E,OAAO,IAAI,IAAI,CAACA,IAAA,CAAKC,KAAK;EAC5B;EAEA,OAAgBC,QAAA,EAAkB;IAChC,OAAO;EACT;EAEA;;;;;EAKA,OAAgBC,UAAA,EAAqC;IACnD,OAAO;MACLC,EAAA,EAAIA,CAAA,MAAO;QACTC,UAAA,EAAYC,6BAAA;QACZC,QAAA,EAAU;MACZ;IACF;EACF;EAEA;;;EAGA,OAAgBC,WACdC,eAAuE,EAC7C;IAC1B,OAAOC,+BAAA;EACT;EAEA;;;EAGAC,SAASA,CAAUC,MAAoB,EAAe;IACpD,MAAMC,OAAA,GAAUC,QAAA,CAASC,aAAa,CAAC;IACvCtB,sBAAA,CAAuBoB,OAAA,EAASD,MAAA,CAAOI,KAAK,CAACZ,EAAE;IAC/C,OAAOS,OAAA;EACT;EAESI,SAAA,EAAsC;IAC7C,OAAO;EACT;EAEA;;;;;EAKAC,SAASA,CAAA,EAA6B;IACpC,OAAO;MAAEL,OAAA,EAASC,QAAA,CAASC,aAAa,CAAC;IAAM;EACjD;EACA;;;EAGAI,UAASA,CAAA,EAAoC;IAC3C,OAAO;MACL,GAAG,KAAK,CAACA,UAAA,EAAY;MACrBC,IAAA,EAAM;IACR;EACF;EAESC,eAAA,EAAyB;IAChC,OAAO;EACT;EAESC,SAAA,EAAkB;IACzB,OAAO;EACT;EAESC,UAAA,EAAqB;IAC5B,OAAO;EACT;AACF;AAEA,SAASjB,8BAAA;EACP,OAAO;IAAEN,IAAA,EAAMU,+BAAA;EAAkC;AACnD;AAEA,OAAO,SAASA,gCAAA;EACd,OAAOhB,qBAAA,CAAsB,IAAII,wBAAA;AACnC;AAEA,OAAO,SAAS0B,4BACdxB,IAAoC;EAEpC,OAAOA,IAAA,YAAgBF,wBAAA;AACzB","ignoreList":[]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { JSONSchemaFn } from '../../typesServer.js';
|
|
2
2
|
export interface SerializedHorizontalRuleNode {
|
|
3
3
|
type: 'horizontalrule';
|
|
4
|
+
/** @deprecated Ignored when loading. Typed as required only to match Lexical's types: rich text sent through the API, CLI or MCP may not contain it. */
|
|
4
5
|
version: number;
|
|
5
6
|
}
|
|
6
7
|
export declare const horizontalRuleNodeJSONSchema: JSONSchemaFn;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/features/horizontalRule/server/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/features/horizontalRule/server/schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAIxD,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,gBAAgB,CAAA;IACtB,wJAAwJ;IACxJ,OAAO,EAAE,MAAM,CAAA;CAChB;AASD,eAAO,MAAM,4BAA4B,EAAE,YAY1C,CAAA"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import { versionSchema } from '../../../types/jsonSchemaHelpers.js';
|
|
2
|
+
/** MUST stay byte-for-byte in sync with the runtime `SerializedHorizontalRuleNode` declared above. */
|
|
3
|
+
const SERIALIZED_HORIZONTAL_RULE_NODE_TS = `export interface SerializedHorizontalRuleNode {
|
|
2
4
|
type: 'horizontalrule';
|
|
5
|
+
/** @deprecated Ignored when loading. Typed as required only to match Lexical's types: rich text sent through the API, CLI or MCP may not contain it. */
|
|
3
6
|
version: number;
|
|
4
7
|
}`;
|
|
5
8
|
export const horizontalRuleNodeJSONSchema = ({
|
|
@@ -14,11 +17,9 @@ export const horizontalRuleNodeJSONSchema = ({
|
|
|
14
17
|
type: 'string',
|
|
15
18
|
const: 'horizontalrule'
|
|
16
19
|
},
|
|
17
|
-
version:
|
|
18
|
-
type: 'integer'
|
|
19
|
-
}
|
|
20
|
+
version: versionSchema
|
|
20
21
|
},
|
|
21
|
-
required: ['type'
|
|
22
|
+
required: ['type'],
|
|
22
23
|
tsType: 'SerializedHorizontalRuleNode'
|
|
23
24
|
};
|
|
24
25
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","names":["SERIALIZED_HORIZONTAL_RULE_NODE_TS","horizontalRuleNodeJSONSchema","typeStringDefinitions","add","type","additionalProperties","properties","const","version","required","tsType"],"sources":["../../../../src/features/horizontalRule/server/schema.ts"],"sourcesContent":["import type { JSONSchemaFn } from '../../typesServer.js'\n\nexport interface SerializedHorizontalRuleNode {\n type: 'horizontalrule'\n version: number\n}\n\n/** MUST stay byte-for-byte in sync with the runtime `SerializedHorizontalRuleNode` declared above. */\nconst SERIALIZED_HORIZONTAL_RULE_NODE_TS = `export interface SerializedHorizontalRuleNode {\n type: 'horizontalrule';\n version: number;\n}`\n\nexport const horizontalRuleNodeJSONSchema: JSONSchemaFn = ({ typeStringDefinitions }) => {\n typeStringDefinitions.add(SERIALIZED_HORIZONTAL_RULE_NODE_TS)\n return {\n type: 'object',\n additionalProperties: false,\n properties: {\n type: { type: 'string', const: 'horizontalrule' },\n version:
|
|
1
|
+
{"version":3,"file":"schema.js","names":["versionSchema","SERIALIZED_HORIZONTAL_RULE_NODE_TS","horizontalRuleNodeJSONSchema","typeStringDefinitions","add","type","additionalProperties","properties","const","version","required","tsType"],"sources":["../../../../src/features/horizontalRule/server/schema.ts"],"sourcesContent":["import type { JSONSchemaFn } from '../../typesServer.js'\n\nimport { versionSchema } from '../../../types/jsonSchemaHelpers.js'\n\nexport interface SerializedHorizontalRuleNode {\n type: 'horizontalrule'\n /** @deprecated Ignored when loading. Typed as required only to match Lexical's types: rich text sent through the API, CLI or MCP may not contain it. */\n version: number\n}\n\n/** MUST stay byte-for-byte in sync with the runtime `SerializedHorizontalRuleNode` declared above. */\nconst SERIALIZED_HORIZONTAL_RULE_NODE_TS = `export interface SerializedHorizontalRuleNode {\n type: 'horizontalrule';\n /** @deprecated Ignored when loading. Typed as required only to match Lexical's types: rich text sent through the API, CLI or MCP may not contain it. */\n version: number;\n}`\n\nexport const horizontalRuleNodeJSONSchema: JSONSchemaFn = ({ typeStringDefinitions }) => {\n typeStringDefinitions.add(SERIALIZED_HORIZONTAL_RULE_NODE_TS)\n return {\n type: 'object',\n additionalProperties: false,\n properties: {\n type: { type: 'string', const: 'horizontalrule' },\n version: versionSchema,\n },\n required: ['type'],\n tsType: 'SerializedHorizontalRuleNode',\n }\n}\n"],"mappings":"AAEA,SAASA,aAAa,QAAQ;AAQ9B;AACA,MAAMC,kCAAA,GAAqC;;;;EAIzC;AAEF,OAAO,MAAMC,4BAAA,GAA6CA,CAAC;EAAEC;AAAqB,CAAE;EAClFA,qBAAA,CAAsBC,GAAG,CAACH,kCAAA;EAC1B,OAAO;IACLI,IAAA,EAAM;IACNC,oBAAA,EAAsB;IACtBC,UAAA,EAAY;MACVF,IAAA,EAAM;QAAEA,IAAA,EAAM;QAAUG,KAAA,EAAO;MAAiB;MAChDC,OAAA,EAAST;IACX;IACAU,QAAA,EAAU,CAAC,OAAO;IAClBC,MAAA,EAAQ;EACV;AACF","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndentPlugin.d.ts","sourceRoot":"","sources":["../../../../src/features/indent/client/IndentPlugin.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IndentPlugin.d.ts","sourceRoot":"","sources":["../../../../src/features/indent/client/IndentPlugin.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAE5D,eAAO,MAAM,YAAY,EAAE,eAAe,CAAC,kBAAkB,CAmO5D,CAAA"}
|
|
@@ -2,7 +2,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
|
|
3
3
|
import { TabIndentationPlugin } from '@lexical/react/LexicalTabIndentationPlugin';
|
|
4
4
|
import { $findMatchingParent, mergeRegister } from '@lexical/utils';
|
|
5
|
-
import { $getSelection, $isElementNode, $isRangeSelection, COMMAND_PRIORITY_LOW, INDENT_CONTENT_COMMAND, KEY_TAB_COMMAND, OUTDENT_CONTENT_COMMAND, TabNode } from 'lexical';
|
|
5
|
+
import { $addUpdateTag, $getSelection, $isElementNode, $isRangeSelection, $isRootOrShadowRoot, BLUR_COMMAND, COMMAND_PRIORITY_HIGH, COMMAND_PRIORITY_LOW, FOCUS_COMMAND, INDENT_CONTENT_COMMAND, KEY_ESCAPE_COMMAND, KEY_TAB_COMMAND, OUTDENT_CONTENT_COMMAND, SELECTION_CHANGE_COMMAND, SKIP_DOM_SELECTION_TAG, TabNode } from 'lexical';
|
|
6
6
|
import { useEffect } from 'react';
|
|
7
7
|
export const IndentPlugin = ({
|
|
8
8
|
clientProps
|
|
@@ -12,6 +12,127 @@ export const IndentPlugin = ({
|
|
|
12
12
|
disabledNodes,
|
|
13
13
|
disableTabNode
|
|
14
14
|
} = clientProps;
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
let canTabOut = false;
|
|
17
|
+
let hasTabbedOut = false;
|
|
18
|
+
const resetTabExit = () => {
|
|
19
|
+
canTabOut = false;
|
|
20
|
+
};
|
|
21
|
+
let restoreTabIndexes;
|
|
22
|
+
let restoreTabTimer;
|
|
23
|
+
let rootEvents;
|
|
24
|
+
function resetKeyboardExit() {
|
|
25
|
+
resetTabExit();
|
|
26
|
+
hasTabbedOut = false;
|
|
27
|
+
}
|
|
28
|
+
function handleKeyDownCapture(event) {
|
|
29
|
+
if (event.key !== 'Tab' || !canTabOut) {
|
|
30
|
+
if (!['Escape', 'Shift', 'Tab'].includes(event.key)) {
|
|
31
|
+
resetTabExit();
|
|
32
|
+
}
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const root = editor.getRootElement();
|
|
36
|
+
if (!root) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
resetTabExit();
|
|
40
|
+
hasTabbedOut = true;
|
|
41
|
+
event.stopPropagation();
|
|
42
|
+
restoreTabIndexes?.();
|
|
43
|
+
clearTimeout(restoreTabTimer);
|
|
44
|
+
const container = root.closest('.rich-text-lexical') ?? root;
|
|
45
|
+
const tabStops = new Set([root, ...container.querySelectorAll('[tabindex], [contenteditable="true"], a[href], button, input, select, textarea, summary, iframe, audio[controls], video[controls]')]);
|
|
46
|
+
const tabIndexes = new Map();
|
|
47
|
+
// Let the browser take Tab outside the entire editor, including decorator controls.
|
|
48
|
+
// Restore its tab stops after the native focus move so ordinary Tab navigation is unchanged.
|
|
49
|
+
for (const element of tabStops) {
|
|
50
|
+
tabIndexes.set(element, element.getAttribute('tabindex'));
|
|
51
|
+
element.setAttribute('tabindex', '-1');
|
|
52
|
+
}
|
|
53
|
+
restoreTabIndexes = () => {
|
|
54
|
+
for (const [element, tabIndex] of tabIndexes) {
|
|
55
|
+
if (tabIndex === null) {
|
|
56
|
+
element.removeAttribute('tabindex');
|
|
57
|
+
} else {
|
|
58
|
+
element.setAttribute('tabindex', tabIndex);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
restoreTabIndexes = undefined;
|
|
62
|
+
};
|
|
63
|
+
restoreTabTimer = setTimeout(() => restoreTabIndexes?.(), 0);
|
|
64
|
+
editor.update(() => $addUpdateTag(SKIP_DOM_SELECTION_TAG));
|
|
65
|
+
}
|
|
66
|
+
function handleKeyDown(event) {
|
|
67
|
+
if (event.key === 'Escape' && !event.defaultPrevented && editor.isEditable()) {
|
|
68
|
+
// A second press can dismiss the containing drawer; holding Escape must not.
|
|
69
|
+
if (canTabOut && !event.repeat) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
// Menus handle Escape first. This also reaches inputs inside decorator blocks.
|
|
73
|
+
event.preventDefault();
|
|
74
|
+
event.stopPropagation();
|
|
75
|
+
canTabOut = true;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const unregisterRootListener = editor.registerRootListener(root => {
|
|
79
|
+
rootEvents?.abort();
|
|
80
|
+
rootEvents = new AbortController();
|
|
81
|
+
const {
|
|
82
|
+
signal
|
|
83
|
+
} = rootEvents;
|
|
84
|
+
/* eslint-disable @eslint-react/web-api/no-leaked-event-listener -- Aborted on root replacement and effect cleanup. */
|
|
85
|
+
root?.addEventListener('pointerdown', resetKeyboardExit, {
|
|
86
|
+
signal
|
|
87
|
+
});
|
|
88
|
+
root?.addEventListener('keydown', handleKeyDownCapture, {
|
|
89
|
+
capture: true,
|
|
90
|
+
signal
|
|
91
|
+
});
|
|
92
|
+
root?.addEventListener('keydown', handleKeyDown, {
|
|
93
|
+
signal
|
|
94
|
+
});
|
|
95
|
+
/* eslint-enable @eslint-react/web-api/no-leaked-event-listener */
|
|
96
|
+
});
|
|
97
|
+
const unregisterCommands = mergeRegister(editor.registerCommand(KEY_ESCAPE_COMMAND, event => {
|
|
98
|
+
if (!editor.isEditable()) {
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
handleKeyDown(event);
|
|
102
|
+
return true;
|
|
103
|
+
}, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_TAB_COMMAND, () => {
|
|
104
|
+
const selection = $getSelection();
|
|
105
|
+
const isRootSelection = $isRangeSelection(selection) && selection.isCollapsed() && $isRootOrShadowRoot(selection.anchor.getNode());
|
|
106
|
+
// A root selection between decorator blocks has no text block to indent.
|
|
107
|
+
if (!isRootSelection) {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
resetTabExit();
|
|
111
|
+
hasTabbedOut = true;
|
|
112
|
+
$addUpdateTag(SKIP_DOM_SELECTION_TAG);
|
|
113
|
+
return true;
|
|
114
|
+
}, COMMAND_PRIORITY_HIGH), editor.registerCommand(BLUR_COMMAND, () => {
|
|
115
|
+
resetTabExit();
|
|
116
|
+
return false;
|
|
117
|
+
}, COMMAND_PRIORITY_HIGH), editor.registerCommand(FOCUS_COMMAND, () => {
|
|
118
|
+
resetKeyboardExit();
|
|
119
|
+
return false;
|
|
120
|
+
}, COMMAND_PRIORITY_HIGH), editor.registerCommand(SELECTION_CHANGE_COMMAND, () => {
|
|
121
|
+
const root = editor.getRootElement();
|
|
122
|
+
// A delayed selectionchange must not reclaim focus after native Tab navigation.
|
|
123
|
+
if (hasTabbedOut && root?.ownerDocument.activeElement !== root) {
|
|
124
|
+
$addUpdateTag(SKIP_DOM_SELECTION_TAG);
|
|
125
|
+
}
|
|
126
|
+
return false;
|
|
127
|
+
}, COMMAND_PRIORITY_HIGH));
|
|
128
|
+
return () => {
|
|
129
|
+
unregisterCommands();
|
|
130
|
+
unregisterRootListener();
|
|
131
|
+
rootEvents?.abort();
|
|
132
|
+
clearTimeout(restoreTabTimer);
|
|
133
|
+
restoreTabIndexes?.();
|
|
134
|
+
};
|
|
135
|
+
}, [editor]);
|
|
15
136
|
useEffect(() => {
|
|
16
137
|
if (!editor || !disabledNodes?.length) {
|
|
17
138
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndentPlugin.js","names":["useLexicalComposerContext","TabIndentationPlugin","$findMatchingParent","mergeRegister","$getSelection","$isElementNode","$isRangeSelection","COMMAND_PRIORITY_LOW","INDENT_CONTENT_COMMAND","KEY_TAB_COMMAND","OUTDENT_CONTENT_COMMAND","TabNode","useEffect","IndentPlugin","clientProps","editor","disabledNodes","disableTabNode","length","registerCommand","$handleIndentAndOutdent","block","includes","getType","indent","getIndent","setIndent","registerUpdateListener","dirtyElements","editorState","update","nodeKey","node","_nodeMap","get","currentIndent","event","preventDefault","dispatchCommand","shiftKey","undefined","registerNodeTransform","remove","_jsx","indentOrOutdent","selection","alreadyHandled","Set","nodes","getNodes","i","key","getKey","has","parentBlock","parentNode","isInline","parentKey","canIndent","add","size"],"sources":["../../../../src/features/indent/client/IndentPlugin.tsx"],"sourcesContent":["import type { ElementNode } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { TabIndentationPlugin } from '@lexical/react/LexicalTabIndentationPlugin'\nimport { $findMatchingParent, mergeRegister } from '@lexical/utils'\nimport {\n $getSelection,\n $isElementNode,\n $isRangeSelection,\n COMMAND_PRIORITY_LOW,\n INDENT_CONTENT_COMMAND,\n KEY_TAB_COMMAND,\n OUTDENT_CONTENT_COMMAND,\n TabNode,\n} from 'lexical'\nimport { useEffect } from 'react'\n\nimport type { PluginComponent } from '../../typesClient.js'\nimport type { IndentFeatureProps } from '../server/index.js'\n\nexport const IndentPlugin: PluginComponent<IndentFeatureProps> = ({ clientProps }) => {\n const [editor] = useLexicalComposerContext()\n const { disabledNodes, disableTabNode } = clientProps\n\n useEffect(() => {\n if (!editor || !disabledNodes?.length) {\n return\n }\n return mergeRegister(\n editor.registerCommand(\n INDENT_CONTENT_COMMAND,\n () => {\n return $handleIndentAndOutdent((block) => {\n if (!disabledNodes.includes(block.getType())) {\n const indent = block.getIndent()\n block.setIndent(indent + 1)\n }\n })\n },\n COMMAND_PRIORITY_LOW,\n ),\n // If we disable indenting for certain nodes, we need to ensure that these are not indented,\n // if they get transformed from an indented state (e.g. an indented list node gets transformed into a\n // paragraph node for which indenting is disabled).\n editor.registerUpdateListener(({ dirtyElements, editorState }) => {\n editor.update(() => {\n for (const [nodeKey] of dirtyElements) {\n const node = editorState._nodeMap.get(nodeKey)\n if ($isElementNode(node) && disabledNodes.includes(node.getType())) {\n const currentIndent = node.getIndent()\n if (currentIndent > 0) {\n node.setIndent(0)\n }\n }\n }\n })\n }),\n )\n }, [editor, disabledNodes])\n\n useEffect(() => {\n if (!editor || !disableTabNode) {\n return\n }\n return mergeRegister(\n // This is so that when you press Tab in the middle of a paragraph,\n // it indents the paragraph, instead of inserting a TabNode.\n editor.registerCommand<KeyboardEvent>(\n KEY_TAB_COMMAND,\n (event) => {\n event.preventDefault()\n return editor.dispatchCommand(\n event.shiftKey ? OUTDENT_CONTENT_COMMAND : INDENT_CONTENT_COMMAND,\n undefined,\n )\n },\n COMMAND_PRIORITY_LOW,\n ),\n // Tab isn't the only way to insert a TabNode. We have to make sure\n // it doesn't happen, for example, when pasting from the clipboard.\n editor.registerNodeTransform(TabNode, (node) => {\n node.remove()\n }),\n )\n }, [editor, disableTabNode])\n\n return <TabIndentationPlugin />\n}\n\nfunction $handleIndentAndOutdent(indentOrOutdent: (block: ElementNode) => void): boolean {\n const selection = $getSelection()\n if (!$isRangeSelection(selection)) {\n return false\n }\n const alreadyHandled = new Set()\n const nodes = selection.getNodes()\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i]!\n const key = node.getKey()\n if (alreadyHandled.has(key)) {\n continue\n }\n const parentBlock = $findMatchingParent(\n node,\n (parentNode): parentNode is ElementNode =>\n $isElementNode(parentNode) && !parentNode.isInline(),\n )\n if (parentBlock === null) {\n continue\n }\n const parentKey = parentBlock.getKey()\n if (parentBlock.canIndent() && !alreadyHandled.has(parentKey)) {\n alreadyHandled.add(parentKey)\n indentOrOutdent(parentBlock)\n }\n }\n return alreadyHandled.size > 0\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"IndentPlugin.js","names":["useLexicalComposerContext","TabIndentationPlugin","$findMatchingParent","mergeRegister","$addUpdateTag","$getSelection","$isElementNode","$isRangeSelection","$isRootOrShadowRoot","BLUR_COMMAND","COMMAND_PRIORITY_HIGH","COMMAND_PRIORITY_LOW","FOCUS_COMMAND","INDENT_CONTENT_COMMAND","KEY_ESCAPE_COMMAND","KEY_TAB_COMMAND","OUTDENT_CONTENT_COMMAND","SELECTION_CHANGE_COMMAND","SKIP_DOM_SELECTION_TAG","TabNode","useEffect","IndentPlugin","clientProps","editor","disabledNodes","disableTabNode","canTabOut","hasTabbedOut","resetTabExit","restoreTabIndexes","restoreTabTimer","rootEvents","resetKeyboardExit","handleKeyDownCapture","event","key","includes","root","getRootElement","stopPropagation","clearTimeout","container","closest","tabStops","Set","querySelectorAll","tabIndexes","Map","element","set","getAttribute","setAttribute","tabIndex","removeAttribute","undefined","setTimeout","update","handleKeyDown","defaultPrevented","isEditable","repeat","preventDefault","unregisterRootListener","registerRootListener","abort","AbortController","signal","addEventListener","capture","unregisterCommands","registerCommand","selection","isRootSelection","isCollapsed","anchor","getNode","ownerDocument","activeElement","length","$handleIndentAndOutdent","block","getType","indent","getIndent","setIndent","registerUpdateListener","dirtyElements","editorState","nodeKey","node","_nodeMap","get","currentIndent","dispatchCommand","shiftKey","registerNodeTransform","remove","_jsx","indentOrOutdent","alreadyHandled","nodes","getNodes","i","getKey","has","parentBlock","parentNode","isInline","parentKey","canIndent","add","size"],"sources":["../../../../src/features/indent/client/IndentPlugin.tsx"],"sourcesContent":["import type { ElementNode } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { TabIndentationPlugin } from '@lexical/react/LexicalTabIndentationPlugin'\nimport { $findMatchingParent, mergeRegister } from '@lexical/utils'\nimport {\n $addUpdateTag,\n $getSelection,\n $isElementNode,\n $isRangeSelection,\n $isRootOrShadowRoot,\n BLUR_COMMAND,\n COMMAND_PRIORITY_HIGH,\n COMMAND_PRIORITY_LOW,\n FOCUS_COMMAND,\n INDENT_CONTENT_COMMAND,\n KEY_ESCAPE_COMMAND,\n KEY_TAB_COMMAND,\n OUTDENT_CONTENT_COMMAND,\n SELECTION_CHANGE_COMMAND,\n SKIP_DOM_SELECTION_TAG,\n TabNode,\n} from 'lexical'\nimport { useEffect } from 'react'\n\nimport type { PluginComponent } from '../../typesClient.js'\nimport type { IndentFeatureProps } from '../server/index.js'\n\nexport const IndentPlugin: PluginComponent<IndentFeatureProps> = ({ clientProps }) => {\n const [editor] = useLexicalComposerContext()\n const { disabledNodes, disableTabNode } = clientProps\n\n useEffect(() => {\n let canTabOut = false\n let hasTabbedOut = false\n const resetTabExit = () => {\n canTabOut = false\n }\n let restoreTabIndexes: (() => void) | undefined\n let restoreTabTimer: ReturnType<typeof setTimeout> | undefined\n let rootEvents: AbortController | undefined\n\n function resetKeyboardExit() {\n resetTabExit()\n hasTabbedOut = false\n }\n\n function handleKeyDownCapture(event: KeyboardEvent) {\n if (event.key !== 'Tab' || !canTabOut) {\n if (!['Escape', 'Shift', 'Tab'].includes(event.key)) {\n resetTabExit()\n }\n return\n }\n\n const root = editor.getRootElement()\n\n if (!root) {\n return\n }\n resetTabExit()\n hasTabbedOut = true\n event.stopPropagation()\n restoreTabIndexes?.()\n clearTimeout(restoreTabTimer)\n\n const container = root.closest('.rich-text-lexical') ?? root\n const tabStops = new Set([\n root,\n ...container.querySelectorAll<HTMLElement>(\n '[tabindex], [contenteditable=\"true\"], a[href], button, input, select, textarea, summary, iframe, audio[controls], video[controls]',\n ),\n ])\n const tabIndexes = new Map<HTMLElement, null | string>()\n\n // Let the browser take Tab outside the entire editor, including decorator controls.\n // Restore its tab stops after the native focus move so ordinary Tab navigation is unchanged.\n for (const element of tabStops) {\n tabIndexes.set(element, element.getAttribute('tabindex'))\n element.setAttribute('tabindex', '-1')\n }\n restoreTabIndexes = () => {\n for (const [element, tabIndex] of tabIndexes) {\n if (tabIndex === null) {\n element.removeAttribute('tabindex')\n } else {\n element.setAttribute('tabindex', tabIndex)\n }\n }\n restoreTabIndexes = undefined\n }\n restoreTabTimer = setTimeout(() => restoreTabIndexes?.(), 0)\n editor.update(() => $addUpdateTag(SKIP_DOM_SELECTION_TAG))\n }\n\n function handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape' && !event.defaultPrevented && editor.isEditable()) {\n // A second press can dismiss the containing drawer; holding Escape must not.\n if (canTabOut && !event.repeat) {\n return\n }\n // Menus handle Escape first. This also reaches inputs inside decorator blocks.\n event.preventDefault()\n event.stopPropagation()\n canTabOut = true\n }\n }\n\n const unregisterRootListener = editor.registerRootListener((root) => {\n rootEvents?.abort()\n rootEvents = new AbortController()\n const { signal } = rootEvents\n\n /* eslint-disable @eslint-react/web-api/no-leaked-event-listener -- Aborted on root replacement and effect cleanup. */\n root?.addEventListener('pointerdown', resetKeyboardExit, { signal })\n root?.addEventListener('keydown', handleKeyDownCapture, { capture: true, signal })\n root?.addEventListener('keydown', handleKeyDown, { signal })\n /* eslint-enable @eslint-react/web-api/no-leaked-event-listener */\n })\n\n const unregisterCommands = mergeRegister(\n editor.registerCommand(\n KEY_ESCAPE_COMMAND,\n (event) => {\n if (!editor.isEditable()) {\n return false\n }\n handleKeyDown(event)\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(\n KEY_TAB_COMMAND,\n () => {\n const selection = $getSelection()\n const isRootSelection =\n $isRangeSelection(selection) &&\n selection.isCollapsed() &&\n $isRootOrShadowRoot(selection.anchor.getNode())\n\n // A root selection between decorator blocks has no text block to indent.\n if (!isRootSelection) {\n return false\n }\n resetTabExit()\n hasTabbedOut = true\n $addUpdateTag(SKIP_DOM_SELECTION_TAG)\n return true\n },\n COMMAND_PRIORITY_HIGH,\n ),\n editor.registerCommand(\n BLUR_COMMAND,\n () => {\n resetTabExit()\n return false\n },\n COMMAND_PRIORITY_HIGH,\n ),\n editor.registerCommand(\n FOCUS_COMMAND,\n () => {\n resetKeyboardExit()\n return false\n },\n COMMAND_PRIORITY_HIGH,\n ),\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n const root = editor.getRootElement()\n\n // A delayed selectionchange must not reclaim focus after native Tab navigation.\n if (hasTabbedOut && root?.ownerDocument.activeElement !== root) {\n $addUpdateTag(SKIP_DOM_SELECTION_TAG)\n }\n return false\n },\n COMMAND_PRIORITY_HIGH,\n ),\n )\n\n return () => {\n unregisterCommands()\n unregisterRootListener()\n rootEvents?.abort()\n clearTimeout(restoreTabTimer)\n restoreTabIndexes?.()\n }\n }, [editor])\n\n useEffect(() => {\n if (!editor || !disabledNodes?.length) {\n return\n }\n return mergeRegister(\n editor.registerCommand(\n INDENT_CONTENT_COMMAND,\n () => {\n return $handleIndentAndOutdent((block) => {\n if (!disabledNodes.includes(block.getType())) {\n const indent = block.getIndent()\n block.setIndent(indent + 1)\n }\n })\n },\n COMMAND_PRIORITY_LOW,\n ),\n // If we disable indenting for certain nodes, we need to ensure that these are not indented,\n // if they get transformed from an indented state (e.g. an indented list node gets transformed into a\n // paragraph node for which indenting is disabled).\n editor.registerUpdateListener(({ dirtyElements, editorState }) => {\n editor.update(() => {\n for (const [nodeKey] of dirtyElements) {\n const node = editorState._nodeMap.get(nodeKey)\n if ($isElementNode(node) && disabledNodes.includes(node.getType())) {\n const currentIndent = node.getIndent()\n if (currentIndent > 0) {\n node.setIndent(0)\n }\n }\n }\n })\n }),\n )\n }, [editor, disabledNodes])\n\n useEffect(() => {\n if (!editor || !disableTabNode) {\n return\n }\n return mergeRegister(\n // This is so that when you press Tab in the middle of a paragraph,\n // it indents the paragraph, instead of inserting a TabNode.\n editor.registerCommand<KeyboardEvent>(\n KEY_TAB_COMMAND,\n (event) => {\n event.preventDefault()\n return editor.dispatchCommand(\n event.shiftKey ? OUTDENT_CONTENT_COMMAND : INDENT_CONTENT_COMMAND,\n undefined,\n )\n },\n COMMAND_PRIORITY_LOW,\n ),\n // Tab isn't the only way to insert a TabNode. We have to make sure\n // it doesn't happen, for example, when pasting from the clipboard.\n editor.registerNodeTransform(TabNode, (node) => {\n node.remove()\n }),\n )\n }, [editor, disableTabNode])\n\n return <TabIndentationPlugin />\n}\n\nfunction $handleIndentAndOutdent(indentOrOutdent: (block: ElementNode) => void): boolean {\n const selection = $getSelection()\n if (!$isRangeSelection(selection)) {\n return false\n }\n const alreadyHandled = new Set()\n const nodes = selection.getNodes()\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i]!\n const key = node.getKey()\n if (alreadyHandled.has(key)) {\n continue\n }\n const parentBlock = $findMatchingParent(\n node,\n (parentNode): parentNode is ElementNode =>\n $isElementNode(parentNode) && !parentNode.isInline(),\n )\n if (parentBlock === null) {\n continue\n }\n const parentKey = parentBlock.getKey()\n if (parentBlock.canIndent() && !alreadyHandled.has(parentKey)) {\n alreadyHandled.add(parentKey)\n indentOrOutdent(parentBlock)\n }\n }\n return alreadyHandled.size > 0\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/indent/client/index.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/indent/client/index.tsx"],"names":[],"mappings":"AAYA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAwD5D,eAAO,MAAM,mBAAmB,sGAiB9B,CAAA"}
|
|
@@ -11,7 +11,6 @@ const toolbarGroups = ({
|
|
|
11
11
|
disabledNodes
|
|
12
12
|
}) => [toolbarIndentGroupWithItems([{
|
|
13
13
|
ChildComponent: IndentDecreaseIcon,
|
|
14
|
-
isActive: () => false,
|
|
15
14
|
isEnabled: ({
|
|
16
15
|
selection
|
|
17
16
|
}) => {
|
|
@@ -37,7 +36,6 @@ const toolbarGroups = ({
|
|
|
37
36
|
order: 1
|
|
38
37
|
}, {
|
|
39
38
|
ChildComponent: IndentIncreaseIcon,
|
|
40
|
-
isActive: () => false,
|
|
41
39
|
isEnabled: ({
|
|
42
40
|
selection
|
|
43
41
|
}) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["$findMatchingParent","$isElementNode","INDENT_CONTENT_COMMAND","OUTDENT_CONTENT_COMMAND","IndentDecreaseIcon","IndentIncreaseIcon","createClientFeature","IndentPlugin","toolbarIndentGroupWithItems","toolbarGroups","disabledNodes","ChildComponent","
|
|
1
|
+
{"version":3,"file":"index.js","names":["$findMatchingParent","$isElementNode","INDENT_CONTENT_COMMAND","OUTDENT_CONTENT_COMMAND","IndentDecreaseIcon","IndentIncreaseIcon","createClientFeature","IndentPlugin","toolbarIndentGroupWithItems","toolbarGroups","disabledNodes","ChildComponent","isEnabled","selection","nodes","getNodes","isOutdentable","node","isIndentable","getIndent","some","Boolean","key","label","i18n","t","onSelect","editor","dispatchCommand","undefined","order","isIndentableAndNotDisabled","includes","getType","IndentFeatureClient","props","plugins","Component","position","sanitizedClientFeatureProps","toolbarFixed","groups","toolbarInline","canIndent"],"sources":["../../../../src/features/indent/client/index.tsx"],"sourcesContent":["'use client'\n\nimport type { ElementNode, LexicalNode } from 'lexical'\n\nimport { $findMatchingParent } from '@lexical/utils'\nimport { $isElementNode, INDENT_CONTENT_COMMAND, OUTDENT_CONTENT_COMMAND } from 'lexical'\n\nimport type { ToolbarGroup } from '../../toolbars/types.js'\n\nimport { IndentDecreaseIcon } from '../../../lexical/ui/icons/IndentDecrease/index.js'\nimport { IndentIncreaseIcon } from '../../../lexical/ui/icons/IndentIncrease/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { type IndentFeatureProps } from '../server/index.js'\nimport { IndentPlugin } from './IndentPlugin.js'\nimport { toolbarIndentGroupWithItems } from './toolbarIndentGroup.js'\n\nconst toolbarGroups = ({ disabledNodes }: IndentFeatureProps): ToolbarGroup[] => [\n toolbarIndentGroupWithItems([\n {\n ChildComponent: IndentDecreaseIcon,\n isEnabled: ({ selection }) => {\n const nodes = selection?.getNodes() ?? []\n\n const isOutdentable = (node: LexicalNode) => {\n return isIndentable(node) && node.getIndent() > 0\n }\n\n return nodes.some((node) => {\n return isOutdentable(node) || Boolean($findMatchingParent(node, isOutdentable))\n })\n },\n key: 'indentDecrease',\n label: ({ i18n }) => {\n return i18n.t('lexical:indent:decreaseLabel')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(OUTDENT_CONTENT_COMMAND, undefined)\n },\n order: 1,\n },\n {\n ChildComponent: IndentIncreaseIcon,\n isEnabled: ({ selection }) => {\n const nodes = selection?.getNodes() ?? []\n\n const isIndentableAndNotDisabled = (node: LexicalNode) => {\n return isIndentable(node) && !(disabledNodes ?? []).includes(node.getType())\n }\n\n return nodes.some((node) => {\n return (\n isIndentableAndNotDisabled(node) ||\n Boolean($findMatchingParent(node, isIndentableAndNotDisabled))\n )\n })\n },\n key: 'indentIncrease',\n label: ({ i18n }) => {\n return i18n.t('lexical:indent:increaseLabel')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INDENT_CONTENT_COMMAND, undefined)\n },\n order: 2,\n },\n ]),\n]\n\nexport const IndentFeatureClient = createClientFeature<IndentFeatureProps>(({ props }) => {\n const disabledNodes = props.disabledNodes ?? []\n return {\n plugins: [\n {\n Component: IndentPlugin,\n position: 'normal',\n },\n ],\n sanitizedClientFeatureProps: props,\n toolbarFixed: {\n groups: toolbarGroups({ disabledNodes }),\n },\n toolbarInline: {\n groups: toolbarGroups({ disabledNodes }),\n },\n }\n})\n\nconst isIndentable = (node: LexicalNode): node is ElementNode =>\n $isElementNode(node) && node.canIndent()\n"],"mappings":"AAAA;;AAIA,SAASA,mBAAmB,QAAQ;AACpC,SAASC,cAAc,EAAEC,sBAAsB,EAAEC,uBAAuB,QAAQ;AAIhF,SAASC,kBAAkB,QAAQ;AACnC,SAASC,kBAAkB,QAAQ;AACnC,SAASC,mBAAmB,QAAQ;AAEpC,SAASC,YAAY,QAAQ;AAC7B,SAASC,2BAA2B,QAAQ;AAE5C,MAAMC,aAAA,GAAgBA,CAAC;EAAEC;AAAa,CAAsB,KAAqB,CAC/EF,2BAAA,CAA4B,CAC1B;EACEG,cAAA,EAAgBP,kBAAA;EAChBQ,SAAA,EAAWA,CAAC;IAAEC;EAAS,CAAE;IACvB,MAAMC,KAAA,GAAQD,SAAA,EAAWE,QAAA,MAAc,EAAE;IAEzC,MAAMC,aAAA,GAAiBC,IAAA;MACrB,OAAOC,YAAA,CAAaD,IAAA,KAASA,IAAA,CAAKE,SAAS,KAAK;IAClD;IAEA,OAAOL,KAAA,CAAMM,IAAI,CAAEH,IAAA;MACjB,OAAOD,aAAA,CAAcC,IAAA,KAASI,OAAA,CAAQrB,mBAAA,CAAoBiB,IAAA,EAAMD,aAAA;IAClE;EACF;EACAM,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,eAAe,CAACzB,uBAAA,EAAyB0B,SAAA;EAClD;EACAC,KAAA,EAAO;AACT,GACA;EACEnB,cAAA,EAAgBN,kBAAA;EAChBO,SAAA,EAAWA,CAAC;IAAEC;EAAS,CAAE;IACvB,MAAMC,KAAA,GAAQD,SAAA,EAAWE,QAAA,MAAc,EAAE;IAEzC,MAAMgB,0BAAA,GAA8Bd,IAAA;MAClC,OAAOC,YAAA,CAAaD,IAAA,KAAS,CAAC,CAACP,aAAA,IAAiB,EAAE,EAAEsB,QAAQ,CAACf,IAAA,CAAKgB,OAAO;IAC3E;IAEA,OAAOnB,KAAA,CAAMM,IAAI,CAAEH,IAAA;MACjB,OACEc,0BAAA,CAA2Bd,IAAA,KAC3BI,OAAA,CAAQrB,mBAAA,CAAoBiB,IAAA,EAAMc,0BAAA;IAEtC;EACF;EACAT,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,eAAe,CAAC1B,sBAAA,EAAwB2B,SAAA;EACjD;EACAC,KAAA,EAAO;AACT,EACD,EACF;AAED,OAAO,MAAMI,mBAAA,GAAsB5B,mBAAA,CAAwC,CAAC;EAAE6B;AAAK,CAAE;EACnF,MAAMzB,aAAA,GAAgByB,KAAA,CAAMzB,aAAa,IAAI,EAAE;EAC/C,OAAO;IACL0B,OAAA,EAAS,CACP;MACEC,SAAA,EAAW9B,YAAA;MACX+B,QAAA,EAAU;IACZ,EACD;IACDC,2BAAA,EAA6BJ,KAAA;IAC7BK,YAAA,EAAc;MACZC,MAAA,EAAQhC,aAAA,CAAc;QAAEC;MAAc;IACxC;IACAgC,aAAA,EAAe;MACbD,MAAA,EAAQhC,aAAA,CAAc;QAAEC;MAAc;IACxC;EACF;AACF;AAEA,MAAMQ,YAAA,GAAgBD,IAAA,IACpBhB,cAAA,CAAegB,IAAA,KAASA,IAAA,CAAK0B,SAAS","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../src/features/indent/server/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAEhE,eAAO,MAAM,IAAI,EAAE,OAAO,CAAC,gBAAgB,
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../src/features/indent/server/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAEhE,eAAO,MAAM,IAAI,EAAE,OAAO,CAAC,gBAAgB,CAiN1C,CAAA"}
|