@payloadcms/richtext-lexical 3.0.0-beta.13 → 3.0.0-beta.130
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.md +1 -1
- package/README.md +1 -1
- package/dist/cell/rscEntry.d.ts +12 -0
- package/dist/cell/rscEntry.d.ts.map +1 -0
- package/dist/cell/rscEntry.js +82 -0
- package/dist/cell/rscEntry.js.map +1 -0
- package/dist/exports/client/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-GWJ72IYP.js +2 -0
- package/dist/exports/client/Field-GWJ72IYP.js.map +7 -0
- package/dist/exports/client/RelationshipComponent-2RT3YXUT.js +2 -0
- package/dist/exports/client/RelationshipComponent-2RT3YXUT.js.map +7 -0
- package/dist/exports/client/bundled.css +1 -0
- package/dist/exports/client/chunk-5PBXL4HT.js +2 -0
- package/dist/exports/client/chunk-5PBXL4HT.js.map +7 -0
- package/dist/exports/client/chunk-AE5XKHR4.js +2 -0
- package/dist/exports/client/chunk-AE5XKHR4.js.map +7 -0
- package/dist/exports/client/chunk-CUIBIFW2.js +2 -0
- package/dist/exports/client/chunk-CUIBIFW2.js.map +7 -0
- package/dist/exports/client/chunk-MI5HS4QX.js +2 -0
- package/dist/exports/client/chunk-MI5HS4QX.js.map +7 -0
- package/dist/exports/client/chunk-OOBB5GCO.js +2 -0
- package/dist/exports/client/chunk-OOBB5GCO.js.map +7 -0
- package/dist/exports/client/chunk-XCEM47RI.js +3 -0
- package/dist/exports/client/chunk-XCEM47RI.js.map +7 -0
- package/dist/exports/client/chunk-XDEGE6I5.js +2 -0
- package/dist/exports/client/chunk-XDEGE6I5.js.map +7 -0
- package/dist/exports/client/chunk-YGRKYSDC.js +2 -0
- package/dist/exports/client/chunk-YGRKYSDC.js.map +7 -0
- package/dist/exports/client/component-ANB7VZLA.js +2 -0
- package/dist/exports/client/component-ANB7VZLA.js.map +7 -0
- package/dist/exports/client/component-YICNYPTU.js +2 -0
- package/dist/exports/client/component-YICNYPTU.js.map +7 -0
- package/dist/exports/client/component-YNHK5J3P.js +2 -0
- package/dist/exports/client/component-YNHK5J3P.js.map +7 -0
- package/dist/exports/client/componentInline-6RPSMLNJ.js +2 -0
- package/dist/exports/client/componentInline-6RPSMLNJ.js.map +7 -0
- package/dist/exports/client/index.d.ts +61 -0
- package/dist/exports/client/index.d.ts.map +1 -0
- package/dist/exports/client/index.js +38 -0
- package/dist/exports/client/index.js.map +7 -0
- package/dist/exports/server/migrate.d.ts +16 -0
- package/dist/exports/server/migrate.d.ts.map +1 -0
- package/dist/exports/server/migrate.js +16 -0
- package/dist/exports/server/migrate.js.map +1 -0
- package/dist/exports/server/rsc.d.ts +3 -0
- package/dist/exports/server/rsc.d.ts.map +1 -0
- package/dist/exports/server/rsc.js +3 -0
- package/dist/exports/server/rsc.js.map +1 -0
- package/dist/features/align/client/index.d.ts +2 -0
- package/dist/features/align/client/index.d.ts.map +1 -0
- package/dist/features/align/client/index.js +163 -0
- package/dist/features/align/client/index.js.map +1 -0
- package/dist/features/align/client/toolbarAlignGroup.d.ts +3 -0
- package/dist/features/align/client/toolbarAlignGroup.d.ts.map +1 -0
- package/dist/features/align/client/toolbarAlignGroup.js +13 -0
- package/dist/features/align/client/toolbarAlignGroup.js.map +1 -0
- package/dist/features/align/server/i18n.d.ts +3 -0
- package/dist/features/align/server/i18n.d.ts.map +1 -0
- package/dist/features/align/server/i18n.js +195 -0
- package/dist/features/align/server/i18n.js.map +1 -0
- package/dist/features/align/server/index.d.ts +2 -0
- package/dist/features/align/server/index.d.ts.map +1 -0
- package/dist/features/align/server/index.js +10 -0
- package/dist/features/align/server/index.js.map +1 -0
- package/dist/features/blockquote/client/index.d.ts +2 -0
- package/dist/features/blockquote/client/index.d.ts.map +1 -0
- package/dist/features/blockquote/client/index.js +72 -0
- package/dist/features/blockquote/client/index.js.map +1 -0
- package/dist/features/blockquote/markdownTransformer.d.ts.map +1 -0
- package/dist/features/blockquote/markdownTransformer.js +34 -0
- package/dist/features/blockquote/markdownTransformer.js.map +1 -0
- package/dist/features/blockquote/server/i18n.d.ts +3 -0
- package/dist/features/blockquote/server/i18n.d.ts.map +1 -0
- package/dist/features/blockquote/server/i18n.js +99 -0
- package/dist/features/blockquote/server/i18n.js.map +1 -0
- package/dist/features/blockquote/server/index.d.ts +7 -0
- package/dist/features/blockquote/server/index.d.ts.map +1 -0
- package/dist/features/blockquote/server/index.js +51 -0
- package/dist/features/blockquote/server/index.js.map +1 -0
- package/dist/features/blocks/client/component/BlockContent.d.ts +23 -0
- package/dist/features/blocks/client/component/BlockContent.d.ts.map +1 -0
- package/dist/features/blocks/client/component/BlockContent.js +192 -0
- package/dist/features/blocks/client/component/BlockContent.js.map +1 -0
- package/dist/features/blocks/client/component/FormSavePlugin.d.ts +11 -0
- package/dist/features/blocks/client/component/FormSavePlugin.d.ts.map +1 -0
- package/dist/features/blocks/client/component/FormSavePlugin.js +53 -0
- package/dist/features/blocks/client/component/FormSavePlugin.js.map +1 -0
- package/dist/features/blocks/client/component/index.d.ts +11 -0
- package/dist/features/blocks/client/component/index.d.ts.map +1 -0
- package/dist/features/blocks/client/component/index.js +165 -0
- package/dist/features/blocks/client/component/index.js.map +1 -0
- package/dist/features/blocks/client/component/removeEmptyArrayValues.d.ts +11 -0
- package/dist/features/blocks/client/component/removeEmptyArrayValues.d.ts.map +1 -0
- package/dist/features/blocks/client/component/removeEmptyArrayValues.js +20 -0
- package/dist/features/blocks/client/component/removeEmptyArrayValues.js.map +1 -0
- package/dist/features/blocks/client/componentInline/index.d.ts +10 -0
- package/dist/features/blocks/client/componentInline/index.d.ts.map +1 -0
- package/dist/features/blocks/client/componentInline/index.js +120 -0
- package/dist/features/blocks/client/componentInline/index.js.map +1 -0
- package/dist/features/blocks/client/index.d.ts +6 -0
- package/dist/features/blocks/client/index.d.ts.map +1 -0
- package/dist/features/blocks/client/index.js +171 -0
- package/dist/features/blocks/client/index.js.map +1 -0
- package/dist/features/blocks/client/nodes/BlocksNode.d.ts +14 -0
- package/dist/features/blocks/client/nodes/BlocksNode.d.ts.map +1 -0
- package/dist/features/blocks/client/nodes/BlocksNode.js +53 -0
- package/dist/features/blocks/client/nodes/BlocksNode.js.map +1 -0
- package/dist/features/blocks/client/nodes/InlineBlocksNode.d.ts +25 -0
- package/dist/features/blocks/client/nodes/InlineBlocksNode.d.ts.map +1 -0
- package/dist/features/blocks/client/nodes/InlineBlocksNode.js +42 -0
- package/dist/features/blocks/client/nodes/InlineBlocksNode.js.map +1 -0
- package/dist/features/blocks/client/plugin/commands.d.ts +9 -0
- package/dist/features/blocks/client/plugin/commands.d.ts.map +1 -0
- package/dist/features/blocks/client/plugin/commands.js +7 -0
- package/dist/features/blocks/client/plugin/commands.js.map +1 -0
- package/dist/features/blocks/client/plugin/index.d.ts +6 -0
- package/dist/features/blocks/client/plugin/index.d.ts.map +1 -0
- package/dist/features/blocks/client/plugin/index.js +205 -0
- package/dist/features/blocks/client/plugin/index.js.map +1 -0
- package/dist/features/blocks/server/graphQLPopulationPromise.d.ts +6 -0
- package/dist/features/blocks/server/graphQLPopulationPromise.d.ts.map +1 -0
- package/dist/features/blocks/server/graphQLPopulationPromise.js +44 -0
- package/dist/features/blocks/server/graphQLPopulationPromise.js.map +1 -0
- package/dist/features/blocks/server/i18n.d.ts +3 -0
- package/dist/features/blocks/server/i18n.d.ts.map +1 -0
- package/dist/features/blocks/server/i18n.js +291 -0
- package/dist/features/blocks/server/i18n.js.map +1 -0
- package/dist/features/blocks/server/index.d.ts +8 -0
- package/dist/features/blocks/server/index.d.ts.map +1 -0
- package/dist/features/blocks/server/index.js +174 -0
- package/dist/features/blocks/server/index.js.map +1 -0
- package/dist/features/blocks/server/nodes/BlocksNode.d.ts +44 -0
- package/dist/features/blocks/server/nodes/BlocksNode.d.ts.map +1 -0
- package/dist/features/blocks/server/nodes/BlocksNode.js +87 -0
- package/dist/features/blocks/server/nodes/BlocksNode.js.map +1 -0
- package/dist/features/blocks/server/nodes/InlineBlocksNode.d.ts +40 -0
- package/dist/features/blocks/server/nodes/InlineBlocksNode.d.ts.map +1 -0
- package/dist/features/blocks/server/nodes/InlineBlocksNode.js +88 -0
- package/dist/features/blocks/server/nodes/InlineBlocksNode.js.map +1 -0
- package/dist/features/blocks/server/validate.d.ts +6 -0
- package/dist/features/blocks/server/validate.d.ts.map +1 -0
- package/dist/features/blocks/server/validate.js +51 -0
- package/dist/features/blocks/server/validate.js.map +1 -0
- package/dist/features/converters/html/converter/converters/linebreak.d.ts.map +1 -0
- package/dist/features/converters/html/converter/converters/linebreak.js +7 -0
- package/dist/features/converters/html/converter/converters/linebreak.js.map +1 -0
- package/dist/features/converters/html/converter/converters/paragraph.d.ts.map +1 -0
- package/dist/features/converters/html/converter/converters/paragraph.js +32 -0
- package/dist/features/converters/html/converter/converters/paragraph.js.map +1 -0
- package/dist/features/converters/html/converter/converters/text.d.ts.map +1 -0
- package/dist/features/converters/html/converter/converters/text.js +33 -0
- package/dist/features/converters/html/converter/converters/text.js.map +1 -0
- package/dist/features/converters/html/converter/defaultConverters.d.ts.map +1 -0
- package/dist/features/converters/html/converter/defaultConverters.js +5 -0
- package/dist/features/converters/html/converter/defaultConverters.js.map +1 -0
- package/dist/features/converters/html/converter/index.d.ts +52 -0
- package/dist/features/converters/html/converter/index.d.ts.map +1 -0
- package/dist/features/converters/html/converter/index.js +88 -0
- package/dist/features/converters/html/converter/index.js.map +1 -0
- package/dist/features/converters/html/converter/types.d.ts +24 -0
- package/dist/features/converters/html/converter/types.d.ts.map +1 -0
- package/dist/features/converters/html/converter/types.js +2 -0
- package/dist/features/converters/html/converter/types.js.map +1 -0
- package/dist/features/converters/html/field/index.d.ts +35 -0
- package/dist/features/converters/html/field/index.d.ts.map +1 -0
- package/dist/features/converters/html/field/index.js +158 -0
- package/dist/features/converters/html/field/index.js.map +1 -0
- package/dist/features/converters/html/index.d.ts +8 -0
- package/dist/features/converters/html/index.d.ts.map +1 -0
- package/dist/features/converters/html/index.js +7 -0
- package/dist/features/converters/html/index.js.map +1 -0
- package/dist/features/debug/testRecorder/client/index.d.ts +2 -0
- package/dist/features/debug/testRecorder/client/index.d.ts.map +1 -0
- package/dist/features/debug/testRecorder/client/index.js +11 -0
- package/dist/features/debug/testRecorder/client/index.js.map +1 -0
- package/dist/features/debug/testRecorder/client/plugin/index.d.ts +5 -0
- package/dist/features/debug/testRecorder/client/plugin/index.d.ts.map +1 -0
- package/dist/features/debug/testRecorder/client/plugin/index.js +422 -0
- package/dist/features/debug/testRecorder/client/plugin/index.js.map +1 -0
- package/dist/features/debug/testRecorder/server/index.d.ts +2 -0
- package/dist/features/debug/testRecorder/server/index.d.ts.map +1 -0
- package/dist/features/debug/testRecorder/server/index.js +8 -0
- package/dist/features/debug/testRecorder/server/index.js.map +1 -0
- package/dist/features/debug/treeView/client/index.d.ts +2 -0
- package/dist/features/debug/treeView/client/index.d.ts.map +1 -0
- package/dist/features/debug/treeView/client/index.js +11 -0
- package/dist/features/debug/treeView/client/index.js.map +1 -0
- package/dist/features/debug/treeView/client/plugin/index.d.ts +4 -0
- package/dist/features/debug/treeView/client/plugin/index.d.ts.map +1 -0
- package/dist/features/debug/treeView/client/plugin/index.js +29 -0
- package/dist/features/debug/treeView/client/plugin/index.js.map +1 -0
- package/dist/features/debug/treeView/server/index.d.ts +2 -0
- package/dist/features/debug/treeView/server/index.d.ts.map +1 -0
- package/dist/features/debug/treeView/server/index.js +8 -0
- package/dist/features/debug/treeView/server/index.js.map +1 -0
- package/dist/features/experimental_table/client/index.d.ts +2 -0
- package/dist/features/experimental_table/client/index.d.ts.map +1 -0
- package/dist/features/experimental_table/client/index.js +54 -0
- package/dist/features/experimental_table/client/index.js.map +1 -0
- package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.d.ts +4 -0
- package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.d.ts.map +1 -0
- package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js +521 -0
- package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js.map +1 -0
- package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.d.ts +3 -0
- package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.d.ts.map +1 -0
- package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js +321 -0
- package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js.map +1 -0
- package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.d.ts +5 -0
- package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.d.ts.map +1 -0
- package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js +225 -0
- package/dist/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.js.map +1 -0
- package/dist/features/experimental_table/client/plugins/TablePlugin/index.d.ts +24 -0
- package/dist/features/experimental_table/client/plugins/TablePlugin/index.d.ts.map +1 -0
- package/dist/features/experimental_table/client/plugins/TablePlugin/index.js +152 -0
- package/dist/features/experimental_table/client/plugins/TablePlugin/index.js.map +1 -0
- package/dist/features/experimental_table/client/utils/debounce.d.ts +61 -0
- package/dist/features/experimental_table/client/utils/debounce.d.ts.map +1 -0
- package/dist/features/experimental_table/client/utils/debounce.js +221 -0
- package/dist/features/experimental_table/client/utils/debounce.js.map +1 -0
- package/dist/features/experimental_table/client/utils/useDebounce.d.ts +6 -0
- package/dist/features/experimental_table/client/utils/useDebounce.d.ts.map +1 -0
- package/dist/features/experimental_table/client/utils/useDebounce.js +16 -0
- package/dist/features/experimental_table/client/utils/useDebounce.js.map +1 -0
- package/dist/features/experimental_table/server/index.d.ts +13 -0
- package/dist/features/experimental_table/server/index.d.ts.map +1 -0
- package/dist/features/experimental_table/server/index.js +152 -0
- package/dist/features/experimental_table/server/index.js.map +1 -0
- package/dist/features/format/bold/feature.client.d.ts +2 -0
- package/dist/features/format/bold/feature.client.d.ts.map +1 -0
- package/dist/features/format/bold/feature.client.js +44 -0
- package/dist/features/format/bold/feature.client.js.map +1 -0
- package/dist/features/format/bold/feature.server.d.ts +2 -0
- package/dist/features/format/bold/feature.server.d.ts.map +1 -0
- package/dist/features/format/bold/feature.server.js +19 -0
- package/dist/features/format/bold/feature.server.js.map +1 -0
- package/dist/features/format/bold/markdownTransformers.d.ts.map +1 -0
- package/dist/features/format/bold/markdownTransformers.js +23 -0
- package/dist/features/format/bold/markdownTransformers.js.map +1 -0
- package/dist/features/format/inlineCode/feature.client.d.ts +2 -0
- package/dist/features/format/inlineCode/feature.client.d.ts.map +1 -0
- package/dist/features/format/inlineCode/feature.client.js +36 -0
- package/dist/features/format/inlineCode/feature.client.js.map +1 -0
- package/dist/features/format/inlineCode/feature.server.d.ts +2 -0
- package/dist/features/format/inlineCode/feature.server.d.ts.map +1 -0
- package/dist/features/format/inlineCode/feature.server.js +10 -0
- package/dist/features/format/inlineCode/feature.server.js.map +1 -0
- package/dist/features/format/inlineCode/markdownTransformers.d.ts.map +1 -0
- package/dist/features/format/inlineCode/markdownTransformers.js +6 -0
- package/dist/features/format/inlineCode/markdownTransformers.js.map +1 -0
- package/dist/features/format/italic/feature.client.d.ts +2 -0
- package/dist/features/format/italic/feature.client.d.ts.map +1 -0
- package/dist/features/format/italic/feature.client.js +36 -0
- package/dist/features/format/italic/feature.client.js.map +1 -0
- package/dist/features/format/italic/feature.server.d.ts +2 -0
- package/dist/features/format/italic/feature.server.d.ts.map +1 -0
- package/dist/features/format/italic/feature.server.js +10 -0
- package/dist/features/format/italic/feature.server.js.map +1 -0
- package/dist/features/format/italic/markdownTransformers.d.ts.map +1 -0
- package/dist/features/format/italic/markdownTransformers.js +12 -0
- package/dist/features/format/italic/markdownTransformers.js.map +1 -0
- package/dist/features/format/shared/toolbarFormatGroup.d.ts +3 -0
- package/dist/features/format/shared/toolbarFormatGroup.d.ts.map +1 -0
- package/dist/features/format/shared/toolbarFormatGroup.js +11 -0
- package/dist/features/format/shared/toolbarFormatGroup.js.map +1 -0
- package/dist/features/format/strikethrough/feature.client.d.ts +2 -0
- package/dist/features/format/strikethrough/feature.client.d.ts.map +1 -0
- package/dist/features/format/strikethrough/feature.client.js +36 -0
- package/dist/features/format/strikethrough/feature.client.js.map +1 -0
- package/dist/features/format/strikethrough/feature.server.d.ts +2 -0
- package/dist/features/format/strikethrough/feature.server.d.ts.map +1 -0
- package/dist/features/format/strikethrough/feature.server.js +10 -0
- package/dist/features/format/strikethrough/feature.server.js.map +1 -0
- package/dist/features/format/strikethrough/markdownTransformers.d.ts.map +1 -0
- package/dist/features/format/strikethrough/markdownTransformers.js +6 -0
- package/dist/features/format/strikethrough/markdownTransformers.js.map +1 -0
- package/dist/features/format/subscript/feature.client.d.ts +2 -0
- package/dist/features/format/subscript/feature.client.d.ts.map +1 -0
- package/dist/features/format/subscript/feature.client.js +34 -0
- package/dist/features/format/subscript/feature.client.js.map +1 -0
- package/dist/features/format/subscript/feature.server.d.ts +2 -0
- package/dist/features/format/subscript/feature.server.d.ts.map +1 -0
- package/dist/features/format/subscript/feature.server.js +8 -0
- package/dist/features/format/subscript/feature.server.js.map +1 -0
- package/dist/features/format/superscript/feature.client.d.ts +2 -0
- package/dist/features/format/superscript/feature.client.d.ts.map +1 -0
- package/dist/features/format/superscript/feature.client.js +34 -0
- package/dist/features/format/superscript/feature.client.js.map +1 -0
- package/dist/features/format/superscript/feature.server.d.ts +2 -0
- package/dist/features/format/superscript/feature.server.d.ts.map +1 -0
- package/dist/features/format/superscript/feature.server.js +8 -0
- package/dist/features/format/superscript/feature.server.js.map +1 -0
- package/dist/features/format/underline/feature.client.d.ts +2 -0
- package/dist/features/format/underline/feature.client.d.ts.map +1 -0
- package/dist/features/format/underline/feature.client.js +34 -0
- package/dist/features/format/underline/feature.client.js.map +1 -0
- package/dist/features/format/underline/feature.server.d.ts +2 -0
- package/dist/features/format/underline/feature.server.d.ts.map +1 -0
- package/dist/features/format/underline/feature.server.js +8 -0
- package/dist/features/format/underline/feature.server.js.map +1 -0
- package/dist/features/heading/client/index.d.ts +3 -0
- package/dist/features/heading/client/index.d.ts.map +1 -0
- package/dist/features/heading/client/index.js +108 -0
- package/dist/features/heading/client/index.js.map +1 -0
- package/dist/features/heading/markdownTransformer.d.ts.map +1 -0
- package/dist/features/heading/markdownTransformer.js +26 -0
- package/dist/features/heading/markdownTransformer.js.map +1 -0
- package/dist/features/heading/server/i18n.d.ts +3 -0
- package/dist/features/heading/server/i18n.d.ts.map +1 -0
- package/dist/features/heading/server/i18n.js +99 -0
- package/dist/features/heading/server/i18n.js.map +1 -0
- package/dist/features/heading/server/index.d.ts +10 -0
- package/dist/features/heading/server/index.d.ts.map +1 -0
- package/dist/features/heading/server/index.js +62 -0
- package/dist/features/heading/server/index.js.map +1 -0
- package/dist/features/horizontalRule/client/component/index.d.ts +10 -0
- package/dist/features/horizontalRule/client/component/index.d.ts.map +1 -0
- package/dist/features/horizontalRule/client/component/index.js +100 -0
- package/dist/features/horizontalRule/client/component/index.js.map +1 -0
- package/dist/features/horizontalRule/client/index.d.ts +2 -0
- package/dist/features/horizontalRule/client/index.d.ts.map +1 -0
- package/dist/features/horizontalRule/client/index.js +62 -0
- package/dist/features/horizontalRule/client/index.js.map +1 -0
- package/dist/features/horizontalRule/client/markdownTransformer.d.ts.map +1 -0
- package/dist/features/horizontalRule/client/markdownTransformer.js +20 -0
- package/dist/features/horizontalRule/client/markdownTransformer.js.map +1 -0
- package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.d.ts +20 -0
- package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.d.ts.map +1 -0
- package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.js +46 -0
- package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.js.map +1 -0
- package/dist/features/horizontalRule/client/plugin/index.d.ts +7 -0
- package/dist/features/horizontalRule/client/plugin/index.d.ts.map +1 -0
- package/dist/features/horizontalRule/client/plugin/index.js +42 -0
- package/dist/features/horizontalRule/client/plugin/index.js.map +1 -0
- package/dist/features/horizontalRule/server/i18n.d.ts +3 -0
- package/dist/features/horizontalRule/server/i18n.d.ts.map +1 -0
- package/dist/features/horizontalRule/server/i18n.js +99 -0
- package/dist/features/horizontalRule/server/i18n.js.map +1 -0
- package/dist/features/horizontalRule/server/index.d.ts +2 -0
- package/dist/features/horizontalRule/server/index.d.ts.map +1 -0
- package/dist/features/horizontalRule/server/index.js +25 -0
- package/dist/features/horizontalRule/server/index.js.map +1 -0
- package/dist/features/horizontalRule/server/markdownTransformer.d.ts +3 -0
- package/dist/features/horizontalRule/server/markdownTransformer.d.ts.map +1 -0
- package/dist/features/horizontalRule/server/markdownTransformer.js +20 -0
- package/dist/features/horizontalRule/server/markdownTransformer.js.map +1 -0
- package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.d.ts +53 -0
- package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.d.ts.map +1 -0
- package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js +88 -0
- package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js.map +1 -0
- package/dist/features/indent/client/index.d.ts +2 -0
- package/dist/features/indent/client/index.d.ts.map +1 -0
- package/dist/features/indent/client/index.js +62 -0
- package/dist/features/indent/client/index.js.map +1 -0
- package/dist/features/indent/client/toolbarIndentGroup.d.ts +3 -0
- package/dist/features/indent/client/toolbarIndentGroup.d.ts.map +1 -0
- package/dist/features/indent/client/toolbarIndentGroup.js +11 -0
- package/dist/features/indent/client/toolbarIndentGroup.js.map +1 -0
- package/dist/features/indent/server/i18n.d.ts +3 -0
- package/dist/features/indent/server/i18n.d.ts.map +1 -0
- package/dist/features/indent/server/i18n.js +131 -0
- package/dist/features/indent/server/i18n.js.map +1 -0
- package/dist/features/indent/server/index.d.ts +2 -0
- package/dist/features/indent/server/index.d.ts.map +1 -0
- package/dist/features/indent/server/index.js +10 -0
- package/dist/features/indent/server/index.js.map +1 -0
- package/dist/features/link/client/index.d.ts +4 -0
- package/dist/features/link/client/index.d.ts.map +1 -0
- package/dist/features/link/client/index.js +96 -0
- package/dist/features/link/client/index.js.map +1 -0
- package/dist/features/link/client/plugins/autoLink/index.d.ts +20 -0
- package/dist/features/link/client/plugins/autoLink/index.d.ts.map +1 -0
- package/dist/features/link/client/plugins/autoLink/index.js +333 -0
- package/dist/features/link/client/plugins/autoLink/index.js.map +1 -0
- package/dist/features/link/client/plugins/clickableLink/index.d.ts +4 -0
- package/dist/features/link/client/plugins/clickableLink/index.d.ts.map +1 -0
- package/dist/features/link/client/plugins/clickableLink/index.js +9 -0
- package/dist/features/link/client/plugins/clickableLink/index.js.map +1 -0
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/commands.d.ts.map +1 -0
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/commands.js +5 -0
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/commands.js.map +1 -0
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -0
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js +311 -0
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -0
- package/dist/features/link/client/plugins/floatingLinkEditor/index.d.ts +5 -0
- package/dist/features/link/client/plugins/floatingLinkEditor/index.d.ts.map +1 -0
- package/dist/features/link/client/plugins/floatingLinkEditor/index.js +15 -0
- package/dist/features/link/client/plugins/floatingLinkEditor/index.js.map +1 -0
- package/dist/features/link/client/plugins/floatingLinkEditor/types.d.ts +15 -0
- package/dist/features/link/client/plugins/floatingLinkEditor/types.d.ts.map +1 -0
- package/dist/features/link/client/plugins/floatingLinkEditor/types.js +5 -0
- package/dist/features/link/client/plugins/floatingLinkEditor/types.js.map +1 -0
- package/dist/features/link/client/plugins/link/index.d.ts +4 -0
- package/dist/features/link/client/plugins/link/index.d.ts.map +1 -0
- package/dist/features/link/client/plugins/link/index.js +60 -0
- package/dist/features/link/client/plugins/link/index.js.map +1 -0
- package/dist/features/link/markdownTransformer.d.ts +6 -0
- package/dist/features/link/markdownTransformer.d.ts.map +1 -0
- package/dist/features/link/markdownTransformer.js +49 -0
- package/dist/features/link/markdownTransformer.js.map +1 -0
- package/dist/features/link/nodes/AutoLinkNode.d.ts.map +1 -0
- package/dist/features/link/nodes/AutoLinkNode.js +69 -0
- package/dist/features/link/nodes/AutoLinkNode.js.map +1 -0
- package/dist/features/link/nodes/LinkNode.d.ts +39 -0
- package/dist/features/link/nodes/LinkNode.d.ts.map +1 -0
- package/dist/features/link/nodes/LinkNode.js +323 -0
- package/dist/features/link/nodes/LinkNode.js.map +1 -0
- package/dist/features/link/nodes/types.d.ts +24 -0
- package/dist/features/link/nodes/types.d.ts.map +1 -0
- package/dist/features/link/nodes/types.js +2 -0
- package/dist/features/link/nodes/types.js.map +1 -0
- package/dist/features/link/server/baseFields.d.ts +3 -0
- package/dist/features/link/server/baseFields.d.ts.map +1 -0
- package/dist/features/link/server/baseFields.js +136 -0
- package/dist/features/link/server/baseFields.js.map +1 -0
- package/dist/features/link/server/graphQLPopulationPromise.d.ts +5 -0
- package/dist/features/link/server/graphQLPopulationPromise.d.ts.map +1 -0
- package/dist/features/link/server/graphQLPopulationPromise.js +45 -0
- package/dist/features/link/server/graphQLPopulationPromise.js.map +1 -0
- package/dist/features/link/server/i18n.d.ts +3 -0
- package/dist/features/link/server/i18n.d.ts.map +1 -0
- package/dist/features/link/server/i18n.js +131 -0
- package/dist/features/link/server/i18n.js.map +1 -0
- package/dist/features/link/server/index.d.ts +35 -0
- package/dist/features/link/server/index.d.ts.map +1 -0
- package/dist/features/link/server/index.js +151 -0
- package/dist/features/link/server/index.js.map +1 -0
- package/dist/features/link/server/transformExtraFields.d.ts +9 -0
- package/dist/features/link/server/transformExtraFields.d.ts.map +1 -0
- package/dist/features/link/server/transformExtraFields.js +20 -0
- package/dist/features/link/server/transformExtraFields.js.map +1 -0
- package/dist/features/link/server/validate.d.ts +6 -0
- package/dist/features/link/server/validate.d.ts.map +1 -0
- package/dist/features/link/server/validate.js +43 -0
- package/dist/features/link/server/validate.js.map +1 -0
- package/dist/features/lists/checklist/client/index.d.ts +2 -0
- package/dist/features/lists/checklist/client/index.d.ts.map +1 -0
- package/dist/features/lists/checklist/client/index.js +92 -0
- package/dist/features/lists/checklist/client/index.js.map +1 -0
- package/dist/features/lists/checklist/client/plugin/index.d.ts +3 -0
- package/dist/features/lists/checklist/client/plugin/index.d.ts.map +1 -0
- package/dist/features/lists/checklist/client/plugin/index.js +9 -0
- package/dist/features/lists/checklist/client/plugin/index.js.map +1 -0
- package/dist/features/lists/checklist/markdownTransformers.d.ts.map +1 -0
- package/dist/features/lists/checklist/markdownTransformers.js +12 -0
- package/dist/features/lists/checklist/markdownTransformers.js.map +1 -0
- package/dist/features/lists/checklist/server/i18n.d.ts +3 -0
- package/dist/features/lists/checklist/server/i18n.d.ts.map +1 -0
- package/dist/features/lists/checklist/server/i18n.js +99 -0
- package/dist/features/lists/checklist/server/i18n.js.map +1 -0
- package/dist/features/lists/checklist/server/index.d.ts +2 -0
- package/dist/features/lists/checklist/server/index.d.ts.map +1 -0
- package/dist/features/lists/checklist/server/index.js +30 -0
- package/dist/features/lists/checklist/server/index.js.map +1 -0
- package/dist/features/lists/htmlConverter.d.ts +5 -0
- package/dist/features/lists/htmlConverter.d.ts.map +1 -0
- package/dist/features/lists/htmlConverter.js +81 -0
- package/dist/features/lists/htmlConverter.js.map +1 -0
- package/dist/features/lists/orderedList/client/index.d.ts +2 -0
- package/dist/features/lists/orderedList/client/index.d.ts.map +1 -0
- package/dist/features/lists/orderedList/client/index.js +84 -0
- package/dist/features/lists/orderedList/client/index.js.map +1 -0
- package/dist/features/lists/orderedList/markdownTransformer.d.ts.map +1 -0
- package/dist/features/lists/orderedList/markdownTransformer.js +12 -0
- package/dist/features/lists/orderedList/markdownTransformer.js.map +1 -0
- package/dist/features/lists/orderedList/server/i18n.d.ts +3 -0
- package/dist/features/lists/orderedList/server/i18n.d.ts.map +1 -0
- package/dist/features/lists/orderedList/server/i18n.js +99 -0
- package/dist/features/lists/orderedList/server/i18n.js.map +1 -0
- package/dist/features/lists/orderedList/server/index.d.ts +2 -0
- package/dist/features/lists/orderedList/server/index.d.ts.map +1 -0
- package/dist/features/lists/orderedList/server/index.js +30 -0
- package/dist/features/lists/orderedList/server/index.js.map +1 -0
- package/dist/features/lists/plugin/index.d.ts +13 -0
- package/dist/features/lists/plugin/index.d.ts.map +1 -0
- package/dist/features/lists/plugin/index.js +9 -0
- package/dist/features/lists/plugin/index.js.map +1 -0
- package/dist/features/lists/shared/markdown.d.ts +6 -0
- package/dist/features/lists/shared/markdown.d.ts.map +1 -0
- package/dist/features/lists/shared/markdown.js +57 -0
- package/dist/features/lists/shared/markdown.js.map +1 -0
- package/dist/features/lists/shared/slashMenuListGroup.d.ts +3 -0
- package/dist/features/lists/shared/slashMenuListGroup.d.ts.map +1 -0
- package/dist/features/lists/shared/slashMenuListGroup.js +12 -0
- package/dist/features/lists/shared/slashMenuListGroup.js.map +1 -0
- package/dist/features/lists/unorderedList/client/index.d.ts +2 -0
- package/dist/features/lists/unorderedList/client/index.d.ts.map +1 -0
- package/dist/features/lists/unorderedList/client/index.js +80 -0
- package/dist/features/lists/unorderedList/client/index.js.map +1 -0
- package/dist/features/lists/unorderedList/markdownTransformer.d.ts.map +1 -0
- package/dist/features/lists/unorderedList/markdownTransformer.js +12 -0
- package/dist/features/lists/unorderedList/markdownTransformer.js.map +1 -0
- package/dist/features/lists/unorderedList/server/i18n.d.ts +3 -0
- package/dist/features/lists/unorderedList/server/i18n.d.ts.map +1 -0
- package/dist/features/lists/unorderedList/server/i18n.js +99 -0
- package/dist/features/lists/unorderedList/server/i18n.js.map +1 -0
- package/dist/features/lists/unorderedList/server/index.d.ts +2 -0
- package/dist/features/lists/unorderedList/server/index.d.ts.map +1 -0
- package/dist/features/lists/unorderedList/server/index.js +26 -0
- package/dist/features/lists/unorderedList/server/index.js.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.d.ts +3 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.js +22 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.js.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.d.ts +3 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.js +33 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.js.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.d.ts +3 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.js +24 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.js.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.d.ts +3 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.js +25 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.js.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.d.ts +3 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.js +22 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.js.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.d.ts +3 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.js +28 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.js.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.d.ts +3 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js +22 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/defaultConverters.d.ts +3 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/defaultConverters.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/defaultConverters.js +9 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/defaultConverters.js.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/index.d.ts +19 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/index.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/index.js +78 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/index.js.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/types.d.ts +23 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/types.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/types.js +2 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/types.js.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/feature.client.d.ts +2 -0
- package/dist/features/migrations/lexicalPluginToLexical/feature.client.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/feature.client.js +10 -0
- package/dist/features/migrations/lexicalPluginToLexical/feature.client.js.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/feature.server.d.ts +10 -0
- package/dist/features/migrations/lexicalPluginToLexical/feature.server.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/feature.server.js +49 -0
- package/dist/features/migrations/lexicalPluginToLexical/feature.server.js.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js +15 -0
- package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts +33 -0
- package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js +74 -0
- package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/blockquote/converter.d.ts +3 -0
- package/dist/features/migrations/slateToLexical/converter/converters/blockquote/converter.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/blockquote/converter.js +23 -0
- package/dist/features/migrations/slateToLexical/converter/converters/blockquote/converter.js.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/heading/converter.d.ts +3 -0
- package/dist/features/migrations/slateToLexical/converter/converters/heading/converter.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/heading/converter.js +24 -0
- package/dist/features/migrations/slateToLexical/converter/converters/heading/converter.js.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/indent/converter.d.ts +3 -0
- package/dist/features/migrations/slateToLexical/converter/converters/indent/converter.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/indent/converter.js +33 -0
- package/dist/features/migrations/slateToLexical/converter/converters/indent/converter.js.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/link/converter.d.ts +3 -0
- package/dist/features/migrations/slateToLexical/converter/converters/link/converter.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/link/converter.js +30 -0
- package/dist/features/migrations/slateToLexical/converter/converters/link/converter.js.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/listItem/converter.d.ts +3 -0
- package/dist/features/migrations/slateToLexical/converter/converters/listItem/converter.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/listItem/converter.js +26 -0
- package/dist/features/migrations/slateToLexical/converter/converters/listItem/converter.js.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/orderedList/converter.d.ts +3 -0
- package/dist/features/migrations/slateToLexical/converter/converters/orderedList/converter.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/orderedList/converter.js +26 -0
- package/dist/features/migrations/slateToLexical/converter/converters/orderedList/converter.js.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/relationship/converter.d.ts +3 -0
- package/dist/features/migrations/slateToLexical/converter/converters/relationship/converter.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/relationship/converter.js +15 -0
- package/dist/features/migrations/slateToLexical/converter/converters/relationship/converter.js.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/unknown/converter.d.ts +3 -0
- package/dist/features/migrations/slateToLexical/converter/converters/unknown/converter.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/unknown/converter.js +27 -0
- package/dist/features/migrations/slateToLexical/converter/converters/unknown/converter.js.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/converter.d.ts +3 -0
- package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/converter.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js +26 -0
- package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/upload/converter.d.ts +3 -0
- package/dist/features/migrations/slateToLexical/converter/converters/upload/converter.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/upload/converter.js +18 -0
- package/dist/features/migrations/slateToLexical/converter/converters/upload/converter.js.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/defaultConverters.d.ts +3 -0
- package/dist/features/migrations/slateToLexical/converter/defaultConverters.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/defaultConverters.js +12 -0
- package/dist/features/migrations/slateToLexical/converter/defaultConverters.js.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/index.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/index.js +117 -0
- package/dist/features/migrations/slateToLexical/converter/index.js.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/types.d.ts +16 -0
- package/dist/features/migrations/slateToLexical/converter/types.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/types.js +2 -0
- package/dist/features/migrations/slateToLexical/converter/types.js.map +1 -0
- package/dist/features/migrations/slateToLexical/feature.client.d.ts +2 -0
- package/dist/features/migrations/slateToLexical/feature.client.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/feature.client.js +10 -0
- package/dist/features/migrations/slateToLexical/feature.client.js.map +1 -0
- package/dist/features/migrations/slateToLexical/feature.server.d.ts +11 -0
- package/dist/features/migrations/slateToLexical/feature.server.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/feature.server.js +50 -0
- package/dist/features/migrations/slateToLexical/feature.server.js.map +1 -0
- package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js +15 -0
- package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js.map +1 -0
- package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.d.ts +33 -0
- package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js +74 -0
- package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js.map +1 -0
- package/dist/features/paragraph/client/index.d.ts +2 -0
- package/dist/features/paragraph/client/index.d.ts.map +1 -0
- package/dist/features/paragraph/client/index.js +68 -0
- package/dist/features/paragraph/client/index.js.map +1 -0
- package/dist/features/paragraph/server/i18n.d.ts +3 -0
- package/dist/features/paragraph/server/i18n.d.ts.map +1 -0
- package/dist/features/paragraph/server/i18n.js +131 -0
- package/dist/features/paragraph/server/i18n.js.map +1 -0
- package/dist/features/paragraph/server/index.d.ts +2 -0
- package/dist/features/paragraph/server/index.d.ts.map +1 -0
- package/dist/features/paragraph/server/index.js +11 -0
- package/dist/features/paragraph/server/index.js.map +1 -0
- package/dist/features/relationship/client/components/RelationshipComponent.d.ts +13 -0
- package/dist/features/relationship/client/components/RelationshipComponent.d.ts.map +1 -0
- package/dist/features/relationship/client/components/RelationshipComponent.js +176 -0
- package/dist/features/relationship/client/components/RelationshipComponent.js.map +1 -0
- package/dist/features/relationship/client/drawer/commands.d.ts.map +1 -0
- package/dist/features/relationship/client/drawer/commands.js +3 -0
- package/dist/features/relationship/client/drawer/commands.js.map +1 -0
- package/dist/features/relationship/client/drawer/index.d.ts.map +1 -0
- package/dist/features/relationship/client/drawer/index.js +155 -0
- package/dist/features/relationship/client/drawer/index.js.map +1 -0
- package/dist/features/relationship/client/index.d.ts +3 -0
- package/dist/features/relationship/client/index.d.ts.map +1 -0
- package/dist/features/relationship/client/index.js +66 -0
- package/dist/features/relationship/client/index.js.map +1 -0
- package/dist/features/relationship/client/nodes/RelationshipNode.d.ts +15 -0
- package/dist/features/relationship/client/nodes/RelationshipNode.d.ts.map +1 -0
- package/dist/features/relationship/client/nodes/RelationshipNode.js +75 -0
- package/dist/features/relationship/client/nodes/RelationshipNode.js.map +1 -0
- package/dist/features/relationship/client/plugins/index.d.ts +7 -0
- package/dist/features/relationship/client/plugins/index.d.ts.map +1 -0
- package/dist/features/relationship/client/plugins/index.js +105 -0
- package/dist/features/relationship/client/plugins/index.js.map +1 -0
- package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.d.ts.map +1 -0
- package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.js +104 -0
- package/dist/features/relationship/client/utils/EnabledRelationshipsCondition.js.map +1 -0
- package/dist/features/relationship/server/graphQLPopulationPromise.d.ts +5 -0
- package/dist/features/relationship/server/graphQLPopulationPromise.d.ts.map +1 -0
- package/dist/features/relationship/server/graphQLPopulationPromise.js +37 -0
- package/dist/features/relationship/server/graphQLPopulationPromise.js.map +1 -0
- package/dist/features/relationship/server/i18n.d.ts +3 -0
- package/dist/features/relationship/server/i18n.d.ts.map +1 -0
- package/dist/features/relationship/server/i18n.js +99 -0
- package/dist/features/relationship/server/i18n.js.map +1 -0
- package/dist/features/relationship/server/index.d.ts +27 -0
- package/dist/features/relationship/server/index.d.ts.map +1 -0
- package/dist/features/relationship/server/index.js +67 -0
- package/dist/features/relationship/server/index.js.map +1 -0
- package/dist/features/relationship/server/nodes/RelationshipNode.d.ts +37 -0
- package/dist/features/relationship/server/nodes/RelationshipNode.d.ts.map +1 -0
- package/dist/features/relationship/server/nodes/RelationshipNode.js +104 -0
- package/dist/features/relationship/server/nodes/RelationshipNode.js.map +1 -0
- package/dist/features/shared/slashMenu/basicGroup.d.ts +3 -0
- package/dist/features/shared/slashMenu/basicGroup.d.ts.map +1 -0
- package/dist/features/shared/slashMenu/basicGroup.js +12 -0
- package/dist/features/shared/slashMenu/basicGroup.js.map +1 -0
- package/dist/features/shared/toolbar/addDropdownGroup.d.ts +3 -0
- package/dist/features/shared/toolbar/addDropdownGroup.d.ts.map +1 -0
- package/dist/features/shared/toolbar/addDropdownGroup.js +11 -0
- package/dist/features/shared/toolbar/addDropdownGroup.js.map +1 -0
- package/dist/features/shared/toolbar/featureButtonsGroup.d.ts +3 -0
- package/dist/features/shared/toolbar/featureButtonsGroup.d.ts.map +1 -0
- package/dist/features/shared/toolbar/featureButtonsGroup.js +9 -0
- package/dist/features/shared/toolbar/featureButtonsGroup.js.map +1 -0
- package/dist/features/shared/toolbar/textDropdownGroup.d.ts +3 -0
- package/dist/features/shared/toolbar/textDropdownGroup.d.ts.map +1 -0
- package/dist/features/shared/toolbar/textDropdownGroup.js +11 -0
- package/dist/features/shared/toolbar/textDropdownGroup.js.map +1 -0
- package/dist/features/toolbars/fixed/client/Toolbar/index.d.ts +5 -0
- package/dist/features/toolbars/fixed/client/Toolbar/index.d.ts.map +1 -0
- package/dist/features/toolbars/fixed/client/Toolbar/index.js +313 -0
- package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -0
- package/dist/features/toolbars/fixed/client/index.d.ts +3 -0
- package/dist/features/toolbars/fixed/client/index.d.ts.map +1 -0
- package/dist/features/toolbars/fixed/client/index.js +11 -0
- package/dist/features/toolbars/fixed/client/index.js.map +1 -0
- package/dist/features/toolbars/fixed/server/index.d.ts +18 -0
- package/dist/features/toolbars/fixed/server/index.d.ts.map +1 -0
- package/dist/features/toolbars/fixed/server/index.js +18 -0
- package/dist/features/toolbars/fixed/server/index.js.map +1 -0
- package/dist/features/toolbars/inline/client/Toolbar/index.d.ts +4 -0
- package/dist/features/toolbars/inline/client/Toolbar/index.d.ts.map +1 -0
- package/dist/features/toolbars/inline/client/Toolbar/index.js +404 -0
- package/dist/features/toolbars/inline/client/Toolbar/index.js.map +1 -0
- package/dist/features/toolbars/inline/client/index.d.ts +2 -0
- package/dist/features/toolbars/inline/client/index.d.ts.map +1 -0
- package/dist/features/toolbars/inline/client/index.js +11 -0
- package/dist/features/toolbars/inline/client/index.js.map +1 -0
- package/dist/features/toolbars/inline/server/index.d.ts +2 -0
- package/dist/features/toolbars/inline/server/index.d.ts.map +1 -0
- package/dist/features/toolbars/inline/server/index.js +8 -0
- package/dist/features/toolbars/inline/server/index.js.map +1 -0
- package/dist/features/toolbars/shared/ToolbarButton/index.d.ts +10 -0
- package/dist/features/toolbars/shared/ToolbarButton/index.d.ts.map +1 -0
- package/dist/features/toolbars/shared/ToolbarButton/index.js +89 -0
- package/dist/features/toolbars/shared/ToolbarButton/index.js.map +1 -0
- package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts +22 -0
- package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts.map +1 -0
- package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js +208 -0
- package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -0
- package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts +22 -0
- package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts.map +1 -0
- package/dist/features/toolbars/shared/ToolbarDropdown/index.js +311 -0
- package/dist/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -0
- package/dist/features/toolbars/types.d.ts +93 -0
- package/dist/features/toolbars/types.d.ts.map +1 -0
- package/dist/features/toolbars/types.js +2 -0
- package/dist/features/toolbars/types.js.map +1 -0
- package/dist/features/typeUtilities.d.ts +8 -0
- package/dist/features/typeUtilities.d.ts.map +1 -0
- package/dist/features/typeUtilities.js +7 -0
- package/dist/features/typeUtilities.js.map +1 -0
- package/dist/features/typesClient.d.ts +185 -0
- package/dist/features/typesClient.d.ts.map +1 -0
- package/dist/features/typesClient.js +2 -0
- package/dist/features/typesClient.js.map +1 -0
- package/dist/features/typesServer.d.ts +311 -0
- package/dist/features/typesServer.d.ts.map +1 -0
- package/dist/features/typesServer.js +2 -0
- package/dist/features/typesServer.js.map +1 -0
- package/dist/features/upload/client/component/index.d.ts +9 -0
- package/dist/features/upload/client/component/index.d.ts.map +1 -0
- package/dist/features/upload/client/component/index.js +243 -0
- package/dist/features/upload/client/component/index.js.map +1 -0
- package/dist/features/upload/client/drawer/commands.d.ts.map +1 -0
- package/dist/features/upload/client/drawer/commands.js +5 -0
- package/dist/features/upload/client/drawer/commands.js.map +1 -0
- package/dist/features/upload/client/drawer/index.d.ts.map +1 -0
- package/dist/features/upload/client/drawer/index.js +128 -0
- package/dist/features/upload/client/drawer/index.js.map +1 -0
- package/dist/features/upload/client/feature.client.d.ts +9 -0
- package/dist/features/upload/client/feature.client.d.ts.map +1 -0
- package/dist/features/upload/client/feature.client.js +64 -0
- package/dist/features/upload/client/feature.client.js.map +1 -0
- package/dist/features/upload/client/nodes/UploadNode.d.ts +22 -0
- package/dist/features/upload/client/nodes/UploadNode.d.ts.map +1 -0
- package/dist/features/upload/client/nodes/UploadNode.js +94 -0
- package/dist/features/upload/client/nodes/UploadNode.js.map +1 -0
- package/dist/features/upload/client/plugin/index.d.ts +8 -0
- package/dist/features/upload/client/plugin/index.d.ts.map +1 -0
- package/dist/features/upload/client/plugin/index.js +81 -0
- package/dist/features/upload/client/plugin/index.js.map +1 -0
- package/dist/features/upload/server/feature.server.d.ts +18 -0
- package/dist/features/upload/server/feature.server.d.ts.map +1 -0
- package/dist/features/upload/server/feature.server.js +217 -0
- package/dist/features/upload/server/feature.server.js.map +1 -0
- package/dist/features/upload/server/graphQLPopulationPromise.d.ts +5 -0
- package/dist/features/upload/server/graphQLPopulationPromise.d.ts.map +1 -0
- package/dist/features/upload/server/graphQLPopulationPromise.js +65 -0
- package/dist/features/upload/server/graphQLPopulationPromise.js.map +1 -0
- package/dist/features/upload/server/i18n.d.ts +3 -0
- package/dist/features/upload/server/i18n.d.ts.map +1 -0
- package/dist/features/upload/server/i18n.js +99 -0
- package/dist/features/upload/server/i18n.js.map +1 -0
- package/dist/features/upload/server/nodes/UploadNode.d.ts +42 -0
- package/dist/features/upload/server/nodes/UploadNode.d.ts.map +1 -0
- package/dist/features/upload/server/nodes/UploadNode.js +133 -0
- package/dist/features/upload/server/nodes/UploadNode.js.map +1 -0
- package/dist/features/upload/server/validate.d.ts +5 -0
- package/dist/features/upload/server/validate.d.ts.map +1 -0
- package/dist/features/upload/server/validate.js +61 -0
- package/dist/features/upload/server/validate.js.map +1 -0
- package/dist/field/Field.d.ts +9 -10
- package/dist/field/Field.d.ts.map +1 -1
- package/dist/field/Field.js +111 -86
- package/dist/field/Field.js.map +1 -1
- package/dist/field/bundled.css +1 -0
- package/dist/field/index.d.ts +2 -7
- package/dist/field/index.d.ts.map +1 -1
- package/dist/field/index.js +78 -81
- package/dist/field/index.js.map +1 -1
- package/dist/field/rscEntry.d.ts +9 -0
- package/dist/field/rscEntry.d.ts.map +1 -0
- package/dist/field/rscEntry.js +34 -0
- package/dist/field/rscEntry.js.map +1 -0
- package/dist/i18n.d.ts +3 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +163 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +62 -84
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +726 -251
- package/dist/index.js.map +1 -1
- package/dist/lexical/EditorPlugin.d.ts +8 -0
- package/dist/lexical/EditorPlugin.d.ts.map +1 -0
- package/dist/lexical/EditorPlugin.js +21 -0
- package/dist/lexical/EditorPlugin.js.map +1 -0
- package/dist/lexical/LexicalEditor.d.ts +7 -0
- package/dist/lexical/LexicalEditor.d.ts.map +1 -0
- package/dist/lexical/LexicalEditor.js +231 -0
- package/dist/lexical/LexicalEditor.js.map +1 -0
- package/dist/lexical/LexicalProvider.d.ts +14 -0
- package/dist/lexical/LexicalProvider.d.ts.map +1 -0
- package/dist/lexical/LexicalProvider.js +101 -0
- package/dist/lexical/LexicalProvider.js.map +1 -0
- package/dist/lexical/config/client/EditorConfigProvider.d.ts +28 -0
- package/dist/lexical/config/client/EditorConfigProvider.d.ts.map +1 -0
- package/dist/lexical/config/client/EditorConfigProvider.js +89 -0
- package/dist/lexical/config/client/EditorConfigProvider.js.map +1 -0
- package/dist/lexical/config/client/default.d.ts +3 -0
- package/dist/lexical/config/client/default.d.ts.map +1 -0
- package/dist/lexical/config/client/default.js +8 -0
- package/dist/lexical/config/client/default.js.map +1 -0
- package/dist/lexical/config/client/loader.d.ts +10 -0
- package/dist/lexical/config/client/loader.d.ts.map +1 -0
- package/dist/lexical/config/client/loader.js +37 -0
- package/dist/lexical/config/client/loader.js.map +1 -0
- package/dist/lexical/config/client/sanitize.d.ts +7 -0
- package/dist/lexical/config/client/sanitize.d.ts.map +1 -0
- package/dist/lexical/config/client/sanitize.js +180 -0
- package/dist/lexical/config/client/sanitize.js.map +1 -0
- package/dist/lexical/config/server/default.d.ts +7 -0
- package/dist/lexical/config/server/default.d.ts.map +1 -0
- package/dist/lexical/config/server/default.js +31 -0
- package/dist/lexical/config/server/default.js.map +1 -0
- package/dist/lexical/config/server/loader.d.ts +11 -0
- package/dist/lexical/config/server/loader.d.ts.map +1 -0
- package/dist/lexical/config/server/loader.js +122 -0
- package/dist/lexical/config/server/loader.js.map +1 -0
- package/dist/lexical/config/server/sanitize.d.ts +6 -0
- package/dist/lexical/config/server/sanitize.d.ts.map +1 -0
- package/dist/lexical/config/server/sanitize.js +113 -0
- package/dist/lexical/config/server/sanitize.js.map +1 -0
- package/dist/lexical/config/types.d.ts +24 -0
- package/dist/lexical/config/types.d.ts.map +1 -0
- package/dist/lexical/config/types.js +2 -0
- package/dist/lexical/config/types.js.map +1 -0
- package/dist/lexical/nodes/index.d.ts +6 -0
- package/dist/lexical/nodes/index.d.ts.map +1 -0
- package/dist/lexical/nodes/index.js +11 -0
- package/dist/lexical/nodes/index.js.map +1 -0
- package/dist/lexical/plugins/MarkdownShortcut/index.d.ts.map +1 -0
- package/dist/lexical/plugins/MarkdownShortcut/index.js +25 -0
- package/dist/lexical/plugins/MarkdownShortcut/index.js.map +1 -0
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts +32 -0
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts.map +1 -0
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +395 -0
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -0
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts +24 -0
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts.map +1 -0
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +249 -0
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +1 -0
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts +51 -0
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts.map +1 -0
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js +2 -0
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js.map +1 -0
- package/dist/lexical/plugins/SlashMenu/index.d.ts +6 -0
- package/dist/lexical/plugins/SlashMenu/index.d.ts.map +1 -0
- package/dist/lexical/plugins/SlashMenu/index.js +205 -0
- package/dist/lexical/plugins/SlashMenu/index.js.map +1 -0
- package/dist/lexical/plugins/SlashMenu/useMenuTriggerMatch.d.ts.map +1 -0
- package/dist/lexical/plugins/SlashMenu/useMenuTriggerMatch.js +48 -0
- package/dist/lexical/plugins/SlashMenu/useMenuTriggerMatch.js.map +1 -0
- package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.d.ts +6 -0
- package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.d.ts.map +1 -0
- package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js +155 -0
- package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.d.ts +2 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.d.ts.map +1 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.js +15 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.js.map +1 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.d.ts.map +1 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js +15 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js.map +1 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.d.ts +3 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.d.ts.map +1 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js +31 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js.map +1 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.d.ts +6 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.d.ts.map +1 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js +355 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.d.ts +9 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.d.ts.map +1 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js +113 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js.map +1 -0
- package/dist/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.d.ts +5 -0
- package/dist/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.d.ts.map +1 -0
- package/dist/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.js +28 -0
- package/dist/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.js.map +1 -0
- package/dist/lexical/plugins/handles/utils/doesLineHeightAffectElement.d.ts.map +1 -0
- package/dist/lexical/plugins/handles/utils/doesLineHeightAffectElement.js +28 -0
- package/dist/lexical/plugins/handles/utils/doesLineHeightAffectElement.js.map +1 -0
- package/dist/lexical/plugins/handles/utils/getCollapsedMargins.d.ts.map +1 -0
- package/dist/lexical/plugins/handles/utils/getCollapsedMargins.js +18 -0
- package/dist/lexical/plugins/handles/utils/getCollapsedMargins.js.map +1 -0
- package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.d.ts +31 -0
- package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.d.ts.map +1 -0
- package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.js +152 -0
- package/dist/lexical/plugins/handles/utils/getNodeCloseToPoint.js.map +1 -0
- package/dist/lexical/plugins/handles/utils/getTopLevelNodeKeys.d.ts.map +1 -0
- package/dist/lexical/plugins/handles/utils/getTopLevelNodeKeys.js +7 -0
- package/dist/lexical/plugins/handles/utils/getTopLevelNodeKeys.js.map +1 -0
- package/dist/lexical/plugins/handles/utils/isOnHandleElement.d.ts.map +1 -0
- package/dist/lexical/plugins/handles/utils/isOnHandleElement.js +6 -0
- package/dist/lexical/plugins/handles/utils/isOnHandleElement.js.map +1 -0
- package/dist/lexical/plugins/handles/utils/setHandlePosition.d.ts.map +1 -0
- package/dist/lexical/plugins/handles/utils/setHandlePosition.js +28 -0
- package/dist/lexical/plugins/handles/utils/setHandlePosition.js.map +1 -0
- package/dist/lexical/theme/EditorTheme.d.ts +3 -0
- package/dist/lexical/theme/EditorTheme.d.ts.map +1 -0
- package/dist/lexical/theme/EditorTheme.js +100 -0
- package/dist/lexical/theme/EditorTheme.js.map +1 -0
- package/dist/lexical/ui/ContentEditable.d.ts +6 -0
- package/dist/lexical/ui/ContentEditable.d.ts.map +1 -0
- package/dist/lexical/ui/ContentEditable.js +34 -0
- package/dist/lexical/ui/ContentEditable.js.map +1 -0
- package/dist/lexical/ui/icons/AI/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/AI/index.js +34 -0
- package/dist/lexical/ui/icons/AI/index.js.map +1 -0
- package/dist/lexical/ui/icons/Add/index.d.ts +3 -0
- package/dist/lexical/ui/icons/Add/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/Add/index.js +19 -0
- package/dist/lexical/ui/icons/Add/index.js.map +1 -0
- package/dist/lexical/ui/icons/Add/light.svg +4 -0
- package/dist/lexical/ui/icons/AlignCenter/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/AlignCenter/index.js +28 -0
- package/dist/lexical/ui/icons/AlignCenter/index.js.map +1 -0
- package/dist/lexical/ui/icons/AlignJustify/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/AlignJustify/index.js +28 -0
- package/dist/lexical/ui/icons/AlignJustify/index.js.map +1 -0
- package/dist/lexical/ui/icons/AlignLeft/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/AlignLeft/index.js +28 -0
- package/dist/lexical/ui/icons/AlignLeft/index.js.map +1 -0
- package/dist/lexical/ui/icons/AlignRight/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/AlignRight/index.js +28 -0
- package/dist/lexical/ui/icons/AlignRight/index.js.map +1 -0
- package/dist/lexical/ui/icons/Block/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/Block/index.js +37 -0
- package/dist/lexical/ui/icons/Block/index.js.map +1 -0
- package/dist/lexical/ui/icons/Blockquote/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/Blockquote/index.js +19 -0
- package/dist/lexical/ui/icons/Blockquote/index.js.map +1 -0
- package/dist/lexical/ui/icons/Bold/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/Bold/index.js +19 -0
- package/dist/lexical/ui/icons/Bold/index.js.map +1 -0
- package/dist/lexical/ui/icons/Caret/index.svg +3 -0
- package/dist/lexical/ui/icons/Checklist/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/Checklist/index.js +27 -0
- package/dist/lexical/ui/icons/Checklist/index.js.map +1 -0
- package/dist/lexical/ui/icons/Code/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/Code/index.js +22 -0
- package/dist/lexical/ui/icons/Code/index.js.map +1 -0
- package/dist/lexical/ui/icons/CodeBlock/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/CodeBlock/index.js +22 -0
- package/dist/lexical/ui/icons/CodeBlock/index.js.map +1 -0
- package/dist/lexical/ui/icons/DraggableBlock/light.svg +9 -0
- package/dist/lexical/ui/icons/H1/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/H1/index.js +19 -0
- package/dist/lexical/ui/icons/H1/index.js.map +1 -0
- package/dist/lexical/ui/icons/H2/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/H2/index.js +19 -0
- package/dist/lexical/ui/icons/H2/index.js.map +1 -0
- package/dist/lexical/ui/icons/H3/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/H3/index.js +19 -0
- package/dist/lexical/ui/icons/H3/index.js.map +1 -0
- package/dist/lexical/ui/icons/H4/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/H4/index.js +19 -0
- package/dist/lexical/ui/icons/H4/index.js.map +1 -0
- package/dist/lexical/ui/icons/H5/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/H5/index.js +19 -0
- package/dist/lexical/ui/icons/H5/index.js.map +1 -0
- package/dist/lexical/ui/icons/H6/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/H6/index.js +19 -0
- package/dist/lexical/ui/icons/H6/index.js.map +1 -0
- package/dist/lexical/ui/icons/HorizontalRule/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/HorizontalRule/index.js +22 -0
- package/dist/lexical/ui/icons/HorizontalRule/index.js.map +1 -0
- package/dist/lexical/ui/icons/IndentDecrease/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/IndentDecrease/index.js +31 -0
- package/dist/lexical/ui/icons/IndentDecrease/index.js.map +1 -0
- package/dist/lexical/ui/icons/IndentIncrease/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/IndentIncrease/index.js +31 -0
- package/dist/lexical/ui/icons/IndentIncrease/index.js.map +1 -0
- package/dist/lexical/ui/icons/InlineBlocks/index.d.ts +3 -0
- package/dist/lexical/ui/icons/InlineBlocks/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/InlineBlocks/index.js +21 -0
- package/dist/lexical/ui/icons/InlineBlocks/index.js.map +1 -0
- package/dist/lexical/ui/icons/Italic/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/Italic/index.js +19 -0
- package/dist/lexical/ui/icons/Italic/index.js.map +1 -0
- package/dist/lexical/ui/icons/Link/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/Link/index.js +20 -0
- package/dist/lexical/ui/icons/Link/index.js.map +1 -0
- package/dist/lexical/ui/icons/Meatballs/index.d.ts +3 -0
- package/dist/lexical/ui/icons/Meatballs/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/Meatballs/index.js +22 -0
- package/dist/lexical/ui/icons/Meatballs/index.js.map +1 -0
- package/dist/lexical/ui/icons/OrderedList/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/OrderedList/index.js +34 -0
- package/dist/lexical/ui/icons/OrderedList/index.js.map +1 -0
- package/dist/lexical/ui/icons/Relationship/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/Relationship/index.js +34 -0
- package/dist/lexical/ui/icons/Relationship/index.js.map +1 -0
- package/dist/lexical/ui/icons/Strikethrough/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/Strikethrough/index.js +22 -0
- package/dist/lexical/ui/icons/Strikethrough/index.js.map +1 -0
- package/dist/lexical/ui/icons/Subscript/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/Subscript/index.js +19 -0
- package/dist/lexical/ui/icons/Subscript/index.js.map +1 -0
- package/dist/lexical/ui/icons/Superscript/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/Superscript/index.js +19 -0
- package/dist/lexical/ui/icons/Superscript/index.js.map +1 -0
- package/dist/lexical/ui/icons/Table/index.d.ts +3 -0
- package/dist/lexical/ui/icons/Table/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/Table/index.js +21 -0
- package/dist/lexical/ui/icons/Table/index.js.map +1 -0
- package/dist/lexical/ui/icons/Text/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/Text/index.js +19 -0
- package/dist/lexical/ui/icons/Text/index.js.map +1 -0
- package/dist/lexical/ui/icons/Underline/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/Underline/index.js +22 -0
- package/dist/lexical/ui/icons/Underline/index.js.map +1 -0
- package/dist/lexical/ui/icons/UnorderedList/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/UnorderedList/index.js +49 -0
- package/dist/lexical/ui/icons/UnorderedList/index.js.map +1 -0
- package/dist/lexical/ui/icons/Upload/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/Upload/index.js +31 -0
- package/dist/lexical/ui/icons/Upload/index.js.map +1 -0
- package/dist/lexical/utils/canUseDOM.d.ts.map +1 -0
- package/dist/lexical/utils/canUseDOM.js +4 -0
- package/dist/lexical/utils/canUseDOM.js.map +1 -0
- package/dist/lexical/utils/environment.d.ts.map +1 -0
- package/dist/lexical/utils/environment.js +15 -0
- package/dist/lexical/utils/environment.js.map +1 -0
- package/dist/lexical/utils/getDOMRangeRect.d.ts.map +1 -0
- package/dist/lexical/utils/getDOMRangeRect.js +17 -0
- package/dist/lexical/utils/getDOMRangeRect.js.map +1 -0
- package/dist/lexical/utils/getSelectedNode.d.ts.map +1 -0
- package/dist/lexical/utils/getSelectedNode.js +22 -0
- package/dist/lexical/utils/getSelectedNode.js.map +1 -0
- package/dist/lexical/utils/guard.d.ts.map +1 -0
- package/dist/lexical/utils/guard.js +6 -0
- package/dist/lexical/utils/guard.js.map +1 -0
- package/dist/lexical/utils/joinClasses.d.ts.map +1 -0
- package/dist/lexical/utils/joinClasses.js +6 -0
- package/dist/lexical/utils/joinClasses.js.map +1 -0
- package/dist/lexical/utils/markdown/createBlockNode.d.ts +4 -0
- package/dist/lexical/utils/markdown/createBlockNode.d.ts.map +1 -0
- package/dist/lexical/utils/markdown/createBlockNode.js +11 -0
- package/dist/lexical/utils/markdown/createBlockNode.js.map +1 -0
- package/dist/lexical/utils/nodeFormat.d.ts +41 -0
- package/dist/lexical/utils/nodeFormat.d.ts.map +1 -0
- package/dist/lexical/utils/nodeFormat.js +87 -0
- package/dist/lexical/utils/nodeFormat.js.map +1 -0
- package/dist/lexical/utils/point.d.ts.map +1 -0
- package/dist/lexical/utils/point.js +45 -0
- package/dist/lexical/utils/point.js.map +1 -0
- package/dist/lexical/utils/rect.d.ts +47 -0
- package/dist/lexical/utils/rect.d.ts.map +1 -0
- package/dist/lexical/utils/rect.js +171 -0
- package/dist/lexical/utils/rect.js.map +1 -0
- package/dist/lexical/utils/setFloatingElemPosition.d.ts +12 -0
- package/dist/lexical/utils/setFloatingElemPosition.d.ts.map +1 -0
- package/dist/lexical/utils/setFloatingElemPosition.js +67 -0
- package/dist/lexical/utils/setFloatingElemPosition.js.map +1 -0
- package/dist/lexical/utils/setFloatingElemPositionForLinkEditor.d.ts.map +1 -0
- package/dist/lexical/utils/setFloatingElemPositionForLinkEditor.js +28 -0
- package/dist/lexical/utils/setFloatingElemPositionForLinkEditor.js.map +1 -0
- package/dist/lexical/utils/swipe.d.ts.map +1 -0
- package/dist/lexical/utils/swipe.js +99 -0
- package/dist/lexical/utils/swipe.js.map +1 -0
- package/dist/lexical/utils/url.d.ts +8 -0
- package/dist/lexical/utils/url.d.ts.map +1 -0
- package/dist/lexical/utils/url.js +57 -0
- package/dist/lexical/utils/url.js.map +1 -0
- package/dist/nodeTypes.d.ts +32 -0
- package/dist/nodeTypes.d.ts.map +1 -0
- package/dist/nodeTypes.js +2 -0
- package/dist/nodeTypes.js.map +1 -0
- package/dist/populateGraphQL/defaultValue.d.ts +3 -0
- package/dist/populateGraphQL/defaultValue.d.ts.map +1 -0
- package/dist/populateGraphQL/defaultValue.js +28 -0
- package/dist/populateGraphQL/defaultValue.js.map +1 -0
- package/dist/populateGraphQL/populate.d.ts +18 -0
- package/dist/populateGraphQL/populate.d.ts.map +1 -0
- package/dist/populateGraphQL/populate.js +40 -0
- package/dist/populateGraphQL/populate.js.map +1 -0
- package/dist/populateGraphQL/populateLexicalPopulationPromises.d.ts +12 -0
- package/dist/populateGraphQL/populateLexicalPopulationPromises.d.ts.map +1 -0
- package/dist/populateGraphQL/populateLexicalPopulationPromises.js +53 -0
- package/dist/populateGraphQL/populateLexicalPopulationPromises.js.map +1 -0
- package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.d.ts +28 -0
- package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.d.ts.map +1 -0
- package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.js +42 -0
- package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.js.map +1 -0
- package/dist/types.d.ts +69 -21
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -2
- package/dist/types.js.map +1 -1
- package/dist/utilities/createClientFeature.d.ts +11 -0
- package/dist/utilities/createClientFeature.d.ts.map +1 -0
- package/dist/utilities/createClientFeature.js +41 -0
- package/dist/utilities/createClientFeature.js.map +1 -0
- package/dist/utilities/createServerFeature.d.ts +17 -0
- package/dist/utilities/createServerFeature.d.ts.map +1 -0
- package/dist/utilities/createServerFeature.js +51 -0
- package/dist/utilities/createServerFeature.js.map +1 -0
- package/dist/utilities/fieldsDrawer/Drawer.d.ts +21 -0
- package/dist/utilities/fieldsDrawer/Drawer.d.ts.map +1 -0
- package/dist/utilities/fieldsDrawer/Drawer.js +80 -0
- package/dist/utilities/fieldsDrawer/Drawer.js.map +1 -0
- package/dist/utilities/fieldsDrawer/DrawerContent.d.ts +4 -0
- package/dist/utilities/fieldsDrawer/DrawerContent.d.ts.map +1 -0
- package/dist/utilities/fieldsDrawer/DrawerContent.js +122 -0
- package/dist/utilities/fieldsDrawer/DrawerContent.js.map +1 -0
- package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.d.ts +13 -0
- package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.d.ts.map +1 -0
- package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js +129 -0
- package/dist/utilities/fieldsDrawer/useLexicalDocumentDrawer.js.map +1 -0
- package/dist/utilities/fieldsDrawer/useLexicalDrawer.d.ts +10 -0
- package/dist/utilities/fieldsDrawer/useLexicalDrawer.d.ts.map +1 -0
- package/dist/utilities/fieldsDrawer/useLexicalDrawer.js +136 -0
- package/dist/utilities/fieldsDrawer/useLexicalDrawer.js.map +1 -0
- package/dist/utilities/fieldsDrawer/useLexicalListDrawer.d.ts +16 -0
- package/dist/utilities/fieldsDrawer/useLexicalListDrawer.d.ts.map +1 -0
- package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js +144 -0
- package/dist/utilities/fieldsDrawer/useLexicalListDrawer.js.map +1 -0
- package/dist/utilities/forEachNodeRecursively.d.ts +10 -0
- package/dist/utilities/forEachNodeRecursively.d.ts.map +1 -0
- package/dist/utilities/forEachNodeRecursively.js +29 -0
- package/dist/utilities/forEachNodeRecursively.js.map +1 -0
- package/dist/utilities/generateImportMap.d.ts +6 -0
- package/dist/utilities/generateImportMap.d.ts.map +1 -0
- package/dist/utilities/generateImportMap.js +55 -0
- package/dist/utilities/generateImportMap.js.map +1 -0
- package/dist/utilities/generateSchemaMap.d.ts +6 -0
- package/dist/utilities/generateSchemaMap.d.ts.map +1 -0
- package/dist/utilities/generateSchemaMap.js +40 -0
- package/dist/utilities/generateSchemaMap.js.map +1 -0
- package/dist/utilities/initLexicalFeatures.d.ts +18 -0
- package/dist/utilities/initLexicalFeatures.d.ts.map +1 -0
- package/dist/utilities/initLexicalFeatures.js +95 -0
- package/dist/utilities/initLexicalFeatures.js.map +1 -0
- package/dist/utilities/migrateSlateToLexical/index.d.ts +15 -0
- package/dist/utilities/migrateSlateToLexical/index.d.ts.map +1 -0
- package/dist/utilities/migrateSlateToLexical/index.js +149 -0
- package/dist/utilities/migrateSlateToLexical/index.js.map +1 -0
- package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.d.ts +9 -0
- package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.d.ts.map +1 -0
- package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.js +80 -0
- package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.js.map +1 -0
- package/dist/utilities/recurseNodeTree.d.ts +9 -0
- package/dist/utilities/recurseNodeTree.d.ts.map +1 -0
- package/dist/utilities/recurseNodeTree.js +30 -0
- package/dist/utilities/recurseNodeTree.js.map +1 -0
- package/dist/utilities/upgradeLexicalData/index.d.ts +11 -0
- package/dist/utilities/upgradeLexicalData/index.d.ts.map +1 -0
- package/dist/utilities/upgradeLexicalData/index.js +114 -0
- package/dist/utilities/upgradeLexicalData/index.js.map +1 -0
- package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.d.ts +9 -0
- package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.d.ts.map +1 -0
- package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.js +83 -0
- package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.js.map +1 -0
- package/dist/utilities/useLexicalFeature.d.ts +3 -0
- package/dist/utilities/useLexicalFeature.d.ts.map +1 -0
- package/dist/utilities/useLexicalFeature.js +21 -0
- package/dist/utilities/useLexicalFeature.js.map +1 -0
- package/dist/validate/index.d.ts +3 -3
- package/dist/validate/index.d.ts.map +1 -1
- package/dist/validate/index.js +45 -23
- package/dist/validate/index.js.map +1 -1
- package/dist/validate/validateNodes.d.ts +5 -5
- package/dist/validate/validateNodes.d.ts.map +1 -1
- package/dist/validate/validateNodes.js +31 -28
- package/dist/validate/validateNodes.js.map +1 -1
- package/package.json +106 -57
- package/dist/cell/index.d.ts +0 -6
- package/dist/cell/index.d.ts.map +0 -1
- package/dist/cell/index.js +0 -131
- package/dist/cell/index.js.map +0 -1
- package/dist/exports/components.d.ts +0 -6
- package/dist/exports/components.d.ts.map +0 -1
- package/dist/exports/components.js +0 -7
- package/dist/exports/components.js.map +0 -1
- package/dist/field/features/align/feature.client.d.ts +0 -3
- package/dist/field/features/align/feature.client.d.ts.map +0 -1
- package/dist/field/features/align/feature.client.js +0 -72
- package/dist/field/features/align/feature.client.js.map +0 -1
- package/dist/field/features/align/feature.server.d.ts +0 -3
- package/dist/field/features/align/feature.server.d.ts.map +0 -1
- package/dist/field/features/align/feature.server.js +0 -16
- package/dist/field/features/align/feature.server.js.map +0 -1
- package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.d.ts +0 -3
- package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.d.ts.map +0 -1
- package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.js +0 -12
- package/dist/field/features/align/floatingSelectToolbarAlignDropdownSection.js.map +0 -1
- package/dist/field/features/blockquote/feature.client.d.ts +0 -3
- package/dist/field/features/blockquote/feature.client.d.ts.map +0 -1
- package/dist/field/features/blockquote/feature.client.js +0 -70
- package/dist/field/features/blockquote/feature.client.js.map +0 -1
- package/dist/field/features/blockquote/feature.server.d.ts +0 -3
- package/dist/field/features/blockquote/feature.server.d.ts.map +0 -1
- package/dist/field/features/blockquote/feature.server.js +0 -47
- package/dist/field/features/blockquote/feature.server.js.map +0 -1
- package/dist/field/features/blockquote/markdownTransformer.d.ts.map +0 -1
- package/dist/field/features/blockquote/markdownTransformer.js +0 -42
- package/dist/field/features/blockquote/markdownTransformer.js.map +0 -1
- package/dist/field/features/blocks/component/BlockContent.d.ts +0 -27
- package/dist/field/features/blocks/component/BlockContent.d.ts.map +0 -1
- package/dist/field/features/blocks/component/BlockContent.js +0 -183
- package/dist/field/features/blocks/component/BlockContent.js.map +0 -1
- package/dist/field/features/blocks/component/FormSavePlugin.d.ts +0 -12
- package/dist/field/features/blocks/component/FormSavePlugin.d.ts.map +0 -1
- package/dist/field/features/blocks/component/FormSavePlugin.js +0 -29
- package/dist/field/features/blocks/component/FormSavePlugin.js.map +0 -1
- package/dist/field/features/blocks/component/index.d.ts +0 -16
- package/dist/field/features/blocks/component/index.d.ts.map +0 -1
- package/dist/field/features/blocks/component/index.js +0 -131
- package/dist/field/features/blocks/component/index.js.map +0 -1
- package/dist/field/features/blocks/component/index.scss +0 -153
- package/dist/field/features/blocks/component/removeEmptyArrayValues.d.ts +0 -11
- package/dist/field/features/blocks/component/removeEmptyArrayValues.d.ts.map +0 -1
- package/dist/field/features/blocks/component/removeEmptyArrayValues.js +0 -16
- package/dist/field/features/blocks/component/removeEmptyArrayValues.js.map +0 -1
- package/dist/field/features/blocks/drawer/index.d.ts +0 -9
- package/dist/field/features/blocks/drawer/index.d.ts.map +0 -1
- package/dist/field/features/blocks/drawer/index.js +0 -84
- package/dist/field/features/blocks/drawer/index.js.map +0 -1
- package/dist/field/features/blocks/feature.client.d.ts +0 -7
- package/dist/field/features/blocks/feature.client.d.ts.map +0 -1
- package/dist/field/features/blocks/feature.client.js +0 -61
- package/dist/field/features/blocks/feature.client.js.map +0 -1
- package/dist/field/features/blocks/feature.server.d.ts +0 -11
- package/dist/field/features/blocks/feature.server.d.ts.map +0 -1
- package/dist/field/features/blocks/feature.server.js +0 -112
- package/dist/field/features/blocks/feature.server.js.map +0 -1
- package/dist/field/features/blocks/nodes/BlocksNode.d.ts +0 -38
- package/dist/field/features/blocks/nodes/BlocksNode.d.ts.map +0 -1
- package/dist/field/features/blocks/nodes/BlocksNode.js +0 -92
- package/dist/field/features/blocks/nodes/BlocksNode.js.map +0 -1
- package/dist/field/features/blocks/plugin/commands.d.ts +0 -4
- package/dist/field/features/blocks/plugin/commands.d.ts.map +0 -1
- package/dist/field/features/blocks/plugin/commands.js +0 -5
- package/dist/field/features/blocks/plugin/commands.js.map +0 -1
- package/dist/field/features/blocks/plugin/index.d.ts +0 -5
- package/dist/field/features/blocks/plugin/index.d.ts.map +0 -1
- package/dist/field/features/blocks/plugin/index.js +0 -43
- package/dist/field/features/blocks/plugin/index.js.map +0 -1
- package/dist/field/features/blocks/populationPromise.d.ts +0 -5
- package/dist/field/features/blocks/populationPromise.d.ts.map +0 -1
- package/dist/field/features/blocks/populationPromise.js +0 -46
- package/dist/field/features/blocks/populationPromise.js.map +0 -1
- package/dist/field/features/blocks/validate.d.ts +0 -5
- package/dist/field/features/blocks/validate.d.ts.map +0 -1
- package/dist/field/features/blocks/validate.js +0 -50
- package/dist/field/features/blocks/validate.js.map +0 -1
- package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.d.ts +0 -3
- package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.d.ts.map +0 -1
- package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.js +0 -10
- package/dist/field/features/common/floatingSelectToolbarFeaturesButtonsSection/index.js.map +0 -1
- package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.d.ts +0 -3
- package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.d.ts.map +0 -1
- package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.js +0 -12
- package/dist/field/features/common/floatingSelectToolbarTextDropdownSection/index.js.map +0 -1
- package/dist/field/features/converters/html/converter/converters/linebreak.d.ts.map +0 -1
- package/dist/field/features/converters/html/converter/converters/linebreak.js +0 -10
- package/dist/field/features/converters/html/converter/converters/linebreak.js.map +0 -1
- package/dist/field/features/converters/html/converter/converters/paragraph.d.ts.map +0 -1
- package/dist/field/features/converters/html/converter/converters/paragraph.js +0 -20
- package/dist/field/features/converters/html/converter/converters/paragraph.js.map +0 -1
- package/dist/field/features/converters/html/converter/converters/text.d.ts.map +0 -1
- package/dist/field/features/converters/html/converter/converters/text.js +0 -33
- package/dist/field/features/converters/html/converter/converters/text.js.map +0 -1
- package/dist/field/features/converters/html/converter/defaultConverters.d.ts.map +0 -1
- package/dist/field/features/converters/html/converter/defaultConverters.js +0 -10
- package/dist/field/features/converters/html/converter/defaultConverters.js.map +0 -1
- package/dist/field/features/converters/html/converter/index.d.ts +0 -21
- package/dist/field/features/converters/html/converter/index.d.ts.map +0 -1
- package/dist/field/features/converters/html/converter/index.js +0 -44
- package/dist/field/features/converters/html/converter/index.js.map +0 -1
- package/dist/field/features/converters/html/converter/types.d.ts +0 -19
- package/dist/field/features/converters/html/converter/types.d.ts.map +0 -1
- package/dist/field/features/converters/html/converter/types.js +0 -3
- package/dist/field/features/converters/html/converter/types.js.map +0 -1
- package/dist/field/features/converters/html/feature.server.d.ts +0 -9
- package/dist/field/features/converters/html/feature.server.d.ts.map +0 -1
- package/dist/field/features/converters/html/feature.server.js +0 -14
- package/dist/field/features/converters/html/feature.server.js.map +0 -1
- package/dist/field/features/converters/html/field/index.d.ts +0 -29
- package/dist/field/features/converters/html/field/index.d.ts.map +0 -1
- package/dist/field/features/converters/html/field/index.js +0 -117
- package/dist/field/features/converters/html/field/index.js.map +0 -1
- package/dist/field/features/createClientComponent.d.ts +0 -6
- package/dist/field/features/createClientComponent.d.ts.map +0 -1
- package/dist/field/features/createClientComponent.js +0 -12
- package/dist/field/features/createClientComponent.js.map +0 -1
- package/dist/field/features/createFeaturePropComponent.d.ts +0 -6
- package/dist/field/features/createFeaturePropComponent.d.ts.map +0 -1
- package/dist/field/features/createFeaturePropComponent.js +0 -15
- package/dist/field/features/createFeaturePropComponent.js.map +0 -1
- package/dist/field/features/debug/testrecorder/feature.client.d.ts +0 -3
- package/dist/field/features/debug/testrecorder/feature.client.d.ts.map +0 -1
- package/dist/field/features/debug/testrecorder/feature.client.js +0 -20
- package/dist/field/features/debug/testrecorder/feature.client.js.map +0 -1
- package/dist/field/features/debug/testrecorder/feature.server.d.ts +0 -3
- package/dist/field/features/debug/testrecorder/feature.server.d.ts.map +0 -1
- package/dist/field/features/debug/testrecorder/feature.server.js +0 -15
- package/dist/field/features/debug/testrecorder/feature.server.js.map +0 -1
- package/dist/field/features/debug/testrecorder/plugin/index.d.ts +0 -5
- package/dist/field/features/debug/testrecorder/plugin/index.d.ts.map +0 -1
- package/dist/field/features/debug/testrecorder/plugin/index.js +0 -448
- package/dist/field/features/debug/testrecorder/plugin/index.js.map +0 -1
- package/dist/field/features/debug/testrecorder/plugin/index.scss +0 -49
- package/dist/field/features/debug/treeview/feature.client.d.ts +0 -3
- package/dist/field/features/debug/treeview/feature.client.d.ts.map +0 -1
- package/dist/field/features/debug/treeview/feature.client.js +0 -20
- package/dist/field/features/debug/treeview/feature.client.js.map +0 -1
- package/dist/field/features/debug/treeview/feature.server.d.ts +0 -3
- package/dist/field/features/debug/treeview/feature.server.d.ts.map +0 -1
- package/dist/field/features/debug/treeview/feature.server.js +0 -15
- package/dist/field/features/debug/treeview/feature.server.js.map +0 -1
- package/dist/field/features/debug/treeview/plugin/index.d.ts +0 -4
- package/dist/field/features/debug/treeview/plugin/index.d.ts.map +0 -1
- package/dist/field/features/debug/treeview/plugin/index.js +0 -21
- package/dist/field/features/debug/treeview/plugin/index.js.map +0 -1
- package/dist/field/features/debug/treeview/plugin/index.scss +0 -78
- package/dist/field/features/format/bold/feature.client.d.ts +0 -3
- package/dist/field/features/format/bold/feature.client.d.ts.map +0 -1
- package/dist/field/features/format/bold/feature.client.js +0 -48
- package/dist/field/features/format/bold/feature.client.js.map +0 -1
- package/dist/field/features/format/bold/feature.server.d.ts +0 -3
- package/dist/field/features/format/bold/feature.server.d.ts.map +0 -1
- package/dist/field/features/format/bold/feature.server.js +0 -27
- package/dist/field/features/format/bold/feature.server.js.map +0 -1
- package/dist/field/features/format/bold/markdownTransformers.d.ts.map +0 -1
- package/dist/field/features/format/bold/markdownTransformers.js +0 -34
- package/dist/field/features/format/bold/markdownTransformers.js.map +0 -1
- package/dist/field/features/format/common/floatingSelectToolbarSection.d.ts +0 -3
- package/dist/field/features/format/common/floatingSelectToolbarSection.d.ts.map +0 -1
- package/dist/field/features/format/common/floatingSelectToolbarSection.js +0 -10
- package/dist/field/features/format/common/floatingSelectToolbarSection.js.map +0 -1
- package/dist/field/features/format/inlinecode/feature.client.d.ts +0 -3
- package/dist/field/features/format/inlinecode/feature.client.d.ts.map +0 -1
- package/dist/field/features/format/inlinecode/feature.client.js +0 -43
- package/dist/field/features/format/inlinecode/feature.client.js.map +0 -1
- package/dist/field/features/format/inlinecode/feature.server.d.ts +0 -3
- package/dist/field/features/format/inlinecode/feature.server.d.ts.map +0 -1
- package/dist/field/features/format/inlinecode/feature.server.js +0 -19
- package/dist/field/features/format/inlinecode/feature.server.js.map +0 -1
- package/dist/field/features/format/inlinecode/markdownTransformers.d.ts.map +0 -1
- package/dist/field/features/format/inlinecode/markdownTransformers.js +0 -9
- package/dist/field/features/format/inlinecode/markdownTransformers.js.map +0 -1
- package/dist/field/features/format/italic/feature.client.d.ts +0 -3
- package/dist/field/features/format/italic/feature.client.d.ts.map +0 -1
- package/dist/field/features/format/italic/feature.client.js +0 -44
- package/dist/field/features/format/italic/feature.client.js.map +0 -1
- package/dist/field/features/format/italic/feature.server.d.ts +0 -3
- package/dist/field/features/format/italic/feature.server.d.ts.map +0 -1
- package/dist/field/features/format/italic/feature.server.js +0 -20
- package/dist/field/features/format/italic/feature.server.js.map +0 -1
- package/dist/field/features/format/italic/markdownTransformers.d.ts.map +0 -1
- package/dist/field/features/format/italic/markdownTransformers.js +0 -17
- package/dist/field/features/format/italic/markdownTransformers.js.map +0 -1
- package/dist/field/features/format/strikethrough/feature.client.d.ts +0 -3
- package/dist/field/features/format/strikethrough/feature.client.d.ts.map +0 -1
- package/dist/field/features/format/strikethrough/feature.client.js +0 -43
- package/dist/field/features/format/strikethrough/feature.client.js.map +0 -1
- package/dist/field/features/format/strikethrough/feature.server.d.ts +0 -3
- package/dist/field/features/format/strikethrough/feature.server.d.ts.map +0 -1
- package/dist/field/features/format/strikethrough/feature.server.js +0 -19
- package/dist/field/features/format/strikethrough/feature.server.js.map +0 -1
- package/dist/field/features/format/strikethrough/markdownTransformers.d.ts.map +0 -1
- package/dist/field/features/format/strikethrough/markdownTransformers.js +0 -9
- package/dist/field/features/format/strikethrough/markdownTransformers.js.map +0 -1
- package/dist/field/features/format/subscript/feature.client.d.ts +0 -3
- package/dist/field/features/format/subscript/feature.client.d.ts.map +0 -1
- package/dist/field/features/format/subscript/feature.client.js +0 -39
- package/dist/field/features/format/subscript/feature.client.js.map +0 -1
- package/dist/field/features/format/subscript/feature.server.d.ts +0 -3
- package/dist/field/features/format/subscript/feature.server.d.ts.map +0 -1
- package/dist/field/features/format/subscript/feature.server.js +0 -15
- package/dist/field/features/format/subscript/feature.server.js.map +0 -1
- package/dist/field/features/format/superscript/feature.client.d.ts +0 -3
- package/dist/field/features/format/superscript/feature.client.d.ts.map +0 -1
- package/dist/field/features/format/superscript/feature.client.js +0 -39
- package/dist/field/features/format/superscript/feature.client.js.map +0 -1
- package/dist/field/features/format/superscript/feature.server.d.ts +0 -3
- package/dist/field/features/format/superscript/feature.server.d.ts.map +0 -1
- package/dist/field/features/format/superscript/feature.server.js +0 -15
- package/dist/field/features/format/superscript/feature.server.js.map +0 -1
- package/dist/field/features/format/underline/feature.client.d.ts +0 -3
- package/dist/field/features/format/underline/feature.client.d.ts.map +0 -1
- package/dist/field/features/format/underline/feature.client.js +0 -39
- package/dist/field/features/format/underline/feature.client.js.map +0 -1
- package/dist/field/features/format/underline/feature.server.d.ts +0 -3
- package/dist/field/features/format/underline/feature.server.d.ts.map +0 -1
- package/dist/field/features/format/underline/feature.server.js +0 -15
- package/dist/field/features/format/underline/feature.server.js.map +0 -1
- package/dist/field/features/heading/feature.client.d.ts +0 -4
- package/dist/field/features/heading/feature.client.d.ts.map +0 -1
- package/dist/field/features/heading/feature.client.js +0 -97
- package/dist/field/features/heading/feature.client.js.map +0 -1
- package/dist/field/features/heading/feature.server.d.ts +0 -7
- package/dist/field/features/heading/feature.server.d.ts.map +0 -1
- package/dist/field/features/heading/feature.server.js +0 -58
- package/dist/field/features/heading/feature.server.js.map +0 -1
- package/dist/field/features/heading/markdownTransformer.d.ts.map +0 -1
- package/dist/field/features/heading/markdownTransformer.js +0 -30
- package/dist/field/features/heading/markdownTransformer.js.map +0 -1
- package/dist/field/features/horizontalrule/component/index.d.ts +0 -10
- package/dist/field/features/horizontalrule/component/index.d.ts.map +0 -1
- package/dist/field/features/horizontalrule/component/index.js +0 -64
- package/dist/field/features/horizontalrule/component/index.js.map +0 -1
- package/dist/field/features/horizontalrule/feature.client.d.ts +0 -3
- package/dist/field/features/horizontalrule/feature.client.d.ts.map +0 -1
- package/dist/field/features/horizontalrule/feature.client.js +0 -53
- package/dist/field/features/horizontalrule/feature.client.js.map +0 -1
- package/dist/field/features/horizontalrule/feature.server.d.ts +0 -3
- package/dist/field/features/horizontalrule/feature.server.d.ts.map +0 -1
- package/dist/field/features/horizontalrule/feature.server.js +0 -36
- package/dist/field/features/horizontalrule/feature.server.js.map +0 -1
- package/dist/field/features/horizontalrule/markdownTransformer.d.ts.map +0 -1
- package/dist/field/features/horizontalrule/markdownTransformer.js +0 -23
- package/dist/field/features/horizontalrule/markdownTransformer.js.map +0 -1
- package/dist/field/features/horizontalrule/nodes/HorizontalRuleNode.d.ts +0 -55
- package/dist/field/features/horizontalrule/nodes/HorizontalRuleNode.d.ts.map +0 -1
- package/dist/field/features/horizontalrule/nodes/HorizontalRuleNode.js +0 -89
- package/dist/field/features/horizontalrule/nodes/HorizontalRuleNode.js.map +0 -1
- package/dist/field/features/horizontalrule/plugin/index.d.ts +0 -6
- package/dist/field/features/horizontalrule/plugin/index.d.ts.map +0 -1
- package/dist/field/features/horizontalrule/plugin/index.js +0 -34
- package/dist/field/features/horizontalrule/plugin/index.js.map +0 -1
- package/dist/field/features/horizontalrule/plugin/index.scss +0 -20
- package/dist/field/features/indent/feature.client.d.ts +0 -3
- package/dist/field/features/indent/feature.client.d.ts.map +0 -1
- package/dist/field/features/indent/feature.client.js +0 -58
- package/dist/field/features/indent/feature.client.js.map +0 -1
- package/dist/field/features/indent/feature.server.d.ts +0 -3
- package/dist/field/features/indent/feature.server.d.ts.map +0 -1
- package/dist/field/features/indent/feature.server.js +0 -16
- package/dist/field/features/indent/feature.server.js.map +0 -1
- package/dist/field/features/indent/floatingSelectToolbarIndentSection.d.ts +0 -3
- package/dist/field/features/indent/floatingSelectToolbarIndentSection.d.ts.map +0 -1
- package/dist/field/features/indent/floatingSelectToolbarIndentSection.js +0 -10
- package/dist/field/features/indent/floatingSelectToolbarIndentSection.js.map +0 -1
- package/dist/field/features/indent/index.scss +0 -4
- package/dist/field/features/link/drawer/baseFields.d.ts +0 -4
- package/dist/field/features/link/drawer/baseFields.d.ts.map +0 -1
- package/dist/field/features/link/drawer/baseFields.js +0 -107
- package/dist/field/features/link/drawer/baseFields.js.map +0 -1
- package/dist/field/features/link/drawer/index.d.ts +0 -5
- package/dist/field/features/link/drawer/index.d.ts.map +0 -1
- package/dist/field/features/link/drawer/index.js +0 -94
- package/dist/field/features/link/drawer/index.js.map +0 -1
- package/dist/field/features/link/drawer/index.scss +0 -50
- package/dist/field/features/link/drawer/types.d.ts +0 -8
- package/dist/field/features/link/drawer/types.d.ts.map +0 -1
- package/dist/field/features/link/drawer/types.js +0 -3
- package/dist/field/features/link/drawer/types.js.map +0 -1
- package/dist/field/features/link/feature.client.d.ts +0 -5
- package/dist/field/features/link/feature.client.d.ts.map +0 -1
- package/dist/field/features/link/feature.client.js +0 -90
- package/dist/field/features/link/feature.client.js.map +0 -1
- package/dist/field/features/link/feature.server.d.ts +0 -33
- package/dist/field/features/link/feature.server.d.ts.map +0 -1
- package/dist/field/features/link/feature.server.js +0 -105
- package/dist/field/features/link/feature.server.js.map +0 -1
- package/dist/field/features/link/nodes/AutoLinkNode.d.ts.map +0 -1
- package/dist/field/features/link/nodes/AutoLinkNode.js +0 -61
- package/dist/field/features/link/nodes/AutoLinkNode.js.map +0 -1
- package/dist/field/features/link/nodes/LinkNode.d.ts +0 -38
- package/dist/field/features/link/nodes/LinkNode.d.ts.map +0 -1
- package/dist/field/features/link/nodes/LinkNode.js +0 -301
- package/dist/field/features/link/nodes/LinkNode.js.map +0 -1
- package/dist/field/features/link/nodes/types.d.ts +0 -19
- package/dist/field/features/link/nodes/types.d.ts.map +0 -1
- package/dist/field/features/link/nodes/types.js +0 -3
- package/dist/field/features/link/nodes/types.js.map +0 -1
- package/dist/field/features/link/plugins/autoLink/index.d.ts +0 -19
- package/dist/field/features/link/plugins/autoLink/index.d.ts.map +0 -1
- package/dist/field/features/link/plugins/autoLink/index.js +0 -321
- package/dist/field/features/link/plugins/autoLink/index.js.map +0 -1
- package/dist/field/features/link/plugins/clickableLink/index.d.ts +0 -3
- package/dist/field/features/link/plugins/clickableLink/index.d.ts.map +0 -1
- package/dist/field/features/link/plugins/clickableLink/index.js +0 -10
- package/dist/field/features/link/plugins/clickableLink/index.js.map +0 -1
- package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/commands.d.ts.map +0 -1
- package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/commands.js +0 -5
- package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/commands.js.map +0 -1
- package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +0 -1
- package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.js +0 -259
- package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.js.map +0 -1
- package/dist/field/features/link/plugins/floatingLinkEditor/index.d.ts +0 -6
- package/dist/field/features/link/plugins/floatingLinkEditor/index.d.ts.map +0 -1
- package/dist/field/features/link/plugins/floatingLinkEditor/index.js +0 -13
- package/dist/field/features/link/plugins/floatingLinkEditor/index.js.map +0 -1
- package/dist/field/features/link/plugins/floatingLinkEditor/index.scss +0 -78
- package/dist/field/features/link/plugins/floatingLinkEditor/types.d.ts +0 -15
- package/dist/field/features/link/plugins/floatingLinkEditor/types.d.ts.map +0 -1
- package/dist/field/features/link/plugins/floatingLinkEditor/types.js +0 -6
- package/dist/field/features/link/plugins/floatingLinkEditor/types.js.map +0 -1
- package/dist/field/features/link/plugins/floatingLinkEditor/utilities.d.ts +0 -12
- package/dist/field/features/link/plugins/floatingLinkEditor/utilities.d.ts.map +0 -1
- package/dist/field/features/link/plugins/floatingLinkEditor/utilities.js +0 -38
- package/dist/field/features/link/plugins/floatingLinkEditor/utilities.js.map +0 -1
- package/dist/field/features/link/plugins/link/index.d.ts +0 -2
- package/dist/field/features/link/plugins/link/index.d.ts.map +0 -1
- package/dist/field/features/link/plugins/link/index.js +0 -62
- package/dist/field/features/link/plugins/link/index.js.map +0 -1
- package/dist/field/features/link/populationPromise.d.ts +0 -5
- package/dist/field/features/link/populationPromise.d.ts.map +0 -1
- package/dist/field/features/link/populationPromise.js +0 -46
- package/dist/field/features/link/populationPromise.js.map +0 -1
- package/dist/field/features/lists/checklist/feature.client.d.ts +0 -3
- package/dist/field/features/lists/checklist/feature.client.d.ts.map +0 -1
- package/dist/field/features/lists/checklist/feature.client.js +0 -82
- package/dist/field/features/lists/checklist/feature.client.js.map +0 -1
- package/dist/field/features/lists/checklist/feature.server.d.ts +0 -3
- package/dist/field/features/lists/checklist/feature.server.d.ts.map +0 -1
- package/dist/field/features/lists/checklist/feature.server.js +0 -36
- package/dist/field/features/lists/checklist/feature.server.js.map +0 -1
- package/dist/field/features/lists/checklist/markdownTransformers.d.ts.map +0 -1
- package/dist/field/features/lists/checklist/markdownTransformers.js +0 -17
- package/dist/field/features/lists/checklist/markdownTransformers.js.map +0 -1
- package/dist/field/features/lists/checklist/plugin/index.d.ts +0 -3
- package/dist/field/features/lists/checklist/plugin/index.d.ts.map +0 -1
- package/dist/field/features/lists/checklist/plugin/index.js +0 -9
- package/dist/field/features/lists/checklist/plugin/index.js.map +0 -1
- package/dist/field/features/lists/common/markdown.d.ts +0 -6
- package/dist/field/features/lists/common/markdown.d.ts.map +0 -1
- package/dist/field/features/lists/common/markdown.js +0 -59
- package/dist/field/features/lists/common/markdown.js.map +0 -1
- package/dist/field/features/lists/htmlConverter.d.ts +0 -5
- package/dist/field/features/lists/htmlConverter.d.ts.map +0 -1
- package/dist/field/features/lists/htmlConverter.js +0 -57
- package/dist/field/features/lists/htmlConverter.js.map +0 -1
- package/dist/field/features/lists/orderedlist/feature.client.d.ts +0 -3
- package/dist/field/features/lists/orderedlist/feature.client.d.ts.map +0 -1
- package/dist/field/features/lists/orderedlist/feature.client.js +0 -72
- package/dist/field/features/lists/orderedlist/feature.client.js.map +0 -1
- package/dist/field/features/lists/orderedlist/feature.server.d.ts +0 -3
- package/dist/field/features/lists/orderedlist/feature.server.d.ts.map +0 -1
- package/dist/field/features/lists/orderedlist/feature.server.js +0 -36
- package/dist/field/features/lists/orderedlist/feature.server.js.map +0 -1
- package/dist/field/features/lists/orderedlist/markdownTransformer.d.ts.map +0 -1
- package/dist/field/features/lists/orderedlist/markdownTransformer.js +0 -17
- package/dist/field/features/lists/orderedlist/markdownTransformer.js.map +0 -1
- package/dist/field/features/lists/plugin/index.d.ts +0 -3
- package/dist/field/features/lists/plugin/index.d.ts.map +0 -1
- package/dist/field/features/lists/plugin/index.js +0 -9
- package/dist/field/features/lists/plugin/index.js.map +0 -1
- package/dist/field/features/lists/unorderedlist/feature.client.d.ts +0 -3
- package/dist/field/features/lists/unorderedlist/feature.client.d.ts.map +0 -1
- package/dist/field/features/lists/unorderedlist/feature.client.js +0 -72
- package/dist/field/features/lists/unorderedlist/feature.client.js.map +0 -1
- package/dist/field/features/lists/unorderedlist/feature.server.d.ts +0 -3
- package/dist/field/features/lists/unorderedlist/feature.server.d.ts.map +0 -1
- package/dist/field/features/lists/unorderedlist/feature.server.js +0 -36
- package/dist/field/features/lists/unorderedlist/feature.server.js.map +0 -1
- package/dist/field/features/lists/unorderedlist/markdownTransformer.d.ts.map +0 -1
- package/dist/field/features/lists/unorderedlist/markdownTransformer.js +0 -17
- package/dist/field/features/lists/unorderedlist/markdownTransformer.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/client.d.ts +0 -6
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/client.d.ts.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/client.js +0 -6
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/client.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.d.ts +0 -3
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.d.ts.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.js +0 -20
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/index.d.ts +0 -3
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/index.d.ts.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/index.js +0 -8
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/heading/index.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/client.d.ts +0 -6
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/client.d.ts.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/client.js +0 -6
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/client.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.d.ts +0 -3
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.d.ts.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.js +0 -31
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/index.d.ts +0 -3
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/index.d.ts.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/index.js +0 -8
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/link/index.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/client.d.ts +0 -6
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/client.d.ts.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/client.js +0 -6
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/client.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.d.ts +0 -3
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.d.ts.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.js +0 -22
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/index.d.ts +0 -3
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/index.d.ts.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/index.js +0 -8
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/list/index.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/client.d.ts +0 -6
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/client.d.ts.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/client.js +0 -6
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/client.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.d.ts +0 -3
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.d.ts.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.js +0 -22
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/index.d.ts +0 -3
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/index.d.ts.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/index.js +0 -8
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/listItem/index.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/client.d.ts +0 -6
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/client.d.ts.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/client.js +0 -6
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/client.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.d.ts +0 -3
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.d.ts.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.js +0 -20
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/index.d.ts +0 -3
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/index.d.ts.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/index.js +0 -8
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/quote/index.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/client.d.ts +0 -6
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/client.d.ts.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/client.js +0 -6
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/client.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.d.ts +0 -3
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.d.ts.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.js +0 -26
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/index.d.ts +0 -3
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/index.d.ts.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/index.js +0 -8
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/unknown/index.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/client.d.ts +0 -6
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/client.d.ts.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/client.js +0 -6
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/client.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.d.ts +0 -3
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.d.ts.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js +0 -25
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/index.d.ts +0 -3
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/index.d.ts.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/index.js +0 -8
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/index.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/defaultConverters.d.ts +0 -3
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/defaultConverters.d.ts.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/defaultConverters.js +0 -18
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/defaultConverters.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/index.d.ts +0 -17
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/index.d.ts.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/index.js +0 -63
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/index.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/types.d.ts +0 -31
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/types.d.ts.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/types.js +0 -3
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/types.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/feature.client.d.ts +0 -3
- package/dist/field/features/migrations/lexicalPluginToLexical/feature.client.d.ts.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/feature.client.js +0 -34
- package/dist/field/features/migrations/lexicalPluginToLexical/feature.client.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/feature.server.d.ts +0 -9
- package/dist/field/features/migrations/lexicalPluginToLexical/feature.server.d.ts.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/feature.server.js +0 -47
- package/dist/field/features/migrations/lexicalPluginToLexical/feature.server.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.d.ts.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js +0 -8
- package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts +0 -36
- package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js +0 -70
- package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.scss +0 -14
- package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/client.d.ts +0 -6
- package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/client.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/client.js +0 -6
- package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/client.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/converter.d.ts +0 -3
- package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/converter.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/converter.js +0 -23
- package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/converter.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/index.d.ts +0 -3
- package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/index.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/index.js +0 -8
- package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/index.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/heading/client.d.ts +0 -6
- package/dist/field/features/migrations/slateToLexical/converter/converters/heading/client.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/heading/client.js +0 -6
- package/dist/field/features/migrations/slateToLexical/converter/converters/heading/client.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/heading/converter.d.ts +0 -3
- package/dist/field/features/migrations/slateToLexical/converter/converters/heading/converter.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/heading/converter.js +0 -29
- package/dist/field/features/migrations/slateToLexical/converter/converters/heading/converter.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/heading/index.d.ts +0 -3
- package/dist/field/features/migrations/slateToLexical/converter/converters/heading/index.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/heading/index.js +0 -8
- package/dist/field/features/migrations/slateToLexical/converter/converters/heading/index.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/indent/client.d.ts +0 -6
- package/dist/field/features/migrations/slateToLexical/converter/converters/indent/client.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/indent/client.js +0 -6
- package/dist/field/features/migrations/slateToLexical/converter/converters/indent/client.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/indent/converter.d.ts +0 -3
- package/dist/field/features/migrations/slateToLexical/converter/converters/indent/converter.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/indent/converter.js +0 -35
- package/dist/field/features/migrations/slateToLexical/converter/converters/indent/converter.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/indent/index.d.ts +0 -3
- package/dist/field/features/migrations/slateToLexical/converter/converters/indent/index.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/indent/index.js +0 -8
- package/dist/field/features/migrations/slateToLexical/converter/converters/indent/index.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/link/client.d.ts +0 -6
- package/dist/field/features/migrations/slateToLexical/converter/converters/link/client.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/link/client.js +0 -6
- package/dist/field/features/migrations/slateToLexical/converter/converters/link/client.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/link/converter.d.ts +0 -3
- package/dist/field/features/migrations/slateToLexical/converter/converters/link/converter.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/link/converter.js +0 -30
- package/dist/field/features/migrations/slateToLexical/converter/converters/link/converter.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/link/index.d.ts +0 -3
- package/dist/field/features/migrations/slateToLexical/converter/converters/link/index.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/link/index.js +0 -8
- package/dist/field/features/migrations/slateToLexical/converter/converters/link/index.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/client.d.ts +0 -6
- package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/client.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/client.js +0 -6
- package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/client.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/converter.d.ts +0 -3
- package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/converter.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/converter.js +0 -25
- package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/converter.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/index.d.ts +0 -3
- package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/index.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/index.js +0 -8
- package/dist/field/features/migrations/slateToLexical/converter/converters/listItem/index.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/client.d.ts +0 -6
- package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/client.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/client.js +0 -6
- package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/client.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/converter.d.ts +0 -3
- package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/converter.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/converter.js +0 -26
- package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/converter.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/index.d.ts +0 -3
- package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/index.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/index.js +0 -8
- package/dist/field/features/migrations/slateToLexical/converter/converters/orderedList/index.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/client.d.ts +0 -6
- package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/client.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/client.js +0 -6
- package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/client.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/converter.d.ts +0 -3
- package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/converter.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/converter.js +0 -18
- package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/converter.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/index.d.ts +0 -3
- package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/index.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/index.js +0 -8
- package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/index.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/client.d.ts +0 -6
- package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/client.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/client.js +0 -6
- package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/client.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/converter.d.ts +0 -3
- package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/converter.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/converter.js +0 -27
- package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/converter.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/index.d.ts +0 -3
- package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/index.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/index.js +0 -8
- package/dist/field/features/migrations/slateToLexical/converter/converters/unknown/index.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/client.d.ts +0 -6
- package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/client.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/client.js +0 -6
- package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/client.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/converter.d.ts +0 -3
- package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/converter.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js +0 -26
- package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/index.d.ts +0 -3
- package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/index.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/index.js +0 -8
- package/dist/field/features/migrations/slateToLexical/converter/converters/unorderedList/index.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/upload/client.d.ts +0 -6
- package/dist/field/features/migrations/slateToLexical/converter/converters/upload/client.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/upload/client.js +0 -6
- package/dist/field/features/migrations/slateToLexical/converter/converters/upload/client.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/upload/converter.d.ts +0 -3
- package/dist/field/features/migrations/slateToLexical/converter/converters/upload/converter.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/upload/converter.js +0 -21
- package/dist/field/features/migrations/slateToLexical/converter/converters/upload/converter.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/upload/index.d.ts +0 -3
- package/dist/field/features/migrations/slateToLexical/converter/converters/upload/index.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/upload/index.js +0 -8
- package/dist/field/features/migrations/slateToLexical/converter/converters/upload/index.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/defaultConverters.d.ts +0 -3
- package/dist/field/features/migrations/slateToLexical/converter/defaultConverters.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/defaultConverters.js +0 -24
- package/dist/field/features/migrations/slateToLexical/converter/defaultConverters.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/index.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/index.js +0 -107
- package/dist/field/features/migrations/slateToLexical/converter/index.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/types.d.ts +0 -25
- package/dist/field/features/migrations/slateToLexical/converter/types.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/converter/types.js +0 -3
- package/dist/field/features/migrations/slateToLexical/converter/types.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/feature.client.d.ts +0 -3
- package/dist/field/features/migrations/slateToLexical/feature.client.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/feature.client.js +0 -34
- package/dist/field/features/migrations/slateToLexical/feature.client.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/feature.server.d.ts +0 -9
- package/dist/field/features/migrations/slateToLexical/feature.server.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/feature.server.js +0 -47
- package/dist/field/features/migrations/slateToLexical/feature.server.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js +0 -8
- package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.d.ts +0 -36
- package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.d.ts.map +0 -1
- package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js +0 -70
- package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js.map +0 -1
- package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.scss +0 -14
- package/dist/field/features/paragraph/feature.client.d.ts +0 -3
- package/dist/field/features/paragraph/feature.client.d.ts.map +0 -1
- package/dist/field/features/paragraph/feature.client.js +0 -65
- package/dist/field/features/paragraph/feature.client.js.map +0 -1
- package/dist/field/features/paragraph/feature.server.d.ts +0 -3
- package/dist/field/features/paragraph/feature.server.d.ts.map +0 -1
- package/dist/field/features/paragraph/feature.server.js +0 -16
- package/dist/field/features/paragraph/feature.server.js.map +0 -1
- package/dist/field/features/relationship/drawer/commands.d.ts.map +0 -1
- package/dist/field/features/relationship/drawer/commands.js +0 -5
- package/dist/field/features/relationship/drawer/commands.js.map +0 -1
- package/dist/field/features/relationship/drawer/index.d.ts.map +0 -1
- package/dist/field/features/relationship/drawer/index.js +0 -81
- package/dist/field/features/relationship/drawer/index.js.map +0 -1
- package/dist/field/features/relationship/feature.client.d.ts +0 -4
- package/dist/field/features/relationship/feature.client.d.ts.map +0 -1
- package/dist/field/features/relationship/feature.client.js +0 -56
- package/dist/field/features/relationship/feature.client.js.map +0 -1
- package/dist/field/features/relationship/feature.server.d.ts +0 -18
- package/dist/field/features/relationship/feature.server.d.ts.map +0 -1
- package/dist/field/features/relationship/feature.server.js +0 -26
- package/dist/field/features/relationship/feature.server.js.map +0 -1
- package/dist/field/features/relationship/nodes/RelationshipNode.d.ts +0 -36
- package/dist/field/features/relationship/nodes/RelationshipNode.d.ts.map +0 -1
- package/dist/field/features/relationship/nodes/RelationshipNode.js +0 -110
- package/dist/field/features/relationship/nodes/RelationshipNode.js.map +0 -1
- package/dist/field/features/relationship/nodes/components/RelationshipComponent.d.ts +0 -14
- package/dist/field/features/relationship/nodes/components/RelationshipComponent.d.ts.map +0 -1
- package/dist/field/features/relationship/nodes/components/RelationshipComponent.js +0 -109
- package/dist/field/features/relationship/nodes/components/RelationshipComponent.js.map +0 -1
- package/dist/field/features/relationship/nodes/components/index.scss +0 -97
- package/dist/field/features/relationship/plugins/index.d.ts +0 -7
- package/dist/field/features/relationship/plugins/index.d.ts.map +0 -1
- package/dist/field/features/relationship/plugins/index.js +0 -52
- package/dist/field/features/relationship/plugins/index.js.map +0 -1
- package/dist/field/features/relationship/populationPromise.d.ts +0 -4
- package/dist/field/features/relationship/populationPromise.d.ts.map +0 -1
- package/dist/field/features/relationship/populationPromise.js +0 -24
- package/dist/field/features/relationship/populationPromise.js.map +0 -1
- package/dist/field/features/relationship/utils/EnabledRelationshipsCondition.d.ts.map +0 -1
- package/dist/field/features/relationship/utils/EnabledRelationshipsCondition.js +0 -35
- package/dist/field/features/relationship/utils/EnabledRelationshipsCondition.js.map +0 -1
- package/dist/field/features/types.d.ts +0 -274
- package/dist/field/features/types.d.ts.map +0 -1
- package/dist/field/features/types.js +0 -3
- package/dist/field/features/types.js.map +0 -1
- package/dist/field/features/upload/component/ExtraFieldsDrawer/index.d.ts +0 -12
- package/dist/field/features/upload/component/ExtraFieldsDrawer/index.d.ts.map +0 -1
- package/dist/field/features/upload/component/ExtraFieldsDrawer/index.js +0 -126
- package/dist/field/features/upload/component/ExtraFieldsDrawer/index.js.map +0 -1
- package/dist/field/features/upload/component/index.d.ts +0 -9
- package/dist/field/features/upload/component/index.d.ts.map +0 -1
- package/dist/field/features/upload/component/index.js +0 -144
- package/dist/field/features/upload/component/index.js.map +0 -1
- package/dist/field/features/upload/component/index.scss +0 -152
- package/dist/field/features/upload/drawer/commands.d.ts.map +0 -1
- package/dist/field/features/upload/drawer/commands.js +0 -6
- package/dist/field/features/upload/drawer/commands.js.map +0 -1
- package/dist/field/features/upload/drawer/index.d.ts.map +0 -1
- package/dist/field/features/upload/drawer/index.js +0 -78
- package/dist/field/features/upload/drawer/index.js.map +0 -1
- package/dist/field/features/upload/feature.client.d.ts +0 -10
- package/dist/field/features/upload/feature.client.d.ts.map +0 -1
- package/dist/field/features/upload/feature.client.js +0 -55
- package/dist/field/features/upload/feature.client.js.map +0 -1
- package/dist/field/features/upload/feature.server.d.ts +0 -12
- package/dist/field/features/upload/feature.server.d.ts.map +0 -1
- package/dist/field/features/upload/feature.server.js +0 -122
- package/dist/field/features/upload/feature.server.js.map +0 -1
- package/dist/field/features/upload/nodes/UploadNode.d.ts +0 -49
- package/dist/field/features/upload/nodes/UploadNode.d.ts.map +0 -1
- package/dist/field/features/upload/nodes/UploadNode.js +0 -102
- package/dist/field/features/upload/nodes/UploadNode.js.map +0 -1
- package/dist/field/features/upload/plugin/index.d.ts +0 -7
- package/dist/field/features/upload/plugin/index.d.ts.map +0 -1
- package/dist/field/features/upload/plugin/index.js +0 -55
- package/dist/field/features/upload/plugin/index.js.map +0 -1
- package/dist/field/features/upload/populationPromise.d.ts +0 -5
- package/dist/field/features/upload/populationPromise.d.ts.map +0 -1
- package/dist/field/features/upload/populationPromise.js +0 -46
- package/dist/field/features/upload/populationPromise.js.map +0 -1
- package/dist/field/features/upload/validate.d.ts +0 -4
- package/dist/field/features/upload/validate.d.ts.map +0 -1
- package/dist/field/features/upload/validate.js +0 -17
- package/dist/field/features/upload/validate.js.map +0 -1
- package/dist/field/index.scss +0 -46
- package/dist/field/lexical/EditorPlugin.d.ts +0 -7
- package/dist/field/lexical/EditorPlugin.d.ts.map +0 -1
- package/dist/field/lexical/EditorPlugin.js +0 -11
- package/dist/field/lexical/EditorPlugin.js.map +0 -1
- package/dist/field/lexical/LexicalEditor.d.ts +0 -5
- package/dist/field/lexical/LexicalEditor.d.ts.map +0 -1
- package/dist/field/lexical/LexicalEditor.js +0 -112
- package/dist/field/lexical/LexicalEditor.js.map +0 -1
- package/dist/field/lexical/LexicalEditor.scss +0 -56
- package/dist/field/lexical/LexicalProvider.d.ts +0 -19
- package/dist/field/lexical/LexicalProvider.d.ts.map +0 -1
- package/dist/field/lexical/LexicalProvider.js +0 -67
- package/dist/field/lexical/LexicalProvider.js.map +0 -1
- package/dist/field/lexical/config/client/EditorConfigProvider.d.ts +0 -24
- package/dist/field/lexical/config/client/EditorConfigProvider.d.ts.map +0 -1
- package/dist/field/lexical/config/client/EditorConfigProvider.js +0 -41
- package/dist/field/lexical/config/client/EditorConfigProvider.js.map +0 -1
- package/dist/field/lexical/config/client/default.d.ts +0 -3
- package/dist/field/lexical/config/client/default.d.ts.map +0 -1
- package/dist/field/lexical/config/client/default.js +0 -8
- package/dist/field/lexical/config/client/default.js.map +0 -1
- package/dist/field/lexical/config/client/loader.d.ts +0 -12
- package/dist/field/lexical/config/client/loader.d.ts.map +0 -1
- package/dist/field/lexical/config/client/loader.js +0 -46
- package/dist/field/lexical/config/client/loader.js.map +0 -1
- package/dist/field/lexical/config/client/sanitize.d.ts +0 -6
- package/dist/field/lexical/config/client/sanitize.d.ts.map +0 -1
- package/dist/field/lexical/config/client/sanitize.js +0 -126
- package/dist/field/lexical/config/client/sanitize.js.map +0 -1
- package/dist/field/lexical/config/server/default.d.ts +0 -8
- package/dist/field/lexical/config/server/default.d.ts.map +0 -1
- package/dist/field/lexical/config/server/default.js +0 -53
- package/dist/field/lexical/config/server/default.js.map +0 -1
- package/dist/field/lexical/config/server/loader.d.ts +0 -7
- package/dist/field/lexical/config/server/loader.d.ts.map +0 -1
- package/dist/field/lexical/config/server/loader.js +0 -118
- package/dist/field/lexical/config/server/loader.js.map +0 -1
- package/dist/field/lexical/config/server/sanitize.d.ts +0 -5
- package/dist/field/lexical/config/server/sanitize.d.ts.map +0 -1
- package/dist/field/lexical/config/server/sanitize.js +0 -65
- package/dist/field/lexical/config/server/sanitize.js.map +0 -1
- package/dist/field/lexical/config/types.d.ts +0 -21
- package/dist/field/lexical/config/types.d.ts.map +0 -1
- package/dist/field/lexical/config/types.js +0 -3
- package/dist/field/lexical/config/types.js.map +0 -1
- package/dist/field/lexical/nodes/index.d.ts +0 -7
- package/dist/field/lexical/nodes/index.d.ts.map +0 -1
- package/dist/field/lexical/nodes/index.js +0 -10
- package/dist/field/lexical/nodes/index.js.map +0 -1
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.d.ts +0 -8
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.d.ts.map +0 -1
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.js +0 -97
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.js.map +0 -1
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarButton/index.scss +0 -37
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.d.ts +0 -17
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.d.ts.map +0 -1
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.js +0 -251
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/DropDown.js.map +0 -1
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.d.ts +0 -18
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.d.ts.map +0 -1
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.js +0 -42
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.js.map +0 -1
- package/dist/field/lexical/plugins/FloatingSelectToolbar/ToolbarDropdown/index.scss +0 -100
- package/dist/field/lexical/plugins/FloatingSelectToolbar/index.d.ts +0 -6
- package/dist/field/lexical/plugins/FloatingSelectToolbar/index.d.ts.map +0 -1
- package/dist/field/lexical/plugins/FloatingSelectToolbar/index.js +0 -270
- package/dist/field/lexical/plugins/FloatingSelectToolbar/index.js.map +0 -1
- package/dist/field/lexical/plugins/FloatingSelectToolbar/index.scss +0 -57
- package/dist/field/lexical/plugins/FloatingSelectToolbar/types.d.ts +0 -40
- package/dist/field/lexical/plugins/FloatingSelectToolbar/types.d.ts.map +0 -1
- package/dist/field/lexical/plugins/FloatingSelectToolbar/types.js +0 -3
- package/dist/field/lexical/plugins/FloatingSelectToolbar/types.js.map +0 -1
- package/dist/field/lexical/plugins/MarkdownShortcut/index.d.ts.map +0 -1
- package/dist/field/lexical/plugins/MarkdownShortcut/index.js +0 -13
- package/dist/field/lexical/plugins/MarkdownShortcut/index.js.map +0 -1
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts +0 -32
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts.map +0 -1
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +0 -404
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +0 -1
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts +0 -25
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts.map +0 -1
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +0 -207
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +0 -1
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts +0 -39
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts.map +0 -1
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js +0 -39
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js.map +0 -1
- package/dist/field/lexical/plugins/SlashMenu/index.d.ts +0 -6
- package/dist/field/lexical/plugins/SlashMenu/index.d.ts.map +0 -1
- package/dist/field/lexical/plugins/SlashMenu/index.js +0 -172
- package/dist/field/lexical/plugins/SlashMenu/index.js.map +0 -1
- package/dist/field/lexical/plugins/SlashMenu/index.scss +0 -61
- package/dist/field/lexical/plugins/SlashMenu/useMenuTriggerMatch.d.ts.map +0 -1
- package/dist/field/lexical/plugins/SlashMenu/useMenuTriggerMatch.js +0 -33
- package/dist/field/lexical/plugins/SlashMenu/useMenuTriggerMatch.js.map +0 -1
- package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.d.ts +0 -6
- package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.d.ts.map +0 -1
- package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.js +0 -241
- package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +0 -1
- package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.scss +0 -31
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/debounce.d.ts +0 -2
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/debounce.d.ts.map +0 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/debounce.js +0 -14
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/debounce.js.map +0 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.d.ts.map +0 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js +0 -14
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js.map +0 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.d.ts +0 -27
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.d.ts.map +0 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.js +0 -151
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.js.map +0 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.d.ts +0 -3
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.d.ts.map +0 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js +0 -27
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js.map +0 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.d.ts +0 -6
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.d.ts.map +0 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js +0 -298
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +0 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.scss +0 -55
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.d.ts +0 -3
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.d.ts.map +0 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js +0 -49
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js.map +0 -1
- package/dist/field/lexical/plugins/handles/utils/doesLineHeightAffectElement.d.ts.map +0 -1
- package/dist/field/lexical/plugins/handles/utils/doesLineHeightAffectElement.js +0 -35
- package/dist/field/lexical/plugins/handles/utils/doesLineHeightAffectElement.js.map +0 -1
- package/dist/field/lexical/plugins/handles/utils/getCollapsedMargins.d.ts.map +0 -1
- package/dist/field/lexical/plugins/handles/utils/getCollapsedMargins.js +0 -14
- package/dist/field/lexical/plugins/handles/utils/getCollapsedMargins.js.map +0 -1
- package/dist/field/lexical/plugins/handles/utils/getTopLevelNodeKeys.d.ts.map +0 -1
- package/dist/field/lexical/plugins/handles/utils/getTopLevelNodeKeys.js +0 -7
- package/dist/field/lexical/plugins/handles/utils/getTopLevelNodeKeys.js.map +0 -1
- package/dist/field/lexical/plugins/handles/utils/isOnHandleElement.d.ts.map +0 -1
- package/dist/field/lexical/plugins/handles/utils/isOnHandleElement.js +0 -5
- package/dist/field/lexical/plugins/handles/utils/isOnHandleElement.js.map +0 -1
- package/dist/field/lexical/plugins/handles/utils/setHandlePosition.d.ts.map +0 -1
- package/dist/field/lexical/plugins/handles/utils/setHandlePosition.js +0 -27
- package/dist/field/lexical/plugins/handles/utils/setHandlePosition.js.map +0 -1
- package/dist/field/lexical/theme/EditorTheme.d.ts +0 -4
- package/dist/field/lexical/theme/EditorTheme.d.ts.map +0 -1
- package/dist/field/lexical/theme/EditorTheme.js +0 -106
- package/dist/field/lexical/theme/EditorTheme.js.map +0 -1
- package/dist/field/lexical/theme/EditorTheme.scss +0 -509
- package/dist/field/lexical/ui/ContentEditable.d.ts +0 -6
- package/dist/field/lexical/ui/ContentEditable.d.ts.map +0 -1
- package/dist/field/lexical/ui/ContentEditable.js +0 -11
- package/dist/field/lexical/ui/ContentEditable.js.map +0 -1
- package/dist/field/lexical/ui/ContentEditable.scss +0 -25
- package/dist/field/lexical/ui/icons/AI/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/AI/index.js +0 -27
- package/dist/field/lexical/ui/icons/AI/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/AlignCenter/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/AlignCenter/index.js +0 -25
- package/dist/field/lexical/ui/icons/AlignCenter/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/AlignJustify/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/AlignJustify/index.js +0 -25
- package/dist/field/lexical/ui/icons/AlignJustify/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/AlignLeft/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/AlignLeft/index.js +0 -25
- package/dist/field/lexical/ui/icons/AlignLeft/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/AlignRight/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/AlignRight/index.js +0 -25
- package/dist/field/lexical/ui/icons/AlignRight/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/Block/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/Block/index.js +0 -34
- package/dist/field/lexical/ui/icons/Block/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/Blockquote/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/Blockquote/index.js +0 -16
- package/dist/field/lexical/ui/icons/Blockquote/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/Bold/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/Bold/index.js +0 -16
- package/dist/field/lexical/ui/icons/Bold/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/Caret/index.svg +0 -3
- package/dist/field/lexical/ui/icons/Checklist/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/Checklist/index.js +0 -24
- package/dist/field/lexical/ui/icons/Checklist/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/Code/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/Code/index.js +0 -19
- package/dist/field/lexical/ui/icons/Code/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/CodeBlock/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/CodeBlock/index.js +0 -19
- package/dist/field/lexical/ui/icons/CodeBlock/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/H1/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/H1/index.js +0 -16
- package/dist/field/lexical/ui/icons/H1/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/H2/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/H2/index.js +0 -16
- package/dist/field/lexical/ui/icons/H2/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/H3/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/H3/index.js +0 -16
- package/dist/field/lexical/ui/icons/H3/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/H4/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/H4/index.js +0 -16
- package/dist/field/lexical/ui/icons/H4/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/H5/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/H5/index.js +0 -16
- package/dist/field/lexical/ui/icons/H5/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/H6/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/H6/index.js +0 -16
- package/dist/field/lexical/ui/icons/H6/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/HorizontalRule/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/HorizontalRule/index.js +0 -19
- package/dist/field/lexical/ui/icons/HorizontalRule/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/IndentDecrease/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/IndentDecrease/index.js +0 -28
- package/dist/field/lexical/ui/icons/IndentDecrease/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/IndentIncrease/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/IndentIncrease/index.js +0 -28
- package/dist/field/lexical/ui/icons/IndentIncrease/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/Italic/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/Italic/index.js +0 -16
- package/dist/field/lexical/ui/icons/Italic/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/Link/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/Link/index.js +0 -27
- package/dist/field/lexical/ui/icons/Link/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/OrderedList/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/OrderedList/index.js +0 -31
- package/dist/field/lexical/ui/icons/OrderedList/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/Relationship/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/Relationship/index.js +0 -27
- package/dist/field/lexical/ui/icons/Relationship/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/Strikethrough/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/Strikethrough/index.js +0 -19
- package/dist/field/lexical/ui/icons/Strikethrough/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/Subscript/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/Subscript/index.js +0 -16
- package/dist/field/lexical/ui/icons/Subscript/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/Superscript/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/Superscript/index.js +0 -16
- package/dist/field/lexical/ui/icons/Superscript/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/Text/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/Text/index.js +0 -16
- package/dist/field/lexical/ui/icons/Text/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/Underline/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/Underline/index.js +0 -19
- package/dist/field/lexical/ui/icons/Underline/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/UnorderedList/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/UnorderedList/index.js +0 -46
- package/dist/field/lexical/ui/icons/UnorderedList/index.js.map +0 -1
- package/dist/field/lexical/ui/icons/Upload/index.d.ts.map +0 -1
- package/dist/field/lexical/ui/icons/Upload/index.js +0 -28
- package/dist/field/lexical/ui/icons/Upload/index.js.map +0 -1
- package/dist/field/lexical/utils/canUseDOM.d.ts.map +0 -1
- package/dist/field/lexical/utils/canUseDOM.js +0 -3
- package/dist/field/lexical/utils/canUseDOM.js.map +0 -1
- package/dist/field/lexical/utils/cloneDeep.d.ts +0 -2
- package/dist/field/lexical/utils/cloneDeep.d.ts.map +0 -1
- package/dist/field/lexical/utils/cloneDeep.js +0 -50
- package/dist/field/lexical/utils/cloneDeep.js.map +0 -1
- package/dist/field/lexical/utils/environment.d.ts.map +0 -1
- package/dist/field/lexical/utils/environment.js +0 -14
- package/dist/field/lexical/utils/environment.js.map +0 -1
- package/dist/field/lexical/utils/getDOMRangeRect.d.ts.map +0 -1
- package/dist/field/lexical/utils/getDOMRangeRect.js +0 -16
- package/dist/field/lexical/utils/getDOMRangeRect.js.map +0 -1
- package/dist/field/lexical/utils/getSelectedNode.d.ts.map +0 -1
- package/dist/field/lexical/utils/getSelectedNode.js +0 -18
- package/dist/field/lexical/utils/getSelectedNode.js.map +0 -1
- package/dist/field/lexical/utils/guard.d.ts.map +0 -1
- package/dist/field/lexical/utils/guard.js +0 -5
- package/dist/field/lexical/utils/guard.js.map +0 -1
- package/dist/field/lexical/utils/invariant.d.ts +0 -2
- package/dist/field/lexical/utils/invariant.d.ts.map +0 -1
- package/dist/field/lexical/utils/invariant.js +0 -12
- package/dist/field/lexical/utils/invariant.js.map +0 -1
- package/dist/field/lexical/utils/joinClasses.d.ts.map +0 -1
- package/dist/field/lexical/utils/joinClasses.js +0 -5
- package/dist/field/lexical/utils/joinClasses.js.map +0 -1
- package/dist/field/lexical/utils/markdown/createBlockNode.d.ts +0 -4
- package/dist/field/lexical/utils/markdown/createBlockNode.d.ts.map +0 -1
- package/dist/field/lexical/utils/markdown/createBlockNode.js +0 -12
- package/dist/field/lexical/utils/markdown/createBlockNode.js.map +0 -1
- package/dist/field/lexical/utils/nodeFormat.d.ts +0 -41
- package/dist/field/lexical/utils/nodeFormat.d.ts.map +0 -1
- package/dist/field/lexical/utils/nodeFormat.js +0 -88
- package/dist/field/lexical/utils/nodeFormat.js.map +0 -1
- package/dist/field/lexical/utils/point.d.ts.map +0 -1
- package/dist/field/lexical/utils/point.js +0 -37
- package/dist/field/lexical/utils/point.js.map +0 -1
- package/dist/field/lexical/utils/rect.d.ts +0 -47
- package/dist/field/lexical/utils/rect.d.ts.map +0 -1
- package/dist/field/lexical/utils/rect.js +0 -138
- package/dist/field/lexical/utils/rect.js.map +0 -1
- package/dist/field/lexical/utils/setFloatingElemPosition.d.ts +0 -2
- package/dist/field/lexical/utils/setFloatingElemPosition.d.ts.map +0 -1
- package/dist/field/lexical/utils/setFloatingElemPosition.js +0 -53
- package/dist/field/lexical/utils/setFloatingElemPosition.js.map +0 -1
- package/dist/field/lexical/utils/setFloatingElemPositionForLinkEditor.d.ts.map +0 -1
- package/dist/field/lexical/utils/setFloatingElemPositionForLinkEditor.js +0 -27
- package/dist/field/lexical/utils/setFloatingElemPositionForLinkEditor.js.map +0 -1
- package/dist/field/lexical/utils/swipe.d.ts.map +0 -1
- package/dist/field/lexical/utils/swipe.js +0 -100
- package/dist/field/lexical/utils/swipe.js.map +0 -1
- package/dist/field/lexical/utils/url.d.ts +0 -3
- package/dist/field/lexical/utils/url.d.ts.map +0 -1
- package/dist/field/lexical/utils/url.js +0 -25
- package/dist/field/lexical/utils/url.js.map +0 -1
- package/dist/generateComponentMap.d.ts +0 -6
- package/dist/generateComponentMap.d.ts.map +0 -1
- package/dist/generateComponentMap.js +0 -86
- package/dist/generateComponentMap.js.map +0 -1
- package/dist/generateSchemaMap.d.ts +0 -6
- package/dist/generateSchemaMap.d.ts.map +0 -1
- package/dist/generateSchemaMap.js +0 -31
- package/dist/generateSchemaMap.js.map +0 -1
- package/dist/populate/defaultValue.d.ts +0 -4
- package/dist/populate/defaultValue.d.ts.map +0 -1
- package/dist/populate/defaultValue.js +0 -50
- package/dist/populate/defaultValue.js.map +0 -1
- package/dist/populate/populate.d.ts +0 -21
- package/dist/populate/populate.d.ts.map +0 -1
- package/dist/populate/populate.js +0 -21
- package/dist/populate/populate.js.map +0 -1
- package/dist/populate/recurseNestedFields.d.ts +0 -25
- package/dist/populate/recurseNestedFields.d.ts.map +0 -1
- package/dist/populate/recurseNestedFields.js +0 -26
- package/dist/populate/recurseNestedFields.js.map +0 -1
- package/dist/populate/richTextRelationshipPromise.d.ts +0 -23
- package/dist/populate/richTextRelationshipPromise.d.ts.map +0 -1
- package/dist/populate/richTextRelationshipPromise.js +0 -68
- package/dist/populate/richTextRelationshipPromise.js.map +0 -1
- package/dist/scss/app.scss +0 -208
- package/dist/scss/colors.scss +0 -269
- package/dist/scss/queries.scss +0 -27
- package/dist/scss/resets.scss +0 -17
- package/dist/scss/styles.scss +0 -11
- package/dist/scss/svg.scss +0 -10
- package/dist/scss/toastify.scss +0 -58
- package/dist/scss/type.scss +0 -117
- package/dist/scss/vars.scss +0 -213
- package/dist/scss/z-index.scss +0 -9
- package/dist/useLexicalFeature.d.ts +0 -3
- package/dist/useLexicalFeature.d.ts.map +0 -1
- package/dist/useLexicalFeature.js +0 -9
- package/dist/useLexicalFeature.js.map +0 -1
- /package/dist/{field/features → features}/blockquote/markdownTransformer.d.ts +0 -0
- /package/dist/{field/features → features}/converters/html/converter/converters/linebreak.d.ts +0 -0
- /package/dist/{field/features → features}/converters/html/converter/converters/paragraph.d.ts +0 -0
- /package/dist/{field/features → features}/converters/html/converter/converters/text.d.ts +0 -0
- /package/dist/{field/features → features}/converters/html/converter/defaultConverters.d.ts +0 -0
- /package/dist/{field/features → features}/format/bold/markdownTransformers.d.ts +0 -0
- /package/dist/{field/features/format/inlinecode → features/format/inlineCode}/markdownTransformers.d.ts +0 -0
- /package/dist/{field/features → features}/format/italic/markdownTransformers.d.ts +0 -0
- /package/dist/{field/features → features}/format/strikethrough/markdownTransformers.d.ts +0 -0
- /package/dist/{field/features → features}/heading/markdownTransformer.d.ts +0 -0
- /package/dist/{field/features/horizontalrule → features/horizontalRule/client}/markdownTransformer.d.ts +0 -0
- /package/dist/{field/features/link → features/link/client}/plugins/floatingLinkEditor/LinkEditor/commands.d.ts +0 -0
- /package/dist/{field/features/link → features/link/client}/plugins/floatingLinkEditor/LinkEditor/index.d.ts +0 -0
- /package/dist/{field/features → features}/link/nodes/AutoLinkNode.d.ts +0 -0
- /package/dist/{field/features → features}/lists/checklist/markdownTransformers.d.ts +0 -0
- /package/dist/{field/features/lists/orderedlist → features/lists/orderedList}/markdownTransformer.d.ts +0 -0
- /package/dist/{field/features/lists/unorderedlist → features/lists/unorderedList}/markdownTransformer.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/index.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/nodes/unknownConvertedNode/Component.d.ts +0 -0
- /package/dist/{field/features/relationship → features/relationship/client}/drawer/commands.d.ts +0 -0
- /package/dist/{field/features/relationship → features/relationship/client}/drawer/index.d.ts +0 -0
- /package/dist/{field/features/relationship → features/relationship/client}/utils/EnabledRelationshipsCondition.d.ts +0 -0
- /package/dist/{field/features/upload → features/upload/client}/drawer/commands.d.ts +0 -0
- /package/dist/{field/features/upload → features/upload/client}/drawer/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/plugins/MarkdownShortcut/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/plugins/SlashMenu/useMenuTriggerMatch.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/plugins/handles/utils/doesLineHeightAffectElement.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/plugins/handles/utils/getCollapsedMargins.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/plugins/handles/utils/getTopLevelNodeKeys.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/plugins/handles/utils/isOnHandleElement.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/plugins/handles/utils/setHandlePosition.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/AI/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/Add/index.svg +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/AlignCenter/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/AlignJustify/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/AlignLeft/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/AlignRight/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/Block/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/Blockquote/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/Bold/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/Checklist/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/Code/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/CodeBlock/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/DraggableBlock/index.svg +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/Edit/index.svg +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/H1/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/H2/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/H3/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/H4/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/H5/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/H6/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/HorizontalRule/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/IndentDecrease/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/IndentIncrease/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/Italic/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/Link/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/OrderedList/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/Relationship/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/Remove/index.svg +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/Strikethrough/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/Subscript/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/Superscript/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/Text/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/Underline/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/UnorderedList/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/ui/icons/Upload/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/utils/canUseDOM.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/utils/environment.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/utils/getDOMRangeRect.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/utils/getSelectedNode.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/utils/guard.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/utils/joinClasses.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/utils/point.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/utils/setFloatingElemPositionForLinkEditor.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/utils/swipe.d.ts +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/features/shared/slashMenu/basicGroup.ts", "../../../src/features/align/client/index.tsx", "../../../src/lexical/ui/icons/AlignCenter/index.tsx", "../../../src/lexical/ui/icons/AlignJustify/index.tsx", "../../../src/lexical/ui/icons/AlignLeft/index.tsx", "../../../src/lexical/ui/icons/AlignRight/index.tsx", "../../../src/utilities/createClientFeature.ts", "../../../src/features/align/client/toolbarAlignGroup.ts", "../../../src/features/blockquote/client/index.tsx", "../../../src/lexical/ui/icons/Blockquote/index.tsx", "../../../src/lexical/ui/icons/Text/index.tsx", "../../../src/features/shared/toolbar/textDropdownGroup.ts", "../../../src/features/blockquote/markdownTransformer.ts", "../../../src/features/blocks/client/index.tsx", "../../../src/lexical/ui/icons/Block/index.tsx", "../../../src/lexical/ui/icons/InlineBlocks/index.tsx", "../../../src/features/blocks/client/plugin/index.tsx", "../../../src/features/debug/testRecorder/client/plugin/index.tsx", "../../../src/lexical/utils/environment.ts", "../../../src/features/debug/testRecorder/client/index.tsx", "../../../src/features/debug/treeView/client/plugin/index.tsx", "../../../src/features/debug/treeView/client/index.tsx", "../../../src/features/format/bold/feature.client.tsx", "../../../src/lexical/ui/icons/Bold/index.tsx", "../../../src/features/format/shared/toolbarFormatGroup.ts", "../../../src/features/format/bold/markdownTransformers.ts", "../../../src/features/format/inlineCode/feature.client.tsx", "../../../src/lexical/ui/icons/Code/index.tsx", "../../../src/features/format/inlineCode/markdownTransformers.ts", "../../../src/features/format/italic/feature.client.tsx", "../../../src/lexical/ui/icons/Italic/index.tsx", "../../../src/features/format/italic/markdownTransformers.ts", "../../../src/features/format/strikethrough/feature.client.tsx", "../../../src/lexical/ui/icons/Strikethrough/index.tsx", "../../../src/features/format/strikethrough/markdownTransformers.ts", "../../../src/features/format/subscript/feature.client.tsx", "../../../src/lexical/ui/icons/Subscript/index.tsx", "../../../src/features/format/superscript/feature.client.tsx", "../../../src/lexical/ui/icons/Superscript/index.tsx", "../../../src/features/format/underline/feature.client.tsx", "../../../src/lexical/ui/icons/Underline/index.tsx", "../../../src/features/heading/client/index.tsx", "../../../src/lexical/ui/icons/H1/index.tsx", "../../../src/lexical/ui/icons/H2/index.tsx", "../../../src/lexical/ui/icons/H3/index.tsx", "../../../src/lexical/ui/icons/H4/index.tsx", "../../../src/lexical/ui/icons/H5/index.tsx", "../../../src/lexical/ui/icons/H6/index.tsx", "../../../src/features/heading/markdownTransformer.ts", "../../../src/lexical/utils/markdown/createBlockNode.ts", "../../../src/features/horizontalRule/client/index.tsx", "../../../src/lexical/ui/icons/HorizontalRule/index.tsx", "../../../src/lexical/ui/icons/Add/index.tsx", "../../../src/features/shared/toolbar/addDropdownGroup.ts", "../../../src/features/horizontalRule/client/markdownTransformer.ts", "../../../src/features/horizontalRule/client/plugin/index.tsx", "../../../src/features/indent/client/index.tsx", "../../../src/lexical/ui/icons/IndentDecrease/index.tsx", "../../../src/lexical/ui/icons/IndentIncrease/index.tsx", "../../../src/features/indent/client/toolbarIndentGroup.ts", "../../../src/features/link/client/index.tsx", "../../../src/lexical/ui/icons/Link/index.tsx", "../../../src/lexical/utils/getSelectedNode.ts", "../../../src/features/shared/toolbar/featureButtonsGroup.ts", "../../../src/features/link/markdownTransformer.ts", "../../../src/features/link/nodes/LinkNode.ts", "../../../src/features/link/nodes/AutoLinkNode.ts", "../../../src/features/link/client/plugins/autoLink/index.tsx", "../../../src/features/link/client/plugins/clickableLink/index.tsx", "../../../src/features/link/client/plugins/floatingLinkEditor/index.tsx", "../../../src/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.tsx", "../../../src/lexical/utils/setFloatingElemPositionForLinkEditor.ts", "../../../src/features/link/client/plugins/floatingLinkEditor/LinkEditor/commands.ts", "../../../src/features/link/client/plugins/link/index.tsx", "../../../src/lexical/utils/url.ts", "../../../src/features/lists/checklist/client/index.tsx", "../../../src/lexical/ui/icons/Checklist/index.tsx", "../../../src/features/lists/plugin/index.tsx", "../../../src/features/lists/shared/slashMenuListGroup.ts", "../../../src/features/lists/checklist/markdownTransformers.ts", "../../../src/features/lists/shared/markdown.ts", "../../../src/features/lists/checklist/client/plugin/index.tsx", "../../../src/features/lists/orderedList/client/index.tsx", "../../../src/lexical/ui/icons/OrderedList/index.tsx", "../../../src/features/lists/orderedList/markdownTransformer.ts", "../../../src/features/lists/unorderedList/client/index.tsx", "../../../src/lexical/ui/icons/UnorderedList/index.tsx", "../../../src/features/lists/unorderedList/markdownTransformer.ts", "../../../src/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.tsx", "../../../src/features/migrations/lexicalPluginToLexical/feature.client.tsx", "../../../src/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.tsx", "../../../src/features/migrations/slateToLexical/feature.client.tsx", "../../../src/features/paragraph/client/index.tsx", "../../../src/features/relationship/client/index.tsx", "../../../src/lexical/ui/icons/Relationship/index.tsx", "../../../src/features/relationship/client/plugins/index.tsx", "../../../src/features/relationship/client/drawer/index.tsx", "../../../src/utilities/fieldsDrawer/useLexicalListDrawer.tsx", "../../../src/features/toolbars/fixed/client/Toolbar/index.tsx", "../../../src/features/toolbars/shared/ToolbarButton/index.tsx", "../../../src/features/toolbars/shared/ToolbarDropdown/index.tsx", "../../../src/features/toolbars/shared/ToolbarDropdown/DropDown.tsx", "../../../src/features/toolbars/fixed/client/index.tsx", "../../../src/features/toolbars/inline/client/Toolbar/index.tsx", "../../../src/lexical/utils/getDOMRangeRect.ts", "../../../src/lexical/utils/setFloatingElemPosition.ts", "../../../src/features/toolbars/inline/client/index.tsx", "../../../src/features/experimental_table/client/index.ts", "../../../src/lexical/ui/icons/Table/index.tsx", "../../../src/features/experimental_table/client/plugins/TableActionMenuPlugin/index.tsx", "../../../src/lexical/ui/icons/Meatballs/index.tsx", "../../../src/features/experimental_table/client/plugins/TableCellResizerPlugin/index.tsx", "../../../src/features/experimental_table/client/plugins/TableHoverActionsPlugin/index.tsx", "../../../src/features/experimental_table/client/utils/useDebounce.ts", "../../../src/features/experimental_table/client/utils/debounce.ts", "../../../src/features/experimental_table/client/plugins/TablePlugin/index.tsx", "../../../src/features/upload/client/feature.client.tsx", "../../../src/lexical/ui/icons/Upload/index.tsx", "../../../src/features/upload/client/plugin/index.tsx", "../../../src/features/upload/client/drawer/index.tsx", "../../../src/field/index.tsx", "../../../src/lexical/theme/EditorTheme.tsx", "../../../src/lexical/config/client/default.ts", "../../../src/lexical/config/client/loader.ts", "../../../src/lexical/config/client/sanitize.ts", "../../../src/lexical/utils/joinClasses.ts", "../../../src/lexical/utils/swipe.ts", "../../../src/lexical/utils/nodeFormat.ts"],
|
|
4
|
+
"sourcesContent": ["import type {\n SlashMenuGroup,\n SlashMenuItem,\n} from '../../../lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js'\n\nexport function slashMenuBasicGroupWithItems(items: SlashMenuItem[]): SlashMenuGroup {\n return {\n items,\n key: 'basic',\n label: ({ i18n }) => {\n return i18n.t('lexical:general:slashMenuBasicGroupLabel')\n },\n }\n}\n", "'use client'\n\nimport { $isElementNode, $isRangeSelection, FORMAT_ELEMENT_COMMAND } from 'lexical'\n\nimport type { ToolbarGroup } from '../../toolbars/types.js'\n\nimport { AlignCenterIcon } from '../../../lexical/ui/icons/AlignCenter/index.js'\nimport { AlignJustifyIcon } from '../../../lexical/ui/icons/AlignJustify/index.js'\nimport { AlignLeftIcon } from '../../../lexical/ui/icons/AlignLeft/index.js'\nimport { AlignRightIcon } from '../../../lexical/ui/icons/AlignRight/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { toolbarAlignGroupWithItems } from './toolbarAlignGroup.js'\n\nconst toolbarGroups: ToolbarGroup[] = [\n toolbarAlignGroupWithItems([\n {\n ChildComponent: AlignLeftIcon,\n isActive: ({ selection }) => {\n if (!$isRangeSelection(selection)) {\n return false\n }\n for (const node of selection.getNodes()) {\n if ($isElementNode(node)) {\n if (node.getFormatType() === 'left') {\n continue\n }\n }\n\n const parent = node.getParent()\n if ($isElementNode(parent)) {\n if (parent.getFormatType() === 'left') {\n continue\n }\n }\n\n return false\n }\n return true\n },\n key: 'alignLeft',\n label: ({ i18n }) => {\n return i18n.t('lexical:align:alignLeftLabel')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, 'left')\n },\n order: 1,\n },\n {\n ChildComponent: AlignCenterIcon,\n isActive: ({ selection }) => {\n if (!$isRangeSelection(selection)) {\n return false\n }\n for (const node of selection.getNodes()) {\n if ($isElementNode(node)) {\n if (node.getFormatType() === 'center') {\n continue\n }\n }\n\n const parent = node.getParent()\n if ($isElementNode(parent)) {\n if (parent.getFormatType() === 'center') {\n continue\n }\n }\n\n return false\n }\n return true\n },\n key: 'alignCenter',\n label: ({ i18n }) => {\n return i18n.t('lexical:align:alignCenterLabel')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, 'center')\n },\n order: 2,\n },\n {\n ChildComponent: AlignRightIcon,\n isActive: ({ selection }) => {\n if (!$isRangeSelection(selection)) {\n return false\n }\n for (const node of selection.getNodes()) {\n if ($isElementNode(node)) {\n if (node.getFormatType() === 'right') {\n continue\n }\n }\n\n const parent = node.getParent()\n if ($isElementNode(parent)) {\n if (parent.getFormatType() === 'right') {\n continue\n }\n }\n\n return false\n }\n return true\n },\n key: 'alignRight',\n label: ({ i18n }) => {\n return i18n.t('lexical:align:alignRightLabel')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, 'right')\n },\n order: 3,\n },\n {\n ChildComponent: AlignJustifyIcon,\n isActive: ({ selection }) => {\n if (!$isRangeSelection(selection)) {\n return false\n }\n for (const node of selection.getNodes()) {\n if ($isElementNode(node)) {\n if (node.getFormatType() === 'justify') {\n continue\n }\n }\n\n const parent = node.getParent()\n if ($isElementNode(parent)) {\n if (parent.getFormatType() === 'justify') {\n continue\n }\n }\n\n return false\n }\n return true\n },\n key: 'alignJustify',\n label: ({ i18n }) => {\n return i18n.t('lexical:align:alignJustifyLabel')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, 'justify')\n },\n order: 4,\n },\n ]),\n]\n\nexport const AlignFeatureClient = createClientFeature({\n toolbarFixed: {\n groups: toolbarGroups,\n },\n toolbarInline: {\n groups: toolbarGroups,\n },\n})\n", "'use client'\nimport React from 'react'\n\nexport const AlignCenterIcon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"none\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M2.5 5H17.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M2.5 10H17.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M5 15H15\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </svg>\n)\n", "'use client'\nimport React from 'react'\n\nexport const AlignJustifyIcon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"none\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M2.5 5H17.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M2.5 10H17.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M2.5 15H17.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </svg>\n)\n", "'use client'\nimport React from 'react'\n\nexport const AlignLeftIcon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"none\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M2.5 5H17.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M2.5 10H17.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M2.5 15H12.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </svg>\n)\n", "'use client'\nimport React from 'react'\n\nexport const AlignRightIcon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"none\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M2.5 5H17.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M2.5 10H17.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M7.5 15H17.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </svg>\n)\n", "import type {\n BaseClientFeatureProps,\n ClientFeature,\n ClientFeatureProviderMap,\n FeatureProviderClient,\n FeatureProviderProviderClient,\n ResolvedClientFeatureMap,\n} from '../features/typesClient.js'\nimport type { ClientEditorConfig } from '../lexical/config/types.js'\n\nexport type CreateClientFeatureArgs<UnSanitizedClientProps, ClientProps> =\n | ((props: {\n /** unSanitizedEditorConfig.features, but mapped */\n featureProviderMap: ClientFeatureProviderMap\n props: BaseClientFeatureProps<UnSanitizedClientProps>\n // other resolved features, which have been loaded before this one. All features declared in 'dependencies' should be available here\n resolvedFeatures: ResolvedClientFeatureMap\n // unSanitized EditorConfig,\n unSanitizedEditorConfig: ClientEditorConfig\n }) => ClientFeature<ClientProps>)\n | Omit<ClientFeature<ClientProps>, 'sanitizedClientFeatureProps'>\n\nexport const createClientFeature: <\n UnSanitizedClientProps = undefined,\n ClientProps = UnSanitizedClientProps,\n>(\n args: CreateClientFeatureArgs<UnSanitizedClientProps, ClientProps>,\n) => FeatureProviderProviderClient<UnSanitizedClientProps, ClientProps> = (feature) => {\n const featureProviderProvideClient: FeatureProviderProviderClient<any, any> = (props) => {\n const featureProviderClient: Partial<FeatureProviderClient<any, any>> = {\n clientFeatureProps: props,\n }\n\n if (typeof feature === 'function') {\n featureProviderClient.feature = ({\n featureProviderMap,\n resolvedFeatures,\n unSanitizedEditorConfig,\n }) => {\n const toReturn = feature({\n featureProviderMap,\n props,\n resolvedFeatures,\n unSanitizedEditorConfig,\n })\n\n if (toReturn.sanitizedClientFeatureProps === null) {\n toReturn.sanitizedClientFeatureProps = props\n }\n\n return toReturn\n }\n } else {\n // We have to spread feature here! Otherwise, if the arg of createClientFeature is not a function, and 2\n // richText editors have the same feature (even if both call it, e.g. both call UploadFeature()),\n // the second richText editor here will override sanitizedClientFeatureProps of the first feature, as both richText\n // editor features share the same reference to the feature object.\n // Example: richText editor 1 and 2 both have UploadFeature. richText editor 1 calls UploadFeature() with custom fields,\n // richText editor 2 calls UploadFeature() with NO custom fields. If we don't spread feature here, richText editor 1\n // will not have any custom fields, as richText editor 2 will override the feature object.\n const newFeature: ClientFeature<any> = { ...feature }\n newFeature.sanitizedClientFeatureProps = props\n featureProviderClient.feature = newFeature\n }\n return featureProviderClient as FeatureProviderClient<any, any>\n }\n\n return featureProviderProvideClient\n}\n", "'use client'\nimport type { ToolbarGroup, ToolbarGroupItem } from '../../toolbars/types.js'\n\nimport { AlignLeftIcon } from '../../../lexical/ui/icons/AlignLeft/index.js'\n\nexport const toolbarAlignGroupWithItems = (items: ToolbarGroupItem[]): ToolbarGroup => {\n return {\n type: 'dropdown',\n ChildComponent: AlignLeftIcon,\n items,\n key: 'align',\n order: 30,\n }\n}\n", "'use client'\n\nimport { $createQuoteNode, $isQuoteNode, QuoteNode } from '@lexical/rich-text'\nimport { $setBlocksType } from '@lexical/selection'\nimport { $getSelection, $isRangeSelection } from 'lexical'\n\nimport type { ToolbarGroup } from '../../toolbars/types.js'\n\nimport { BlockquoteIcon } from '../../../lexical/ui/icons/Blockquote/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { slashMenuBasicGroupWithItems } from '../../shared/slashMenu/basicGroup.js'\nimport { toolbarTextDropdownGroupWithItems } from '../../shared/toolbar/textDropdownGroup.js'\nimport { MarkdownTransformer } from '../markdownTransformer.js'\n\nconst toolbarGroups: ToolbarGroup[] = [\n toolbarTextDropdownGroupWithItems([\n {\n ChildComponent: BlockquoteIcon,\n isActive: ({ selection }) => {\n if (!$isRangeSelection(selection)) {\n return false\n }\n for (const node of selection.getNodes()) {\n if (!$isQuoteNode(node) && !$isQuoteNode(node.getParent())) {\n return false\n }\n }\n return true\n },\n key: 'blockquote',\n label: ({ i18n }) => {\n return i18n.t('lexical:blockquote:label')\n },\n onSelect: ({ editor }) => {\n editor.update(() => {\n const selection = $getSelection()\n $setBlocksType(selection, () => $createQuoteNode())\n })\n },\n order: 20,\n },\n ]),\n]\n\nexport const BlockquoteFeatureClient = createClientFeature({\n markdownTransformers: [MarkdownTransformer],\n nodes: [QuoteNode],\n\n slashMenu: {\n groups: [\n slashMenuBasicGroupWithItems([\n {\n Icon: BlockquoteIcon,\n key: 'blockquote',\n keywords: ['quote', 'blockquote'],\n label: ({ i18n }) => {\n return i18n.t('lexical:blockquote:label')\n },\n onSelect: ({ editor }) => {\n editor.update(() => {\n const selection = $getSelection()\n $setBlocksType(selection, () => $createQuoteNode())\n })\n },\n },\n ]),\n ],\n },\n toolbarFixed: {\n groups: toolbarGroups,\n },\n toolbarInline: {\n groups: toolbarGroups,\n },\n})\n", "'use client'\nimport React from 'react'\n\nexport const BlockquoteIcon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"none\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M13.5353 10.5725C13.5353 9.47709 11.0456 9.99991 11.0456 7.85883C11.0456 6.46464 12.1162 5.61816 13.361 5.61816C14.805 5.61816 16 6.86298 16 8.92937C16 11.2945 14.4564 13.7841 11.1203 14.3816L10.8216 13.1368C12.888 12.4895 13.5353 11.4937 13.5353 10.5725ZM6.71369 10.5725C6.71369 9.47709 4.22407 9.99991 4.22407 7.85883C4.22407 6.46464 5.29461 5.61816 6.53942 5.61816C7.9834 5.61816 9.17842 6.86298 9.17842 8.92937C9.17842 11.2945 7.63485 13.7841 4.29876 14.3816L4 13.1368C6.06639 12.4895 6.71369 11.4937 6.71369 10.5725Z\"\n fill=\"currentColor\"\n />\n </svg>\n)\n", "'use client'\nimport React from 'react'\n\nexport const TextIcon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"currentColor\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M11.708 14.5H7.79785V13.9414H8.01367C9.00391 13.9414 9.15625 13.9033 9.15625 13.6113V6.70508H8.07715C6.82031 6.70508 6.73145 7.08594 6.28711 8.67285H5.80469L5.91895 6.12109H13.5869L13.7012 8.67285H13.2188C12.7744 7.08594 12.6855 6.70508 11.4287 6.70508H10.3496V13.6113C10.3496 13.9033 10.502 13.9414 11.4922 13.9414H11.708V14.5Z\"\n fill=\"currentColor\"\n />\n </svg>\n)\n", "import type { ToolbarGroup, ToolbarGroupItem } from '../../toolbars/types.js'\n\nimport { TextIcon } from '../../../lexical/ui/icons/Text/index.js'\n\nexport const toolbarTextDropdownGroupWithItems = (items: ToolbarGroupItem[]): ToolbarGroup => {\n return {\n type: 'dropdown',\n ChildComponent: TextIcon,\n items,\n key: 'text',\n order: 25,\n }\n}\n", "import type { ElementTransformer } from '@lexical/markdown'\n\nimport { $createQuoteNode, $isQuoteNode, QuoteNode } from '@lexical/rich-text'\nimport { $createLineBreakNode } from 'lexical'\n\nexport const MarkdownTransformer: ElementTransformer = {\n type: 'element',\n dependencies: [QuoteNode],\n export: (node, exportChildren) => {\n if (!$isQuoteNode(node)) {\n return null\n }\n\n const lines = exportChildren(node).split('\\n')\n const output: string[] = []\n for (const line of lines) {\n output.push('> ' + line)\n }\n return output.join('\\n')\n },\n regExp: /^>\\s/,\n replace: (parentNode, children, _match, isImport) => {\n if (isImport) {\n const previousNode = parentNode.getPreviousSibling()\n if ($isQuoteNode(previousNode)) {\n previousNode.splice(previousNode.getChildrenSize(), 0, [\n $createLineBreakNode(),\n ...children,\n ])\n previousNode.select(0, 0)\n parentNode.remove()\n return\n }\n }\n\n const node = $createQuoteNode()\n node.append(...children)\n parentNode.replace(node)\n node.select(0, 0)\n },\n}\n", "'use client'\n\nimport type { BlocksFieldClient } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\n\nimport type { SlashMenuItem } from '../../../lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js'\nimport type { ToolbarGroup, ToolbarGroupItem } from '../../toolbars/types.js'\n\nimport { BlockIcon } from '../../../lexical/ui/icons/Block/index.js'\nimport { InlineBlocksIcon } from '../../../lexical/ui/icons/InlineBlocks/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { BlockNode } from './nodes/BlocksNode.js'\nimport { InlineBlockNode } from './nodes/InlineBlocksNode.js'\nimport { INSERT_BLOCK_COMMAND, OPEN_INLINE_BLOCK_DRAWER_COMMAND } from './plugin/commands.js'\nimport { BlocksPlugin } from './plugin/index.js'\n\nexport type BlocksFeatureClientProps = {\n clientBlockSlugs: string[]\n clientInlineBlockSlugs: string[]\n}\n// @ts-expect-error - TODO: fix this\nexport const BlocksFeatureClient = createClientFeature<BlocksFeatureClientProps>(({ props }) => ({\n nodes: [BlockNode, InlineBlockNode],\n plugins: [\n {\n Component: BlocksPlugin,\n position: 'normal',\n },\n ],\n sanitizedClientFeatureProps: props,\n slashMenu: {\n groups: [\n props.clientBlockSlugs?.length\n ? {\n items: props.clientBlockSlugs.map((blockSlug) => {\n return {\n Icon: BlockIcon,\n key: 'block-' + blockSlug,\n keywords: ['block', 'blocks', blockSlug],\n label: ({ featureClientSchemaMap, i18n, schemaPath }) => {\n if (!featureClientSchemaMap) {\n return blockSlug\n }\n\n const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_blocks.${blockSlug}`\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient = clientSchemaMap[\n componentMapRenderedBlockPath\n ][0] as BlocksFieldClient\n\n const clientBlock = blocksField.blocks[0]\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock.labels.singular, i18n)\n : clientBlock?.slug\n\n return blockDisplayName\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INSERT_BLOCK_COMMAND, {\n blockName: '',\n blockType: blockSlug,\n })\n },\n } as SlashMenuItem\n }),\n key: 'blocks',\n label: ({ i18n }) => {\n return i18n.t('lexical:blocks:label')\n },\n }\n : null,\n props.clientInlineBlockSlugs?.length\n ? {\n items: props.clientInlineBlockSlugs.map((inlineBlockSlug) => {\n return {\n Icon: InlineBlocksIcon,\n key: 'inlineBlocks-' + inlineBlockSlug,\n keywords: ['inlineBlock', 'inline block', inlineBlockSlug],\n label: ({ featureClientSchemaMap, i18n, schemaPath }) => {\n const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.${inlineBlockSlug}`\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient = clientSchemaMap[\n componentMapRenderedBlockPath\n ][0] as BlocksFieldClient\n\n const clientBlock = blocksField.blocks[0]\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock.labels.singular, i18n)\n : clientBlock?.slug\n\n return blockDisplayName\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(OPEN_INLINE_BLOCK_DRAWER_COMMAND, {\n fields: {\n blockName: '',\n blockType: inlineBlockSlug,\n },\n })\n },\n } as SlashMenuItem\n }),\n key: 'inlineBlocks',\n label: ({ i18n }) => {\n return i18n.t('lexical:blocks:inlineBlocks:label')\n },\n }\n : null,\n ].filter(Boolean),\n },\n toolbarFixed: {\n groups: [\n props.clientBlockSlugs?.length\n ? {\n type: 'dropdown',\n ChildComponent: BlockIcon,\n items: props.clientBlockSlugs.map((blockSlug, index) => {\n return {\n ChildComponent: BlockIcon,\n isActive: undefined, // At this point, we would be inside a sub-richtext-editor. And at this point this will be run against the focused sub-editor, not the parent editor which has the actual block. Thus, no point in running this\n key: 'block-' + blockSlug,\n label: ({ featureClientSchemaMap, i18n, schemaPath }) => {\n const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_blocks.${blockSlug}`\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient = clientSchemaMap[\n componentMapRenderedBlockPath\n ][0] as BlocksFieldClient\n\n const clientBlock = blocksField.blocks[0]\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock.labels.singular, i18n)\n : clientBlock?.slug\n\n return blockDisplayName\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INSERT_BLOCK_COMMAND, {\n blockName: '',\n blockType: blockSlug,\n })\n },\n order: index,\n } as ToolbarGroupItem\n }),\n key: 'blocks',\n order: 20,\n }\n : null,\n props.clientInlineBlockSlugs?.length\n ? {\n type: 'dropdown',\n ChildComponent: InlineBlocksIcon,\n items: props.clientInlineBlockSlugs.map((inlineBlockSlug, index) => {\n return {\n ChildComponent: InlineBlocksIcon,\n isActive: undefined,\n key: 'inlineBlock-' + inlineBlockSlug,\n label: ({ featureClientSchemaMap, i18n, schemaPath }) => {\n if (!featureClientSchemaMap) {\n return inlineBlockSlug\n }\n\n const componentMapRenderedBlockPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.${inlineBlockSlug}`\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient = clientSchemaMap[\n componentMapRenderedBlockPath\n ][0] as BlocksFieldClient\n\n const clientBlock = blocksField.blocks[0]\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock.labels.singular, i18n)\n : clientBlock?.slug\n\n return blockDisplayName\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(OPEN_INLINE_BLOCK_DRAWER_COMMAND, {\n fields: {\n blockType: inlineBlockSlug,\n },\n })\n },\n order: index,\n } as ToolbarGroupItem\n }),\n key: 'inlineBlocks',\n order: 25,\n }\n : null,\n ].filter(Boolean) as ToolbarGroup[],\n },\n}))\n", "'use client'\nimport React from 'react'\n\nexport const BlockIcon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"none\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect height=\"4\" rx=\"0.5\" stroke=\"currentColor\" width=\"4\" x=\"8\" y=\"5\" />\n <rect height=\"4\" rx=\"0.5\" stroke=\"currentColor\" width=\"4\" x=\"5\" y=\"11\" />\n <rect height=\"4\" rx=\"0.5\" stroke=\"currentColor\" width=\"4\" x=\"11\" y=\"11\" />\n </svg>\n)\n", "'use client'\nimport React from 'react'\n\nexport const InlineBlocksIcon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"none\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n clipRule=\"evenodd\"\n d=\"M5.33333 6.5C5.11232 6.5 4.90036 6.5878 4.74408 6.74408C4.5878 6.90036 4.5 7.11232 4.5 7.33333V12.1667C4.5 12.3877 4.5878 12.5996 4.74408 12.7559C4.90036 12.9122 5.11232 13 5.33333 13H14.6667C14.8877 13 15.0996 12.9122 15.2559 12.7559C15.4122 12.5996 15.5 12.3877 15.5 12.1667V11.6667C15.5 11.3905 15.7239 11.1667 16 11.1667C16.2761 11.1667 16.5 11.3905 16.5 11.6667V12.1667C16.5 12.6529 16.3068 13.1192 15.963 13.463C15.6192 13.8068 15.1529 14 14.6667 14H5.33333C4.8471 14 4.38079 13.8068 4.03697 13.463C3.69315 13.1192 3.5 12.6529 3.5 12.1667V7.33333C3.5 6.8471 3.69315 6.38079 4.03697 6.03697C4.38079 5.69315 4.8471 5.5 5.33333 5.5H10.3333C10.6095 5.5 10.8333 5.72386 10.8333 6C10.8333 6.27614 10.6095 6.5 10.3333 6.5H5.33333ZM13 6.5C12.7239 6.5 12.5 6.27614 12.5 6C12.5 5.72386 12.7239 5.5 13 5.5H16C16.2761 5.5 16.5 5.72386 16.5 6V9C16.5 9.27614 16.2761 9.5 16 9.5C15.7239 9.5 15.5 9.27614 15.5 9V7.20711L13.3536 9.35355C13.1583 9.54882 12.8417 9.54882 12.6464 9.35355C12.4512 9.15829 12.4512 8.84171 12.6464 8.64645L14.7929 6.5H13ZM6.16699 8.33325C6.16699 8.05711 6.39085 7.83325 6.66699 7.83325H11.0003C11.2765 7.83325 11.5003 8.05711 11.5003 8.33325C11.5003 8.60939 11.2765 8.83325 11.0003 8.83325H6.66699C6.39085 8.83325 6.16699 8.60939 6.16699 8.33325ZM6.16699 10.9999C6.16699 10.7238 6.39085 10.4999 6.66699 10.4999H13.3337C13.6098 10.4999 13.8337 10.7238 13.8337 10.9999C13.8337 11.2761 13.6098 11.4999 13.3337 11.4999H6.66699C6.39085 11.4999 6.16699 11.2761 6.16699 10.9999Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n />\n </svg>\n)\n", "'use client'\n\nimport type { BlocksFieldClient } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $insertNodeToNearestRoot, $wrapNodeInElement, mergeRegister } from '@lexical/utils'\nimport { getTranslation } from '@payloadcms/translations'\nimport { formatDrawerSlug, useEditDepth, useTranslation } from '@payloadcms/ui'\nimport {\n $createParagraphNode,\n $getNodeByKey,\n $getPreviousSelection,\n $getSelection,\n $insertNodes,\n $isParagraphNode,\n $isRangeSelection,\n $isRootOrShadowRoot,\n COMMAND_PRIORITY_EDITOR,\n type RangeSelection,\n} from 'lexical'\nimport React, { useEffect, useState } from 'react'\n\nimport type { PluginComponent } from '../../../typesClient.js'\nimport type { BlockFields, BlockFieldsOptionalID } from '../../server/nodes/BlocksNode.js'\nimport type { BlocksFeatureClientProps } from '../index.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { FieldsDrawer } from '../../../../utilities/fieldsDrawer/Drawer.js'\nimport { useLexicalDrawer } from '../../../../utilities/fieldsDrawer/useLexicalDrawer.js'\nimport { $createBlockNode, BlockNode } from '../nodes/BlocksNode.js'\nimport { $createInlineBlockNode, $isInlineBlockNode } from '../nodes/InlineBlocksNode.js'\nimport {\n INSERT_BLOCK_COMMAND,\n INSERT_INLINE_BLOCK_COMMAND,\n OPEN_INLINE_BLOCK_DRAWER_COMMAND,\n} from './commands.js'\n\nexport type InsertBlockPayload = BlockFieldsOptionalID\n\nexport const BlocksPlugin: PluginComponent<BlocksFeatureClientProps> = () => {\n const [editor] = useLexicalComposerContext()\n const [blockFields, setBlockFields] = useState<BlockFields | null>(null)\n const [blockType, setBlockType] = useState<string>('' as any)\n const [targetNodeKey, setTargetNodeKey] = useState<null | string>(null)\n const { i18n, t } = useTranslation<string, any>()\n const {\n fieldProps: { featureClientSchemaMap, schemaPath },\n } = useEditorConfigContext()\n const { uuid } = useEditorConfigContext()\n const editDepth = useEditDepth()\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-inlineBlocks-create-` + uuid,\n depth: editDepth,\n })\n\n const { toggleDrawer } = useLexicalDrawer(drawerSlug, true)\n\n useEffect(() => {\n if (!editor.hasNodes([BlockNode])) {\n throw new Error('BlocksPlugin: BlocksNode not registered on editor')\n }\n\n return mergeRegister(\n editor.registerCommand<InsertBlockPayload>(\n INSERT_BLOCK_COMMAND,\n (payload: InsertBlockPayload) => {\n editor.update(() => {\n const selection = $getSelection() || $getPreviousSelection()\n\n if ($isRangeSelection(selection)) {\n const blockNode = $createBlockNode(payload)\n // Insert blocks node BEFORE potentially removing focusNode, as $insertNodeToNearestRoot errors if the focusNode doesn't exist\n $insertNodeToNearestRoot(blockNode)\n\n const { focus } = selection\n const focusNode = focus.getNode()\n\n // First, delete currently selected node if it's an empty paragraph and if there are sufficient\n // paragraph nodes (more than 1) left in the parent node, so that we don't \"trap\" the user\n if (\n $isParagraphNode(focusNode) &&\n focusNode.getTextContentSize() === 0 &&\n focusNode\n .getParentOrThrow()\n .getChildren()\n .filter((node) => $isParagraphNode(node)).length > 1\n ) {\n focusNode.remove()\n }\n }\n })\n\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n editor.registerCommand(\n INSERT_INLINE_BLOCK_COMMAND,\n (fields) => {\n if (targetNodeKey) {\n const node = $getNodeByKey(targetNodeKey)\n\n if (!node || !$isInlineBlockNode(node)) {\n return false\n }\n\n node.setFields(fields as BlockFields)\n\n setTargetNodeKey(null)\n return true\n }\n\n const inlineBlockNode = $createInlineBlockNode(fields as BlockFields)\n $insertNodes([inlineBlockNode])\n if ($isRootOrShadowRoot(inlineBlockNode.getParentOrThrow())) {\n $wrapNodeInElement(inlineBlockNode, $createParagraphNode).selectEnd()\n }\n\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n editor.registerCommand(\n OPEN_INLINE_BLOCK_DRAWER_COMMAND,\n ({ fields, nodeKey }) => {\n setBlockFields((fields as BlockFields) ?? null)\n setTargetNodeKey(nodeKey ?? null)\n setBlockType(fields?.blockType ?? ('' as any))\n\n if (nodeKey) {\n toggleDrawer()\n return true\n }\n\n let rangeSelection: null | RangeSelection = null\n\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n rangeSelection = selection\n }\n })\n\n if (rangeSelection) {\n //setLastSelection(rangeSelection)\n toggleDrawer()\n }\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n )\n }, [editor, targetNodeKey, toggleDrawer])\n\n if (!blockFields) {\n return null\n }\n\n const schemaFieldsPath = `${schemaPath}.lexical_internal_feature.blocks.lexical_inline_blocks.${blockFields?.blockType}`\n\n const clientSchemaMap = featureClientSchemaMap['blocks']\n\n const blocksField: BlocksFieldClient = clientSchemaMap[schemaFieldsPath][0] as BlocksFieldClient\n\n const clientBlock = blocksField.blocks[0]\n\n if (!blocksField) {\n return null\n }\n\n const blockDisplayName = clientBlock?.labels?.singular\n ? getTranslation(clientBlock?.labels?.singular, i18n)\n : clientBlock?.slug\n\n return (\n <FieldsDrawer\n data={blockFields}\n drawerSlug={drawerSlug}\n drawerTitle={t(`lexical:blocks:inlineBlocks:${blockFields?.id ? 'edit' : 'create'}`, {\n label: blockDisplayName ?? t('lexical:blocks:inlineBlocks:label'),\n })}\n featureKey=\"blocks\"\n fieldMapOverride={clientBlock?.fields}\n handleDrawerSubmit={(_fields, data) => {\n if (!data) {\n return\n }\n\n data.blockType = blockType\n\n editor.dispatchCommand(INSERT_INLINE_BLOCK_COMMAND, data)\n }}\n schemaPath={schemaPath}\n schemaPathSuffix={`lexical_inline_blocks.${blockFields?.blockType}.fields`}\n />\n )\n}\n", "'use client'\nimport type { BaseSelection, LexicalEditor } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $createParagraphNode, $createTextNode, $getRoot } from 'lexical'\nimport * as React from 'react'\nimport { type JSX, useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react'\n\nimport type { PluginComponent } from '../../../../typesClient.js'\n\nimport { IS_APPLE } from '../../../../../lexical/utils/environment.js'\nimport './index.scss'\n\nconst copy = (text: null | string) => {\n const textArea = document.createElement('textarea')\n textArea.value = text || ''\n textArea.style.position = 'absolute'\n textArea.style.opacity = '0'\n document.body?.appendChild(textArea)\n textArea.focus()\n textArea.select()\n try {\n const result = document.execCommand('copy')\n // eslint-disable-next-line no-console\n console.log(result)\n } catch (error) {\n console.error(error)\n }\n document.body?.removeChild(textArea)\n}\n\nconst download = (filename: string, text: null | string) => {\n const a = document.createElement('a')\n a.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text || ''))\n a.setAttribute('download', filename)\n a.style.display = 'none'\n document.body?.appendChild(a)\n a.click()\n document.body?.removeChild(a)\n}\n\nconst formatStep = (step: Step) => {\n const formatOneStep = (name: string, value: Step['value']) => {\n switch (name) {\n case 'click': {\n return ` await page.mouse.click(${value.x}, ${value.y});`\n }\n case 'keydown': {\n return ` await page.keyboard.keydown('${value}');`\n }\n case 'keyup': {\n return ` await page.keyboard.keyup('${value}');`\n }\n case 'press': {\n return ` await page.keyboard.press('${value}');`\n }\n case 'selectAll': {\n return ` await selectAll(page);`\n }\n case 'snapshot': {\n return ` await assertHTMLSnapshot(page);\n await assertSelection(page, {\n anchorPath: [${value.anchorPath.toString()}],\n anchorOffset: ${value.anchorOffset},\n focusPath: [${value.focusPath.toString()}],\n focusOffset: ${value.focusOffset},\n });\n`\n }\n case 'type': {\n return ` await page.keyboard.type('${value}');`\n }\n default:\n return ``\n }\n }\n const formattedStep = formatOneStep(step.name, step.value)\n switch (step.count) {\n case 1:\n return formattedStep\n case 2:\n return [formattedStep, formattedStep].join(`\\n`)\n default:\n return ` await repeat(${step.count}, async () => {\n ${formattedStep}\n );`\n }\n}\n\nexport function isSelectAll(event: KeyboardEvent): boolean {\n return event.key.toLowerCase() === 'a' && (IS_APPLE ? event.metaKey : event.ctrlKey)\n}\n\n// stolen from LexicalSelection-test\nfunction sanitizeSelection(selection: Selection) {\n const { anchorNode, focusNode } = selection\n let { anchorOffset, focusOffset } = selection\n if (anchorOffset !== 0) {\n anchorOffset--\n }\n if (focusOffset !== 0) {\n focusOffset--\n }\n return { anchorNode, anchorOffset, focusNode, focusOffset }\n}\n\nfunction getPathFromNodeToEditor(node: Node, rootElement: HTMLElement | null) {\n let currentNode: Node | null | undefined = node\n const path: number[] = []\n while (currentNode !== rootElement) {\n if (currentNode !== null && currentNode !== undefined) {\n path.unshift(\n Array.from(currentNode?.parentNode?.childNodes ?? []).indexOf(currentNode as ChildNode),\n )\n }\n currentNode = currentNode?.parentNode\n }\n return path\n}\n\nconst keyPresses = new Set([\n 'ArrowDown',\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'Backspace',\n 'Delete',\n 'Enter',\n 'Escape',\n])\n\ntype Step = {\n count: number\n name: string\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n value: any\n}\n\ntype Steps = Step[]\n\nfunction useTestRecorder(editor: LexicalEditor): [JSX.Element, JSX.Element | null] {\n const [steps, setSteps] = useState<Steps>([])\n const [isRecording, setIsRecording] = useState(false)\n const [, setCurrentInnerHTML] = useState('')\n const [templatedTest, setTemplatedTest] = useState('')\n const previousSelectionRef = useRef<BaseSelection | null>(null)\n const skipNextSelectionChangeRef = useRef(false)\n const preRef = useRef<HTMLPreElement>(null)\n\n const getCurrentEditor = useCallback(() => {\n return editor\n }, [editor])\n\n const generateTestContent = useCallback(() => {\n const rootElement = editor.getRootElement()\n const browserSelection = window.getSelection()\n\n if (\n rootElement == null ||\n browserSelection == null ||\n browserSelection.anchorNode == null ||\n browserSelection.focusNode == null ||\n !rootElement.contains(browserSelection.anchorNode) ||\n !rootElement.contains(browserSelection.focusNode)\n ) {\n return null\n }\n\n return `\nimport {\n initializeE2E,\n assertHTMLSnapshot,\n assertSelection,\n repeat,\n} from '../utils';\nimport {selectAll} from '../keyboardShortcuts';\nimport { RangeSelection } from 'lexical';\nimport { NodeSelection } from 'lexical';\n\ndescribe('Test case', () => {\n initializeE2E((e2e) => {\n it('Should pass this test', async () => {\n const {page} = e2e;\n\n await page.focus('div[contenteditable=\"true\"]');\n${steps.map(formatStep).join(`\\n`)}\n });\n});\n `\n }, [editor, steps])\n\n // just a wrapper around inserting new actions so that we can\n // coalesce some actions like insertText/moveNativeSelection\n const pushStep = useCallback(\n (name: string, value: Step['value']) => {\n setSteps((currentSteps) => {\n // trying to group steps\n const currentIndex = steps.length - 1\n const lastStep = steps[currentIndex]\n if (lastStep) {\n if (lastStep.name === name) {\n if (name === 'type') {\n // for typing events we just append the text\n return [\n ...steps.slice(0, currentIndex),\n { ...lastStep, value: lastStep.value + value },\n ]\n } else {\n // for other events we bump the counter if their values are the same\n if (lastStep.value === value) {\n return [...steps.slice(0, currentIndex), { ...lastStep, count: lastStep.count + 1 }]\n }\n }\n }\n }\n // could not group, just append a new one\n return [...currentSteps, { name, count: 1, value }]\n })\n },\n [steps, setSteps],\n )\n\n useLayoutEffect(() => {\n const onKeyDown = (event: KeyboardEvent) => {\n if (!isRecording) {\n return\n }\n const key = event.key\n if (isSelectAll(event)) {\n pushStep('selectAll', '')\n } else if (keyPresses.has(key)) {\n pushStep('press', event.key)\n } else if ([...key].length > 1) {\n pushStep('keydown', event.key)\n } else {\n pushStep('type', event.key)\n }\n }\n\n const onKeyUp = (event: KeyboardEvent) => {\n if (!isRecording) {\n return\n }\n const key = event.key\n if (!keyPresses.has(key) && [...key].length > 1) {\n pushStep('keyup', event.key)\n }\n }\n\n return editor.registerRootListener(\n (rootElement: HTMLElement | null, prevRootElement: HTMLElement | null) => {\n if (prevRootElement !== null) {\n prevRootElement.removeEventListener('keydown', onKeyDown)\n prevRootElement.removeEventListener('keyup', onKeyUp)\n }\n if (rootElement !== null) {\n rootElement.addEventListener('keydown', onKeyDown)\n rootElement.addEventListener('keyup', onKeyUp)\n }\n },\n )\n }, [editor, isRecording, pushStep])\n\n useLayoutEffect(() => {\n if (preRef.current) {\n preRef.current.scrollTo(0, preRef.current.scrollHeight)\n }\n }, [generateTestContent])\n\n useEffect(() => {\n if (steps) {\n const testContent = generateTestContent()\n if (testContent !== null) {\n setTemplatedTest(testContent)\n }\n if (preRef.current) {\n preRef.current.scrollTo(0, preRef.current.scrollHeight)\n }\n }\n }, [generateTestContent, steps])\n\n useEffect(() => {\n const removeUpdateListener = editor.registerUpdateListener(\n ({ dirtyElements, dirtyLeaves, editorState }) => {\n if (!isRecording) {\n return\n }\n const currentSelection = editorState._selection\n const previousSelection = previousSelectionRef.current\n const skipNextSelectionChange = skipNextSelectionChangeRef.current\n if (previousSelection !== currentSelection) {\n if (dirtyLeaves.size === 0 && dirtyElements.size === 0 && !skipNextSelectionChange) {\n const browserSelection = window.getSelection()\n if (\n browserSelection &&\n (browserSelection.anchorNode == null || browserSelection.focusNode == null)\n ) {\n return\n }\n }\n previousSelectionRef.current = currentSelection\n }\n skipNextSelectionChangeRef.current = false\n const testContent = generateTestContent()\n if (testContent !== null) {\n setTemplatedTest(testContent)\n }\n },\n )\n return removeUpdateListener\n }, [editor, generateTestContent, isRecording, pushStep])\n\n // save innerHTML\n useEffect(() => {\n if (!isRecording) {\n return\n }\n const removeUpdateListener = editor.registerUpdateListener(() => {\n const rootElement = editor.getRootElement()\n if (rootElement !== null) {\n setCurrentInnerHTML(rootElement?.innerHTML)\n }\n })\n return removeUpdateListener\n }, [editor, isRecording])\n\n // clear editor and start recording\n const toggleEditorSelection = useCallback(\n (currentEditor: LexicalEditor) => {\n if (!isRecording) {\n currentEditor.update(() => {\n const root = $getRoot()\n root.clear()\n const text = $createTextNode()\n root.append($createParagraphNode().append(text))\n text.select()\n })\n setSteps([])\n }\n setIsRecording((currentIsRecording) => !currentIsRecording)\n },\n [isRecording],\n )\n\n const onSnapshotClick = useCallback(() => {\n if (!isRecording) {\n return\n }\n const browserSelection = window.getSelection()\n if (\n browserSelection === null ||\n browserSelection.anchorNode == null ||\n browserSelection.focusNode == null\n ) {\n return\n }\n const { anchorNode, anchorOffset, focusNode, focusOffset } = sanitizeSelection(browserSelection)\n const rootElement = getCurrentEditor().getRootElement()\n let anchorPath\n if (anchorNode !== null) {\n anchorPath = getPathFromNodeToEditor(anchorNode, rootElement)\n }\n let focusPath\n if (focusNode !== null) {\n focusPath = getPathFromNodeToEditor(focusNode, rootElement)\n }\n pushStep('snapshot', {\n anchorNode,\n anchorOffset,\n anchorPath,\n focusNode,\n focusOffset,\n focusPath,\n })\n }, [pushStep, isRecording, getCurrentEditor])\n\n const onCopyClick = useCallback(() => {\n copy(generateTestContent())\n }, [generateTestContent])\n\n const onDownloadClick = useCallback(() => {\n download('test.js', generateTestContent())\n }, [generateTestContent])\n\n const button = (\n <button\n className={`editor-dev-button ${isRecording ? 'active' : ''}`}\n id=\"test-recorder-button\"\n onClick={(e) => {\n toggleEditorSelection(getCurrentEditor())\n e.preventDefault()\n }}\n title={isRecording ? 'Disable test recorder' : 'Enable test recorder'}\n type=\"button\"\n >\n {isRecording ? 'Disable test recorder' : 'Enable test recorder'}\n </button>\n )\n const output = isRecording ? (\n <div className=\"test-recorder-output\">\n <div className=\"test-recorder-toolbar\">\n <button\n className=\"test-recorder-button\"\n id=\"test-recorder-button-snapshot\"\n onClick={(e) => {\n onSnapshotClick()\n e.preventDefault()\n }}\n title=\"Insert snapshot\"\n type=\"button\"\n >\n Insert Snapshot\n </button>\n <button\n className=\"test-recorder-button\"\n id=\"test-recorder-button-copy\"\n onClick={(e) => {\n onCopyClick()\n e.preventDefault()\n }}\n title=\"Copy to clipboard\"\n type=\"button\"\n >\n Copy\n </button>\n <button\n className=\"test-recorder-button\"\n id=\"test-recorder-button-download\"\n onClick={(e) => {\n onDownloadClick()\n e.preventDefault()\n }}\n title=\"Download as a file\"\n type=\"button\"\n >\n Download\n </button>\n </div>\n <pre id=\"test-recorder\" ref={preRef}>\n {templatedTest}\n </pre>\n </div>\n ) : null\n\n return [button, output]\n}\nexport const TestRecorderPlugin: PluginComponent<undefined> = () => {\n const [editor] = useLexicalComposerContext()\n const [testRecorderButton, testRecorderOutput] = useTestRecorder(editor)\n\n return (\n <React.Fragment>\n <p>HI</p>\n {testRecorderButton}\n {testRecorderOutput}\n <p>DONE</p>\n </React.Fragment>\n )\n}\n", "'use client'\nimport { CAN_USE_DOM } from './canUseDOM.js'\n\ndeclare global {\n interface Document {\n documentMode?: unknown\n }\n\n interface Window {\n MSStream?: unknown\n }\n}\n\nconst documentMode = CAN_USE_DOM && 'documentMode' in document ? document.documentMode : null\n\nexport const IS_APPLE: boolean = CAN_USE_DOM && /Mac|iPod|iPhone|iPad/.test(navigator.platform)\n\nexport const IS_FIREFOX: boolean =\n CAN_USE_DOM && /^(?!.*Seamonkey)(?=.*Firefox).*/i.test(navigator.userAgent)\n\nexport const CAN_USE_BEFORE_INPUT: boolean =\n CAN_USE_DOM && 'InputEvent' in window && !documentMode\n ? 'getTargetRanges' in new window.InputEvent('input')\n : false\n\nexport const IS_SAFARI: boolean = CAN_USE_DOM && /Version\\/[\\d.].*Safari/.test(navigator.userAgent)\n\nexport const IS_IOS: boolean =\n CAN_USE_DOM && /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream\n\nexport const IS_ANDROID: boolean = CAN_USE_DOM && /Android/.test(navigator.userAgent)\n\nexport const IS_WINDOWS: boolean = CAN_USE_DOM && /Win/.test(navigator.platform)\nexport const IS_CHROME: boolean = CAN_USE_DOM && /^(?=.*Chrome).*/i.test(navigator.userAgent)\n// export const canUseTextInputEvent: boolean = CAN_USE_DOM && 'TextEvent' in window && !documentMode;\n\nexport const IS_APPLE_WEBKIT =\n CAN_USE_DOM && /AppleWebKit\\/[\\d.]+/.test(navigator.userAgent) && !IS_CHROME\n", "'use client'\n\nimport { createClientFeature } from '../../../../utilities/createClientFeature.js'\nimport { TestRecorderPlugin } from './plugin/index.js'\n\nexport const TestRecorderFeatureClient = createClientFeature({\n plugins: [\n {\n Component: TestRecorderPlugin,\n position: 'bottom',\n },\n ],\n})\n", "'use client'\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { TreeView } from '@lexical/react/LexicalTreeView.js'\nimport * as React from 'react'\n\nimport type { PluginComponent } from '../../../../typesClient.js'\n\nimport './index.scss'\n\nexport const TreeViewPlugin: PluginComponent<undefined> = () => {\n const [editor] = useLexicalComposerContext()\n return (\n <TreeView\n editor={editor}\n timeTravelButtonClassName=\"debug-timetravel-button\"\n timeTravelPanelButtonClassName=\"debug-timetravel-panel-button\"\n timeTravelPanelClassName=\"debug-timetravel-panel\"\n timeTravelPanelSliderClassName=\"debug-timetravel-panel-slider\"\n treeTypeButtonClassName=\"debug-treetype-button\"\n viewClassName=\"tree-view-output\"\n />\n )\n}\n", "'use client'\n\nimport { createClientFeature } from '../../../../utilities/createClientFeature.js'\nimport { TreeViewPlugin } from './plugin/index.js'\n\nexport const TreeViewFeatureClient = createClientFeature({\n plugins: [\n {\n Component: TreeViewPlugin,\n position: 'bottom',\n },\n ],\n})\n", "'use client'\nimport { $isTableSelection } from '@lexical/table'\nimport { $isRangeSelection, FORMAT_TEXT_COMMAND } from 'lexical'\n\nimport type { ToolbarGroup } from '../../toolbars/types.js'\n\nimport { BoldIcon } from '../../../lexical/ui/icons/Bold/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { toolbarFormatGroupWithItems } from '../shared/toolbarFormatGroup.js'\nimport {\n BOLD_ITALIC_STAR,\n BOLD_ITALIC_UNDERSCORE,\n BOLD_STAR,\n BOLD_UNDERSCORE,\n} from './markdownTransformers.js'\n\nconst toolbarGroups: ToolbarGroup[] = [\n toolbarFormatGroupWithItems([\n {\n ChildComponent: BoldIcon,\n isActive: ({ selection }) => {\n if ($isRangeSelection(selection) || $isTableSelection(selection)) {\n return selection.hasFormat('bold')\n }\n return false\n },\n key: 'bold',\n onSelect: ({ editor }) => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'bold')\n },\n order: 1,\n },\n ]),\n]\n\nexport const BoldFeatureClient = createClientFeature(({ featureProviderMap }) => {\n const markdownTransformers = [BOLD_STAR, BOLD_UNDERSCORE]\n if (featureProviderMap.get('italic')) {\n markdownTransformers.push(BOLD_ITALIC_UNDERSCORE, BOLD_ITALIC_STAR)\n }\n\n return {\n markdownTransformers,\n toolbarFixed: {\n groups: toolbarGroups,\n },\n toolbarInline: {\n groups: toolbarGroups,\n },\n }\n})\n", "'use client'\nimport React from 'react'\n\nexport const BoldIcon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"currentColor\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M10.6772 15H6.27017V5.718H10.4172C12.6792 5.718 13.8492 6.602 13.8492 8.292C13.8492 9.098 13.1992 9.982 12.4712 10.216C13.3812 10.476 14.1742 11.256 14.1742 12.322C14.1742 14.09 12.9002 15 10.6772 15ZM8.46717 9.501H10.3262C11.3012 9.501 11.7042 9.046 11.7042 8.409C11.7042 7.72 11.2362 7.317 10.3392 7.317H8.46717V9.501ZM8.46717 11.061V13.401H10.4822C11.4702 13.401 11.9642 12.959 11.9642 12.218C11.9642 11.49 11.4702 11.061 10.4822 11.061H8.46717Z\"\n fill=\"currentColor\"\n />\n </svg>\n)\n", "'use client'\nimport type { ToolbarGroup, ToolbarGroupItem } from '../../toolbars/types.js'\n\nexport const toolbarFormatGroupWithItems = (items: ToolbarGroupItem[]): ToolbarGroup => {\n return {\n type: 'buttons',\n items,\n key: 'format',\n order: 40,\n }\n}\n", "import type { TextFormatTransformer } from '@lexical/markdown'\n\nexport const BOLD_ITALIC_STAR: TextFormatTransformer = {\n type: 'text-format',\n format: ['bold', 'italic'],\n tag: '***',\n}\n\nexport const BOLD_ITALIC_UNDERSCORE: TextFormatTransformer = {\n type: 'text-format',\n format: ['bold', 'italic'],\n intraword: false,\n tag: '___',\n}\n\nexport const BOLD_STAR: TextFormatTransformer = {\n type: 'text-format',\n format: ['bold'],\n tag: '**',\n}\n\nexport const BOLD_UNDERSCORE: TextFormatTransformer = {\n type: 'text-format',\n format: ['bold'],\n intraword: false,\n tag: '__',\n}\n", "'use client'\n\nimport { $isTableSelection } from '@lexical/table'\nimport { $isRangeSelection, FORMAT_TEXT_COMMAND } from 'lexical'\n\nimport type { ToolbarGroup } from '../../toolbars/types.js'\n\nimport { CodeIcon } from '../../../lexical/ui/icons/Code/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { toolbarFormatGroupWithItems } from '../shared/toolbarFormatGroup.js'\nimport { INLINE_CODE } from './markdownTransformers.js'\n\nconst toolbarGroups: ToolbarGroup[] = [\n toolbarFormatGroupWithItems([\n {\n ChildComponent: CodeIcon,\n isActive: ({ selection }) => {\n if ($isRangeSelection(selection) || $isTableSelection(selection)) {\n return selection.hasFormat('code')\n }\n return false\n },\n key: 'inlineCode',\n onSelect: ({ editor }) => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'code')\n },\n order: 7,\n },\n ]),\n]\n\nexport const InlineCodeFeatureClient = createClientFeature({\n markdownTransformers: [INLINE_CODE],\n toolbarFixed: {\n groups: toolbarGroups,\n },\n toolbarInline: {\n groups: toolbarGroups,\n },\n})\n", "'use client'\nimport React from 'react'\n\nexport const CodeIcon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"none\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M7.76465 6L3.76465 10L7.76465 14\" stroke=\"currentColor\" />\n <path d=\"M12.2354 6L16.2354 10L12.2354 14\" stroke=\"currentColor\" />\n </svg>\n)\n", "import type { TextFormatTransformer } from '@lexical/markdown'\n\nexport const INLINE_CODE: TextFormatTransformer = {\n type: 'text-format',\n format: ['code'],\n tag: '`',\n}\n", "'use client'\n\nimport { $isTableSelection } from '@lexical/table'\nimport { $isRangeSelection, FORMAT_TEXT_COMMAND } from 'lexical'\n\nimport type { ToolbarGroup } from '../../toolbars/types.js'\n\nimport { ItalicIcon } from '../../../lexical/ui/icons/Italic/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { toolbarFormatGroupWithItems } from '../shared/toolbarFormatGroup.js'\nimport { ITALIC_STAR, ITALIC_UNDERSCORE } from './markdownTransformers.js'\n\nconst toolbarGroups: ToolbarGroup[] = [\n toolbarFormatGroupWithItems([\n {\n ChildComponent: ItalicIcon,\n isActive: ({ selection }) => {\n if ($isRangeSelection(selection) || $isTableSelection(selection)) {\n return selection.hasFormat('italic')\n }\n return false\n },\n key: 'italic',\n onSelect: ({ editor }) => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'italic')\n },\n order: 2,\n },\n ]),\n]\n\nexport const ItalicFeatureClient = createClientFeature({\n markdownTransformers: [ITALIC_STAR, ITALIC_UNDERSCORE],\n toolbarFixed: {\n groups: toolbarGroups,\n },\n toolbarInline: {\n groups: toolbarGroups,\n },\n})\n", "'use client'\nimport React from 'react'\n\nexport const ItalicIcon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"currentColor\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M11.311 14.2969L11.0327 15H6.18408L6.4624 14.2969C7.54639 14.2969 7.70752 14.209 7.83936 13.8721L10.8423 6.45996C10.8716 6.38672 10.8862 6.32812 10.8862 6.26953C10.8862 6.09375 10.6519 6.03516 9.80225 6.03516L10.0952 5.33203H14.9438L14.6509 6.03516C13.5669 6.03516 13.4204 6.12305 13.2886 6.45996L10.2856 13.8721C10.2563 13.9453 10.2271 14.0039 10.2271 14.0625C10.2271 14.2383 10.4614 14.2969 11.311 14.2969Z\"\n fill=\"currentColor\"\n />\n </svg>\n)\n", "import type { TextFormatTransformer } from '@lexical/markdown'\n\nexport const ITALIC_STAR: TextFormatTransformer = {\n type: 'text-format',\n format: ['italic'],\n tag: '*',\n}\n\nexport const ITALIC_UNDERSCORE: TextFormatTransformer = {\n type: 'text-format',\n format: ['italic'],\n intraword: false,\n tag: '_',\n}\n", "'use client'\n\nimport { $isTableSelection } from '@lexical/table'\nimport { $isRangeSelection, FORMAT_TEXT_COMMAND } from 'lexical'\n\nimport { StrikethroughIcon } from '../../../lexical/ui/icons/Strikethrough/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { toolbarFormatGroupWithItems } from '../shared/toolbarFormatGroup.js'\nimport { STRIKETHROUGH } from './markdownTransformers.js'\n\nconst toolbarGroups = [\n toolbarFormatGroupWithItems([\n {\n ChildComponent: StrikethroughIcon,\n isActive: ({ selection }) => {\n if ($isRangeSelection(selection) || $isTableSelection(selection)) {\n return selection.hasFormat('strikethrough')\n }\n return false\n },\n key: 'strikethrough',\n onSelect: ({ editor }) => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'strikethrough')\n },\n order: 4,\n },\n ]),\n]\n\nexport const StrikethroughFeatureClient = createClientFeature({\n markdownTransformers: [STRIKETHROUGH],\n toolbarFixed: {\n groups: toolbarGroups,\n },\n toolbarInline: {\n groups: toolbarGroups,\n },\n})\n", "'use client'\nimport React from 'react'\n\nexport const StrikethroughIcon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"currentColor\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.50756 12.76H7.42756C7.56256 14.215 8.82256 14.71 10.1576 14.71C11.4326 14.71 12.4226 14.14 12.4226 13.06C12.4226 12.28 11.9576 11.845 10.6676 11.605L8.70256 11.245C7.12756 10.96 5.85256 10.21 5.85256 8.335C5.85256 6.43 7.53256 5.11 9.87256 5.11C12.4226 5.11 13.9526 6.22 14.1626 8.23H12.2876C12.1526 7.18 11.2226 6.595 9.88756 6.595C8.59756 6.595 7.78756 7.27 7.78756 8.215C7.78756 9.1 8.34256 9.385 9.49756 9.61L11.5676 10.015C13.3226 10.345 14.3726 11.215 14.3726 12.94C14.3726 14.89 12.5876 16.18 10.2176 16.18C7.66756 16.18 5.70256 15.115 5.50756 12.76Z\"\n fill=\"currentColor\"\n />\n <path d=\"M4.99756 11.44H15.0026V12.19H4.99756V11.44Z\" fill=\"currentColor\" />\n </svg>\n)\n", "import type { TextFormatTransformer } from '@lexical/markdown'\n\nexport const STRIKETHROUGH: TextFormatTransformer = {\n type: 'text-format',\n format: ['strikethrough'],\n tag: '~~',\n}\n", "'use client'\n\nimport { $isTableSelection } from '@lexical/table'\nimport { $isRangeSelection, FORMAT_TEXT_COMMAND } from 'lexical'\n\nimport type { ToolbarGroup } from '../../toolbars/types.js'\n\nimport { SubscriptIcon } from '../../../lexical/ui/icons/Subscript/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { toolbarFormatGroupWithItems } from '../shared/toolbarFormatGroup.js'\n\nconst toolbarGroups: ToolbarGroup[] = [\n toolbarFormatGroupWithItems([\n {\n ChildComponent: SubscriptIcon,\n isActive: ({ selection }) => {\n if ($isRangeSelection(selection) || $isTableSelection(selection)) {\n return selection.hasFormat('subscript')\n }\n return false\n },\n key: 'subscript',\n onSelect: ({ editor }) => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'subscript')\n },\n order: 5,\n },\n ]),\n]\n\nexport const SubscriptFeatureClient = createClientFeature({\n toolbarFixed: {\n groups: toolbarGroups,\n },\n toolbarInline: {\n groups: toolbarGroups,\n },\n})\n", "'use client'\nimport React from 'react'\n\nexport const SubscriptIcon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"currentColor\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M10.167 15L7.45002 11.36L4.73302 15H2.91302L6.55302 10.177L3.23802 5.718H5.20102L7.54102 8.89L9.89402 5.718H11.714L8.43802 10.06L12.13 15H10.167ZM16.7768 13.258C16.7768 14.155 16.1398 14.532 15.2038 15C14.5538 15.325 14.2808 15.546 14.2418 15.78H16.7898V16.82H12.7208V16.339C12.7208 15.286 13.5918 14.675 14.3588 14.233C15.0868 13.83 15.4378 13.635 15.4378 13.232C15.4378 12.894 15.2038 12.686 14.8268 12.686C14.3848 12.686 14.1248 13.024 14.1118 13.427H12.7468C12.8248 12.426 13.5528 11.633 14.8398 11.633C15.9448 11.633 16.7768 12.257 16.7768 13.258Z\"\n fill=\"currentColor\"\n />\n </svg>\n)\n", "'use client'\n\nimport { $isTableSelection } from '@lexical/table'\nimport { $isRangeSelection, FORMAT_TEXT_COMMAND } from 'lexical'\n\nimport type { ToolbarGroup } from '../../toolbars/types.js'\n\nimport { SuperscriptIcon } from '../../../lexical/ui/icons/Superscript/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { toolbarFormatGroupWithItems } from '../shared/toolbarFormatGroup.js'\n\nconst toolbarGroups: ToolbarGroup[] = [\n toolbarFormatGroupWithItems([\n {\n ChildComponent: SuperscriptIcon,\n isActive: ({ selection }) => {\n if ($isRangeSelection(selection) || $isTableSelection(selection)) {\n return selection.hasFormat('superscript')\n }\n return false\n },\n key: 'superscript',\n onSelect: ({ editor }) => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'superscript')\n },\n order: 6,\n },\n ]),\n]\n\nexport const SuperscriptFeatureClient = createClientFeature({\n toolbarFixed: {\n groups: toolbarGroups,\n },\n toolbarInline: {\n groups: toolbarGroups,\n },\n})\n", "'use client'\nimport React from 'react'\n\nexport const SuperscriptIcon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"currentColor\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M10.167 15L7.45002 11.36L4.73302 15H2.91302L6.55302 10.177L3.23802 5.718H5.20102L7.54102 8.89L9.89402 5.718H11.714L8.43802 10.06L12.13 15H10.167ZM16.7768 7.252C16.7768 8.149 16.1398 8.526 15.2038 8.994C14.5538 9.319 14.2808 9.54 14.2418 9.774H16.7898V10.814H12.7208V10.333C12.7208 9.28 13.5918 8.669 14.3588 8.227C15.0868 7.824 15.4378 7.629 15.4378 7.226C15.4378 6.888 15.2038 6.68 14.8268 6.68C14.3848 6.68 14.1248 7.018 14.1118 7.421H12.7468C12.8248 6.42 13.5528 5.627 14.8398 5.627C15.9448 5.627 16.7768 6.251 16.7768 7.252Z\"\n fill=\"currentColor\"\n />\n </svg>\n)\n", "'use client'\n\nimport { $isTableSelection } from '@lexical/table'\nimport { $isRangeSelection, FORMAT_TEXT_COMMAND } from 'lexical'\n\nimport type { ToolbarGroup } from '../../toolbars/types.js'\n\nimport { UnderlineIcon } from '../../../lexical/ui/icons/Underline/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { toolbarFormatGroupWithItems } from '../shared/toolbarFormatGroup.js'\n\nconst toolbarGroups: ToolbarGroup[] = [\n toolbarFormatGroupWithItems([\n {\n ChildComponent: UnderlineIcon,\n isActive: ({ selection }) => {\n if ($isRangeSelection(selection) || $isTableSelection(selection)) {\n return selection.hasFormat('underline')\n }\n return false\n },\n key: 'underline',\n onSelect: ({ editor }) => {\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, 'underline')\n },\n order: 3,\n },\n ]),\n]\n\nexport const UnderlineFeatureClient = createClientFeature({\n toolbarFixed: {\n groups: toolbarGroups,\n },\n toolbarInline: {\n groups: toolbarGroups,\n },\n})\n", "'use client'\nimport React from 'react'\n\nexport const UnderlineIcon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"currentColor\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M13.9656 11.256C13.9656 13.791 12.5096 15.156 10.0006 15.156C7.50461 15.156 6.03561 13.791 6.03561 11.23V5.718H7.76461V11.243C7.76461 12.868 8.50561 13.778 10.0006 13.778C11.4956 13.778 12.2496 12.868 12.2496 11.243V5.718H13.9656V11.256Z\"\n fill=\"currentColor\"\n />\n <path d=\"M5.09961 16.3H14.9016V16.95H5.09961V16.3Z\" fill=\"currentColor\" />\n </svg>\n)\n", "'use client'\n\nimport type { HeadingTagType } from '@lexical/rich-text'\n\nimport { $createHeadingNode, $isHeadingNode, HeadingNode } from '@lexical/rich-text'\nimport { $setBlocksType } from '@lexical/selection'\nimport { $getSelection, $isRangeSelection } from 'lexical'\n\nimport type { ToolbarGroup } from '../../toolbars/types.js'\nimport type { HeadingFeatureProps } from '../server/index.js'\n\nimport { H1Icon } from '../../../lexical/ui/icons/H1/index.js'\nimport { H2Icon } from '../../../lexical/ui/icons/H2/index.js'\nimport { H3Icon } from '../../../lexical/ui/icons/H3/index.js'\nimport { H4Icon } from '../../../lexical/ui/icons/H4/index.js'\nimport { H5Icon } from '../../../lexical/ui/icons/H5/index.js'\nimport { H6Icon } from '../../../lexical/ui/icons/H6/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { slashMenuBasicGroupWithItems } from '../../shared/slashMenu/basicGroup.js'\nimport { toolbarTextDropdownGroupWithItems } from '../../shared/toolbar/textDropdownGroup.js'\nimport { MarkdownTransformer } from '../markdownTransformer.js'\n\nconst $setHeading = (headingSize: HeadingTagType) => {\n const selection = $getSelection()\n $setBlocksType(selection, () => $createHeadingNode(headingSize))\n}\n\nconst iconImports = {\n h1: H1Icon,\n h2: H2Icon,\n h3: H3Icon,\n h4: H4Icon,\n h5: H5Icon,\n h6: H6Icon,\n}\n\nexport const HeadingFeatureClient = createClientFeature<HeadingFeatureProps>(({ props }) => {\n const { enabledHeadingSizes = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] } = props\n\n const toolbarGroups: ToolbarGroup[] = [\n toolbarTextDropdownGroupWithItems(\n enabledHeadingSizes.map((headingSize, i) => {\n return {\n ChildComponent: iconImports[headingSize],\n isActive: ({ selection }) => {\n if (!$isRangeSelection(selection)) {\n return false\n }\n for (const node of selection.getNodes()) {\n if ($isHeadingNode(node) && node.getTag() === headingSize) {\n continue\n }\n\n const parent = node.getParent()\n if ($isHeadingNode(parent) && parent.getTag() === headingSize) {\n continue\n }\n\n return false\n }\n return true\n },\n key: headingSize,\n label: ({ i18n }) => {\n return i18n.t('lexical:heading:label', { headingLevel: headingSize.charAt(1) })\n },\n onSelect: ({ editor }) => {\n editor.update(() => {\n $setHeading(headingSize)\n })\n },\n order: i + 2,\n }\n }),\n ),\n ]\n\n return {\n markdownTransformers: [MarkdownTransformer(enabledHeadingSizes)],\n nodes: [HeadingNode],\n sanitizedClientFeatureProps: props,\n slashMenu: {\n groups: enabledHeadingSizes?.length\n ? [\n slashMenuBasicGroupWithItems(\n enabledHeadingSizes.map((headingSize) => {\n return {\n Icon: iconImports[headingSize],\n key: `heading-${headingSize.charAt(1)}`,\n keywords: ['heading', headingSize],\n label: ({ i18n }) => {\n return i18n.t('lexical:heading:label', {\n headingLevel: headingSize.charAt(1),\n })\n },\n onSelect: ({ editor }) => {\n editor.update(() => {\n $setHeading(headingSize)\n })\n },\n }\n }),\n ),\n ]\n : [],\n },\n toolbarFixed: {\n groups: enabledHeadingSizes?.length ? toolbarGroups : [],\n },\n toolbarInline: {\n groups: enabledHeadingSizes?.length ? toolbarGroups : [],\n },\n }\n})\n", "'use client'\nimport React from 'react'\n\nexport const H1Icon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"none\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.639 13.5V7.074H6.196V9.648H9.076V7.074H10.642V13.5H9.076V10.836H6.196V13.5H4.639ZM11.5656 9.045V8.019C12.6636 8.019 13.1316 7.731 13.2846 7.065H14.4006V13.5H12.8436V9.045H11.5656Z\"\n fill=\"currentColor\"\n />\n </svg>\n)\n", "'use client'\nimport React from 'react'\n\nexport const H2Icon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"none\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.139 13.5V7.074H5.696V9.648H8.576V7.074H10.142V13.5H8.576V10.836H5.696V13.5H4.139ZM15.9796 8.973C15.9796 10.116 15.1696 10.656 14.0356 11.232C13.2256 11.646 12.8206 11.943 12.7846 12.294H15.9886V13.5H11.0566V12.951C11.0566 11.601 12.1636 10.845 13.1176 10.287C14.0356 9.756 14.5126 9.486 14.5126 8.946C14.5126 8.46 14.2156 8.145 13.6306 8.145C13.0186 8.145 12.6586 8.613 12.6226 9.198H11.1196C11.2186 7.947 12.1006 6.966 13.6396 6.966C15.0346 6.966 15.9796 7.785 15.9796 8.973Z\"\n fill=\"currentColor\"\n />\n </svg>\n)\n", "'use client'\nimport React from 'react'\n\nexport const H3Icon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"none\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M4.139 13.5V7.074H5.696V9.648H8.576V7.074H10.142V13.5H8.576V10.836H5.696V13.5H4.139ZM16.1146 11.745C16.1146 12.744 15.2236 13.608 13.6126 13.608C12.0736 13.608 11.0926 12.762 10.9846 11.547H12.4696C12.5146 12.114 13.0006 12.456 13.6126 12.456C14.2876 12.456 14.6746 12.132 14.6746 11.619C14.6746 11.061 14.2426 10.836 13.6216 10.836H12.9826V9.738H13.6036C14.1526 9.738 14.5486 9.486 14.5486 8.937C14.5486 8.46 14.2156 8.127 13.6486 8.127C13.0366 8.127 12.6586 8.514 12.6226 9.045H11.1916C11.2726 7.929 12.1276 6.966 13.6666 6.966C15.1876 6.966 15.9706 7.848 15.9706 8.865C15.9706 9.603 15.5026 10.143 14.8186 10.269C15.6196 10.404 16.1146 10.971 16.1146 11.745Z\"\n fill=\"currentColor\"\n />\n </svg>\n)\n", "'use client'\nimport React from 'react'\n\nexport const H4Icon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"none\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M3.639 13.5V7.074H5.196V9.648H8.076V7.074H9.642V13.5H8.076V10.836H5.196V13.5H3.639ZM15.1736 7.074V10.854H16.3706V12.033H15.1736V13.5H13.6796V12.033H10.5116V10.845L13.4996 7.074H15.1736ZM13.6796 8.46L11.8256 10.854H13.6796V8.46Z\"\n fill=\"currentColor\"\n />\n </svg>\n)\n", "'use client'\nimport React from 'react'\n\nexport const H5Icon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"none\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M3.639 13.5V7.074H5.196V9.648H8.076V7.074H9.642V13.5H8.076V10.836H5.196V13.5H3.639ZM13.1576 10.269C12.6896 10.269 12.3746 10.494 12.2216 10.737H10.8176L11.1956 7.074H15.2546V8.28H12.3206L12.1856 9.549C12.4016 9.351 12.8516 9.126 13.4636 9.126C14.7866 9.126 15.6596 10.053 15.6596 11.358C15.6596 12.609 14.7326 13.608 13.1756 13.608C11.5826 13.608 10.6556 12.753 10.5566 11.511H12.1136C12.1586 12.06 12.5456 12.465 13.1576 12.465C13.8236 12.465 14.1746 11.97 14.1746 11.376C14.1746 10.764 13.8416 10.269 13.1576 10.269Z\"\n fill=\"currentColor\"\n />\n </svg>\n)\n", "'use client'\nimport React from 'react'\n\nexport const H6Icon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"none\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M3.639 13.5V7.074H5.196V9.648H8.076V7.074H9.642V13.5H8.076V10.836H5.196V13.5H3.639ZM13.3646 8.127C12.5456 8.127 12.0416 8.937 12.0416 9.999C12.3296 9.54 12.8246 9.207 13.5536 9.207C14.8586 9.207 15.8036 10.134 15.8036 11.376C15.8036 12.645 14.8226 13.608 13.3196 13.608C11.7266 13.608 10.6196 12.393 10.6196 10.395C10.6196 8.316 11.7716 6.966 13.4186 6.966C14.7056 6.966 15.5786 7.749 15.7316 8.829H14.3186C14.2016 8.415 13.9226 8.127 13.3646 8.127ZM13.3106 12.51C13.9586 12.51 14.3816 12.042 14.3816 11.385C14.3816 10.737 13.9586 10.278 13.3106 10.278C12.6536 10.278 12.2126 10.737 12.2126 11.385C12.2126 12.042 12.6536 12.51 13.3106 12.51Z\"\n fill=\"currentColor\"\n />\n </svg>\n)\n", "import type { ElementTransformer } from '@lexical/markdown'\nimport type { HeadingTagType } from '@lexical/rich-text'\n\nimport { $createHeadingNode, $isHeadingNode, HeadingNode } from '@lexical/rich-text'\n\nimport { createBlockNode } from '../../lexical/utils/markdown/createBlockNode.js'\n\nexport const MarkdownTransformer: (enabledHeadingSizes: HeadingTagType[]) => ElementTransformer = (\n enabledHeadingSizes,\n) => {\n // Convert enabledHeadingSizes to a list of numbers (1 for h1, 2 for h2, etc.)\n const enabledSizes = enabledHeadingSizes.map((tag) => Number(tag.slice(1)))\n\n // Create a regex pattern that matches any of the enabled sizes\n const pattern = `^(${enabledSizes.map((size) => `#{${size}}`).join('|')})\\\\s`\n const regExp = new RegExp(pattern)\n\n return {\n type: 'element',\n dependencies: [HeadingNode],\n export: (node, exportChildren) => {\n if (!$isHeadingNode(node)) {\n return null\n }\n const level = Number(node.getTag().slice(1))\n return '#'.repeat(level) + ' ' + exportChildren(node)\n },\n regExp,\n replace: createBlockNode((match) => {\n const tag = ('h' + match[1].length) as HeadingTagType\n return $createHeadingNode(tag)\n }),\n }\n}\n", "import type { ElementTransformer } from '@lexical/markdown'\nimport type { ElementNode } from 'lexical'\n\nexport const createBlockNode = (\n createNode: (match: Array<string>) => ElementNode,\n): ElementTransformer['replace'] => {\n return (parentNode, children, match) => {\n const node = createNode(match)\n if (node) {\n node.append(...children)\n parentNode.replace(node)\n node.select(0, 0)\n }\n }\n}\n", "'use client'\n\nimport { $isNodeSelection } from 'lexical'\n\nimport { HorizontalRuleIcon } from '../../../lexical/ui/icons/HorizontalRule/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { slashMenuBasicGroupWithItems } from '../../shared/slashMenu/basicGroup.js'\nimport { toolbarAddDropdownGroupWithItems } from '../../shared/toolbar/addDropdownGroup.js'\nimport { INSERT_HORIZONTAL_RULE_COMMAND } from '../server/nodes/HorizontalRuleNode.js'\nimport { MarkdownTransformer } from './markdownTransformer.js'\nimport { $isHorizontalRuleNode, HorizontalRuleNode } from './nodes/HorizontalRuleNode.js'\nimport { HorizontalRulePlugin } from './plugin/index.js'\n\nexport const HorizontalRuleFeatureClient = createClientFeature({\n markdownTransformers: [MarkdownTransformer],\n nodes: [HorizontalRuleNode],\n plugins: [\n {\n Component: HorizontalRulePlugin,\n position: 'normal',\n },\n ],\n slashMenu: {\n groups: [\n slashMenuBasicGroupWithItems([\n {\n Icon: HorizontalRuleIcon,\n key: 'horizontalRule',\n keywords: ['hr', 'horizontal rule', 'line', 'separator'],\n label: ({ i18n }) => {\n return i18n.t('lexical:horizontalRule:label')\n },\n\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INSERT_HORIZONTAL_RULE_COMMAND, undefined)\n },\n },\n ]),\n ],\n },\n toolbarFixed: {\n groups: [\n toolbarAddDropdownGroupWithItems([\n {\n ChildComponent: HorizontalRuleIcon,\n isActive: ({ selection }) => {\n if (!$isNodeSelection(selection) || !selection.getNodes().length) {\n return false\n }\n\n const firstNode = selection.getNodes()[0]\n return $isHorizontalRuleNode(firstNode)\n },\n key: 'horizontalRule',\n label: ({ i18n }) => {\n return i18n.t('lexical:horizontalRule:label')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INSERT_HORIZONTAL_RULE_COMMAND, undefined)\n },\n },\n ]),\n ],\n },\n})\n", "'use client'\nimport React from 'react'\n\nexport const HorizontalRuleIcon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"none\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect fill=\"currentColor\" height=\"1\" width=\"12\" x=\"4\" y=\"9.5\" />\n </svg>\n)\n", "'use client'\nimport React from 'react'\n\nexport const AddIcon: React.FC = () => (\n <svg fill=\"none\" height=\"20\" viewBox=\"0 0 20 20\" width=\"20\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5 10h10\" stroke=\"currentColor\" />\n <path d=\"M10 15V5\" stroke=\"currentColor\" />\n </svg>\n)\n", "import type { ToolbarGroup, ToolbarGroupItem } from '../../toolbars/types.js'\n\nimport { AddIcon } from '../../../lexical/ui/icons/Add/index.js'\n\nexport const toolbarAddDropdownGroupWithItems = (items: ToolbarGroupItem[]): ToolbarGroup => {\n return {\n type: 'dropdown',\n ChildComponent: AddIcon,\n items,\n key: 'add',\n order: 10,\n }\n}\n", "import type { ElementTransformer } from '@lexical/markdown'\n\nimport {\n $createHorizontalRuleNode,\n $isHorizontalRuleNode,\n HorizontalRuleNode,\n} from './nodes/HorizontalRuleNode.js'\n\nexport const MarkdownTransformer: ElementTransformer = {\n type: 'element',\n dependencies: [HorizontalRuleNode],\n export: (node, exportChildren) => {\n if (!$isHorizontalRuleNode(node)) {\n return null\n }\n return '---'\n },\n // match ---\n regExp: /^---\\s*$/,\n replace: (parentNode) => {\n const node = $createHorizontalRuleNode()\n if (node) {\n parentNode.replace(node)\n }\n },\n}\n", "'use client'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $insertNodeToNearestRoot } from '@lexical/utils'\nimport { $getSelection, $isRangeSelection, COMMAND_PRIORITY_EDITOR } from 'lexical'\nimport { useEffect } from 'react'\n\nimport type { PluginComponent } from '../../../typesClient.js'\n\nimport { INSERT_HORIZONTAL_RULE_COMMAND } from '../../server/nodes/HorizontalRuleNode.js'\nimport { $createHorizontalRuleNode } from '../nodes/HorizontalRuleNode.js'\nimport './index.scss'\n\n/**\n * Registers the INSERT_HORIZONTAL_RULE_COMMAND lexical command and defines the behavior for when it is called.\n */\nexport const HorizontalRulePlugin: PluginComponent<undefined> = () => {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n return editor.registerCommand(\n INSERT_HORIZONTAL_RULE_COMMAND,\n (type) => {\n const selection = $getSelection()\n\n if (!$isRangeSelection(selection)) {\n return false\n }\n\n const focusNode = selection.focus.getNode()\n\n if (focusNode !== null) {\n const horizontalRuleNode = $createHorizontalRuleNode()\n $insertNodeToNearestRoot(horizontalRuleNode)\n }\n\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n )\n }, [editor])\n\n return null\n}\n", "'use client'\n\nimport { INDENT_CONTENT_COMMAND, OUTDENT_CONTENT_COMMAND } from 'lexical'\n\nimport type { ToolbarGroup } from '../../toolbars/types.js'\n\nimport { IndentDecreaseIcon } from '../../../lexical/ui/icons/IndentDecrease/index.js'\nimport { IndentIncreaseIcon } from '../../../lexical/ui/icons/IndentIncrease/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { toolbarIndentGroupWithItems } from './toolbarIndentGroup.js'\n\nconst toolbarGroups: ToolbarGroup[] = [\n toolbarIndentGroupWithItems([\n {\n ChildComponent: IndentDecreaseIcon,\n isActive: () => false,\n isEnabled: ({ selection }) => {\n if (!selection || !selection?.getNodes()?.length) {\n return false\n }\n for (const node of selection.getNodes()) {\n const parent = node.getParentOrThrow()\n // If at least one node is indented, this should be active\n if (\n ('__indent' in node && (node.__indent as number) > 0) ||\n ('__indent' in parent && parent.__indent > 0)\n ) {\n return true\n }\n }\n return false\n },\n key: 'indentDecrease',\n label: ({ i18n }) => {\n return i18n.t('lexical:indent:decreaseLabel')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(OUTDENT_CONTENT_COMMAND, undefined)\n },\n order: 1,\n },\n {\n ChildComponent: IndentIncreaseIcon,\n isActive: () => false,\n key: 'indentIncrease',\n label: ({ i18n }) => {\n return i18n.t('lexical:indent:increaseLabel')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INDENT_CONTENT_COMMAND, undefined)\n },\n order: 2,\n },\n ]),\n]\n\nexport const IndentFeatureClient = createClientFeature({\n toolbarFixed: {\n groups: toolbarGroups,\n },\n toolbarInline: {\n groups: toolbarGroups,\n },\n})\n", "'use client'\nimport React from 'react'\n\nexport const IndentDecreaseIcon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"none\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M2.5 5H10.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M2.5 10H10.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M2.5 15H17.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M12.25 7.25L17.25 3.75V10.75L12.25 7.25Z\" fill=\"currentColor\" />\n </svg>\n)\n", "'use client'\nimport React from 'react'\n\nexport const IndentIncreaseIcon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"none\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M17.5 5H9.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M17.5 10H9.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M17.5 15H2.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M7.75 7.25L2.75 3.75V10.75L7.75 7.25Z\" fill=\"currentColor\" />\n </svg>\n)\n", "'use client'\nimport type { ToolbarGroup, ToolbarGroupItem } from '../../toolbars/types.js'\n\nexport const toolbarIndentGroupWithItems = (items: ToolbarGroupItem[]): ToolbarGroup => {\n return {\n type: 'buttons',\n items,\n key: 'indent',\n order: 35,\n }\n}\n", "'use client'\n\nimport type { LexicalNode } from 'lexical'\n\nimport { $findMatchingParent } from '@lexical/utils'\nimport { $getSelection, $isRangeSelection } from 'lexical'\n\nimport type { ToolbarGroup } from '../../toolbars/types.js'\nimport type { LinkFields } from '../nodes/types.js'\nimport type { ExclusiveLinkCollectionsProps } from '../server/index.js'\n\nimport { LinkIcon } from '../../../lexical/ui/icons/Link/index.js'\nimport { getSelectedNode } from '../../../lexical/utils/getSelectedNode.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { toolbarFeatureButtonsGroupWithItems } from '../../shared/toolbar/featureButtonsGroup.js'\nimport { LinkMarkdownTransformer } from '../markdownTransformer.js'\nimport { AutoLinkNode } from '../nodes/AutoLinkNode.js'\nimport { $isLinkNode, LinkNode, TOGGLE_LINK_COMMAND } from '../nodes/LinkNode.js'\nimport { AutoLinkPlugin } from './plugins/autoLink/index.js'\nimport { ClickableLinkPlugin } from './plugins/clickableLink/index.js'\nimport { FloatingLinkEditorPlugin } from './plugins/floatingLinkEditor/index.js'\nimport { TOGGLE_LINK_WITH_MODAL_COMMAND } from './plugins/floatingLinkEditor/LinkEditor/commands.js'\nimport { LinkPlugin } from './plugins/link/index.js'\n\nexport type ClientProps = ExclusiveLinkCollectionsProps\n\nconst toolbarGroups: ToolbarGroup[] = [\n toolbarFeatureButtonsGroupWithItems([\n {\n ChildComponent: LinkIcon,\n isActive: ({ selection }) => {\n if ($isRangeSelection(selection)) {\n const selectedNode = getSelectedNode(selection)\n const linkParent = $findMatchingParent(selectedNode, $isLinkNode)\n return linkParent != null\n }\n return false\n },\n isEnabled: ({ selection }) => {\n return !!($isRangeSelection(selection) && $getSelection()?.getTextContent()?.length)\n },\n key: 'link',\n label: ({ i18n }) => {\n return i18n.t('lexical:link:label')\n },\n onSelect: ({ editor, isActive }) => {\n if (!isActive) {\n let selectedText: string | undefined\n let selectedNodes: LexicalNode[] = []\n editor.getEditorState().read(() => {\n selectedText = $getSelection()?.getTextContent()\n // We need to selected nodes here before the drawer opens, as clicking around in the drawer may change the original selection\n selectedNodes = $getSelection()?.getNodes() ?? []\n })\n\n if (!selectedText?.length) {\n return\n }\n\n const linkFields: LinkFields = {\n doc: null,\n linkType: 'custom',\n newTab: false,\n url: 'https://',\n }\n\n editor.dispatchCommand(TOGGLE_LINK_WITH_MODAL_COMMAND, {\n fields: linkFields,\n selectedNodes,\n text: selectedText,\n })\n } else {\n // remove link\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null)\n }\n },\n order: 1,\n },\n ]),\n]\n\nexport const LinkFeatureClient = createClientFeature({\n markdownTransformers: [LinkMarkdownTransformer],\n nodes: [LinkNode, AutoLinkNode],\n plugins: [\n {\n Component: LinkPlugin,\n position: 'normal',\n },\n {\n Component: AutoLinkPlugin,\n position: 'normal',\n },\n {\n Component: ClickableLinkPlugin,\n position: 'normal',\n },\n {\n Component: FloatingLinkEditorPlugin,\n position: 'floatingAnchorElem',\n },\n ],\n toolbarFixed: {\n groups: toolbarGroups,\n },\n toolbarInline: {\n groups: toolbarGroups,\n },\n})\n", "'use client'\nimport React from 'react'\n\nexport const LinkIcon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"none\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M8.5 11.5L11.5 8.5M8.5 7L9.625 5.875C10.868 4.633 12.882 4.633 14.125 5.875C15.368 7.118 15.368 9.133 14.125 10.375L13 11.5M7 8.5L5.746 9.754C4.56 10.94 4.519 12.85 5.652 14.087C6.814 15.354 8.78 15.449 10.058 14.298L11.5 13\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n)\n", "'use client'\nimport type { ElementNode, RangeSelection, TextNode } from 'lexical'\n\nimport { $isAtNodeEnd } from '@lexical/selection'\n\nexport function getSelectedNode(selection: RangeSelection): ElementNode | TextNode {\n const { anchor } = selection\n const { focus } = selection\n const anchorNode = selection.anchor.getNode()\n const focusNode = selection.focus.getNode()\n if (anchorNode === focusNode) {\n return anchorNode\n }\n const isBackward = selection.isBackward()\n if (isBackward) {\n return $isAtNodeEnd(focus) ? anchorNode : focusNode\n }\n return $isAtNodeEnd(anchor) ? anchorNode : focusNode\n}\n", "import type { ToolbarGroup, ToolbarGroupItem } from '../../toolbars/types.js'\n\nexport const toolbarFeatureButtonsGroupWithItems = (items: ToolbarGroupItem[]): ToolbarGroup => {\n return {\n type: 'buttons',\n items,\n key: 'features',\n order: 50,\n }\n}\n", "/**\n * Code taken from https://github.com/facebook/lexical/blob/main/packages/lexical-markdown/src/MarkdownTransformers.ts#L357\n */\n\n// Order of text transformers matters:\n//\n// - code should go first as it prevents any transformations inside\n\nimport type { TextMatchTransformer } from '@lexical/markdown'\n\nimport { $createTextNode, $isTextNode } from 'lexical'\n\nimport { $createLinkNode, $isLinkNode, LinkNode } from './nodes/LinkNode.js'\n\n// - then longer tags match (e.g. ** or __ should go before * or _)\nexport const LinkMarkdownTransformer: TextMatchTransformer = {\n type: 'text-match',\n dependencies: [LinkNode],\n export: (_node, exportChildren, exportFormat) => {\n if (!$isLinkNode(_node)) {\n return null\n }\n const node: LinkNode = _node\n const { url } = node.getFields()\n const linkContent = `[${node.getTextContent()}](${url})`\n const firstChild = node.getFirstChild()\n // Add text styles only if link has single text node inside. If it's more\n // then one we ignore it as markdown does not support nested styles for links\n if (node.getChildrenSize() === 1 && $isTextNode(firstChild)) {\n return exportFormat(firstChild, linkContent)\n } else {\n return linkContent\n }\n },\n importRegExp: /\\[([^[]+)\\]\\(([^()\\s]+)(?:\\s\"((?:[^\"]*\\\\\")*[^\"]*)\"\\s*)?\\)/,\n regExp: /\\[([^[]+)\\]\\(([^()\\s]+)(?:\\s\"((?:[^\"]*\\\\\")*[^\"]*)\"\\s*)?\\)$/,\n replace: (textNode, match) => {\n const [, linkText, linkUrl] = match\n const linkNode = $createLinkNode({\n fields: {\n doc: null,\n linkType: 'custom',\n newTab: false,\n url: linkUrl,\n },\n })\n const linkTextNode = $createTextNode(linkText)\n linkTextNode.setFormat(textNode.getFormat())\n linkNode.append(linkTextNode)\n textNode.replace(linkNode)\n },\n trigger: ')',\n}\n", "import type {\n BaseSelection,\n DOMConversionMap,\n DOMConversionOutput,\n EditorConfig,\n ElementNode as ElementNodeType,\n LexicalCommand,\n LexicalNode,\n NodeKey,\n RangeSelection,\n} from 'lexical'\n\nimport { addClassNamesToElement, isHTMLAnchorElement } from '@lexical/utils'\nimport ObjectID from 'bson-objectid'\nimport {\n $applyNodeReplacement,\n $createTextNode,\n $getSelection,\n $isElementNode,\n $isRangeSelection,\n createCommand,\n ElementNode,\n} from 'lexical'\n\nimport type { LinkPayload } from '../client/plugins/floatingLinkEditor/types.js'\nimport type { LinkFields, SerializedLinkNode } from './types.js'\n\nconst SUPPORTED_URL_PROTOCOLS = new Set(['http:', 'https:', 'mailto:', 'sms:', 'tel:'])\n\n/** @noInheritDoc */\nexport class LinkNode extends ElementNode {\n __fields: LinkFields\n __id: string\n\n constructor({\n id,\n fields = {\n doc: null,\n linkType: 'custom',\n newTab: false,\n url: '',\n },\n key,\n }: {\n fields: LinkFields\n id: string\n key?: NodeKey\n }) {\n super(key)\n this.__fields = fields\n this.__id = id\n }\n\n static clone(node: LinkNode): LinkNode {\n return new LinkNode({\n id: node.__id,\n fields: node.__fields,\n key: node.__key,\n })\n }\n\n static getType(): string {\n return 'link'\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n a: (node: Node) => ({\n conversion: $convertAnchorElement,\n priority: 1,\n }),\n }\n }\n\n static importJSON(serializedNode: SerializedLinkNode): LinkNode {\n if (\n serializedNode.version === 1 &&\n typeof serializedNode.fields?.doc?.value === 'object' &&\n serializedNode.fields?.doc?.value?.id\n ) {\n serializedNode.fields.doc.value = serializedNode.fields.doc.value.id\n serializedNode.version = 2\n }\n\n if (serializedNode.version === 2 && !serializedNode.id) {\n serializedNode.id = new ObjectID.default().toHexString()\n serializedNode.version = 3\n }\n\n const node = $createLinkNode({\n id: serializedNode.id,\n fields: serializedNode.fields,\n })\n node.setFormat(serializedNode.format)\n node.setIndent(serializedNode.indent)\n node.setDirection(serializedNode.direction)\n return node\n }\n\n canBeEmpty(): false {\n return false\n }\n\n canInsertTextAfter(): false {\n return false\n }\n\n canInsertTextBefore(): false {\n return false\n }\n\n createDOM(config: EditorConfig): HTMLAnchorElement {\n const element = document.createElement('a')\n if (this.__fields?.linkType === 'custom') {\n element.href = this.sanitizeUrl(this.__fields.url ?? '')\n }\n if (this.__fields?.newTab ?? false) {\n element.target = '_blank'\n }\n\n if (this.__fields?.newTab === true && this.__fields?.linkType === 'custom') {\n element.rel = manageRel(element.rel, 'add', 'noopener')\n }\n\n addClassNamesToElement(element, config.theme.link)\n return element\n }\n\n exportJSON(): SerializedLinkNode {\n const returnObject: SerializedLinkNode = {\n ...super.exportJSON(),\n type: 'link',\n fields: this.getFields(),\n version: 3,\n }\n const id = this.getID()\n if (id) {\n returnObject.id = id\n }\n return returnObject\n }\n\n extractWithChild(\n child: LexicalNode,\n selection: BaseSelection,\n destination: 'clone' | 'html',\n ): boolean {\n if (!$isRangeSelection(selection)) {\n return false\n }\n\n const anchorNode = selection.anchor.getNode()\n const focusNode = selection.focus.getNode()\n\n return (\n this.isParentOf(anchorNode) &&\n this.isParentOf(focusNode) &&\n selection.getTextContent().length > 0\n )\n }\n\n getFields(): LinkFields {\n return this.getLatest().__fields\n }\n\n getID(): string {\n return this.getLatest().__id\n }\n\n insertNewAfter(selection: RangeSelection, restoreSelection = true): ElementNodeType | null {\n const element = this.getParentOrThrow().insertNewAfter(selection, restoreSelection)\n if ($isElementNode(element)) {\n const linkNode = $createLinkNode({ fields: this.__fields })\n element.append(linkNode)\n return linkNode\n }\n return null\n }\n\n isInline(): true {\n return true\n }\n\n sanitizeUrl(url: string): string {\n try {\n const parsedUrl = new URL(url)\n\n if (!SUPPORTED_URL_PROTOCOLS.has(parsedUrl.protocol)) {\n return 'about:blank'\n }\n } catch (e) {\n return 'https://'\n }\n return url\n }\n\n setFields(fields: LinkFields): void {\n const writable = this.getWritable()\n writable.__fields = fields\n }\n\n updateDOM(prevNode: LinkNode, anchor: HTMLAnchorElement, config: EditorConfig): boolean {\n const url = this.__fields?.url\n const newTab = this.__fields?.newTab\n if (url != null && url !== prevNode.__fields?.url && this.__fields?.linkType === 'custom') {\n anchor.href = url\n }\n if (this.__fields?.linkType === 'internal' && prevNode.__fields?.linkType === 'custom') {\n anchor.removeAttribute('href')\n }\n\n // TODO: not 100% sure why we're settign rel to '' - revisit\n // Start rel config here, then check newTab below\n if (anchor.rel == null) {\n anchor.rel = ''\n }\n\n if (newTab !== prevNode.__fields?.newTab) {\n if (newTab ?? false) {\n anchor.target = '_blank'\n if (this.__fields?.linkType === 'custom') {\n anchor.rel = manageRel(anchor.rel, 'add', 'noopener')\n }\n } else {\n anchor.removeAttribute('target')\n anchor.rel = manageRel(anchor.rel, 'remove', 'noopener')\n }\n }\n\n return false\n }\n}\n\nfunction $convertAnchorElement(domNode: Node): DOMConversionOutput {\n let node: LinkNode | null = null\n if (isHTMLAnchorElement(domNode)) {\n const content = domNode.textContent\n if (content !== null && content !== '') {\n node = $createLinkNode({\n id: new ObjectID.default().toHexString(),\n fields: {\n doc: null,\n linkType: 'custom',\n newTab: domNode.getAttribute('target') === '_blank',\n url: domNode.getAttribute('href') ?? '',\n },\n })\n }\n }\n return { node }\n}\n\nexport function $createLinkNode({ id, fields }: { fields: LinkFields; id?: string }): LinkNode {\n return $applyNodeReplacement(\n new LinkNode({\n id: id ?? new ObjectID.default().toHexString(),\n fields,\n }),\n )\n}\n\nexport function $isLinkNode(node: LexicalNode | null | undefined): node is LinkNode {\n return node instanceof LinkNode\n}\n\nexport const TOGGLE_LINK_COMMAND: LexicalCommand<LinkPayload | null> =\n createCommand('TOGGLE_LINK_COMMAND')\n\nexport function $toggleLink(payload: LinkPayload): void {\n const selection = $getSelection()\n\n if (!$isRangeSelection(selection) && !payload.selectedNodes?.length) {\n return\n }\n const nodes = $isRangeSelection(selection) ? selection.extract() : payload.selectedNodes\n\n if (payload === null) {\n // Remove LinkNodes\n nodes?.forEach((node) => {\n const parent = node.getParent()\n\n if ($isLinkNode(parent)) {\n const children = parent.getChildren()\n\n for (let i = 0; i < children.length; i += 1) {\n parent.insertBefore(children[i])\n }\n\n parent.remove()\n }\n })\n } else {\n // Add or merge LinkNodes\n if (nodes?.length === 1) {\n const firstNode = nodes[0]\n // if the first node is a LinkNode or if its\n // parent is a LinkNode, we update the URL, target and rel.\n const linkNode: LinkNode | null = $isLinkNode(firstNode)\n ? firstNode\n : $getLinkAncestor(firstNode)\n if (linkNode !== null) {\n linkNode.setFields(payload.fields)\n\n if (payload.text != null && payload.text !== linkNode.getTextContent()) {\n // remove all children and add child with new textcontent:\n linkNode.append($createTextNode(payload.text))\n linkNode.getChildren().forEach((child) => {\n if (child !== linkNode.getLastChild()) {\n child.remove()\n }\n })\n }\n return\n }\n }\n\n let prevParent: ElementNodeType | LinkNode | null = null\n let linkNode: LinkNode | null = null\n\n nodes?.forEach((node) => {\n const parent = node.getParent()\n\n if (parent === linkNode || parent === null || ($isElementNode(node) && !node.isInline())) {\n return\n }\n\n if ($isLinkNode(parent)) {\n linkNode = parent\n parent.setFields(payload.fields)\n if (payload.text != null && payload.text !== parent.getTextContent()) {\n // remove all children and add child with new textcontent:\n parent.append($createTextNode(payload.text))\n parent.getChildren().forEach((child) => {\n if (child !== parent.getLastChild()) {\n child.remove()\n }\n })\n }\n return\n }\n\n if (!parent.is(prevParent)) {\n prevParent = parent\n linkNode = $createLinkNode({ fields: payload.fields })\n\n if ($isLinkNode(parent)) {\n if (node.getPreviousSibling() === null) {\n parent.insertBefore(linkNode)\n } else {\n parent.insertAfter(linkNode)\n }\n } else {\n node.insertBefore(linkNode)\n }\n }\n\n if ($isLinkNode(node)) {\n if (node.is(linkNode)) {\n return\n }\n if (linkNode !== null) {\n const children = node.getChildren()\n\n for (let i = 0; i < children.length; i += 1) {\n linkNode.append(children[i])\n }\n }\n\n node.remove()\n return\n }\n\n if (linkNode !== null) {\n linkNode.append(node)\n }\n })\n }\n}\n\nfunction $getLinkAncestor(node: LexicalNode): LinkNode | null {\n return $getAncestor(node, (ancestor) => $isLinkNode(ancestor)) as LinkNode\n}\n\nfunction $getAncestor(\n node: LexicalNode,\n predicate: (ancestor: LexicalNode) => boolean,\n): LexicalNode | null {\n let parent: LexicalNode | null = node\n while (parent !== null) {\n parent = parent.getParent()\n if (parent === null || predicate(parent)) {\n break\n }\n }\n return parent\n}\n\nfunction manageRel(input: string, action: 'add' | 'remove', value: string): string {\n let result: string\n let mutableInput = `${input}`\n if (action === 'add') {\n // if we somehow got out of sync - clean up\n if (mutableInput.includes(value)) {\n const re = new RegExp(value, 'g')\n mutableInput = mutableInput.replace(re, '').trim()\n }\n mutableInput = mutableInput.trim()\n result = mutableInput.length === 0 ? `${value}` : `${mutableInput} ${value}`\n } else {\n const re = new RegExp(value, 'g')\n result = mutableInput.replace(re, '').trim()\n }\n return result\n}\n", "import type { ElementNode, LexicalNode, RangeSelection } from 'lexical'\n\nimport { $applyNodeReplacement, $isElementNode } from 'lexical'\n\nimport type { LinkFields, SerializedAutoLinkNode } from './types.js'\n\nimport { LinkNode } from './LinkNode.js'\n\n// Custom node type to override `canInsertTextAfter` that will\n// allow typing within the link\n\nexport class AutoLinkNode extends LinkNode {\n static clone(node: AutoLinkNode): AutoLinkNode {\n return new AutoLinkNode({ id: '', fields: node.__fields, key: node.__key })\n }\n\n static getType(): string {\n return 'autolink'\n }\n\n static importDOM(): null {\n // TODO: Should link node should handle the import over autolink?\n return null\n }\n\n static importJSON(serializedNode: SerializedAutoLinkNode): AutoLinkNode {\n if (\n serializedNode.version === 1 &&\n typeof serializedNode.fields?.doc?.value === 'object' &&\n serializedNode.fields?.doc?.value?.id\n ) {\n serializedNode.fields.doc.value = serializedNode.fields.doc.value.id\n serializedNode.version = 2\n }\n\n const node = $createAutoLinkNode({ fields: serializedNode.fields })\n\n node.setFormat(serializedNode.format)\n node.setIndent(serializedNode.indent)\n node.setDirection(serializedNode.direction)\n return node\n }\n\n // @ts-expect-error\n exportJSON(): SerializedAutoLinkNode {\n const serialized = super.exportJSON()\n return {\n type: 'autolink',\n children: serialized.children,\n direction: serialized.direction,\n fields: serialized.fields,\n format: serialized.format,\n indent: serialized.indent,\n version: 2,\n }\n }\n\n insertNewAfter(selection: RangeSelection, restoreSelection = true): ElementNode | null {\n const element = this.getParentOrThrow().insertNewAfter(selection, restoreSelection)\n if ($isElementNode(element)) {\n const linkNode = $createAutoLinkNode({ fields: this.__fields })\n element.append(linkNode)\n return linkNode\n }\n return null\n }\n}\n\nexport function $createAutoLinkNode({ fields }: { fields: LinkFields }): AutoLinkNode {\n return $applyNodeReplacement(new AutoLinkNode({ id: '', fields }))\n}\nexport function $isAutoLinkNode(node: LexicalNode | null | undefined): node is AutoLinkNode {\n return node instanceof AutoLinkNode\n}\n", "'use client'\nimport type { ElementNode, LexicalEditor, LexicalNode, TextNode } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { mergeRegister } from '@lexical/utils'\nimport {\n $createTextNode,\n $getSelection,\n $isElementNode,\n $isLineBreakNode,\n $isNodeSelection,\n $isRangeSelection,\n $isTextNode,\n TextNode as TextNodeValue,\n} from 'lexical'\nimport { useEffect } from 'react'\n\nimport type { PluginComponent } from '../../../../typesClient.js'\nimport type { LinkFields } from '../../../nodes/types.js'\nimport type { ClientProps } from '../../index.js'\n\nimport { $createAutoLinkNode, $isAutoLinkNode, AutoLinkNode } from '../../../nodes/AutoLinkNode.js'\nimport { $isLinkNode } from '../../../nodes/LinkNode.js'\n\ntype ChangeHandler = (url: null | string, prevUrl: null | string) => void\n\ninterface LinkMatcherResult {\n fields?: LinkFields\n index: number\n length: number\n text: string\n url: string\n}\n\nexport type LinkMatcher = (text: string) => LinkMatcherResult | null\n\nexport function createLinkMatcherWithRegExp(\n regExp: RegExp,\n urlTransformer: (text: string) => string = (text) => text,\n) {\n return (text: string) => {\n const match = regExp.exec(text)\n if (match === null) {\n return null\n }\n return {\n index: match.index,\n length: match[0].length,\n text: match[0],\n url: urlTransformer(match[0]),\n }\n }\n}\n\nfunction findFirstMatch(text: string, matchers: LinkMatcher[]): LinkMatcherResult | null {\n for (let i = 0; i < matchers.length; i++) {\n const match = matchers[i](text)\n\n if (match != null) {\n return match\n }\n }\n\n return null\n}\n\nconst PUNCTUATION_OR_SPACE = /[.,;\\s]/\n\nfunction isSeparator(char: string): boolean {\n return PUNCTUATION_OR_SPACE.test(char)\n}\n\nfunction endsWithSeparator(textContent: string): boolean {\n return isSeparator(textContent[textContent.length - 1])\n}\n\nfunction startsWithSeparator(textContent: string): boolean {\n return isSeparator(textContent[0])\n}\n\n/**\n * Check if the text content starts with a fullstop followed by a top-level domain.\n * Meaning if the text content can be a beginning of a top level domain.\n * @param textContent\n * @param isEmail\n * @returns boolean\n */\nfunction startsWithTLD(textContent: string, isEmail: boolean): boolean {\n if (isEmail) {\n return /^\\.[a-z]{2,}/i.test(textContent)\n } else {\n return /^\\.[a-z0-9]+/i.test(textContent)\n }\n}\n\nfunction isPreviousNodeValid(node: LexicalNode): boolean {\n let previousNode = node.getPreviousSibling()\n if ($isElementNode(previousNode)) {\n previousNode = previousNode.getLastDescendant()\n }\n return (\n previousNode === null ||\n $isLineBreakNode(previousNode) ||\n ($isTextNode(previousNode) && endsWithSeparator(previousNode.getTextContent()))\n )\n}\n\nfunction isNextNodeValid(node: LexicalNode): boolean {\n let nextNode = node.getNextSibling()\n if ($isElementNode(nextNode)) {\n nextNode = nextNode.getFirstDescendant()\n }\n return (\n nextNode === null ||\n $isLineBreakNode(nextNode) ||\n ($isTextNode(nextNode) && startsWithSeparator(nextNode.getTextContent()))\n )\n}\n\nfunction isContentAroundIsValid(\n matchStart: number,\n matchEnd: number,\n text: string,\n nodes: TextNode[],\n): boolean {\n const contentBeforeIsValid =\n matchStart > 0 ? isSeparator(text[matchStart - 1]) : isPreviousNodeValid(nodes[0])\n if (!contentBeforeIsValid) {\n return false\n }\n\n const contentAfterIsValid =\n matchEnd < text.length ? isSeparator(text[matchEnd]) : isNextNodeValid(nodes[nodes.length - 1])\n return contentAfterIsValid\n}\n\nfunction extractMatchingNodes(\n nodes: TextNode[],\n startIndex: number,\n endIndex: number,\n): [\n matchingOffset: number,\n unmodifiedBeforeNodes: TextNode[],\n matchingNodes: TextNode[],\n unmodifiedAfterNodes: TextNode[],\n] {\n const unmodifiedBeforeNodes: TextNode[] = []\n const matchingNodes: TextNode[] = []\n const unmodifiedAfterNodes: TextNode[] = []\n let matchingOffset = 0\n\n let currentOffset = 0\n const currentNodes = [...nodes]\n\n while (currentNodes.length > 0) {\n const currentNode = currentNodes[0]\n const currentNodeText = currentNode.getTextContent()\n const currentNodeLength = currentNodeText.length\n const currentNodeStart = currentOffset\n const currentNodeEnd = currentOffset + currentNodeLength\n\n if (currentNodeEnd <= startIndex) {\n unmodifiedBeforeNodes.push(currentNode)\n matchingOffset += currentNodeLength\n } else if (currentNodeStart >= endIndex) {\n unmodifiedAfterNodes.push(currentNode)\n } else {\n matchingNodes.push(currentNode)\n }\n currentOffset += currentNodeLength\n currentNodes.shift()\n }\n return [matchingOffset, unmodifiedBeforeNodes, matchingNodes, unmodifiedAfterNodes]\n}\n\nfunction $createAutoLinkNode_(\n nodes: TextNode[],\n startIndex: number,\n endIndex: number,\n match: LinkMatcherResult,\n): TextNode | undefined {\n const fields = {\n linkType: 'custom',\n url: match.url,\n ...match.fields,\n } as LinkFields\n\n const linkNode = $createAutoLinkNode({ fields })\n if (nodes.length === 1) {\n let remainingTextNode = nodes[0]\n let linkTextNode\n if (startIndex === 0) {\n ;[linkTextNode, remainingTextNode] = remainingTextNode.splitText(endIndex)\n } else {\n ;[, linkTextNode, remainingTextNode] = remainingTextNode.splitText(startIndex, endIndex)\n }\n const textNode = $createTextNode(match.text)\n textNode.setFormat(linkTextNode.getFormat())\n textNode.setDetail(linkTextNode.getDetail())\n textNode.setStyle(linkTextNode.getStyle())\n linkNode.append(textNode)\n linkTextNode.replace(linkNode)\n return remainingTextNode\n } else if (nodes.length > 1) {\n const firstTextNode = nodes[0]\n let offset = firstTextNode.getTextContent().length\n let firstLinkTextNode\n if (startIndex === 0) {\n firstLinkTextNode = firstTextNode\n } else {\n ;[, firstLinkTextNode] = firstTextNode.splitText(startIndex)\n }\n const linkNodes: LexicalNode[] = []\n let remainingTextNode\n for (let i = 1; i < nodes.length; i++) {\n const currentNode = nodes[i]\n const currentNodeText = currentNode.getTextContent()\n const currentNodeLength = currentNodeText.length\n const currentNodeStart = offset\n const currentNodeEnd = offset + currentNodeLength\n if (currentNodeStart < endIndex) {\n if (currentNodeEnd <= endIndex) {\n linkNodes.push(currentNode)\n } else {\n const [linkTextNode, endNode] = currentNode.splitText(endIndex - currentNodeStart)\n linkNodes.push(linkTextNode)\n remainingTextNode = endNode\n }\n }\n offset += currentNodeLength\n }\n const selection = $getSelection()\n const selectedTextNode = selection ? selection.getNodes().find($isTextNode) : undefined\n const textNode = $createTextNode(firstLinkTextNode.getTextContent())\n textNode.setFormat(firstLinkTextNode.getFormat())\n textNode.setDetail(firstLinkTextNode.getDetail())\n textNode.setStyle(firstLinkTextNode.getStyle())\n linkNode.append(textNode, ...linkNodes)\n // it does not preserve caret position if caret was at the first text node\n // so we need to restore caret position\n if (selectedTextNode && selectedTextNode === firstLinkTextNode) {\n if ($isRangeSelection(selection)) {\n textNode.select(selection.anchor.offset, selection.focus.offset)\n } else if ($isNodeSelection(selection)) {\n textNode.select(0, textNode.getTextContent().length)\n }\n }\n firstLinkTextNode.replace(linkNode)\n return remainingTextNode\n }\n return undefined\n}\n\nfunction $handleLinkCreation(\n nodes: TextNode[],\n matchers: LinkMatcher[],\n onChange: ChangeHandler,\n): void {\n let currentNodes = [...nodes]\n const initialText = currentNodes.map((node) => node.getTextContent()).join('')\n let text = initialText\n\n let match\n let invalidMatchEnd = 0\n\n while ((match = findFirstMatch(text, matchers)) != null && match !== null) {\n const matchStart: number = match.index\n const matchLength: number = match.length\n const matchEnd = matchStart + matchLength\n const isValid = isContentAroundIsValid(\n invalidMatchEnd + matchStart,\n invalidMatchEnd + matchEnd,\n initialText,\n currentNodes,\n )\n\n if (isValid) {\n const [matchingOffset, , matchingNodes, unmodifiedAfterNodes] = extractMatchingNodes(\n currentNodes,\n invalidMatchEnd + matchStart,\n invalidMatchEnd + matchEnd,\n )\n\n const actualMatchStart = invalidMatchEnd + matchStart - matchingOffset\n const actualMatchEnd = invalidMatchEnd + matchEnd - matchingOffset\n const remainingTextNode = $createAutoLinkNode_(\n matchingNodes,\n actualMatchStart,\n actualMatchEnd,\n match,\n )\n currentNodes = remainingTextNode\n ? [remainingTextNode, ...unmodifiedAfterNodes]\n : unmodifiedAfterNodes\n onChange(match.url, null)\n invalidMatchEnd = 0\n } else {\n invalidMatchEnd += matchEnd\n }\n\n text = text.substring(matchEnd)\n }\n}\n\nfunction handleLinkEdit(\n linkNode: AutoLinkNode,\n matchers: LinkMatcher[],\n onChange: ChangeHandler,\n): void {\n // Check children are simple text\n const children = linkNode.getChildren()\n const childrenLength = children.length\n for (let i = 0; i < childrenLength; i++) {\n const child = children[i]\n if (!$isTextNode(child) || !child.isSimpleText()) {\n replaceWithChildren(linkNode)\n onChange(null, linkNode.getFields()?.url ?? null)\n return\n }\n }\n\n // Check text content fully matches\n const text = linkNode.getTextContent()\n const match = findFirstMatch(text, matchers)\n if (match === null || match.text !== text) {\n replaceWithChildren(linkNode)\n onChange(null, linkNode.getFields()?.url ?? null)\n return\n }\n\n // Check neighbors\n if (!isPreviousNodeValid(linkNode) || !isNextNodeValid(linkNode)) {\n replaceWithChildren(linkNode)\n onChange(null, linkNode.getFields()?.url ?? null)\n return\n }\n\n const url = linkNode.getFields()?.url\n if (url !== match?.url) {\n const flds = linkNode.getFields()\n flds.url = match?.url\n linkNode.setFields(flds)\n onChange(match.url, url ?? null)\n }\n}\n\n// Bad neighbors are edits in neighbor nodes that make AutoLinks incompatible.\n// Given the creation preconditions, these can only be simple text nodes.\nfunction handleBadNeighbors(\n textNode: TextNode,\n matchers: LinkMatcher[],\n onChange: ChangeHandler,\n): void {\n const previousSibling = textNode.getPreviousSibling()\n const nextSibling = textNode.getNextSibling()\n const text = textNode.getTextContent()\n\n if ($isAutoLinkNode(previousSibling)) {\n const isEmailURI = previousSibling.getFields()?.url\n ? previousSibling.getFields()?.url?.startsWith('mailto:')\n : false\n if (!startsWithSeparator(text) || startsWithTLD(text, isEmailURI)) {\n previousSibling.append(textNode)\n handleLinkEdit(previousSibling, matchers, onChange)\n onChange(null, previousSibling.getFields()?.url ?? null)\n }\n }\n\n if ($isAutoLinkNode(nextSibling) && !endsWithSeparator(text)) {\n replaceWithChildren(nextSibling)\n handleLinkEdit(nextSibling, matchers, onChange)\n onChange(null, nextSibling.getFields()?.url ?? null)\n }\n}\n\nfunction replaceWithChildren(node: ElementNode): LexicalNode[] {\n const children = node.getChildren()\n const childrenLength = children.length\n\n for (let j = childrenLength - 1; j >= 0; j--) {\n node.insertAfter(children[j])\n }\n\n node.remove()\n return children.map((child) => child.getLatest())\n}\n\nfunction getTextNodesToMatch(textNode: TextNode): TextNode[] {\n // check if next siblings are simple text nodes till a node contains a space separator\n const textNodesToMatch = [textNode]\n let nextSibling = textNode.getNextSibling()\n while (nextSibling !== null && $isTextNode(nextSibling) && nextSibling.isSimpleText()) {\n textNodesToMatch.push(nextSibling)\n if (/\\s/.test(nextSibling.getTextContent())) {\n break\n }\n nextSibling = nextSibling.getNextSibling()\n }\n return textNodesToMatch\n}\n\nfunction useAutoLink(\n editor: LexicalEditor,\n matchers: LinkMatcher[],\n onChange?: ChangeHandler,\n): void {\n useEffect(() => {\n if (!editor.hasNodes([AutoLinkNode])) {\n throw new Error('LexicalAutoLinkPlugin: AutoLinkNode not registered on editor')\n }\n\n const onChangeWrapped = (url: null | string, prevUrl: null | string): void => {\n if (onChange != null) {\n onChange(url, prevUrl)\n }\n }\n\n return mergeRegister(\n editor.registerNodeTransform(TextNodeValue, (textNode: TextNode) => {\n const parent = textNode.getParentOrThrow()\n const previous = textNode.getPreviousSibling()\n if ($isAutoLinkNode(parent)) {\n handleLinkEdit(parent, matchers, onChangeWrapped)\n } else if (!$isLinkNode(parent)) {\n if (\n textNode.isSimpleText() &&\n (startsWithSeparator(textNode.getTextContent()) || !$isAutoLinkNode(previous))\n ) {\n const textNodesToMatch = getTextNodesToMatch(textNode)\n $handleLinkCreation(textNodesToMatch, matchers, onChangeWrapped)\n }\n\n handleBadNeighbors(textNode, matchers, onChangeWrapped)\n }\n }),\n )\n }, [editor, matchers, onChange])\n}\n\nconst URL_REGEX =\n /((https?:\\/\\/(www\\.)?)|(www\\.))[-\\w@:%.+~#=]{1,256}\\.[a-zA-Z\\d()]{1,6}\\b([-\\w()@:%+.~#?&/=]*)(?<![-.+():%])/\n\nconst EMAIL_REGEX =\n /(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\])|(([a-z\\-\\d]+\\.)+[a-z]{2,}))/i\n\nconst MATCHERS = [\n createLinkMatcherWithRegExp(URL_REGEX, (text) => {\n return text.startsWith('http') ? text : `https://${text}`\n }),\n createLinkMatcherWithRegExp(EMAIL_REGEX, (text) => {\n return `mailto:${text}`\n }),\n]\n\nexport const AutoLinkPlugin: PluginComponent<ClientProps> = () => {\n const [editor] = useLexicalComposerContext()\n\n useAutoLink(editor, MATCHERS)\n\n return null\n}\n", "'use client'\nimport { ClickableLinkPlugin as LexicalClickableLinkPlugin } from '@lexical/react/LexicalClickableLinkPlugin.js'\nimport React from 'react'\n\nimport type { PluginComponent } from '../../../../typesClient.js'\nimport type { ClientProps } from '../../index.js'\n\nexport const ClickableLinkPlugin: PluginComponent<ClientProps> = () => {\n return <LexicalClickableLinkPlugin />\n}\n", "'use client'\nimport * as React from 'react'\nimport { createPortal } from 'react-dom'\n\nimport type { PluginComponentWithAnchor } from '../../../../typesClient.js'\nimport type { ClientProps } from '../../index.js'\n\nimport './index.scss'\nimport { LinkEditor } from './LinkEditor/index.js'\n\nexport const FloatingLinkEditorPlugin: PluginComponentWithAnchor<ClientProps> = (props) => {\n const { anchorElem = document.body } = props\n\n return createPortal(<LinkEditor anchorElem={anchorElem} />, anchorElem)\n}\n", "'use client'\nimport type { ElementNode, LexicalNode } from 'lexical'\nimport type { Data, FormState } from 'payload'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $findMatchingParent, mergeRegister } from '@lexical/utils'\nimport { getTranslation } from '@payloadcms/translations'\nimport {\n CloseMenuIcon,\n EditIcon,\n formatDrawerSlug,\n useConfig,\n useEditDepth,\n useLocale,\n useTranslation,\n} from '@payloadcms/ui'\nimport { requests } from '@payloadcms/ui/shared'\nimport {\n $getSelection,\n $isLineBreakNode,\n $isRangeSelection,\n COMMAND_PRIORITY_HIGH,\n COMMAND_PRIORITY_LOW,\n KEY_ESCAPE_COMMAND,\n SELECTION_CHANGE_COMMAND,\n} from 'lexical'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { LinkFields } from '../../../../nodes/types.js'\nimport type { LinkPayload } from '../types.js'\n\nimport { useEditorConfigContext } from '../../../../../../lexical/config/client/EditorConfigProvider.js'\nimport { getSelectedNode } from '../../../../../../lexical/utils/getSelectedNode.js'\nimport { setFloatingElemPositionForLinkEditor } from '../../../../../../lexical/utils/setFloatingElemPositionForLinkEditor.js'\nimport { FieldsDrawer } from '../../../../../../utilities/fieldsDrawer/Drawer.js'\nimport { useLexicalDrawer } from '../../../../../../utilities/fieldsDrawer/useLexicalDrawer.js'\nimport { $isAutoLinkNode } from '../../../../nodes/AutoLinkNode.js'\nimport { $createLinkNode, $isLinkNode, TOGGLE_LINK_COMMAND } from '../../../../nodes/LinkNode.js'\nimport { TOGGLE_LINK_WITH_MODAL_COMMAND } from './commands.js'\n\nexport function LinkEditor({ anchorElem }: { anchorElem: HTMLElement }): React.ReactNode {\n const [editor] = useLexicalComposerContext()\n\n const editorRef = useRef<HTMLDivElement | null>(null)\n const [linkUrl, setLinkUrl] = useState<null | string>(null)\n const [linkLabel, setLinkLabel] = useState<null | string>(null)\n\n const {\n fieldProps: { schemaPath },\n uuid,\n } = useEditorConfigContext()\n\n const { config } = useConfig()\n\n const { i18n, t } = useTranslation<object, 'lexical:link:loadingWithEllipsis'>()\n\n const [stateData, setStateData] = useState<\n ({ id?: string; text: string } & LinkFields) | undefined\n >()\n\n const editDepth = useEditDepth()\n const [isLink, setIsLink] = useState(false)\n const [selectedNodes, setSelectedNodes] = useState<LexicalNode[]>([])\n const locale = useLocale()\n\n const [isAutoLink, setIsAutoLink] = useState(false)\n\n const drawerSlug = formatDrawerSlug({\n slug: `lexical-rich-text-link-` + uuid,\n depth: editDepth,\n })\n\n const { toggleDrawer } = useLexicalDrawer(drawerSlug)\n\n const setNotLink = useCallback(() => {\n setIsLink(false)\n if (editorRef && editorRef.current) {\n editorRef.current.style.opacity = '0'\n editorRef.current.style.transform = 'translate(-10000px, -10000px)'\n }\n setIsAutoLink(false)\n setLinkUrl(null)\n setLinkLabel(null)\n setSelectedNodes([])\n setStateData(undefined)\n }, [setIsLink, setLinkUrl, setLinkLabel, setSelectedNodes])\n\n const $updateLinkEditor = useCallback(() => {\n const selection = $getSelection()\n let selectedNodeDomRect: DOMRect | undefined\n\n if (!$isRangeSelection(selection) || !selection) {\n void setNotLink()\n return\n }\n\n // Handle the data displayed in the floating link editor & drawer when you click on a link node\n\n const focusNode = getSelectedNode(selection)\n selectedNodeDomRect = editor.getElementByKey(focusNode.getKey())?.getBoundingClientRect()\n const focusLinkParent = $findMatchingParent(focusNode, $isLinkNode)\n\n // Prevent link modal from showing if selection spans further than the link: https://github.com/facebook/lexical/issues/4064\n const badNode = selection\n .getNodes()\n .filter((node) => !$isLineBreakNode(node))\n .find((node) => {\n const linkNode = $findMatchingParent(node, $isLinkNode)\n return (\n (focusLinkParent && !focusLinkParent.is(linkNode)) ||\n (linkNode && !linkNode.is(focusLinkParent))\n )\n })\n\n if (focusLinkParent == null || badNode) {\n setNotLink()\n return\n }\n\n const fields = focusLinkParent.getFields()\n\n // Initial state:\n const data: { text: string } & LinkFields = {\n ...fields,\n id: focusLinkParent.getID(),\n text: focusLinkParent.getTextContent(),\n }\n\n if (fields?.linkType === 'custom') {\n setLinkUrl(fields?.url ?? null)\n setLinkLabel(null)\n } else {\n // internal link\n setLinkUrl(\n `${config.routes.admin === '/' ? '' : config.routes.admin}/collections/${fields?.doc?.relationTo}/${\n fields?.doc?.value\n }`,\n )\n\n const relatedField = config.collections.find((coll) => coll.slug === fields?.doc?.relationTo)\n if (!relatedField) {\n // Usually happens if the user removed all default fields. In this case, we let them specify the label or do not display the label at all.\n // label could be a virtual field the user added. This is useful if they want to use the link feature for things other than links.\n setLinkLabel(fields?.label ? String(fields?.label) : null)\n setLinkUrl(fields?.url ? String(fields?.url) : null)\n } else {\n const id = typeof fields.doc?.value === 'object' ? fields.doc.value.id : fields.doc?.value\n const collection = fields.doc?.relationTo\n if (!id || !collection) {\n throw new Error(`Focus link parent is missing doc.value or doc.relationTo`)\n }\n\n const loadingLabel = t('fields:linkedTo', {\n label: `${getTranslation(relatedField.labels.singular, i18n)} - ${t('lexical:link:loadingWithEllipsis', i18n)}`,\n }).replace(/<[^>]*>?/g, '')\n setLinkLabel(loadingLabel)\n\n requests\n .get(`${config.serverURL}${config.routes.api}/${collection}/${id}`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n params: {\n depth: 0,\n locale: locale?.code,\n },\n })\n .then(async (res) => {\n if (!res.ok) {\n throw new Error(`HTTP error! Status: ${res.status}`)\n }\n const data = await res.json()\n const useAsTitle = relatedField?.admin?.useAsTitle || 'id'\n const title = data[useAsTitle]\n const label = t('fields:linkedTo', {\n label: `${getTranslation(relatedField.labels.singular, i18n)} - ${title}`,\n }).replace(/<[^>]*>?/g, '')\n setLinkLabel(label)\n })\n .catch(() => {\n const label = t('fields:linkedTo', {\n label: `${getTranslation(relatedField.labels.singular, i18n)} - ${t('general:untitled', i18n)} - ID: ${id}`,\n }).replace(/<[^>]*>?/g, '')\n setLinkLabel(label)\n })\n }\n }\n\n setStateData(data)\n setIsLink(true)\n setSelectedNodes(selection ? selection?.getNodes() : [])\n\n if ($isAutoLinkNode(focusLinkParent)) {\n setIsAutoLink(true)\n } else {\n setIsAutoLink(false)\n }\n\n const editorElem = editorRef.current\n const nativeSelection = window.getSelection()\n const { activeElement } = document\n\n if (editorElem === null) {\n return\n }\n\n const rootElement = editor.getRootElement()\n\n if (\n nativeSelection !== null &&\n rootElement !== null &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n if (!selectedNodeDomRect) {\n // Get the DOM rect of the selected node using the native selection. This sometimes produces the wrong\n // result, which is why we use lexical's selection preferably.\n selectedNodeDomRect = nativeSelection.getRangeAt(0).getBoundingClientRect()\n }\n\n if (selectedNodeDomRect != null) {\n selectedNodeDomRect.y += 40\n setFloatingElemPositionForLinkEditor(selectedNodeDomRect, editorElem, anchorElem)\n }\n } else if (activeElement == null || activeElement.className !== 'link-input') {\n if (rootElement !== null) {\n setFloatingElemPositionForLinkEditor(null, editorElem, anchorElem)\n }\n setLinkUrl(null)\n setLinkLabel(null)\n }\n\n return true\n }, [\n editor,\n setNotLink,\n config.routes.admin,\n config.routes.api,\n config.collections,\n config.serverURL,\n t,\n i18n,\n locale?.code,\n anchorElem,\n ])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n TOGGLE_LINK_WITH_MODAL_COMMAND,\n (payload: LinkPayload) => {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, payload)\n\n // Now, open the modal\n $updateLinkEditor()\n toggleDrawer()\n\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, $updateLinkEditor, toggleDrawer, drawerSlug])\n\n useEffect(() => {\n const scrollerElem = anchorElem.parentElement\n\n const update = (): void => {\n editor.getEditorState().read(() => {\n void $updateLinkEditor()\n })\n }\n\n window.addEventListener('resize', update)\n\n if (scrollerElem != null) {\n scrollerElem.addEventListener('scroll', update)\n }\n\n return () => {\n window.removeEventListener('resize', update)\n\n if (scrollerElem != null) {\n scrollerElem.removeEventListener('scroll', update)\n }\n }\n }, [anchorElem.parentElement, editor, $updateLinkEditor])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n void $updateLinkEditor()\n })\n }),\n\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n void $updateLinkEditor()\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(\n KEY_ESCAPE_COMMAND,\n () => {\n if (isLink) {\n setNotLink()\n\n return true\n }\n return false\n },\n COMMAND_PRIORITY_HIGH,\n ),\n )\n }, [editor, $updateLinkEditor, isLink, setNotLink])\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n void $updateLinkEditor()\n })\n }, [editor, $updateLinkEditor])\n\n return (\n <React.Fragment>\n <div className=\"link-editor\" ref={editorRef}>\n <div className=\"link-input\">\n {linkUrl && linkUrl.length > 0 ? (\n <a href={linkUrl} rel=\"noopener noreferrer\" target=\"_blank\">\n {linkLabel != null && linkLabel.length > 0 ? linkLabel : linkUrl}\n </a>\n ) : linkLabel != null && linkLabel.length > 0 ? (\n <span className=\"link-input__label-pure\">{linkLabel}</span>\n ) : null}\n\n {editor.isEditable() && (\n <React.Fragment>\n <button\n aria-label=\"Edit link\"\n className=\"link-edit\"\n onClick={() => {\n toggleDrawer()\n }}\n onMouseDown={(event) => {\n event.preventDefault()\n }}\n tabIndex={0}\n type=\"button\"\n >\n <EditIcon />\n </button>\n {!isAutoLink && (\n <button\n aria-label=\"Remove link\"\n className=\"link-trash\"\n onClick={() => {\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, null)\n }}\n onMouseDown={(event) => {\n event.preventDefault()\n }}\n tabIndex={0}\n type=\"button\"\n >\n <CloseMenuIcon />\n </button>\n )}\n </React.Fragment>\n )}\n </div>\n </div>\n <FieldsDrawer\n className=\"lexical-link-edit-drawer\"\n data={stateData}\n drawerSlug={drawerSlug}\n drawerTitle={t('fields:editLink')}\n featureKey=\"link\"\n handleDrawerSubmit={(fields: FormState, data: Data) => {\n const newLinkPayload = data as { text: string } & LinkFields\n\n const bareLinkFields: LinkFields = {\n ...newLinkPayload,\n }\n delete bareLinkFields.text\n\n // See: https://github.com/facebook/lexical/pull/5536. This updates autolink nodes to link nodes whenever a change was made (which is good!).\n editor.update(() => {\n const selection = $getSelection()\n let linkParent: ElementNode | null = null\n if ($isRangeSelection(selection)) {\n linkParent = getSelectedNode(selection).getParent()\n } else {\n if (selectedNodes.length) {\n linkParent = selectedNodes[0].getParent()\n }\n }\n\n if (linkParent && $isAutoLinkNode(linkParent)) {\n const linkNode = $createLinkNode({\n fields: bareLinkFields,\n })\n linkParent.replace(linkNode, true)\n }\n })\n\n // Needs to happen AFTER a potential auto link => link node conversion, as otherwise, the updated text to display may be lost due to\n // it being applied to the auto link node instead of the link node.\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, {\n fields: bareLinkFields,\n selectedNodes,\n text: newLinkPayload.text,\n })\n }}\n schemaPath={schemaPath}\n schemaPathSuffix=\"fields\"\n />\n </React.Fragment>\n )\n}\n", "'use client'\nconst VERTICAL_GAP = 10\nconst HORIZONTAL_OFFSET = 5\n\nexport function setFloatingElemPositionForLinkEditor(\n targetRect: DOMRect | null,\n floatingElem: HTMLElement,\n anchorElem: HTMLElement,\n verticalGap: number = VERTICAL_GAP,\n horizontalOffset: number = HORIZONTAL_OFFSET,\n): void {\n const scrollerElem = anchorElem.parentElement\n\n if (targetRect === null || scrollerElem == null) {\n floatingElem.style.opacity = '0'\n floatingElem.style.transform = 'translate(-10000px, -10000px)'\n return\n }\n\n const floatingElemRect = floatingElem.getBoundingClientRect()\n const anchorElementRect = anchorElem.getBoundingClientRect()\n const editorScrollerRect = scrollerElem.getBoundingClientRect()\n\n let top = targetRect.top - verticalGap\n let left = targetRect.left - horizontalOffset\n\n if (top < editorScrollerRect.top) {\n top += floatingElemRect.height + targetRect.height + verticalGap * 2\n }\n\n if (left + floatingElemRect.width > editorScrollerRect.right) {\n left = editorScrollerRect.right - floatingElemRect.width - horizontalOffset\n }\n\n top -= anchorElementRect.top\n left -= anchorElementRect.left\n\n floatingElem.style.opacity = '1'\n floatingElem.style.transform = `translate(${left}px, ${top}px)`\n}\n", "'use client'\nimport type { LexicalCommand } from 'lexical'\n\nimport { createCommand } from 'lexical'\n\nimport type { LinkPayload } from '../types.js'\n\nexport const TOGGLE_LINK_WITH_MODAL_COMMAND: LexicalCommand<LinkPayload | null> = createCommand(\n 'TOGGLE_LINK_WITH_MODAL_COMMAND',\n)\n", "'use client'\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { mergeRegister } from '@lexical/utils'\nimport {\n $getSelection,\n $isElementNode,\n $isRangeSelection,\n COMMAND_PRIORITY_LOW,\n PASTE_COMMAND,\n} from 'lexical'\nimport { useEffect } from 'react'\n\nimport type { PluginComponent } from '../../../../typesClient.js'\nimport type { LinkFields } from '../../../nodes/types.js'\nimport type { ClientProps } from '../../index.js'\nimport type { LinkPayload } from '../floatingLinkEditor/types.js'\n\nimport { validateUrl } from '../../../../../lexical/utils/url.js'\nimport { $toggleLink, LinkNode, TOGGLE_LINK_COMMAND } from '../../../nodes/LinkNode.js'\n\nexport const LinkPlugin: PluginComponent<ClientProps> = () => {\n const [editor] = useLexicalComposerContext()\n\n useEffect(() => {\n if (!editor.hasNodes([LinkNode])) {\n throw new Error('LinkPlugin: LinkNode not registered on editor')\n }\n return mergeRegister(\n editor.registerCommand(\n TOGGLE_LINK_COMMAND,\n (payload: LinkPayload) => {\n $toggleLink(payload)\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(\n PASTE_COMMAND,\n (event) => {\n const selection = $getSelection()\n if (\n !$isRangeSelection(selection) ||\n selection.isCollapsed() ||\n !(event instanceof ClipboardEvent) ||\n event.clipboardData == null\n ) {\n return false\n }\n const clipboardText = event.clipboardData.getData('text')\n if (!validateUrl(clipboardText)) {\n return false\n }\n // If we select nodes that are elements then avoid applying the link.\n if (!selection.getNodes().some((node) => $isElementNode(node))) {\n const linkFields: LinkFields = {\n doc: null,\n linkType: 'custom',\n newTab: false,\n url: clipboardText,\n }\n editor.dispatchCommand(TOGGLE_LINK_COMMAND, {\n fields: linkFields,\n text: null,\n })\n event.preventDefault()\n return true\n }\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor])\n\n return null\n}\n", "export function sanitizeUrl(url: string): string {\n /** A pattern that matches safe URLs. */\n const SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^&:/?#]*(?:[/?#]|$))/gi\n\n /** A pattern that matches safe data URLs. */\n const DATA_URL_PATTERN =\n /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z\\d+/]+=*$/i\n\n url = String(url).trim()\n\n if (url.match(SAFE_URL_PATTERN) != null || url.match(DATA_URL_PATTERN) != null) {\n return url\n }\n\n return 'https://'\n}\n\n// Source: https://stackoverflow.com/a/8234912/2013580\nconst absoluteRegExp =\n /(?:[A-Za-z]{3,9}:(?:\\/\\/)?(?:[-;:&=+$,\\w]+@)?[A-Za-z\\d.-]+|(?:www.|[-;:&=+$,\\w]+@)[A-Za-z\\d.-]+)(?:\\/[+~%/.\\w-]*)?\\??[-+=&;%@.\\w]*#?\\w*/\n\n/**\n * This regex checks for relative URLs starting with / or anchor links starting with # in a string. Tested for the following use cases:\n * - /privacy-policy\n * - /privacy-policy#primary-terms\n * - #primary-terms\n * */\nconst relativeOrAnchorRegExp = /^[\\w\\-./]*(?:#\\w[\\w-]*)?$/\n\n/**\n * Prevents unreasonable URLs from being inserted into the editor.\n * @param url\n */\nexport function validateUrlMinimal(url: string): boolean {\n if (!url) {\n return false\n }\n\n return !url.includes(' ')\n}\n\n// Do not keep validateUrl function too loose. This is run when pasting in text, to determine if links are in that text and if it should create AutoLinkNodes.\n// This is why we do not allow stuff like anchors here, as we don't want copied anchors to be turned into AutoLinkNodes.\nexport function validateUrl(url: string): boolean {\n // TODO Fix UI for link insertion; it should never default to an invalid URL such as https://.\n // Maybe show a dialog where they user can type the URL before inserting it.\n\n if (!url) {\n return false\n }\n\n if (url === 'https://') {\n return true\n }\n\n // This makes sure URLs starting with www. instead of https are valid too\n if (absoluteRegExp.test(url)) {\n return true\n }\n\n // Check relative or anchor links\n if (relativeOrAnchorRegExp.test(url)) {\n return true\n }\n\n // While this doesn't allow URLs starting with www (which is why we use the regex above), it does properly handle tel: URLs\n try {\n new URL(url)\n return true\n } catch {\n /* empty */\n }\n\n return false\n}\n", "'use client'\nimport { $isListNode, INSERT_CHECK_LIST_COMMAND, ListItemNode, ListNode } from '@lexical/list'\nimport { $isRangeSelection } from 'lexical'\n\nimport type { ToolbarGroup } from '../../../toolbars/types.js'\nimport type { ClientFeature } from '../../../typesClient.js'\n\nimport { ChecklistIcon } from '../../../../lexical/ui/icons/Checklist/index.js'\nimport { createClientFeature } from '../../../../utilities/createClientFeature.js'\nimport { toolbarTextDropdownGroupWithItems } from '../../../shared/toolbar/textDropdownGroup.js'\nimport { LexicalListPlugin } from '../../plugin/index.js'\nimport { slashMenuListGroupWithItems } from '../../shared/slashMenuListGroup.js'\nimport { CHECK_LIST } from '../markdownTransformers.js'\nimport { LexicalCheckListPlugin } from './plugin/index.js'\n\nconst toolbarGroups: ToolbarGroup[] = [\n toolbarTextDropdownGroupWithItems([\n {\n ChildComponent: ChecklistIcon,\n isActive: ({ selection }) => {\n if (!$isRangeSelection(selection)) {\n return false\n }\n for (const node of selection.getNodes()) {\n if ($isListNode(node) && node.getListType() === 'check') {\n continue\n }\n\n const parent = node.getParent()\n\n if ($isListNode(parent) && parent.getListType() === 'check') {\n continue\n }\n\n const parentParent = parent?.getParent()\n // Example scenario: Node = textNode, parent = listItemNode, parentParent = listNode\n if ($isListNode(parentParent) && parentParent.getListType() === 'check') {\n continue\n }\n\n return false\n }\n return true\n },\n key: 'checklist',\n label: ({ i18n }) => {\n return i18n.t('lexical:checklist:label')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INSERT_CHECK_LIST_COMMAND, undefined)\n },\n order: 12,\n },\n ]),\n]\n\nexport const ChecklistFeatureClient = createClientFeature(({ featureProviderMap }) => {\n const plugins: ClientFeature<undefined>['plugins'] = [\n {\n Component: LexicalCheckListPlugin,\n position: 'normal',\n },\n ]\n\n if (!featureProviderMap.has('unorderedList') && !featureProviderMap.has('orderedList')) {\n plugins.push({\n Component: LexicalListPlugin,\n position: 'normal',\n })\n }\n\n return {\n markdownTransformers: [CHECK_LIST],\n nodes:\n featureProviderMap.has('unorderedList') || featureProviderMap.has('orderedList')\n ? []\n : [ListNode, ListItemNode],\n plugins,\n slashMenu: {\n groups: [\n slashMenuListGroupWithItems([\n {\n Icon: ChecklistIcon,\n key: 'checklist',\n keywords: ['check list', 'check', 'checklist', 'cl'],\n label: ({ i18n }) => {\n return i18n.t('lexical:checklist:label')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INSERT_CHECK_LIST_COMMAND, undefined)\n },\n },\n ]),\n ],\n },\n toolbarFixed: {\n groups: toolbarGroups,\n },\n toolbarInline: {\n groups: toolbarGroups,\n },\n }\n})\n", "'use client'\nimport React from 'react'\n\nexport const ChecklistIcon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"none\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <rect height=\"13\" rx=\"1.5\" stroke=\"currentColor\" width=\"13\" x=\"3.5\" y=\"3.5\" />\n <path d=\"M7 10L9 12.5L13 7.5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </svg>\n)\n", "'use client'\nimport type {\n SerializedListItemNode as _SerializedListItemNode,\n SerializedListNode as _SerializedListNode,\n} from '@lexical/list'\nimport type { Spread } from 'lexical'\n\nimport { ListPlugin } from '@lexical/react/LexicalListPlugin.js'\nimport React from 'react'\n\nimport type { PluginComponent } from '../../typesClient.js'\n\nexport type SerializedListItemNode = Spread<\n {\n checked?: boolean\n type: 'listitem'\n },\n _SerializedListItemNode\n>\n\nexport type SerializedListNode = Spread<\n {\n checked?: boolean\n type: 'list'\n },\n _SerializedListNode\n>\n\nexport const LexicalListPlugin: PluginComponent<undefined> = () => {\n return <ListPlugin />\n}\n", "import type {\n SlashMenuGroup,\n SlashMenuItem,\n} from '../../../lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js'\n\nexport function slashMenuListGroupWithItems(items: SlashMenuItem[]): SlashMenuGroup {\n return {\n items,\n key: 'lists',\n label: ({ i18n }) => {\n return i18n.t('lexical:general:slashMenuListGroupLabel')\n },\n }\n}\n", "import type { ElementTransformer } from '@lexical/markdown'\n\nimport { $isListNode, ListItemNode, ListNode } from '@lexical/list'\n\nimport { listExport, listReplace } from '../shared/markdown.js'\n\nexport const CHECK_LIST: ElementTransformer = {\n type: 'element',\n dependencies: [ListNode, ListItemNode],\n export: (node, exportChildren) => {\n return $isListNode(node) ? listExport(node, exportChildren, 0) : null\n },\n regExp: /^(\\s*)(?:-\\s)?\\s?(\\[(\\s|x)?\\])\\s/i,\n replace: listReplace('check'),\n}\n", "// Copied from https://github.com/facebook/lexical/blob/176b8cf16ecb332ee5efe2c75219e223b7b019f2/packages/lexical-markdown/src/MarkdownTransformers.ts#L97C1-L172C1\n\nimport type { ListNode, ListType } from '@lexical/list'\nimport type { ElementTransformer } from '@lexical/markdown'\nimport type { ElementNode } from 'lexical'\n\nimport { $createListItemNode, $createListNode, $isListItemNode, $isListNode } from '@lexical/list'\n\n// Amount of spaces that define indentation level\nconst LIST_INDENT_SIZE = 4\n\nexport const listReplace = (listType: ListType): ElementTransformer['replace'] => {\n return (parentNode, children, match) => {\n const previousNode = parentNode.getPreviousSibling()\n const nextNode = parentNode.getNextSibling()\n const listItem = $createListItemNode(listType === 'check' ? match[3] === 'x' : undefined)\n if ($isListNode(nextNode) && nextNode.getListType() === listType) {\n const firstChild = nextNode.getFirstChild()\n if (firstChild !== null) {\n firstChild.insertBefore(listItem)\n } else {\n // should never happen, but let's handle gracefully, just in case.\n nextNode.append(listItem)\n }\n parentNode.remove()\n } else if ($isListNode(previousNode) && previousNode.getListType() === listType) {\n previousNode.append(listItem)\n parentNode.remove()\n } else {\n const list = $createListNode(listType, listType === 'number' ? Number(match[2]) : undefined)\n list.append(listItem)\n parentNode.replace(list)\n }\n listItem.append(...children)\n listItem.select(0, 0)\n const indent = Math.floor(match[1].length / LIST_INDENT_SIZE)\n if (indent) {\n listItem.setIndent(indent)\n }\n }\n}\n\nexport const listExport = (\n listNode: ListNode,\n exportChildren: (node: ElementNode) => string,\n depth: number,\n): string => {\n const output: string[] = []\n const children = listNode.getChildren()\n let index = 0\n for (const listItemNode of children) {\n if ($isListItemNode(listItemNode)) {\n if (listItemNode.getChildrenSize() === 1) {\n const firstChild = listItemNode.getFirstChild()\n if ($isListNode(firstChild)) {\n output.push(listExport(firstChild, exportChildren, depth + 1))\n continue\n }\n }\n const indent = ' '.repeat(depth * LIST_INDENT_SIZE)\n const listType = listNode.getListType()\n const prefix =\n listType === 'number'\n ? `${listNode.getStart() + index}. `\n : listType === 'check'\n ? `- [${listItemNode.getChecked() ? 'x' : ' '}] `\n : '- '\n output.push(indent + prefix + exportChildren(listItemNode))\n index++\n }\n }\n\n return output.join('\\n')\n}\n", "'use client'\nimport { CheckListPlugin } from '@lexical/react/LexicalCheckListPlugin.js'\nimport React from 'react'\n\nimport type { PluginComponent } from '../../../../typesClient.js'\n\nexport const LexicalCheckListPlugin: PluginComponent<undefined> = () => {\n return <CheckListPlugin />\n}\n", "'use client'\nimport { $isListNode, INSERT_ORDERED_LIST_COMMAND, ListItemNode, ListNode } from '@lexical/list'\nimport { $isRangeSelection } from 'lexical'\n\nimport type { ToolbarGroup } from '../../../toolbars/types.js'\n\nimport { OrderedListIcon } from '../../../../lexical/ui/icons/OrderedList/index.js'\nimport { createClientFeature } from '../../../../utilities/createClientFeature.js'\nimport { toolbarTextDropdownGroupWithItems } from '../../../shared/toolbar/textDropdownGroup.js'\nimport { LexicalListPlugin } from '../../plugin/index.js'\nimport { slashMenuListGroupWithItems } from '../../shared/slashMenuListGroup.js'\nimport { ORDERED_LIST } from '../markdownTransformer.js'\n\nconst toolbarGroups: ToolbarGroup[] = [\n toolbarTextDropdownGroupWithItems([\n {\n ChildComponent: OrderedListIcon,\n isActive: ({ selection }) => {\n if (!$isRangeSelection(selection)) {\n return false\n }\n for (const node of selection.getNodes()) {\n if ($isListNode(node) && node.getListType() === 'number') {\n continue\n }\n\n const parent = node.getParent()\n\n if ($isListNode(parent) && parent.getListType() === 'number') {\n continue\n }\n\n const parentParent = parent?.getParent()\n // Example scenario: Node = textNode, parent = listItemNode, parentParent = listNode\n if ($isListNode(parentParent) && parentParent.getListType() === 'number') {\n continue\n }\n\n return false\n }\n return true\n },\n key: 'orderedList',\n label: ({ i18n }) => {\n return i18n.t('lexical:orderedList:label')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined)\n },\n order: 10,\n },\n ]),\n]\n\nexport const OrderedListFeatureClient = createClientFeature(({ featureProviderMap }) => {\n return {\n markdownTransformers: [ORDERED_LIST],\n nodes: featureProviderMap.has('orderedList') ? [] : [ListNode, ListItemNode],\n plugins: featureProviderMap.has('orderedList')\n ? []\n : [\n {\n Component: LexicalListPlugin,\n position: 'normal',\n },\n ],\n slashMenu: {\n groups: [\n slashMenuListGroupWithItems([\n {\n Icon: OrderedListIcon,\n key: 'orderedList',\n keywords: ['ordered list', 'ol'],\n label: ({ i18n }) => {\n return i18n.t('lexical:orderedList:label')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INSERT_ORDERED_LIST_COMMAND, undefined)\n },\n },\n ]),\n ],\n },\n toolbarFixed: {\n groups: toolbarGroups,\n },\n toolbarInline: {\n groups: toolbarGroups,\n },\n }\n})\n", "'use client'\nimport React from 'react'\n\nexport const OrderedListIcon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"none\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M5.89284 12.479C5.89284 13.368 5.26284 13.788 4.38084 14.236C3.75084 14.558 3.43584 14.789 3.40784 15.062H5.89984V16H2.06384V15.573C2.06384 14.523 2.92484 13.935 3.66684 13.501C4.38084 13.088 4.75184 12.878 4.75184 12.458C4.75184 12.08 4.52084 11.835 4.06584 11.835C3.58984 11.835 3.30984 12.199 3.28184 12.654H2.11284C2.18984 11.681 2.87584 10.918 4.07284 10.918C5.15784 10.918 5.89284 11.555 5.89284 12.479Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M2.68608 4.535V3.737C3.54008 3.737 3.90408 3.513 4.02308 2.995H4.89108V8H3.68008L3.68008 4.535H2.68608Z\"\n fill=\"currentColor\"\n />\n <path d=\"M8 15L17 15\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M8 10L17 10\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M8 5L17 5\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </svg>\n)\n", "import type { ElementTransformer } from '@lexical/markdown'\n\nimport { $isListNode, ListItemNode, ListNode } from '@lexical/list'\n\nimport { listExport, listReplace } from '../shared/markdown.js'\n\nexport const ORDERED_LIST: ElementTransformer = {\n type: 'element',\n dependencies: [ListNode, ListItemNode],\n export: (node, exportChildren) => {\n return $isListNode(node) ? listExport(node, exportChildren, 0) : null\n },\n regExp: /^(\\s*)(\\d+)\\.\\s/,\n replace: listReplace('number'),\n}\n", "'use client'\n\nimport { $isListNode, INSERT_UNORDERED_LIST_COMMAND, ListItemNode, ListNode } from '@lexical/list'\nimport { $isRangeSelection } from 'lexical'\n\nimport type { ToolbarGroup } from '../../../toolbars/types.js'\n\nimport { UnorderedListIcon } from '../../../../lexical/ui/icons/UnorderedList/index.js'\nimport { createClientFeature } from '../../../../utilities/createClientFeature.js'\nimport { toolbarTextDropdownGroupWithItems } from '../../../shared/toolbar/textDropdownGroup.js'\nimport { LexicalListPlugin } from '../../plugin/index.js'\nimport { slashMenuListGroupWithItems } from '../../shared/slashMenuListGroup.js'\nimport { UNORDERED_LIST } from '../markdownTransformer.js'\n\nconst toolbarGroups: ToolbarGroup[] = [\n toolbarTextDropdownGroupWithItems([\n {\n ChildComponent: UnorderedListIcon,\n isActive: ({ selection }) => {\n if (!$isRangeSelection(selection)) {\n return false\n }\n for (const node of selection.getNodes()) {\n if ($isListNode(node) && node.getListType() === 'bullet') {\n continue\n }\n\n const parent = node.getParent()\n\n if ($isListNode(parent) && parent.getListType() === 'bullet') {\n continue\n }\n\n const parentParent = parent?.getParent()\n // Example scenario: Node = textNode, parent = listItemNode, parentParent = listNode\n if ($isListNode(parentParent) && parentParent.getListType() === 'bullet') {\n continue\n }\n\n return false\n }\n return true\n },\n key: 'unorderedList',\n label: ({ i18n }) => {\n return i18n.t('lexical:unorderedList:label')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined)\n },\n order: 11,\n },\n ]),\n]\n\nexport const UnorderedListFeatureClient = createClientFeature({\n markdownTransformers: [UNORDERED_LIST],\n nodes: [ListNode, ListItemNode],\n plugins: [\n {\n Component: LexicalListPlugin,\n position: 'normal',\n },\n ],\n slashMenu: {\n groups: [\n slashMenuListGroupWithItems([\n {\n Icon: UnorderedListIcon,\n key: 'unorderedList',\n keywords: ['unordered list', 'ul'],\n label: ({ i18n }) => {\n return i18n.t('lexical:unorderedList:label')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INSERT_UNORDERED_LIST_COMMAND, undefined)\n },\n },\n ]),\n ],\n },\n toolbarFixed: {\n groups: toolbarGroups,\n },\n toolbarInline: {\n groups: toolbarGroups,\n },\n})\n", "'use client'\nimport React from 'react'\n\nexport const UnorderedListIcon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"none\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <circle cx=\"4\" cy=\"5\" fill=\"currentColor\" r=\"1.15\" stroke=\"currentColor\" strokeWidth=\"0.3\" />\n <circle cx=\"4\" cy=\"10\" fill=\"currentColor\" r=\"1.15\" stroke=\"currentColor\" strokeWidth=\"0.3\" />\n <circle cx=\"4\" cy=\"15\" fill=\"currentColor\" r=\"1.15\" stroke=\"currentColor\" strokeWidth=\"0.3\" />\n <path d=\"M17 5H7\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M17 10H7\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n <path d=\"M17 15H7\" stroke=\"currentColor\" strokeWidth=\"1.5\" />\n </svg>\n)\n", "import type { ElementTransformer } from '@lexical/markdown'\n\nimport { $isListNode, ListItemNode, ListNode } from '@lexical/list'\n\nimport { listExport, listReplace } from '../shared/markdown.js'\n\nexport const UNORDERED_LIST: ElementTransformer = {\n type: 'element',\n dependencies: [ListNode, ListItemNode],\n export: (node, exportChildren) => {\n return $isListNode(node) ? listExport(node, exportChildren, 0) : null\n },\n regExp: /^(\\s*)[-*+]\\s/,\n replace: listReplace('bullet'),\n}\n", "import type { EditorConfig, LexicalNode, NodeKey, SerializedLexicalNode, Spread } from 'lexical'\nimport type { JSX } from 'react'\n\nimport { addClassNamesToElement } from '@lexical/utils'\nimport { DecoratorNode } from 'lexical'\nimport * as React from 'react'\n\nexport type UnknownConvertedNodeData = {\n nodeData: unknown\n nodeType: string\n}\n\nexport type SerializedUnknownConvertedNode = Spread<\n {\n data: UnknownConvertedNodeData\n },\n SerializedLexicalNode\n>\n\nconst Component = React.lazy(() =>\n import('./Component.js').then((module) => ({\n default: module.UnknownConvertedNodeComponent,\n })),\n)\n\n/** @noInheritDoc */\nexport class UnknownConvertedNode extends DecoratorNode<JSX.Element> {\n __data: UnknownConvertedNodeData\n\n constructor({ data, key }: { data: UnknownConvertedNodeData; key?: NodeKey }) {\n super(key)\n this.__data = data\n }\n\n static clone(node: UnknownConvertedNode): UnknownConvertedNode {\n return new UnknownConvertedNode({\n data: node.__data,\n key: node.__key,\n })\n }\n\n static getType(): string {\n return 'unknownConverted'\n }\n\n static importJSON(serializedNode: SerializedUnknownConvertedNode): UnknownConvertedNode {\n const node = $createUnknownConvertedNode({ data: serializedNode.data })\n return node\n }\n\n canInsertTextAfter(): true {\n return true\n }\n\n canInsertTextBefore(): true {\n return true\n }\n\n createDOM(config: EditorConfig): HTMLElement {\n const element = document.createElement('span')\n addClassNamesToElement(element, 'unknownConverted')\n return element\n }\n\n decorate(): JSX.Element {\n return <Component data={this.__data} />\n }\n\n exportJSON(): SerializedUnknownConvertedNode {\n return {\n type: this.getType(),\n data: this.__data,\n version: 1,\n }\n }\n\n // Mutation\n\n isInline(): boolean {\n return true\n }\n\n updateDOM(prevNode: UnknownConvertedNode, dom: HTMLElement): boolean {\n return false\n }\n}\n\nexport function $createUnknownConvertedNode({\n data,\n}: {\n data: UnknownConvertedNodeData\n}): UnknownConvertedNode {\n return new UnknownConvertedNode({\n data,\n })\n}\n\nexport function $isUnknownConvertedNode(\n node: LexicalNode | null | undefined,\n): node is UnknownConvertedNode {\n return node instanceof UnknownConvertedNode\n}\n", "'use client'\n\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { UnknownConvertedNode } from './nodes/unknownConvertedNode/index.js'\n\nexport const LexicalPluginToLexicalFeatureClient = createClientFeature(() => {\n return {\n nodes: [UnknownConvertedNode],\n }\n})\n", "import type { EditorConfig, LexicalNode, NodeKey, SerializedLexicalNode, Spread } from 'lexical'\nimport type { JSX } from 'react'\n\nimport { addClassNamesToElement } from '@lexical/utils'\nimport { DecoratorNode } from 'lexical'\nimport * as React from 'react'\n\nexport type UnknownConvertedNodeData = {\n nodeData: unknown\n nodeType: string\n}\n\nexport type SerializedUnknownConvertedNode = Spread<\n {\n data: UnknownConvertedNodeData\n },\n SerializedLexicalNode\n>\n\nconst Component = React.lazy(() =>\n import('./Component.js').then((module) => ({\n default: module.UnknownConvertedNodeComponent,\n })),\n)\n\n/** @noInheritDoc */\nexport class UnknownConvertedNode extends DecoratorNode<JSX.Element> {\n __data: UnknownConvertedNodeData\n\n constructor({ data, key }: { data: UnknownConvertedNodeData; key?: NodeKey }) {\n super(key)\n this.__data = data\n }\n\n static clone(node: UnknownConvertedNode): UnknownConvertedNode {\n return new UnknownConvertedNode({\n data: node.__data,\n key: node.__key,\n })\n }\n\n static getType(): string {\n return 'unknownConverted'\n }\n\n static importJSON(serializedNode: SerializedUnknownConvertedNode): UnknownConvertedNode {\n const node = $createUnknownConvertedNode({ data: serializedNode.data })\n return node\n }\n\n canInsertTextAfter(): true {\n return true\n }\n\n canInsertTextBefore(): true {\n return true\n }\n\n createDOM(config: EditorConfig): HTMLElement {\n const element = document.createElement('span')\n addClassNamesToElement(element, 'unknownConverted')\n return element\n }\n\n decorate(): JSX.Element {\n return <Component data={this.__data} />\n }\n\n exportJSON(): SerializedUnknownConvertedNode {\n return {\n type: this.getType(),\n data: this.__data,\n version: 1,\n }\n }\n\n // Mutation\n\n isInline(): boolean {\n return true\n }\n\n updateDOM(prevNode: UnknownConvertedNode, dom: HTMLElement): boolean {\n return false\n }\n}\n\nexport function $createUnknownConvertedNode({\n data,\n}: {\n data: UnknownConvertedNodeData\n}): UnknownConvertedNode {\n return new UnknownConvertedNode({\n data,\n })\n}\n\nexport function $isUnknownConvertedNode(\n node: LexicalNode | null | undefined,\n): node is UnknownConvertedNode {\n return node instanceof UnknownConvertedNode\n}\n", "'use client'\n\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { UnknownConvertedNode } from './nodes/unknownConvertedNode/index.js'\n\nexport const SlateToLexicalFeatureClient = createClientFeature(() => {\n return {\n nodes: [UnknownConvertedNode],\n }\n})\n", "'use client'\n\nimport { $setBlocksType } from '@lexical/selection'\nimport { $createParagraphNode, $getSelection, $isParagraphNode, $isRangeSelection } from 'lexical'\n\nimport type { ToolbarGroup } from '../../toolbars/types.js'\n\nimport { TextIcon } from '../../../lexical/ui/icons/Text/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { slashMenuBasicGroupWithItems } from '../../shared/slashMenu/basicGroup.js'\nimport { toolbarTextDropdownGroupWithItems } from '../../shared/toolbar/textDropdownGroup.js'\n\nconst toolbarGroups: ToolbarGroup[] = [\n toolbarTextDropdownGroupWithItems([\n {\n ChildComponent: TextIcon,\n isActive: ({ selection }) => {\n if (!$isRangeSelection(selection)) {\n return false\n }\n for (const node of selection.getNodes()) {\n if (!$isParagraphNode(node) && !$isParagraphNode(node.getParent())) {\n return false\n }\n }\n return true\n },\n key: 'paragraph',\n label: ({ i18n }) => {\n return i18n.t('lexical:paragraph:label2')\n },\n onSelect: ({ editor }) => {\n editor.update(() => {\n const selection = $getSelection()\n $setBlocksType(selection, () => $createParagraphNode())\n })\n },\n order: 1,\n },\n ]),\n]\n\nexport const ParagraphFeatureClient = createClientFeature({\n slashMenu: {\n groups: [\n slashMenuBasicGroupWithItems([\n {\n Icon: TextIcon,\n key: 'paragraph',\n keywords: ['normal', 'paragraph', 'p', 'text'],\n label: ({ i18n }) => {\n return i18n.t('lexical:paragraph:label')\n },\n onSelect: ({ editor }) => {\n editor.update(() => {\n const selection = $getSelection()\n $setBlocksType(selection, () => $createParagraphNode())\n })\n },\n },\n ]),\n ],\n },\n toolbarFixed: {\n groups: toolbarGroups,\n },\n toolbarInline: {\n groups: toolbarGroups,\n },\n})\n", "'use client'\n\nimport { $isNodeSelection } from 'lexical'\n\nimport type { RelationshipFeatureProps } from '../server/index.js'\n\nimport { RelationshipIcon } from '../../../lexical/ui/icons/Relationship/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { slashMenuBasicGroupWithItems } from '../../shared/slashMenu/basicGroup.js'\nimport { toolbarAddDropdownGroupWithItems } from '../../shared/toolbar/addDropdownGroup.js'\nimport { INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND } from './drawer/commands.js'\nimport { $isRelationshipNode, RelationshipNode } from './nodes/RelationshipNode.js'\nimport { RelationshipPlugin } from './plugins/index.js'\n\nexport const RelationshipFeatureClient = createClientFeature<RelationshipFeatureProps>({\n nodes: [RelationshipNode],\n plugins: [\n {\n Component: RelationshipPlugin,\n position: 'normal',\n },\n ],\n slashMenu: {\n groups: [\n slashMenuBasicGroupWithItems([\n {\n Icon: RelationshipIcon,\n key: 'relationship',\n keywords: ['relationship', 'relation', 'rel'],\n label: ({ i18n }) => {\n return i18n.t('lexical:relationship:label')\n },\n onSelect: ({ editor }) => {\n // dispatch INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND\n editor.dispatchCommand(INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND, {\n replace: false,\n })\n },\n },\n ]),\n ],\n },\n toolbarFixed: {\n groups: [\n toolbarAddDropdownGroupWithItems([\n {\n ChildComponent: RelationshipIcon,\n isActive: ({ selection }) => {\n if (!$isNodeSelection(selection) || !selection.getNodes().length) {\n return false\n }\n\n const firstNode = selection.getNodes()[0]\n return $isRelationshipNode(firstNode)\n },\n key: 'relationship',\n label: ({ i18n }) => {\n return i18n.t('lexical:relationship:label')\n },\n onSelect: ({ editor }) => {\n // dispatch INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND\n editor.dispatchCommand(INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND, {\n replace: false,\n })\n },\n },\n ]),\n ],\n },\n})\n", "'use client'\nimport React from 'react'\n\nexport const RelationshipIcon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"none\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g clipPath=\"url(#clip0_4397_10817)\">\n <path\n d=\"M7.75 12.25L15.25 4.75M15.25 4.75H11.5M15.25 4.75V8.5M13 11.5V13.75C13 14.5784 12.3284 15.25 11.5 15.25H6.25C5.42157 15.25 4.75 14.5784 4.75 13.75V8.5C4.75 7.67157 5.42157 7 6.25 7H8.5\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_4397_10817\">\n <rect fill=\"currentColor\" height=\"12\" transform=\"translate(4 4)\" width=\"12\" />\n </clipPath>\n </defs>\n </svg>\n)\n", "'use client'\nimport type { LexicalCommand } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $insertNodeToNearestRoot } from '@lexical/utils'\nimport { useConfig } from '@payloadcms/ui'\nimport {\n $getPreviousSelection,\n $getSelection,\n $isParagraphNode,\n $isRangeSelection,\n COMMAND_PRIORITY_EDITOR,\n createCommand,\n} from 'lexical'\nimport { useEffect } from 'react'\n\nimport type { PluginComponent } from '../../../typesClient.js'\nimport type { RelationshipFeatureProps } from '../../server/index.js'\nimport type { RelationshipData } from '../../server/nodes/RelationshipNode.js'\n\nimport { RelationshipDrawer } from '../drawer/index.js'\nimport { $createRelationshipNode, RelationshipNode } from '../nodes/RelationshipNode.js'\n\nexport const INSERT_RELATIONSHIP_COMMAND: LexicalCommand<RelationshipData> = createCommand(\n 'INSERT_RELATIONSHIP_COMMAND',\n)\n\nexport const RelationshipPlugin: PluginComponent<RelationshipFeatureProps> = ({ clientProps }) => {\n const [editor] = useLexicalComposerContext()\n const {\n config: { collections },\n } = useConfig()\n\n let enabledRelations: null | string[] = null\n\n if (clientProps?.enabledCollections) {\n enabledRelations = clientProps?.enabledCollections\n } else if (clientProps?.disabledCollections) {\n enabledRelations = collections\n .filter(({ slug }) => !clientProps?.disabledCollections?.includes(slug))\n .map(({ slug }) => slug)\n }\n\n useEffect(() => {\n if (!editor.hasNodes([RelationshipNode])) {\n throw new Error('RelationshipPlugin: RelationshipNode not registered on editor')\n }\n\n return editor.registerCommand<RelationshipData>(\n INSERT_RELATIONSHIP_COMMAND,\n (payload) => {\n const selection = $getSelection() || $getPreviousSelection()\n\n if ($isRangeSelection(selection)) {\n const relationshipNode = $createRelationshipNode(payload)\n // Insert relationship node BEFORE potentially removing focusNode, as $insertNodeToNearestRoot errors if the focusNode doesn't exist\n $insertNodeToNearestRoot(relationshipNode)\n\n const { focus } = selection\n const focusNode = focus.getNode()\n\n // First, delete currently selected node if it's an empty paragraph and if there are sufficient\n // paragraph nodes (more than 1) left in the parent node, so that we don't \"trap\" the user\n if (\n $isParagraphNode(focusNode) &&\n focusNode.getTextContentSize() === 0 &&\n focusNode\n .getParentOrThrow()\n .getChildren()\n .filter((node) => $isParagraphNode(node)).length > 1\n ) {\n focusNode.remove()\n }\n }\n\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n )\n }, [editor])\n\n return <RelationshipDrawer enabledCollectionSlugs={enabledRelations} />\n}\n", "'use client'\nimport type { LexicalEditor } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $getNodeByKey, COMMAND_PRIORITY_EDITOR } from 'lexical'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport { useLexicalListDrawer } from '../../../../utilities/fieldsDrawer/useLexicalListDrawer.js'\nimport { $createRelationshipNode } from '../nodes/RelationshipNode.js'\nimport { INSERT_RELATIONSHIP_COMMAND } from '../plugins/index.js'\nimport { EnabledRelationshipsCondition } from '../utils/EnabledRelationshipsCondition.js'\nimport { INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND } from './commands.js'\n\nconst insertRelationship = ({\n editor,\n relationTo,\n replaceNodeKey,\n value,\n}: {\n editor: LexicalEditor\n relationTo: string\n replaceNodeKey: null | string\n value: number | string\n}) => {\n if (!replaceNodeKey) {\n editor.dispatchCommand(INSERT_RELATIONSHIP_COMMAND, {\n relationTo,\n value,\n })\n } else {\n editor.update(() => {\n const node = $getNodeByKey(replaceNodeKey)\n if (node) {\n node.replace($createRelationshipNode({ relationTo, value }))\n }\n })\n }\n}\n\ntype Props = {\n enabledCollectionSlugs: null | string[]\n}\n\nconst RelationshipDrawerComponent: React.FC<Props> = ({ enabledCollectionSlugs }) => {\n const [editor] = useLexicalComposerContext()\n const [selectedCollectionSlug, setSelectedCollectionSlug] = useState(\n () => enabledCollectionSlugs?.[0],\n )\n const [replaceNodeKey, setReplaceNodeKey] = useState<null | string>(null)\n\n const { closeListDrawer, isListDrawerOpen, ListDrawer, openListDrawer } = useLexicalListDrawer({\n collectionSlugs: enabledCollectionSlugs ? enabledCollectionSlugs : undefined,\n selectedCollection: selectedCollectionSlug,\n })\n\n useEffect(() => {\n return editor.registerCommand<{\n replace: { nodeKey: string } | false\n }>(\n INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND,\n (payload) => {\n setReplaceNodeKey(payload?.replace ? payload?.replace.nodeKey : null)\n openListDrawer()\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n )\n }, [editor, openListDrawer])\n\n const onSelect = useCallback(\n ({ collectionSlug, docID }) => {\n insertRelationship({\n editor,\n relationTo: collectionSlug,\n replaceNodeKey,\n value: docID,\n })\n closeListDrawer()\n },\n [editor, closeListDrawer, replaceNodeKey],\n )\n\n useEffect(() => {\n // always reset back to first option\n // TODO: this is not working, see the ListDrawer component\n setSelectedCollectionSlug(enabledCollectionSlugs?.[0])\n }, [isListDrawerOpen, enabledCollectionSlugs])\n\n return <ListDrawer onSelect={onSelect} />\n}\n\nexport const RelationshipDrawer = (props: Props): React.ReactNode => {\n return (props?.enabledCollectionSlugs?.length ?? -1) > 0 ? ( // If enabledCollectionSlugs it overrides what EnabledRelationshipsCondition is doing\n <RelationshipDrawerComponent {...props} />\n ) : (\n <EnabledRelationshipsCondition {...props}>\n <RelationshipDrawerComponent {...props} />\n </EnabledRelationshipsCondition>\n )\n}\n", "'use client'\nimport type { UseListDrawer } from '@payloadcms/ui'\nimport type { BaseSelection } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useListDrawer, useModal } from '@payloadcms/ui'\nimport { $getPreviousSelection, $getSelection, $setSelection } from 'lexical'\nimport { useCallback, useEffect, useState } from 'react'\n\n/**\n *\n * Wrapper around useListDrawer that restores and saves selection state (cursor position) when opening and closing the drawer.\n * By default, the lexical cursor position may be lost when opening a drawer and clicking somewhere on that drawer.\n */\nexport const useLexicalListDrawer = (\n args: Parameters<UseListDrawer>[0],\n): {\n closeListDrawer: () => void\n isListDrawerOpen: boolean\n ListDrawer: ReturnType<UseListDrawer>[0]\n listDrawerSlug: string\n ListDrawerToggler: ReturnType<UseListDrawer>[1]\n openListDrawer: (selection?: BaseSelection) => void\n} => {\n const [editor] = useLexicalComposerContext()\n const [selectionState, setSelectionState] = useState<BaseSelection | null>(null)\n const [wasOpen, setWasOpen] = useState<boolean>(false)\n\n const [\n BaseListDrawer,\n BaseListDrawerToggler,\n {\n closeDrawer: baseCloseDrawer,\n drawerSlug: listDrawerSlug,\n isDrawerOpen,\n openDrawer: baseOpenDrawer,\n },\n ] = useListDrawer(args)\n const { modalState } = useModal()\n\n const $storeSelection = useCallback(() => {\n // editor.read() causes an error here when creating a new upload node from the slash menu. It seems like we can omit it here though, as all\n // invocations of that functions are wrapped in editor.read() or editor.update() somewhere in the call stack.\n const selection = $getSelection() ?? $getPreviousSelection()\n setSelectionState(selection)\n }, [])\n\n const restoreSelection = useCallback(() => {\n if (selectionState) {\n editor.update(\n () => {\n $setSelection(selectionState.clone())\n },\n { discrete: true, skipTransforms: true },\n )\n }\n }, [editor, selectionState])\n\n const closeListDrawer = () => {\n //restoreSelection() // Should already be stored by the useEffect below\n baseCloseDrawer()\n }\n\n // We need to handle drawer closing via a useEffect, as toggleDrawer / closeDrawer will not be triggered if the drawer\n // is closed by clicking outside of the drawer. This useEffect will handle everything.\n useEffect(() => {\n if (!wasOpen) {\n return\n }\n\n const thisModalState = modalState[listDrawerSlug]\n // Exists in modalState (thus has opened at least once before) and is closed\n if (thisModalState && !thisModalState?.isOpen) {\n setWasOpen(false)\n setTimeout(() => {\n restoreSelection()\n }, 1)\n }\n }, [modalState, listDrawerSlug, restoreSelection, wasOpen])\n\n return {\n closeListDrawer,\n isListDrawerOpen: isDrawerOpen,\n ListDrawer: BaseListDrawer,\n listDrawerSlug,\n ListDrawerToggler: (props) => (\n <BaseListDrawerToggler\n {...props}\n onClick={() => {\n $storeSelection()\n }}\n />\n ),\n openListDrawer: () => {\n $storeSelection()\n baseOpenDrawer()\n setWasOpen(true)\n },\n }\n}\n", "'use client'\nimport type { LexicalEditor } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { useScrollInfo, useThrottledEffect, useTranslation } from '@payloadcms/ui'\nimport * as React from 'react'\nimport { useMemo } from 'react'\n\nimport type { EditorConfigContextType } from '../../../../../lexical/config/client/EditorConfigProvider.js'\nimport type { SanitizedClientEditorConfig } from '../../../../../lexical/config/types.js'\nimport type { PluginComponentWithAnchor } from '../../../../typesClient.js'\nimport type { ToolbarGroup, ToolbarGroupItem } from '../../../types.js'\nimport type { FixedToolbarFeatureProps } from '../../server/index.js'\n\nimport { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js'\nimport { ToolbarButton } from '../../../shared/ToolbarButton/index.js'\nimport { ToolbarDropdown } from '../../../shared/ToolbarDropdown/index.js'\nimport './index.scss'\n\nfunction ButtonGroupItem({\n anchorElem,\n editor,\n item,\n}: {\n anchorElem: HTMLElement\n editor: LexicalEditor\n item: ToolbarGroupItem\n}): React.ReactNode {\n if (item.Component) {\n return (\n item?.Component && (\n <item.Component anchorElem={anchorElem} editor={editor} item={item} key={item.key} />\n )\n )\n }\n\n if (!item.ChildComponent) {\n return null\n }\n\n return (\n <ToolbarButton editor={editor} item={item} key={item.key}>\n {<item.ChildComponent />}\n </ToolbarButton>\n )\n}\n\nfunction ToolbarGroupComponent({\n anchorElem,\n editor,\n editorConfig,\n group,\n index,\n}: {\n anchorElem: HTMLElement\n editor: LexicalEditor\n editorConfig: SanitizedClientEditorConfig\n group: ToolbarGroup\n index: number\n}): React.ReactNode {\n const { i18n } = useTranslation()\n const {\n fieldProps: { featureClientSchemaMap, schemaPath },\n } = useEditorConfigContext()\n const [dropdownLabel, setDropdownLabel] = React.useState<string | undefined>(undefined)\n const [DropdownIcon, setDropdownIcon] = React.useState<React.FC | undefined>(undefined)\n\n React.useEffect(() => {\n if (group?.type === 'dropdown' && group.items.length && group.ChildComponent) {\n setDropdownIcon(() => group.ChildComponent!)\n } else {\n setDropdownIcon(undefined)\n }\n }, [group])\n\n const onActiveChange = React.useCallback(\n ({ activeItems }: { activeItems: ToolbarGroupItem[] }) => {\n if (!activeItems.length) {\n if (group?.type === 'dropdown' && group.items.length && group.ChildComponent) {\n setDropdownIcon(() => group.ChildComponent!)\n setDropdownLabel(undefined)\n } else {\n setDropdownIcon(undefined)\n setDropdownLabel(undefined)\n }\n return\n }\n const item = activeItems[0]\n\n let label = item.key\n if (item.label) {\n label =\n typeof item.label === 'function'\n ? item.label({ featureClientSchemaMap, i18n, schemaPath })\n : item.label\n }\n // Crop title to max. 25 characters\n if (label.length > 25) {\n label = label.substring(0, 25) + '...'\n }\n setDropdownLabel(label)\n setDropdownIcon(() => item.ChildComponent)\n },\n [group, i18n, featureClientSchemaMap, schemaPath],\n )\n\n return (\n <div className={`fixed-toolbar__group fixed-toolbar__group-${group.key}`} key={group.key}>\n {group.type === 'dropdown' &&\n group.items.length &&\n (DropdownIcon ? (\n <ToolbarDropdown\n anchorElem={anchorElem}\n editor={editor}\n group={group}\n Icon={DropdownIcon}\n itemsContainerClassNames={['fixed-toolbar__dropdown-items']}\n label={dropdownLabel}\n maxActiveItems={1}\n onActiveChange={onActiveChange}\n />\n ) : (\n <ToolbarDropdown\n anchorElem={anchorElem}\n editor={editor}\n group={group}\n itemsContainerClassNames={['fixed-toolbar__dropdown-items']}\n label={dropdownLabel}\n maxActiveItems={1}\n onActiveChange={onActiveChange}\n />\n ))}\n {group.type === 'buttons' &&\n group.items.length &&\n group.items.map((item) => {\n return (\n <ButtonGroupItem anchorElem={anchorElem} editor={editor} item={item} key={item.key} />\n )\n })}\n {index < editorConfig.features.toolbarFixed?.groups.length - 1 && <div className=\"divider\" />}\n </div>\n )\n}\n\nfunction FixedToolbar({\n anchorElem,\n clientProps,\n editor,\n editorConfig,\n parentWithFixedToolbar,\n}: {\n anchorElem: HTMLElement\n clientProps?: FixedToolbarFeatureProps\n editor: LexicalEditor\n editorConfig: SanitizedClientEditorConfig\n parentWithFixedToolbar: EditorConfigContextType | false\n}): React.ReactNode {\n const currentToolbarRef = React.useRef<HTMLDivElement>(null)\n\n const { y } = useScrollInfo()\n\n // Memoize the parent toolbar element\n const parentToolbarElem = useMemo(() => {\n if (!parentWithFixedToolbar || clientProps?.disableIfParentHasFixedToolbar) {\n return null\n }\n\n const parentEditorElem = parentWithFixedToolbar.editorContainerRef.current\n let sibling = parentEditorElem.previousElementSibling\n while (sibling) {\n if (sibling.classList.contains('fixed-toolbar')) {\n return sibling\n }\n sibling = sibling.previousElementSibling\n }\n return null\n }, [clientProps?.disableIfParentHasFixedToolbar, parentWithFixedToolbar])\n\n useThrottledEffect(\n () => {\n if (!parentToolbarElem) {\n // this also checks for clientProps?.disableIfParentHasFixedToolbar indirectly, see the parentToolbarElem useMemo\n return\n }\n const currentToolbarElem = currentToolbarRef.current\n if (!currentToolbarElem) {\n return\n }\n\n const currentRect = currentToolbarElem.getBoundingClientRect()\n const parentRect = parentToolbarElem.getBoundingClientRect()\n\n // we only need to check for vertical overlap\n const overlapping = !(\n currentRect.bottom < parentRect.top || currentRect.top > parentRect.bottom\n )\n\n if (overlapping) {\n currentToolbarElem.className = 'fixed-toolbar fixed-toolbar--overlapping'\n parentToolbarElem.className = 'fixed-toolbar fixed-toolbar--hide'\n } else {\n if (!currentToolbarElem.classList.contains('fixed-toolbar--overlapping')) {\n return\n }\n currentToolbarElem.className = 'fixed-toolbar'\n parentToolbarElem.className = 'fixed-toolbar'\n }\n },\n 50,\n [currentToolbarRef, parentToolbarElem, y],\n )\n\n return (\n <div\n className=\"fixed-toolbar\"\n onFocus={(event) => {\n // Prevent other focus events being triggered. Otherwise, if this was to be clicked while in a child editor,\n // the parent editor will be focused, and the child editor will lose focus.\n event.stopPropagation()\n }}\n ref={currentToolbarRef}\n >\n {editor.isEditable() && (\n <React.Fragment>\n {editorConfig?.features &&\n editorConfig.features?.toolbarFixed?.groups.map((group, i) => {\n return (\n <ToolbarGroupComponent\n anchorElem={anchorElem}\n editor={editor}\n editorConfig={editorConfig}\n group={group}\n index={i}\n key={group.key}\n />\n )\n })}\n </React.Fragment>\n )}\n </div>\n )\n}\n\nconst getParentEditorWithFixedToolbar = (\n editorConfigContext: EditorConfigContextType,\n): EditorConfigContextType | false => {\n if (editorConfigContext.parentEditor?.editorConfig) {\n if (editorConfigContext.parentEditor?.editorConfig.resolvedFeatureMap.has('toolbarFixed')) {\n return editorConfigContext.parentEditor\n } else {\n if (editorConfigContext.parentEditor) {\n return getParentEditorWithFixedToolbar(editorConfigContext.parentEditor)\n }\n }\n }\n return false\n}\n\nexport const FixedToolbarPlugin: PluginComponentWithAnchor<FixedToolbarFeatureProps> = ({\n anchorElem,\n clientProps,\n}) => {\n const [currentEditor] = useLexicalComposerContext()\n const editorConfigContext = useEditorConfigContext()\n\n const { editorConfig: currentEditorConfig } = editorConfigContext\n\n const editor = clientProps.applyToFocusedEditor\n ? editorConfigContext.focusedEditor?.editor || currentEditor\n : currentEditor\n\n const editorConfig = clientProps.applyToFocusedEditor\n ? editorConfigContext.focusedEditor?.editorConfig || currentEditorConfig\n : currentEditorConfig\n\n const parentWithFixedToolbar = getParentEditorWithFixedToolbar(editorConfigContext)\n\n if (clientProps?.disableIfParentHasFixedToolbar) {\n if (parentWithFixedToolbar) {\n return null\n }\n }\n\n if (!editorConfig?.features?.toolbarFixed?.groups?.length) {\n return null\n }\n\n return (\n <FixedToolbar\n anchorElem={anchorElem}\n editor={editor}\n editorConfig={editorConfig}\n parentWithFixedToolbar={parentWithFixedToolbar}\n />\n )\n}\n", "'use client'\nimport type { LexicalEditor } from 'lexical'\n\nimport { mergeRegister } from '@lexical/utils'\nimport { $getSelection } from 'lexical'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport type { ToolbarGroupItem } from '../../types.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport './index.scss'\n\nconst baseClass = 'toolbar-popup__button'\n\nexport const ToolbarButton = ({\n children,\n editor,\n item,\n}: {\n children: React.JSX.Element\n editor: LexicalEditor\n item: ToolbarGroupItem\n}) => {\n const [enabled, setEnabled] = useState<boolean>(true)\n const [active, setActive] = useState<boolean>(false)\n const [className, setClassName] = useState<string>(baseClass)\n const editorConfigContext = useEditorConfigContext()\n\n const updateStates = useCallback(() => {\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if (!selection) {\n return\n }\n if (item.isActive) {\n const isActive = item.isActive({ editor, editorConfigContext, selection })\n if (active !== isActive) {\n setActive(isActive)\n }\n }\n if (item.isEnabled) {\n const isEnabled = item.isEnabled({ editor, editorConfigContext, selection })\n if (enabled !== isEnabled) {\n setEnabled(isEnabled)\n }\n }\n })\n }, [active, editor, editorConfigContext, enabled, item])\n\n useEffect(() => {\n updateStates()\n }, [updateStates])\n\n useEffect(() => {\n document.addEventListener('mouseup', updateStates)\n return () => {\n document.removeEventListener('mouseup', updateStates)\n }\n }, [updateStates])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(() => {\n updateStates()\n }),\n )\n }, [editor, updateStates])\n\n useEffect(() => {\n setClassName(\n [\n baseClass,\n enabled === false ? 'disabled' : '',\n active ? 'active' : '',\n item?.key ? `${baseClass}-` + item.key : '',\n ]\n .filter(Boolean)\n .join(' '),\n )\n }, [enabled, active, className, item.key])\n\n return (\n <button\n className={className}\n onClick={() => {\n if (enabled !== false) {\n editor._updateTags = new Set(['toolbar', ...editor._updateTags]) // without setting the tags, our onSelect will not be able to trigger our onChange as focus onChanges are ignored.\n\n editor.focus(() => {\n // We need to wrap the onSelect in the callback, so the editor is properly focused before the onSelect is called.\n item.onSelect?.({\n editor,\n isActive: active,\n })\n })\n\n return true\n }\n }}\n onMouseDown={(e) => {\n // This fixes a bug where you are unable to click the button if you are in a NESTED editor (editor in blocks field in editor).\n // Thus only happens if you click on the SVG of the button. Clicking on the outside works. Related issue: https://github.com/payloadcms/payload/issues/4025\n // TODO: Find out why exactly it happens and why e.preventDefault() on the mouseDown fixes it. Write that down here, or potentially fix a root cause, if there is any.\n e.preventDefault()\n }}\n type=\"button\"\n >\n {children}\n </button>\n )\n}\n", "'use client'\nimport React, { useCallback, useEffect } from 'react'\n\nconst baseClass = 'toolbar-popup__dropdown'\n\nimport type { LexicalEditor } from 'lexical'\n\nimport { mergeRegister } from '@lexical/utils'\nimport { useTranslation } from '@payloadcms/ui'\nimport { $getSelection } from 'lexical'\n\nimport type { ToolbarDropdownGroup, ToolbarGroupItem } from '../../types.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { DropDown, DropDownItem } from './DropDown.js'\nimport './index.scss'\n\nconst ToolbarItem = ({\n active,\n anchorElem,\n editor,\n enabled,\n item,\n}: {\n active?: boolean\n anchorElem: HTMLElement\n editor: LexicalEditor\n enabled?: boolean\n item: ToolbarGroupItem\n}) => {\n const { i18n } = useTranslation()\n const {\n fieldProps: { featureClientSchemaMap, schemaPath },\n } = useEditorConfigContext()\n\n if (item.Component) {\n return (\n item?.Component && (\n <item.Component\n active={active}\n anchorElem={anchorElem}\n editor={editor}\n enabled={enabled}\n item={item}\n key={item.key}\n />\n )\n )\n }\n\n let title = item.key\n if (item.label) {\n title =\n typeof item.label === 'function'\n ? item.label({ featureClientSchemaMap, i18n, schemaPath })\n : item.label\n }\n // Crop title to max. 25 characters\n if (title.length > 25) {\n title = title.substring(0, 25) + '...'\n }\n\n return (\n <DropDownItem active={active} editor={editor} enabled={enabled} item={item} key={item.key}>\n {item?.ChildComponent && <item.ChildComponent />}\n <span className=\"text\">{title}</span>\n </DropDownItem>\n )\n}\n\nexport const ToolbarDropdown = ({\n anchorElem,\n classNames,\n editor,\n group,\n Icon,\n itemsContainerClassNames,\n label,\n maxActiveItems,\n onActiveChange,\n}: {\n anchorElem: HTMLElement\n classNames?: string[]\n editor: LexicalEditor\n group: ToolbarDropdownGroup\n Icon?: React.FC\n itemsContainerClassNames?: string[]\n label?: string\n /**\n * Maximum number of active items allowed. This is a performance optimization to prevent\n * unnecessary item active checks when the maximum number of active items is reached.\n */\n maxActiveItems?: number\n onActiveChange?: ({ activeItems }: { activeItems: ToolbarGroupItem[] }) => void\n}) => {\n const [activeItemKeys, setActiveItemKeys] = React.useState<string[]>([])\n const [enabledItemKeys, setEnabledItemKeys] = React.useState<string[]>([])\n const [enabledGroup, setEnabledGroup] = React.useState<boolean>(true)\n const editorConfigContext = useEditorConfigContext()\n const { items, key: groupKey } = group\n\n const updateStates = useCallback(() => {\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if (!selection) {\n return\n }\n\n const _activeItemKeys: string[] = []\n const _activeItems: ToolbarGroupItem[] = []\n const _enabledItemKeys: string[] = []\n\n for (const item of items) {\n if (item.isActive && (!maxActiveItems || _activeItemKeys.length < maxActiveItems)) {\n const isActive = item.isActive({ editor, editorConfigContext, selection })\n if (isActive) {\n _activeItemKeys.push(item.key)\n _activeItems.push(item)\n }\n }\n if (item.isEnabled) {\n const isEnabled = item.isEnabled({ editor, editorConfigContext, selection })\n if (isEnabled) {\n _enabledItemKeys.push(item.key)\n }\n } else {\n _enabledItemKeys.push(item.key)\n }\n }\n if (group.isEnabled) {\n setEnabledGroup(group.isEnabled({ editor, editorConfigContext, selection }))\n }\n setActiveItemKeys(_activeItemKeys)\n setEnabledItemKeys(_enabledItemKeys)\n\n if (onActiveChange) {\n onActiveChange({ activeItems: _activeItems })\n }\n })\n }, [editor, editorConfigContext, group, items, maxActiveItems, onActiveChange])\n\n useEffect(() => {\n updateStates()\n }, [updateStates])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(() => {\n updateStates()\n }),\n )\n }, [editor, updateStates])\n\n return (\n <DropDown\n buttonAriaLabel={`${groupKey} dropdown`}\n buttonClassName={[baseClass, `${baseClass}-${groupKey}`, ...(classNames || [])]\n .filter(Boolean)\n .join(' ')}\n disabled={!enabledGroup}\n Icon={Icon}\n itemsContainerClassNames={[`${baseClass}-items`, ...(itemsContainerClassNames || [])]}\n key={groupKey}\n label={label}\n >\n {items.length &&\n items.map((item) => {\n return (\n <ToolbarItem\n active={activeItemKeys.includes(item.key)}\n anchorElem={anchorElem}\n editor={editor}\n enabled={enabledItemKeys.includes(item.key)}\n item={item}\n key={item.key}\n />\n )\n })}\n </DropDown>\n )\n}\n", "'use client'\nimport type { LexicalEditor } from 'lexical'\n\nimport React, { type ReactNode, useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport type { ToolbarGroupItem } from '../../types.js'\n\nconst baseClass = 'toolbar-popup__dropdown-item'\n\ninterface DropDownContextType {\n registerItem: (ref: React.RefObject<HTMLButtonElement | null>) => void\n}\n\nconst DropDownContext = React.createContext<DropDownContextType | null>(null)\n\nexport function DropDownItem({\n active,\n children,\n editor,\n enabled,\n item,\n title,\n}: {\n active?: boolean\n children: React.ReactNode\n editor: LexicalEditor\n enabled?: boolean\n item: ToolbarGroupItem\n title?: string\n}): React.ReactNode {\n const [className, setClassName] = useState<string>(baseClass)\n\n useEffect(() => {\n setClassName(\n [\n baseClass,\n enabled === false ? 'disabled' : '',\n active ? 'active' : '',\n item?.key ? `${baseClass}-${item.key}` : '',\n ]\n .filter(Boolean)\n .join(' '),\n )\n }, [enabled, active, className, item.key])\n\n const ref = useRef<HTMLButtonElement>(null)\n\n const dropDownContext = React.useContext(DropDownContext)\n\n if (dropDownContext === null) {\n throw new Error('DropDownItem must be used within a DropDown')\n }\n\n const { registerItem } = dropDownContext\n\n useEffect(() => {\n if (ref?.current != null) {\n registerItem(ref)\n }\n }, [ref, registerItem])\n\n return (\n <button\n className={className}\n onClick={() => {\n if (enabled !== false) {\n editor._updateTags = new Set(['toolbar', ...editor._updateTags]) // without setting the tags, our onSelect will not be able to trigger our onChange as focus onChanges are ignored.\n\n editor.focus(() => {\n // We need to wrap the onSelect in the callback, so the editor is properly focused before the onSelect is called.\n item.onSelect?.({\n editor,\n isActive: active!,\n })\n })\n }\n }}\n onMouseDown={(e) => {\n // This is required for Firefox compatibility. Without it, the dropdown will disappear without the onClick being called.\n // This only happens in Firefox. Must be something about how Firefox handles focus events differently.\n e.preventDefault()\n }}\n ref={ref}\n title={title}\n type=\"button\"\n >\n {children}\n </button>\n )\n}\n\nfunction DropDownItems({\n children,\n dropDownRef,\n itemsContainerClassNames,\n onClose,\n}: {\n children: React.ReactNode\n dropDownRef: React.Ref<HTMLDivElement>\n itemsContainerClassNames?: string[]\n onClose: () => void\n}): React.ReactElement {\n const [items, setItems] = useState<Array<React.RefObject<HTMLButtonElement | null>>>()\n const [highlightedItem, setHighlightedItem] =\n useState<React.RefObject<HTMLButtonElement | null>>()\n\n const registerItem = useCallback(\n (itemRef: React.RefObject<HTMLButtonElement | null>) => {\n setItems((prev) => (prev != null ? [...prev, itemRef] : [itemRef]))\n },\n [setItems],\n )\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>): void => {\n if (items == null) {\n return\n }\n\n const { key } = event\n\n if (['ArrowDown', 'ArrowUp', 'Escape', 'Tab'].includes(key)) {\n event.preventDefault()\n }\n\n if (key === 'Escape' || key === 'Tab') {\n onClose()\n } else if (key === 'ArrowUp') {\n setHighlightedItem((prev) => {\n if (prev == null) {\n return items[0]\n }\n const index = items.indexOf(prev) - 1\n return items[index === -1 ? items.length - 1 : index]\n })\n } else if (key === 'ArrowDown') {\n setHighlightedItem((prev) => {\n if (prev == null) {\n return items[0]\n }\n return items[items.indexOf(prev) + 1]\n })\n }\n }\n\n const contextValue = useMemo(\n () => ({\n registerItem,\n }),\n [registerItem],\n )\n\n useEffect(() => {\n if (items != null && highlightedItem == null) {\n setHighlightedItem(items[0])\n }\n\n if (highlightedItem != null && highlightedItem?.current != null) {\n highlightedItem.current.focus()\n }\n }, [items, highlightedItem])\n\n return (\n <DropDownContext.Provider value={contextValue}>\n <div\n className={(itemsContainerClassNames ?? ['toolbar-popup__dropdown-items']).join(' ')}\n onKeyDown={handleKeyDown}\n ref={dropDownRef}\n >\n {children}\n </div>\n </DropDownContext.Provider>\n )\n}\n\nexport function DropDown({\n buttonAriaLabel,\n buttonClassName,\n children,\n disabled = false,\n Icon,\n itemsContainerClassNames,\n label,\n stopCloseOnClickSelf,\n}: {\n buttonAriaLabel?: string\n buttonClassName: string\n children: ReactNode\n disabled?: boolean\n Icon?: React.FC\n itemsContainerClassNames?: string[]\n label?: string\n stopCloseOnClickSelf?: boolean\n}): React.ReactNode {\n const dropDownRef = useRef<HTMLDivElement>(null)\n const buttonRef = useRef<HTMLButtonElement>(null)\n const [showDropDown, setShowDropDown] = useState(false)\n\n const handleClose = (): void => {\n setShowDropDown(false)\n if (buttonRef?.current != null) {\n buttonRef.current.focus()\n }\n }\n\n useEffect(() => {\n const button = buttonRef.current\n const dropDown = dropDownRef.current\n\n if (showDropDown && button !== null && dropDown !== null) {\n const { left, top } = button.getBoundingClientRect()\n const scrollTopOffset = window.scrollY || document.documentElement.scrollTop\n dropDown.style.top = `${top + scrollTopOffset + button.offsetHeight + 5}px`\n dropDown.style.left = `${Math.min(left - 5, window.innerWidth - dropDown.offsetWidth - 20)}px`\n }\n }, [dropDownRef, buttonRef, showDropDown])\n\n useEffect(() => {\n const button = buttonRef.current\n\n if (button !== null && showDropDown) {\n const handle = (event: MouseEvent): void => {\n const { target } = event\n if (stopCloseOnClickSelf != null) {\n if (dropDownRef.current != null && dropDownRef.current.contains(target as Node)) {\n return\n }\n }\n if (!button.contains(target as Node)) {\n setShowDropDown(false)\n }\n }\n document.addEventListener('click', handle)\n\n return () => {\n document.removeEventListener('click', handle)\n }\n }\n }, [dropDownRef, buttonRef, showDropDown, stopCloseOnClickSelf])\n\n const portal = createPortal(\n <DropDownItems\n dropDownRef={dropDownRef}\n itemsContainerClassNames={itemsContainerClassNames}\n onClose={handleClose}\n >\n {children}\n </DropDownItems>,\n document.body,\n )\n\n return (\n <React.Fragment>\n <button\n aria-label={buttonAriaLabel}\n className={buttonClassName + (showDropDown ? ' active' : '')}\n disabled={disabled}\n onClick={(event) => {\n event.preventDefault()\n setShowDropDown(!showDropDown)\n }}\n onMouseDown={(e) => {\n // This fixes a bug where you are unable to click the button if you are in a NESTED editor (editor in blocks field in editor).\n // Thus only happens if you click on the SVG of the button. Clicking on the outside works. Related issue: https://github.com/payloadcms/payload/issues/4025\n // TODO: Find out why exactly it happens and why e.preventDefault() on the mouseDown fixes it. Write that down here, or potentially fix a root cause, if there is any.\n e.preventDefault()\n }}\n ref={buttonRef}\n type=\"button\"\n >\n {Icon && <Icon />}\n {label && <span className=\"toolbar-popup__dropdown-label\">{label}</span>}\n <i className=\"toolbar-popup__dropdown-caret\" />\n </button>\n\n {showDropDown && <React.Fragment>{portal}</React.Fragment>}\n </React.Fragment>\n )\n}\n", "'use client'\n\nimport type { FixedToolbarFeatureProps } from '../server/index.js'\n\nimport { createClientFeature } from '../../../../utilities/createClientFeature.js'\nimport { FixedToolbarPlugin } from './Toolbar/index.js'\n\nexport const FixedToolbarFeatureClient = createClientFeature<FixedToolbarFeatureProps>({\n plugins: [\n {\n Component: FixedToolbarPlugin,\n position: 'aboveContainer',\n },\n ],\n})\n", "'use client'\nimport type { LexicalEditor } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { mergeRegister } from '@lexical/utils'\nimport {\n $getSelection,\n $isRangeSelection,\n $isTextNode,\n COMMAND_PRIORITY_LOW,\n SELECTION_CHANGE_COMMAND,\n} from 'lexical'\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport * as React from 'react'\nimport { createPortal } from 'react-dom'\n\nimport type { PluginComponentWithAnchor } from '../../../../typesClient.js'\nimport type { ToolbarGroup, ToolbarGroupItem } from '../../../types.js'\n\nimport { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js'\nimport { getDOMRangeRect } from '../../../../../lexical/utils/getDOMRangeRect.js'\nimport { setFloatingElemPosition } from '../../../../../lexical/utils/setFloatingElemPosition.js'\nimport { ToolbarButton } from '../../../shared/ToolbarButton/index.js'\nimport { ToolbarDropdown } from '../../../shared/ToolbarDropdown/index.js'\nimport './index.scss'\n\nfunction ButtonGroupItem({\n anchorElem,\n editor,\n item,\n}: {\n anchorElem: HTMLElement\n editor: LexicalEditor\n item: ToolbarGroupItem\n}): React.ReactNode {\n if (item.Component) {\n return (\n item?.Component && (\n <item.Component anchorElem={anchorElem} editor={editor} item={item} key={item.key} />\n )\n )\n }\n if (!item.ChildComponent) {\n return null\n }\n\n return (\n <ToolbarButton editor={editor} item={item} key={item.key}>\n <item.ChildComponent />\n </ToolbarButton>\n )\n}\n\nfunction ToolbarGroupComponent({\n anchorElem,\n editor,\n group,\n index,\n}: {\n anchorElem: HTMLElement\n editor: LexicalEditor\n group: ToolbarGroup\n index: number\n}): React.ReactNode {\n const { editorConfig } = useEditorConfigContext()\n\n const [DropdownIcon, setDropdownIcon] = React.useState<React.FC | undefined>()\n\n React.useEffect(() => {\n if (group?.type === 'dropdown' && group.items.length && group.ChildComponent) {\n setDropdownIcon(() => group.ChildComponent)\n } else {\n setDropdownIcon(undefined)\n }\n }, [group])\n\n const onActiveChange = useCallback(\n ({ activeItems }: { activeItems: ToolbarGroupItem[] }) => {\n if (!activeItems.length) {\n if (group?.type === 'dropdown' && group.items.length && group.ChildComponent) {\n setDropdownIcon(() => group.ChildComponent)\n } else {\n setDropdownIcon(undefined)\n }\n return\n }\n const item = activeItems[0]\n setDropdownIcon(() => item.ChildComponent)\n },\n [group],\n )\n\n return (\n <div\n className={`inline-toolbar-popup__group inline-toolbar-popup__group-${group.key}`}\n key={group.key}\n >\n {group.type === 'dropdown' &&\n group.items.length &&\n (DropdownIcon ? (\n <ToolbarDropdown\n anchorElem={anchorElem}\n editor={editor}\n group={group}\n Icon={DropdownIcon}\n maxActiveItems={1}\n onActiveChange={onActiveChange}\n />\n ) : (\n <ToolbarDropdown\n anchorElem={anchorElem}\n editor={editor}\n group={group}\n maxActiveItems={1}\n onActiveChange={onActiveChange}\n />\n ))}\n {group.type === 'buttons' &&\n group.items.length &&\n group.items.map((item) => {\n return (\n <ButtonGroupItem anchorElem={anchorElem} editor={editor} item={item} key={item.key} />\n )\n })}\n {index < editorConfig.features.toolbarInline?.groups.length - 1 && (\n <div className=\"divider\" />\n )}\n </div>\n )\n}\n\nfunction InlineToolbar({\n anchorElem,\n editor,\n}: {\n anchorElem: HTMLElement\n editor: LexicalEditor\n}): React.ReactNode {\n const floatingToolbarRef = useRef<HTMLDivElement | null>(null)\n const caretRef = useRef<HTMLDivElement | null>(null)\n\n const { editorConfig } = useEditorConfigContext()\n\n const closeFloatingToolbar = useCallback(() => {\n if (floatingToolbarRef?.current) {\n const isOpacityZero = floatingToolbarRef.current.style.opacity === '0'\n const isPointerEventsNone = floatingToolbarRef.current.style.pointerEvents === 'none'\n\n if (!isOpacityZero) {\n floatingToolbarRef.current.style.opacity = '0'\n }\n if (!isPointerEventsNone) {\n floatingToolbarRef.current.style.pointerEvents = 'none'\n }\n }\n }, [floatingToolbarRef])\n\n const mouseMoveListener = useCallback(\n (e: MouseEvent) => {\n if (floatingToolbarRef?.current && (e.buttons === 1 || e.buttons === 3)) {\n const isOpacityZero = floatingToolbarRef.current.style.opacity === '0'\n const isPointerEventsNone = floatingToolbarRef.current.style.pointerEvents === 'none'\n if (!isOpacityZero || !isPointerEventsNone) {\n // Check if the mouse is not over the popup\n const x = e.clientX\n const y = e.clientY\n const elementUnderMouse = document.elementFromPoint(x, y)\n if (!floatingToolbarRef.current.contains(elementUnderMouse)) {\n // Mouse is not over the target element => not a normal click, but probably a drag\n closeFloatingToolbar()\n }\n }\n }\n },\n [closeFloatingToolbar],\n )\n\n const mouseUpListener = useCallback(() => {\n if (floatingToolbarRef?.current) {\n if (floatingToolbarRef.current.style.opacity !== '1') {\n floatingToolbarRef.current.style.opacity = '1'\n }\n if (floatingToolbarRef.current.style.pointerEvents !== 'auto') {\n floatingToolbarRef.current.style.pointerEvents = 'auto'\n }\n }\n }, [])\n\n useEffect(() => {\n document.addEventListener('mousemove', mouseMoveListener)\n document.addEventListener('mouseup', mouseUpListener)\n\n return () => {\n document.removeEventListener('mousemove', mouseMoveListener)\n document.removeEventListener('mouseup', mouseUpListener)\n }\n }, [floatingToolbarRef, mouseMoveListener, mouseUpListener])\n\n const $updateTextFormatFloatingToolbar = useCallback(() => {\n const selection = $getSelection()\n\n const nativeSelection = window.getSelection()\n\n if (floatingToolbarRef.current === null) {\n return\n }\n\n const possibleLinkEditor = anchorElem.querySelector(':scope > .link-editor')\n const isLinkEditorVisible =\n possibleLinkEditor !== null &&\n 'style' in possibleLinkEditor &&\n possibleLinkEditor?.style?.['opacity'] === '1'\n\n const rootElement = editor.getRootElement()\n if (\n selection !== null &&\n nativeSelection !== null &&\n !nativeSelection.isCollapsed &&\n rootElement !== null &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n const rangeRect = getDOMRangeRect(nativeSelection, rootElement)\n\n // Position floating toolbar\n const offsetIfFlipped = setFloatingElemPosition({\n alwaysDisplayOnTop: isLinkEditorVisible,\n anchorElem,\n floatingElem: floatingToolbarRef.current,\n horizontalPosition: 'center',\n targetRect: rangeRect,\n })\n\n // Position caret\n if (caretRef.current) {\n setFloatingElemPosition({\n anchorElem: floatingToolbarRef.current,\n anchorFlippedOffset: offsetIfFlipped,\n floatingElem: caretRef.current,\n horizontalOffset: 5,\n horizontalPosition: 'center',\n specialHandlingForCaret: true,\n targetRect: rangeRect,\n verticalGap: 8,\n })\n }\n } else {\n closeFloatingToolbar()\n }\n }, [editor, closeFloatingToolbar, anchorElem])\n\n useEffect(() => {\n const scrollerElem = anchorElem.parentElement\n\n const update = () => {\n editor.getEditorState().read(() => {\n $updateTextFormatFloatingToolbar()\n })\n }\n\n window.addEventListener('resize', update)\n if (scrollerElem) {\n scrollerElem.addEventListener('scroll', update)\n }\n\n return () => {\n window.removeEventListener('resize', update)\n if (scrollerElem) {\n scrollerElem.removeEventListener('scroll', update)\n }\n }\n }, [editor, $updateTextFormatFloatingToolbar, anchorElem])\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n $updateTextFormatFloatingToolbar()\n })\n return mergeRegister(\n editor.registerUpdateListener(({ editorState }) => {\n editorState.read(() => {\n $updateTextFormatFloatingToolbar()\n })\n }),\n\n editor.registerCommand(\n SELECTION_CHANGE_COMMAND,\n () => {\n $updateTextFormatFloatingToolbar()\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, $updateTextFormatFloatingToolbar])\n\n return (\n <div className=\"inline-toolbar-popup\" ref={floatingToolbarRef}>\n <div className=\"caret\" ref={caretRef} />\n {editorConfig?.features &&\n editorConfig.features?.toolbarInline?.groups.map((group, i) => {\n return (\n <ToolbarGroupComponent\n anchorElem={anchorElem}\n editor={editor}\n group={group}\n index={i}\n key={group.key}\n />\n )\n })}\n </div>\n )\n}\n\nfunction useInlineToolbar(\n editor: LexicalEditor,\n anchorElem: HTMLElement,\n): null | React.ReactElement {\n const [isText, setIsText] = useState(false)\n\n const updatePopup = useCallback(() => {\n editor.getEditorState().read(() => {\n // Should not to pop up the floating toolbar when using IME input\n if (editor.isComposing()) {\n return\n }\n const selection = $getSelection()\n const nativeSelection = window.getSelection()\n const rootElement = editor.getRootElement()\n\n if (\n nativeSelection !== null &&\n (!$isRangeSelection(selection) ||\n rootElement === null ||\n !rootElement.contains(nativeSelection.anchorNode))\n ) {\n setIsText(false)\n return\n }\n\n if (!$isRangeSelection(selection)) {\n return\n }\n\n if (selection.getTextContent() !== '') {\n const nodes = selection.getNodes()\n let foundNodeWithText = false\n for (const node of nodes) {\n if ($isTextNode(node)) {\n setIsText(true)\n foundNodeWithText = true\n break\n }\n }\n if (!foundNodeWithText) {\n setIsText(false)\n }\n } else {\n setIsText(false)\n }\n\n const rawTextContent = selection.getTextContent().replace(/\\n/g, '')\n if (!selection.isCollapsed() && rawTextContent === '') {\n setIsText(false)\n return\n }\n })\n }, [editor])\n\n useEffect(() => {\n document.addEventListener('selectionchange', updatePopup)\n document.addEventListener('mouseup', updatePopup)\n return () => {\n document.removeEventListener('selectionchange', updatePopup)\n document.removeEventListener('mouseup', updatePopup)\n }\n }, [updatePopup])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerUpdateListener(() => {\n updatePopup()\n }),\n editor.registerRootListener(() => {\n if (editor.getRootElement() === null) {\n setIsText(false)\n }\n }),\n )\n }, [editor, updatePopup])\n\n if (!isText || !editor.isEditable()) {\n return null\n }\n\n return createPortal(<InlineToolbar anchorElem={anchorElem} editor={editor} />, anchorElem)\n}\n\nexport const InlineToolbarPlugin: PluginComponentWithAnchor<undefined> = ({ anchorElem }) => {\n const [editor] = useLexicalComposerContext()\n\n return useInlineToolbar(editor, anchorElem)\n}\n", "'use client'\nexport function getDOMRangeRect(nativeSelection: Selection, rootElement: HTMLElement): DOMRect {\n const domRange = nativeSelection.getRangeAt(0)\n\n let rect\n\n if (nativeSelection.anchorNode === rootElement) {\n let inner = rootElement\n while (inner.firstElementChild != null) {\n inner = inner.firstElementChild as HTMLElement\n }\n rect = inner.getBoundingClientRect()\n } else {\n rect = domRange.getBoundingClientRect()\n }\n\n return rect\n}\n", "'use client'\nconst VERTICAL_GAP = 10\nconst HORIZONTAL_OFFSET = 32\n\n// TODO: needs refactoring\n// This is supposed to position the floatingElem based on the parent (anchorElem) and the target (targetRect) which is usually the selected text.\n// So basically, it positions the floatingElem either below or above the target (targetRect) and aligns it to the left or center of the target (targetRect).\n// This is used for positioning the floating toolbar (anchor: richtext editor) and its caret (anchor: floating toolbar)\nexport function setFloatingElemPosition(args: {\n alwaysDisplayOnTop?: boolean\n anchorElem: HTMLElement\n anchorFlippedOffset?: number // Offset which was added to the anchor (for caret, floating toolbar) if it was flipped\n floatingElem: HTMLElement\n horizontalOffset?: number\n horizontalPosition?: 'center' | 'left'\n specialHandlingForCaret?: boolean\n targetRect: ClientRect | null\n verticalGap?: number\n}): number | undefined {\n const {\n alwaysDisplayOnTop = false,\n anchorElem,\n anchorFlippedOffset = 0, // Offset which was added to the anchor (for caret, floating toolbar) if it was flipped\n floatingElem,\n horizontalOffset = HORIZONTAL_OFFSET,\n horizontalPosition = 'left',\n specialHandlingForCaret = false,\n targetRect,\n verticalGap = VERTICAL_GAP,\n } = args\n // Returns the top offset if the target was flipped\n const scrollerElem = anchorElem.parentElement\n\n if (targetRect === null || scrollerElem == null) {\n floatingElem.style.opacity = '0'\n floatingElem.style.transform = 'translate(-10000px, -10000px)'\n return\n }\n\n const floatingElemRect = floatingElem.getBoundingClientRect()\n const anchorElementRect = anchorElem.getBoundingClientRect()\n const editorScrollerRect = scrollerElem.getBoundingClientRect()\n\n let top = targetRect.top - floatingElemRect.height - verticalGap\n let left = targetRect.left - horizontalOffset\n\n if (horizontalPosition === 'center') {\n // Calculate left to position floatingElem to the horizontal middle of targetRect\n left = targetRect.left + targetRect.width / 2 - floatingElemRect.width / 2\n }\n\n let addedToTop = 0\n if (!alwaysDisplayOnTop && top < editorScrollerRect.top && !specialHandlingForCaret) {\n addedToTop = floatingElemRect.height + targetRect.height + verticalGap * 2\n\n top += addedToTop\n }\n\n if (horizontalPosition === 'center') {\n if (left + floatingElemRect.width > editorScrollerRect.right) {\n left = editorScrollerRect.right - floatingElemRect.width - horizontalOffset\n } else if (left < editorScrollerRect.left) {\n left = editorScrollerRect.left + horizontalOffset\n }\n } else {\n if (left + floatingElemRect.width > editorScrollerRect.right) {\n left = editorScrollerRect.right - floatingElemRect.width - horizontalOffset\n }\n }\n\n left -= anchorElementRect.left\n\n floatingElem.style.opacity = '1'\n\n if (specialHandlingForCaret && anchorFlippedOffset !== 0) {\n // Floating select toolbar was flipped (positioned below text rather than above). Thus, the caret now needs to be positioned\n // on the other side and rotated.\n top -= anchorElementRect.bottom - anchorFlippedOffset + floatingElemRect.height - 3\n // top += anchorFlippedOffset - anchorElementRect.height - floatingElemRect.height + 2\n floatingElem.style.transform = `translate(${left}px, ${top}px) rotate(180deg)`\n } else {\n top -= anchorElementRect.top\n\n floatingElem.style.transform = `translate(${left}px, ${top}px)`\n }\n\n return addedToTop\n}\n", "'use client'\n\nimport { createClientFeature } from '../../../../utilities/createClientFeature.js'\nimport { InlineToolbarPlugin } from './Toolbar/index.js'\n\nexport const InlineToolbarFeatureClient = createClientFeature({\n plugins: [\n {\n Component: InlineToolbarPlugin,\n position: 'floatingAnchorElem',\n },\n ],\n})\n", "'use client'\n\nimport { TableCellNode, TableNode, TableRowNode } from '@lexical/table'\n\nimport { TableIcon } from '../../../lexical/ui/icons/Table/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { slashMenuBasicGroupWithItems } from '../../shared/slashMenu/basicGroup.js'\nimport { toolbarAddDropdownGroupWithItems } from '../../shared/toolbar/addDropdownGroup.js'\nimport { TableActionMenuPlugin } from './plugins/TableActionMenuPlugin/index.js'\nimport { TableCellResizerPlugin } from './plugins/TableCellResizerPlugin/index.js'\nimport { TableHoverActionsPlugin } from './plugins/TableHoverActionsPlugin/index.js'\nimport {\n OPEN_TABLE_DRAWER_COMMAND,\n TableContext,\n TablePlugin,\n} from './plugins/TablePlugin/index.js'\n\nexport const TableFeatureClient = createClientFeature({\n nodes: [TableNode, TableCellNode, TableRowNode],\n plugins: [\n {\n Component: TablePlugin,\n position: 'normal',\n },\n {\n Component: TableCellResizerPlugin,\n position: 'normal',\n },\n {\n Component: TableActionMenuPlugin,\n position: 'floatingAnchorElem',\n },\n {\n Component: TableHoverActionsPlugin,\n position: 'floatingAnchorElem',\n },\n ],\n providers: [TableContext],\n slashMenu: {\n groups: [\n slashMenuBasicGroupWithItems([\n {\n Icon: TableIcon,\n key: 'table',\n keywords: ['table'],\n label: 'Table',\n onSelect: ({ editor }) => {\n editor.dispatchCommand(OPEN_TABLE_DRAWER_COMMAND, {})\n },\n },\n ]),\n ],\n },\n toolbarFixed: {\n groups: [\n toolbarAddDropdownGroupWithItems([\n {\n ChildComponent: TableIcon,\n key: 'table',\n label: 'Table',\n onSelect: ({ editor }) => {\n editor.dispatchCommand(OPEN_TABLE_DRAWER_COMMAND, {})\n },\n },\n ]),\n ],\n },\n})\n", "'use client'\nimport React from 'react'\n\nexport const TableIcon: React.FC = () => {\n return (\n <svg\n className=\"icon\"\n fill=\"none\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n clipRule=\"evenodd\"\n d=\"M5.33333 4.5C4.8731 4.5 4.5 4.8731 4.5 5.33333V7.5H9.5V4.5H5.33333ZM5.33333 3.5C4.32081 3.5 3.5 4.32081 3.5 5.33333V14.6667C3.5 15.6792 4.32081 16.5 5.33333 16.5H14.6667C15.6792 16.5 16.5 15.6792 16.5 14.6667V5.33333C16.5 4.32081 15.6792 3.5 14.6667 3.5H5.33333ZM10.5 4.5V7.5H15.5V5.33333C15.5 4.8731 15.1269 4.5 14.6667 4.5H10.5ZM15.5 8.5H10.5V11.5H15.5V8.5ZM15.5 12.5H10.5V15.5H14.6667C15.1269 15.5 15.5 15.1269 15.5 14.6667V12.5ZM9.5 15.5V12.5H4.5V14.6667C4.5 15.1269 4.8731 15.5 5.33333 15.5H9.5ZM4.5 11.5H9.5V8.5H4.5V11.5Z\"\n fill=\"currentColor\"\n fillRule=\"evenodd\"\n />\n </svg>\n )\n}\n", "'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 getTableObserverFromTableElement,\n TableCellHeaderStates,\n TableCellNode,\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\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\n setCanMergeCells(currentSelectionCounts.columns > 1 || currentSelectionCounts.rows > 1)\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 tableObserver = getTableObserverFromTableElement(tableElement)\n if (tableObserver !== null) {\n tableObserver.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: null | TableCellNode = 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 const newStyle = tableCellNode.getHeaderStyles() ^ TableCellHeaderStates.ROW\n tableRow.getChildren().forEach((tableCell) => {\n if (!$isTableCellNode(tableCell)) {\n throw new Error('Expected table cell')\n }\n\n tableCell.setHeaderStyles(newStyle, 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 const newStyle = tableCellNode.getHeaderStyles() ^ TableCellHeaderStates.COLUMN\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.setHeaderStyles(newStyle, TableCellHeaderStates.COLUMN)\n }\n clearTableSelection()\n onClose()\n })\n }, [editor, tableCellNode, clearTableSelection, onClose])\n\n const toggleRowStriping = useCallback(() => {\n editor.update(() => {\n if (tableCellNode.isAttached()) {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n if (tableNode) {\n tableNode.setRowStriping(!tableNode.getRowStriping())\n }\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-row-striping\"\n onClick={() => toggleRowStriping()}\n type=\"button\"\n >\n <span className=\"text\">Toggle Row Striping</span>\n </button>\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<null | TableCellNode>(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", "'use client'\nimport React from 'react'\n\nexport const MeatballsIcon: React.FC = () => (\n <svg fill=\"none\" height=\"18\" viewBox=\"0 0 20 20\" width=\"18\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M5 11C5.55228 11 6 10.5523 6 10C6 9.44772 5.55228 9 5 9C4.44772 9 4 9.44772 4 10C4 10.5523 4.44772 11 5 11Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M10 11C10.5523 11 11 10.5523 11 10C11 9.44772 10.5523 9 10 9C9.44772 9 9 9.44772 9 10C9 10.5523 9.44772 11 10 11Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M15 11C15.5523 11 16 10.5523 16 10C16 9.44772 15.5523 9 15 9C14.4477 9 14 9.44772 14 10C14 10.5523 14.4477 11 15 11Z\"\n fill=\"currentColor\"\n />\n </svg>\n)\n", "'use client'\n\nimport type { TableCellNode, TableDOMCell, TableMapType } from '@lexical/table'\nimport type { LexicalEditor } from 'lexical'\nimport type { JSX, MouseEventHandler } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport {\n $computeTableMapSkipCellCheck,\n $getTableNodeFromLexicalNodeOrThrow,\n $getTableRowIndexFromTableCellNode,\n $isTableCellNode,\n $isTableRowNode,\n getDOMCellFromTarget,\n TableNode,\n} from '@lexical/table'\nimport { calculateZoomLevel } from '@lexical/utils'\nimport { $getNearestNodeFromDOMNode } from 'lexical'\nimport * as React from 'react'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport type { PluginComponent } from '../../../../typesClient.js'\n\nimport { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js'\n\ntype MousePosition = {\n x: number\n y: number\n}\n\ntype MouseDraggingDirection = 'bottom' | 'right'\n\nconst MIN_ROW_HEIGHT = 33\nconst MIN_COLUMN_WIDTH = 92\n\nfunction TableCellResizer({ editor }: { editor: LexicalEditor }): JSX.Element {\n const targetRef = useRef<HTMLElement | null>(null)\n const resizerRef = useRef<HTMLDivElement | null>(null)\n const tableRectRef = useRef<ClientRect | null>(null)\n const editorConfig = useEditorConfigContext()\n\n const mouseStartPosRef = useRef<MousePosition | null>(null)\n const [mouseCurrentPos, updateMouseCurrentPos] = useState<MousePosition | null>(null)\n\n const [activeCell, updateActiveCell] = useState<null | TableDOMCell>(null)\n const [isMouseDown, updateIsMouseDown] = useState<boolean>(false)\n const [draggingDirection, updateDraggingDirection] = useState<MouseDraggingDirection | null>(null)\n\n const resetState = useCallback(() => {\n updateActiveCell(null)\n targetRef.current = null\n updateDraggingDirection(null)\n mouseStartPosRef.current = null\n tableRectRef.current = null\n }, [])\n\n const isMouseDownOnEvent = (event: MouseEvent) => {\n return (event.buttons & 1) === 1\n }\n\n useEffect(() => {\n return editor.registerNodeTransform(TableNode, (tableNode) => {\n if (tableNode.getColWidths()) {\n return tableNode\n }\n\n const numColumns = tableNode.getColumnCount()\n const columnWidth = MIN_COLUMN_WIDTH\n\n tableNode.setColWidths(Array(numColumns).fill(columnWidth))\n return tableNode\n })\n }, [editor])\n\n useEffect(() => {\n const onMouseMove = (event: MouseEvent) => {\n setTimeout(() => {\n const target = event.target\n\n if (draggingDirection) {\n updateMouseCurrentPos({\n x: event.clientX,\n y: event.clientY,\n })\n return\n }\n updateIsMouseDown(isMouseDownOnEvent(event))\n if (resizerRef.current && resizerRef.current.contains(target as Node)) {\n return\n }\n\n if (targetRef.current !== target) {\n targetRef.current = target as HTMLElement\n const cell = getDOMCellFromTarget(target as HTMLElement)\n\n if (cell && activeCell !== cell) {\n editor.update(() => {\n const tableCellNode = $getNearestNodeFromDOMNode(cell.elem)\n\n if (!tableCellNode) {\n throw new Error('TableCellResizer: Table cell node not found.')\n }\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n const tableElement = editor.getElementByKey(tableNode.getKey())\n\n if (!tableElement) {\n throw new Error('TableCellResizer: Table element not found.')\n }\n\n targetRef.current = target as HTMLElement\n tableRectRef.current = tableElement.getBoundingClientRect()\n updateActiveCell(cell)\n })\n } else if (cell == null) {\n resetState()\n }\n }\n }, 0)\n }\n\n const onMouseDown = (event: MouseEvent) => {\n setTimeout(() => {\n updateIsMouseDown(true)\n }, 0)\n }\n\n const onMouseUp = (event: MouseEvent) => {\n setTimeout(() => {\n updateIsMouseDown(false)\n }, 0)\n }\n\n const removeRootListener = editor.registerRootListener((rootElement, prevRootElement) => {\n prevRootElement?.removeEventListener('mousemove', onMouseMove)\n prevRootElement?.removeEventListener('mousedown', onMouseDown)\n prevRootElement?.removeEventListener('mouseup', onMouseUp)\n rootElement?.addEventListener('mousemove', onMouseMove)\n rootElement?.addEventListener('mousedown', onMouseDown)\n rootElement?.addEventListener('mouseup', onMouseUp)\n })\n\n return () => {\n removeRootListener()\n }\n }, [activeCell, draggingDirection, editor, resetState])\n\n const isHeightChanging = (direction: MouseDraggingDirection) => {\n if (direction === 'bottom') {\n return true\n }\n return false\n }\n\n const updateRowHeight = useCallback(\n (heightChange: number) => {\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n\n editor.update(\n () => {\n const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem)\n if (!$isTableCellNode(tableCellNode)) {\n throw new Error('TableCellResizer: Table cell node not found.')\n }\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n\n const tableRowIndex =\n $getTableRowIndexFromTableCellNode(tableCellNode) + tableCellNode.getRowSpan() - 1\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 let height = tableRow.getHeight()\n if (height === undefined) {\n const rowCells = tableRow.getChildren<TableCellNode>()\n height = Math.min(\n ...rowCells.map((cell) => getCellNodeHeight(cell, editor) ?? Infinity),\n )\n }\n\n const newHeight = Math.max(height + heightChange, MIN_ROW_HEIGHT)\n tableRow.setHeight(newHeight)\n },\n { tag: 'skip-scroll-into-view' },\n )\n },\n [activeCell, editor],\n )\n\n const getCellNodeHeight = (\n cell: TableCellNode,\n activeEditor: LexicalEditor,\n ): number | undefined => {\n const domCellNode = activeEditor.getElementByKey(cell.getKey())\n return domCellNode?.clientHeight\n }\n\n const getCellColumnIndex = (tableCellNode: TableCellNode, tableMap: TableMapType) => {\n for (let row = 0; row < tableMap.length; row++) {\n for (let column = 0; column < tableMap[row].length; column++) {\n if (tableMap[row][column].cell === tableCellNode) {\n return column\n }\n }\n }\n }\n\n const updateColumnWidth = useCallback(\n (widthChange: number) => {\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n editor.update(\n () => {\n const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem)\n if (!$isTableCellNode(tableCellNode)) {\n throw new Error('TableCellResizer: Table cell node not found.')\n }\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n const [tableMap] = $computeTableMapSkipCellCheck(tableNode, null, null)\n const columnIndex = getCellColumnIndex(tableCellNode, tableMap)\n if (columnIndex === undefined) {\n throw new Error('TableCellResizer: Table column not found.')\n }\n\n const colWidths = tableNode.getColWidths()\n if (!colWidths) {\n return\n }\n const width = colWidths[columnIndex]\n if (width === undefined) {\n return\n }\n const newColWidths = [...colWidths]\n const newWidth = Math.max(width + widthChange, MIN_COLUMN_WIDTH)\n newColWidths[columnIndex] = newWidth\n tableNode.setColWidths(newColWidths)\n },\n { tag: 'skip-scroll-into-view' },\n )\n },\n [activeCell, editor],\n )\n\n const mouseUpHandler = useCallback(\n (direction: MouseDraggingDirection) => {\n const handler = (event: MouseEvent) => {\n event.preventDefault()\n event.stopPropagation()\n\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n\n if (mouseStartPosRef.current) {\n const { x, y } = mouseStartPosRef.current\n\n if (activeCell === null) {\n return\n }\n const zoom = calculateZoomLevel(event.target as Element)\n\n if (isHeightChanging(direction)) {\n const heightChange = (event.clientY - y) / zoom\n updateRowHeight(heightChange)\n } else {\n const widthChange = (event.clientX - x) / zoom\n updateColumnWidth(widthChange)\n }\n\n resetState()\n document.removeEventListener('mouseup', handler)\n }\n }\n return handler\n },\n [activeCell, resetState, updateColumnWidth, updateRowHeight],\n )\n\n const toggleResize = useCallback(\n (direction: MouseDraggingDirection): MouseEventHandler<HTMLDivElement> =>\n (event) => {\n event.preventDefault()\n event.stopPropagation()\n\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n\n mouseStartPosRef.current = {\n x: event.clientX,\n y: event.clientY,\n }\n updateMouseCurrentPos(mouseStartPosRef.current)\n updateDraggingDirection(direction)\n\n document.addEventListener('mouseup', mouseUpHandler(direction))\n },\n [activeCell, mouseUpHandler],\n )\n\n const getResizers = useCallback(() => {\n if (activeCell) {\n const { height, left, top, width } = activeCell.elem.getBoundingClientRect()\n const zoom = calculateZoomLevel(activeCell.elem)\n const zoneWidth = 10 // Pixel width of the zone where you can drag the edge\n const styles = {\n bottom: {\n backgroundColor: 'none',\n cursor: 'row-resize',\n height: `${zoneWidth}px`,\n left: `${window.pageXOffset + left}px`,\n top: `${window.pageYOffset + top + height - zoneWidth / 2}px`,\n width: `${width}px`,\n },\n right: {\n backgroundColor: 'none',\n cursor: 'col-resize',\n height: `${height}px`,\n left: `${window.pageXOffset + left + width - zoneWidth / 2}px`,\n top: `${window.pageYOffset + top}px`,\n width: `${zoneWidth}px`,\n },\n }\n\n const tableRect = tableRectRef.current\n\n if (draggingDirection && mouseCurrentPos && tableRect) {\n if (isHeightChanging(draggingDirection)) {\n styles[draggingDirection].left = `${window.pageXOffset + tableRect.left}px`\n styles[draggingDirection].top = `${window.pageYOffset + mouseCurrentPos.y / zoom}px`\n styles[draggingDirection].height = '3px'\n styles[draggingDirection].width = `${tableRect.width}px`\n } else {\n styles[draggingDirection].top = `${window.pageYOffset + tableRect.top}px`\n styles[draggingDirection].left = `${window.pageXOffset + mouseCurrentPos.x / zoom}px`\n styles[draggingDirection].width = '3px'\n styles[draggingDirection].height = `${tableRect.height}px`\n }\n\n styles[draggingDirection].backgroundColor = '#adf'\n }\n\n return styles\n }\n\n return {\n bottom: null,\n left: null,\n right: null,\n top: null,\n }\n }, [activeCell, draggingDirection, mouseCurrentPos])\n\n const resizerStyles = getResizers()\n\n return (\n <div ref={resizerRef}>\n {activeCell != null && !isMouseDown && (\n <React.Fragment>\n <div\n className={`${editorConfig.editorConfig.lexical.theme.tableCellResizer} TableCellResizer__ui`}\n onMouseDown={toggleResize('right')}\n style={resizerStyles.right || undefined}\n />\n <div\n className={`${editorConfig.editorConfig.lexical.theme.tableCellResizer} TableCellResizer__ui`}\n onMouseDown={toggleResize('bottom')}\n style={resizerStyles.bottom || undefined}\n />\n </React.Fragment>\n )}\n </div>\n )\n}\n\nexport const TableCellResizerPlugin: PluginComponent = () => {\n const [editor] = useLexicalComposerContext()\n const isEditable = useLexicalEditable()\n\n return useMemo(\n () => (isEditable ? createPortal(<TableCellResizer editor={editor} />, document.body) : null),\n [editor, isEditable],\n )\n}\n", "'use client'\n\nimport type { TableCellNode, TableRowNode } from '@lexical/table'\nimport type { EditorConfig, NodeKey } from 'lexical'\nimport type { JSX } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport {\n $getTableColumnIndexFromTableCellNode,\n $getTableRowIndexFromTableCellNode,\n $insertTableColumn__EXPERIMENTAL,\n $insertTableRow__EXPERIMENTAL,\n $isTableCellNode,\n $isTableNode,\n TableNode,\n} from '@lexical/table'\nimport { $findMatchingParent, mergeRegister } from '@lexical/utils'\nimport { $getNearestNodeFromDOMNode } from 'lexical'\nimport { useEffect, useMemo, useRef, useState } from 'react'\nimport * as React from 'react'\nimport { createPortal } from 'react-dom'\n\nimport { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js'\nimport { useDebounce } from '../../utils/useDebounce.js'\n\nconst BUTTON_WIDTH_PX = 20\n\nfunction TableHoverActionsContainer({\n anchorElem,\n}: {\n anchorElem: HTMLElement\n}): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n const editorConfig = useEditorConfigContext()\n const [isShownRow, setShownRow] = useState<boolean>(false)\n const [isShownColumn, setShownColumn] = useState<boolean>(false)\n const [shouldListenMouseMove, setShouldListenMouseMove] = useState<boolean>(false)\n const [position, setPosition] = useState({})\n const tableSetRef = useRef<Set<NodeKey>>(new Set())\n const tableCellDOMNodeRef = useRef<HTMLElement | null>(null)\n\n const debouncedOnMouseMove = useDebounce(\n (event: MouseEvent) => {\n const { isOutside, tableDOMNode } = getMouseInfo(event, editorConfig.editorConfig?.lexical)\n\n if (isOutside) {\n setShownRow(false)\n setShownColumn(false)\n return\n }\n\n if (!tableDOMNode) {\n return\n }\n\n tableCellDOMNodeRef.current = tableDOMNode\n\n let hoveredRowNode: null | TableCellNode = null\n let hoveredColumnNode: null | TableCellNode = null\n let tableDOMElement: HTMLElement | null = null\n\n editor.update(() => {\n const maybeTableCell = $getNearestNodeFromDOMNode(tableDOMNode)\n\n if ($isTableCellNode(maybeTableCell)) {\n const table = $findMatchingParent(maybeTableCell, (node) => $isTableNode(node))\n if (!$isTableNode(table)) {\n return\n }\n\n tableDOMElement = editor.getElementByKey(table?.getKey())\n\n if (tableDOMElement) {\n const rowCount = table.getChildrenSize()\n const colCount =\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n ((table as TableNode).getChildAtIndex(0) as TableRowNode)?.getChildrenSize()\n\n const rowIndex = $getTableRowIndexFromTableCellNode(maybeTableCell)\n const colIndex = $getTableColumnIndexFromTableCellNode(maybeTableCell)\n\n if (rowIndex === rowCount - 1) {\n hoveredRowNode = maybeTableCell\n } else if (colIndex === colCount - 1) {\n hoveredColumnNode = maybeTableCell\n }\n }\n }\n })\n\n if (tableDOMElement) {\n const {\n bottom: tableElemBottom,\n height: tableElemHeight,\n left: tableElemLeft,\n right: tableElemRight,\n width: tableElemWidth,\n y: tableElemY,\n } = (tableDOMElement as HTMLTableElement).getBoundingClientRect()\n\n const { left: editorElemLeft, y: editorElemY } = anchorElem.getBoundingClientRect()\n\n if (hoveredRowNode) {\n setShownColumn(false)\n setShownRow(true)\n setPosition({\n height: BUTTON_WIDTH_PX,\n left: tableElemLeft - editorElemLeft,\n top: tableElemBottom - editorElemY + 5,\n width: tableElemWidth,\n })\n } else if (hoveredColumnNode) {\n setShownColumn(true)\n setShownRow(false)\n setPosition({\n height: tableElemHeight,\n left: tableElemRight - editorElemLeft + 5,\n top: tableElemY - editorElemY,\n width: BUTTON_WIDTH_PX,\n })\n }\n }\n },\n 50,\n 250,\n )\n\n // Hide the buttons on any table dimensions change to prevent last row cells\n // overlap behind the 'Add Row' button when text entry changes cell height\n const tableResizeObserver = useMemo(() => {\n return new ResizeObserver(() => {\n setShownRow(false)\n setShownColumn(false)\n })\n }, [])\n\n useEffect(() => {\n if (!shouldListenMouseMove) {\n return\n }\n\n document.addEventListener('mousemove', debouncedOnMouseMove)\n\n return () => {\n setShownRow(false)\n setShownColumn(false)\n\n document.removeEventListener('mousemove', debouncedOnMouseMove)\n }\n }, [shouldListenMouseMove, debouncedOnMouseMove])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerMutationListener(\n TableNode,\n (mutations) => {\n editor.getEditorState().read(() => {\n for (const [key, type] of mutations) {\n const tableDOMElement = editor.getElementByKey(key)\n\n switch (type) {\n case 'created':\n tableSetRef.current.add(key)\n setShouldListenMouseMove(tableSetRef.current.size > 0)\n if (tableDOMElement) {\n tableResizeObserver.observe(tableDOMElement)\n }\n break\n\n case 'destroyed':\n tableSetRef.current.delete(key)\n setShouldListenMouseMove(tableSetRef.current.size > 0)\n // Reset resize observers\n tableResizeObserver.disconnect()\n tableSetRef.current.forEach((tableKey: NodeKey) => {\n const tableElement = editor.getElementByKey(tableKey)\n if (tableElement) {\n tableResizeObserver.observe(tableElement)\n }\n })\n break\n\n default:\n break\n }\n }\n })\n },\n { skipInitialization: false },\n ),\n )\n }, [editor, tableResizeObserver])\n\n const insertAction = (insertRow: boolean) => {\n editor.update(() => {\n if (tableCellDOMNodeRef.current) {\n const maybeTableNode = $getNearestNodeFromDOMNode(tableCellDOMNodeRef.current)\n maybeTableNode?.selectEnd()\n if (insertRow) {\n $insertTableRow__EXPERIMENTAL()\n setShownRow(false)\n } else {\n $insertTableColumn__EXPERIMENTAL()\n setShownColumn(false)\n }\n }\n })\n }\n\n if (!editor?.isEditable()) {\n return null\n }\n\n return (\n <>\n {isShownRow && (\n <button\n className={editorConfig.editorConfig.lexical.theme.tableAddRows}\n onClick={() => insertAction(true)}\n style={{ ...position }}\n />\n )}\n {isShownColumn && (\n <button\n className={editorConfig.editorConfig.lexical.theme.tableAddColumns}\n onClick={() => insertAction(false)}\n style={{ ...position }}\n />\n )}\n </>\n )\n}\n\nfunction getMouseInfo(\n event: MouseEvent,\n editorConfig: EditorConfig,\n): {\n isOutside: boolean\n tableDOMNode: HTMLElement | null\n} {\n const target = event.target\n\n if (target && target instanceof HTMLElement) {\n const tableDOMNode = target.closest<HTMLElement>(\n `td.${editorConfig.theme.tableCell}, th.${editorConfig.theme.tableCell}`,\n )\n\n const isOutside = !(\n tableDOMNode ||\n target.closest<HTMLElement>(`button.${editorConfig.theme.tableAddRows}`) ||\n target.closest<HTMLElement>(`button.${editorConfig.theme.tableAddColumns}`) ||\n target.closest<HTMLElement>(`div.${editorConfig.theme.tableCellResizer}`)\n )\n\n return { isOutside, tableDOMNode }\n } else {\n return { isOutside: true, tableDOMNode: null }\n }\n}\n\nexport function TableHoverActionsPlugin({\n anchorElem = document.body,\n}: {\n anchorElem?: HTMLElement\n}): null | React.ReactPortal {\n const [editor] = useLexicalComposerContext()\n if (!editor?.isEditable()) {\n return null\n }\n\n return createPortal(<TableHoverActionsContainer anchorElem={anchorElem} />, anchorElem)\n}\n", "'use client'\nimport { useMemo, useRef } from 'react'\n\nimport debounce from './debounce.js'\n\nexport function useDebounce<T extends (...args: never[]) => void>(\n fn: T,\n ms: number,\n maxWait?: number,\n) {\n const funcRef = useRef<null | T>(null)\n funcRef.current = fn\n\n return useMemo(\n () =>\n debounce(\n (...args: Parameters<T>) => {\n if (funcRef.current) {\n funcRef.current(...args)\n }\n },\n ms,\n { maxWait },\n ),\n [ms, maxWait],\n )\n}\n", "'use client'\n// Copied & modified from https://github.com/lodash/lodash/blob/main/src/debounce.ts\n/*\nThe MIT License\n\nCopyright JS Foundation and other contributors <https://js.foundation/>\n\nBased on Underscore.js, copyright Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>\n\nThis software consists of voluntary contributions made by many\nindividuals. For exact contribution history, see the revision history\navailable at https://github.com/lodash/lodash\n\nThe following license applies to all parts of this software except as\ndocumented below:\n\n====\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n====\n\nCopyright and related rights for sample code are waived via CC0. Sample\ncode is defined as all source code displayed within the prose of the\ndocumentation.\n\nCC0: http://creativecommons.org/publicdomain/zero/1.0/\n\n====\n\nFiles located in the node_modules and vendor directories are externally\nmaintained libraries used by this software which have their own\nlicenses; we recommend you read them, as their terms may differ from the\nterms above.\n */\n\n/** Error message constants. */\nconst FUNC_ERROR_TEXT = 'Expected a function'\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nconst nativeMax = Math.max,\n nativeMin = Math.min\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n let lastArgs,\n lastCallTime,\n lastInvokeTime = 0,\n lastThis,\n leading = false,\n maxing = false,\n maxWait,\n result,\n timerId,\n trailing = true\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT)\n }\n wait = wait || 0\n if (typeof options === 'object') {\n leading = !!options.leading\n maxing = 'maxWait' in options\n maxWait = maxing ? nativeMax(options.maxWait || 0, wait) : maxWait\n trailing = 'trailing' in options ? !!options.trailing : trailing\n }\n\n function invokeFunc(time) {\n const args = lastArgs,\n thisArg = lastThis\n\n lastArgs = lastThis = undefined\n lastInvokeTime = time\n result = func.apply(thisArg, args)\n return result\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait)\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result\n }\n\n function remainingWait(time) {\n const timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall\n\n return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting\n }\n\n function shouldInvoke(time) {\n const timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (\n lastCallTime === undefined ||\n timeSinceLastCall >= wait ||\n timeSinceLastCall < 0 ||\n (maxing && timeSinceLastInvoke >= maxWait)\n )\n }\n\n function timerExpired() {\n const time = Date.now()\n if (shouldInvoke(time)) {\n return trailingEdge(time)\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time))\n }\n\n function trailingEdge(time) {\n timerId = undefined\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time)\n }\n lastArgs = lastThis = undefined\n return result\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId)\n }\n lastInvokeTime = 0\n lastArgs = lastCallTime = lastThis = timerId = undefined\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(Date.now())\n }\n\n function debounced() {\n const time = Date.now(),\n isInvoking = shouldInvoke(time)\n\n // eslint-disable-next-line prefer-rest-params\n lastArgs = arguments\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n lastThis = this\n lastCallTime = time\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime)\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId)\n timerId = setTimeout(timerExpired, wait)\n return invokeFunc(lastCallTime)\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait)\n }\n return result\n }\n debounced.cancel = cancel\n debounced.flush = flush\n return debounced\n}\n\nexport default debounce\n", "'use client'\n\nimport type {\n EditorThemeClasses,\n Klass,\n LexicalCommand,\n LexicalEditor,\n LexicalNode,\n RangeSelection,\n} from 'lexical'\nimport type { JSX } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { TablePlugin as LexicalReactTablePlugin } from '@lexical/react/LexicalTablePlugin'\nimport { INSERT_TABLE_COMMAND, TableNode } from '@lexical/table'\nimport { mergeRegister } from '@lexical/utils'\nimport { formatDrawerSlug, useEditDepth } from '@payloadcms/ui'\nimport { $getSelection, $isRangeSelection, COMMAND_PRIORITY_EDITOR, createCommand } from 'lexical'\nimport { createContext, useContext, useEffect, useMemo, useState } from 'react'\nimport * as React from 'react'\n\nimport type { PluginComponent } from '../../../../typesClient.js'\n\nimport { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js'\nimport { FieldsDrawer } from '../../../../../utilities/fieldsDrawer/Drawer.js'\nimport { useLexicalDrawer } from '../../../../../utilities/fieldsDrawer/useLexicalDrawer.js'\nimport './index.scss'\n\nexport type CellContextShape = {\n cellEditorConfig: CellEditorConfig | null\n cellEditorPlugins: Array<JSX.Element> | JSX.Element | null\n set: (\n cellEditorConfig: CellEditorConfig | null,\n cellEditorPlugins: Array<JSX.Element> | JSX.Element | null,\n ) => void\n}\n\nexport type CellEditorConfig = Readonly<{\n namespace: string\n nodes?: ReadonlyArray<Klass<LexicalNode>>\n onError: (error: Error, editor: LexicalEditor) => void\n readOnly?: boolean\n theme?: EditorThemeClasses\n}>\n\nexport const OPEN_TABLE_DRAWER_COMMAND: LexicalCommand<{}> = createCommand(\n 'OPEN_EMBED_DRAWER_COMMAND',\n)\n\nexport const CellContext = createContext<CellContextShape>({\n cellEditorConfig: null,\n cellEditorPlugins: null,\n set: () => {\n // Empty\n },\n})\n\nexport function TableContext({ children }: { children: JSX.Element }) {\n const [contextValue, setContextValue] = useState<{\n cellEditorConfig: CellEditorConfig | null\n cellEditorPlugins: Array<JSX.Element> | JSX.Element | null\n }>({\n cellEditorConfig: null,\n cellEditorPlugins: null,\n })\n return (\n <CellContext.Provider\n value={useMemo(\n () => ({\n cellEditorConfig: contextValue.cellEditorConfig,\n cellEditorPlugins: contextValue.cellEditorPlugins,\n set: (cellEditorConfig, cellEditorPlugins) => {\n setContextValue({ cellEditorConfig, cellEditorPlugins })\n },\n }),\n [contextValue.cellEditorConfig, contextValue.cellEditorPlugins],\n )}\n >\n {children}\n </CellContext.Provider>\n )\n}\n\nexport const TablePlugin: PluginComponent = () => {\n const [editor] = useLexicalComposerContext()\n const cellContext = useContext(CellContext)\n const editDepth = useEditDepth()\n const {\n fieldProps: { schemaPath },\n uuid,\n } = useEditorConfigContext()\n\n const drawerSlug = formatDrawerSlug({\n slug: 'lexical-table-create-' + uuid,\n depth: editDepth,\n })\n const { toggleDrawer } = useLexicalDrawer(drawerSlug, true)\n\n useEffect(() => {\n if (!editor.hasNodes([TableNode])) {\n throw new Error('TablePlugin: TableNode is not registered on editor')\n }\n\n return mergeRegister(\n editor.registerCommand(\n OPEN_TABLE_DRAWER_COMMAND,\n () => {\n let rangeSelection: null | RangeSelection = null\n\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n rangeSelection = selection\n }\n })\n\n if (rangeSelection) {\n toggleDrawer()\n }\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n )\n }, [cellContext, editor, toggleDrawer])\n\n return (\n <React.Fragment>\n <FieldsDrawer\n drawerSlug={drawerSlug}\n drawerTitle=\"Create Table\"\n featureKey=\"experimental_table\"\n handleDrawerSubmit={(_fields, data) => {\n if (!data.columns || !data.rows) {\n return\n }\n\n editor.dispatchCommand(INSERT_TABLE_COMMAND, {\n columns: String(data.columns),\n rows: String(data.rows),\n })\n }}\n schemaPath={schemaPath}\n schemaPathSuffix=\"fields\"\n />\n <LexicalReactTablePlugin hasCellBackgroundColor={false} hasCellMerge />\n </React.Fragment>\n )\n}\n", "'use client'\n\nimport { $isNodeSelection } from 'lexical'\n\nimport { UploadIcon } from '../../../lexical/ui/icons/Upload/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { slashMenuBasicGroupWithItems } from '../../shared/slashMenu/basicGroup.js'\nimport { toolbarAddDropdownGroupWithItems } from '../../shared/toolbar/addDropdownGroup.js'\nimport { INSERT_UPLOAD_WITH_DRAWER_COMMAND } from './drawer/commands.js'\nimport { $isUploadNode, UploadNode } from './nodes/UploadNode.js'\nimport { UploadPlugin } from './plugin/index.js'\n\nexport type UploadFeaturePropsClient = {\n collections: {\n [collection: string]: {\n hasExtraFields: boolean\n }\n }\n}\n\nexport const UploadFeatureClient = createClientFeature<UploadFeaturePropsClient>({\n nodes: [UploadNode],\n plugins: [\n {\n Component: UploadPlugin,\n position: 'normal',\n },\n ],\n slashMenu: {\n groups: [\n slashMenuBasicGroupWithItems([\n {\n Icon: UploadIcon,\n key: 'upload',\n keywords: ['upload', 'image', 'file', 'img', 'picture', 'photo', 'media'],\n label: ({ i18n }) => {\n return i18n.t('lexical:upload:label')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INSERT_UPLOAD_WITH_DRAWER_COMMAND, {\n replace: false,\n })\n },\n },\n ]),\n ],\n },\n toolbarFixed: {\n groups: [\n toolbarAddDropdownGroupWithItems([\n {\n ChildComponent: UploadIcon,\n isActive: ({ selection }) => {\n if (!$isNodeSelection(selection) || !selection.getNodes().length) {\n return false\n }\n\n const firstNode = selection.getNodes()[0]\n return $isUploadNode(firstNode)\n },\n key: 'upload',\n label: ({ i18n }) => {\n return i18n.t('lexical:upload:label')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INSERT_UPLOAD_WITH_DRAWER_COMMAND, {\n replace: false,\n })\n },\n },\n ]),\n ],\n },\n})\n", "'use client'\nimport React from 'react'\n\nexport const UploadIcon: React.FC = () => (\n <svg\n aria-hidden=\"true\"\n className=\"icon\"\n fill=\"none\"\n focusable=\"false\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n width=\"20\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M14.6667 4H5.33333C4.59695 4 4 4.59695 4 5.33333V14.6667C4 15.403 4.59695 16 5.33333 16H14.6667C15.403 16 16 15.403 16 14.6667V5.33333C16 4.59695 15.403 4 14.6667 4Z\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M7.99984 9.33366C8.73622 9.33366 9.33317 8.73671 9.33317 8.00033C9.33317 7.26395 8.73622 6.66699 7.99984 6.66699C7.26346 6.66699 6.6665 7.26395 6.6665 8.00033C6.6665 8.73671 7.26346 9.33366 7.99984 9.33366Z\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M16 11.9995L13.9427 9.94214C13.6926 9.69218 13.3536 9.55176 13 9.55176C12.6464 9.55176 12.3074 9.69218 12.0573 9.94214L6 15.9995\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n)\n", "'use client'\nimport type { LexicalCommand } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $insertNodeToNearestRoot, mergeRegister } from '@lexical/utils'\nimport { useConfig } from '@payloadcms/ui'\nimport {\n $getPreviousSelection,\n $getSelection,\n $isParagraphNode,\n $isRangeSelection,\n COMMAND_PRIORITY_EDITOR,\n createCommand,\n} from 'lexical'\nimport React, { useEffect } from 'react'\n\nimport type { PluginComponentWithAnchor } from '../../../typesClient.js'\nimport type { UploadData } from '../../server/nodes/UploadNode.js'\nimport type { UploadFeaturePropsClient } from '../feature.client.js'\n\nimport { UploadDrawer } from '../drawer/index.js'\nimport { $createUploadNode, UploadNode } from '../nodes/UploadNode.js'\n\nexport type InsertUploadPayload = Readonly<Omit<UploadData, 'id'> & Partial<Pick<UploadData, 'id'>>>\n\nexport const INSERT_UPLOAD_COMMAND: LexicalCommand<InsertUploadPayload> =\n createCommand('INSERT_UPLOAD_COMMAND')\n\nexport const UploadPlugin: PluginComponentWithAnchor<UploadFeaturePropsClient> = ({\n clientProps,\n}) => {\n const [editor] = useLexicalComposerContext()\n const {\n config: { collections },\n } = useConfig()\n\n useEffect(() => {\n if (!editor.hasNodes([UploadNode])) {\n throw new Error('UploadPlugin: UploadNode not registered on editor')\n }\n\n return mergeRegister(\n editor.registerCommand<InsertUploadPayload>(\n INSERT_UPLOAD_COMMAND,\n (payload: InsertUploadPayload) => {\n editor.update(() => {\n const selection = $getSelection() || $getPreviousSelection()\n\n if ($isRangeSelection(selection)) {\n const uploadNode = $createUploadNode({\n data: {\n id: payload.id,\n fields: payload.fields,\n relationTo: payload.relationTo,\n value: payload.value,\n },\n })\n // Insert upload node BEFORE potentially removing focusNode, as $insertNodeToNearestRoot errors if the focusNode doesn't exist\n $insertNodeToNearestRoot(uploadNode)\n\n const { focus } = selection\n const focusNode = focus.getNode()\n\n // First, delete currently selected node if it's an empty paragraph and if there are sufficient\n // paragraph nodes (more than 1) left in the parent node, so that we don't \"trap\" the user\n if (\n $isParagraphNode(focusNode) &&\n focusNode.getTextContentSize() === 0 &&\n focusNode\n .getParentOrThrow()\n .getChildren()\n .filter((node) => $isParagraphNode(node)).length > 1\n ) {\n focusNode.remove()\n }\n }\n })\n\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n )\n }, [editor])\n\n return <UploadDrawer enabledCollectionSlugs={collections.map(({ slug }) => slug)} />\n}\n", "'use client'\nimport type { LexicalEditor } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $getNodeByKey, COMMAND_PRIORITY_EDITOR } from 'lexical'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport { useLexicalListDrawer } from '../../../../utilities/fieldsDrawer/useLexicalListDrawer.js'\nimport { EnabledRelationshipsCondition } from '../../../relationship/client/utils/EnabledRelationshipsCondition.js'\nimport { $createUploadNode } from '../nodes/UploadNode.js'\nimport { INSERT_UPLOAD_COMMAND } from '../plugin/index.js'\nimport { INSERT_UPLOAD_WITH_DRAWER_COMMAND } from './commands.js'\n\nconst insertUpload = ({\n editor,\n relationTo,\n replaceNodeKey,\n value,\n}: {\n editor: LexicalEditor\n relationTo: string\n replaceNodeKey: null | string\n value: number | string\n}) => {\n if (!replaceNodeKey) {\n editor.dispatchCommand(INSERT_UPLOAD_COMMAND, {\n // @ts-expect-error - TODO: fix this\n fields: null,\n relationTo,\n value,\n })\n } else {\n editor.update(() => {\n const node = $getNodeByKey(replaceNodeKey)\n if (node) {\n node.replace(\n $createUploadNode({\n data: {\n // @ts-expect-error - TODO: fix this\n fields: null,\n relationTo,\n value,\n },\n }),\n )\n }\n })\n }\n}\n\ntype Props = {\n enabledCollectionSlugs: string[]\n}\n\nconst UploadDrawerComponent: React.FC<Props> = ({ enabledCollectionSlugs }) => {\n const [editor] = useLexicalComposerContext()\n\n const [replaceNodeKey, setReplaceNodeKey] = useState<null | string>(null)\n\n const { closeListDrawer, ListDrawer, openListDrawer } = useLexicalListDrawer({\n collectionSlugs: enabledCollectionSlugs,\n uploads: true,\n })\n\n useEffect(() => {\n return editor.registerCommand<{\n replace: { nodeKey: string } | false\n }>(\n INSERT_UPLOAD_WITH_DRAWER_COMMAND,\n (payload) => {\n setReplaceNodeKey(payload?.replace ? payload?.replace.nodeKey : null)\n openListDrawer()\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n )\n }, [editor, openListDrawer])\n\n const onSelect = useCallback(\n ({ collectionSlug, docID }) => {\n closeListDrawer()\n insertUpload({\n editor,\n relationTo: collectionSlug,\n replaceNodeKey,\n value: docID,\n })\n },\n [editor, closeListDrawer, replaceNodeKey],\n )\n\n return <ListDrawer onSelect={onSelect} />\n}\n\nexport const UploadDrawer = (props: Props): React.ReactNode => {\n return (\n <EnabledRelationshipsCondition {...props} uploads>\n <UploadDrawerComponent {...props} />\n </EnabledRelationshipsCondition>\n )\n}\n", "'use client'\n\nimport { ShimmerEffect } from '@payloadcms/ui'\nimport React, { lazy, Suspense, useEffect, useState } from 'react'\n\nimport type { FeatureProviderClient } from '../features/typesClient.js'\nimport type { SanitizedClientEditorConfig } from '../lexical/config/types.js'\nimport type { LexicalRichTextFieldProps } from '../types.js'\n\nimport { defaultEditorLexicalConfig } from '../lexical/config/client/default.js'\nimport { loadClientFeatures } from '../lexical/config/client/loader.js'\nimport { sanitizeClientEditorConfig } from '../lexical/config/client/sanitize.js'\n\nconst RichTextEditor = lazy(() =>\n import('./Field.js').then((module) => ({ default: module.RichText })),\n)\n\nexport const RichTextField: React.FC<LexicalRichTextFieldProps> = (props) => {\n const { admin = {}, clientFeatures, lexicalEditorConfig } = props\n\n const [finalSanitizedEditorConfig, setFinalSanitizedEditorConfig] =\n useState<null | SanitizedClientEditorConfig>(null)\n\n useEffect(() => {\n if (finalSanitizedEditorConfig) {\n return\n }\n\n const featureProvidersLocal: FeatureProviderClient<any, any>[] = []\n for (const [_featureKey, clientFeature] of Object.entries(clientFeatures)) {\n if (!clientFeature.clientFeatureProvider) {\n continue\n }\n featureProvidersLocal.push(\n clientFeature.clientFeatureProvider(clientFeature.clientFeatureProps),\n ) // Execute the clientFeatureProvider function here, as the server cannot execute functions imported from use client files\n }\n\n const finalLexicalEditorConfig = lexicalEditorConfig\n ? lexicalEditorConfig\n : defaultEditorLexicalConfig\n\n const resolvedClientFeatures = loadClientFeatures({\n unSanitizedEditorConfig: {\n features: featureProvidersLocal,\n lexical: finalLexicalEditorConfig,\n },\n })\n\n setFinalSanitizedEditorConfig(\n sanitizeClientEditorConfig(resolvedClientFeatures, finalLexicalEditorConfig, admin),\n )\n }, [lexicalEditorConfig, admin, finalSanitizedEditorConfig, clientFeatures]) // TODO: Optimize this and use useMemo for this in the future. This might break sub-richtext-blocks from the blocks feature. Need to investigate\n\n return (\n <Suspense fallback={<ShimmerEffect height=\"35vh\" />}>\n {finalSanitizedEditorConfig && (\n <RichTextEditor {...props} editorConfig={finalSanitizedEditorConfig} />\n )}\n </Suspense>\n )\n}\n", "import type { EditorThemeClasses } from 'lexical'\n\nexport const LexicalEditorTheme: EditorThemeClasses = {\n block: 'LexicalEditorTheme__block',\n blockCursor: 'LexicalEditorTheme__blockCursor',\n characterLimit: 'LexicalEditorTheme__characterLimit',\n code: 'LexicalEditorTheme__code',\n codeHighlight: {\n atrule: 'LexicalEditorTheme__tokenAttr',\n attr: 'LexicalEditorTheme__tokenAttr',\n boolean: 'LexicalEditorTheme__tokenProperty',\n builtin: 'LexicalEditorTheme__tokenSelector',\n cdata: 'LexicalEditorTheme__tokenComment',\n char: 'LexicalEditorTheme__tokenSelector',\n class: 'LexicalEditorTheme__tokenFunction',\n 'class-name': 'LexicalEditorTheme__tokenFunction',\n comment: 'LexicalEditorTheme__tokenComment',\n constant: 'LexicalEditorTheme__tokenProperty',\n deleted: 'LexicalEditorTheme__tokenProperty',\n doctype: 'LexicalEditorTheme__tokenComment',\n entity: 'LexicalEditorTheme__tokenOperator',\n function: 'LexicalEditorTheme__tokenFunction',\n important: 'LexicalEditorTheme__tokenVariable',\n inserted: 'LexicalEditorTheme__tokenSelector',\n keyword: 'LexicalEditorTheme__tokenAttr',\n namespace: 'LexicalEditorTheme__tokenVariable',\n number: 'LexicalEditorTheme__tokenProperty',\n operator: 'LexicalEditorTheme__tokenOperator',\n prolog: 'LexicalEditorTheme__tokenComment',\n property: 'LexicalEditorTheme__tokenProperty',\n punctuation: 'LexicalEditorTheme__tokenPunctuation',\n regex: 'LexicalEditorTheme__tokenVariable',\n selector: 'LexicalEditorTheme__tokenSelector',\n string: 'LexicalEditorTheme__tokenSelector',\n symbol: 'LexicalEditorTheme__tokenProperty',\n tag: 'LexicalEditorTheme__tokenProperty',\n url: 'LexicalEditorTheme__tokenOperator',\n variable: 'LexicalEditorTheme__tokenVariable',\n },\n embedBlock: {\n base: 'LexicalEditorTheme__embedBlock',\n focus: 'LexicalEditorTheme__embedBlockFocus',\n },\n hashtag: 'LexicalEditorTheme__hashtag',\n heading: {\n h1: 'LexicalEditorTheme__h1',\n h2: 'LexicalEditorTheme__h2',\n h3: 'LexicalEditorTheme__h3',\n h4: 'LexicalEditorTheme__h4',\n h5: 'LexicalEditorTheme__h5',\n h6: 'LexicalEditorTheme__h6',\n },\n hr: 'LexicalEditorTheme__hr',\n indent: 'LexicalEditorTheme__indent',\n inlineImage: 'LexicalEditor__inline-image',\n link: 'LexicalEditorTheme__link',\n list: {\n checklist: 'LexicalEditorTheme__checklist',\n listitem: 'LexicalEditorTheme__listItem',\n listitemChecked: 'LexicalEditorTheme__listItemChecked',\n listitemUnchecked: 'LexicalEditorTheme__listItemUnchecked',\n nested: {\n listitem: 'LexicalEditorTheme__nestedListItem',\n },\n olDepth: [\n 'LexicalEditorTheme__ol1',\n 'LexicalEditorTheme__ol2',\n 'LexicalEditorTheme__ol3',\n 'LexicalEditorTheme__ol4',\n 'LexicalEditorTheme__ol5',\n ],\n ul: 'LexicalEditorTheme__ul',\n },\n ltr: 'LexicalEditorTheme__ltr',\n mark: 'LexicalEditorTheme__mark',\n markOverlap: 'LexicalEditorTheme__markOverlap',\n paragraph: 'LexicalEditorTheme__paragraph',\n quote: 'LexicalEditorTheme__quote',\n relationship: 'LexicalEditorTheme__relationship',\n rtl: 'LexicalEditorTheme__rtl',\n table: 'LexicalEditorTheme__table',\n tableAddColumns: 'LexicalEditorTheme__tableAddColumns',\n tableAddRows: 'LexicalEditorTheme__tableAddRows',\n tableCell: 'LexicalEditorTheme__tableCell',\n tableCellActionButton: 'LexicalEditorTheme__tableCellActionButton',\n tableCellActionButtonContainer: 'LexicalEditorTheme__tableCellActionButtonContainer',\n tableCellEditing: 'LexicalEditorTheme__tableCellEditing',\n tableCellHeader: 'LexicalEditorTheme__tableCellHeader',\n tableCellPrimarySelected: 'LexicalEditorTheme__tableCellPrimarySelected',\n tableCellResizer: 'LexicalEditorTheme__tableCellResizer',\n tableCellSelected: 'LexicalEditorTheme__tableCellSelected',\n tableCellSortedIndicator: 'LexicalEditorTheme__tableCellSortedIndicator',\n tableResizeRuler: 'LexicalEditorTheme__tableCellResizeRuler',\n tableRowStriping: 'LexicalEditorTheme__tableRowStriping',\n tableSelected: 'LexicalEditorTheme__tableSelected',\n text: {\n bold: 'LexicalEditorTheme__textBold',\n code: 'LexicalEditorTheme__textCode',\n italic: 'LexicalEditorTheme__textItalic',\n strikethrough: 'LexicalEditorTheme__textStrikethrough',\n subscript: 'LexicalEditorTheme__textSubscript',\n superscript: 'LexicalEditorTheme__textSuperscript',\n underline: 'LexicalEditorTheme__textUnderline',\n underlineStrikethrough: 'LexicalEditorTheme__textUnderlineStrikethrough',\n },\n upload: 'editor-upload',\n}\n", "'use client'\nimport type { EditorConfig as LexicalEditorConfig } from 'lexical'\n\nimport { LexicalEditorTheme } from '../../theme/EditorTheme.js'\n\nexport const defaultEditorLexicalConfig: LexicalEditorConfig = {\n namespace: 'lexical',\n theme: LexicalEditorTheme,\n}\n", "'use client'\n\nimport type {\n ClientFeatureProviderMap,\n ResolvedClientFeature,\n ResolvedClientFeatureMap,\n} from '../../../features/typesClient.js'\nimport type { ClientEditorConfig } from '../types.js'\n\n/**\n * This function expects client functions to ALREADY be ordered & dependencies checked on the server\n * @param unSanitizedEditorConfig\n */\nexport function loadClientFeatures({\n unSanitizedEditorConfig,\n}: {\n unSanitizedEditorConfig: ClientEditorConfig\n}): ResolvedClientFeatureMap {\n for (const featureProvider of unSanitizedEditorConfig.features) {\n if (\n !featureProvider?.clientFeatureProps?.featureKey ||\n featureProvider?.clientFeatureProps?.order === undefined ||\n featureProvider?.clientFeatureProps?.order === null\n ) {\n throw new Error(\n 'A Feature you have installed does not return the client props as clientFeatureProps. Please make sure to always return those props, even if they are null, as other important props like order and featureKey are later on injected.',\n )\n }\n }\n\n // sort unSanitizedEditorConfig.features by order\n unSanitizedEditorConfig.features = unSanitizedEditorConfig.features.sort(\n (a, b) => a.clientFeatureProps.order - b.clientFeatureProps.order,\n )\n\n const featureProviderMap: ClientFeatureProviderMap = new Map()\n for (const feature of unSanitizedEditorConfig.features) {\n featureProviderMap.set(feature.clientFeatureProps.featureKey, feature)\n }\n\n const resolvedFeatures: ResolvedClientFeatureMap = new Map()\n\n // Make sure all dependencies declared in the respective features exist\n let loaded = 0\n for (const featureProvider of unSanitizedEditorConfig.features) {\n const feature: Partial<ResolvedClientFeature<any>> =\n typeof featureProvider.feature === 'function'\n ? featureProvider.feature({\n featureProviderMap,\n resolvedFeatures,\n unSanitizedEditorConfig,\n })\n : featureProvider.feature\n\n feature.key = featureProvider.clientFeatureProps.featureKey\n feature.order = loaded\n\n resolvedFeatures.set(\n featureProvider.clientFeatureProps.featureKey,\n feature as ResolvedClientFeature<any>,\n )\n\n loaded++\n }\n\n return resolvedFeatures\n}\n", "'use client'\n\nimport type { EditorConfig as LexicalEditorConfig } from 'lexical'\n\nimport type {\n ResolvedClientFeatureMap,\n SanitizedClientFeatures,\n} from '../../../features/typesClient.js'\nimport type { LexicalFieldAdminProps } from '../../../types.js'\nimport type { SanitizedClientEditorConfig } from '../types.js'\n\nexport const sanitizeClientFeatures = (\n features: ResolvedClientFeatureMap,\n): SanitizedClientFeatures => {\n const sanitized: SanitizedClientFeatures = {\n enabledFeatures: [],\n hooks: {\n load: [],\n save: [],\n },\n markdownTransformers: [],\n nodes: [],\n plugins: [],\n providers: [],\n slashMenu: {\n dynamicGroups: [],\n groups: [],\n },\n toolbarFixed: {\n groups: [],\n },\n toolbarInline: {\n groups: [],\n },\n }\n\n if (!features?.size) {\n return sanitized\n }\n\n features.forEach((feature) => {\n if (feature.hooks) {\n if (feature.hooks?.load?.length) {\n sanitized.hooks.load = sanitized.hooks.load.concat(feature.hooks.load)\n }\n if (feature.hooks?.save?.length) {\n sanitized.hooks.save = sanitized.hooks.save.concat(feature.hooks.save)\n }\n }\n\n if (feature.providers?.length) {\n sanitized.providers = sanitized.providers.concat(feature.providers)\n }\n\n if (feature.nodes?.length) {\n sanitized.nodes = sanitized.nodes.concat(feature.nodes)\n }\n if (feature.plugins?.length) {\n feature.plugins.forEach((plugin, i) => {\n sanitized.plugins?.push({\n clientProps: feature.sanitizedClientFeatureProps,\n Component: plugin.Component,\n key: feature.key + i,\n position: plugin.position,\n })\n })\n }\n\n if (feature.toolbarInline?.groups?.length) {\n for (const group of feature.toolbarInline.groups) {\n // 1. find the group with the same key or create new one\n let foundGroup = sanitized.toolbarInline.groups.find(\n (sanitizedGroup) => sanitizedGroup.key === group.key,\n )\n if (!foundGroup) {\n foundGroup = {\n ...group,\n items: [],\n }\n } else {\n sanitized.toolbarInline.groups = sanitized.toolbarInline.groups.filter(\n (sanitizedGroup) => sanitizedGroup.key !== group.key,\n )\n }\n\n // 2. Add options to group options array and add to sanitized.slashMenu.groupsWithOptions\n if (group?.items?.length) {\n foundGroup.items = foundGroup.items.concat(group.items)\n }\n sanitized.toolbarInline?.groups.push(foundGroup)\n }\n }\n\n if (feature.toolbarFixed?.groups?.length) {\n for (const group of feature.toolbarFixed.groups) {\n // 1. find the group with the same key or create new one\n let foundGroup = sanitized.toolbarFixed.groups.find(\n (sanitizedGroup) => sanitizedGroup.key === group.key,\n )\n if (!foundGroup) {\n foundGroup = {\n ...group,\n items: [],\n }\n } else {\n sanitized.toolbarFixed.groups = sanitized.toolbarFixed.groups.filter(\n (sanitizedGroup) => sanitizedGroup.key !== group.key,\n )\n }\n\n // 2. Add options to group options array and add to sanitized.slashMenu.groupsWithOptions\n if (group?.items?.length) {\n foundGroup.items = foundGroup.items.concat(group.items)\n }\n sanitized.toolbarFixed?.groups.push(foundGroup)\n }\n }\n\n if (feature.slashMenu?.groups) {\n if (feature.slashMenu.dynamicGroups?.length) {\n sanitized.slashMenu.dynamicGroups = sanitized.slashMenu.dynamicGroups.concat(\n feature.slashMenu.dynamicGroups,\n )\n }\n\n for (const optionGroup of feature.slashMenu.groups) {\n // 1. find the group with the same name or create new one\n let group = sanitized.slashMenu.groups.find((group) => group.key === optionGroup.key)\n if (!group) {\n group = {\n ...optionGroup,\n items: [],\n }\n } else {\n sanitized.slashMenu.groups = sanitized.slashMenu.groups.filter(\n (group) => group.key !== optionGroup.key,\n )\n }\n\n // 2. Add options to group options array and add to sanitized.slashMenu.groupsWithOptions\n if (optionGroup?.items?.length) {\n group.items = group.items.concat(optionGroup.items)\n }\n sanitized.slashMenu.groups.push(group)\n }\n }\n\n if (feature.markdownTransformers?.length) {\n sanitized.markdownTransformers = sanitized.markdownTransformers.concat(\n feature.markdownTransformers,\n )\n }\n sanitized.enabledFeatures.push(feature.key)\n })\n\n // Sort sanitized.toolbarInline.groups by order property\n sanitized.toolbarInline.groups.sort((a, b) => {\n if (a.order && b.order) {\n return a.order - b.order\n } else if (a.order) {\n return -1\n } else if (b.order) {\n return 1\n } else {\n return 0\n }\n })\n // Sort sanitized.toolbarFixed.groups by order property\n sanitized.toolbarFixed.groups.sort((a, b) => {\n if (a.order && b.order) {\n return a.order - b.order\n } else if (a.order) {\n return -1\n } else if (b.order) {\n return 1\n } else {\n return 0\n }\n })\n\n // Sort sanitized.toolbarInline.groups.[group].entries by order property\n for (const group of sanitized.toolbarInline.groups) {\n group.items.sort((a, b) => {\n if (a.order && b.order) {\n return a.order - b.order\n } else if (a.order) {\n return -1\n } else if (b.order) {\n return 1\n } else {\n return 0\n }\n })\n }\n\n // Sort sanitized.toolbarFixed.groups.[group].entries by order property\n for (const group of sanitized.toolbarFixed.groups) {\n group.items.sort((a, b) => {\n if (a.order && b.order) {\n return a.order - b.order\n } else if (a.order) {\n return -1\n } else if (b.order) {\n return 1\n } else {\n return 0\n }\n })\n }\n\n return sanitized\n}\n\nexport function sanitizeClientEditorConfig(\n resolvedClientFeatureMap: ResolvedClientFeatureMap,\n lexical?: LexicalEditorConfig,\n admin?: LexicalFieldAdminProps,\n): SanitizedClientEditorConfig {\n return {\n admin,\n features: sanitizeClientFeatures(resolvedClientFeatureMap),\n lexical: lexical!,\n resolvedFeatureMap: resolvedClientFeatureMap,\n }\n}\n", "'use client'\nexport function joinClasses(...args: Array<boolean | null | string | undefined>): string {\n return args.filter(Boolean).join(' ')\n}\n", "'use client'\ntype Force = [number, number]\ntype Listener = (force: Force, e: TouchEvent) => void\ninterface ElementValues {\n handleTouchend: (e: TouchEvent) => void\n handleTouchstart: (e: TouchEvent) => void\n listeners: Set<Listener>\n start: Force | null\n}\n\nconst elements = new WeakMap<HTMLElement, ElementValues>()\n\nfunction readTouch(e: TouchEvent): [number, number] | null {\n const touch = e.changedTouches[0]\n if (touch === undefined) {\n return null\n }\n return [touch.clientX, touch.clientY]\n}\n\nfunction addListener(element: HTMLElement, cb: Listener): () => void {\n let elementValues = elements.get(element)\n if (elementValues === undefined) {\n const listeners = new Set<Listener>()\n const handleTouchstart = (e: TouchEvent): void => {\n if (elementValues !== undefined) {\n elementValues.start = readTouch(e)\n }\n }\n const handleTouchend = (e: TouchEvent): void => {\n if (elementValues === undefined) {\n return\n }\n const { start } = elementValues\n if (start === null) {\n return\n }\n const end = readTouch(e)\n for (const listener of listeners) {\n if (end !== null) {\n listener([end[0] - start[0], end[1] - start[1]], e)\n }\n }\n }\n element.addEventListener('touchstart', handleTouchstart)\n element.addEventListener('touchend', handleTouchend)\n\n elementValues = {\n handleTouchend,\n handleTouchstart,\n listeners,\n start: null,\n }\n elements.set(element, elementValues)\n }\n elementValues.listeners.add(cb)\n return () => {\n deleteListener(element, cb)\n }\n}\n\nfunction deleteListener(element: HTMLElement, cb: Listener): void {\n const elementValues = elements.get(element)\n if (elementValues === undefined) {\n return\n }\n const { listeners } = elementValues\n listeners.delete(cb)\n if (listeners.size === 0) {\n elements.delete(element)\n element.removeEventListener('touchstart', elementValues.handleTouchstart)\n element.removeEventListener('touchend', elementValues.handleTouchend)\n }\n}\n\nexport function addSwipeLeftListener(\n element: HTMLElement,\n cb: (_force: number, e: TouchEvent) => void,\n): () => void {\n return addListener(element, (force, e) => {\n const [x, y] = force\n if (x < 0 && -x > Math.abs(y)) {\n cb(x, e)\n }\n })\n}\n\nexport function addSwipeRightListener(\n element: HTMLElement,\n cb: (_force: number, e: TouchEvent) => void,\n): () => void {\n return addListener(element, (force, e) => {\n const [x, y] = force\n if (x > 0 && x > Math.abs(y)) {\n cb(x, e)\n }\n })\n}\n\nexport function addSwipeUpListener(\n element: HTMLElement,\n cb: (_force: number, e: TouchEvent) => void,\n): () => void {\n return addListener(element, (force, e) => {\n const [x, y] = force\n if (y < 0 && -y > Math.abs(x)) {\n cb(x, e)\n }\n })\n}\n\nexport function addSwipeDownListener(\n element: HTMLElement,\n cb: (_force: number, e: TouchEvent) => void,\n): () => void {\n return addListener(element, (force, e) => {\n const [x, y] = force\n if (y > 0 && y > Math.abs(x)) {\n cb(x, e)\n }\n })\n}\n", "/* eslint-disable perfectionist/sort-objects */\n/* eslint-disable regexp/no-obscure-range */\n/* eslint-disable @typescript-eslint/no-redundant-type-constituents */\n/* eslint-disable regexp/no-misleading-unicode-character */\n//This copy-and-pasted from lexical here: https://github.com/facebook/lexical/blob/c2ceee223f46543d12c574e62155e619f9a18a5d/packages/lexical/src/LexicalConstants.ts\n\nimport type { ElementFormatType, TextFormatType, TextModeType } from 'lexical'\nexport type TextDetailType = 'directionless' | 'unmergable'\n\n// DOM\nexport const NodeFormat = {\n DOM_ELEMENT_TYPE: 1,\n DOM_TEXT_TYPE: 3,\n // Reconciling\n NO_DIRTY_NODES: 0,\n HAS_DIRTY_NODES: 1,\n FULL_RECONCILE: 2,\n // Text node modes\n IS_NORMAL: 0,\n IS_TOKEN: 1,\n IS_SEGMENTED: 2,\n IS_INERT: 3,\n // Text node formatting\n IS_BOLD: 1,\n IS_ITALIC: 1 << 1,\n IS_STRIKETHROUGH: 1 << 2,\n IS_UNDERLINE: 1 << 3,\n IS_CODE: 1 << 4,\n IS_SUBSCRIPT: 1 << 5,\n IS_SUPERSCRIPT: 1 << 6,\n IS_HIGHLIGHT: 1 << 7,\n // Text node details\n IS_DIRECTIONLESS: 1,\n IS_UNMERGEABLE: 1 << 1,\n // Element node formatting\n IS_ALIGN_LEFT: 1,\n IS_ALIGN_CENTER: 2,\n IS_ALIGN_RIGHT: 3,\n IS_ALIGN_JUSTIFY: 4,\n IS_ALIGN_START: 5,\n IS_ALIGN_END: 6,\n} as const\n\nexport const IS_ALL_FORMATTING =\n NodeFormat.IS_BOLD |\n NodeFormat.IS_ITALIC |\n NodeFormat.IS_STRIKETHROUGH |\n NodeFormat.IS_UNDERLINE |\n NodeFormat.IS_CODE |\n NodeFormat.IS_SUBSCRIPT |\n NodeFormat.IS_SUPERSCRIPT |\n NodeFormat.IS_HIGHLIGHT\n\n// Reconciliation\nexport const NON_BREAKING_SPACE = '\\u00A0'\n\nexport const DOUBLE_LINE_BREAK = '\\n\\n'\n\n// For FF, we need to use a non-breaking space, or it gets composition\n// in a stuck state.\n\nconst RTL = '\\u0591-\\u07FF\\uFB1D-\\uFDFD\\uFE70-\\uFEFC'\nconst LTR =\n 'A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6' +\n '\\u00F8-\\u02B8\\u0300-\\u0590\\u0800-\\u1FFF\\u200E\\u2C00-\\uFB1C' +\n '\\uFE00-\\uFE6F\\uFEFD-\\uFFFF'\n\n// eslint-disable-next-line no-misleading-character-class\nexport const RTL_REGEX = new RegExp('^[^' + LTR + ']*[' + RTL + ']')\n// eslint-disable-next-line no-misleading-character-class\nexport const LTR_REGEX = new RegExp('^[^' + RTL + ']*[' + LTR + ']')\n\nexport const TEXT_TYPE_TO_FORMAT: Record<string | TextFormatType, number> = {\n bold: NodeFormat.IS_BOLD,\n code: NodeFormat.IS_CODE,\n highlight: NodeFormat.IS_HIGHLIGHT,\n italic: NodeFormat.IS_ITALIC,\n strikethrough: NodeFormat.IS_STRIKETHROUGH,\n subscript: NodeFormat.IS_SUBSCRIPT,\n superscript: NodeFormat.IS_SUPERSCRIPT,\n underline: NodeFormat.IS_UNDERLINE,\n}\n\nexport const DETAIL_TYPE_TO_DETAIL: Record<string | TextDetailType, number> = {\n directionless: NodeFormat.IS_DIRECTIONLESS,\n unmergeable: NodeFormat.IS_UNMERGEABLE,\n}\n\nexport const ELEMENT_TYPE_TO_FORMAT: Record<Exclude<ElementFormatType, ''>, number> = {\n center: NodeFormat.IS_ALIGN_CENTER,\n end: NodeFormat.IS_ALIGN_END,\n justify: NodeFormat.IS_ALIGN_JUSTIFY,\n left: NodeFormat.IS_ALIGN_LEFT,\n right: NodeFormat.IS_ALIGN_RIGHT,\n start: NodeFormat.IS_ALIGN_START,\n}\n\nexport const ELEMENT_FORMAT_TO_TYPE: Record<number, ElementFormatType> = {\n [NodeFormat.IS_ALIGN_CENTER]: 'center',\n [NodeFormat.IS_ALIGN_END]: 'end',\n [NodeFormat.IS_ALIGN_JUSTIFY]: 'justify',\n [NodeFormat.IS_ALIGN_LEFT]: 'left',\n [NodeFormat.IS_ALIGN_RIGHT]: 'right',\n [NodeFormat.IS_ALIGN_START]: 'start',\n}\n\nexport const TEXT_MODE_TO_TYPE: Record<TextModeType, 0 | 1 | 2> = {\n normal: NodeFormat.IS_NORMAL,\n segmented: NodeFormat.IS_SEGMENTED,\n token: NodeFormat.IS_TOKEN,\n}\n\nexport const TEXT_TYPE_TO_MODE: Record<number, TextModeType> = {\n [NodeFormat.IS_NORMAL]: 'normal',\n [NodeFormat.IS_SEGMENTED]: 'segmented',\n [NodeFormat.IS_TOKEN]: 'token',\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["slashMenuBasicGroupWithItems", "items", "key", "label", "i18n", "t", "$isElementNode", "$isRangeSelection", "FORMAT_ELEMENT_COMMAND", "AlignCenterIcon", "_jsxs", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "_jsx", "d", "stroke", "strokeWidth", "AlignJustifyIcon", "_jsxs", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "_jsx", "d", "stroke", "strokeWidth", "AlignLeftIcon", "_jsxs", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "_jsx", "d", "stroke", "strokeWidth", "AlignRightIcon", "_jsxs", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "_jsx", "d", "stroke", "strokeWidth", "createClientFeature", "feature", "props", "featureProviderClient", "clientFeatureProps", "featureProviderMap", "resolvedFeatures", "unSanitizedEditorConfig", "toReturn", "sanitizedClientFeatureProps", "newFeature", "toolbarAlignGroupWithItems", "items", "type", "ChildComponent", "AlignLeftIcon", "key", "order", "toolbarGroups", "toolbarAlignGroupWithItems", "ChildComponent", "AlignLeftIcon", "isActive", "selection", "$isRangeSelection", "node", "getNodes", "$isElementNode", "getFormatType", "parent", "getParent", "key", "label", "i18n", "t", "onSelect", "editor", "dispatchCommand", "FORMAT_ELEMENT_COMMAND", "order", "AlignCenterIcon", "AlignRightIcon", "AlignJustifyIcon", "AlignFeatureClient", "createClientFeature", "toolbarFixed", "groups", "toolbarInline", "$createQuoteNode", "$isQuoteNode", "QuoteNode", "$setBlocksType", "$getSelection", "$isRangeSelection", "BlockquoteIcon", "_jsx", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "d", "TextIcon", "_jsx", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "d", "toolbarTextDropdownGroupWithItems", "items", "type", "ChildComponent", "TextIcon", "key", "order", "$createQuoteNode", "$isQuoteNode", "QuoteNode", "$createLineBreakNode", "MarkdownTransformer", "type", "dependencies", "export", "node", "exportChildren", "lines", "split", "output", "line", "push", "join", "regExp", "replace", "parentNode", "children", "_match", "isImport", "previousNode", "getPreviousSibling", "splice", "getChildrenSize", "select", "remove", "append", "toolbarGroups", "toolbarTextDropdownGroupWithItems", "ChildComponent", "BlockquoteIcon", "isActive", "selection", "$isRangeSelection", "node", "getNodes", "$isQuoteNode", "getParent", "key", "label", "i18n", "t", "onSelect", "editor", "update", "$getSelection", "$setBlocksType", "$createQuoteNode", "order", "BlockquoteFeatureClient", "createClientFeature", "markdownTransformers", "MarkdownTransformer", "nodes", "QuoteNode", "slashMenu", "groups", "slashMenuBasicGroupWithItems", "Icon", "keywords", "toolbarFixed", "toolbarInline", "getTranslation", "BlockIcon", "_jsxs", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "_jsx", "rx", "stroke", "x", "y", "InlineBlocksIcon", "_jsx", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "clipRule", "d", "fillRule", "c", "_c", "useLexicalComposerContext", "$insertNodeToNearestRoot", "$wrapNodeInElement", "mergeRegister", "getTranslation", "formatDrawerSlug", "useEditDepth", "useTranslation", "$createParagraphNode", "$getNodeByKey", "$getPreviousSelection", "$getSelection", "$insertNodes", "$isParagraphNode", "$isRangeSelection", "$isRootOrShadowRoot", "COMMAND_PRIORITY_EDITOR", "useEffect", "useState", "BlocksPlugin", "$", "_c", "editor", "useLexicalComposerContext", "blockFields", "setBlockFields", "useState", "blockType", "setBlockType", "targetNodeKey", "setTargetNodeKey", "i18n", "t", "useTranslation", "fieldProps", "t0", "useEditorConfigContext", "featureClientSchemaMap", "schemaPath", "uuid", "editDepth", "useEditDepth", "t1", "t2", "formatDrawerSlug", "slug", "depth", "drawerSlug", "toggleDrawer", "useLexicalDrawer", "t3", "t4", "hasNodes", "BlockNode", "Error", "mergeRegister", "registerCommand", "INSERT_BLOCK_COMMAND", "payload", "update", "selection", "$getSelection", "$getPreviousSelection", "$isRangeSelection", "blockNode", "$createBlockNode", "$insertNodeToNearestRoot", "focus", "focusNode", "getNode", "$isParagraphNode", "getTextContentSize", "getParentOrThrow", "getChildren", "filter", "node", "length", "remove", "COMMAND_PRIORITY_EDITOR", "INSERT_INLINE_BLOCK_COMMAND", "fields", "node_0", "$getNodeByKey", "$isInlineBlockNode", "setFields", "inlineBlockNode", "$createInlineBlockNode", "$insertNodes", "$isRootOrShadowRoot", "$wrapNodeInElement", "$createParagraphNode", "selectEnd", "OPEN_INLINE_BLOCK_DRAWER_COMMAND", "t5", "fields_0", "nodeKey", "rangeSelection", "getEditorState", "read", "selection_0", "useEffect", "schemaFieldsPath", "blocksField", "blocks", "clientBlock", "labels", "singular", "getTranslation", "blockDisplayName", "t6", "id", "t7", "t8", "t9", "_fields", "data", "dispatchCommand", "_jsx", "FieldsDrawer", "drawerTitle", "label", "featureKey", "fieldMapOverride", "handleDrawerSubmit", "schemaPathSuffix", "BlocksFeatureClient", "createClientFeature", "props", "nodes", "BlockNode", "InlineBlockNode", "plugins", "Component", "BlocksPlugin", "position", "sanitizedClientFeatureProps", "slashMenu", "groups", "clientBlockSlugs", "length", "items", "map", "blockSlug", "Icon", "BlockIcon", "key", "keywords", "label", "featureClientSchemaMap", "i18n", "schemaPath", "componentMapRenderedBlockPath", "clientBlock", "blocks", "labels", "singular", "getTranslation", "slug", "onSelect", "editor", "dispatchCommand", "INSERT_BLOCK_COMMAND", "blockName", "blockType", "t", "clientInlineBlockSlugs", "inlineBlockSlug", "InlineBlocksIcon", "OPEN_INLINE_BLOCK_DRAWER_COMMAND", "fields", "filter", "Boolean", "toolbarFixed", "type", "ChildComponent", "index", "isActive", "undefined", "order", "c", "_c", "useLexicalComposerContext", "$createParagraphNode", "$createTextNode", "$getRoot", "React", "useCallback", "useEffect", "useLayoutEffect", "useRef", "useState", "documentMode", "CAN_USE_DOM", "document", "IS_APPLE", "test", "navigator", "platform", "IS_FIREFOX", "userAgent", "CAN_USE_BEFORE_INPUT", "window", "InputEvent", "IS_SAFARI", "IS_IOS", "MSStream", "IS_ANDROID", "IS_WINDOWS", "IS_CHROME", "IS_APPLE_WEBKIT", "copy", "text", "textArea", "document", "createElement", "value", "style", "position", "opacity", "body", "appendChild", "focus", "select", "result", "execCommand", "console", "log", "error", "removeChild", "download", "filename", "a", "setAttribute", "encodeURIComponent", "display", "click", "formatStep", "step", "formattedStep", "formatOneStep", "name", "x", "y", "anchorPath", "toString", "anchorOffset", "focusPath", "focusOffset", "count", "join", "isSelectAll", "event", "key", "toLowerCase", "IS_APPLE", "metaKey", "ctrlKey", "sanitizeSelection", "selection", "anchorNode", "focusNode", "getPathFromNodeToEditor", "node", "rootElement", "currentNode", "path", "unshift", "Array", "from", "parentNode", "childNodes", "indexOf", "keyPresses", "Set", "useTestRecorder", "editor", "steps", "setSteps", "useState", "isRecording", "setIsRecording", "setCurrentInnerHTML", "templatedTest", "setTemplatedTest", "previousSelectionRef", "useRef", "skipNextSelectionChangeRef", "preRef", "getCurrentEditor", "useCallback", "generateTestContent", "getRootElement", "browserSelection", "window", "getSelection", "contains", "map", "pushStep", "currentSteps", "currentIndex", "length", "lastStep", "slice", "useLayoutEffect", "onKeyDown", "has", "onKeyUp", "registerRootListener", "prevRootElement", "removeEventListener", "addEventListener", "current", "scrollTo", "scrollHeight", "useEffect", "testContent", "registerUpdateListener", "dirtyElements", "dirtyLeaves", "editorState", "currentSelection", "_selection", "previousSelection", "skipNextSelectionChange", "size", "innerHTML", "toggleEditorSelection", "currentEditor", "update", "root", "$getRoot", "clear", "$createTextNode", "append", "$createParagraphNode", "currentIsRecording", "onSnapshotClick", "onCopyClick", "onDownloadClick", "_jsx", "className", "id", "onClick", "e", "preventDefault", "title", "type", "_jsxs", "ref", "TestRecorderPlugin", "$", "_c", "useLexicalComposerContext", "testRecorderButton", "testRecorderOutput", "t0", "Fragment", "children", "TestRecorderFeatureClient", "createClientFeature", "plugins", "Component", "TestRecorderPlugin", "position", "c", "_c", "useLexicalComposerContext", "TreeView", "TreeViewPlugin", "$", "editor", "t0", "_jsx", "timeTravelButtonClassName", "timeTravelPanelButtonClassName", "timeTravelPanelClassName", "timeTravelPanelSliderClassName", "treeTypeButtonClassName", "viewClassName", "TreeViewFeatureClient", "createClientFeature", "plugins", "Component", "TreeViewPlugin", "position", "$isTableSelection", "$isRangeSelection", "FORMAT_TEXT_COMMAND", "BoldIcon", "_jsx", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "d", "toolbarFormatGroupWithItems", "items", "type", "key", "order", "BOLD_ITALIC_STAR", "type", "format", "tag", "BOLD_ITALIC_UNDERSCORE", "intraword", "BOLD_STAR", "BOLD_UNDERSCORE", "toolbarGroups", "toolbarFormatGroupWithItems", "ChildComponent", "BoldIcon", "isActive", "selection", "$isRangeSelection", "$isTableSelection", "hasFormat", "key", "onSelect", "editor", "dispatchCommand", "FORMAT_TEXT_COMMAND", "order", "BoldFeatureClient", "createClientFeature", "featureProviderMap", "markdownTransformers", "BOLD_STAR", "BOLD_UNDERSCORE", "get", "push", "BOLD_ITALIC_UNDERSCORE", "BOLD_ITALIC_STAR", "toolbarFixed", "groups", "toolbarInline", "$isTableSelection", "$isRangeSelection", "FORMAT_TEXT_COMMAND", "CodeIcon", "_jsxs", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "_jsx", "d", "stroke", "INLINE_CODE", "type", "format", "tag", "toolbarGroups", "toolbarFormatGroupWithItems", "ChildComponent", "CodeIcon", "isActive", "selection", "$isRangeSelection", "$isTableSelection", "hasFormat", "key", "onSelect", "editor", "dispatchCommand", "FORMAT_TEXT_COMMAND", "order", "InlineCodeFeatureClient", "createClientFeature", "markdownTransformers", "INLINE_CODE", "toolbarFixed", "groups", "toolbarInline", "$isTableSelection", "$isRangeSelection", "FORMAT_TEXT_COMMAND", "ItalicIcon", "_jsx", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "d", "ITALIC_STAR", "type", "format", "tag", "ITALIC_UNDERSCORE", "intraword", "toolbarGroups", "toolbarFormatGroupWithItems", "ChildComponent", "ItalicIcon", "isActive", "selection", "$isRangeSelection", "$isTableSelection", "hasFormat", "key", "onSelect", "editor", "dispatchCommand", "FORMAT_TEXT_COMMAND", "order", "ItalicFeatureClient", "createClientFeature", "markdownTransformers", "ITALIC_STAR", "ITALIC_UNDERSCORE", "toolbarFixed", "groups", "toolbarInline", "$isTableSelection", "$isRangeSelection", "FORMAT_TEXT_COMMAND", "StrikethroughIcon", "_jsxs", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "_jsx", "d", "STRIKETHROUGH", "type", "format", "tag", "toolbarGroups", "toolbarFormatGroupWithItems", "ChildComponent", "StrikethroughIcon", "isActive", "selection", "$isRangeSelection", "$isTableSelection", "hasFormat", "key", "onSelect", "editor", "dispatchCommand", "FORMAT_TEXT_COMMAND", "order", "StrikethroughFeatureClient", "createClientFeature", "markdownTransformers", "STRIKETHROUGH", "toolbarFixed", "groups", "toolbarInline", "$isTableSelection", "$isRangeSelection", "FORMAT_TEXT_COMMAND", "SubscriptIcon", "_jsx", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "d", "toolbarGroups", "toolbarFormatGroupWithItems", "ChildComponent", "SubscriptIcon", "isActive", "selection", "$isRangeSelection", "$isTableSelection", "hasFormat", "key", "onSelect", "editor", "dispatchCommand", "FORMAT_TEXT_COMMAND", "order", "SubscriptFeatureClient", "createClientFeature", "toolbarFixed", "groups", "toolbarInline", "$isTableSelection", "$isRangeSelection", "FORMAT_TEXT_COMMAND", "SuperscriptIcon", "_jsx", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "d", "toolbarGroups", "toolbarFormatGroupWithItems", "ChildComponent", "SuperscriptIcon", "isActive", "selection", "$isRangeSelection", "$isTableSelection", "hasFormat", "key", "onSelect", "editor", "dispatchCommand", "FORMAT_TEXT_COMMAND", "order", "SuperscriptFeatureClient", "createClientFeature", "toolbarFixed", "groups", "toolbarInline", "$isTableSelection", "$isRangeSelection", "FORMAT_TEXT_COMMAND", "UnderlineIcon", "_jsxs", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "_jsx", "d", "toolbarGroups", "toolbarFormatGroupWithItems", "ChildComponent", "UnderlineIcon", "isActive", "selection", "$isRangeSelection", "$isTableSelection", "hasFormat", "key", "onSelect", "editor", "dispatchCommand", "FORMAT_TEXT_COMMAND", "order", "UnderlineFeatureClient", "createClientFeature", "toolbarFixed", "groups", "toolbarInline", "$createHeadingNode", "$isHeadingNode", "HeadingNode", "$setBlocksType", "$getSelection", "$isRangeSelection", "H1Icon", "_jsx", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "d", "H2Icon", "_jsx", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "d", "H3Icon", "_jsx", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "d", "H4Icon", "_jsx", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "d", "H5Icon", "_jsx", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "d", "H6Icon", "_jsx", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "d", "$createHeadingNode", "$isHeadingNode", "HeadingNode", "createBlockNode", "createNode", "parentNode", "children", "match", "node", "append", "replace", "select", "MarkdownTransformer", "enabledHeadingSizes", "pattern", "map", "tag", "Number", "slice", "size", "join", "regExp", "RegExp", "type", "dependencies", "HeadingNode", "export", "node", "exportChildren", "$isHeadingNode", "level", "getTag", "repeat", "replace", "createBlockNode", "match", "length", "$createHeadingNode", "$setHeading", "headingSize", "selection", "$getSelection", "$setBlocksType", "$createHeadingNode", "iconImports", "h1", "H1Icon", "h2", "H2Icon", "h3", "H3Icon", "h4", "H4Icon", "h5", "H5Icon", "h6", "H6Icon", "HeadingFeatureClient", "createClientFeature", "props", "enabledHeadingSizes", "toolbarGroups", "toolbarTextDropdownGroupWithItems", "map", "i", "ChildComponent", "isActive", "$isRangeSelection", "node", "getNodes", "$isHeadingNode", "getTag", "parent", "getParent", "key", "label", "i18n", "t", "headingLevel", "charAt", "onSelect", "editor", "update", "order", "markdownTransformers", "MarkdownTransformer", "nodes", "HeadingNode", "sanitizedClientFeatureProps", "slashMenu", "groups", "length", "slashMenuBasicGroupWithItems", "Icon", "keywords", "toolbarFixed", "toolbarInline", "$isNodeSelection", "HorizontalRuleIcon", "_jsx", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "x", "y", "AddIcon", "_jsxs", "fill", "height", "viewBox", "width", "xmlns", "_jsx", "d", "stroke", "toolbarAddDropdownGroupWithItems", "items", "type", "ChildComponent", "AddIcon", "key", "order", "MarkdownTransformer", "type", "dependencies", "HorizontalRuleNode", "export", "node", "exportChildren", "$isHorizontalRuleNode", "regExp", "replace", "parentNode", "$createHorizontalRuleNode", "c", "_c", "useLexicalComposerContext", "$insertNodeToNearestRoot", "$getSelection", "$isRangeSelection", "COMMAND_PRIORITY_EDITOR", "useEffect", "HorizontalRulePlugin", "$", "_c", "editor", "useLexicalComposerContext", "t0", "t1", "registerCommand", "INSERT_HORIZONTAL_RULE_COMMAND", "type", "selection", "$getSelection", "$isRangeSelection", "focus", "getNode", "horizontalRuleNode", "$createHorizontalRuleNode", "$insertNodeToNearestRoot", "COMMAND_PRIORITY_EDITOR", "useEffect", "HorizontalRuleFeatureClient", "createClientFeature", "markdownTransformers", "MarkdownTransformer", "nodes", "HorizontalRuleNode", "plugins", "Component", "HorizontalRulePlugin", "position", "slashMenu", "groups", "slashMenuBasicGroupWithItems", "Icon", "HorizontalRuleIcon", "key", "keywords", "label", "i18n", "t", "onSelect", "editor", "dispatchCommand", "INSERT_HORIZONTAL_RULE_COMMAND", "undefined", "toolbarFixed", "toolbarAddDropdownGroupWithItems", "ChildComponent", "isActive", "selection", "$isNodeSelection", "getNodes", "length", "firstNode", "$isHorizontalRuleNode", "INDENT_CONTENT_COMMAND", "OUTDENT_CONTENT_COMMAND", "IndentDecreaseIcon", "_jsxs", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "_jsx", "d", "stroke", "strokeWidth", "IndentIncreaseIcon", "_jsxs", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "_jsx", "d", "stroke", "strokeWidth", "toolbarIndentGroupWithItems", "items", "type", "key", "order", "toolbarGroups", "toolbarIndentGroupWithItems", "ChildComponent", "IndentDecreaseIcon", "isActive", "isEnabled", "selection", "getNodes", "length", "node", "parent", "getParentOrThrow", "__indent", "key", "label", "i18n", "t", "onSelect", "editor", "dispatchCommand", "OUTDENT_CONTENT_COMMAND", "undefined", "order", "IndentIncreaseIcon", "INDENT_CONTENT_COMMAND", "IndentFeatureClient", "createClientFeature", "toolbarFixed", "groups", "toolbarInline", "$findMatchingParent", "$getSelection", "$isRangeSelection", "LinkIcon", "_jsx", "className", "fill", "height", "viewBox", "width", "xmlns", "d", "stroke", "strokeLinecap", "strokeLinejoin", "$isAtNodeEnd", "getSelectedNode", "selection", "anchor", "focus", "anchorNode", "getNode", "focusNode", "isBackward", "toolbarFeatureButtonsGroupWithItems", "items", "type", "key", "order", "$createTextNode", "$isTextNode", "addClassNamesToElement", "isHTMLAnchorElement", "ObjectID", "$applyNodeReplacement", "$createTextNode", "$getSelection", "$isElementNode", "$isRangeSelection", "createCommand", "ElementNode", "SUPPORTED_URL_PROTOCOLS", "Set", "LinkNode", "__fields", "__id", "constructor", "id", "fields", "doc", "linkType", "newTab", "url", "key", "clone", "node", "__key", "getType", "importDOM", "a", "conversion", "$convertAnchorElement", "priority", "importJSON", "serializedNode", "version", "value", "default", "toHexString", "$createLinkNode", "setFormat", "format", "setIndent", "indent", "setDirection", "direction", "canBeEmpty", "canInsertTextAfter", "canInsertTextBefore", "createDOM", "config", "element", "document", "createElement", "href", "sanitizeUrl", "target", "rel", "manageRel", "theme", "link", "exportJSON", "returnObject", "type", "getFields", "getID", "extractWithChild", "child", "selection", "destination", "anchorNode", "anchor", "getNode", "focusNode", "focus", "isParentOf", "getTextContent", "length", "getLatest", "insertNewAfter", "restoreSelection", "getParentOrThrow", "linkNode", "append", "isInline", "parsedUrl", "URL", "has", "protocol", "setFields", "writable", "getWritable", "updateDOM", "prevNode", "removeAttribute", "domNode", "content", "textContent", "getAttribute", "$isLinkNode", "TOGGLE_LINK_COMMAND", "$toggleLink", "payload", "selectedNodes", "nodes", "extract", "forEach", "parent", "getParent", "children", "getChildren", "i", "insertBefore", "remove", "firstNode", "$getLinkAncestor", "text", "getLastChild", "prevParent", "is", "getPreviousSibling", "insertAfter", "$getAncestor", "ancestor", "predicate", "input", "action", "result", "mutableInput", "includes", "re", "RegExp", "replace", "trim", "LinkMarkdownTransformer", "type", "dependencies", "LinkNode", "export", "_node", "exportChildren", "exportFormat", "$isLinkNode", "node", "url", "getFields", "linkContent", "getTextContent", "firstChild", "getFirstChild", "getChildrenSize", "$isTextNode", "importRegExp", "regExp", "replace", "textNode", "match", "linkText", "linkUrl", "linkNode", "$createLinkNode", "fields", "doc", "linkType", "newTab", "linkTextNode", "$createTextNode", "setFormat", "getFormat", "append", "trigger", "$applyNodeReplacement", "$isElementNode", "AutoLinkNode", "LinkNode", "clone", "node", "id", "fields", "__fields", "key", "__key", "getType", "importDOM", "importJSON", "serializedNode", "version", "doc", "value", "$createAutoLinkNode", "setFormat", "format", "setIndent", "indent", "setDirection", "direction", "exportJSON", "serialized", "type", "children", "insertNewAfter", "selection", "restoreSelection", "element", "getParentOrThrow", "$isElementNode", "linkNode", "append", "$applyNodeReplacement", "$isAutoLinkNode", "c", "_c", "useLexicalComposerContext", "mergeRegister", "$createTextNode", "$getSelection", "$isElementNode", "$isLineBreakNode", "$isNodeSelection", "$isRangeSelection", "$isTextNode", "TextNode", "TextNodeValue", "useEffect", "createLinkMatcherWithRegExp", "regExp", "urlTransformer", "text", "match", "exec", "index", "length", "url", "findFirstMatch", "matchers", "i", "PUNCTUATION_OR_SPACE", "isSeparator", "char", "test", "endsWithSeparator", "textContent", "startsWithSeparator", "startsWithTLD", "isEmail", "isPreviousNodeValid", "node", "previousNode", "getPreviousSibling", "$isElementNode", "getLastDescendant", "$isLineBreakNode", "$isTextNode", "getTextContent", "isNextNodeValid", "nextNode", "getNextSibling", "getFirstDescendant", "isContentAroundIsValid", "matchStart", "matchEnd", "nodes", "extractMatchingNodes", "startIndex", "endIndex", "unmodifiedBeforeNodes", "matchingNodes", "unmodifiedAfterNodes", "matchingOffset", "currentOffset", "currentNodes", "currentNode", "currentNodeLength", "currentNodeStart", "push", "shift", "$createAutoLinkNode_", "fields", "linkType", "linkNode", "$createAutoLinkNode", "remainingTextNode", "linkTextNode", "splitText", "textNode", "$createTextNode", "setFormat", "getFormat", "setDetail", "getDetail", "setStyle", "getStyle", "append", "replace", "firstTextNode", "offset", "firstLinkTextNode", "linkNodes", "currentNodeEnd", "endNode", "selection", "$getSelection", "selectedTextNode", "getNodes", "find", "undefined", "$isRangeSelection", "select", "anchor", "focus", "$isNodeSelection", "$handleLinkCreation", "onChange", "initialText", "map", "join", "invalidMatchEnd", "matchLength", "actualMatchStart", "actualMatchEnd", "substring", "handleLinkEdit", "children", "getChildren", "childrenLength", "child", "isSimpleText", "replaceWithChildren", "getFields", "flds", "setFields", "handleBadNeighbors", "previousSibling", "nextSibling", "$isAutoLinkNode", "isEmailURI", "startsWith", "j", "insertAfter", "remove", "getLatest", "getTextNodesToMatch", "textNodesToMatch", "useAutoLink", "editor", "$", "_c", "t0", "t1", "hasNodes", "AutoLinkNode", "Error", "onChangeWrapped", "prevUrl", "mergeRegister", "registerNodeTransform", "TextNodeValue", "parent", "getParentOrThrow", "previous", "$isLinkNode", "useEffect", "URL_REGEX", "EMAIL_REGEX", "MATCHERS", "AutoLinkPlugin", "useLexicalComposerContext", "ClickableLinkPlugin", "LexicalClickableLinkPlugin", "_jsx", "createPortal", "useLexicalComposerContext", "$findMatchingParent", "mergeRegister", "getTranslation", "CloseMenuIcon", "EditIcon", "formatDrawerSlug", "useConfig", "useEditDepth", "useLocale", "useTranslation", "requests", "$getSelection", "$isLineBreakNode", "$isRangeSelection", "COMMAND_PRIORITY_HIGH", "COMMAND_PRIORITY_LOW", "KEY_ESCAPE_COMMAND", "SELECTION_CHANGE_COMMAND", "React", "useCallback", "useEffect", "useRef", "useState", "setFloatingElemPositionForLinkEditor", "targetRect", "floatingElem", "anchorElem", "verticalGap", "VERTICAL_GAP", "horizontalOffset", "HORIZONTAL_OFFSET", "scrollerElem", "parentElement", "style", "opacity", "transform", "floatingElemRect", "getBoundingClientRect", "anchorElementRect", "editorScrollerRect", "top", "left", "height", "width", "right", "createCommand", "TOGGLE_LINK_WITH_MODAL_COMMAND", "LinkEditor", "anchorElem", "editor", "useLexicalComposerContext", "editorRef", "useRef", "linkUrl", "setLinkUrl", "useState", "linkLabel", "setLinkLabel", "fieldProps", "schemaPath", "uuid", "useEditorConfigContext", "config", "useConfig", "i18n", "t", "useTranslation", "stateData", "setStateData", "editDepth", "useEditDepth", "isLink", "setIsLink", "selectedNodes", "setSelectedNodes", "locale", "useLocale", "isAutoLink", "setIsAutoLink", "drawerSlug", "formatDrawerSlug", "slug", "depth", "toggleDrawer", "useLexicalDrawer", "setNotLink", "useCallback", "current", "style", "opacity", "transform", "undefined", "$updateLinkEditor", "selection", "$getSelection", "selectedNodeDomRect", "$isRangeSelection", "focusNode", "getSelectedNode", "getElementByKey", "getKey", "getBoundingClientRect", "focusLinkParent", "$findMatchingParent", "$isLinkNode", "badNode", "getNodes", "filter", "node", "$isLineBreakNode", "find", "linkNode", "is", "fields", "getFields", "data", "id", "getID", "text", "getTextContent", "linkType", "url", "routes", "admin", "doc", "relationTo", "value", "relatedField", "collections", "coll", "label", "String", "collection", "Error", "loadingLabel", "getTranslation", "labels", "singular", "replace", "requests", "get", "serverURL", "api", "headers", "language", "params", "code", "then", "res", "ok", "status", "json", "useAsTitle", "title", "catch", "$isAutoLinkNode", "editorElem", "nativeSelection", "window", "getSelection", "activeElement", "document", "rootElement", "getRootElement", "contains", "anchorNode", "getRangeAt", "y", "setFloatingElemPositionForLinkEditor", "className", "useEffect", "mergeRegister", "registerCommand", "TOGGLE_LINK_WITH_MODAL_COMMAND", "payload", "dispatchCommand", "TOGGLE_LINK_COMMAND", "COMMAND_PRIORITY_LOW", "scrollerElem", "parentElement", "update", "getEditorState", "read", "addEventListener", "removeEventListener", "registerUpdateListener", "editorState", "SELECTION_CHANGE_COMMAND", "KEY_ESCAPE_COMMAND", "COMMAND_PRIORITY_HIGH", "_jsxs", "React", "Fragment", "_jsx", "ref", "length", "href", "rel", "target", "isEditable", "onClick", "onMouseDown", "event", "preventDefault", "tabIndex", "type", "EditIcon", "CloseMenuIcon", "FieldsDrawer", "drawerTitle", "featureKey", "handleDrawerSubmit", "newLinkPayload", "bareLinkFields", "linkParent", "getParent", "$createLinkNode", "schemaPathSuffix", "FloatingLinkEditorPlugin", "props", "anchorElem", "document", "body", "createPortal", "_jsx", "LinkEditor", "c", "_c", "useLexicalComposerContext", "mergeRegister", "$getSelection", "$isElementNode", "$isRangeSelection", "COMMAND_PRIORITY_LOW", "PASTE_COMMAND", "useEffect", "absoluteRegExp", "relativeOrAnchorRegExp", "validateUrl", "url", "absoluteRegExp", "test", "relativeOrAnchorRegExp", "URL", "LinkPlugin", "$", "_c", "editor", "useLexicalComposerContext", "t0", "t1", "hasNodes", "LinkNode", "Error", "mergeRegister", "registerCommand", "TOGGLE_LINK_COMMAND", "payload", "$toggleLink", "COMMAND_PRIORITY_LOW", "PASTE_COMMAND", "event", "selection", "$getSelection", "$isRangeSelection", "isCollapsed", "ClipboardEvent", "clipboardData", "clipboardText", "getData", "validateUrl", "getNodes", "some", "node", "$isElementNode", "linkFields", "doc", "linkType", "newTab", "url", "dispatchCommand", "fields", "text", "preventDefault", "useEffect", "toolbarGroups", "toolbarFeatureButtonsGroupWithItems", "ChildComponent", "LinkIcon", "isActive", "selection", "$isRangeSelection", "selectedNode", "getSelectedNode", "$findMatchingParent", "$isLinkNode", "isEnabled", "$getSelection", "getTextContent", "length", "key", "label", "i18n", "t", "onSelect", "editor", "dispatchCommand", "TOGGLE_LINK_COMMAND", "selectedText", "selectedNodes", "getEditorState", "read", "getNodes", "linkFields", "doc", "linkType", "newTab", "url", "TOGGLE_LINK_WITH_MODAL_COMMAND", "fields", "text", "order", "LinkFeatureClient", "createClientFeature", "markdownTransformers", "LinkMarkdownTransformer", "nodes", "LinkNode", "AutoLinkNode", "plugins", "Component", "LinkPlugin", "position", "AutoLinkPlugin", "ClickableLinkPlugin", "FloatingLinkEditorPlugin", "toolbarFixed", "groups", "toolbarInline", "$isListNode", "INSERT_CHECK_LIST_COMMAND", "ListItemNode", "ListNode", "$isRangeSelection", "ChecklistIcon", "_jsxs", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "_jsx", "rx", "stroke", "x", "y", "d", "strokeWidth", "ListPlugin", "LexicalListPlugin", "_jsx", "slashMenuListGroupWithItems", "items", "key", "label", "i18n", "t", "$isListNode", "ListItemNode", "ListNode", "$createListItemNode", "$createListNode", "$isListItemNode", "$isListNode", "LIST_INDENT_SIZE", "listReplace", "listType", "parentNode", "children", "match", "previousNode", "getPreviousSibling", "nextNode", "getNextSibling", "listItem", "undefined", "getListType", "firstChild", "getFirstChild", "insertBefore", "append", "remove", "list", "Number", "replace", "select", "indent", "Math", "floor", "length", "setIndent", "listExport", "listNode", "exportChildren", "depth", "output", "getChildren", "index", "listItemNode", "getChildrenSize", "push", "repeat", "prefix", "getStart", "getChecked", "join", "CHECK_LIST", "type", "dependencies", "ListNode", "ListItemNode", "export", "node", "exportChildren", "$isListNode", "listExport", "regExp", "replace", "listReplace", "CheckListPlugin", "LexicalCheckListPlugin", "_jsx", "toolbarGroups", "toolbarTextDropdownGroupWithItems", "ChildComponent", "ChecklistIcon", "isActive", "selection", "$isRangeSelection", "node", "getNodes", "$isListNode", "getListType", "parent", "getParent", "parentParent", "key", "label", "i18n", "t", "onSelect", "editor", "dispatchCommand", "INSERT_CHECK_LIST_COMMAND", "undefined", "order", "ChecklistFeatureClient", "createClientFeature", "featureProviderMap", "plugins", "Component", "LexicalCheckListPlugin", "position", "has", "push", "LexicalListPlugin", "markdownTransformers", "CHECK_LIST", "nodes", "ListNode", "ListItemNode", "slashMenu", "groups", "slashMenuListGroupWithItems", "Icon", "keywords", "toolbarFixed", "toolbarInline", "$isListNode", "INSERT_ORDERED_LIST_COMMAND", "ListItemNode", "ListNode", "$isRangeSelection", "OrderedListIcon", "_jsxs", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "_jsx", "d", "stroke", "strokeWidth", "$isListNode", "ListItemNode", "ListNode", "ORDERED_LIST", "type", "dependencies", "ListNode", "ListItemNode", "export", "node", "exportChildren", "$isListNode", "listExport", "regExp", "replace", "listReplace", "toolbarGroups", "toolbarTextDropdownGroupWithItems", "ChildComponent", "OrderedListIcon", "isActive", "selection", "$isRangeSelection", "node", "getNodes", "$isListNode", "getListType", "parent", "getParent", "parentParent", "key", "label", "i18n", "t", "onSelect", "editor", "dispatchCommand", "INSERT_ORDERED_LIST_COMMAND", "undefined", "order", "OrderedListFeatureClient", "createClientFeature", "featureProviderMap", "markdownTransformers", "ORDERED_LIST", "nodes", "has", "ListNode", "ListItemNode", "plugins", "Component", "LexicalListPlugin", "position", "slashMenu", "groups", "slashMenuListGroupWithItems", "Icon", "keywords", "toolbarFixed", "toolbarInline", "$isListNode", "INSERT_UNORDERED_LIST_COMMAND", "ListItemNode", "ListNode", "$isRangeSelection", "UnorderedListIcon", "_jsxs", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "_jsx", "cx", "cy", "r", "stroke", "strokeWidth", "d", "$isListNode", "ListItemNode", "ListNode", "UNORDERED_LIST", "type", "dependencies", "ListNode", "ListItemNode", "export", "node", "exportChildren", "$isListNode", "listExport", "regExp", "replace", "listReplace", "toolbarGroups", "toolbarTextDropdownGroupWithItems", "ChildComponent", "UnorderedListIcon", "isActive", "selection", "$isRangeSelection", "node", "getNodes", "$isListNode", "getListType", "parent", "getParent", "parentParent", "key", "label", "i18n", "t", "onSelect", "editor", "dispatchCommand", "INSERT_UNORDERED_LIST_COMMAND", "undefined", "order", "UnorderedListFeatureClient", "createClientFeature", "markdownTransformers", "UNORDERED_LIST", "nodes", "ListNode", "ListItemNode", "plugins", "Component", "LexicalListPlugin", "position", "slashMenu", "groups", "slashMenuListGroupWithItems", "Icon", "keywords", "toolbarFixed", "toolbarInline", "addClassNamesToElement", "DecoratorNode", "React", "Component", "lazy", "then", "module", "default", "UnknownConvertedNodeComponent", "UnknownConvertedNode", "__data", "constructor", "data", "key", "clone", "node", "__key", "getType", "importJSON", "serializedNode", "$createUnknownConvertedNode", "canInsertTextAfter", "canInsertTextBefore", "createDOM", "config", "element", "document", "createElement", "decorate", "_jsx", "exportJSON", "type", "version", "isInline", "updateDOM", "prevNode", "dom", "LexicalPluginToLexicalFeatureClient", "createClientFeature", "nodes", "UnknownConvertedNode", "addClassNamesToElement", "DecoratorNode", "React", "Component", "lazy", "then", "module", "default", "UnknownConvertedNodeComponent", "UnknownConvertedNode", "__data", "constructor", "data", "key", "clone", "node", "__key", "getType", "importJSON", "serializedNode", "$createUnknownConvertedNode", "canInsertTextAfter", "canInsertTextBefore", "createDOM", "config", "element", "document", "createElement", "decorate", "_jsx", "exportJSON", "type", "version", "isInline", "updateDOM", "prevNode", "dom", "SlateToLexicalFeatureClient", "createClientFeature", "nodes", "UnknownConvertedNode", "$setBlocksType", "$createParagraphNode", "$getSelection", "$isParagraphNode", "$isRangeSelection", "toolbarGroups", "toolbarTextDropdownGroupWithItems", "ChildComponent", "TextIcon", "isActive", "selection", "$isRangeSelection", "node", "getNodes", "$isParagraphNode", "getParent", "key", "label", "i18n", "t", "onSelect", "editor", "update", "$getSelection", "$setBlocksType", "$createParagraphNode", "order", "ParagraphFeatureClient", "createClientFeature", "slashMenu", "groups", "slashMenuBasicGroupWithItems", "Icon", "keywords", "toolbarFixed", "toolbarInline", "$isNodeSelection", "RelationshipIcon", "_jsxs", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "_jsx", "clipPath", "d", "stroke", "strokeLinecap", "strokeLinejoin", "id", "transform", "c", "_c", "useLexicalComposerContext", "$insertNodeToNearestRoot", "useConfig", "$getPreviousSelection", "$getSelection", "$isParagraphNode", "$isRangeSelection", "COMMAND_PRIORITY_EDITOR", "createCommand", "useEffect", "c", "_c", "useLexicalComposerContext", "$getNodeByKey", "COMMAND_PRIORITY_EDITOR", "useEffect", "useState", "c", "_c", "useLexicalComposerContext", "useListDrawer", "useModal", "$getPreviousSelection", "$getSelection", "$setSelection", "useEffect", "useState", "useLexicalListDrawer", "args", "$", "editor", "selectionState", "setSelectionState", "wasOpen", "setWasOpen", "BaseListDrawer", "BaseListDrawerToggler", "t0", "closeDrawer", "baseCloseDrawer", "drawerSlug", "listDrawerSlug", "isDrawerOpen", "openDrawer", "baseOpenDrawer", "modalState", "t1", "Symbol", "for", "selection", "$storeSelection", "t2", "update", "clone", "discrete", "skipTransforms", "restoreSelection", "t3", "closeListDrawer", "t4", "t5", "thisModalState", "isOpen", "setTimeout", "t6", "props", "_jsx", "onClick", "t7", "t8", "isListDrawerOpen", "ListDrawer", "ListDrawerToggler", "insertRelationship", "editor", "relationTo", "replaceNodeKey", "value", "update", "node", "$getNodeByKey", "replace", "$createRelationshipNode", "dispatchCommand", "INSERT_RELATIONSHIP_COMMAND", "RelationshipDrawerComponent", "t0", "$", "_c", "enabledCollectionSlugs", "useLexicalComposerContext", "t1", "selectedCollectionSlug", "setSelectedCollectionSlug", "useState", "setReplaceNodeKey", "t2", "undefined", "t3", "collectionSlugs", "selectedCollection", "closeListDrawer", "isListDrawerOpen", "ListDrawer", "openListDrawer", "useLexicalListDrawer", "t4", "t5", "registerCommand", "INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND", "payload", "nodeKey", "COMMAND_PRIORITY_EDITOR", "useEffect", "t6", "t7", "collectionSlug", "docID", "onSelect", "t8", "t9", "_jsx", "RelationshipDrawer", "props", "length", "EnabledRelationshipsCondition", "INSERT_RELATIONSHIP_COMMAND", "createCommand", "RelationshipPlugin", "t0", "$", "_c", "clientProps", "editor", "useLexicalComposerContext", "config", "t1", "useConfig", "collections", "enabledRelations", "enabledCollections", "disabledCollections", "t2", "t3", "t4", "slug", "includes", "filter", "map", "_temp", "hasNodes", "RelationshipNode", "Error", "registerCommand", "payload", "selection", "$getSelection", "$getPreviousSelection", "$isRangeSelection", "relationshipNode", "$createRelationshipNode", "$insertNodeToNearestRoot", "focus", "focusNode", "getNode", "$isParagraphNode", "getTextContentSize", "getParentOrThrow", "getChildren", "node", "length", "remove", "COMMAND_PRIORITY_EDITOR", "useEffect", "_jsx", "RelationshipDrawer", "enabledCollectionSlugs", "slug_0", "RelationshipFeatureClient", "createClientFeature", "nodes", "RelationshipNode", "plugins", "Component", "RelationshipPlugin", "position", "slashMenu", "groups", "slashMenuBasicGroupWithItems", "Icon", "RelationshipIcon", "key", "keywords", "label", "i18n", "t", "onSelect", "editor", "dispatchCommand", "INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND", "replace", "toolbarFixed", "toolbarAddDropdownGroupWithItems", "ChildComponent", "isActive", "selection", "$isNodeSelection", "getNodes", "length", "firstNode", "$isRelationshipNode", "c", "_c", "useLexicalComposerContext", "useScrollInfo", "useThrottledEffect", "useTranslation", "React", "useMemo", "mergeRegister", "$getSelection", "useCallback", "useEffect", "useState", "baseClass", "ToolbarButton", "children", "editor", "item", "enabled", "setEnabled", "useState", "active", "setActive", "className", "setClassName", "editorConfigContext", "useEditorConfigContext", "updateStates", "useCallback", "getEditorState", "read", "selection", "$getSelection", "isActive", "isEnabled", "useEffect", "document", "addEventListener", "removeEventListener", "mergeRegister", "registerUpdateListener", "key", "filter", "Boolean", "join", "_jsx", "onClick", "_updateTags", "Set", "focus", "onSelect", "onMouseDown", "e", "preventDefault", "type", "c", "_c", "React", "useEffect", "mergeRegister", "useTranslation", "$getSelection", "React", "useCallback", "useEffect", "useMemo", "useRef", "useState", "createPortal", "baseClass", "DropDownContext", "createContext", "DropDownItem", "active", "children", "editor", "enabled", "item", "title", "className", "setClassName", "key", "filter", "Boolean", "join", "ref", "dropDownContext", "useContext", "Error", "registerItem", "current", "_jsx", "onClick", "_updateTags", "Set", "focus", "onSelect", "isActive", "onMouseDown", "e", "preventDefault", "type", "DropDownItems", "dropDownRef", "itemsContainerClassNames", "onClose", "items", "setItems", "highlightedItem", "setHighlightedItem", "itemRef", "prev", "handleKeyDown", "event", "includes", "index", "indexOf", "length", "contextValue", "Provider", "value", "onKeyDown", "DropDown", "buttonAriaLabel", "buttonClassName", "disabled", "Icon", "label", "stopCloseOnClickSelf", "buttonRef", "showDropDown", "setShowDropDown", "handleClose", "button", "dropDown", "left", "top", "getBoundingClientRect", "scrollTopOffset", "window", "scrollY", "document", "documentElement", "scrollTop", "style", "offsetHeight", "Math", "min", "innerWidth", "offsetWidth", "handle", "target", "contains", "addEventListener", "removeEventListener", "portal", "body", "_jsxs", "Fragment", "baseClass", "ToolbarItem", "t0", "$", "_c", "active", "anchorElem", "editor", "enabled", "item", "i18n", "useTranslation", "fieldProps", "t1", "useEditorConfigContext", "featureClientSchemaMap", "schemaPath", "Component", "t2", "_jsx", "key", "title", "label", "length", "substring", "ChildComponent", "t3", "_jsxs", "DropDownItem", "children", "className", "ToolbarDropdown", "classNames", "group", "Icon", "itemsContainerClassNames", "maxActiveItems", "onActiveChange", "Symbol", "for", "activeItemKeys", "setActiveItemKeys", "React", "useState", "enabledItemKeys", "setEnabledItemKeys", "enabledGroup", "setEnabledGroup", "editorConfigContext", "items", "groupKey", "getEditorState", "read", "selection", "$getSelection", "_activeItemKeys", "_activeItems", "_enabledItemKeys", "isActive", "push", "isEnabled", "activeItems", "updateStates", "t4", "t5", "useEffect", "t6", "t7", "mergeRegister", "registerUpdateListener", "t8", "t9", "t10", "t11", "filter", "Boolean", "t12", "join", "t13", "t14", "t15", "t16", "map", "item_0", "includes", "DropDown", "buttonAriaLabel", "buttonClassName", "disabled", "ButtonGroupItem", "anchorElem", "editor", "item", "Component", "_jsx", "key", "ChildComponent", "ToolbarButton", "ToolbarGroupComponent", "t0", "$", "_c", "editorConfig", "group", "index", "i18n", "useTranslation", "fieldProps", "t1", "useEditorConfigContext", "featureClientSchemaMap", "schemaPath", "dropdownLabel", "setDropdownLabel", "useState", "undefined", "DropdownIcon", "setDropdownIcon", "t2", "t3", "type", "items", "length", "useEffect", "t4", "t5", "activeItems", "label", "substring", "onActiveChange", "t6", "ToolbarDropdown", "Icon", "itemsContainerClassNames", "maxActiveItems", "t7", "map", "item_0", "t8", "features", "toolbarFixed", "_jsxs", "className", "children", "groups", "FixedToolbar", "clientProps", "parentWithFixedToolbar", "currentToolbarRef", "useRef", "y", "useScrollInfo", "parentToolbarElem", "useMemo", "disableIfParentHasFixedToolbar", "sibling", "editorContainerRef", "current", "previousElementSibling", "classList", "contains", "useThrottledEffect", "currentToolbarElem", "currentRect", "getBoundingClientRect", "parentRect", "bottom", "top", "onFocus", "event", "stopPropagation", "ref", "isEditable", "Fragment", "i", "getParentEditorWithFixedToolbar", "editorConfigContext", "parentEditor", "resolvedFeatureMap", "has", "FixedToolbarPlugin", "currentEditor", "useLexicalComposerContext", "currentEditorConfig", "applyToFocusedEditor", "focusedEditor", "Symbol", "for", "bb0", "FixedToolbarFeatureClient", "createClientFeature", "plugins", "Component", "FixedToolbarPlugin", "position", "c", "_c", "useLexicalComposerContext", "mergeRegister", "$getSelection", "$isRangeSelection", "$isTextNode", "COMMAND_PRIORITY_LOW", "SELECTION_CHANGE_COMMAND", "useCallback", "useEffect", "useRef", "useState", "React", "createPortal", "getDOMRangeRect", "nativeSelection", "rootElement", "domRange", "getRangeAt", "rect", "anchorNode", "inner", "firstElementChild", "getBoundingClientRect", "setFloatingElemPosition", "args", "alwaysDisplayOnTop", "anchorElem", "anchorFlippedOffset", "floatingElem", "horizontalOffset", "HORIZONTAL_OFFSET", "horizontalPosition", "specialHandlingForCaret", "targetRect", "verticalGap", "VERTICAL_GAP", "scrollerElem", "parentElement", "style", "opacity", "transform", "floatingElemRect", "getBoundingClientRect", "anchorElementRect", "editorScrollerRect", "top", "height", "left", "width", "addedToTop", "right", "bottom", "ButtonGroupItem", "anchorElem", "editor", "item", "Component", "_jsx", "key", "ChildComponent", "ToolbarButton", "ToolbarGroupComponent", "t0", "$", "_c", "group", "index", "editorConfig", "useEditorConfigContext", "DropdownIcon", "setDropdownIcon", "useState", "t1", "t2", "type", "items", "length", "undefined", "useEffect", "t3", "t4", "activeItems", "onActiveChange", "t5", "ToolbarDropdown", "Icon", "maxActiveItems", "t6", "map", "item_0", "t7", "features", "toolbarInline", "_jsxs", "className", "children", "groups", "InlineToolbar", "floatingToolbarRef", "useRef", "caretRef", "closeFloatingToolbar", "useCallback", "current", "isOpacityZero", "style", "opacity", "isPointerEventsNone", "pointerEvents", "mouseMoveListener", "e", "buttons", "x", "clientX", "y", "clientY", "elementUnderMouse", "document", "elementFromPoint", "contains", "mouseUpListener", "addEventListener", "removeEventListener", "$updateTextFormatFloatingToolbar", "selection", "$getSelection", "nativeSelection", "window", "getSelection", "possibleLinkEditor", "querySelector", "isLinkEditorVisible", "rootElement", "getRootElement", "isCollapsed", "anchorNode", "rangeRect", "getDOMRangeRect", "offsetIfFlipped", "setFloatingElemPosition", "alwaysDisplayOnTop", "floatingElem", "horizontalPosition", "targetRect", "anchorFlippedOffset", "horizontalOffset", "specialHandlingForCaret", "verticalGap", "scrollerElem", "parentElement", "update", "getEditorState", "read", "mergeRegister", "registerUpdateListener", "editorState", "registerCommand", "SELECTION_CHANGE_COMMAND", "COMMAND_PRIORITY_LOW", "ref", "i", "useInlineToolbar", "isText", "setIsText", "isComposing", "$isRangeSelection", "getTextContent", "nodes", "getNodes", "foundNodeWithText", "node", "$isTextNode", "rawTextContent", "replace", "updatePopup", "registerRootListener", "isEditable", "createPortal", "InlineToolbarPlugin", "useLexicalComposerContext", "InlineToolbarFeatureClient", "createClientFeature", "plugins", "Component", "InlineToolbarPlugin", "position", "TableCellNode", "TableNode", "TableRowNode", "TableIcon", "_jsx", "className", "fill", "height", "viewBox", "width", "xmlns", "clipRule", "d", "fillRule", "c", "_c", "useLexicalComposerContext", "useLexicalEditable", "$deleteTableColumn__EXPERIMENTAL", "$deleteTableRow__EXPERIMENTAL", "$getNodeTriplet", "$getTableCellNodeFromLexicalNode", "$getTableColumnIndexFromTableCellNode", "$getTableNodeFromLexicalNodeOrThrow", "$getTableRowIndexFromTableCellNode", "$insertTableColumn__EXPERIMENTAL", "$insertTableRow__EXPERIMENTAL", "$isTableCellNode", "$isTableRowNode", "$isTableSelection", "$unmergeCell", "getTableObserverFromTableElement", "TableCellHeaderStates", "TableCellNode", "useScrollInfo", "$createParagraphNode", "$getRoot", "$getSelection", "$isElementNode", "$isParagraphNode", "$isRangeSelection", "$isTextNode", "React", "useCallback", "useEffect", "useRef", "useState", "createPortal", "MeatballsIcon", "_jsxs", "fill", "height", "viewBox", "width", "xmlns", "_jsx", "d", "computeSelectionCount", "selection", "selectionShape", "getShape", "columns", "toX", "fromX", "rows", "toY", "fromY", "$canUnmerge", "$getSelection", "$isRangeSelection", "isCollapsed", "$isTableSelection", "anchor", "is", "focus", "cell", "$getNodeTriplet", "__colSpan", "__rowSpan", "$cellContainsEmptyParagraph", "getChildrenSize", "firstChild", "getFirstChildOrThrow", "$isParagraphNode", "isEmpty", "$selectLastDescendant", "node", "lastDescendant", "getLastDescendant", "$isTextNode", "select", "$isElementNode", "selectEnd", "selectNext", "TableActionMenu", "cellMerge", "contextRef", "onClose", "setIsMenuOpen", "tableCellNode", "_tableCellNode", "editor", "useLexicalComposerContext", "dropDownRef", "useRef", "updateTableCellNode", "useState", "selectionCounts", "updateSelectionCounts", "canMergeCells", "setCanMergeCells", "canUnmergeCell", "setCanUnmergeCell", "y", "useScrollInfo", "useEffect", "registerMutationListener", "TableCellNode", "nodeMutations", "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", "useCallback", "update", "isAttached", "tableNode", "$getTableNodeFromLexicalNodeOrThrow", "tableElement", "getElementByKey", "Error", "tableObserver", "getTableObserverFromTableElement", "clearHighlight", "markDirty", "$getRoot", "selectStart", "mergeTableCellsAtSelection", "nodes", "getNodes", "firstCell", "i", "length", "$isTableCellNode", "setColSpan", "setRowSpan", "getFirstChild", "remove", "append", "getChildren", "$createParagraphNode", "unmergeTableCellsAtSelection", "$unmergeCell", "insertTableRowAtSelection", "shouldInsertAfter", "$insertTableRow__EXPERIMENTAL", "insertTableColumnAtSelection", "$insertTableColumn__EXPERIMENTAL", "deleteTableRowAtSelection", "$deleteTableRow__EXPERIMENTAL", "deleteTableAtSelection", "deleteTableColumnAtSelection", "$deleteTableColumn__EXPERIMENTAL", "toggleTableRowIsHeader", "tableRowIndex", "$getTableRowIndexFromTableCellNode", "tableRows", "tableRow", "$isTableRowNode", "newStyle", "getHeaderStyles", "TableCellHeaderStates", "ROW", "forEach", "tableCell", "setHeaderStyles", "toggleTableColumnIsHeader", "tableColumnIndex", "$getTableColumnIndexFromTableCellNode", "maxRowsLength", "Math", "max", "map", "row", "COLUMN", "r", "tableCells", "toggleRowStriping", "setRowStriping", "getRowStriping", "mergeCellButton", "_jsx", "className", "onClick", "type", "createPortal", "_jsxs", "e", "stopPropagation", "ref", "Fragment", "__headerState", "document", "body", "TableCellActionMenuContainer", "anchorElem", "menuButtonRef", "menuRootRef", "isMenuOpen", "setTableMenuCellNode", "$moveMenu", "menu", "nativeSelection", "getSelection", "activeElement", "anchorNode", "tableCellNodeFromSelection", "$getTableCellNodeFromLexicalNode", "getNode", "registerUpdateListener", "menuButtonDOM", "tableCellNodeDOM", "tableCellRect", "menuRect", "anchorRect", "transform", "prevTableCellDOM", "MeatballsIcon", "TableActionMenuPlugin", "t0", "$", "_c", "isEditable", "useLexicalEditable", "t1", "c", "_c", "useLexicalComposerContext", "useLexicalEditable", "$computeTableMapSkipCellCheck", "$getTableNodeFromLexicalNodeOrThrow", "$getTableRowIndexFromTableCellNode", "$isTableCellNode", "$isTableRowNode", "getDOMCellFromTarget", "TableNode", "calculateZoomLevel", "$getNearestNodeFromDOMNode", "React", "useCallback", "useEffect", "useRef", "useState", "createPortal", "MIN_ROW_HEIGHT", "MIN_COLUMN_WIDTH", "TableCellResizer", "editor", "targetRef", "useRef", "resizerRef", "tableRectRef", "editorConfig", "useEditorConfigContext", "mouseStartPosRef", "mouseCurrentPos", "updateMouseCurrentPos", "useState", "activeCell", "updateActiveCell", "isMouseDown", "updateIsMouseDown", "draggingDirection", "updateDraggingDirection", "resetState", "useCallback", "current", "isMouseDownOnEvent", "event", "buttons", "useEffect", "registerNodeTransform", "TableNode", "tableNode", "getColWidths", "numColumns", "getColumnCount", "columnWidth", "setColWidths", "Array", "fill", "onMouseMove", "setTimeout", "target", "x", "clientX", "y", "clientY", "contains", "cell", "getDOMCellFromTarget", "update", "tableCellNode", "$getNearestNodeFromDOMNode", "elem", "Error", "$getTableNodeFromLexicalNodeOrThrow", "tableElement", "getElementByKey", "getKey", "getBoundingClientRect", "onMouseDown", "onMouseUp", "removeRootListener", "registerRootListener", "rootElement", "prevRootElement", "removeEventListener", "addEventListener", "isHeightChanging", "direction", "updateRowHeight", "heightChange", "$isTableCellNode", "tableRowIndex", "$getTableRowIndexFromTableCellNode", "getRowSpan", "tableRows", "getChildren", "length", "tableRow", "$isTableRowNode", "height", "getHeight", "undefined", "rowCells", "Math", "min", "map", "getCellNodeHeight", "Infinity", "newHeight", "max", "setHeight", "tag", "activeEditor", "clientHeight", "getCellColumnIndex", "tableMap", "row", "column", "updateColumnWidth", "widthChange", "$computeTableMapSkipCellCheck", "columnIndex", "colWidths", "width", "newColWidths", "newWidth", "mouseUpHandler", "handler", "preventDefault", "stopPropagation", "zoom", "calculateZoomLevel", "document", "toggleResize", "resizerStyles", "left", "top", "zoneWidth", "styles", "bottom", "backgroundColor", "cursor", "window", "pageXOffset", "pageYOffset", "right", "tableRect", "_jsx", "ref", "_jsxs", "Fragment", "className", "lexical", "theme", "tableCellResizer", "style", "TableCellResizerPlugin", "$", "_c", "useLexicalComposerContext", "isEditable", "useLexicalEditable", "t0", "t1", "createPortal", "c", "_c", "useLexicalComposerContext", "$getTableColumnIndexFromTableCellNode", "$getTableRowIndexFromTableCellNode", "$insertTableColumn__EXPERIMENTAL", "$insertTableRow__EXPERIMENTAL", "$isTableCellNode", "$isTableNode", "TableNode", "$findMatchingParent", "mergeRegister", "$getNearestNodeFromDOMNode", "useEffect", "useMemo", "useRef", "useState", "createPortal", "useMemo", "useRef", "FUNC_ERROR_TEXT", "nativeMax", "Math", "max", "nativeMin", "min", "debounce", "func", "wait", "options", "lastArgs", "lastCallTime", "lastInvokeTime", "lastThis", "leading", "maxing", "maxWait", "result", "timerId", "trailing", "TypeError", "invokeFunc", "time", "args", "thisArg", "undefined", "apply", "leadingEdge", "setTimeout", "timerExpired", "remainingWait", "timeSinceLastCall", "timeSinceLastInvoke", "timeWaiting", "shouldInvoke", "Date", "now", "trailingEdge", "cancel", "clearTimeout", "flush", "debounced", "isInvoking", "arguments", "debounce_default", "useDebounce", "fn", "ms", "maxWait", "funcRef", "useRef", "current", "useMemo", "debounce", "args", "BUTTON_WIDTH_PX", "TableHoverActionsContainer", "anchorElem", "editor", "useLexicalComposerContext", "editorConfig", "useEditorConfigContext", "isShownRow", "setShownRow", "useState", "isShownColumn", "setShownColumn", "shouldListenMouseMove", "setShouldListenMouseMove", "position", "setPosition", "tableSetRef", "useRef", "Set", "tableCellDOMNodeRef", "debouncedOnMouseMove", "useDebounce", "event", "isOutside", "tableDOMNode", "getMouseInfo", "lexical", "current", "hoveredRowNode", "hoveredColumnNode", "tableDOMElement", "update", "maybeTableCell", "$getNearestNodeFromDOMNode", "$isTableCellNode", "table", "$findMatchingParent", "node", "$isTableNode", "getElementByKey", "getKey", "rowCount", "getChildrenSize", "colCount", "getChildAtIndex", "rowIndex", "$getTableRowIndexFromTableCellNode", "colIndex", "$getTableColumnIndexFromTableCellNode", "bottom", "tableElemBottom", "height", "tableElemHeight", "left", "tableElemLeft", "right", "tableElemRight", "width", "tableElemWidth", "y", "tableElemY", "getBoundingClientRect", "editorElemLeft", "editorElemY", "top", "tableResizeObserver", "useMemo", "ResizeObserver", "useEffect", "document", "addEventListener", "removeEventListener", "mergeRegister", "registerMutationListener", "TableNode", "mutations", "getEditorState", "read", "key", "type", "add", "size", "observe", "delete", "disconnect", "forEach", "tableKey", "tableElement", "skipInitialization", "insertAction", "insertRow", "selectEnd", "$insertTableRow__EXPERIMENTAL", "$insertTableColumn__EXPERIMENTAL", "isEditable", "_jsxs", "_Fragment", "_jsx", "className", "theme", "tableAddRows", "onClick", "style", "tableAddColumns", "target", "HTMLElement", "closest", "tableCell", "tableCellResizer", "TableHoverActionsPlugin", "t0", "$", "_c", "t1", "undefined", "body", "t2", "createPortal", "c", "_c", "useLexicalComposerContext", "TablePlugin", "LexicalReactTablePlugin", "INSERT_TABLE_COMMAND", "TableNode", "mergeRegister", "formatDrawerSlug", "useEditDepth", "$getSelection", "$isRangeSelection", "COMMAND_PRIORITY_EDITOR", "createCommand", "createContext", "useContext", "useEffect", "useMemo", "useState", "React", "OPEN_TABLE_DRAWER_COMMAND", "createCommand", "CellContext", "createContext", "cellEditorConfig", "cellEditorPlugins", "set", "TableContext", "children", "contextValue", "setContextValue", "useState", "_jsx", "Provider", "value", "useMemo", "TablePlugin", "$", "_c", "editor", "useLexicalComposerContext", "cellContext", "useContext", "editDepth", "useEditDepth", "fieldProps", "t0", "uuid", "useEditorConfigContext", "schemaPath", "t1", "t2", "formatDrawerSlug", "slug", "depth", "drawerSlug", "toggleDrawer", "useLexicalDrawer", "t3", "hasNodes", "TableNode", "Error", "mergeRegister", "registerCommand", "rangeSelection", "getEditorState", "read", "selection", "$getSelection", "$isRangeSelection", "COMMAND_PRIORITY_EDITOR", "t4", "useEffect", "t5", "_fields", "data", "columns", "rows", "dispatchCommand", "INSERT_TABLE_COMMAND", "String", "t6", "_jsxs", "Fragment", "FieldsDrawer", "drawerTitle", "featureKey", "handleDrawerSubmit", "schemaPathSuffix", "LexicalReactTablePlugin", "hasCellBackgroundColor", "hasCellMerge", "TableFeatureClient", "createClientFeature", "nodes", "TableNode", "TableCellNode", "TableRowNode", "plugins", "Component", "TablePlugin", "position", "TableCellResizerPlugin", "TableActionMenuPlugin", "TableHoverActionsPlugin", "providers", "TableContext", "slashMenu", "groups", "slashMenuBasicGroupWithItems", "Icon", "TableIcon", "key", "keywords", "label", "onSelect", "editor", "dispatchCommand", "OPEN_TABLE_DRAWER_COMMAND", "toolbarFixed", "toolbarAddDropdownGroupWithItems", "ChildComponent", "$isNodeSelection", "UploadIcon", "_jsxs", "className", "fill", "focusable", "height", "viewBox", "width", "xmlns", "_jsx", "d", "stroke", "strokeLinecap", "strokeLinejoin", "c", "_c", "useLexicalComposerContext", "$insertNodeToNearestRoot", "mergeRegister", "useConfig", "$getPreviousSelection", "$getSelection", "$isParagraphNode", "$isRangeSelection", "COMMAND_PRIORITY_EDITOR", "createCommand", "useEffect", "c", "_c", "useLexicalComposerContext", "$getNodeByKey", "COMMAND_PRIORITY_EDITOR", "useEffect", "useState", "insertUpload", "editor", "relationTo", "replaceNodeKey", "value", "update", "node", "$getNodeByKey", "replace", "$createUploadNode", "data", "fields", "dispatchCommand", "INSERT_UPLOAD_COMMAND", "UploadDrawerComponent", "t0", "$", "_c", "enabledCollectionSlugs", "useLexicalComposerContext", "setReplaceNodeKey", "useState", "t1", "collectionSlugs", "uploads", "closeListDrawer", "ListDrawer", "openListDrawer", "useLexicalListDrawer", "t2", "t3", "registerCommand", "INSERT_UPLOAD_WITH_DRAWER_COMMAND", "payload", "nodeKey", "COMMAND_PRIORITY_EDITOR", "useEffect", "t4", "t5", "collectionSlug", "docID", "onSelect", "_jsx", "UploadDrawer", "props", "EnabledRelationshipsCondition", "INSERT_UPLOAD_COMMAND", "createCommand", "UploadPlugin", "t0", "$", "_c", "editor", "useLexicalComposerContext", "config", "t1", "useConfig", "collections", "t2", "t3", "hasNodes", "UploadNode", "Error", "mergeRegister", "registerCommand", "payload", "update", "selection", "$getSelection", "$getPreviousSelection", "$isRangeSelection", "uploadNode", "$createUploadNode", "data", "id", "fields", "relationTo", "value", "$insertNodeToNearestRoot", "focus", "focusNode", "getNode", "$isParagraphNode", "getTextContentSize", "getParentOrThrow", "getChildren", "filter", "node", "length", "remove", "COMMAND_PRIORITY_EDITOR", "useEffect", "t4", "_jsx", "UploadDrawer", "enabledCollectionSlugs", "map", "_temp", "slug", "UploadFeatureClient", "createClientFeature", "nodes", "UploadNode", "plugins", "Component", "UploadPlugin", "position", "slashMenu", "groups", "slashMenuBasicGroupWithItems", "Icon", "UploadIcon", "key", "keywords", "label", "i18n", "t", "onSelect", "editor", "dispatchCommand", "INSERT_UPLOAD_WITH_DRAWER_COMMAND", "replace", "toolbarFixed", "toolbarAddDropdownGroupWithItems", "ChildComponent", "isActive", "selection", "$isNodeSelection", "getNodes", "length", "firstNode", "$isUploadNode", "c", "_c", "ShimmerEffect", "lazy", "Suspense", "useEffect", "useState", "LexicalEditorTheme", "block", "blockCursor", "characterLimit", "code", "codeHighlight", "atrule", "attr", "boolean", "builtin", "cdata", "char", "class", "comment", "constant", "deleted", "doctype", "entity", "function", "important", "inserted", "keyword", "namespace", "number", "operator", "prolog", "property", "punctuation", "regex", "selector", "string", "symbol", "tag", "url", "variable", "embedBlock", "base", "focus", "hashtag", "heading", "h1", "h2", "h3", "h4", "h5", "h6", "hr", "indent", "inlineImage", "link", "list", "checklist", "listitem", "listitemChecked", "listitemUnchecked", "nested", "olDepth", "ul", "ltr", "mark", "markOverlap", "paragraph", "quote", "relationship", "rtl", "table", "tableAddColumns", "tableAddRows", "tableCell", "tableCellActionButton", "tableCellActionButtonContainer", "tableCellEditing", "tableCellHeader", "tableCellPrimarySelected", "tableCellResizer", "tableCellSelected", "tableCellSortedIndicator", "tableResizeRuler", "tableRowStriping", "tableSelected", "text", "bold", "italic", "strikethrough", "subscript", "superscript", "underline", "underlineStrikethrough", "upload", "defaultEditorLexicalConfig", "namespace", "theme", "LexicalEditorTheme", "loadClientFeatures", "unSanitizedEditorConfig", "featureProvider", "features", "clientFeatureProps", "featureKey", "order", "undefined", "Error", "sort", "a", "b", "featureProviderMap", "Map", "feature", "set", "resolvedFeatures", "loaded", "key", "sanitizeClientFeatures", "features", "sanitized", "enabledFeatures", "hooks", "load", "save", "markdownTransformers", "nodes", "plugins", "providers", "slashMenu", "dynamicGroups", "groups", "toolbarFixed", "toolbarInline", "size", "forEach", "feature", "length", "concat", "plugin", "i", "push", "clientProps", "sanitizedClientFeatureProps", "Component", "key", "position", "group", "foundGroup", "find", "sanitizedGroup", "filter", "items", "optionGroup", "sort", "a", "b", "order", "sanitizeClientEditorConfig", "resolvedClientFeatureMap", "lexical", "admin", "resolvedFeatureMap", "RichTextEditor", "lazy", "then", "module", "default", "RichText", "RichTextField", "props", "$", "_c", "admin", "t0", "clientFeatures", "lexicalEditorConfig", "t1", "undefined", "finalSanitizedEditorConfig", "setFinalSanitizedEditorConfig", "useState", "t2", "t3", "featureProvidersLocal", "_featureKey", "clientFeature", "Object", "entries", "clientFeatureProvider", "push", "clientFeatureProps", "finalLexicalEditorConfig", "defaultEditorLexicalConfig", "resolvedClientFeatures", "loadClientFeatures", "unSanitizedEditorConfig", "features", "lexical", "sanitizeClientEditorConfig", "useEffect", "t4", "_jsx", "Suspense", "fallback", "ShimmerEffect", "height", "editorConfig", "joinClasses", "args", "filter", "Boolean", "join", "elements", "WeakMap", "readTouch", "e", "touch", "changedTouches", "undefined", "clientX", "clientY", "addListener", "element", "cb", "elementValues", "get", "listeners", "Set", "handleTouchstart", "start", "handleTouchend", "end", "listener", "addEventListener", "set", "add", "deleteListener", "delete", "size", "removeEventListener", "addSwipeLeftListener", "force", "x", "y", "Math", "abs", "addSwipeRightListener", "addSwipeUpListener", "addSwipeDownListener", "NodeFormat", "DOM_ELEMENT_TYPE", "DOM_TEXT_TYPE", "NO_DIRTY_NODES", "HAS_DIRTY_NODES", "FULL_RECONCILE", "IS_NORMAL", "IS_TOKEN", "IS_SEGMENTED", "IS_INERT", "IS_BOLD", "IS_ITALIC", "IS_STRIKETHROUGH", "IS_UNDERLINE", "IS_CODE", "IS_SUBSCRIPT", "IS_SUPERSCRIPT", "IS_HIGHLIGHT", "IS_DIRECTIONLESS", "IS_UNMERGEABLE", "IS_ALIGN_LEFT", "IS_ALIGN_CENTER", "IS_ALIGN_RIGHT", "IS_ALIGN_JUSTIFY", "IS_ALIGN_START", "IS_ALIGN_END", "IS_ALL_FORMATTING", "NON_BREAKING_SPACE", "DOUBLE_LINE_BREAK", "RTL", "LTR", "RTL_REGEX", "RegExp", "LTR_REGEX", "TEXT_TYPE_TO_FORMAT", "bold", "code", "highlight", "italic", "strikethrough", "subscript", "superscript", "underline", "DETAIL_TYPE_TO_DETAIL", "directionless", "unmergeable", "ELEMENT_TYPE_TO_FORMAT", "center", "end", "justify", "left", "right", "start", "ELEMENT_FORMAT_TO_TYPE", "TEXT_MODE_TO_TYPE", "normal", "segmented", "token", "TEXT_TYPE_TO_MODE"]
|
|
7
|
+
}
|