@payloadcms/richtext-lexical 3.0.0-beta.85 → 3.0.0-beta.86
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/index.js +117 -127
- package/dist/cell/index.js.map +1 -1
- package/dist/exports/client/Component-DOSSWC76.js +2 -0
- package/dist/exports/client/Component-DOSSWC76.js.map +7 -0
- package/dist/exports/client/Component-MBLHTKDK.js +2 -0
- package/dist/exports/client/Component-MBLHTKDK.js.map +7 -0
- package/dist/exports/client/Field-KUSPHC7Q.js +2 -0
- package/dist/exports/client/Field-KUSPHC7Q.js.map +7 -0
- package/dist/exports/client/RelationshipComponent-3QWBV4GT.js +2 -0
- package/dist/exports/client/RelationshipComponent-3QWBV4GT.js.map +7 -0
- package/dist/exports/client/bundled.css +1 -1
- package/dist/exports/client/chunk-G5DTIOPI.js +2 -0
- package/dist/exports/client/chunk-G5DTIOPI.js.map +7 -0
- package/dist/exports/client/chunk-LGUXX2QH.js +2 -0
- package/dist/exports/client/chunk-LGUXX2QH.js.map +7 -0
- package/dist/exports/client/chunk-NI6Z4GBD.js +2 -0
- package/dist/exports/client/{chunk-SQHN3N6E.js.map → chunk-NI6Z4GBD.js.map} +2 -2
- package/dist/exports/client/chunk-OKMIHD2R.js +2 -0
- package/dist/exports/client/chunk-OKMIHD2R.js.map +7 -0
- package/dist/exports/client/chunk-TO2W7Q2G.js +2 -0
- package/dist/exports/client/chunk-TO2W7Q2G.js.map +7 -0
- package/dist/exports/client/chunk-V2LKLT2F.js +3 -0
- package/dist/exports/client/chunk-V2LKLT2F.js.map +7 -0
- package/dist/exports/client/component-3OFD6Q4Z.js +2 -0
- package/dist/exports/client/component-3OFD6Q4Z.js.map +7 -0
- package/dist/exports/client/component-LCAAX56T.js +2 -0
- package/dist/exports/client/component-LCAAX56T.js.map +7 -0
- package/dist/exports/client/component-LLWMZU6K.js +2 -0
- package/dist/exports/client/component-LLWMZU6K.js.map +7 -0
- package/dist/exports/client/componentInline-72VZAAHP.js +2 -0
- package/dist/exports/client/componentInline-72VZAAHP.js.map +7 -0
- package/dist/exports/client/index.js +9 -9
- package/dist/exports/client/index.js.map +3 -3
- package/dist/exports/server/migrate.js +0 -1
- package/dist/exports/server/migrate.js.map +1 -1
- package/dist/features/align/client/index.js +151 -134
- package/dist/features/align/client/index.js.map +1 -1
- package/dist/features/align/client/toolbarAlignGroup.d.ts.map +1 -1
- package/dist/features/align/client/toolbarAlignGroup.js +10 -9
- package/dist/features/align/client/toolbarAlignGroup.js.map +1 -1
- package/dist/features/align/server/i18n.js +192 -193
- package/dist/features/align/server/i18n.js.map +1 -1
- package/dist/features/align/server/index.js +5 -6
- package/dist/features/align/server/index.js.map +1 -1
- package/dist/features/blockquote/client/index.js +60 -65
- package/dist/features/blockquote/client/index.js.map +1 -1
- package/dist/features/blockquote/markdownTransformer.js +28 -34
- package/dist/features/blockquote/markdownTransformer.js.map +1 -1
- package/dist/features/blockquote/server/i18n.js +96 -97
- package/dist/features/blockquote/server/i18n.js.map +1 -1
- package/dist/features/blockquote/server/index.js +38 -37
- package/dist/features/blockquote/server/index.js.map +1 -1
- package/dist/features/blocks/client/component/BlockContent.d.ts.map +1 -1
- package/dist/features/blocks/client/component/BlockContent.js +166 -172
- package/dist/features/blocks/client/component/BlockContent.js.map +1 -1
- package/dist/features/blocks/client/component/FormSavePlugin.d.ts.map +1 -1
- package/dist/features/blocks/client/component/FormSavePlugin.js +46 -22
- package/dist/features/blocks/client/component/FormSavePlugin.js.map +1 -1
- package/dist/features/blocks/client/component/index.js +130 -142
- package/dist/features/blocks/client/component/index.js.map +1 -1
- package/dist/features/blocks/client/component/removeEmptyArrayValues.d.ts.map +1 -1
- package/dist/features/blocks/client/component/removeEmptyArrayValues.js +12 -8
- package/dist/features/blocks/client/component/removeEmptyArrayValues.js.map +1 -1
- package/dist/features/blocks/client/componentInline/index.js +106 -122
- package/dist/features/blocks/client/componentInline/index.js.map +1 -1
- package/dist/features/blocks/client/index.js +149 -142
- package/dist/features/blocks/client/index.js.map +1 -1
- package/dist/features/blocks/client/nodes/BlocksNode.d.ts.map +1 -1
- package/dist/features/blocks/client/nodes/BlocksNode.js +41 -40
- package/dist/features/blocks/client/nodes/BlocksNode.js.map +1 -1
- package/dist/features/blocks/client/nodes/InlineBlocksNode.d.ts.map +1 -1
- package/dist/features/blocks/client/nodes/InlineBlocksNode.js +31 -30
- package/dist/features/blocks/client/nodes/InlineBlocksNode.js.map +1 -1
- package/dist/features/blocks/client/plugin/commands.d.ts.map +1 -1
- package/dist/features/blocks/client/plugin/commands.js +2 -1
- package/dist/features/blocks/client/plugin/commands.js.map +1 -1
- package/dist/features/blocks/client/plugin/index.js +179 -106
- package/dist/features/blocks/client/plugin/index.js.map +1 -1
- package/dist/features/blocks/server/graphQLPopulationPromise.js +41 -28
- package/dist/features/blocks/server/graphQLPopulationPromise.js.map +1 -1
- package/dist/features/blocks/server/i18n.js +288 -289
- package/dist/features/blocks/server/i18n.js.map +1 -1
- package/dist/features/blocks/server/index.js +149 -151
- package/dist/features/blocks/server/index.js.map +1 -1
- package/dist/features/blocks/server/nodes/BlocksNode.js +76 -73
- package/dist/features/blocks/server/nodes/BlocksNode.js.map +1 -1
- package/dist/features/blocks/server/nodes/InlineBlocksNode.js +78 -76
- package/dist/features/blocks/server/nodes/InlineBlocksNode.js.map +1 -1
- package/dist/features/blocks/server/validate.js +45 -34
- package/dist/features/blocks/server/validate.js.map +1 -1
- package/dist/features/converters/html/converter/converters/linebreak.js +4 -7
- package/dist/features/converters/html/converter/converters/linebreak.js.map +1 -1
- package/dist/features/converters/html/converter/converters/paragraph.js +24 -19
- package/dist/features/converters/html/converter/converters/paragraph.js.map +1 -1
- package/dist/features/converters/html/converter/converters/text.js +28 -29
- package/dist/features/converters/html/converter/converters/text.js.map +1 -1
- package/dist/features/converters/html/converter/defaultConverters.js +1 -6
- package/dist/features/converters/html/converter/defaultConverters.js.map +1 -1
- package/dist/features/converters/html/converter/index.js +66 -51
- package/dist/features/converters/html/converter/index.js.map +1 -1
- package/dist/features/converters/html/converter/types.js +1 -2
- package/dist/features/converters/html/converter/types.js.map +1 -1
- package/dist/features/converters/html/field/index.js +134 -139
- package/dist/features/converters/html/field/index.js.map +1 -1
- package/dist/features/converters/html/index.js +2 -3
- package/dist/features/converters/html/index.js.map +1 -1
- package/dist/features/createClientComponent.js +7 -6
- package/dist/features/createClientComponent.js.map +1 -1
- package/dist/features/createFeaturePropComponent.js +14 -13
- package/dist/features/createFeaturePropComponent.js.map +1 -1
- package/dist/features/debug/testRecorder/client/index.js +5 -7
- package/dist/features/debug/testRecorder/client/index.js.map +1 -1
- package/dist/features/debug/testRecorder/client/plugin/index.js +518 -402
- package/dist/features/debug/testRecorder/client/plugin/index.js.map +1 -1
- package/dist/features/debug/testRecorder/server/index.js +4 -5
- package/dist/features/debug/testRecorder/server/index.js.map +1 -1
- package/dist/features/debug/treeView/client/index.js +5 -7
- package/dist/features/debug/treeView/client/index.js.map +1 -1
- package/dist/features/debug/treeView/client/plugin/index.js +21 -11
- package/dist/features/debug/treeView/client/plugin/index.js.map +1 -1
- package/dist/features/debug/treeView/server/index.js +4 -5
- package/dist/features/debug/treeView/server/index.js.map +1 -1
- package/dist/features/experimental_table/client/index.js +41 -58
- package/dist/features/experimental_table/client/index.js.map +1 -1
- package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js +714 -560
- package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js.map +1 -1
- package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js +295 -301
- package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js.map +1 -1
- package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.d.ts +0 -7
- package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.d.ts.map +1 -1
- package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js +228 -159
- package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js.map +1 -1
- package/dist/features/experimental_table/client/plugins/TablePlugin/index.d.ts +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 +129 -82
- package/dist/features/experimental_table/client/plugins/TablePlugin/index.js.map +1 -1
- package/dist/features/experimental_table/client/utils/debounce.d.ts.map +1 -1
- package/dist/features/experimental_table/client/utils/debounce.js +108 -89
- package/dist/features/experimental_table/client/utils/debounce.js.map +1 -1
- package/dist/features/experimental_table/client/utils/useDebounce.d.ts.map +1 -1
- package/dist/features/experimental_table/client/utils/useDebounce.js +11 -13
- package/dist/features/experimental_table/client/utils/useDebounce.js.map +1 -1
- package/dist/features/experimental_table/server/index.js +127 -114
- package/dist/features/experimental_table/server/index.js.map +1 -1
- package/dist/features/format/bold/feature.client.js +34 -35
- package/dist/features/format/bold/feature.client.js.map +1 -1
- package/dist/features/format/bold/feature.server.js +14 -18
- package/dist/features/format/bold/feature.server.js.map +1 -1
- package/dist/features/format/bold/markdownTransformers.js +14 -25
- package/dist/features/format/bold/markdownTransformers.js.map +1 -1
- package/dist/features/format/inlineCode/feature.client.js +26 -28
- package/dist/features/format/inlineCode/feature.client.js.map +1 -1
- package/dist/features/format/inlineCode/feature.server.js +5 -8
- package/dist/features/format/inlineCode/feature.server.js.map +1 -1
- package/dist/features/format/inlineCode/markdownTransformers.js +3 -6
- package/dist/features/format/inlineCode/markdownTransformers.js.map +1 -1
- package/dist/features/format/italic/feature.client.js +26 -29
- package/dist/features/format/italic/feature.client.js.map +1 -1
- package/dist/features/format/italic/feature.server.js +5 -9
- package/dist/features/format/italic/feature.server.js.map +1 -1
- package/dist/features/format/italic/markdownTransformers.js +7 -12
- package/dist/features/format/italic/markdownTransformers.js.map +1 -1
- package/dist/features/format/shared/toolbarFormatGroup.d.ts.map +1 -1
- package/dist/features/format/shared/toolbarFormatGroup.js +9 -8
- package/dist/features/format/shared/toolbarFormatGroup.js.map +1 -1
- package/dist/features/format/strikethrough/feature.client.js +26 -28
- package/dist/features/format/strikethrough/feature.client.js.map +1 -1
- package/dist/features/format/strikethrough/feature.server.js +5 -8
- package/dist/features/format/strikethrough/feature.server.js.map +1 -1
- package/dist/features/format/strikethrough/markdownTransformers.js +3 -6
- package/dist/features/format/strikethrough/markdownTransformers.js.map +1 -1
- package/dist/features/format/subscript/feature.client.js +25 -25
- package/dist/features/format/subscript/feature.client.js.map +1 -1
- package/dist/features/format/subscript/feature.server.js +4 -5
- package/dist/features/format/subscript/feature.server.js.map +1 -1
- package/dist/features/format/superscript/feature.client.js +25 -25
- package/dist/features/format/superscript/feature.client.js.map +1 -1
- package/dist/features/format/superscript/feature.server.js +4 -5
- package/dist/features/format/superscript/feature.server.js.map +1 -1
- package/dist/features/format/underline/feature.client.js +25 -25
- package/dist/features/format/underline/feature.client.js.map +1 -1
- package/dist/features/format/underline/feature.server.js +4 -5
- package/dist/features/format/underline/feature.server.js.map +1 -1
- package/dist/features/heading/client/index.js +86 -90
- package/dist/features/heading/client/index.js.map +1 -1
- package/dist/features/heading/markdownTransformer.js +22 -25
- package/dist/features/heading/markdownTransformer.js.map +1 -1
- package/dist/features/heading/server/i18n.js +96 -97
- package/dist/features/heading/server/i18n.js.map +1 -1
- package/dist/features/heading/server/index.js +49 -51
- package/dist/features/heading/server/index.js.map +1 -1
- package/dist/features/horizontalRule/client/component/index.js +81 -51
- package/dist/features/horizontalRule/client/component/index.js.map +1 -1
- package/dist/features/horizontalRule/client/index.js +48 -57
- package/dist/features/horizontalRule/client/index.js.map +1 -1
- package/dist/features/horizontalRule/client/markdownTransformer.js +15 -18
- package/dist/features/horizontalRule/client/markdownTransformer.js.map +1 -1
- package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.d.ts.map +1 -1
- package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.js +33 -30
- package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.js.map +1 -1
- package/dist/features/horizontalRule/client/plugin/index.js +31 -20
- package/dist/features/horizontalRule/client/plugin/index.js.map +1 -1
- package/dist/features/horizontalRule/server/i18n.js +96 -97
- package/dist/features/horizontalRule/server/i18n.js.map +1 -1
- package/dist/features/horizontalRule/server/index.js +17 -24
- package/dist/features/horizontalRule/server/index.js.map +1 -1
- package/dist/features/horizontalRule/server/markdownTransformer.js +15 -18
- package/dist/features/horizontalRule/server/markdownTransformer.js.map +1 -1
- package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js +71 -66
- package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js.map +1 -1
- package/dist/features/indent/client/index.js +52 -47
- package/dist/features/indent/client/index.js.map +1 -1
- package/dist/features/indent/client/toolbarIndentGroup.d.ts.map +1 -1
- package/dist/features/indent/client/toolbarIndentGroup.js +9 -8
- package/dist/features/indent/client/toolbarIndentGroup.js.map +1 -1
- package/dist/features/indent/server/i18n.js +128 -129
- package/dist/features/indent/server/i18n.js.map +1 -1
- package/dist/features/indent/server/index.js +5 -6
- package/dist/features/indent/server/index.js.map +1 -1
- package/dist/features/link/client/index.js +78 -83
- package/dist/features/link/client/index.js.map +1 -1
- package/dist/features/link/client/plugins/autoLink/index.js +267 -271
- package/dist/features/link/client/plugins/autoLink/index.js.map +1 -1
- package/dist/features/link/client/plugins/clickableLink/index.js +3 -3
- package/dist/features/link/client/plugins/clickableLink/index.js.map +1 -1
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/commands.d.ts.map +1 -1
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/commands.js +2 -1
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/commands.js.map +1 -1
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js +254 -276
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
- package/dist/features/link/client/plugins/floatingLinkEditor/index.js +8 -6
- package/dist/features/link/client/plugins/floatingLinkEditor/index.js.map +1 -1
- package/dist/features/link/client/plugins/floatingLinkEditor/types.js +1 -2
- package/dist/features/link/client/plugins/floatingLinkEditor/types.js.map +1 -1
- package/dist/features/link/client/plugins/link/index.js +50 -41
- package/dist/features/link/client/plugins/link/index.js.map +1 -1
- package/dist/features/link/markdownTransformer.js +38 -39
- package/dist/features/link/markdownTransformer.js.map +1 -1
- package/dist/features/link/nodes/AutoLinkNode.js +57 -56
- package/dist/features/link/nodes/AutoLinkNode.js.map +1 -1
- package/dist/features/link/nodes/LinkNode.js +277 -276
- package/dist/features/link/nodes/LinkNode.js.map +1 -1
- package/dist/features/link/nodes/types.js +1 -2
- package/dist/features/link/nodes/types.js.map +1 -1
- package/dist/features/link/server/baseFields.js +118 -88
- package/dist/features/link/server/baseFields.js.map +1 -1
- package/dist/features/link/server/graphQLPopulationPromise.js +42 -28
- package/dist/features/link/server/graphQLPopulationPromise.js.map +1 -1
- package/dist/features/link/server/i18n.js +96 -97
- package/dist/features/link/server/i18n.js.map +1 -1
- package/dist/features/link/server/index.js +120 -114
- package/dist/features/link/server/index.js.map +1 -1
- package/dist/features/link/server/transformExtraFields.js +15 -15
- package/dist/features/link/server/transformExtraFields.js.map +1 -1
- package/dist/features/link/server/validate.js +37 -26
- package/dist/features/link/server/validate.js.map +1 -1
- package/dist/features/lists/checklist/client/index.js +77 -85
- package/dist/features/lists/checklist/client/index.js.map +1 -1
- package/dist/features/lists/checklist/client/plugin/index.js +3 -3
- package/dist/features/lists/checklist/client/plugin/index.js.map +1 -1
- package/dist/features/lists/checklist/markdownTransformers.js +7 -11
- package/dist/features/lists/checklist/markdownTransformers.js.map +1 -1
- package/dist/features/lists/checklist/server/i18n.js +96 -97
- package/dist/features/lists/checklist/server/i18n.js.map +1 -1
- package/dist/features/lists/checklist/server/index.js +21 -25
- package/dist/features/lists/checklist/server/index.js.map +1 -1
- package/dist/features/lists/htmlConverter.js +54 -43
- package/dist/features/lists/htmlConverter.js.map +1 -1
- package/dist/features/lists/orderedList/client/index.js +71 -77
- package/dist/features/lists/orderedList/client/index.js.map +1 -1
- package/dist/features/lists/orderedList/markdownTransformer.js +7 -11
- package/dist/features/lists/orderedList/markdownTransformer.js.map +1 -1
- package/dist/features/lists/orderedList/server/i18n.js +96 -97
- package/dist/features/lists/orderedList/server/i18n.js.map +1 -1
- package/dist/features/lists/orderedList/server/index.js +21 -25
- package/dist/features/lists/orderedList/server/index.js.map +1 -1
- package/dist/features/lists/plugin/index.js +3 -3
- package/dist/features/lists/plugin/index.js.map +1 -1
- package/dist/features/lists/shared/markdown.js +48 -49
- package/dist/features/lists/shared/markdown.js.map +1 -1
- package/dist/features/lists/shared/slashMenuListGroup.js +9 -8
- package/dist/features/lists/shared/slashMenuListGroup.js.map +1 -1
- package/dist/features/lists/unorderedList/client/index.js +68 -76
- package/dist/features/lists/unorderedList/client/index.js.map +1 -1
- package/dist/features/lists/unorderedList/markdownTransformer.js +7 -11
- package/dist/features/lists/unorderedList/markdownTransformer.js.map +1 -1
- package/dist/features/lists/unorderedList/server/i18n.js +96 -97
- package/dist/features/lists/unorderedList/server/i18n.js.map +1 -1
- package/dist/features/lists/unorderedList/server/index.js +17 -23
- package/dist/features/lists/unorderedList/server/index.js.map +1 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.js +18 -17
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.js.map +1 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.js +30 -29
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.js.map +1 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.js +21 -20
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.js.map +1 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.js +21 -19
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.js.map +1 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.js +18 -17
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.js.map +1 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.js +24 -23
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.js.map +1 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js +20 -21
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js.map +1 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/defaultConverters.js +1 -10
- package/dist/features/migrations/lexicalPluginToLexical/converter/defaultConverters.js.map +1 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/index.js +69 -61
- package/dist/features/migrations/lexicalPluginToLexical/converter/index.js.map +1 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/types.js +1 -2
- package/dist/features/migrations/lexicalPluginToLexical/converter/types.js.map +1 -1
- package/dist/features/migrations/lexicalPluginToLexical/feature.client.js +5 -7
- package/dist/features/migrations/lexicalPluginToLexical/feature.client.js.map +1 -1
- package/dist/features/migrations/lexicalPluginToLexical/feature.server.js +42 -43
- package/dist/features/migrations/lexicalPluginToLexical/feature.server.js.map +1 -1
- package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.d.ts.map +1 -1
- package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js +11 -11
- package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js.map +1 -1
- package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js +64 -59
- package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
- package/dist/features/migrations/slateToLexical/converter/converters/blockquote/converter.js +19 -19
- package/dist/features/migrations/slateToLexical/converter/converters/blockquote/converter.js.map +1 -1
- package/dist/features/migrations/slateToLexical/converter/converters/heading/converter.js +20 -25
- package/dist/features/migrations/slateToLexical/converter/converters/heading/converter.js.map +1 -1
- package/dist/features/migrations/slateToLexical/converter/converters/indent/converter.js +28 -30
- package/dist/features/migrations/slateToLexical/converter/converters/indent/converter.js.map +1 -1
- package/dist/features/migrations/slateToLexical/converter/converters/link/converter.js +26 -26
- package/dist/features/migrations/slateToLexical/converter/converters/link/converter.js.map +1 -1
- package/dist/features/migrations/slateToLexical/converter/converters/listItem/converter.js +22 -21
- package/dist/features/migrations/slateToLexical/converter/converters/listItem/converter.js.map +1 -1
- package/dist/features/migrations/slateToLexical/converter/converters/orderedList/converter.js +22 -22
- package/dist/features/migrations/slateToLexical/converter/converters/orderedList/converter.js.map +1 -1
- package/dist/features/migrations/slateToLexical/converter/converters/relationship/converter.js +12 -13
- package/dist/features/migrations/slateToLexical/converter/converters/relationship/converter.js.map +1 -1
- package/dist/features/migrations/slateToLexical/converter/converters/unknown/converter.js +23 -23
- package/dist/features/migrations/slateToLexical/converter/converters/unknown/converter.js.map +1 -1
- package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js +22 -22
- package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js.map +1 -1
- package/dist/features/migrations/slateToLexical/converter/converters/upload/converter.js +15 -16
- package/dist/features/migrations/slateToLexical/converter/converters/upload/converter.js.map +1 -1
- package/dist/features/migrations/slateToLexical/converter/defaultConverters.js +1 -13
- package/dist/features/migrations/slateToLexical/converter/defaultConverters.js.map +1 -1
- package/dist/features/migrations/slateToLexical/converter/index.js +105 -98
- package/dist/features/migrations/slateToLexical/converter/index.js.map +1 -1
- package/dist/features/migrations/slateToLexical/converter/types.js +1 -2
- package/dist/features/migrations/slateToLexical/converter/types.js.map +1 -1
- package/dist/features/migrations/slateToLexical/feature.client.js +7 -7
- package/dist/features/migrations/slateToLexical/feature.client.js.map +1 -1
- package/dist/features/migrations/slateToLexical/feature.server.js +43 -44
- package/dist/features/migrations/slateToLexical/feature.server.js.map +1 -1
- package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.d.ts.map +1 -1
- package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js +11 -11
- package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js.map +1 -1
- package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js +64 -59
- package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
- package/dist/features/paragraph/client/index.js +58 -61
- package/dist/features/paragraph/client/index.js.map +1 -1
- package/dist/features/paragraph/server/i18n.js +128 -129
- package/dist/features/paragraph/server/i18n.js.map +1 -1
- package/dist/features/paragraph/server/index.js +6 -7
- package/dist/features/paragraph/server/index.js.map +1 -1
- package/dist/features/relationship/client/components/RelationshipComponent.js +141 -149
- package/dist/features/relationship/client/components/RelationshipComponent.js.map +1 -1
- package/dist/features/relationship/client/drawer/commands.js +0 -1
- package/dist/features/relationship/client/drawer/commands.js.map +1 -1
- package/dist/features/relationship/client/drawer/index.js +138 -67
- package/dist/features/relationship/client/drawer/index.js.map +1 -1
- package/dist/features/relationship/client/index.js +53 -59
- 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 +60 -59
- package/dist/features/relationship/client/nodes/RelationshipNode.js.map +1 -1
- package/dist/features/relationship/client/plugins/index.js +90 -35
- package/dist/features/relationship/client/plugins/index.js.map +1 -1
- package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.d.ts.map +1 -1
- package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.js +97 -26
- package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.js.map +1 -1
- package/dist/features/relationship/server/graphQLPopulationPromise.js +34 -26
- package/dist/features/relationship/server/graphQLPopulationPromise.js.map +1 -1
- package/dist/features/relationship/server/i18n.js +96 -97
- package/dist/features/relationship/server/i18n.js.map +1 -1
- package/dist/features/relationship/server/index.js +48 -44
- package/dist/features/relationship/server/index.js.map +1 -1
- package/dist/features/relationship/server/nodes/RelationshipNode.js +90 -87
- package/dist/features/relationship/server/nodes/RelationshipNode.js.map +1 -1
- package/dist/features/shared/slashMenu/basicGroup.js +9 -8
- package/dist/features/shared/slashMenu/basicGroup.js.map +1 -1
- package/dist/features/shared/toolbar/addDropdownGroup.js +8 -9
- package/dist/features/shared/toolbar/addDropdownGroup.js.map +1 -1
- package/dist/features/shared/toolbar/featureButtonsGroup.js +7 -8
- package/dist/features/shared/toolbar/featureButtonsGroup.js.map +1 -1
- package/dist/features/shared/toolbar/textDropdownGroup.js +8 -9
- package/dist/features/shared/toolbar/textDropdownGroup.js.map +1 -1
- package/dist/features/toolbars/fixed/client/Toolbar/index.js +264 -187
- package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -1
- package/dist/features/toolbars/fixed/client/index.js +5 -7
- package/dist/features/toolbars/fixed/client/index.js.map +1 -1
- package/dist/features/toolbars/fixed/server/index.js +14 -13
- package/dist/features/toolbars/fixed/server/index.js.map +1 -1
- package/dist/features/toolbars/inline/client/Toolbar/index.js +374 -286
- package/dist/features/toolbars/inline/client/Toolbar/index.js.map +1 -1
- package/dist/features/toolbars/inline/client/index.js +5 -7
- package/dist/features/toolbars/inline/client/index.js.map +1 -1
- package/dist/features/toolbars/inline/server/index.js +4 -5
- package/dist/features/toolbars/inline/server/index.js.map +1 -1
- package/dist/features/toolbars/shared/ToolbarButton/index.d.ts +1 -1
- package/dist/features/toolbars/shared/ToolbarButton/index.d.ts.map +1 -1
- package/dist/features/toolbars/shared/ToolbarButton/index.js +75 -97
- package/dist/features/toolbars/shared/ToolbarButton/index.js.map +1 -1
- package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js +190 -211
- package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -1
- package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts +1 -1
- package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts.map +1 -1
- package/dist/features/toolbars/shared/ToolbarDropdown/index.js +289 -124
- package/dist/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -1
- package/dist/features/toolbars/types.js +1 -2
- package/dist/features/toolbars/types.js.map +1 -1
- package/dist/features/typeUtilities.js +2 -3
- package/dist/features/typeUtilities.js.map +1 -1
- package/dist/features/typesClient.js +1 -2
- package/dist/features/typesClient.js.map +1 -1
- package/dist/features/typesServer.js +1 -2
- package/dist/features/typesServer.js.map +1 -1
- package/dist/features/upload/client/component/index.js +208 -224
- package/dist/features/upload/client/component/index.js.map +1 -1
- package/dist/features/upload/client/drawer/commands.js +1 -1
- package/dist/features/upload/client/drawer/commands.js.map +1 -1
- package/dist/features/upload/client/drawer/index.js +107 -58
- package/dist/features/upload/client/drawer/index.js.map +1 -1
- package/dist/features/upload/client/feature.client.js +51 -61
- package/dist/features/upload/client/feature.client.js.map +1 -1
- package/dist/features/upload/client/nodes/UploadNode.d.ts.map +1 -1
- package/dist/features/upload/client/nodes/UploadNode.js +76 -73
- package/dist/features/upload/client/nodes/UploadNode.js.map +1 -1
- package/dist/features/upload/client/plugin/index.js +67 -39
- package/dist/features/upload/client/plugin/index.js.map +1 -1
- package/dist/features/upload/server/feature.server.js +190 -171
- package/dist/features/upload/server/feature.server.js.map +1 -1
- package/dist/features/upload/server/graphQLPopulationPromise.js +60 -47
- package/dist/features/upload/server/graphQLPopulationPromise.js.map +1 -1
- package/dist/features/upload/server/i18n.js +96 -97
- package/dist/features/upload/server/i18n.js.map +1 -1
- package/dist/features/upload/server/nodes/UploadNode.js +113 -108
- package/dist/features/upload/server/nodes/UploadNode.js.map +1 -1
- package/dist/features/upload/server/validate.js +53 -40
- package/dist/features/upload/server/validate.js.map +1 -1
- package/dist/field/Field.js +124 -105
- package/dist/field/Field.js.map +1 -1
- package/dist/field/bundled.css +1 -0
- package/dist/field/index.js +92 -36
- package/dist/field/index.js.map +1 -1
- package/dist/i18n.js +160 -161
- package/dist/i18n.js.map +1 -1
- package/dist/index.js +670 -623
- package/dist/index.js.map +1 -1
- package/dist/lexical/EditorPlugin.d.ts.map +1 -1
- package/dist/lexical/EditorPlugin.js +15 -10
- package/dist/lexical/EditorPlugin.js.map +1 -1
- package/dist/lexical/LexicalEditor.js +206 -161
- package/dist/lexical/LexicalEditor.js.map +1 -1
- package/dist/lexical/LexicalProvider.js +83 -82
- package/dist/lexical/LexicalProvider.js.map +1 -1
- package/dist/lexical/config/client/EditorConfigProvider.js +76 -79
- package/dist/lexical/config/client/EditorConfigProvider.js.map +1 -1
- package/dist/lexical/config/client/default.js +3 -3
- package/dist/lexical/config/client/default.js.map +1 -1
- package/dist/lexical/config/client/loader.js +42 -39
- package/dist/lexical/config/client/loader.js.map +1 -1
- package/dist/lexical/config/client/sanitize.js +165 -165
- package/dist/lexical/config/client/sanitize.js.map +1 -1
- package/dist/lexical/config/server/default.js +5 -27
- package/dist/lexical/config/server/default.js.map +1 -1
- package/dist/lexical/config/server/loader.js +103 -103
- package/dist/lexical/config/server/loader.js.map +1 -1
- package/dist/lexical/config/server/sanitize.js +98 -99
- package/dist/lexical/config/server/sanitize.js.map +1 -1
- package/dist/lexical/config/types.js +1 -2
- package/dist/lexical/config/types.js.map +1 -1
- package/dist/lexical/nodes/index.js +9 -8
- package/dist/lexical/nodes/index.js.map +1 -1
- package/dist/lexical/plugins/MarkdownShortcut/index.js +17 -5
- package/dist/lexical/plugins/MarkdownShortcut/index.js.map +1 -1
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +384 -361
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +223 -160
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +1 -1
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js +1 -2
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js.map +1 -1
- package/dist/lexical/plugins/SlashMenu/index.js +191 -179
- package/dist/lexical/plugins/SlashMenu/index.js.map +1 -1
- package/dist/lexical/plugins/SlashMenu/useMenuTriggerMatch.d.ts.map +1 -1
- package/dist/lexical/plugins/SlashMenu/useMenuTriggerMatch.js +41 -26
- package/dist/lexical/plugins/SlashMenu/useMenuTriggerMatch.js.map +1 -1
- package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js +164 -129
- package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.d.ts.map +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.js +11 -10
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.js.map +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.d.ts.map +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js +11 -10
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js.map +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.d.ts.map +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js +27 -23
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js.map +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js +331 -300
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js +110 -97
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js.map +1 -1
- package/dist/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.d.ts.map +1 -1
- package/dist/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.js +23 -16
- package/dist/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.js.map +1 -1
- package/dist/lexical/plugins/handles/utils/doesLineHeightAffectElement.d.ts.map +1 -1
- package/dist/lexical/plugins/handles/utils/doesLineHeightAffectElement.js +18 -27
- package/dist/lexical/plugins/handles/utils/doesLineHeightAffectElement.js.map +1 -1
- package/dist/lexical/plugins/handles/utils/getCollapsedMargins.d.ts.map +1 -1
- package/dist/lexical/plugins/handles/utils/getCollapsedMargins.js +15 -11
- package/dist/lexical/plugins/handles/utils/getCollapsedMargins.js.map +1 -1
- package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.d.ts.map +1 -1
- package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.js +133 -118
- package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.js.map +1 -1
- package/dist/lexical/plugins/handles/utils/getTopLevelNodeKeys.d.ts.map +1 -1
- package/dist/lexical/plugins/handles/utils/getTopLevelNodeKeys.js +3 -2
- package/dist/lexical/plugins/handles/utils/getTopLevelNodeKeys.js.map +1 -1
- package/dist/lexical/plugins/handles/utils/isOnHandleElement.d.ts.map +1 -1
- package/dist/lexical/plugins/handles/utils/isOnHandleElement.js +3 -2
- package/dist/lexical/plugins/handles/utils/isOnHandleElement.js.map +1 -1
- package/dist/lexical/plugins/handles/utils/setHandlePosition.d.ts.map +1 -1
- package/dist/lexical/plugins/handles/utils/setHandlePosition.js +26 -25
- 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 +97 -102
- package/dist/lexical/theme/EditorTheme.js.map +1 -1
- package/dist/lexical/ui/ContentEditable.d.ts.map +1 -1
- package/dist/lexical/ui/ContentEditable.js +27 -10
- package/dist/lexical/ui/ContentEditable.js.map +1 -1
- package/dist/lexical/ui/icons/AI/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/AI/index.js +31 -33
- package/dist/lexical/ui/icons/AI/index.js.map +1 -1
- package/dist/lexical/ui/icons/Add/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Add/index.js +16 -18
- package/dist/lexical/ui/icons/Add/index.js.map +1 -1
- package/dist/lexical/ui/icons/AlignCenter/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/AlignCenter/index.js +25 -28
- package/dist/lexical/ui/icons/AlignCenter/index.js.map +1 -1
- package/dist/lexical/ui/icons/AlignJustify/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/AlignJustify/index.js +25 -28
- package/dist/lexical/ui/icons/AlignJustify/index.js.map +1 -1
- package/dist/lexical/ui/icons/AlignLeft/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/AlignLeft/index.js +25 -28
- package/dist/lexical/ui/icons/AlignLeft/index.js.map +1 -1
- package/dist/lexical/ui/icons/AlignRight/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/AlignRight/index.js +25 -28
- package/dist/lexical/ui/icons/AlignRight/index.js.map +1 -1
- package/dist/lexical/ui/icons/Block/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Block/index.js +34 -37
- package/dist/lexical/ui/icons/Block/index.js.map +1 -1
- package/dist/lexical/ui/icons/Blockquote/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Blockquote/index.js +16 -15
- package/dist/lexical/ui/icons/Blockquote/index.js.map +1 -1
- package/dist/lexical/ui/icons/Bold/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Bold/index.js +16 -15
- package/dist/lexical/ui/icons/Bold/index.js.map +1 -1
- package/dist/lexical/ui/icons/Checklist/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Checklist/index.js +24 -26
- package/dist/lexical/ui/icons/Checklist/index.js.map +1 -1
- package/dist/lexical/ui/icons/Code/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Code/index.js +19 -21
- package/dist/lexical/ui/icons/Code/index.js.map +1 -1
- package/dist/lexical/ui/icons/CodeBlock/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/CodeBlock/index.js +19 -21
- package/dist/lexical/ui/icons/CodeBlock/index.js.map +1 -1
- package/dist/lexical/ui/icons/H1/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/H1/index.js +16 -15
- package/dist/lexical/ui/icons/H1/index.js.map +1 -1
- package/dist/lexical/ui/icons/H2/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/H2/index.js +16 -15
- package/dist/lexical/ui/icons/H2/index.js.map +1 -1
- package/dist/lexical/ui/icons/H3/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/H3/index.js +16 -15
- 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 +16 -15
- 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 +16 -15
- 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 +16 -15
- package/dist/lexical/ui/icons/H6/index.js.map +1 -1
- package/dist/lexical/ui/icons/HorizontalRule/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/HorizontalRule/index.js +19 -18
- package/dist/lexical/ui/icons/HorizontalRule/index.js.map +1 -1
- package/dist/lexical/ui/icons/IndentDecrease/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/IndentDecrease/index.js +28 -32
- package/dist/lexical/ui/icons/IndentDecrease/index.js.map +1 -1
- package/dist/lexical/ui/icons/IndentIncrease/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/IndentIncrease/index.js +28 -32
- package/dist/lexical/ui/icons/IndentIncrease/index.js.map +1 -1
- package/dist/lexical/ui/icons/InlineBlocks/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/InlineBlocks/index.js +18 -17
- package/dist/lexical/ui/icons/InlineBlocks/index.js.map +1 -1
- package/dist/lexical/ui/icons/Italic/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Italic/index.js +16 -15
- package/dist/lexical/ui/icons/Italic/index.js.map +1 -1
- package/dist/lexical/ui/icons/Link/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Link/index.js +17 -16
- package/dist/lexical/ui/icons/Link/index.js.map +1 -1
- package/dist/lexical/ui/icons/Meatballs/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Meatballs/index.js +19 -22
- package/dist/lexical/ui/icons/Meatballs/index.js.map +1 -1
- package/dist/lexical/ui/icons/OrderedList/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/OrderedList/index.js +31 -36
- package/dist/lexical/ui/icons/OrderedList/index.js.map +1 -1
- package/dist/lexical/ui/icons/Relationship/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Relationship/index.js +31 -33
- package/dist/lexical/ui/icons/Relationship/index.js.map +1 -1
- package/dist/lexical/ui/icons/Strikethrough/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Strikethrough/index.js +19 -21
- package/dist/lexical/ui/icons/Strikethrough/index.js.map +1 -1
- package/dist/lexical/ui/icons/Subscript/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Subscript/index.js +16 -15
- package/dist/lexical/ui/icons/Subscript/index.js.map +1 -1
- package/dist/lexical/ui/icons/Superscript/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Superscript/index.js +16 -15
- package/dist/lexical/ui/icons/Superscript/index.js.map +1 -1
- package/dist/lexical/ui/icons/Table/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Table/index.js +17 -16
- package/dist/lexical/ui/icons/Table/index.js.map +1 -1
- package/dist/lexical/ui/icons/Text/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Text/index.js +16 -15
- package/dist/lexical/ui/icons/Text/index.js.map +1 -1
- package/dist/lexical/ui/icons/Underline/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Underline/index.js +19 -21
- package/dist/lexical/ui/icons/Underline/index.js.map +1 -1
- package/dist/lexical/ui/icons/UnorderedList/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/UnorderedList/index.js +46 -52
- package/dist/lexical/ui/icons/UnorderedList/index.js.map +1 -1
- package/dist/lexical/ui/icons/Upload/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Upload/index.js +28 -31
- package/dist/lexical/ui/icons/Upload/index.js.map +1 -1
- package/dist/lexical/utils/canUseDOM.d.ts.map +1 -1
- package/dist/lexical/utils/canUseDOM.js +2 -1
- package/dist/lexical/utils/canUseDOM.js.map +1 -1
- package/dist/lexical/utils/environment.d.ts.map +1 -1
- package/dist/lexical/utils/environment.js +2 -1
- package/dist/lexical/utils/environment.js.map +1 -1
- package/dist/lexical/utils/getDOMRangeRect.d.ts.map +1 -1
- package/dist/lexical/utils/getDOMRangeRect.js +13 -12
- package/dist/lexical/utils/getDOMRangeRect.js.map +1 -1
- package/dist/lexical/utils/getSelectedNode.d.ts.map +1 -1
- package/dist/lexical/utils/getSelectedNode.js +18 -13
- package/dist/lexical/utils/getSelectedNode.js.map +1 -1
- package/dist/lexical/utils/guard.d.ts.map +1 -1
- package/dist/lexical/utils/guard.js +3 -2
- package/dist/lexical/utils/guard.js.map +1 -1
- package/dist/lexical/utils/joinClasses.d.ts.map +1 -1
- package/dist/lexical/utils/joinClasses.js +3 -2
- package/dist/lexical/utils/joinClasses.js.map +1 -1
- package/dist/lexical/utils/markdown/createBlockNode.js +9 -10
- package/dist/lexical/utils/markdown/createBlockNode.js.map +1 -1
- package/dist/lexical/utils/nodeFormat.js +58 -59
- package/dist/lexical/utils/nodeFormat.js.map +1 -1
- package/dist/lexical/utils/point.d.ts.map +1 -1
- package/dist/lexical/utils/point.js +40 -32
- package/dist/lexical/utils/point.js.map +1 -1
- package/dist/lexical/utils/rect.d.ts.map +1 -1
- package/dist/lexical/utils/rect.js +167 -134
- package/dist/lexical/utils/rect.js.map +1 -1
- package/dist/lexical/utils/setFloatingElemPosition.d.ts.map +1 -1
- package/dist/lexical/utils/setFloatingElemPosition.js +56 -45
- package/dist/lexical/utils/setFloatingElemPosition.js.map +1 -1
- package/dist/lexical/utils/setFloatingElemPositionForLinkEditor.d.ts.map +1 -1
- package/dist/lexical/utils/setFloatingElemPositionForLinkEditor.js +23 -22
- package/dist/lexical/utils/setFloatingElemPositionForLinkEditor.js.map +1 -1
- package/dist/lexical/utils/swipe.d.ts.map +1 -1
- package/dist/lexical/utils/swipe.js +82 -83
- package/dist/lexical/utils/swipe.js.map +1 -1
- package/dist/lexical/utils/url.js +23 -22
- package/dist/lexical/utils/url.js.map +1 -1
- package/dist/nodeTypes.js +1 -2
- package/dist/nodeTypes.js.map +1 -1
- package/dist/populateGraphQL/defaultValue.js +24 -29
- package/dist/populateGraphQL/defaultValue.js.map +1 -1
- package/dist/populateGraphQL/populate.js +35 -25
- package/dist/populateGraphQL/populate.js.map +1 -1
- package/dist/populateGraphQL/populateLexicalPopulationPromises.js +47 -32
- package/dist/populateGraphQL/populateLexicalPopulationPromises.js.map +1 -1
- package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.js +39 -25
- package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.js.map +1 -1
- package/dist/types.js +1 -2
- package/dist/types.js.map +1 -1
- package/dist/utilities/createClientFeature.js +40 -36
- package/dist/utilities/createClientFeature.js.map +1 -1
- package/dist/utilities/createServerFeature.js +46 -35
- package/dist/utilities/createServerFeature.js.map +1 -1
- package/dist/utilities/fieldsDrawer/Drawer.js +28 -17
- package/dist/utilities/fieldsDrawer/Drawer.js.map +1 -1
- package/dist/utilities/fieldsDrawer/DrawerContent.js +149 -78
- package/dist/utilities/fieldsDrawer/DrawerContent.js.map +1 -1
- package/dist/utilities/forEachNodeRecursively.js +24 -19
- package/dist/utilities/forEachNodeRecursively.js.map +1 -1
- package/dist/utilities/generateComponentMap.js +90 -82
- package/dist/utilities/generateComponentMap.js.map +1 -1
- package/dist/utilities/generateImportMap.js +53 -47
- package/dist/utilities/generateImportMap.js.map +1 -1
- package/dist/utilities/generateSchemaMap.js +35 -30
- package/dist/utilities/generateSchemaMap.js.map +1 -1
- package/dist/utilities/migrateSlateToLexical/index.js +99 -86
- package/dist/utilities/migrateSlateToLexical/index.js.map +1 -1
- package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.js +73 -66
- package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.js.map +1 -1
- package/dist/utilities/recurseNodeTree.js +25 -22
- package/dist/utilities/recurseNodeTree.js.map +1 -1
- package/dist/utilities/upgradeLexicalData/index.js +99 -86
- package/dist/utilities/upgradeLexicalData/index.js.map +1 -1
- package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.js +71 -66
- package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.js.map +1 -1
- package/dist/utilities/useLexicalFeature.js +9 -8
- package/dist/utilities/useLexicalFeature.js.map +1 -1
- package/dist/validate/index.js +32 -26
- package/dist/validate/index.js.map +1 -1
- package/dist/validate/validateNodes.js +31 -28
- package/dist/validate/validateNodes.js.map +1 -1
- package/package.json +22 -11
- package/dist/exports/client/Component-7HS6FEJS.js +0 -2
- package/dist/exports/client/Component-7HS6FEJS.js.map +0 -7
- package/dist/exports/client/Component-LAKSCIDX.js +0 -2
- package/dist/exports/client/Component-LAKSCIDX.js.map +0 -7
- package/dist/exports/client/Field-BYB3WX7J.js +0 -2
- package/dist/exports/client/Field-BYB3WX7J.js.map +0 -7
- package/dist/exports/client/RelationshipComponent-GYUTPDNG.js +0 -2
- package/dist/exports/client/RelationshipComponent-GYUTPDNG.js.map +0 -7
- package/dist/exports/client/chunk-4EX7W4UX.js +0 -2
- package/dist/exports/client/chunk-4EX7W4UX.js.map +0 -7
- package/dist/exports/client/chunk-E4HH5PS6.js +0 -2
- package/dist/exports/client/chunk-E4HH5PS6.js.map +0 -7
- package/dist/exports/client/chunk-EBB2CEB6.js +0 -2
- package/dist/exports/client/chunk-EBB2CEB6.js.map +0 -7
- package/dist/exports/client/chunk-LTR7V74A.js +0 -2
- package/dist/exports/client/chunk-LTR7V74A.js.map +0 -7
- package/dist/exports/client/chunk-SQHN3N6E.js +0 -2
- package/dist/exports/client/chunk-VMCQSR3T.js +0 -3
- package/dist/exports/client/chunk-VMCQSR3T.js.map +0 -7
- package/dist/exports/client/component-6C5JERGA.js +0 -2
- package/dist/exports/client/component-6C5JERGA.js.map +0 -7
- package/dist/exports/client/component-GUWIGB77.js +0 -2
- package/dist/exports/client/component-GUWIGB77.js.map +0 -7
- package/dist/exports/client/component-UQ2BKD5X.js +0 -2
- package/dist/exports/client/component-UQ2BKD5X.js.map +0 -7
- package/dist/exports/client/componentInline-C2XIK5VZ.js +0 -2
- package/dist/exports/client/componentInline-C2XIK5VZ.js.map +0 -7
- package/dist/features/experimental_table/plugins/TableHoverActionsPlugin/index.d.ts +0 -12
- package/dist/features/experimental_table/plugins/TableHoverActionsPlugin/index.d.ts.map +0 -1
- package/dist/features/experimental_table/plugins/TableHoverActionsPlugin/index.js +0 -181
- package/dist/features/experimental_table/plugins/TableHoverActionsPlugin/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/features/experimental_table/client/plugins/TableActionMenuPlugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type {\n HTMLTableElementWithWithTableSelectionState,\n TableRowNode,\n TableSelection,\n} from '@lexical/table'\nimport type { ElementNode } from 'lexical'\nimport type { JSX } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport {\n $deleteTableColumn__EXPERIMENTAL,\n $deleteTableRow__EXPERIMENTAL,\n $getNodeTriplet,\n $getTableCellNodeFromLexicalNode,\n $getTableColumnIndexFromTableCellNode,\n $getTableNodeFromLexicalNodeOrThrow,\n $getTableRowIndexFromTableCellNode,\n $insertTableColumn__EXPERIMENTAL,\n $insertTableRow__EXPERIMENTAL,\n $isTableCellNode,\n $isTableRowNode,\n $isTableSelection,\n $unmergeCell,\n TableCellHeaderStates,\n TableCellNode,\n getTableObserverFromTableElement,\n} from '@lexical/table'\nimport { useScrollInfo } from '@payloadcms/ui'\nimport {\n $createParagraphNode,\n $getRoot,\n $getSelection,\n $isElementNode,\n $isParagraphNode,\n $isRangeSelection,\n $isTextNode,\n} from 'lexical'\nimport * as React from 'react'\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport type { PluginComponentWithAnchor } from '../../../../typesClient.js'\n\nimport { MeatballsIcon } from '../../../../../lexical/ui/icons/Meatballs/index.js'\nimport './index.scss'\n\nfunction computeSelectionCount(selection: TableSelection): {\n columns: number\n rows: number\n} {\n const selectionShape = selection.getShape()\n return {\n columns: selectionShape.toX - selectionShape.fromX + 1,\n rows: selectionShape.toY - selectionShape.fromY + 1,\n }\n}\n\n// This is important when merging cells as there is no good way to re-merge weird shapes (a result\n// of selecting merged cells and non-merged)\nfunction isTableSelectionRectangular(selection: TableSelection): boolean {\n const nodes = selection.getNodes()\n const currentRows: Array<number> = []\n let currentRow = null\n let expectedColumns = null\n let currentColumns = 0\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i]\n if ($isTableCellNode(node)) {\n const row = node.getParentOrThrow()\n if ($isTableRowNode(row)) {\n throw new Error('Expected CellNode to have a RowNode parent')\n }\n if (currentRow !== row) {\n if (expectedColumns !== null && currentColumns !== expectedColumns) {\n return false\n }\n if (currentRow !== null) {\n expectedColumns = currentColumns\n }\n currentRow = row\n currentColumns = 0\n }\n const colSpan = node.__colSpan\n for (let j = 0; j < colSpan; j++) {\n if (currentRows[currentColumns + j] === undefined) {\n currentRows[currentColumns + j] = 0\n }\n currentRows[currentColumns + j] += node.__rowSpan\n }\n currentColumns += colSpan\n }\n }\n return (\n (expectedColumns === null || currentColumns === expectedColumns) &&\n currentRows.every((v) => v === currentRows[0])\n )\n}\n\nfunction $canUnmerge(): boolean {\n const selection = $getSelection()\n if (\n ($isRangeSelection(selection) && !selection.isCollapsed()) ||\n ($isTableSelection(selection) && !selection.anchor.is(selection.focus)) ||\n (!$isRangeSelection(selection) && !$isTableSelection(selection))\n ) {\n return false\n }\n const [cell] = $getNodeTriplet(selection.anchor)\n return cell.__colSpan > 1 || cell.__rowSpan > 1\n}\n\nfunction $cellContainsEmptyParagraph(cell: TableCellNode): boolean {\n if (cell.getChildrenSize() !== 1) {\n return false\n }\n const firstChild = cell.getFirstChildOrThrow()\n if (!$isParagraphNode(firstChild) || !firstChild.isEmpty()) {\n return false\n }\n return true\n}\n\nfunction $selectLastDescendant(node: ElementNode): void {\n const lastDescendant = node.getLastDescendant()\n if ($isTextNode(lastDescendant)) {\n lastDescendant.select()\n } else if ($isElementNode(lastDescendant)) {\n lastDescendant.selectEnd()\n } else if (lastDescendant !== null) {\n lastDescendant.selectNext()\n }\n}\n\ntype TableCellActionMenuProps = Readonly<{\n cellMerge: boolean\n contextRef: { current: HTMLElement | null }\n onClose: () => void\n setIsMenuOpen: (isOpen: boolean) => void\n tableCellNode: TableCellNode\n}>\n\nfunction TableActionMenu({\n cellMerge,\n contextRef,\n onClose,\n setIsMenuOpen,\n tableCellNode: _tableCellNode,\n}: TableCellActionMenuProps) {\n const [editor] = useLexicalComposerContext()\n const dropDownRef = useRef<HTMLDivElement | null>(null)\n const [tableCellNode, updateTableCellNode] = useState(_tableCellNode)\n const [selectionCounts, updateSelectionCounts] = useState({\n columns: 1,\n rows: 1,\n })\n const [canMergeCells, setCanMergeCells] = useState(false)\n const [canUnmergeCell, setCanUnmergeCell] = useState(false)\n const { y } = useScrollInfo()\n\n useEffect(() => {\n return editor.registerMutationListener(\n TableCellNode,\n (nodeMutations) => {\n const nodeUpdated = nodeMutations.get(tableCellNode.getKey()) === 'updated'\n\n if (nodeUpdated) {\n editor.getEditorState().read(() => {\n updateTableCellNode(tableCellNode.getLatest())\n })\n }\n },\n { skipInitialization: true },\n )\n }, [editor, tableCellNode])\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n // Merge cells\n if ($isTableSelection(selection)) {\n const currentSelectionCounts = computeSelectionCount(selection)\n updateSelectionCounts(computeSelectionCount(selection))\n setCanMergeCells(\n isTableSelectionRectangular(selection) &&\n (currentSelectionCounts.columns > 1 || currentSelectionCounts.rows > 1),\n )\n }\n // Unmerge cell\n setCanUnmergeCell($canUnmerge())\n })\n }, [editor])\n\n useEffect(() => {\n const menuButtonElement = contextRef.current\n const dropDownElement = dropDownRef.current\n const rootElement = editor.getRootElement()\n\n if (menuButtonElement != null && dropDownElement != null && rootElement != null) {\n const rootEleRect = rootElement.getBoundingClientRect()\n const menuButtonRect = menuButtonElement.getBoundingClientRect()\n dropDownElement.style.opacity = '1'\n const dropDownElementRect = dropDownElement.getBoundingClientRect()\n const margin = 5\n let leftPosition = menuButtonRect.right + margin\n if (\n leftPosition + dropDownElementRect.width > window.innerWidth ||\n leftPosition + dropDownElementRect.width > rootEleRect.right\n ) {\n const position = menuButtonRect.left - dropDownElementRect.width - margin\n leftPosition = (position < 0 ? margin : position) + window.pageXOffset\n }\n dropDownElement.style.left = `${leftPosition + window.pageXOffset}px`\n\n let topPosition = menuButtonRect.top\n if (topPosition + dropDownElementRect.height > window.innerHeight) {\n const position = menuButtonRect.bottom - dropDownElementRect.height\n topPosition = (position < 0 ? margin : position) + window.pageYOffset\n }\n dropDownElement.style.top = `${topPosition}px`\n }\n }, [contextRef, dropDownRef, editor, y])\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (\n dropDownRef.current != null &&\n contextRef.current != null &&\n !dropDownRef.current.contains(event.target as Node) &&\n !contextRef.current.contains(event.target as Node)\n ) {\n setIsMenuOpen(false)\n }\n }\n\n window.addEventListener('click', handleClickOutside)\n\n return () => window.removeEventListener('click', handleClickOutside)\n }, [setIsMenuOpen, contextRef])\n\n const clearTableSelection = useCallback(() => {\n editor.update(() => {\n if (tableCellNode.isAttached()) {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n const tableElement = editor.getElementByKey(\n tableNode.getKey(),\n ) as HTMLTableElementWithWithTableSelectionState\n\n if (!tableElement) {\n throw new Error('Expected to find tableElement in DOM')\n }\n\n const tableSelection = getTableObserverFromTableElement(tableElement)\n if (tableSelection !== null) {\n tableSelection.clearHighlight()\n }\n\n tableNode.markDirty()\n updateTableCellNode(tableCellNode.getLatest())\n }\n\n const rootNode = $getRoot()\n rootNode.selectStart()\n })\n }, [editor, tableCellNode])\n\n const mergeTableCellsAtSelection = () => {\n editor.update(() => {\n const selection = $getSelection()\n if ($isTableSelection(selection)) {\n const { columns, rows } = computeSelectionCount(selection)\n const nodes = selection.getNodes()\n let firstCell: TableCellNode | null = null\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i]\n if ($isTableCellNode(node)) {\n if (firstCell === null) {\n node.setColSpan(columns).setRowSpan(rows)\n firstCell = node\n const isEmpty = $cellContainsEmptyParagraph(node)\n let firstChild\n if (isEmpty && $isParagraphNode((firstChild = node.getFirstChild()))) {\n firstChild.remove()\n }\n } else if ($isTableCellNode(firstCell)) {\n const isEmpty = $cellContainsEmptyParagraph(node)\n if (!isEmpty) {\n firstCell.append(...node.getChildren())\n }\n node.remove()\n }\n }\n }\n if (firstCell !== null) {\n if (firstCell.getChildrenSize() === 0) {\n firstCell.append($createParagraphNode())\n }\n $selectLastDescendant(firstCell)\n }\n onClose()\n }\n })\n }\n\n const unmergeTableCellsAtSelection = () => {\n editor.update(() => {\n $unmergeCell()\n })\n }\n\n const insertTableRowAtSelection = useCallback(\n (shouldInsertAfter: boolean) => {\n editor.update(() => {\n $insertTableRow__EXPERIMENTAL(shouldInsertAfter)\n onClose()\n })\n },\n [editor, onClose],\n )\n\n const insertTableColumnAtSelection = useCallback(\n (shouldInsertAfter: boolean) => {\n editor.update(() => {\n for (let i = 0; i < selectionCounts.columns; i++) {\n $insertTableColumn__EXPERIMENTAL(shouldInsertAfter)\n }\n onClose()\n })\n },\n [editor, onClose, selectionCounts.columns],\n )\n\n const deleteTableRowAtSelection = useCallback(() => {\n editor.update(() => {\n $deleteTableRow__EXPERIMENTAL()\n onClose()\n })\n }, [editor, onClose])\n\n const deleteTableAtSelection = useCallback(() => {\n editor.update(() => {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n tableNode.remove()\n\n clearTableSelection()\n onClose()\n })\n }, [editor, tableCellNode, clearTableSelection, onClose])\n\n const deleteTableColumnAtSelection = useCallback(() => {\n editor.update(() => {\n $deleteTableColumn__EXPERIMENTAL()\n onClose()\n })\n }, [editor, onClose])\n\n const toggleTableRowIsHeader = useCallback(() => {\n editor.update(() => {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n\n const tableRowIndex = $getTableRowIndexFromTableCellNode(tableCellNode)\n\n const tableRows = tableNode.getChildren()\n\n if (tableRowIndex >= tableRows.length || tableRowIndex < 0) {\n throw new Error('Expected table cell to be inside of table row.')\n }\n\n const tableRow = tableRows[tableRowIndex]\n\n if (!$isTableRowNode(tableRow)) {\n throw new Error('Expected table row')\n }\n\n tableRow.getChildren().forEach((tableCell) => {\n if (!$isTableCellNode(tableCell)) {\n throw new Error('Expected table cell')\n }\n\n tableCell.toggleHeaderStyle(TableCellHeaderStates.ROW)\n })\n\n clearTableSelection()\n onClose()\n })\n }, [editor, tableCellNode, clearTableSelection, onClose])\n\n const toggleTableColumnIsHeader = useCallback(() => {\n editor.update(() => {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n\n const tableColumnIndex = $getTableColumnIndexFromTableCellNode(tableCellNode)\n\n const tableRows = tableNode.getChildren<TableRowNode>()\n const maxRowsLength = Math.max(...tableRows.map((row) => row.getChildren().length))\n\n if (tableColumnIndex >= maxRowsLength || tableColumnIndex < 0) {\n throw new Error('Expected table cell to be inside of table row.')\n }\n\n for (let r = 0; r < tableRows.length; r++) {\n const tableRow = tableRows[r]\n\n if (!$isTableRowNode(tableRow)) {\n throw new Error('Expected table row')\n }\n\n const tableCells = tableRow.getChildren()\n if (tableColumnIndex >= tableCells.length) {\n // if cell is outside of bounds for the current row (for example various merge cell cases) we shouldn't highlight it\n continue\n }\n\n const tableCell = tableCells[tableColumnIndex]\n\n if (!$isTableCellNode(tableCell)) {\n throw new Error('Expected table cell')\n }\n\n tableCell.toggleHeaderStyle(TableCellHeaderStates.COLUMN)\n }\n\n clearTableSelection()\n onClose()\n })\n }, [editor, tableCellNode, clearTableSelection, onClose])\n\n let mergeCellButton: JSX.Element | null = null\n if (cellMerge) {\n if (canMergeCells) {\n mergeCellButton = (\n <button\n className=\"item\"\n data-test-id=\"table-merge-cells\"\n onClick={() => mergeTableCellsAtSelection()}\n type=\"button\"\n >\n Merge cells\n </button>\n )\n } else if (canUnmergeCell) {\n mergeCellButton = (\n <button\n className=\"item\"\n data-test-id=\"table-unmerge-cells\"\n onClick={() => unmergeTableCellsAtSelection()}\n type=\"button\"\n >\n Unmerge cells\n </button>\n )\n }\n }\n\n return createPortal(\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions,jsx-a11y/click-events-have-key-events\n <div\n className=\"table-action-menu-dropdown\"\n onClick={(e) => {\n e.stopPropagation()\n }}\n ref={dropDownRef}\n >\n {mergeCellButton ? (\n <React.Fragment>\n {mergeCellButton}\n <hr />\n </React.Fragment>\n ) : null}\n\n <button\n className=\"item\"\n data-test-id=\"table-insert-row-above\"\n onClick={() => insertTableRowAtSelection(false)}\n type=\"button\"\n >\n <span className=\"text\">\n Insert {selectionCounts.rows === 1 ? 'row' : `${selectionCounts.rows} rows`} above\n </span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-insert-row-below\"\n onClick={() => insertTableRowAtSelection(true)}\n type=\"button\"\n >\n <span className=\"text\">\n Insert {selectionCounts.rows === 1 ? 'row' : `${selectionCounts.rows} rows`} below\n </span>\n </button>\n <hr />\n <button\n className=\"item\"\n data-test-id=\"table-insert-column-before\"\n onClick={() => insertTableColumnAtSelection(false)}\n type=\"button\"\n >\n <span className=\"text\">\n Insert {selectionCounts.columns === 1 ? 'column' : `${selectionCounts.columns} columns`}{' '}\n left\n </span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-insert-column-after\"\n onClick={() => insertTableColumnAtSelection(true)}\n type=\"button\"\n >\n <span className=\"text\">\n Insert {selectionCounts.columns === 1 ? 'column' : `${selectionCounts.columns} columns`}{' '}\n right\n </span>\n </button>\n <hr />\n <button\n className=\"item\"\n data-test-id=\"table-delete-columns\"\n onClick={() => deleteTableColumnAtSelection()}\n type=\"button\"\n >\n <span className=\"text\">Delete column</span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-delete-rows\"\n onClick={() => deleteTableRowAtSelection()}\n type=\"button\"\n >\n <span className=\"text\">Delete row</span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-delete\"\n onClick={() => deleteTableAtSelection()}\n type=\"button\"\n >\n <span className=\"text\">Delete table</span>\n </button>\n <hr />\n <button className=\"item\" onClick={() => toggleTableRowIsHeader()} type=\"button\">\n <span className=\"text\">\n {(tableCellNode.__headerState & TableCellHeaderStates.ROW) === TableCellHeaderStates.ROW\n ? 'Remove'\n : 'Add'}{' '}\n row header\n </span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-column-header\"\n onClick={() => toggleTableColumnIsHeader()}\n type=\"button\"\n >\n <span className=\"text\">\n {(tableCellNode.__headerState & TableCellHeaderStates.COLUMN) ===\n TableCellHeaderStates.COLUMN\n ? 'Remove'\n : 'Add'}{' '}\n column header\n </span>\n </button>\n </div>,\n document.body,\n )\n}\n\nfunction TableCellActionMenuContainer({\n anchorElem,\n cellMerge,\n}: {\n anchorElem: HTMLElement\n cellMerge: boolean\n}): JSX.Element {\n const [editor] = useLexicalComposerContext()\n\n const menuButtonRef = useRef(null)\n const menuRootRef = useRef(null)\n const [isMenuOpen, setIsMenuOpen] = useState(false)\n\n const [tableCellNode, setTableMenuCellNode] = useState<TableCellNode | null>(null)\n\n const $moveMenu = useCallback(() => {\n const menu = menuButtonRef.current\n const selection = $getSelection()\n const nativeSelection = window.getSelection()\n const activeElement = document.activeElement\n\n if (selection == null || menu == null) {\n setTableMenuCellNode(null)\n return\n }\n\n const rootElement = editor.getRootElement()\n\n if (\n $isRangeSelection(selection) &&\n rootElement !== null &&\n nativeSelection !== null &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n const tableCellNodeFromSelection = $getTableCellNodeFromLexicalNode(\n selection.anchor.getNode(),\n )\n\n if (tableCellNodeFromSelection == null) {\n setTableMenuCellNode(null)\n return\n }\n\n const tableCellParentNodeDOM = editor.getElementByKey(tableCellNodeFromSelection.getKey())\n\n if (tableCellParentNodeDOM == null) {\n setTableMenuCellNode(null)\n return\n }\n\n setTableMenuCellNode(tableCellNodeFromSelection)\n } else if (!activeElement) {\n setTableMenuCellNode(null)\n }\n }, [editor])\n\n useEffect(() => {\n return editor.registerUpdateListener(() => {\n editor.getEditorState().read(() => {\n $moveMenu()\n })\n })\n })\n\n useEffect(() => {\n const menuButtonDOM = menuButtonRef.current as HTMLButtonElement | null\n\n if (menuButtonDOM != null && tableCellNode != null) {\n const tableCellNodeDOM = editor.getElementByKey(tableCellNode.getKey())\n\n if (tableCellNodeDOM != null) {\n const tableCellRect = tableCellNodeDOM.getBoundingClientRect()\n const menuRect = menuButtonDOM.getBoundingClientRect()\n const anchorRect = anchorElem.getBoundingClientRect()\n\n const top = tableCellRect.top - anchorRect.top + 4\n const left = tableCellRect.right - menuRect.width - 10 - anchorRect.left\n\n menuButtonDOM.style.opacity = '1'\n menuButtonDOM.style.transform = `translate(${left}px, ${top}px)`\n } else {\n menuButtonDOM.style.opacity = '0'\n menuButtonDOM.style.transform = 'translate(-10000px, -10000px)'\n }\n }\n }, [menuButtonRef, tableCellNode, editor, anchorElem])\n\n const prevTableCellDOM = useRef(tableCellNode)\n\n useEffect(() => {\n if (prevTableCellDOM.current !== tableCellNode) {\n setIsMenuOpen(false)\n }\n\n prevTableCellDOM.current = tableCellNode\n }, [prevTableCellDOM, tableCellNode])\n\n return (\n <div className=\"table-cell-action-button-container\" ref={menuButtonRef}>\n {tableCellNode != null && (\n <React.Fragment>\n <button\n className=\"table-cell-action-button\"\n onClick={(e) => {\n e.stopPropagation()\n setIsMenuOpen(!isMenuOpen)\n }}\n ref={menuRootRef}\n type=\"button\"\n >\n <MeatballsIcon />\n </button>\n {isMenuOpen && (\n <TableActionMenu\n cellMerge={cellMerge}\n contextRef={menuRootRef}\n onClose={() => setIsMenuOpen(false)}\n setIsMenuOpen={setIsMenuOpen}\n tableCellNode={tableCellNode}\n />\n )}\n </React.Fragment>\n )}\n </div>\n )\n}\n\nexport const TableActionMenuPlugin: PluginComponentWithAnchor = ({ anchorElem }) => {\n const isEditable = useLexicalEditable()\n return createPortal(\n isEditable ? (\n <TableCellActionMenuContainer anchorElem={anchorElem ?? document.body} cellMerge />\n ) : null,\n anchorElem ?? document.body,\n )\n}\n"],"names":["useLexicalComposerContext","useLexicalEditable","$deleteTableColumn__EXPERIMENTAL","$deleteTableRow__EXPERIMENTAL","$getNodeTriplet","$getTableCellNodeFromLexicalNode","$getTableColumnIndexFromTableCellNode","$getTableNodeFromLexicalNodeOrThrow","$getTableRowIndexFromTableCellNode","$insertTableColumn__EXPERIMENTAL","$insertTableRow__EXPERIMENTAL","$isTableCellNode","$isTableRowNode","$isTableSelection","$unmergeCell","TableCellHeaderStates","TableCellNode","getTableObserverFromTableElement","useScrollInfo","$createParagraphNode","$getRoot","$getSelection","$isElementNode","$isParagraphNode","$isRangeSelection","$isTextNode","React","useCallback","useEffect","useRef","useState","createPortal","MeatballsIcon","computeSelectionCount","selection","selectionShape","getShape","columns","toX","fromX","rows","toY","fromY","isTableSelectionRectangular","nodes","getNodes","currentRows","currentRow","expectedColumns","currentColumns","i","length","node","row","getParentOrThrow","Error","colSpan","__colSpan","j","undefined","__rowSpan","every","v","$canUnmerge","isCollapsed","anchor","is","focus","cell","$cellContainsEmptyParagraph","getChildrenSize","firstChild","getFirstChildOrThrow","isEmpty","$selectLastDescendant","lastDescendant","getLastDescendant","select","selectEnd","selectNext","TableActionMenu","cellMerge","contextRef","onClose","setIsMenuOpen","tableCellNode","_tableCellNode","editor","dropDownRef","updateTableCellNode","selectionCounts","updateSelectionCounts","canMergeCells","setCanMergeCells","canUnmergeCell","setCanUnmergeCell","y","registerMutationListener","nodeMutations","nodeUpdated","get","getKey","getEditorState","read","getLatest","skipInitialization","currentSelectionCounts","menuButtonElement","current","dropDownElement","rootElement","getRootElement","rootEleRect","getBoundingClientRect","menuButtonRect","style","opacity","dropDownElementRect","margin","leftPosition","right","width","window","innerWidth","position","left","pageXOffset","topPosition","top","height","innerHeight","bottom","pageYOffset","handleClickOutside","event","contains","target","addEventListener","removeEventListener","clearTableSelection","update","isAttached","tableNode","tableElement","getElementByKey","tableSelection","clearHighlight","markDirty","rootNode","selectStart","mergeTableCellsAtSelection","firstCell","setColSpan","setRowSpan","getFirstChild","remove","append","getChildren","unmergeTableCellsAtSelection","insertTableRowAtSelection","shouldInsertAfter","insertTableColumnAtSelection","deleteTableRowAtSelection","deleteTableAtSelection","deleteTableColumnAtSelection","toggleTableRowIsHeader","tableRowIndex","tableRows","tableRow","forEach","tableCell","toggleHeaderStyle","ROW","toggleTableColumnIsHeader","tableColumnIndex","maxRowsLength","Math","max","map","r","tableCells","COLUMN","mergeCellButton","button","className","data-test-id","onClick","type","div","e","stopPropagation","ref","Fragment","hr","span","__headerState","document","body","TableCellActionMenuContainer","anchorElem","menuButtonRef","menuRootRef","isMenuOpen","setTableMenuCellNode","$moveMenu","menu","nativeSelection","getSelection","activeElement","anchorNode","tableCellNodeFromSelection","getNode","tableCellParentNodeDOM","registerUpdateListener","menuButtonDOM","tableCellNodeDOM","tableCellRect","menuRect","anchorRect","transform","prevTableCellDOM","TableActionMenuPlugin","isEditable"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","useLexicalEditable","$deleteTableColumn__EXPERIMENTAL","$deleteTableRow__EXPERIMENTAL","$getNodeTriplet","$getTableCellNodeFromLexicalNode","$getTableColumnIndexFromTableCellNode","$getTableNodeFromLexicalNodeOrThrow","$getTableRowIndexFromTableCellNode","$insertTableColumn__EXPERIMENTAL","$insertTableRow__EXPERIMENTAL","$isTableCellNode","$isTableRowNode","$isTableSelection","$unmergeCell","TableCellHeaderStates","TableCellNode","getTableObserverFromTableElement","useScrollInfo","$createParagraphNode","$getRoot","$getSelection","$isElementNode","$isParagraphNode","$isRangeSelection","$isTextNode","React","useCallback","useEffect","useRef","useState","createPortal","MeatballsIcon","computeSelectionCount","selection","selectionShape","getShape","columns","toX","fromX","rows","toY","fromY","isTableSelectionRectangular","nodes","getNodes","currentRows","currentRow","expectedColumns","currentColumns","i","length","node","row","getParentOrThrow","Error","colSpan","__colSpan","j","undefined","__rowSpan","every","v","$canUnmerge","isCollapsed","anchor","is","focus","cell","$cellContainsEmptyParagraph","getChildrenSize","firstChild","getFirstChildOrThrow","isEmpty","$selectLastDescendant","lastDescendant","getLastDescendant","select","selectEnd","selectNext","TableActionMenu","t0","$","cellMerge","contextRef","onClose","setIsMenuOpen","tableCellNode","_tableCellNode","editor","dropDownRef","updateTableCellNode","t1","Symbol","for","selectionCounts","updateSelectionCounts","canMergeCells","setCanMergeCells","canUnmergeCell","setCanUnmergeCell","y","t2","t3","registerMutationListener","nodeMutations","nodeUpdated","get","getKey","getEditorState","read","getLatest","skipInitialization","t4","t5","currentSelectionCounts","menuButtonElement","current","dropDownElement","rootElement","getRootElement","rootEleRect","getBoundingClientRect","menuButtonRect","style","opacity","dropDownElementRect","leftPosition","right","width","window","innerWidth","position","left","pageXOffset","topPosition","top","height","innerHeight","position_0","bottom","pageYOffset","t6","handleClickOutside","event","contains","target","addEventListener","removeEventListener","t7","update","isAttached","tableNode","tableElement","getElementByKey","tableSelection","clearHighlight","markDirty","rootNode","selectStart","clearTableSelection","t8","selection_0","firstCell","setColSpan","setRowSpan","getFirstChild","remove","isEmpty_0","append","getChildren","mergeTableCellsAtSelection","t9","unmergeTableCellsAtSelection","t10","shouldInsertAfter","insertTableRowAtSelection","t11","shouldInsertAfter_0","i_0","insertTableColumnAtSelection","t12","deleteTableRowAtSelection","t13","tableNode_0","deleteTableAtSelection","t14","deleteTableColumnAtSelection","t15","tableNode_1","tableRowIndex","tableRows","tableRow","forEach","tableCell","toggleHeaderStyle","ROW","toggleTableRowIsHeader","t16","tableNode_2","tableColumnIndex","tableRows_0","maxRowsLength","Math","max","map","r","tableRow_0","tableCells","tableCell_0","COLUMN","toggleTableColumnIsHeader","mergeCellButton","t17","t18","t19","t20","t21","t22","t23","t24","t25","_jsxs","className","onClick","_temp","ref","children","Fragment","_jsx","type","__headerState","e","stopPropagation","TableCellActionMenuContainer","anchorElem","menuButtonRef","menuRootRef","isMenuOpen","setTableMenuCellNode","$moveMenu","menu","nativeSelection","getSelection","activeElement","document","anchorNode","tableCellNodeFromSelection","getNode","tableCellParentNodeDOM","registerUpdateListener","menuButtonDOM","tableCellNodeDOM","tableCellRect","menuRect","anchorRect","transform","prevTableCellDOM","TableActionMenuPlugin","isEditable","body"],"sources":["../../../../../../src/features/experimental_table/client/plugins/TableActionMenuPlugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type {\n HTMLTableElementWithWithTableSelectionState,\n TableRowNode,\n TableSelection,\n} from '@lexical/table'\nimport type { ElementNode } from 'lexical'\nimport type { JSX } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport {\n $deleteTableColumn__EXPERIMENTAL,\n $deleteTableRow__EXPERIMENTAL,\n $getNodeTriplet,\n $getTableCellNodeFromLexicalNode,\n $getTableColumnIndexFromTableCellNode,\n $getTableNodeFromLexicalNodeOrThrow,\n $getTableRowIndexFromTableCellNode,\n $insertTableColumn__EXPERIMENTAL,\n $insertTableRow__EXPERIMENTAL,\n $isTableCellNode,\n $isTableRowNode,\n $isTableSelection,\n $unmergeCell,\n TableCellHeaderStates,\n TableCellNode,\n getTableObserverFromTableElement,\n} from '@lexical/table'\nimport { useScrollInfo } from '@payloadcms/ui'\nimport {\n $createParagraphNode,\n $getRoot,\n $getSelection,\n $isElementNode,\n $isParagraphNode,\n $isRangeSelection,\n $isTextNode,\n} from 'lexical'\nimport * as React from 'react'\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport type { PluginComponentWithAnchor } from '../../../../typesClient.js'\n\nimport { MeatballsIcon } from '../../../../../lexical/ui/icons/Meatballs/index.js'\nimport './index.scss'\n\nfunction computeSelectionCount(selection: TableSelection): {\n columns: number\n rows: number\n} {\n const selectionShape = selection.getShape()\n return {\n columns: selectionShape.toX - selectionShape.fromX + 1,\n rows: selectionShape.toY - selectionShape.fromY + 1,\n }\n}\n\n// This is important when merging cells as there is no good way to re-merge weird shapes (a result\n// of selecting merged cells and non-merged)\nfunction isTableSelectionRectangular(selection: TableSelection): boolean {\n const nodes = selection.getNodes()\n const currentRows: Array<number> = []\n let currentRow = null\n let expectedColumns = null\n let currentColumns = 0\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i]\n if ($isTableCellNode(node)) {\n const row = node.getParentOrThrow()\n if ($isTableRowNode(row)) {\n throw new Error('Expected CellNode to have a RowNode parent')\n }\n if (currentRow !== row) {\n if (expectedColumns !== null && currentColumns !== expectedColumns) {\n return false\n }\n if (currentRow !== null) {\n expectedColumns = currentColumns\n }\n currentRow = row\n currentColumns = 0\n }\n const colSpan = node.__colSpan\n for (let j = 0; j < colSpan; j++) {\n if (currentRows[currentColumns + j] === undefined) {\n currentRows[currentColumns + j] = 0\n }\n currentRows[currentColumns + j] += node.__rowSpan\n }\n currentColumns += colSpan\n }\n }\n return (\n (expectedColumns === null || currentColumns === expectedColumns) &&\n currentRows.every((v) => v === currentRows[0])\n )\n}\n\nfunction $canUnmerge(): boolean {\n const selection = $getSelection()\n if (\n ($isRangeSelection(selection) && !selection.isCollapsed()) ||\n ($isTableSelection(selection) && !selection.anchor.is(selection.focus)) ||\n (!$isRangeSelection(selection) && !$isTableSelection(selection))\n ) {\n return false\n }\n const [cell] = $getNodeTriplet(selection.anchor)\n return cell.__colSpan > 1 || cell.__rowSpan > 1\n}\n\nfunction $cellContainsEmptyParagraph(cell: TableCellNode): boolean {\n if (cell.getChildrenSize() !== 1) {\n return false\n }\n const firstChild = cell.getFirstChildOrThrow()\n if (!$isParagraphNode(firstChild) || !firstChild.isEmpty()) {\n return false\n }\n return true\n}\n\nfunction $selectLastDescendant(node: ElementNode): void {\n const lastDescendant = node.getLastDescendant()\n if ($isTextNode(lastDescendant)) {\n lastDescendant.select()\n } else if ($isElementNode(lastDescendant)) {\n lastDescendant.selectEnd()\n } else if (lastDescendant !== null) {\n lastDescendant.selectNext()\n }\n}\n\ntype TableCellActionMenuProps = Readonly<{\n cellMerge: boolean\n contextRef: { current: HTMLElement | null }\n onClose: () => void\n setIsMenuOpen: (isOpen: boolean) => void\n tableCellNode: TableCellNode\n}>\n\nfunction TableActionMenu({\n cellMerge,\n contextRef,\n onClose,\n setIsMenuOpen,\n tableCellNode: _tableCellNode,\n}: TableCellActionMenuProps) {\n const [editor] = useLexicalComposerContext()\n const dropDownRef = useRef<HTMLDivElement | null>(null)\n const [tableCellNode, updateTableCellNode] = useState(_tableCellNode)\n const [selectionCounts, updateSelectionCounts] = useState({\n columns: 1,\n rows: 1,\n })\n const [canMergeCells, setCanMergeCells] = useState(false)\n const [canUnmergeCell, setCanUnmergeCell] = useState(false)\n const { y } = useScrollInfo()\n\n useEffect(() => {\n return editor.registerMutationListener(\n TableCellNode,\n (nodeMutations) => {\n const nodeUpdated = nodeMutations.get(tableCellNode.getKey()) === 'updated'\n\n if (nodeUpdated) {\n editor.getEditorState().read(() => {\n updateTableCellNode(tableCellNode.getLatest())\n })\n }\n },\n { skipInitialization: true },\n )\n }, [editor, tableCellNode])\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n // Merge cells\n if ($isTableSelection(selection)) {\n const currentSelectionCounts = computeSelectionCount(selection)\n updateSelectionCounts(computeSelectionCount(selection))\n setCanMergeCells(\n isTableSelectionRectangular(selection) &&\n (currentSelectionCounts.columns > 1 || currentSelectionCounts.rows > 1),\n )\n }\n // Unmerge cell\n setCanUnmergeCell($canUnmerge())\n })\n }, [editor])\n\n useEffect(() => {\n const menuButtonElement = contextRef.current\n const dropDownElement = dropDownRef.current\n const rootElement = editor.getRootElement()\n\n if (menuButtonElement != null && dropDownElement != null && rootElement != null) {\n const rootEleRect = rootElement.getBoundingClientRect()\n const menuButtonRect = menuButtonElement.getBoundingClientRect()\n dropDownElement.style.opacity = '1'\n const dropDownElementRect = dropDownElement.getBoundingClientRect()\n const margin = 5\n let leftPosition = menuButtonRect.right + margin\n if (\n leftPosition + dropDownElementRect.width > window.innerWidth ||\n leftPosition + dropDownElementRect.width > rootEleRect.right\n ) {\n const position = menuButtonRect.left - dropDownElementRect.width - margin\n leftPosition = (position < 0 ? margin : position) + window.pageXOffset\n }\n dropDownElement.style.left = `${leftPosition + window.pageXOffset}px`\n\n let topPosition = menuButtonRect.top\n if (topPosition + dropDownElementRect.height > window.innerHeight) {\n const position = menuButtonRect.bottom - dropDownElementRect.height\n topPosition = (position < 0 ? margin : position) + window.pageYOffset\n }\n dropDownElement.style.top = `${topPosition}px`\n }\n }, [contextRef, dropDownRef, editor, y])\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (\n dropDownRef.current != null &&\n contextRef.current != null &&\n !dropDownRef.current.contains(event.target as Node) &&\n !contextRef.current.contains(event.target as Node)\n ) {\n setIsMenuOpen(false)\n }\n }\n\n window.addEventListener('click', handleClickOutside)\n\n return () => window.removeEventListener('click', handleClickOutside)\n }, [setIsMenuOpen, contextRef])\n\n const clearTableSelection = useCallback(() => {\n editor.update(() => {\n if (tableCellNode.isAttached()) {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n const tableElement = editor.getElementByKey(\n tableNode.getKey(),\n ) as HTMLTableElementWithWithTableSelectionState\n\n if (!tableElement) {\n throw new Error('Expected to find tableElement in DOM')\n }\n\n const tableSelection = getTableObserverFromTableElement(tableElement)\n if (tableSelection !== null) {\n tableSelection.clearHighlight()\n }\n\n tableNode.markDirty()\n updateTableCellNode(tableCellNode.getLatest())\n }\n\n const rootNode = $getRoot()\n rootNode.selectStart()\n })\n }, [editor, tableCellNode])\n\n const mergeTableCellsAtSelection = () => {\n editor.update(() => {\n const selection = $getSelection()\n if ($isTableSelection(selection)) {\n const { columns, rows } = computeSelectionCount(selection)\n const nodes = selection.getNodes()\n let firstCell: TableCellNode | null = null\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i]\n if ($isTableCellNode(node)) {\n if (firstCell === null) {\n node.setColSpan(columns).setRowSpan(rows)\n firstCell = node\n const isEmpty = $cellContainsEmptyParagraph(node)\n let firstChild\n if (isEmpty && $isParagraphNode((firstChild = node.getFirstChild()))) {\n firstChild.remove()\n }\n } else if ($isTableCellNode(firstCell)) {\n const isEmpty = $cellContainsEmptyParagraph(node)\n if (!isEmpty) {\n firstCell.append(...node.getChildren())\n }\n node.remove()\n }\n }\n }\n if (firstCell !== null) {\n if (firstCell.getChildrenSize() === 0) {\n firstCell.append($createParagraphNode())\n }\n $selectLastDescendant(firstCell)\n }\n onClose()\n }\n })\n }\n\n const unmergeTableCellsAtSelection = () => {\n editor.update(() => {\n $unmergeCell()\n })\n }\n\n const insertTableRowAtSelection = useCallback(\n (shouldInsertAfter: boolean) => {\n editor.update(() => {\n $insertTableRow__EXPERIMENTAL(shouldInsertAfter)\n onClose()\n })\n },\n [editor, onClose],\n )\n\n const insertTableColumnAtSelection = useCallback(\n (shouldInsertAfter: boolean) => {\n editor.update(() => {\n for (let i = 0; i < selectionCounts.columns; i++) {\n $insertTableColumn__EXPERIMENTAL(shouldInsertAfter)\n }\n onClose()\n })\n },\n [editor, onClose, selectionCounts.columns],\n )\n\n const deleteTableRowAtSelection = useCallback(() => {\n editor.update(() => {\n $deleteTableRow__EXPERIMENTAL()\n onClose()\n })\n }, [editor, onClose])\n\n const deleteTableAtSelection = useCallback(() => {\n editor.update(() => {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n tableNode.remove()\n\n clearTableSelection()\n onClose()\n })\n }, [editor, tableCellNode, clearTableSelection, onClose])\n\n const deleteTableColumnAtSelection = useCallback(() => {\n editor.update(() => {\n $deleteTableColumn__EXPERIMENTAL()\n onClose()\n })\n }, [editor, onClose])\n\n const toggleTableRowIsHeader = useCallback(() => {\n editor.update(() => {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n\n const tableRowIndex = $getTableRowIndexFromTableCellNode(tableCellNode)\n\n const tableRows = tableNode.getChildren()\n\n if (tableRowIndex >= tableRows.length || tableRowIndex < 0) {\n throw new Error('Expected table cell to be inside of table row.')\n }\n\n const tableRow = tableRows[tableRowIndex]\n\n if (!$isTableRowNode(tableRow)) {\n throw new Error('Expected table row')\n }\n\n tableRow.getChildren().forEach((tableCell) => {\n if (!$isTableCellNode(tableCell)) {\n throw new Error('Expected table cell')\n }\n\n tableCell.toggleHeaderStyle(TableCellHeaderStates.ROW)\n })\n\n clearTableSelection()\n onClose()\n })\n }, [editor, tableCellNode, clearTableSelection, onClose])\n\n const toggleTableColumnIsHeader = useCallback(() => {\n editor.update(() => {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n\n const tableColumnIndex = $getTableColumnIndexFromTableCellNode(tableCellNode)\n\n const tableRows = tableNode.getChildren<TableRowNode>()\n const maxRowsLength = Math.max(...tableRows.map((row) => row.getChildren().length))\n\n if (tableColumnIndex >= maxRowsLength || tableColumnIndex < 0) {\n throw new Error('Expected table cell to be inside of table row.')\n }\n\n for (let r = 0; r < tableRows.length; r++) {\n const tableRow = tableRows[r]\n\n if (!$isTableRowNode(tableRow)) {\n throw new Error('Expected table row')\n }\n\n const tableCells = tableRow.getChildren()\n if (tableColumnIndex >= tableCells.length) {\n // if cell is outside of bounds for the current row (for example various merge cell cases) we shouldn't highlight it\n continue\n }\n\n const tableCell = tableCells[tableColumnIndex]\n\n if (!$isTableCellNode(tableCell)) {\n throw new Error('Expected table cell')\n }\n\n tableCell.toggleHeaderStyle(TableCellHeaderStates.COLUMN)\n }\n\n clearTableSelection()\n onClose()\n })\n }, [editor, tableCellNode, clearTableSelection, onClose])\n\n let mergeCellButton: JSX.Element | null = null\n if (cellMerge) {\n if (canMergeCells) {\n mergeCellButton = (\n <button\n className=\"item\"\n data-test-id=\"table-merge-cells\"\n onClick={() => mergeTableCellsAtSelection()}\n type=\"button\"\n >\n Merge cells\n </button>\n )\n } else if (canUnmergeCell) {\n mergeCellButton = (\n <button\n className=\"item\"\n data-test-id=\"table-unmerge-cells\"\n onClick={() => unmergeTableCellsAtSelection()}\n type=\"button\"\n >\n Unmerge cells\n </button>\n )\n }\n }\n\n return createPortal(\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions,jsx-a11y/click-events-have-key-events\n <div\n className=\"table-action-menu-dropdown\"\n onClick={(e) => {\n e.stopPropagation()\n }}\n ref={dropDownRef}\n >\n {mergeCellButton ? (\n <React.Fragment>\n {mergeCellButton}\n <hr />\n </React.Fragment>\n ) : null}\n\n <button\n className=\"item\"\n data-test-id=\"table-insert-row-above\"\n onClick={() => insertTableRowAtSelection(false)}\n type=\"button\"\n >\n <span className=\"text\">\n Insert {selectionCounts.rows === 1 ? 'row' : `${selectionCounts.rows} rows`} above\n </span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-insert-row-below\"\n onClick={() => insertTableRowAtSelection(true)}\n type=\"button\"\n >\n <span className=\"text\">\n Insert {selectionCounts.rows === 1 ? 'row' : `${selectionCounts.rows} rows`} below\n </span>\n </button>\n <hr />\n <button\n className=\"item\"\n data-test-id=\"table-insert-column-before\"\n onClick={() => insertTableColumnAtSelection(false)}\n type=\"button\"\n >\n <span className=\"text\">\n Insert {selectionCounts.columns === 1 ? 'column' : `${selectionCounts.columns} columns`}{' '}\n left\n </span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-insert-column-after\"\n onClick={() => insertTableColumnAtSelection(true)}\n type=\"button\"\n >\n <span className=\"text\">\n Insert {selectionCounts.columns === 1 ? 'column' : `${selectionCounts.columns} columns`}{' '}\n right\n </span>\n </button>\n <hr />\n <button\n className=\"item\"\n data-test-id=\"table-delete-columns\"\n onClick={() => deleteTableColumnAtSelection()}\n type=\"button\"\n >\n <span className=\"text\">Delete column</span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-delete-rows\"\n onClick={() => deleteTableRowAtSelection()}\n type=\"button\"\n >\n <span className=\"text\">Delete row</span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-delete\"\n onClick={() => deleteTableAtSelection()}\n type=\"button\"\n >\n <span className=\"text\">Delete table</span>\n </button>\n <hr />\n <button className=\"item\" onClick={() => toggleTableRowIsHeader()} type=\"button\">\n <span className=\"text\">\n {(tableCellNode.__headerState & TableCellHeaderStates.ROW) === TableCellHeaderStates.ROW\n ? 'Remove'\n : 'Add'}{' '}\n row header\n </span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-column-header\"\n onClick={() => toggleTableColumnIsHeader()}\n type=\"button\"\n >\n <span className=\"text\">\n {(tableCellNode.__headerState & TableCellHeaderStates.COLUMN) ===\n TableCellHeaderStates.COLUMN\n ? 'Remove'\n : 'Add'}{' '}\n column header\n </span>\n </button>\n </div>,\n document.body,\n )\n}\n\nfunction TableCellActionMenuContainer({\n anchorElem,\n cellMerge,\n}: {\n anchorElem: HTMLElement\n cellMerge: boolean\n}): JSX.Element {\n const [editor] = useLexicalComposerContext()\n\n const menuButtonRef = useRef(null)\n const menuRootRef = useRef(null)\n const [isMenuOpen, setIsMenuOpen] = useState(false)\n\n const [tableCellNode, setTableMenuCellNode] = useState<TableCellNode | null>(null)\n\n const $moveMenu = useCallback(() => {\n const menu = menuButtonRef.current\n const selection = $getSelection()\n const nativeSelection = window.getSelection()\n const activeElement = document.activeElement\n\n if (selection == null || menu == null) {\n setTableMenuCellNode(null)\n return\n }\n\n const rootElement = editor.getRootElement()\n\n if (\n $isRangeSelection(selection) &&\n rootElement !== null &&\n nativeSelection !== null &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n const tableCellNodeFromSelection = $getTableCellNodeFromLexicalNode(\n selection.anchor.getNode(),\n )\n\n if (tableCellNodeFromSelection == null) {\n setTableMenuCellNode(null)\n return\n }\n\n const tableCellParentNodeDOM = editor.getElementByKey(tableCellNodeFromSelection.getKey())\n\n if (tableCellParentNodeDOM == null) {\n setTableMenuCellNode(null)\n return\n }\n\n setTableMenuCellNode(tableCellNodeFromSelection)\n } else if (!activeElement) {\n setTableMenuCellNode(null)\n }\n }, [editor])\n\n useEffect(() => {\n return editor.registerUpdateListener(() => {\n editor.getEditorState().read(() => {\n $moveMenu()\n })\n })\n })\n\n useEffect(() => {\n const menuButtonDOM = menuButtonRef.current as HTMLButtonElement | null\n\n if (menuButtonDOM != null && tableCellNode != null) {\n const tableCellNodeDOM = editor.getElementByKey(tableCellNode.getKey())\n\n if (tableCellNodeDOM != null) {\n const tableCellRect = tableCellNodeDOM.getBoundingClientRect()\n const menuRect = menuButtonDOM.getBoundingClientRect()\n const anchorRect = anchorElem.getBoundingClientRect()\n\n const top = tableCellRect.top - anchorRect.top + 4\n const left = tableCellRect.right - menuRect.width - 10 - anchorRect.left\n\n menuButtonDOM.style.opacity = '1'\n menuButtonDOM.style.transform = `translate(${left}px, ${top}px)`\n } else {\n menuButtonDOM.style.opacity = '0'\n menuButtonDOM.style.transform = 'translate(-10000px, -10000px)'\n }\n }\n }, [menuButtonRef, tableCellNode, editor, anchorElem])\n\n const prevTableCellDOM = useRef(tableCellNode)\n\n useEffect(() => {\n if (prevTableCellDOM.current !== tableCellNode) {\n setIsMenuOpen(false)\n }\n\n prevTableCellDOM.current = tableCellNode\n }, [prevTableCellDOM, tableCellNode])\n\n return (\n <div className=\"table-cell-action-button-container\" ref={menuButtonRef}>\n {tableCellNode != null && (\n <React.Fragment>\n <button\n className=\"table-cell-action-button\"\n onClick={(e) => {\n e.stopPropagation()\n setIsMenuOpen(!isMenuOpen)\n }}\n ref={menuRootRef}\n type=\"button\"\n >\n <MeatballsIcon />\n </button>\n {isMenuOpen && (\n <TableActionMenu\n cellMerge={cellMerge}\n contextRef={menuRootRef}\n onClose={() => setIsMenuOpen(false)}\n setIsMenuOpen={setIsMenuOpen}\n tableCellNode={tableCellNode}\n />\n )}\n </React.Fragment>\n )}\n </div>\n )\n}\n\nexport const TableActionMenuPlugin: PluginComponentWithAnchor = ({ anchorElem }) => {\n const isEditable = useLexicalEditable()\n return createPortal(\n isEditable ? (\n <TableCellActionMenuContainer anchorElem={anchorElem ?? document.body} cellMerge />\n ) : null,\n anchorElem ?? document.body,\n )\n}\n"],"mappings":"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","ignoreList":[]}
|