@payloadcms/richtext-lexical 3.0.0-canary.b8dd0db → 3.0.0-canary.bb00d64
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/cell/rscEntry.d.ts +12 -0
- package/dist/cell/rscEntry.d.ts.map +1 -0
- package/dist/cell/rscEntry.js +82 -0
- package/dist/cell/rscEntry.js.map +1 -0
- package/dist/exports/client/Field-LKCJPU2R.js +2 -0
- package/dist/exports/client/Field-LKCJPU2R.js.map +7 -0
- package/dist/exports/client/RelationshipComponent-IMM4CFBE.js +2 -0
- package/dist/exports/client/RelationshipComponent-IMM4CFBE.js.map +7 -0
- package/dist/exports/client/bundled.css +1 -1
- package/dist/exports/client/chunk-5PBXL4HT.js +2 -0
- package/dist/exports/client/chunk-5PBXL4HT.js.map +7 -0
- package/dist/exports/client/chunk-NNE6RSU5.js +2 -0
- package/dist/exports/client/chunk-NNE6RSU5.js.map +7 -0
- package/dist/exports/client/{chunk-LGUXX2QH.js → chunk-O4IOO4EU.js} +2 -2
- package/dist/exports/client/{chunk-LGUXX2QH.js.map → chunk-O4IOO4EU.js.map} +2 -2
- package/dist/exports/client/chunk-PDAZFJVO.js +2 -0
- package/dist/exports/client/chunk-PDAZFJVO.js.map +7 -0
- package/dist/exports/client/chunk-PSABE6CO.js +2 -0
- package/dist/exports/client/chunk-PSABE6CO.js.map +7 -0
- package/dist/exports/client/{chunk-V2LKLT2F.js → chunk-XCEM47RI.js} +3 -3
- package/dist/exports/client/{chunk-V2LKLT2F.js.map → chunk-XCEM47RI.js.map} +3 -3
- package/dist/exports/client/chunk-ZFVIUTHB.js +2 -0
- package/dist/exports/client/chunk-ZFVIUTHB.js.map +7 -0
- package/dist/exports/client/{chunk-OKMIHD2R.js → chunk-ZOYGBIAN.js} +2 -2
- package/dist/exports/client/{chunk-OKMIHD2R.js.map → chunk-ZOYGBIAN.js.map} +2 -2
- package/dist/exports/client/component-4OBXHYCD.js +2 -0
- package/dist/exports/client/component-4OBXHYCD.js.map +7 -0
- package/dist/exports/client/component-ANB7VZLA.js +2 -0
- package/dist/exports/client/component-ANB7VZLA.js.map +7 -0
- package/dist/exports/client/component-P25AKAUU.js +2 -0
- package/dist/exports/client/component-P25AKAUU.js.map +7 -0
- package/dist/exports/client/componentInline-N5LJ2LY2.js +2 -0
- package/dist/exports/client/componentInline-N5LJ2LY2.js.map +7 -0
- package/dist/exports/client/index.d.ts +3 -4
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +7 -7
- package/dist/exports/client/index.js.map +4 -4
- package/dist/exports/server/rsc.d.ts +3 -0
- package/dist/exports/server/rsc.d.ts.map +1 -0
- package/dist/exports/server/rsc.js +3 -0
- package/dist/exports/server/rsc.js.map +1 -0
- package/dist/features/align/client/index.d.ts +1 -4
- package/dist/features/align/client/index.d.ts.map +1 -1
- package/dist/features/blockquote/client/index.d.ts +1 -4
- package/dist/features/blockquote/client/index.d.ts.map +1 -1
- package/dist/features/blockquote/markdownTransformer.js.map +1 -1
- package/dist/features/blockquote/server/index.d.ts +1 -1
- package/dist/features/blockquote/server/index.d.ts.map +1 -1
- package/dist/features/blockquote/server/index.js +5 -1
- package/dist/features/blockquote/server/index.js.map +1 -1
- package/dist/features/blocks/client/component/BlockContent.d.ts +1 -0
- package/dist/features/blocks/client/component/BlockContent.d.ts.map +1 -1
- package/dist/features/blocks/client/component/BlockContent.js +28 -28
- package/dist/features/blocks/client/component/BlockContent.js.map +1 -1
- package/dist/features/blocks/client/component/index.d.ts +1 -1
- package/dist/features/blocks/client/component/index.d.ts.map +1 -1
- package/dist/features/blocks/client/component/index.js +94 -55
- package/dist/features/blocks/client/component/index.js.map +1 -1
- package/dist/features/blocks/client/componentInline/index.d.ts +1 -1
- package/dist/features/blocks/client/componentInline/index.d.ts.map +1 -1
- package/dist/features/blocks/client/componentInline/index.js +27 -29
- package/dist/features/blocks/client/componentInline/index.js.map +1 -1
- package/dist/features/blocks/client/index.d.ts +1 -4
- package/dist/features/blocks/client/index.d.ts.map +1 -1
- package/dist/features/blocks/client/index.js +35 -23
- package/dist/features/blocks/client/index.js.map +1 -1
- package/dist/features/blocks/client/nodes/BlocksNode.d.ts +2 -2
- package/dist/features/blocks/client/nodes/BlocksNode.d.ts.map +1 -1
- package/dist/features/blocks/client/nodes/BlocksNode.js.map +1 -1
- package/dist/features/blocks/client/plugin/index.d.ts +2 -2
- package/dist/features/blocks/client/plugin/index.d.ts.map +1 -1
- package/dist/features/blocks/client/plugin/index.js +96 -93
- package/dist/features/blocks/client/plugin/index.js.map +1 -1
- package/dist/features/blocks/server/index.d.ts.map +1 -1
- package/dist/features/blocks/server/index.js +41 -27
- package/dist/features/blocks/server/index.js.map +1 -1
- package/dist/features/blocks/server/nodes/BlocksNode.d.ts +11 -5
- package/dist/features/blocks/server/nodes/BlocksNode.d.ts.map +1 -1
- package/dist/features/blocks/server/nodes/BlocksNode.js.map +1 -1
- package/dist/features/blocks/server/nodes/InlineBlocksNode.d.ts +3 -3
- package/dist/features/blocks/server/nodes/InlineBlocksNode.d.ts.map +1 -1
- package/dist/features/blocks/server/nodes/InlineBlocksNode.js.map +1 -1
- package/dist/features/blocks/server/validate.d.ts.map +1 -1
- package/dist/features/blocks/server/validate.js +8 -5
- package/dist/features/blocks/server/validate.js.map +1 -1
- package/dist/features/converters/html/converter/converters/paragraph.d.ts.map +1 -1
- package/dist/features/converters/html/converter/converters/paragraph.js +4 -0
- package/dist/features/converters/html/converter/converters/paragraph.js.map +1 -1
- package/dist/features/converters/html/converter/converters/text.d.ts.map +1 -1
- package/dist/features/converters/html/converter/converters/text.js +2 -1
- package/dist/features/converters/html/converter/converters/text.js.map +1 -1
- package/dist/features/converters/html/converter/index.d.ts +11 -7
- package/dist/features/converters/html/converter/index.d.ts.map +1 -1
- package/dist/features/converters/html/converter/index.js +17 -1
- package/dist/features/converters/html/converter/index.js.map +1 -1
- package/dist/features/converters/html/converter/types.d.ts +3 -1
- package/dist/features/converters/html/converter/types.d.ts.map +1 -1
- package/dist/features/converters/html/converter/types.js.map +1 -1
- package/dist/features/converters/html/field/index.d.ts.map +1 -1
- package/dist/features/converters/html/field/index.js +7 -1
- package/dist/features/converters/html/field/index.js.map +1 -1
- package/dist/features/debug/testRecorder/client/index.d.ts +1 -4
- package/dist/features/debug/testRecorder/client/index.d.ts.map +1 -1
- package/dist/features/debug/testRecorder/client/plugin/index.js +180 -345
- package/dist/features/debug/testRecorder/client/plugin/index.js.map +1 -1
- package/dist/features/debug/treeView/client/index.d.ts +1 -4
- package/dist/features/debug/treeView/client/index.d.ts.map +1 -1
- package/dist/features/experimental_table/client/index.d.ts +1 -1
- package/dist/features/experimental_table/client/index.d.ts.map +1 -1
- package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.d.ts.map +1 -1
- package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js +250 -488
- package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js.map +1 -1
- package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.d.ts.map +1 -1
- package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js +39 -39
- package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js.map +1 -1
- package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.d.ts +1 -1
- package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.d.ts.map +1 -1
- package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js +60 -124
- package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js.map +1 -1
- package/dist/features/experimental_table/client/plugins/TablePlugin/index.d.ts.map +1 -1
- package/dist/features/experimental_table/client/plugins/TablePlugin/index.js +52 -50
- package/dist/features/experimental_table/client/plugins/TablePlugin/index.js.map +1 -1
- package/dist/features/experimental_table/client/utils/debounce.js +4 -4
- package/dist/features/experimental_table/client/utils/debounce.js.map +1 -1
- package/dist/features/experimental_table/client/utils/useDebounce.js.map +1 -1
- package/dist/features/experimental_table/server/index.d.ts.map +1 -1
- package/dist/features/experimental_table/server/index.js +20 -4
- package/dist/features/experimental_table/server/index.js.map +1 -1
- package/dist/features/format/bold/feature.client.d.ts +1 -4
- package/dist/features/format/bold/feature.client.d.ts.map +1 -1
- package/dist/features/format/inlineCode/feature.client.d.ts +1 -4
- package/dist/features/format/inlineCode/feature.client.d.ts.map +1 -1
- package/dist/features/format/italic/feature.client.d.ts +1 -4
- package/dist/features/format/italic/feature.client.d.ts.map +1 -1
- package/dist/features/format/strikethrough/feature.client.d.ts +1 -4
- package/dist/features/format/strikethrough/feature.client.d.ts.map +1 -1
- package/dist/features/format/subscript/feature.client.d.ts +1 -4
- package/dist/features/format/subscript/feature.client.d.ts.map +1 -1
- package/dist/features/format/superscript/feature.client.d.ts +1 -4
- package/dist/features/format/superscript/feature.client.d.ts.map +1 -1
- package/dist/features/format/underline/feature.client.d.ts +1 -4
- package/dist/features/format/underline/feature.client.d.ts.map +1 -1
- package/dist/features/heading/client/index.d.ts +1 -4
- package/dist/features/heading/client/index.d.ts.map +1 -1
- package/dist/features/heading/server/index.d.ts.map +1 -1
- package/dist/features/heading/server/index.js +4 -0
- package/dist/features/heading/server/index.js.map +1 -1
- package/dist/features/horizontalRule/client/component/index.d.ts +1 -1
- package/dist/features/horizontalRule/client/component/index.d.ts.map +1 -1
- package/dist/features/horizontalRule/client/component/index.js +12 -9
- package/dist/features/horizontalRule/client/component/index.js.map +1 -1
- package/dist/features/horizontalRule/client/index.d.ts +1 -4
- package/dist/features/horizontalRule/client/index.d.ts.map +1 -1
- package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.d.ts +2 -2
- package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.d.ts.map +1 -1
- package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js +1 -1
- package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js.map +1 -1
- package/dist/features/indent/client/index.d.ts +1 -4
- package/dist/features/indent/client/index.d.ts.map +1 -1
- package/dist/features/indent/client/index.js +2 -1
- package/dist/features/indent/client/index.js.map +1 -1
- package/dist/features/link/client/index.d.ts +1 -13
- package/dist/features/link/client/index.d.ts.map +1 -1
- package/dist/features/link/client/index.js +2 -2
- package/dist/features/link/client/index.js.map +1 -1
- package/dist/features/link/client/plugins/autoLink/index.d.ts +1 -1
- package/dist/features/link/client/plugins/autoLink/index.d.ts.map +1 -1
- package/dist/features/link/client/plugins/autoLink/index.js +3 -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 +21 -20
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
- package/dist/features/link/client/plugins/floatingLinkEditor/index.d.ts.map +1 -1
- package/dist/features/link/client/plugins/floatingLinkEditor/index.js +1 -1
- package/dist/features/link/client/plugins/floatingLinkEditor/index.js.map +1 -1
- package/dist/features/link/nodes/AutoLinkNode.js +2 -2
- 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 +12 -7
- package/dist/features/link/nodes/LinkNode.js.map +1 -1
- package/dist/features/link/nodes/types.d.ts +3 -3
- package/dist/features/link/nodes/types.d.ts.map +1 -1
- package/dist/features/link/nodes/types.js.map +1 -1
- package/dist/features/link/server/baseFields.d.ts +1 -1
- package/dist/features/link/server/baseFields.d.ts.map +1 -1
- package/dist/features/link/server/baseFields.js +15 -3
- package/dist/features/link/server/baseFields.js.map +1 -1
- package/dist/features/link/server/index.d.ts.map +1 -1
- package/dist/features/link/server/index.js +17 -4
- package/dist/features/link/server/index.js.map +1 -1
- package/dist/features/link/server/transformExtraFields.d.ts +1 -1
- package/dist/features/link/server/transformExtraFields.d.ts.map +1 -1
- package/dist/features/link/server/transformExtraFields.js.map +1 -1
- package/dist/features/link/server/validate.d.ts.map +1 -1
- package/dist/features/link/server/validate.js +8 -5
- package/dist/features/link/server/validate.js.map +1 -1
- package/dist/features/lists/checklist/client/index.d.ts +1 -4
- package/dist/features/lists/checklist/client/index.d.ts.map +1 -1
- package/dist/features/lists/htmlConverter.d.ts.map +1 -1
- package/dist/features/lists/htmlConverter.js +8 -0
- package/dist/features/lists/htmlConverter.js.map +1 -1
- package/dist/features/lists/orderedList/client/index.d.ts +1 -4
- package/dist/features/lists/orderedList/client/index.d.ts.map +1 -1
- package/dist/features/lists/shared/markdown.js.map +1 -1
- package/dist/features/lists/unorderedList/client/index.d.ts +1 -4
- package/dist/features/lists/unorderedList/client/index.d.ts.map +1 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/index.d.ts.map +1 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/index.js +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/index.js.map +1 -1
- package/dist/features/migrations/lexicalPluginToLexical/feature.client.d.ts +1 -4
- package/dist/features/migrations/lexicalPluginToLexical/feature.client.d.ts.map +1 -1
- package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts +1 -1
- package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts.map +1 -1
- package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
- package/dist/features/migrations/slateToLexical/converter/converters/blockquote/converter.js.map +1 -1
- package/dist/features/migrations/slateToLexical/converter/converters/heading/converter.js.map +1 -1
- package/dist/features/migrations/slateToLexical/converter/converters/link/converter.js.map +1 -1
- package/dist/features/migrations/slateToLexical/converter/converters/listItem/converter.js.map +1 -1
- package/dist/features/migrations/slateToLexical/converter/converters/orderedList/converter.js.map +1 -1
- package/dist/features/migrations/slateToLexical/converter/converters/unknown/converter.js.map +1 -1
- package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js.map +1 -1
- package/dist/features/migrations/slateToLexical/converter/index.d.ts.map +1 -1
- package/dist/features/migrations/slateToLexical/converter/index.js +1 -0
- package/dist/features/migrations/slateToLexical/converter/index.js.map +1 -1
- package/dist/features/migrations/slateToLexical/feature.client.d.ts +1 -4
- package/dist/features/migrations/slateToLexical/feature.client.d.ts.map +1 -1
- package/dist/features/migrations/slateToLexical/feature.client.js +1 -3
- package/dist/features/migrations/slateToLexical/feature.client.js.map +1 -1
- package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.d.ts +1 -1
- package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.d.ts.map +1 -1
- package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
- package/dist/features/paragraph/client/index.d.ts +1 -4
- package/dist/features/paragraph/client/index.d.ts.map +1 -1
- package/dist/features/paragraph/server/index.d.ts +1 -1
- package/dist/features/paragraph/server/index.d.ts.map +1 -1
- package/dist/features/relationship/client/components/RelationshipComponent.d.ts.map +1 -1
- package/dist/features/relationship/client/components/RelationshipComponent.js +42 -29
- package/dist/features/relationship/client/components/RelationshipComponent.js.map +1 -1
- package/dist/features/relationship/client/drawer/index.d.ts.map +1 -1
- package/dist/features/relationship/client/drawer/index.js +27 -26
- package/dist/features/relationship/client/drawer/index.js.map +1 -1
- package/dist/features/relationship/client/index.d.ts +2 -17
- package/dist/features/relationship/client/index.d.ts.map +1 -1
- package/dist/features/relationship/client/nodes/RelationshipNode.d.ts +1 -1
- package/dist/features/relationship/client/nodes/RelationshipNode.d.ts.map +1 -1
- package/dist/features/relationship/client/nodes/RelationshipNode.js.map +1 -1
- package/dist/features/relationship/client/plugins/index.js +1 -1
- package/dist/features/relationship/client/plugins/index.js.map +1 -1
- package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.js +1 -1
- package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.js.map +1 -1
- package/dist/features/relationship/server/index.d.ts +1 -1
- package/dist/features/relationship/server/index.d.ts.map +1 -1
- package/dist/features/relationship/server/index.js +50 -40
- package/dist/features/relationship/server/index.js.map +1 -1
- package/dist/features/relationship/server/nodes/RelationshipNode.d.ts +8 -6
- package/dist/features/relationship/server/nodes/RelationshipNode.d.ts.map +1 -1
- package/dist/features/relationship/server/nodes/RelationshipNode.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 +93 -66
- package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -1
- package/dist/features/toolbars/fixed/client/index.d.ts +1 -4
- package/dist/features/toolbars/fixed/client/index.d.ts.map +1 -1
- package/dist/features/toolbars/inline/client/Toolbar/index.js +43 -46
- package/dist/features/toolbars/inline/client/Toolbar/index.js.map +1 -1
- package/dist/features/toolbars/inline/client/index.d.ts +1 -4
- package/dist/features/toolbars/inline/client/index.d.ts.map +1 -1
- package/dist/features/toolbars/shared/ToolbarButton/index.d.ts.map +1 -1
- package/dist/features/toolbars/shared/ToolbarButton/index.js +4 -1
- package/dist/features/toolbars/shared/ToolbarButton/index.js.map +1 -1
- package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts +2 -2
- package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts.map +1 -1
- package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js +12 -6
- package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -1
- package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts +4 -5
- package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts.map +1 -1
- package/dist/features/toolbars/shared/ToolbarDropdown/index.js +119 -116
- package/dist/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -1
- package/dist/features/toolbars/types.d.ts +23 -11
- package/dist/features/toolbars/types.d.ts.map +1 -1
- package/dist/features/toolbars/types.js.map +1 -1
- package/dist/features/typesClient.d.ts +10 -11
- package/dist/features/typesClient.d.ts.map +1 -1
- package/dist/features/typesClient.js.map +1 -1
- package/dist/features/typesServer.d.ts +17 -26
- package/dist/features/typesServer.d.ts.map +1 -1
- package/dist/features/typesServer.js.map +1 -1
- package/dist/features/upload/client/component/index.d.ts.map +1 -1
- package/dist/features/upload/client/component/index.js +69 -58
- package/dist/features/upload/client/component/index.js.map +1 -1
- package/dist/features/upload/client/drawer/index.d.ts.map +1 -1
- package/dist/features/upload/client/drawer/index.js +34 -32
- package/dist/features/upload/client/drawer/index.js.map +1 -1
- package/dist/features/upload/client/feature.client.d.ts +1 -4
- package/dist/features/upload/client/feature.client.d.ts.map +1 -1
- package/dist/features/upload/client/nodes/UploadNode.d.ts.map +1 -1
- package/dist/features/upload/client/nodes/UploadNode.js +1 -1
- package/dist/features/upload/client/nodes/UploadNode.js.map +1 -1
- package/dist/features/upload/client/plugin/index.js +1 -1
- package/dist/features/upload/client/plugin/index.js.map +1 -1
- package/dist/features/upload/server/feature.server.d.ts.map +1 -1
- package/dist/features/upload/server/feature.server.js +17 -8
- package/dist/features/upload/server/feature.server.js.map +1 -1
- package/dist/features/upload/server/nodes/UploadNode.d.ts +9 -7
- package/dist/features/upload/server/nodes/UploadNode.d.ts.map +1 -1
- package/dist/features/upload/server/nodes/UploadNode.js.map +1 -1
- package/dist/features/upload/server/validate.d.ts.map +1 -1
- package/dist/features/upload/server/validate.js +7 -4
- package/dist/features/upload/server/validate.js.map +1 -1
- package/dist/field/Field.d.ts.map +1 -1
- package/dist/field/Field.js +29 -44
- package/dist/field/Field.js.map +1 -1
- package/dist/field/bundled.css +1 -1
- package/dist/field/index.d.ts.map +1 -1
- package/dist/field/index.js +63 -73
- package/dist/field/index.js.map +1 -1
- package/dist/field/rscEntry.d.ts +9 -0
- package/dist/field/rscEntry.d.ts.map +1 -0
- package/dist/field/rscEntry.js +37 -0
- package/dist/field/rscEntry.js.map +1 -0
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +94 -103
- package/dist/index.js.map +1 -1
- package/dist/lexical/EditorPlugin.d.ts.map +1 -1
- package/dist/lexical/EditorPlugin.js +2 -1
- package/dist/lexical/EditorPlugin.js.map +1 -1
- package/dist/lexical/LexicalEditor.d.ts +1 -1
- package/dist/lexical/LexicalEditor.d.ts.map +1 -1
- package/dist/lexical/LexicalEditor.js +10 -10
- package/dist/lexical/LexicalEditor.js.map +1 -1
- package/dist/lexical/LexicalProvider.d.ts +2 -2
- package/dist/lexical/LexicalProvider.d.ts.map +1 -1
- package/dist/lexical/LexicalProvider.js +9 -7
- package/dist/lexical/LexicalProvider.js.map +1 -1
- package/dist/lexical/config/client/EditorConfigProvider.d.ts +6 -5
- package/dist/lexical/config/client/EditorConfigProvider.d.ts.map +1 -1
- package/dist/lexical/config/client/EditorConfigProvider.js +13 -12
- package/dist/lexical/config/client/EditorConfigProvider.js.map +1 -1
- package/dist/lexical/config/client/loader.d.ts +1 -3
- package/dist/lexical/config/client/loader.d.ts.map +1 -1
- package/dist/lexical/config/client/loader.js +7 -19
- package/dist/lexical/config/client/loader.js.map +1 -1
- package/dist/lexical/config/client/sanitize.d.ts +1 -1
- package/dist/lexical/config/client/sanitize.d.ts.map +1 -1
- package/dist/lexical/config/client/sanitize.js +4 -4
- package/dist/lexical/config/client/sanitize.js.map +1 -1
- package/dist/lexical/config/server/loader.d.ts +2 -1
- package/dist/lexical/config/server/loader.d.ts.map +1 -1
- package/dist/lexical/config/server/loader.js +2 -0
- package/dist/lexical/config/server/loader.js.map +1 -1
- package/dist/lexical/config/server/sanitize.d.ts +1 -1
- package/dist/lexical/config/server/sanitize.d.ts.map +1 -1
- package/dist/lexical/config/server/sanitize.js +12 -11
- package/dist/lexical/config/server/sanitize.js.map +1 -1
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts +4 -4
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts.map +1 -1
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +82 -113
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts +2 -2
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts.map +1 -1
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +2 -2
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +1 -1
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts +3 -2
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts.map +1 -1
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js.map +1 -1
- package/dist/lexical/plugins/SlashMenu/index.d.ts.map +1 -1
- package/dist/lexical/plugins/SlashMenu/index.js +24 -30
- package/dist/lexical/plugins/SlashMenu/index.js.map +1 -1
- package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.d.ts.map +1 -1
- package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js +93 -130
- package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.d.ts +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.d.ts.map +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.js +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.js.map +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js.map +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.d.ts.map +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js +119 -137
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.d.ts.map +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js +16 -32
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js.map +1 -1
- package/dist/lexical/plugins/handles/utils/doesLineHeightAffectElement.d.ts.map +1 -1
- package/dist/lexical/plugins/handles/utils/doesLineHeightAffectElement.js +3 -1
- package/dist/lexical/plugins/handles/utils/doesLineHeightAffectElement.js.map +1 -1
- package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.d.ts.map +1 -1
- package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.js +3 -4
- package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.js.map +1 -1
- package/dist/lexical/plugins/handles/utils/setHandlePosition.d.ts.map +1 -1
- package/dist/lexical/plugins/handles/utils/setHandlePosition.js +4 -6
- package/dist/lexical/plugins/handles/utils/setHandlePosition.js.map +1 -1
- package/dist/lexical/theme/EditorTheme.d.ts.map +1 -1
- package/dist/lexical/theme/EditorTheme.js +1 -2
- package/dist/lexical/theme/EditorTheme.js.map +1 -1
- package/dist/lexical/ui/icons/Caret/index.svg +2 -2
- package/dist/lexical/utils/nodeFormat.d.ts +2 -2
- package/dist/lexical/utils/nodeFormat.d.ts.map +1 -1
- package/dist/lexical/utils/nodeFormat.js.map +1 -1
- package/dist/lexical/utils/rect.d.ts +4 -4
- package/dist/lexical/utils/rect.d.ts.map +1 -1
- package/dist/lexical/utils/rect.js.map +1 -1
- package/dist/lexical/utils/setFloatingElemPosition.d.ts +1 -1
- package/dist/lexical/utils/setFloatingElemPosition.d.ts.map +1 -1
- package/dist/lexical/utils/setFloatingElemPosition.js +1 -1
- package/dist/lexical/utils/setFloatingElemPosition.js.map +1 -1
- package/dist/lexical/utils/url.d.ts +5 -0
- package/dist/lexical/utils/url.d.ts.map +1 -1
- package/dist/lexical/utils/url.js +25 -5
- package/dist/lexical/utils/url.js.map +1 -1
- package/dist/populateGraphQL/populate.d.ts +3 -2
- package/dist/populateGraphQL/populate.d.ts.map +1 -1
- package/dist/populateGraphQL/populate.js +3 -1
- package/dist/populateGraphQL/populate.js.map +1 -1
- package/dist/populateGraphQL/populateLexicalPopulationPromises.d.ts +1 -1
- package/dist/populateGraphQL/populateLexicalPopulationPromises.d.ts.map +1 -1
- package/dist/populateGraphQL/populateLexicalPopulationPromises.js +5 -4
- package/dist/populateGraphQL/populateLexicalPopulationPromises.js.map +1 -1
- package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.js.map +1 -1
- package/dist/types.d.ts +20 -7
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utilities/createClientFeature.d.ts +3 -5
- package/dist/utilities/createClientFeature.d.ts.map +1 -1
- package/dist/utilities/createClientFeature.js +1 -4
- package/dist/utilities/createClientFeature.js.map +1 -1
- package/dist/utilities/createServerFeature.d.ts +1 -0
- package/dist/utilities/createServerFeature.d.ts.map +1 -1
- package/dist/utilities/createServerFeature.js +2 -0
- package/dist/utilities/createServerFeature.js.map +1 -1
- package/dist/utilities/fieldsDrawer/Drawer.d.ts +1 -0
- package/dist/utilities/fieldsDrawer/Drawer.d.ts.map +1 -1
- package/dist/utilities/fieldsDrawer/Drawer.js +68 -27
- 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 +115 -139
- package/dist/utilities/fieldsDrawer/DrawerContent.js.map +1 -1
- package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.d.ts +13 -0
- package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.d.ts.map +1 -0
- package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js +129 -0
- package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js.map +1 -0
- package/dist/utilities/fieldsDrawer/useLexicalDrawer.d.ts +10 -0
- package/dist/utilities/fieldsDrawer/useLexicalDrawer.d.ts.map +1 -0
- package/dist/utilities/fieldsDrawer/useLexicalDrawer.js +136 -0
- package/dist/utilities/fieldsDrawer/useLexicalDrawer.js.map +1 -0
- package/dist/utilities/fieldsDrawer/useLexicalListDrawer.d.ts +16 -0
- package/dist/utilities/fieldsDrawer/useLexicalListDrawer.d.ts.map +1 -0
- package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js +144 -0
- package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js.map +1 -0
- package/dist/utilities/generateImportMap.d.ts.map +1 -1
- package/dist/utilities/generateImportMap.js +2 -3
- package/dist/utilities/generateImportMap.js.map +1 -1
- package/dist/utilities/generateSchemaMap.d.ts.map +1 -1
- package/dist/utilities/generateSchemaMap.js +13 -10
- package/dist/utilities/generateSchemaMap.js.map +1 -1
- package/dist/utilities/initLexicalFeatures.d.ts +18 -0
- package/dist/utilities/initLexicalFeatures.d.ts.map +1 -0
- package/dist/utilities/initLexicalFeatures.js +95 -0
- package/dist/utilities/initLexicalFeatures.js.map +1 -0
- package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.d.ts +1 -1
- package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.d.ts.map +1 -1
- package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.js +1 -1
- package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.js.map +1 -1
- package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.d.ts +1 -1
- package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.d.ts.map +1 -1
- package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.js +5 -1
- package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.js.map +1 -1
- package/dist/utilities/useLexicalFeature.d.ts.map +1 -1
- package/dist/utilities/useLexicalFeature.js +12 -4
- package/dist/utilities/useLexicalFeature.js.map +1 -1
- package/dist/validate/index.d.ts.map +1 -1
- package/dist/validate/index.js +2 -2
- package/dist/validate/index.js.map +1 -1
- package/dist/validate/validateNodes.d.ts +2 -2
- package/dist/validate/validateNodes.d.ts.map +1 -1
- package/dist/validate/validateNodes.js +4 -4
- package/dist/validate/validateNodes.js.map +1 -1
- package/package.json +51 -49
- package/dist/cell/index.d.ts +0 -9
- package/dist/cell/index.d.ts.map +0 -1
- package/dist/cell/index.js +0 -135
- package/dist/cell/index.js.map +0 -1
- package/dist/exports/client/Field-63NGLPJB.js +0 -2
- package/dist/exports/client/Field-63NGLPJB.js.map +0 -7
- package/dist/exports/client/RelationshipComponent-3QWBV4GT.js +0 -2
- package/dist/exports/client/RelationshipComponent-3QWBV4GT.js.map +0 -7
- package/dist/exports/client/chunk-G5DTIOPI.js +0 -2
- package/dist/exports/client/chunk-G5DTIOPI.js.map +0 -7
- package/dist/exports/client/chunk-NI6Z4GBD.js +0 -2
- package/dist/exports/client/chunk-NI6Z4GBD.js.map +0 -7
- package/dist/exports/client/chunk-TO2W7Q2G.js +0 -2
- package/dist/exports/client/chunk-TO2W7Q2G.js.map +0 -7
- package/dist/exports/client/component-3OFD6Q4Z.js +0 -2
- package/dist/exports/client/component-3OFD6Q4Z.js.map +0 -7
- package/dist/exports/client/component-LCAAX56T.js +0 -2
- package/dist/exports/client/component-LCAAX56T.js.map +0 -7
- package/dist/exports/client/component-LLWMZU6K.js +0 -2
- package/dist/exports/client/component-LLWMZU6K.js.map +0 -7
- package/dist/exports/client/componentInline-72VZAAHP.js +0 -2
- package/dist/exports/client/componentInline-72VZAAHP.js.map +0 -7
- package/dist/features/createClientComponent.d.ts +0 -7
- package/dist/features/createClientComponent.d.ts.map +0 -1
- package/dist/features/createClientComponent.js +0 -13
- package/dist/features/createClientComponent.js.map +0 -1
- package/dist/features/createFeaturePropComponent.d.ts +0 -6
- package/dist/features/createFeaturePropComponent.d.ts.map +0 -1
- package/dist/features/createFeaturePropComponent.js +0 -19
- package/dist/features/createFeaturePropComponent.js.map +0 -1
- package/dist/utilities/generateComponentMap.d.ts +0 -6
- package/dist/utilities/generateComponentMap.d.ts.map +0 -1
- package/dist/utilities/generateComponentMap.js +0 -99
- package/dist/utilities/generateComponentMap.js.map +0 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
4
|
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
|
|
5
|
-
import {
|
|
5
|
+
import { useTranslation } from '@payloadcms/ui';
|
|
6
6
|
import { useCallback, useMemo, useState } from 'react';
|
|
7
7
|
import * as React from 'react';
|
|
8
8
|
import * as ReactDOM from 'react-dom';
|
|
@@ -17,13 +17,11 @@ function SlashMenuItem({
|
|
|
17
17
|
onMouseEnter
|
|
18
18
|
}) {
|
|
19
19
|
const {
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
fieldProps: {
|
|
21
|
+
featureClientSchemaMap,
|
|
22
|
+
schemaPath
|
|
22
23
|
}
|
|
23
24
|
} = useEditorConfigContext();
|
|
24
|
-
const {
|
|
25
|
-
schemaPath
|
|
26
|
-
} = useFieldProps();
|
|
27
25
|
const {
|
|
28
26
|
i18n
|
|
29
27
|
} = useTranslation();
|
|
@@ -34,8 +32,8 @@ function SlashMenuItem({
|
|
|
34
32
|
let title = item.key;
|
|
35
33
|
if (item.label) {
|
|
36
34
|
title = typeof item.label === 'function' ? item.label({
|
|
35
|
+
featureClientSchemaMap,
|
|
37
36
|
i18n,
|
|
38
|
-
richTextComponentMap,
|
|
39
37
|
schemaPath
|
|
40
38
|
}) : item.label;
|
|
41
39
|
}
|
|
@@ -75,24 +73,24 @@ export function SlashMenuPlugin({
|
|
|
75
73
|
i18n
|
|
76
74
|
} = useTranslation();
|
|
77
75
|
const {
|
|
78
|
-
|
|
79
|
-
|
|
76
|
+
fieldProps: {
|
|
77
|
+
featureClientSchemaMap,
|
|
78
|
+
schemaPath
|
|
80
79
|
}
|
|
81
80
|
} = useEditorConfigContext();
|
|
82
|
-
const {
|
|
83
|
-
schemaPath
|
|
84
|
-
} = useFieldProps();
|
|
85
81
|
const checkForTriggerMatch = useMenuTriggerMatch('/', {
|
|
86
82
|
minLength: 0
|
|
87
83
|
});
|
|
88
84
|
const getDynamicItems = useCallback(() => {
|
|
89
85
|
let groupWithItems = [];
|
|
90
86
|
for (const dynamicItem of editorConfig.features.slashMenu.dynamicGroups) {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
87
|
+
if (queryString) {
|
|
88
|
+
const dynamicGroupWithItems = dynamicItem({
|
|
89
|
+
editor,
|
|
90
|
+
queryString
|
|
91
|
+
});
|
|
92
|
+
groupWithItems = groupWithItems.concat(dynamicGroupWithItems);
|
|
93
|
+
}
|
|
96
94
|
}
|
|
97
95
|
return groupWithItems;
|
|
98
96
|
}, [editor, queryString, editorConfig?.features]);
|
|
@@ -103,13 +101,14 @@ export function SlashMenuPlugin({
|
|
|
103
101
|
}
|
|
104
102
|
if (queryString) {
|
|
105
103
|
// Filter current groups first
|
|
104
|
+
// @ts-expect-error - TODO: fix this
|
|
106
105
|
groupsWithItems = groupsWithItems.map(group => {
|
|
107
106
|
const filteredItems = group.items.filter(item => {
|
|
108
107
|
let itemTitle = item.key;
|
|
109
108
|
if (item.label) {
|
|
110
109
|
itemTitle = typeof item.label === 'function' ? item.label({
|
|
110
|
+
featureClientSchemaMap,
|
|
111
111
|
i18n,
|
|
112
|
-
richTextComponentMap,
|
|
113
112
|
schemaPath
|
|
114
113
|
}) : item.label;
|
|
115
114
|
}
|
|
@@ -152,34 +151,29 @@ export function SlashMenuPlugin({
|
|
|
152
151
|
}
|
|
153
152
|
}
|
|
154
153
|
return groupsWithItems;
|
|
155
|
-
}, [
|
|
156
|
-
const onSelectItem = useCallback((selectedItem,
|
|
157
|
-
|
|
158
|
-
editor.update(() => {
|
|
159
|
-
nodeToRemove.remove();
|
|
160
|
-
});
|
|
161
|
-
}
|
|
154
|
+
}, [queryString, editorConfig?.features.slashMenu.groups, getDynamicItems, featureClientSchemaMap, i18n, schemaPath]);
|
|
155
|
+
const onSelectItem = useCallback((selectedItem, closeMenu, matchingString) => {
|
|
156
|
+
closeMenu();
|
|
162
157
|
selectedItem.onSelect({
|
|
163
158
|
editor,
|
|
164
159
|
queryString: matchingString
|
|
165
160
|
});
|
|
166
|
-
closeMenu();
|
|
167
161
|
}, [editor]);
|
|
168
162
|
return /*#__PURE__*/_jsx(LexicalTypeaheadMenuPlugin, {
|
|
169
163
|
anchorElem: anchorElem,
|
|
170
164
|
groups: groups,
|
|
171
165
|
menuRenderFn: (anchorElementRef, {
|
|
172
|
-
selectItemAndCleanUp,
|
|
173
166
|
selectedItemKey,
|
|
167
|
+
selectItemAndCleanUp,
|
|
174
168
|
setSelectedItemKey
|
|
175
|
-
}) => anchorElementRef.current && groups.length ? /*#__PURE__*/ReactDOM.createPortal(
|
|
169
|
+
}) => anchorElementRef.current && groups.length ? /*#__PURE__*/ReactDOM.createPortal(/*#__PURE__*/_jsx("div", {
|
|
176
170
|
className: baseClass,
|
|
177
171
|
children: groups.map(group_4 => {
|
|
178
172
|
let groupTitle = group_4.key;
|
|
179
|
-
if (group_4.label) {
|
|
173
|
+
if (group_4.label && featureClientSchemaMap) {
|
|
180
174
|
groupTitle = typeof group_4.label === 'function' ? group_4.label({
|
|
175
|
+
featureClientSchemaMap,
|
|
181
176
|
i18n,
|
|
182
|
-
richTextComponentMap,
|
|
183
177
|
schemaPath
|
|
184
178
|
}) : group_4.label;
|
|
185
179
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["useLexicalComposerContext","useFieldProps","useTranslation","useCallback","useMemo","useState","React","ReactDOM","useEditorConfigContext","LexicalTypeaheadMenuPlugin","useMenuTriggerMatch","baseClass","SlashMenuItem","isSelected","item","onClick","onMouseEnter","field","richTextComponentMap","schemaPath","i18n","className","key","title","label","length","substring","_jsxs","id","ref","element","current","role","tabIndex","type","Icon","_jsx","SlashMenuPlugin","anchorElem","document","body","editor","queryString","setQueryString","editorConfig","checkForTriggerMatch","minLength","getDynamicItems","groupWithItems","dynamicItem","features","slashMenu","dynamicGroups","dynamicGroupWithItems","concat","groups","groupsWithItems","groupWithItem","push","map","group","filteredItems","items","filter","itemTitle","RegExp","exec","keywords","some","keyword","dynamicItemGroups","dynamicGroup","find","onSelectItem","selectedItem","nodeToRemove","closeMenu","matchingString","update","remove","onSelect","menuRenderFn","anchorElementRef","selectItemAndCleanUp","selectedItemKey","setSelectedItemKey","createPortal","groupTitle","oi","index","onQueryChange","triggerFn"],"sources":["../../../../src/lexical/plugins/SlashMenu/index.tsx"],"sourcesContent":["'use client'\nimport type { TextNode } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { useFieldProps, useTranslation } from '@payloadcms/ui'\nimport { useCallback, useMemo, useState } from 'react'\nimport * as React from 'react'\nimport * as ReactDOM from 'react-dom'\n\nimport type {\n SlashMenuGroup,\n SlashMenuGroupInternal,\n SlashMenuItemInternal,\n SlashMenuItem as SlashMenuItemType,\n} from './LexicalTypeaheadMenuPlugin/types.js'\n\nimport { useEditorConfigContext } from '../../config/client/EditorConfigProvider.js'\nimport { LexicalTypeaheadMenuPlugin } from './LexicalTypeaheadMenuPlugin/index.js'\nimport './index.scss'\nimport { useMenuTriggerMatch } from './useMenuTriggerMatch.js'\n\nconst baseClass = 'slash-menu-popup'\n\nfunction SlashMenuItem({\n isSelected,\n item,\n onClick,\n onMouseEnter,\n}: {\n index: number\n isSelected: boolean\n item: SlashMenuItemInternal\n onClick: () => void\n onMouseEnter: () => void\n}) {\n const {\n field: { richTextComponentMap },\n } = useEditorConfigContext()\n const { schemaPath } = useFieldProps()\n\n const { i18n } = useTranslation()\n\n let className = `${baseClass}__item ${baseClass}__item-${item.key}`\n if (isSelected) {\n className += ` ${baseClass}__item--selected`\n }\n\n let title = item.key\n if (item.label) {\n title =\n typeof item.label === 'function'\n ? item.label({ i18n, richTextComponentMap, schemaPath })\n : item.label\n }\n // Crop title to max. 25 characters\n if (title.length > 25) {\n title = title.substring(0, 25) + '...'\n }\n\n return (\n <button\n aria-selected={isSelected}\n className={className}\n id={baseClass + '__item-' + item.key}\n key={item.key}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n ref={(element) => {\n item.ref = { current: element }\n }}\n role=\"option\"\n tabIndex={-1}\n type=\"button\"\n >\n {item?.Icon && <item.Icon />}\n\n <span className={`${baseClass}__item-text`}>{title}</span>\n </button>\n )\n}\n\nexport function SlashMenuPlugin({\n anchorElem = document.body,\n}: {\n anchorElem?: HTMLElement\n}): React.ReactElement {\n const [editor] = useLexicalComposerContext()\n const [queryString, setQueryString] = useState<null | string>(null)\n const { editorConfig } = useEditorConfigContext()\n const { i18n } = useTranslation()\n const {\n field: { richTextComponentMap },\n } = useEditorConfigContext()\n const { schemaPath } = useFieldProps()\n\n const checkForTriggerMatch = useMenuTriggerMatch('/', {\n minLength: 0,\n })\n\n const getDynamicItems = useCallback(() => {\n let groupWithItems: Array<SlashMenuGroup> = []\n\n for (const dynamicItem of editorConfig.features.slashMenu.dynamicGroups) {\n const dynamicGroupWithItems = dynamicItem({\n editor,\n queryString,\n })\n groupWithItems = groupWithItems.concat(dynamicGroupWithItems)\n }\n\n return groupWithItems\n }, [editor, queryString, editorConfig?.features])\n\n const groups: SlashMenuGroup[] = useMemo(() => {\n let groupsWithItems: SlashMenuGroup[] = []\n for (const groupWithItem of editorConfig?.features.slashMenu.groups ?? []) {\n groupsWithItems.push(groupWithItem)\n }\n\n if (queryString) {\n // Filter current groups first\n groupsWithItems = groupsWithItems.map((group) => {\n const filteredItems = group.items.filter((item) => {\n let itemTitle = item.key\n if (item.label) {\n itemTitle =\n typeof item.label === 'function'\n ? item.label({ i18n, richTextComponentMap, schemaPath })\n : item.label\n }\n\n if (new RegExp(queryString, 'gi').exec(itemTitle)) {\n return true\n }\n if (item.keywords != null) {\n return item.keywords.some((keyword) => new RegExp(queryString, 'gi').exec(keyword))\n }\n return false\n })\n if (filteredItems.length) {\n return {\n ...group,\n items: filteredItems,\n }\n }\n return null\n })\n\n groupsWithItems = groupsWithItems.filter((group) => group != null)\n\n // Now add dynamic groups\n const dynamicItemGroups = getDynamicItems()\n\n // merge dynamic items into groups\n for (const dynamicGroup of dynamicItemGroups) {\n // 1. find the group with the same name or create new one\n let group = groupsWithItems.find((group) => group.key === dynamicGroup.key)\n if (!group) {\n group = {\n ...dynamicGroup,\n items: [],\n }\n } else {\n groupsWithItems = groupsWithItems.filter((group) => group.key !== dynamicGroup.key)\n }\n\n // 2. Add items to group items array and add to sanitized.slashMenu.groupsWithItems\n if (group?.items?.length) {\n group.items = group.items.concat(group.items)\n }\n groupsWithItems.push(group)\n }\n }\n\n return groupsWithItems\n }, [getDynamicItems, queryString, editorConfig?.features, i18n])\n\n const onSelectItem = useCallback(\n (\n selectedItem: SlashMenuItemType,\n nodeToRemove: TextNode | null,\n closeMenu: () => void,\n matchingString: string,\n ) => {\n if (nodeToRemove) {\n editor.update(() => {\n nodeToRemove.remove()\n })\n }\n selectedItem.onSelect({ editor, queryString: matchingString })\n\n closeMenu()\n },\n [editor],\n )\n\n return (\n <LexicalTypeaheadMenuPlugin\n anchorElem={anchorElem}\n groups={groups as SlashMenuGroupInternal[]}\n menuRenderFn={(\n anchorElementRef,\n { selectItemAndCleanUp, selectedItemKey, setSelectedItemKey },\n ) =>\n anchorElementRef.current && groups.length\n ? ReactDOM.createPortal(\n <div className={baseClass}>\n {groups.map((group) => {\n let groupTitle = group.key\n if (group.label) {\n groupTitle =\n typeof group.label === 'function'\n ? group.label({ i18n, richTextComponentMap, schemaPath })\n : group.label\n }\n\n return (\n <div\n className={`${baseClass}__group ${baseClass}__group-${group.key}`}\n key={group.key}\n >\n <div className={`${baseClass}__group-title`}>{groupTitle}</div>\n {group.items.map((item, oi: number) => (\n <SlashMenuItem\n index={oi}\n isSelected={selectedItemKey === item.key}\n item={item as SlashMenuItemInternal}\n key={item.key}\n onClick={() => {\n setSelectedItemKey(item.key)\n selectItemAndCleanUp(item)\n }}\n onMouseEnter={() => {\n setSelectedItemKey(item.key)\n }}\n />\n ))}\n </div>\n )\n })}\n </div>,\n anchorElementRef.current,\n )\n : null\n }\n onQueryChange={setQueryString}\n onSelectItem={onSelectItem}\n triggerFn={checkForTriggerMatch}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["useLexicalComposerContext","useTranslation","useCallback","useMemo","useState","React","ReactDOM","useEditorConfigContext","LexicalTypeaheadMenuPlugin","useMenuTriggerMatch","baseClass","SlashMenuItem","isSelected","item","onClick","onMouseEnter","fieldProps","featureClientSchemaMap","schemaPath","i18n","className","key","title","label","length","substring","_jsxs","id","ref","element","current","role","tabIndex","type","Icon","_jsx","SlashMenuPlugin","anchorElem","document","body","editor","queryString","setQueryString","editorConfig","checkForTriggerMatch","minLength","getDynamicItems","groupWithItems","dynamicItem","features","slashMenu","dynamicGroups","dynamicGroupWithItems","concat","groups","groupsWithItems","groupWithItem","push","map","group","filteredItems","items","filter","itemTitle","RegExp","exec","keywords","some","keyword","dynamicItemGroups","dynamicGroup","find","onSelectItem","selectedItem","closeMenu","matchingString","onSelect","menuRenderFn","anchorElementRef","selectedItemKey","selectItemAndCleanUp","setSelectedItemKey","createPortal","groupTitle","oi","index","onQueryChange","triggerFn"],"sources":["../../../../src/lexical/plugins/SlashMenu/index.tsx"],"sourcesContent":["'use client'\nimport type { TextNode } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { useTranslation } from '@payloadcms/ui'\nimport { useCallback, useMemo, useState } from 'react'\nimport * as React from 'react'\nimport * as ReactDOM from 'react-dom'\n\nimport type {\n SlashMenuGroup,\n SlashMenuGroupInternal,\n SlashMenuItemInternal,\n SlashMenuItem as SlashMenuItemType,\n} from './LexicalTypeaheadMenuPlugin/types.js'\n\nimport { useEditorConfigContext } from '../../config/client/EditorConfigProvider.js'\nimport './index.scss'\nimport { LexicalTypeaheadMenuPlugin } from './LexicalTypeaheadMenuPlugin/index.js'\nimport { useMenuTriggerMatch } from './useMenuTriggerMatch.js'\n\nconst baseClass = 'slash-menu-popup'\n\nfunction SlashMenuItem({\n isSelected,\n item,\n onClick,\n onMouseEnter,\n}: {\n index: number\n isSelected: boolean\n item: SlashMenuItemInternal\n onClick: () => void\n onMouseEnter: () => void\n}) {\n const {\n fieldProps: { featureClientSchemaMap, schemaPath },\n } = useEditorConfigContext()\n\n const { i18n } = useTranslation()\n\n let className = `${baseClass}__item ${baseClass}__item-${item.key}`\n if (isSelected) {\n className += ` ${baseClass}__item--selected`\n }\n\n let title = item.key\n if (item.label) {\n title =\n typeof item.label === 'function'\n ? item.label({ featureClientSchemaMap, i18n, schemaPath })\n : item.label\n }\n // Crop title to max. 25 characters\n if (title.length > 25) {\n title = title.substring(0, 25) + '...'\n }\n\n return (\n <button\n aria-selected={isSelected}\n className={className}\n id={baseClass + '__item-' + item.key}\n key={item.key}\n onClick={onClick}\n onMouseEnter={onMouseEnter}\n ref={(element) => {\n item.ref = { current: element }\n }}\n role=\"option\"\n tabIndex={-1}\n type=\"button\"\n >\n {item?.Icon && <item.Icon />}\n\n <span className={`${baseClass}__item-text`}>{title}</span>\n </button>\n )\n}\n\nexport function SlashMenuPlugin({\n anchorElem = document.body,\n}: {\n anchorElem?: HTMLElement\n}): React.ReactElement {\n const [editor] = useLexicalComposerContext()\n const [queryString, setQueryString] = useState<null | string>(null)\n const { editorConfig } = useEditorConfigContext()\n const { i18n } = useTranslation()\n const {\n fieldProps: { featureClientSchemaMap, schemaPath },\n } = useEditorConfigContext()\n\n const checkForTriggerMatch = useMenuTriggerMatch('/', {\n minLength: 0,\n })\n\n const getDynamicItems = useCallback(() => {\n let groupWithItems: Array<SlashMenuGroup> = []\n\n for (const dynamicItem of editorConfig.features.slashMenu.dynamicGroups) {\n if (queryString) {\n const dynamicGroupWithItems = dynamicItem({\n editor,\n queryString,\n })\n groupWithItems = groupWithItems.concat(dynamicGroupWithItems)\n }\n }\n\n return groupWithItems\n }, [editor, queryString, editorConfig?.features])\n\n const groups: SlashMenuGroup[] = useMemo(() => {\n let groupsWithItems: SlashMenuGroup[] = []\n for (const groupWithItem of editorConfig?.features.slashMenu.groups ?? []) {\n groupsWithItems.push(groupWithItem)\n }\n\n if (queryString) {\n // Filter current groups first\n // @ts-expect-error - TODO: fix this\n groupsWithItems = groupsWithItems.map((group) => {\n const filteredItems = group.items.filter((item) => {\n let itemTitle = item.key\n if (item.label) {\n itemTitle =\n typeof item.label === 'function'\n ? item.label({ featureClientSchemaMap, i18n, schemaPath })\n : item.label\n }\n\n if (new RegExp(queryString, 'gi').exec(itemTitle)) {\n return true\n }\n if (item.keywords != null) {\n return item.keywords.some((keyword) => new RegExp(queryString, 'gi').exec(keyword))\n }\n return false\n })\n if (filteredItems.length) {\n return {\n ...group,\n items: filteredItems,\n }\n }\n return null\n })\n\n groupsWithItems = groupsWithItems.filter((group) => group != null)\n\n // Now add dynamic groups\n const dynamicItemGroups = getDynamicItems()\n\n // merge dynamic items into groups\n for (const dynamicGroup of dynamicItemGroups) {\n // 1. find the group with the same name or create new one\n let group = groupsWithItems.find((group) => group.key === dynamicGroup.key)\n if (!group) {\n group = {\n ...dynamicGroup,\n items: [],\n }\n } else {\n groupsWithItems = groupsWithItems.filter((group) => group.key !== dynamicGroup.key)\n }\n\n // 2. Add items to group items array and add to sanitized.slashMenu.groupsWithItems\n if (group?.items?.length) {\n group.items = group.items.concat(group.items)\n }\n groupsWithItems.push(group)\n }\n }\n\n return groupsWithItems\n }, [\n queryString,\n editorConfig?.features.slashMenu.groups,\n getDynamicItems,\n featureClientSchemaMap,\n i18n,\n schemaPath,\n ])\n\n const onSelectItem = useCallback(\n (selectedItem: SlashMenuItemType, closeMenu: () => void, matchingString: string) => {\n closeMenu()\n\n selectedItem.onSelect({ editor, queryString: matchingString })\n },\n [editor],\n )\n\n return (\n <LexicalTypeaheadMenuPlugin\n anchorElem={anchorElem}\n groups={groups as SlashMenuGroupInternal[]}\n menuRenderFn={(\n anchorElementRef,\n { selectedItemKey, selectItemAndCleanUp, setSelectedItemKey },\n ) =>\n anchorElementRef.current && groups.length\n ? ReactDOM.createPortal(\n <div className={baseClass}>\n {groups.map((group) => {\n let groupTitle = group.key\n if (group.label && featureClientSchemaMap) {\n groupTitle =\n typeof group.label === 'function'\n ? group.label({ featureClientSchemaMap, i18n, schemaPath })\n : group.label\n }\n\n return (\n <div\n className={`${baseClass}__group ${baseClass}__group-${group.key}`}\n key={group.key}\n >\n <div className={`${baseClass}__group-title`}>{groupTitle}</div>\n {group.items.map((item, oi: number) => (\n <SlashMenuItem\n index={oi}\n isSelected={selectedItemKey === item.key}\n item={item as SlashMenuItemInternal}\n key={item.key}\n onClick={() => {\n setSelectedItemKey(item.key)\n selectItemAndCleanUp(item)\n }}\n onMouseEnter={() => {\n setSelectedItemKey(item.key)\n }}\n />\n ))}\n </div>\n )\n })}\n </div>,\n anchorElementRef.current,\n )\n : null\n }\n onQueryChange={setQueryString}\n onSelectItem={onSelectItem}\n triggerFn={checkForTriggerMatch}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lexical/plugins/handles/AddBlockHandlePlugin/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAa9B,OAAO,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lexical/plugins/handles/AddBlockHandlePlugin/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAa9B,OAAO,cAAc,CAAA;AA2LrB,wBAAgB,oBAAoB,CAAC,EACnC,UAA0B,GAC3B,EAAE;IACD,UAAU,CAAC,EAAE,WAAW,CAAA;CACzB,GAAG,KAAK,CAAC,YAAY,CAGrB"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { c as _c } from "react/compiler-runtime";
|
|
4
3
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
4
|
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
|
|
6
5
|
import { $createParagraphNode } from 'lexical';
|
|
@@ -28,7 +27,6 @@ function getCurrentIndex(keysLength) {
|
|
|
28
27
|
return Math.floor(keysLength / 2);
|
|
29
28
|
}
|
|
30
29
|
function useAddBlockHandle(editor, anchorElem, isEditable) {
|
|
31
|
-
const $ = _c(15);
|
|
32
30
|
const scrollerElem = anchorElem.parentElement;
|
|
33
31
|
const {
|
|
34
32
|
editorConfig
|
|
@@ -36,147 +34,112 @@ function useAddBlockHandle(editor, anchorElem, isEditable) {
|
|
|
36
34
|
const blockHandleHorizontalOffset = editorConfig?.admin?.hideGutter ? -24 : 12;
|
|
37
35
|
const menuRef = useRef(null);
|
|
38
36
|
const [hoveredElement, setHoveredElement] = useState(null);
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
function onDocumentMouseMove(event) {
|
|
39
|
+
const target = event.target;
|
|
40
|
+
if (!isHTMLElement(target)) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const distanceFromScrollerElem = calculateDistanceFromScrollerElem(scrollerElem, event.pageX, event.pageY, target);
|
|
44
|
+
if (distanceFromScrollerElem === -1) {
|
|
45
|
+
setHoveredElement(null);
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
if (isOnHandleElement(target, ADD_BLOCK_MENU_CLASSNAME)) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
const topLevelNodeKeys = getTopLevelNodeKeys(editor);
|
|
52
|
+
const {
|
|
53
|
+
blockElem: _emptyBlockElem,
|
|
54
|
+
blockNode,
|
|
55
|
+
foundAtIndex
|
|
56
|
+
} = getNodeCloseToPoint({
|
|
57
|
+
anchorElem,
|
|
58
|
+
cache_threshold: 0,
|
|
59
|
+
editor,
|
|
60
|
+
horizontalOffset: -distanceFromScrollerElem,
|
|
61
|
+
point: new Point(event.x, event.y),
|
|
62
|
+
returnEmptyParagraphs: true,
|
|
63
|
+
startIndex: getCurrentIndex(topLevelNodeKeys.length),
|
|
64
|
+
useEdgeAsDefault: false
|
|
65
|
+
});
|
|
66
|
+
prevIndex = foundAtIndex;
|
|
67
|
+
if (!_emptyBlockElem) {
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
if (blockNode && (hoveredElement?.node !== blockNode || hoveredElement?.elem !== _emptyBlockElem)) {
|
|
71
|
+
setHoveredElement({
|
|
72
|
+
elem: _emptyBlockElem,
|
|
73
|
+
node: blockNode
|
|
70
74
|
});
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
document?.addEventListener("mousemove", onDocumentMouseMove);
|
|
83
|
-
return () => {
|
|
84
|
-
document?.removeEventListener("mousemove", onDocumentMouseMove);
|
|
85
|
-
};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
// Since the draggableBlockElem is outside the actual editor, we need to listen to the document
|
|
78
|
+
// to be able to detect when the mouse is outside the editor and respect a buffer around
|
|
79
|
+
// the scrollerElem to avoid the draggableBlockElem disappearing too early.
|
|
80
|
+
document?.addEventListener('mousemove', onDocumentMouseMove);
|
|
81
|
+
return () => {
|
|
82
|
+
document?.removeEventListener('mousemove', onDocumentMouseMove);
|
|
86
83
|
};
|
|
87
|
-
|
|
88
|
-
$[0] = scrollerElem;
|
|
89
|
-
$[1] = editor;
|
|
90
|
-
$[2] = anchorElem;
|
|
91
|
-
$[3] = hoveredElement;
|
|
92
|
-
$[4] = t0;
|
|
93
|
-
$[5] = t1;
|
|
94
|
-
} else {
|
|
95
|
-
t0 = $[4];
|
|
96
|
-
t1 = $[5];
|
|
97
|
-
}
|
|
98
|
-
useEffect(t0, t1);
|
|
99
|
-
let t2;
|
|
100
|
-
if ($[6] !== anchorElem || $[7] !== hoveredElement || $[8] !== blockHandleHorizontalOffset) {
|
|
101
|
-
t2 = [anchorElem, hoveredElement, blockHandleHorizontalOffset];
|
|
102
|
-
$[6] = anchorElem;
|
|
103
|
-
$[7] = hoveredElement;
|
|
104
|
-
$[8] = blockHandleHorizontalOffset;
|
|
105
|
-
$[9] = t2;
|
|
106
|
-
} else {
|
|
107
|
-
t2 = $[9];
|
|
108
|
-
}
|
|
84
|
+
}, [scrollerElem, anchorElem, editor, hoveredElement]);
|
|
109
85
|
useEffect(() => {
|
|
110
86
|
if (menuRef.current && hoveredElement?.node) {
|
|
111
87
|
setHandlePosition(hoveredElement?.elem, menuRef.current, anchorElem, blockHandleHorizontalOffset);
|
|
112
88
|
}
|
|
113
|
-
},
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
89
|
+
}, [anchorElem, hoveredElement, blockHandleHorizontalOffset]);
|
|
90
|
+
const handleAddClick = useCallback(event_0 => {
|
|
91
|
+
let hoveredElementToUse = hoveredElement;
|
|
92
|
+
if (!hoveredElementToUse?.node) {
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
// 1. Update hoveredElement.node to a new paragraph node if the hoveredElement.node is not a paragraph node
|
|
96
|
+
editor.update(() => {
|
|
97
|
+
// Check if blockNode is an empty text node
|
|
98
|
+
let isEmptyParagraph = true;
|
|
99
|
+
if (hoveredElementToUse?.node.getType() !== 'paragraph' || hoveredElementToUse.node.getTextContent() !== '') {
|
|
100
|
+
isEmptyParagraph = false;
|
|
121
101
|
}
|
|
102
|
+
if (!isEmptyParagraph) {
|
|
103
|
+
const newParagraph = $createParagraphNode();
|
|
104
|
+
hoveredElementToUse?.node.insertAfter(newParagraph);
|
|
105
|
+
setTimeout(() => {
|
|
106
|
+
hoveredElementToUse = {
|
|
107
|
+
elem: editor.getElementByKey(newParagraph.getKey()),
|
|
108
|
+
node: newParagraph
|
|
109
|
+
};
|
|
110
|
+
setHoveredElement(hoveredElementToUse);
|
|
111
|
+
}, 0);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
// 2. Focus on the new paragraph node
|
|
115
|
+
setTimeout(() => {
|
|
122
116
|
editor.update(() => {
|
|
123
|
-
|
|
124
|
-
if (hoveredElementToUse
|
|
125
|
-
|
|
126
|
-
}
|
|
127
|
-
if (!isEmptyParagraph) {
|
|
128
|
-
const newParagraph = $createParagraphNode();
|
|
129
|
-
hoveredElementToUse.node.insertAfter(newParagraph);
|
|
130
|
-
setTimeout(() => {
|
|
131
|
-
hoveredElementToUse = {
|
|
132
|
-
elem: editor.getElementByKey(newParagraph.getKey()),
|
|
133
|
-
node: newParagraph
|
|
134
|
-
};
|
|
135
|
-
setHoveredElement(hoveredElementToUse);
|
|
136
|
-
}, 0);
|
|
117
|
+
editor.focus();
|
|
118
|
+
if (hoveredElementToUse?.node && 'select' in hoveredElementToUse.node && typeof hoveredElementToUse.node.select === 'function') {
|
|
119
|
+
hoveredElementToUse.node.select();
|
|
137
120
|
}
|
|
138
121
|
});
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
event_0.stopPropagation();
|
|
153
|
-
event_0.preventDefault();
|
|
154
|
-
};
|
|
155
|
-
$[10] = hoveredElement;
|
|
156
|
-
$[11] = editor;
|
|
157
|
-
$[12] = t3;
|
|
158
|
-
} else {
|
|
159
|
-
t3 = $[12];
|
|
160
|
-
}
|
|
161
|
-
const handleAddClick = t3;
|
|
162
|
-
let t4;
|
|
163
|
-
if ($[13] !== handleAddClick) {
|
|
164
|
-
t4 = event_1 => {
|
|
165
|
-
handleAddClick(event_1);
|
|
166
|
-
};
|
|
167
|
-
$[13] = handleAddClick;
|
|
168
|
-
$[14] = t4;
|
|
169
|
-
} else {
|
|
170
|
-
t4 = $[14];
|
|
171
|
-
}
|
|
172
|
-
return createPortal(_jsx(React.Fragment, {
|
|
173
|
-
children: _jsx("button", {
|
|
122
|
+
}, 1);
|
|
123
|
+
// Make sure this is called AFTER the focusing has been processed by the browser
|
|
124
|
+
// Otherwise, this won't work
|
|
125
|
+
setTimeout(() => {
|
|
126
|
+
editor.dispatchCommand(ENABLE_SLASH_MENU_COMMAND, {
|
|
127
|
+
node: hoveredElementToUse?.node
|
|
128
|
+
});
|
|
129
|
+
}, 2);
|
|
130
|
+
event_0.stopPropagation();
|
|
131
|
+
event_0.preventDefault();
|
|
132
|
+
}, [editor, hoveredElement]);
|
|
133
|
+
return /*#__PURE__*/createPortal(/*#__PURE__*/_jsx(React.Fragment, {
|
|
134
|
+
children: /*#__PURE__*/_jsx("button", {
|
|
174
135
|
className: "icon add-block-menu",
|
|
175
|
-
onClick:
|
|
136
|
+
onClick: event_1 => {
|
|
137
|
+
handleAddClick(event_1);
|
|
138
|
+
},
|
|
176
139
|
ref: menuRef,
|
|
177
140
|
type: "button",
|
|
178
|
-
children: _jsx("div", {
|
|
179
|
-
className: isEditable ?
|
|
141
|
+
children: /*#__PURE__*/_jsx("div", {
|
|
142
|
+
className: isEditable ? 'icon' : ''
|
|
180
143
|
})
|
|
181
144
|
})
|
|
182
145
|
}), anchorElem);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","$createParagraphNode","React","useCallback","useEffect","useRef","useState","createPortal","useEditorConfigContext","isHTMLElement","Point","ENABLE_SLASH_MENU_COMMAND","calculateDistanceFromScrollerElem","getNodeCloseToPoint","getTopLevelNodeKeys","isOnHandleElement","setHandlePosition","ADD_BLOCK_MENU_CLASSNAME","prevIndex","Infinity","getCurrentIndex","keysLength","Math","floor","useAddBlockHandle","editor","anchorElem","isEditable","$","scrollerElem","parentElement","editorConfig","blockHandleHorizontalOffset","admin","hideGutter","menuRef","hoveredElement","setHoveredElement","t0","t1","onDocumentMouseMove","event","target","distanceFromScrollerElem","pageX","pageY","topLevelNodeKeys","blockElem","_emptyBlockElem","blockNode","foundAtIndex","cache_threshold","horizontalOffset","point","x","y","returnEmptyParagraphs","startIndex","length","useEdgeAsDefault","node","elem","document","addEventListener","removeEventListener","t2","current","t3","event_0","hoveredElementToUse","update","isEmptyParagraph","getType","getTextContent","newParagraph","insertAfter","setTimeout","getElementByKey","getKey","focus","select","dispatchCommand","stopPropagation","preventDefault","handleAddClick","t4","event_1","_jsx","Fragment","children","className","onClick","ref","type","AddBlockHandlePlugin","undefined","body","_editable"],"sources":["../../../../../src/lexical/plugins/handles/AddBlockHandlePlugin/index.tsx"],"sourcesContent":["'use client'\nimport type { LexicalEditor, LexicalNode, ParagraphNode } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $createParagraphNode } from 'lexical'\nimport * as React from 'react'\nimport { type JSX, useCallback, useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { useEditorConfigContext } from '../../../config/client/EditorConfigProvider.js'\nimport { isHTMLElement } from '../../../utils/guard.js'\nimport { Point } from '../../../utils/point.js'\nimport { ENABLE_SLASH_MENU_COMMAND } from '../../SlashMenu/LexicalTypeaheadMenuPlugin/index.js'\nimport { calculateDistanceFromScrollerElem } from '../utils/calculateDistanceFromScrollerElem.js'\nimport { getNodeCloseToPoint } from '../utils/getNodeCloseToPoint.js'\nimport { getTopLevelNodeKeys } from '../utils/getTopLevelNodeKeys.js'\nimport { isOnHandleElement } from '../utils/isOnHandleElement.js'\nimport { setHandlePosition } from '../utils/setHandlePosition.js'\nimport './index.scss'\n\nconst ADD_BLOCK_MENU_CLASSNAME = 'add-block-menu'\n\nlet prevIndex = Infinity\n\nfunction getCurrentIndex(keysLength: number): number {\n if (keysLength === 0) {\n return Infinity\n }\n if (prevIndex >= 0 && prevIndex < keysLength) {\n return prevIndex\n }\n\n return Math.floor(keysLength / 2)\n}\n\nfunction useAddBlockHandle(\n editor: LexicalEditor,\n anchorElem: HTMLElement,\n isEditable: boolean,\n): React.ReactElement {\n const scrollerElem = anchorElem.parentElement\n\n const { editorConfig } = useEditorConfigContext()\n const blockHandleHorizontalOffset = editorConfig?.admin?.hideGutter ? -24 : 12\n\n const menuRef = useRef<HTMLButtonElement>(null)\n const [hoveredElement, setHoveredElement] = useState<{\n elem: HTMLElement\n node: LexicalNode\n } | null>(null)\n\n useEffect(() => {\n function onDocumentMouseMove(event: MouseEvent) {\n const target = event.target\n if (!isHTMLElement(target)) {\n return\n }\n\n const distanceFromScrollerElem = calculateDistanceFromScrollerElem(\n scrollerElem,\n event.pageX,\n event.pageY,\n target,\n )\n\n if (distanceFromScrollerElem === -1) {\n setHoveredElement(null)\n return\n }\n\n if (isOnHandleElement(target, ADD_BLOCK_MENU_CLASSNAME)) {\n return\n }\n const topLevelNodeKeys = getTopLevelNodeKeys(editor)\n\n const {\n blockElem: _emptyBlockElem,\n blockNode,\n foundAtIndex,\n } = getNodeCloseToPoint({\n anchorElem,\n cache_threshold: 0,\n editor,\n horizontalOffset: -distanceFromScrollerElem,\n point: new Point(event.x, event.y),\n returnEmptyParagraphs: true,\n startIndex: getCurrentIndex(topLevelNodeKeys.length),\n useEdgeAsDefault: false,\n })\n\n prevIndex = foundAtIndex\n\n if (!_emptyBlockElem) {\n return\n }\n if (hoveredElement?.node !== blockNode || hoveredElement?.elem !== _emptyBlockElem) {\n setHoveredElement({\n elem: _emptyBlockElem,\n node: blockNode,\n })\n }\n }\n\n // Since the draggableBlockElem is outside the actual editor, we need to listen to the document\n // to be able to detect when the mouse is outside the editor and respect a buffer around\n // the scrollerElem to avoid the draggableBlockElem disappearing too early.\n document?.addEventListener('mousemove', onDocumentMouseMove)\n\n return () => {\n document?.removeEventListener('mousemove', onDocumentMouseMove)\n }\n }, [scrollerElem, anchorElem, editor, hoveredElement])\n\n useEffect(() => {\n if (menuRef.current && hoveredElement?.node) {\n setHandlePosition(\n hoveredElement?.elem,\n menuRef.current,\n anchorElem,\n blockHandleHorizontalOffset,\n )\n }\n }, [anchorElem, hoveredElement, blockHandleHorizontalOffset])\n\n const handleAddClick = useCallback(\n (event) => {\n let hoveredElementToUse = hoveredElement\n if (!hoveredElementToUse?.node) {\n return\n }\n\n // 1. Update hoveredElement.node to a new paragraph node if the hoveredElement.node is not a paragraph node\n editor.update(() => {\n // Check if blockNode is an empty text node\n let isEmptyParagraph = true\n if (\n hoveredElementToUse.node.getType() !== 'paragraph' ||\n hoveredElementToUse.node.getTextContent() !== ''\n ) {\n isEmptyParagraph = false\n }\n\n if (!isEmptyParagraph) {\n const newParagraph = $createParagraphNode()\n hoveredElementToUse.node.insertAfter(newParagraph)\n\n setTimeout(() => {\n hoveredElementToUse = {\n elem: editor.getElementByKey(newParagraph.getKey()),\n node: newParagraph,\n }\n setHoveredElement(hoveredElementToUse)\n }, 0)\n }\n })\n\n // 2. Focus on the new paragraph node\n setTimeout(() => {\n editor.update(() => {\n editor.focus()\n\n if (\n hoveredElementToUse.node &&\n 'select' in hoveredElementToUse.node &&\n typeof hoveredElementToUse.node.select === 'function'\n ) {\n hoveredElementToUse.node.select()\n }\n })\n }, 1)\n\n // Make sure this is called AFTER the focusing has been processed by the browser\n // Otherwise, this won't work\n setTimeout(() => {\n editor.dispatchCommand(ENABLE_SLASH_MENU_COMMAND, {\n node: hoveredElementToUse.node as ParagraphNode,\n })\n }, 2)\n\n event.stopPropagation()\n event.preventDefault()\n },\n [editor, hoveredElement],\n )\n\n return createPortal(\n <React.Fragment>\n <button\n className=\"icon add-block-menu\"\n onClick={(event) => {\n handleAddClick(event)\n }}\n ref={menuRef}\n type=\"button\"\n >\n <div className={isEditable ? 'icon' : ''} />\n </button>\n </React.Fragment>,\n anchorElem,\n )\n}\n\nexport function AddBlockHandlePlugin({\n anchorElem = document.body,\n}: {\n anchorElem?: HTMLElement\n}): React.ReactElement {\n const [editor] = useLexicalComposerContext()\n return useAddBlockHandle(editor, anchorElem, editor._editable)\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["useLexicalComposerContext","$createParagraphNode","React","useCallback","useEffect","useRef","useState","createPortal","useEditorConfigContext","isHTMLElement","Point","ENABLE_SLASH_MENU_COMMAND","calculateDistanceFromScrollerElem","getNodeCloseToPoint","getTopLevelNodeKeys","isOnHandleElement","setHandlePosition","ADD_BLOCK_MENU_CLASSNAME","prevIndex","Infinity","getCurrentIndex","keysLength","Math","floor","useAddBlockHandle","editor","anchorElem","isEditable","scrollerElem","parentElement","editorConfig","blockHandleHorizontalOffset","admin","hideGutter","menuRef","hoveredElement","setHoveredElement","onDocumentMouseMove","event","target","distanceFromScrollerElem","pageX","pageY","topLevelNodeKeys","blockElem","_emptyBlockElem","blockNode","foundAtIndex","cache_threshold","horizontalOffset","point","x","y","returnEmptyParagraphs","startIndex","length","useEdgeAsDefault","node","elem","document","addEventListener","removeEventListener","current","handleAddClick","hoveredElementToUse","update","isEmptyParagraph","getType","getTextContent","newParagraph","insertAfter","setTimeout","getElementByKey","getKey","focus","select","dispatchCommand","stopPropagation","preventDefault","_jsx","Fragment","className","onClick","ref","type","AddBlockHandlePlugin","t0","t1","undefined","body","_editable"],"sources":["../../../../../src/lexical/plugins/handles/AddBlockHandlePlugin/index.tsx"],"sourcesContent":["'use client'\nimport type { LexicalEditor, LexicalNode, ParagraphNode } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $createParagraphNode } from 'lexical'\nimport * as React from 'react'\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { useEditorConfigContext } from '../../../config/client/EditorConfigProvider.js'\nimport { isHTMLElement } from '../../../utils/guard.js'\nimport { Point } from '../../../utils/point.js'\nimport { ENABLE_SLASH_MENU_COMMAND } from '../../SlashMenu/LexicalTypeaheadMenuPlugin/index.js'\nimport { calculateDistanceFromScrollerElem } from '../utils/calculateDistanceFromScrollerElem.js'\nimport { getNodeCloseToPoint } from '../utils/getNodeCloseToPoint.js'\nimport { getTopLevelNodeKeys } from '../utils/getTopLevelNodeKeys.js'\nimport { isOnHandleElement } from '../utils/isOnHandleElement.js'\nimport { setHandlePosition } from '../utils/setHandlePosition.js'\nimport './index.scss'\n\nconst ADD_BLOCK_MENU_CLASSNAME = 'add-block-menu'\n\nlet prevIndex = Infinity\n\nfunction getCurrentIndex(keysLength: number): number {\n if (keysLength === 0) {\n return Infinity\n }\n if (prevIndex >= 0 && prevIndex < keysLength) {\n return prevIndex\n }\n\n return Math.floor(keysLength / 2)\n}\n\nfunction useAddBlockHandle(\n editor: LexicalEditor,\n anchorElem: HTMLElement,\n isEditable: boolean,\n): React.ReactElement {\n const scrollerElem = anchorElem.parentElement\n\n const { editorConfig } = useEditorConfigContext()\n const blockHandleHorizontalOffset = editorConfig?.admin?.hideGutter ? -24 : 12\n\n const menuRef = useRef<HTMLButtonElement>(null)\n const [hoveredElement, setHoveredElement] = useState<{\n elem: HTMLElement\n node: LexicalNode\n } | null>(null)\n\n useEffect(() => {\n function onDocumentMouseMove(event: MouseEvent) {\n const target = event.target\n if (!isHTMLElement(target)) {\n return\n }\n\n const distanceFromScrollerElem = calculateDistanceFromScrollerElem(\n scrollerElem,\n event.pageX,\n event.pageY,\n target,\n )\n\n if (distanceFromScrollerElem === -1) {\n setHoveredElement(null)\n return\n }\n\n if (isOnHandleElement(target, ADD_BLOCK_MENU_CLASSNAME)) {\n return\n }\n const topLevelNodeKeys = getTopLevelNodeKeys(editor)\n\n const {\n blockElem: _emptyBlockElem,\n blockNode,\n foundAtIndex,\n } = getNodeCloseToPoint({\n anchorElem,\n cache_threshold: 0,\n editor,\n horizontalOffset: -distanceFromScrollerElem,\n point: new Point(event.x, event.y),\n returnEmptyParagraphs: true,\n startIndex: getCurrentIndex(topLevelNodeKeys.length),\n useEdgeAsDefault: false,\n })\n\n prevIndex = foundAtIndex\n\n if (!_emptyBlockElem) {\n return\n }\n if (\n blockNode &&\n (hoveredElement?.node !== blockNode || hoveredElement?.elem !== _emptyBlockElem)\n ) {\n setHoveredElement({\n elem: _emptyBlockElem,\n node: blockNode,\n })\n }\n }\n\n // Since the draggableBlockElem is outside the actual editor, we need to listen to the document\n // to be able to detect when the mouse is outside the editor and respect a buffer around\n // the scrollerElem to avoid the draggableBlockElem disappearing too early.\n document?.addEventListener('mousemove', onDocumentMouseMove)\n\n return () => {\n document?.removeEventListener('mousemove', onDocumentMouseMove)\n }\n }, [scrollerElem, anchorElem, editor, hoveredElement])\n\n useEffect(() => {\n if (menuRef.current && hoveredElement?.node) {\n setHandlePosition(\n hoveredElement?.elem,\n menuRef.current,\n anchorElem,\n blockHandleHorizontalOffset,\n )\n }\n }, [anchorElem, hoveredElement, blockHandleHorizontalOffset])\n\n const handleAddClick = useCallback(\n (event) => {\n let hoveredElementToUse = hoveredElement\n if (!hoveredElementToUse?.node) {\n return\n }\n\n // 1. Update hoveredElement.node to a new paragraph node if the hoveredElement.node is not a paragraph node\n editor.update(() => {\n // Check if blockNode is an empty text node\n let isEmptyParagraph = true\n if (\n hoveredElementToUse?.node.getType() !== 'paragraph' ||\n hoveredElementToUse.node.getTextContent() !== ''\n ) {\n isEmptyParagraph = false\n }\n\n if (!isEmptyParagraph) {\n const newParagraph = $createParagraphNode()\n hoveredElementToUse?.node.insertAfter(newParagraph)\n\n setTimeout(() => {\n hoveredElementToUse = {\n elem: editor.getElementByKey(newParagraph.getKey())!,\n node: newParagraph,\n }\n setHoveredElement(hoveredElementToUse)\n }, 0)\n }\n })\n\n // 2. Focus on the new paragraph node\n setTimeout(() => {\n editor.update(() => {\n editor.focus()\n\n if (\n hoveredElementToUse?.node &&\n 'select' in hoveredElementToUse.node &&\n typeof hoveredElementToUse.node.select === 'function'\n ) {\n hoveredElementToUse.node.select()\n }\n })\n }, 1)\n\n // Make sure this is called AFTER the focusing has been processed by the browser\n // Otherwise, this won't work\n setTimeout(() => {\n editor.dispatchCommand(ENABLE_SLASH_MENU_COMMAND, {\n node: hoveredElementToUse?.node as ParagraphNode,\n })\n }, 2)\n\n event.stopPropagation()\n event.preventDefault()\n },\n [editor, hoveredElement],\n )\n\n return createPortal(\n <React.Fragment>\n <button\n className=\"icon add-block-menu\"\n onClick={(event) => {\n handleAddClick(event)\n }}\n ref={menuRef}\n type=\"button\"\n >\n <div className={isEditable ? 'icon' : ''} />\n </button>\n </React.Fragment>,\n anchorElem,\n )\n}\n\nexport function AddBlockHandlePlugin({\n anchorElem = document.body,\n}: {\n anchorElem?: HTMLElement\n}): React.ReactElement {\n const [editor] = useLexicalComposerContext()\n return useAddBlockHandle(editor, anchorElem, editor._editable)\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function debounce(func:
|
|
1
|
+
export declare function debounce(func: (...args: any[]) => void, wait: number): (...args: any[]) => void;
|
|
2
2
|
//# sourceMappingURL=debounce.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debounce.d.ts","sourceRoot":"","sources":["../../../../../src/lexical/plugins/handles/DraggableBlockPlugin/debounce.ts"],"names":[],"mappings":"AACA,wBAAgB,QAAQ,CAAC,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"debounce.d.ts","sourceRoot":"","sources":["../../../../../src/lexical/plugins/handles/DraggableBlockPlugin/debounce.ts"],"names":[],"mappings":"AACA,wBAAgB,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,EAAE,IAAI,EAAE,MAAM,aAEzC,GAAG,EAAE,UAUhC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debounce.js","names":["debounce","func","wait","timeout","args","later","clearTimeout","window","setTimeout"],"sources":["../../../../../src/lexical/plugins/handles/DraggableBlockPlugin/debounce.ts"],"sourcesContent":["'use client'\nexport function debounce(func:
|
|
1
|
+
{"version":3,"file":"debounce.js","names":["debounce","func","wait","timeout","args","later","clearTimeout","window","setTimeout"],"sources":["../../../../../src/lexical/plugins/handles/DraggableBlockPlugin/debounce.ts"],"sourcesContent":["'use client'\nexport function debounce(func: (...args: any[]) => void, wait: number) {\n let timeout\n return function (...args: any[]) {\n const later = () => {\n clearTimeout(timeout)\n timeout = null\n func(...args)\n }\n\n clearTimeout(timeout)\n timeout = window.setTimeout(later, wait)\n }\n}\n"],"mappings":"AAAA;;AACA,OAAO,SAASA,SAASC,IAA8B,EAAEC,IAAY;EACnE,IAAIC,OAAA;EACJ,OAAO,UAAU,GAAGC,IAAW;IAC7B,MAAMC,KAAA,GAAQA,CAAA;MACZC,YAAA,CAAaH,OAAA;MACbA,OAAA,GAAU;MACVF,IAAA,IAAQG,IAAA;IACV;IAEAE,YAAA,CAAaH,OAAA;IACbA,OAAA,GAAUI,MAAA,CAAOC,UAAU,CAACH,KAAA,EAAOH,IAAA;EACrC;AACF","ignoreList":[]}
|
package/dist/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js
CHANGED
|
@@ -8,7 +8,7 @@ export function getBoundingClientRectWithoutTransform(elem) {
|
|
|
8
8
|
return rect;
|
|
9
9
|
}
|
|
10
10
|
const lastNumberOfTransformValue = transformValue.split(',').pop();
|
|
11
|
-
rect.y = rect.y - Number(lastNumberOfTransformValue
|
|
11
|
+
rect.y = rect.y - Number(lastNumberOfTransformValue?.replace(')', ''));
|
|
12
12
|
// Return the original bounding rect if no translation is applied
|
|
13
13
|
return rect;
|
|
14
14
|
}
|
package/dist/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getBoundingRectWithoutTransform.js","names":["getBoundingClientRectWithoutTransform","elem","rect","getBoundingClientRect","transformValue","getComputedStyle","getPropertyValue","lastNumberOfTransformValue","split","pop","y","Number","replace"],"sources":["../../../../../src/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.ts"],"sourcesContent":["'use client'\nexport function getBoundingClientRectWithoutTransform(elem: HTMLElement): DOMRect {\n const rect = elem.getBoundingClientRect()\n\n // Extract the translation value from the transform style\n const transformValue = getComputedStyle(elem).getPropertyValue('transform')\n if (!transformValue || transformValue === 'none') {\n return rect\n }\n\n const lastNumberOfTransformValue = transformValue.split(',').pop()\n rect.y = rect.y - Number(lastNumberOfTransformValue
|
|
1
|
+
{"version":3,"file":"getBoundingRectWithoutTransform.js","names":["getBoundingClientRectWithoutTransform","elem","rect","getBoundingClientRect","transformValue","getComputedStyle","getPropertyValue","lastNumberOfTransformValue","split","pop","y","Number","replace"],"sources":["../../../../../src/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.ts"],"sourcesContent":["'use client'\nexport function getBoundingClientRectWithoutTransform(elem: HTMLElement): DOMRect {\n const rect = elem.getBoundingClientRect()\n\n // Extract the translation value from the transform style\n const transformValue = getComputedStyle(elem).getPropertyValue('transform')\n if (!transformValue || transformValue === 'none') {\n return rect\n }\n\n const lastNumberOfTransformValue = transformValue.split(',').pop()\n rect.y = rect.y - Number(lastNumberOfTransformValue?.replace(')', ''))\n\n // Return the original bounding rect if no translation is applied\n return rect\n}\n"],"mappings":"AAAA;;AACA,OAAO,SAASA,sCAAsCC,IAAiB;EACrE,MAAMC,IAAA,GAAOD,IAAA,CAAKE,qBAAqB;EAEvC;EACA,MAAMC,cAAA,GAAiBC,gBAAA,CAAiBJ,IAAA,EAAMK,gBAAgB,CAAC;EAC/D,IAAI,CAACF,cAAA,IAAkBA,cAAA,KAAmB,QAAQ;IAChD,OAAOF,IAAA;EACT;EAEA,MAAMK,0BAAA,GAA6BH,cAAA,CAAeI,KAAK,CAAC,KAAKC,GAAG;EAChEP,IAAA,CAAKQ,CAAC,GAAGR,IAAA,CAAKQ,CAAC,GAAGC,MAAA,CAAOJ,0BAAA,EAA4BK,OAAA,CAAQ,KAAK;EAElE;EACA,OAAOV,IAAA;AACT","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lexical/plugins/handles/DraggableBlockPlugin/index.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAa9B,OAAO,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lexical/plugins/handles/DraggableBlockPlugin/index.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAa9B,OAAO,cAAc,CAAA;AAqarB,wBAAgB,oBAAoB,CAAC,EACnC,UAA0B,GAC3B,EAAE;IACD,UAAU,CAAC,EAAE,WAAW,CAAA;CACzB,GAAG,KAAK,CAAC,YAAY,CAGrB"}
|