@payloadcms/richtext-lexical 3.0.0-beta.7 → 3.0.0-beta.71
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/README.md +1 -1
- package/dist/cell/index.d.ts +5 -2
- package/dist/cell/index.d.ts.map +1 -1
- package/dist/cell/index.js +50 -36
- package/dist/cell/index.js.map +1 -1
- package/dist/exports/client/Component-7HS6FEJS.js +2 -0
- package/dist/exports/client/Component-7HS6FEJS.js.map +7 -0
- package/dist/exports/client/Component-LAKSCIDX.js +2 -0
- package/dist/exports/client/Component-LAKSCIDX.js.map +7 -0
- package/dist/exports/client/Field-YNHIDK3D.js +2 -0
- package/dist/exports/client/Field-YNHIDK3D.js.map +7 -0
- package/dist/exports/client/RelationshipComponent-ZR2OCBGL.js +2 -0
- package/dist/exports/client/RelationshipComponent-ZR2OCBGL.js.map +7 -0
- package/dist/exports/client/bundled.css +1 -0
- package/dist/exports/client/chunk-6QXGZYUK.js +2 -0
- package/dist/exports/client/chunk-6QXGZYUK.js.map +7 -0
- package/dist/exports/client/chunk-EBB2CEB6.js +2 -0
- package/dist/exports/client/chunk-EBB2CEB6.js.map +7 -0
- package/dist/exports/client/chunk-IPCJ5EVK.js +2 -0
- package/dist/exports/client/chunk-IPCJ5EVK.js.map +7 -0
- package/dist/exports/client/chunk-IWZVO3AI.js +2 -0
- package/dist/exports/client/chunk-IWZVO3AI.js.map +7 -0
- package/dist/exports/client/chunk-Q5DYR7MH.js +3 -0
- package/dist/exports/client/chunk-Q5DYR7MH.js.map +7 -0
- package/dist/exports/client/chunk-VUVXZJJR.js +2 -0
- package/dist/exports/client/chunk-VUVXZJJR.js.map +7 -0
- package/dist/exports/client/component-D4GWDXK5.js +2 -0
- package/dist/exports/client/component-D4GWDXK5.js.map +7 -0
- package/dist/exports/client/component-KA7FDRMA.js +2 -0
- package/dist/exports/client/component-KA7FDRMA.js.map +7 -0
- package/dist/exports/client/component-VM36FRT2.js +2 -0
- package/dist/exports/client/component-VM36FRT2.js.map +7 -0
- package/dist/exports/client/componentInline-6EKPZSCV.js +2 -0
- package/dist/exports/client/componentInline-6EKPZSCV.js.map +7 -0
- package/dist/exports/client/index.d.ts +63 -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/features/align/feature.client.d.ts +5 -0
- package/dist/features/align/feature.client.d.ts.map +1 -0
- package/dist/features/align/feature.client.js +146 -0
- package/dist/features/align/feature.client.js.map +1 -0
- package/dist/features/align/feature.server.d.ts +2 -0
- package/dist/features/align/feature.server.d.ts.map +1 -0
- package/dist/features/align/feature.server.js +13 -0
- package/dist/features/align/feature.server.js.map +1 -0
- package/dist/features/align/i18n.d.ts +3 -0
- package/dist/features/align/i18n.d.ts.map +1 -0
- package/dist/features/align/i18n.js +196 -0
- package/dist/features/align/i18n.js.map +1 -0
- package/dist/features/align/toolbarAlignGroup.d.ts +3 -0
- package/dist/features/align/toolbarAlignGroup.d.ts.map +1 -0
- package/dist/features/align/toolbarAlignGroup.js +12 -0
- package/dist/features/align/toolbarAlignGroup.js.map +1 -0
- package/dist/features/blockquote/feature.client.d.ts +5 -0
- package/dist/features/blockquote/feature.client.d.ts.map +1 -0
- package/dist/features/blockquote/feature.client.js +77 -0
- package/dist/features/blockquote/feature.client.js.map +1 -0
- package/dist/features/blockquote/feature.server.d.ts +7 -0
- package/dist/features/blockquote/feature.server.d.ts.map +1 -0
- package/dist/features/blockquote/feature.server.js +45 -0
- package/dist/features/blockquote/feature.server.js.map +1 -0
- package/dist/features/blockquote/i18n.d.ts +3 -0
- package/dist/features/blockquote/i18n.d.ts.map +1 -0
- package/dist/features/blockquote/i18n.js +100 -0
- package/dist/features/blockquote/i18n.js.map +1 -0
- package/dist/features/blockquote/markdownTransformer.d.ts.map +1 -0
- package/dist/features/blockquote/markdownTransformer.js +40 -0
- package/dist/features/blockquote/markdownTransformer.js.map +1 -0
- package/dist/features/blocks/component/BlockContent.d.ts +27 -0
- package/dist/features/blocks/component/BlockContent.d.ts.map +1 -0
- package/dist/features/blocks/component/BlockContent.js +196 -0
- package/dist/features/blocks/component/BlockContent.js.map +1 -0
- package/dist/features/blocks/component/FormSavePlugin.d.ts +11 -0
- package/dist/features/blocks/component/FormSavePlugin.d.ts.map +1 -0
- package/dist/features/blocks/component/FormSavePlugin.js +29 -0
- package/dist/features/blocks/component/FormSavePlugin.js.map +1 -0
- package/dist/features/blocks/component/index.d.ts +11 -0
- package/dist/features/blocks/component/index.d.ts.map +1 -0
- package/dist/features/blocks/component/index.js +162 -0
- package/dist/features/blocks/component/index.js.map +1 -0
- package/dist/features/blocks/component/removeEmptyArrayValues.d.ts +11 -0
- package/dist/features/blocks/component/removeEmptyArrayValues.d.ts.map +1 -0
- package/dist/features/blocks/component/removeEmptyArrayValues.js.map +1 -0
- package/dist/features/blocks/componentInline/index.d.ts +10 -0
- package/dist/features/blocks/componentInline/index.d.ts.map +1 -0
- package/dist/features/blocks/componentInline/index.js +133 -0
- package/dist/features/blocks/componentInline/index.js.map +1 -0
- package/dist/features/blocks/feature.client.d.ts +13 -0
- package/dist/features/blocks/feature.client.d.ts.map +1 -0
- package/dist/features/blocks/feature.client.js +148 -0
- package/dist/features/blocks/feature.client.js.map +1 -0
- package/dist/features/blocks/feature.server.d.ts +8 -0
- package/dist/features/blocks/feature.server.d.ts.map +1 -0
- package/dist/features/blocks/feature.server.js +160 -0
- package/dist/features/blocks/feature.server.js.map +1 -0
- package/dist/features/blocks/graphQLPopulationPromise.d.ts +6 -0
- package/dist/features/blocks/graphQLPopulationPromise.d.ts.map +1 -0
- package/dist/features/blocks/graphQLPopulationPromise.js +31 -0
- package/dist/features/blocks/graphQLPopulationPromise.js.map +1 -0
- package/dist/features/blocks/i18n.d.ts +3 -0
- package/dist/features/blocks/i18n.d.ts.map +1 -0
- package/dist/features/blocks/i18n.js +292 -0
- package/dist/features/blocks/i18n.js.map +1 -0
- package/dist/features/blocks/nodes/BlocksNode.d.ts +38 -0
- package/dist/features/blocks/nodes/BlocksNode.d.ts.map +1 -0
- package/dist/features/blocks/nodes/BlocksNode.js +92 -0
- package/dist/features/blocks/nodes/BlocksNode.js.map +1 -0
- package/dist/features/blocks/nodes/InlineBlocksNode.d.ts +39 -0
- package/dist/features/blocks/nodes/InlineBlocksNode.d.ts.map +1 -0
- package/dist/features/blocks/nodes/InlineBlocksNode.js +94 -0
- package/dist/features/blocks/nodes/InlineBlocksNode.js.map +1 -0
- package/dist/features/blocks/plugin/commands.d.ts +9 -0
- package/dist/features/blocks/plugin/commands.d.ts.map +1 -0
- package/dist/features/blocks/plugin/commands.js +6 -0
- package/dist/features/blocks/plugin/commands.js.map +1 -0
- package/dist/features/blocks/plugin/index.d.ts +6 -0
- package/dist/features/blocks/plugin/index.d.ts.map +1 -0
- package/dist/features/blocks/plugin/index.js +111 -0
- package/dist/features/blocks/plugin/index.js.map +1 -0
- package/dist/features/blocks/validate.d.ts +6 -0
- package/dist/features/blocks/validate.d.ts.map +1 -0
- package/dist/features/blocks/validate.js +36 -0
- package/dist/features/blocks/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.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 +20 -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.map +1 -0
- package/dist/features/converters/html/converter/defaultConverters.d.ts.map +1 -0
- package/dist/features/converters/html/converter/defaultConverters.js.map +1 -0
- package/dist/features/converters/html/converter/index.d.ts +42 -0
- package/dist/features/converters/html/converter/index.d.ts.map +1 -0
- package/dist/features/converters/html/converter/index.js +48 -0
- package/dist/features/converters/html/converter/index.js.map +1 -0
- package/dist/features/converters/html/converter/types.d.ts +19 -0
- package/dist/features/converters/html/converter/types.d.ts.map +1 -0
- package/dist/features/converters/html/converter/types.js.map +1 -0
- package/dist/features/converters/html/feature.server.d.ts +8 -0
- package/dist/features/converters/html/feature.server.d.ts.map +1 -0
- package/dist/features/converters/html/feature.server.js +8 -0
- package/dist/features/converters/html/feature.server.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 +154 -0
- package/dist/features/converters/html/field/index.js.map +1 -0
- package/dist/features/createClientComponent.d.ts +7 -0
- package/dist/features/createClientComponent.d.ts.map +1 -0
- package/dist/features/createClientComponent.js +12 -0
- package/dist/features/createClientComponent.js.map +1 -0
- package/dist/features/createFeaturePropComponent.d.ts.map +1 -0
- package/dist/features/createFeaturePropComponent.js +18 -0
- package/dist/features/createFeaturePropComponent.js.map +1 -0
- package/dist/features/debug/testRecorder/feature.client.d.ts +5 -0
- package/dist/features/debug/testRecorder/feature.client.d.ts.map +1 -0
- package/dist/features/debug/testRecorder/feature.client.js +13 -0
- package/dist/features/debug/testRecorder/feature.client.js.map +1 -0
- package/dist/features/debug/testRecorder/feature.server.d.ts +2 -0
- package/dist/features/debug/testRecorder/feature.server.d.ts.map +1 -0
- package/dist/features/debug/testRecorder/feature.server.js +11 -0
- package/dist/features/debug/testRecorder/feature.server.js.map +1 -0
- package/dist/features/debug/testRecorder/plugin/index.d.ts +5 -0
- package/dist/features/debug/testRecorder/plugin/index.d.ts.map +1 -0
- package/dist/features/debug/testRecorder/plugin/index.js +471 -0
- package/dist/features/debug/testRecorder/plugin/index.js.map +1 -0
- package/dist/features/debug/treeView/feature.client.d.ts +5 -0
- package/dist/features/debug/treeView/feature.client.d.ts.map +1 -0
- package/dist/features/debug/treeView/feature.client.js +13 -0
- package/dist/features/debug/treeView/feature.client.js.map +1 -0
- package/dist/features/debug/treeView/feature.server.d.ts +2 -0
- package/dist/features/debug/treeView/feature.server.d.ts.map +1 -0
- package/dist/features/debug/treeView/feature.server.js +11 -0
- package/dist/features/debug/treeView/feature.server.js.map +1 -0
- package/dist/features/debug/treeView/plugin/index.d.ts +4 -0
- package/dist/features/debug/treeView/plugin/index.d.ts.map +1 -0
- package/dist/features/debug/treeView/plugin/index.js +19 -0
- package/dist/features/debug/treeView/plugin/index.js.map +1 -0
- package/dist/features/experimental_table/feature.client.d.ts +2 -0
- package/dist/features/experimental_table/feature.client.d.ts.map +1 -0
- package/dist/features/experimental_table/feature.client.js +66 -0
- package/dist/features/experimental_table/feature.client.js.map +1 -0
- package/dist/features/experimental_table/feature.server.d.ts +2 -0
- package/dist/features/experimental_table/feature.server.d.ts.map +1 -0
- package/dist/features/experimental_table/feature.server.js +52 -0
- package/dist/features/experimental_table/feature.server.js.map +1 -0
- package/dist/features/experimental_table/plugins/TableActionMenuPlugin/index.d.ts +4 -0
- package/dist/features/experimental_table/plugins/TableActionMenuPlugin/index.d.ts.map +1 -0
- package/dist/features/experimental_table/plugins/TableActionMenuPlugin/index.js +602 -0
- package/dist/features/experimental_table/plugins/TableActionMenuPlugin/index.js.map +1 -0
- package/dist/features/experimental_table/plugins/TableCellResizerPlugin/index.d.ts +4 -0
- package/dist/features/experimental_table/plugins/TableCellResizerPlugin/index.d.ts.map +1 -0
- package/dist/features/experimental_table/plugins/TableCellResizerPlugin/index.js +322 -0
- package/dist/features/experimental_table/plugins/TableCellResizerPlugin/index.js.map +1 -0
- package/dist/features/experimental_table/plugins/TablePlugin/index.d.ts +24 -0
- package/dist/features/experimental_table/plugins/TablePlugin/index.d.ts.map +1 -0
- package/dist/features/experimental_table/plugins/TablePlugin/index.js +98 -0
- package/dist/features/experimental_table/plugins/TablePlugin/index.js.map +1 -0
- package/dist/features/format/bold/feature.client.d.ts +5 -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 +25 -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.map +1 -0
- package/dist/features/format/inlineCode/feature.client.d.ts +5 -0
- package/dist/features/format/inlineCode/feature.client.d.ts.map +1 -0
- package/dist/features/format/inlineCode/feature.client.js +37 -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 +15 -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.map +1 -0
- package/dist/features/format/italic/feature.client.d.ts +5 -0
- package/dist/features/format/italic/feature.client.d.ts.map +1 -0
- package/dist/features/format/italic/feature.client.js +38 -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 +16 -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.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 +10 -0
- package/dist/features/format/shared/toolbarFormatGroup.js.map +1 -0
- package/dist/features/format/strikethrough/feature.client.d.ts +5 -0
- package/dist/features/format/strikethrough/feature.client.d.ts.map +1 -0
- package/dist/features/format/strikethrough/feature.client.js +37 -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 +15 -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.map +1 -0
- package/dist/features/format/subscript/feature.client.d.ts +5 -0
- package/dist/features/format/subscript/feature.client.d.ts.map +1 -0
- package/dist/features/format/subscript/feature.client.js +33 -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 +11 -0
- package/dist/features/format/subscript/feature.server.js.map +1 -0
- package/dist/features/format/superscript/feature.client.d.ts +5 -0
- package/dist/features/format/superscript/feature.client.d.ts.map +1 -0
- package/dist/features/format/superscript/feature.client.js +33 -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 +11 -0
- package/dist/features/format/superscript/feature.server.js.map +1 -0
- package/dist/features/format/underline/feature.client.d.ts +5 -0
- package/dist/features/format/underline/feature.client.d.ts.map +1 -0
- package/dist/features/format/underline/feature.client.js +33 -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 +11 -0
- package/dist/features/format/underline/feature.server.js.map +1 -0
- package/dist/features/heading/feature.client.d.ts +6 -0
- package/dist/features/heading/feature.client.d.ts.map +1 -0
- package/dist/features/heading/feature.client.js +112 -0
- package/dist/features/heading/feature.client.js.map +1 -0
- package/dist/features/heading/feature.server.d.ts +10 -0
- package/dist/features/heading/feature.server.d.ts.map +1 -0
- package/dist/features/heading/feature.server.js +59 -0
- package/dist/features/heading/feature.server.js.map +1 -0
- package/dist/features/heading/i18n.d.ts +3 -0
- package/dist/features/heading/i18n.d.ts.map +1 -0
- package/dist/features/heading/i18n.js +100 -0
- package/dist/features/heading/i18n.js.map +1 -0
- package/dist/features/heading/markdownTransformer.d.ts.map +1 -0
- package/dist/features/heading/markdownTransformer.js +29 -0
- package/dist/features/heading/markdownTransformer.js.map +1 -0
- package/dist/features/horizontalRule/component/index.d.ts.map +1 -0
- package/dist/features/horizontalRule/component/index.js +67 -0
- package/dist/features/horizontalRule/component/index.js.map +1 -0
- package/dist/features/horizontalRule/feature.client.d.ts +5 -0
- package/dist/features/horizontalRule/feature.client.d.ts.map +1 -0
- package/dist/features/horizontalRule/feature.client.js +70 -0
- package/dist/features/horizontalRule/feature.client.js.map +1 -0
- package/dist/features/horizontalRule/feature.server.d.ts +2 -0
- package/dist/features/horizontalRule/feature.server.d.ts.map +1 -0
- package/dist/features/horizontalRule/feature.server.js +34 -0
- package/dist/features/horizontalRule/feature.server.js.map +1 -0
- package/dist/features/horizontalRule/i18n.d.ts +3 -0
- package/dist/features/horizontalRule/i18n.d.ts.map +1 -0
- package/dist/features/horizontalRule/i18n.js +100 -0
- package/dist/features/horizontalRule/i18n.js.map +1 -0
- package/dist/features/horizontalRule/markdownTransformer.d.ts.map +1 -0
- package/dist/features/horizontalRule/markdownTransformer.js.map +1 -0
- package/dist/features/horizontalRule/nodes/HorizontalRuleNode.d.ts +56 -0
- package/dist/features/horizontalRule/nodes/HorizontalRuleNode.d.ts.map +1 -0
- package/dist/features/horizontalRule/nodes/HorizontalRuleNode.js +92 -0
- package/dist/features/horizontalRule/nodes/HorizontalRuleNode.js.map +1 -0
- package/dist/features/horizontalRule/plugin/index.d.ts +7 -0
- package/dist/features/horizontalRule/plugin/index.d.ts.map +1 -0
- package/dist/features/horizontalRule/plugin/index.js +30 -0
- package/dist/features/horizontalRule/plugin/index.js.map +1 -0
- package/dist/features/indent/feature.client.d.ts +5 -0
- package/dist/features/indent/feature.client.d.ts.map +1 -0
- package/dist/features/indent/feature.client.js +56 -0
- package/dist/features/indent/feature.client.js.map +1 -0
- package/dist/features/indent/feature.server.d.ts +2 -0
- package/dist/features/indent/feature.server.d.ts.map +1 -0
- package/dist/features/indent/feature.server.js +13 -0
- package/dist/features/indent/feature.server.js.map +1 -0
- package/dist/features/indent/i18n.d.ts +3 -0
- package/dist/features/indent/i18n.d.ts.map +1 -0
- package/dist/features/indent/i18n.js +132 -0
- package/dist/features/indent/i18n.js.map +1 -0
- package/dist/features/indent/toolbarIndentGroup.d.ts +3 -0
- package/dist/features/indent/toolbarIndentGroup.d.ts.map +1 -0
- package/dist/features/indent/toolbarIndentGroup.js +10 -0
- package/dist/features/indent/toolbarIndentGroup.js.map +1 -0
- package/dist/features/link/drawer/baseFields.d.ts +3 -0
- package/dist/features/link/drawer/baseFields.d.ts.map +1 -0
- package/dist/features/link/drawer/baseFields.js +94 -0
- package/dist/features/link/drawer/baseFields.js.map +1 -0
- package/dist/features/link/feature.client.d.ts +16 -0
- package/dist/features/link/feature.client.d.ts.map +1 -0
- package/dist/features/link/feature.client.js +101 -0
- package/dist/features/link/feature.client.js.map +1 -0
- package/dist/features/link/feature.server.d.ts +35 -0
- package/dist/features/link/feature.server.d.ts.map +1 -0
- package/dist/features/link/feature.server.js +128 -0
- package/dist/features/link/feature.server.js.map +1 -0
- package/dist/features/link/graphQLPopulationPromise.d.ts +5 -0
- package/dist/features/link/graphQLPopulationPromise.d.ts.map +1 -0
- package/dist/features/link/graphQLPopulationPromise.js +31 -0
- package/dist/features/link/graphQLPopulationPromise.js.map +1 -0
- package/dist/features/link/i18n.d.ts +3 -0
- package/dist/features/link/i18n.d.ts.map +1 -0
- package/dist/features/link/i18n.js +100 -0
- package/dist/features/link/i18n.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 +50 -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 +68 -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 +317 -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.map +1 -0
- package/dist/features/link/plugins/autoLink/index.d.ts +20 -0
- package/dist/features/link/plugins/autoLink/index.d.ts.map +1 -0
- package/dist/features/link/plugins/autoLink/index.js +323 -0
- package/dist/features/link/plugins/autoLink/index.js.map +1 -0
- package/dist/features/link/plugins/clickableLink/index.d.ts +4 -0
- package/dist/features/link/plugins/clickableLink/index.d.ts.map +1 -0
- package/dist/features/link/plugins/clickableLink/index.js +9 -0
- package/dist/features/link/plugins/clickableLink/index.js.map +1 -0
- package/dist/features/link/plugins/floatingLinkEditor/LinkEditor/commands.d.ts.map +1 -0
- package/dist/features/link/plugins/floatingLinkEditor/LinkEditor/commands.js +4 -0
- package/dist/features/link/plugins/floatingLinkEditor/LinkEditor/commands.js.map +1 -0
- package/dist/features/link/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -0
- package/dist/features/link/plugins/floatingLinkEditor/LinkEditor/index.js +299 -0
- package/dist/features/link/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -0
- package/dist/features/link/plugins/floatingLinkEditor/index.d.ts +5 -0
- package/dist/features/link/plugins/floatingLinkEditor/index.d.ts.map +1 -0
- package/dist/features/link/plugins/floatingLinkEditor/index.js +13 -0
- package/dist/features/link/plugins/floatingLinkEditor/index.js.map +1 -0
- package/dist/features/link/plugins/floatingLinkEditor/types.d.ts.map +1 -0
- package/dist/features/link/plugins/floatingLinkEditor/types.js.map +1 -0
- package/dist/features/link/plugins/floatingLinkEditor/utilities.d.ts +9 -0
- package/dist/features/link/plugins/floatingLinkEditor/utilities.d.ts.map +1 -0
- package/dist/features/link/plugins/floatingLinkEditor/utilities.js +20 -0
- package/dist/features/link/plugins/floatingLinkEditor/utilities.js.map +1 -0
- package/dist/features/link/plugins/link/index.d.ts +4 -0
- package/dist/features/link/plugins/link/index.d.ts.map +1 -0
- package/dist/features/link/plugins/link/index.js +53 -0
- package/dist/features/link/plugins/link/index.js.map +1 -0
- package/dist/features/link/validate.d.ts +6 -0
- package/dist/features/link/validate.d.ts.map +1 -0
- package/dist/features/link/validate.js +28 -0
- package/dist/features/link/validate.js.map +1 -0
- package/dist/features/lists/checklist/feature.client.d.ts +5 -0
- package/dist/features/lists/checklist/feature.client.d.ts.map +1 -0
- package/dist/features/lists/checklist/feature.client.js +100 -0
- package/dist/features/lists/checklist/feature.client.js.map +1 -0
- package/dist/features/lists/checklist/feature.server.d.ts +2 -0
- package/dist/features/lists/checklist/feature.server.d.ts.map +1 -0
- package/dist/features/lists/checklist/feature.server.js +36 -0
- package/dist/features/lists/checklist/feature.server.js.map +1 -0
- package/dist/features/lists/checklist/i18n.d.ts +3 -0
- package/dist/features/lists/checklist/i18n.d.ts.map +1 -0
- package/dist/features/lists/checklist/i18n.js +100 -0
- package/dist/features/lists/checklist/i18n.js.map +1 -0
- package/dist/features/lists/checklist/markdownTransformers.d.ts.map +1 -0
- package/dist/features/lists/checklist/markdownTransformers.js +16 -0
- package/dist/features/lists/checklist/markdownTransformers.js.map +1 -0
- package/dist/features/lists/checklist/plugin/index.d.ts +3 -0
- package/dist/features/lists/checklist/plugin/index.d.ts.map +1 -0
- package/dist/features/lists/checklist/plugin/index.js +9 -0
- package/dist/features/lists/checklist/plugin/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 +56 -0
- package/dist/features/lists/htmlConverter.js.map +1 -0
- package/dist/features/lists/orderedList/feature.client.d.ts +5 -0
- package/dist/features/lists/orderedList/feature.client.d.ts.map +1 -0
- package/dist/features/lists/orderedList/feature.client.js +90 -0
- package/dist/features/lists/orderedList/feature.client.js.map +1 -0
- package/dist/features/lists/orderedList/feature.server.d.ts +2 -0
- package/dist/features/lists/orderedList/feature.server.d.ts.map +1 -0
- package/dist/features/lists/orderedList/feature.server.js +36 -0
- package/dist/features/lists/orderedList/feature.server.js.map +1 -0
- package/dist/features/lists/orderedList/i18n.d.ts +3 -0
- package/dist/features/lists/orderedList/i18n.d.ts.map +1 -0
- package/dist/features/lists/orderedList/i18n.js +100 -0
- package/dist/features/lists/orderedList/i18n.js.map +1 -0
- package/dist/features/lists/orderedList/markdownTransformer.d.ts.map +1 -0
- package/dist/features/lists/orderedList/markdownTransformer.js +16 -0
- package/dist/features/lists/orderedList/markdownTransformer.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 +58 -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 +11 -0
- package/dist/features/lists/shared/slashMenuListGroup.js.map +1 -0
- package/dist/features/lists/unorderedList/feature.client.d.ts +5 -0
- package/dist/features/lists/unorderedList/feature.client.d.ts.map +1 -0
- package/dist/features/lists/unorderedList/feature.client.js +88 -0
- package/dist/features/lists/unorderedList/feature.client.js.map +1 -0
- package/dist/features/lists/unorderedList/feature.server.d.ts +2 -0
- package/dist/features/lists/unorderedList/feature.server.d.ts.map +1 -0
- package/dist/features/lists/unorderedList/feature.server.js +34 -0
- package/dist/features/lists/unorderedList/feature.server.js.map +1 -0
- package/dist/features/lists/unorderedList/i18n.d.ts +3 -0
- package/dist/features/lists/unorderedList/i18n.d.ts.map +1 -0
- package/dist/features/lists/unorderedList/i18n.js +100 -0
- package/dist/features/lists/unorderedList/i18n.js.map +1 -0
- package/dist/features/lists/unorderedList/markdownTransformer.d.ts.map +1 -0
- package/dist/features/lists/unorderedList/markdownTransformer.js +16 -0
- package/dist/features/lists/unorderedList/markdownTransformer.js.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/client.d.ts +5 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/client.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/client.js.map +1 -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.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/index.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/index.js +8 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/index.js.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/client.d.ts +5 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/client.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/client.js.map +1 -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.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/index.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/index.js +8 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/index.js.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/client.d.ts +5 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/client.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/client.js.map +1 -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.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/index.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/index.js +8 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/index.js.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/client.d.ts +5 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/client.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/client.js.map +1 -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.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/index.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/index.js +8 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/index.js.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/client.d.ts +5 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/client.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/client.js.map +1 -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.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/index.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/index.js +8 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/index.js.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/client.d.ts +5 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/client.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/client.js.map +1 -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.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/index.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/index.js +8 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/index.js.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/client.d.ts +5 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/client.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/client.js.map +1 -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 +23 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/index.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/index.js +8 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/index.js.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/defaultConverters.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/defaultConverters.js.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/index.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/index.js.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/types.d.ts +31 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/types.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/converter/types.js.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/feature.client.d.ts +5 -0
- package/dist/features/migrations/lexicalPluginToLexical/feature.client.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/feature.client.js +27 -0
- package/dist/features/migrations/lexicalPluginToLexical/feature.client.js.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/feature.server.d.ts +8 -0
- package/dist/features/migrations/lexicalPluginToLexical/feature.server.d.ts.map +1 -0
- package/dist/features/migrations/lexicalPluginToLexical/feature.server.js +45 -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 +69 -0
- package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/blockquote/client.d.ts +5 -0
- package/dist/features/migrations/slateToLexical/converter/converters/blockquote/client.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/blockquote/client.js +6 -0
- package/dist/features/migrations/slateToLexical/converter/converters/blockquote/client.js.map +1 -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.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/blockquote/index.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/blockquote/index.js +8 -0
- package/dist/features/migrations/slateToLexical/converter/converters/blockquote/index.js.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/heading/client.d.ts +5 -0
- package/dist/features/migrations/slateToLexical/converter/converters/heading/client.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/heading/client.js.map +1 -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.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/heading/index.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/heading/index.js +8 -0
- package/dist/features/migrations/slateToLexical/converter/converters/heading/index.js.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/indent/client.d.ts +5 -0
- package/dist/features/migrations/slateToLexical/converter/converters/indent/client.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/indent/client.js.map +1 -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.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/indent/index.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/indent/index.js +8 -0
- package/dist/features/migrations/slateToLexical/converter/converters/indent/index.js.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/link/client.d.ts +5 -0
- package/dist/features/migrations/slateToLexical/converter/converters/link/client.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/link/client.js.map +1 -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.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/link/index.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/link/index.js +8 -0
- package/dist/features/migrations/slateToLexical/converter/converters/link/index.js.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/listItem/client.d.ts +5 -0
- package/dist/features/migrations/slateToLexical/converter/converters/listItem/client.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/listItem/client.js.map +1 -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.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/listItem/index.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/listItem/index.js +8 -0
- package/dist/features/migrations/slateToLexical/converter/converters/listItem/index.js.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/orderedList/client.d.ts +5 -0
- package/dist/features/migrations/slateToLexical/converter/converters/orderedList/client.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/orderedList/client.js.map +1 -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.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/orderedList/index.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/orderedList/index.js +8 -0
- package/dist/features/migrations/slateToLexical/converter/converters/orderedList/index.js.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/relationship/client.d.ts +5 -0
- package/dist/features/migrations/slateToLexical/converter/converters/relationship/client.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/relationship/client.js.map +1 -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 +16 -0
- package/dist/features/migrations/slateToLexical/converter/converters/relationship/converter.js.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/relationship/index.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/relationship/index.js +8 -0
- package/dist/features/migrations/slateToLexical/converter/converters/relationship/index.js.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/unknown/client.d.ts +5 -0
- package/dist/features/migrations/slateToLexical/converter/converters/unknown/client.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/unknown/client.js.map +1 -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.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/unknown/index.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/unknown/index.js +8 -0
- package/dist/features/migrations/slateToLexical/converter/converters/unknown/index.js.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/client.d.ts +5 -0
- package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/client.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/client.js.map +1 -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.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/index.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/index.js +8 -0
- package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/index.js.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/upload/client.d.ts +5 -0
- package/dist/features/migrations/slateToLexical/converter/converters/upload/client.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/upload/client.js.map +1 -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 +19 -0
- package/dist/features/migrations/slateToLexical/converter/converters/upload/converter.js.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/upload/index.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/converters/upload/index.js +8 -0
- package/dist/features/migrations/slateToLexical/converter/converters/upload/index.js.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/defaultConverters.d.ts.map +1 -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 +108 -0
- package/dist/features/migrations/slateToLexical/converter/index.js.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/types.d.ts +25 -0
- package/dist/features/migrations/slateToLexical/converter/types.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/converter/types.js.map +1 -0
- package/dist/features/migrations/slateToLexical/feature.client.d.ts +5 -0
- package/dist/features/migrations/slateToLexical/feature.client.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/feature.client.js +27 -0
- package/dist/features/migrations/slateToLexical/feature.client.js.map +1 -0
- package/dist/features/migrations/slateToLexical/feature.server.d.ts +10 -0
- package/dist/features/migrations/slateToLexical/feature.server.d.ts.map +1 -0
- package/dist/features/migrations/slateToLexical/feature.server.js +47 -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 +69 -0
- package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js.map +1 -0
- package/dist/features/paragraph/feature.client.d.ts +5 -0
- package/dist/features/paragraph/feature.client.d.ts.map +1 -0
- package/dist/features/paragraph/feature.client.js +71 -0
- package/dist/features/paragraph/feature.client.js.map +1 -0
- package/dist/features/paragraph/feature.server.d.ts +2 -0
- package/dist/features/paragraph/feature.server.d.ts.map +1 -0
- package/dist/features/paragraph/feature.server.js +14 -0
- package/dist/features/paragraph/feature.server.js.map +1 -0
- package/dist/features/paragraph/i18n.d.ts +3 -0
- package/dist/features/paragraph/i18n.d.ts.map +1 -0
- package/dist/features/paragraph/i18n.js +132 -0
- package/dist/features/paragraph/i18n.js.map +1 -0
- package/dist/features/relationship/drawer/commands.d.ts.map +1 -0
- package/dist/features/relationship/drawer/commands.js +4 -0
- package/dist/features/relationship/drawer/commands.js.map +1 -0
- package/dist/features/relationship/drawer/index.d.ts.map +1 -0
- package/dist/features/relationship/drawer/index.js +83 -0
- package/dist/features/relationship/drawer/index.js.map +1 -0
- package/dist/features/relationship/feature.client.d.ts +18 -0
- package/dist/features/relationship/feature.client.d.ts.map +1 -0
- package/dist/features/relationship/feature.client.js +72 -0
- package/dist/features/relationship/feature.client.js.map +1 -0
- package/dist/features/relationship/feature.server.d.ts +27 -0
- package/dist/features/relationship/feature.server.d.ts.map +1 -0
- package/dist/features/relationship/feature.server.js +55 -0
- package/dist/features/relationship/feature.server.js.map +1 -0
- package/dist/features/relationship/graphQLPopulationPromise.d.ts +5 -0
- package/dist/features/relationship/graphQLPopulationPromise.d.ts.map +1 -0
- package/dist/features/relationship/graphQLPopulationPromise.js +29 -0
- package/dist/features/relationship/graphQLPopulationPromise.js.map +1 -0
- package/dist/features/relationship/i18n.d.ts +3 -0
- package/dist/features/relationship/i18n.d.ts.map +1 -0
- package/dist/features/relationship/i18n.js +100 -0
- package/dist/features/relationship/i18n.js.map +1 -0
- package/dist/features/relationship/nodes/RelationshipNode.d.ts +35 -0
- package/dist/features/relationship/nodes/RelationshipNode.d.ts.map +1 -0
- package/dist/features/relationship/nodes/RelationshipNode.js +111 -0
- package/dist/features/relationship/nodes/RelationshipNode.js.map +1 -0
- package/dist/features/relationship/nodes/components/RelationshipComponent.d.ts +13 -0
- package/dist/features/relationship/nodes/components/RelationshipComponent.d.ts.map +1 -0
- package/dist/features/relationship/nodes/components/RelationshipComponent.js +171 -0
- package/dist/features/relationship/nodes/components/RelationshipComponent.js.map +1 -0
- package/dist/features/relationship/plugins/index.d.ts +7 -0
- package/dist/features/relationship/plugins/index.d.ts.map +1 -0
- package/dist/features/relationship/plugins/index.js +50 -0
- package/dist/features/relationship/plugins/index.js.map +1 -0
- package/dist/features/relationship/utils/EnabledRelationshipsCondition.d.ts.map +1 -0
- package/dist/features/relationship/utils/EnabledRelationshipsCondition.js +33 -0
- package/dist/features/relationship/utils/EnabledRelationshipsCondition.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 +11 -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 +12 -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 +10 -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 +12 -0
- package/dist/features/shared/toolbar/textDropdownGroup.js.map +1 -0
- package/dist/features/toolbars/fixed/Toolbar/index.d.ts +5 -0
- package/dist/features/toolbars/fixed/Toolbar/index.d.ts.map +1 -0
- package/dist/features/toolbars/fixed/Toolbar/index.js +207 -0
- package/dist/features/toolbars/fixed/Toolbar/index.js.map +1 -0
- package/dist/features/toolbars/fixed/feature.client.d.ts +6 -0
- package/dist/features/toolbars/fixed/feature.client.d.ts.map +1 -0
- package/dist/features/toolbars/fixed/feature.client.js +13 -0
- package/dist/features/toolbars/fixed/feature.client.js.map +1 -0
- package/dist/features/toolbars/fixed/feature.server.d.ts +18 -0
- package/dist/features/toolbars/fixed/feature.server.d.ts.map +1 -0
- package/dist/features/toolbars/fixed/feature.server.js +19 -0
- package/dist/features/toolbars/fixed/feature.server.js.map +1 -0
- package/dist/features/toolbars/inline/Toolbar/index.d.ts +4 -0
- package/dist/features/toolbars/inline/Toolbar/index.d.ts.map +1 -0
- package/dist/features/toolbars/inline/Toolbar/index.js +319 -0
- package/dist/features/toolbars/inline/Toolbar/index.js.map +1 -0
- package/dist/features/toolbars/inline/feature.client.d.ts +5 -0
- package/dist/features/toolbars/inline/feature.client.d.ts.map +1 -0
- package/dist/features/toolbars/inline/feature.client.js +13 -0
- package/dist/features/toolbars/inline/feature.client.js.map +1 -0
- package/dist/features/toolbars/inline/feature.server.d.ts +2 -0
- package/dist/features/toolbars/inline/feature.server.d.ts.map +1 -0
- package/dist/features/toolbars/inline/feature.server.js +11 -0
- package/dist/features/toolbars/inline/feature.server.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 +108 -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 +223 -0
- package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -0
- package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts +23 -0
- package/dist/features/toolbars/shared/ToolbarDropdown/index.d.ts.map +1 -0
- package/dist/features/toolbars/shared/ToolbarDropdown/index.js +141 -0
- package/dist/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -0
- package/dist/features/toolbars/types.d.ts +80 -0
- package/dist/features/toolbars/types.d.ts.map +1 -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 +8 -0
- package/dist/features/typeUtilities.js.map +1 -0
- package/dist/features/typesClient.d.ts +186 -0
- package/dist/features/typesClient.d.ts.map +1 -0
- package/dist/features/typesClient.js +3 -0
- package/dist/features/typesClient.js.map +1 -0
- package/dist/features/typesServer.d.ts +315 -0
- package/dist/features/typesServer.d.ts.map +1 -0
- package/dist/features/typesServer.js +3 -0
- package/dist/features/typesServer.js.map +1 -0
- package/dist/features/upload/component/index.d.ts.map +1 -0
- package/dist/features/upload/component/index.js +242 -0
- package/dist/features/upload/component/index.js.map +1 -0
- package/dist/features/upload/drawer/commands.d.ts.map +1 -0
- package/dist/features/upload/drawer/commands.js +5 -0
- package/dist/features/upload/drawer/commands.js.map +1 -0
- package/dist/features/upload/drawer/index.d.ts.map +1 -0
- package/dist/features/upload/drawer/index.js +77 -0
- package/dist/features/upload/drawer/index.js.map +1 -0
- package/dist/features/upload/feature.client.d.ts +12 -0
- package/dist/features/upload/feature.client.d.ts.map +1 -0
- package/dist/features/upload/feature.client.js +74 -0
- package/dist/features/upload/feature.client.js.map +1 -0
- package/dist/features/upload/feature.server.d.ts +18 -0
- package/dist/features/upload/feature.server.d.ts.map +1 -0
- package/dist/features/upload/feature.server.js +184 -0
- package/dist/features/upload/feature.server.js.map +1 -0
- package/dist/features/upload/graphQLPopulationPromise.d.ts +5 -0
- package/dist/features/upload/graphQLPopulationPromise.d.ts.map +1 -0
- package/dist/features/upload/graphQLPopulationPromise.js +52 -0
- package/dist/features/upload/graphQLPopulationPromise.js.map +1 -0
- package/dist/features/upload/i18n.d.ts +3 -0
- package/dist/features/upload/i18n.d.ts.map +1 -0
- package/dist/features/upload/i18n.js +100 -0
- package/dist/features/upload/i18n.js.map +1 -0
- package/dist/features/upload/nodes/UploadNode.d.ts +39 -0
- package/dist/features/upload/nodes/UploadNode.d.ts.map +1 -0
- package/dist/features/upload/nodes/UploadNode.js +131 -0
- package/dist/features/upload/nodes/UploadNode.js.map +1 -0
- package/dist/features/upload/plugin/index.d.ts +8 -0
- package/dist/features/upload/plugin/index.d.ts.map +1 -0
- package/dist/features/upload/plugin/index.js +53 -0
- package/dist/features/upload/plugin/index.js.map +1 -0
- package/dist/features/upload/validate.d.ts +5 -0
- package/dist/features/upload/validate.d.ts.map +1 -0
- package/dist/features/upload/validate.js +44 -0
- package/dist/features/upload/validate.js.map +1 -0
- package/dist/field/Field.d.ts +5 -6
- package/dist/field/Field.d.ts.map +1 -1
- package/dist/field/Field.js +71 -56
- package/dist/field/Field.js.map +1 -1
- package/dist/field/bundled.css +0 -0
- package/dist/field/index.d.ts +6 -4
- package/dist/field/index.d.ts.map +1 -1
- package/dist/field/index.js +37 -86
- package/dist/field/index.js.map +1 -1
- package/dist/i18n.d.ts +3 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +164 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +76 -84
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +673 -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 +15 -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 +192 -0
- package/dist/lexical/LexicalEditor.js.map +1 -0
- package/dist/lexical/LexicalProvider.d.ts +18 -0
- package/dist/lexical/LexicalProvider.d.ts.map +1 -0
- package/dist/lexical/LexicalProvider.js +98 -0
- package/dist/lexical/LexicalProvider.js.map +1 -0
- package/dist/lexical/config/client/EditorConfigProvider.d.ts +35 -0
- package/dist/lexical/config/client/EditorConfigProvider.d.ts.map +1 -0
- package/dist/lexical/config/client/EditorConfigProvider.js +91 -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.map +1 -0
- package/dist/lexical/config/client/loader.d.ts +12 -0
- package/dist/lexical/config/client/loader.d.ts.map +1 -0
- package/dist/lexical/config/client/loader.js +46 -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 +53 -0
- package/dist/lexical/config/server/default.js.map +1 -0
- package/dist/lexical/config/server/loader.d.ts +10 -0
- package/dist/lexical/config/server/loader.d.ts.map +1 -0
- package/dist/lexical/config/server/loader.js +120 -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 +95 -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.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.map +1 -0
- package/dist/lexical/plugins/MarkdownShortcut/index.d.ts.map +1 -0
- package/dist/lexical/plugins/MarkdownShortcut/index.js +13 -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 +399 -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 +186 -0
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +1 -0
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts +46 -0
- package/dist/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts.map +1 -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 +189 -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.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 +157 -0
- package/dist/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -0
- package/dist/lexical/plugins/handles/DraggableBlockPlugin/debounce.d.ts.map +1 -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.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.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 +342 -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 +116 -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 +21 -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.map +1 -0
- package/dist/lexical/plugins/handles/utils/getCollapsedMargins.d.ts.map +1 -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 +138 -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 +6 -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.map +1 -0
- package/dist/lexical/plugins/handles/utils/setHandlePosition.d.ts.map +1 -0
- package/dist/lexical/plugins/handles/utils/setHandlePosition.js +29 -0
- package/dist/lexical/plugins/handles/utils/setHandlePosition.js.map +1 -0
- package/dist/lexical/theme/EditorTheme.d.ts.map +1 -0
- package/dist/lexical/theme/EditorTheme.js +106 -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 +10 -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 +36 -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 +21 -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 +31 -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 +31 -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 +31 -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 +31 -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 +40 -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 +18 -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 +18 -0
- package/dist/lexical/ui/icons/Bold/index.js.map +1 -0
- package/dist/lexical/ui/icons/Checklist/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/Checklist/index.js +29 -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 +24 -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 +24 -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 +18 -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 +18 -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 +18 -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 +18 -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 +18 -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 +18 -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 +21 -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 +35 -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 +35 -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 +20 -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 +18 -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 +19 -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 +25 -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 +39 -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 +36 -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 +24 -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 +18 -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 +18 -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 +19 -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 +18 -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 +24 -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 +55 -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 +34 -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.map +1 -0
- package/dist/lexical/utils/environment.d.ts.map +1 -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.map +1 -0
- package/dist/lexical/utils/getSelectedNode.d.ts.map +1 -0
- package/dist/lexical/utils/getSelectedNode.js +17 -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.map +1 -0
- package/dist/lexical/utils/invariant.d.ts.map +1 -0
- package/dist/lexical/utils/invariant.js.map +1 -0
- package/dist/lexical/utils/joinClasses.d.ts.map +1 -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.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 +88 -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.map +1 -0
- package/dist/lexical/utils/rect.d.ts.map +1 -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 +56 -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.map +1 -0
- package/dist/lexical/utils/swipe.d.ts.map +1 -0
- package/dist/lexical/utils/swipe.js.map +1 -0
- package/dist/lexical/utils/url.d.ts.map +1 -0
- package/dist/lexical/utils/url.js +36 -0
- package/dist/lexical/utils/url.js.map +1 -0
- package/dist/nodeTypes.d.ts +30 -0
- package/dist/nodeTypes.d.ts.map +1 -0
- package/dist/nodeTypes.js +3 -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 +32 -0
- package/dist/populateGraphQL/defaultValue.js.map +1 -0
- package/dist/populateGraphQL/populate.d.ts +17 -0
- package/dist/populateGraphQL/populate.d.ts.map +1 -0
- package/dist/populateGraphQL/populate.js +28 -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 +37 -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 +28 -0
- package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.js.map +1 -0
- package/dist/types.d.ts +52 -15
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utilities/createClientFeature.d.ts +13 -0
- package/dist/utilities/createClientFeature.d.ts.map +1 -0
- package/dist/utilities/createClientFeature.js +30 -0
- package/dist/utilities/createClientFeature.js.map +1 -0
- package/dist/utilities/createServerFeature.d.ts +16 -0
- package/dist/utilities/createServerFeature.d.ts.map +1 -0
- package/dist/utilities/createServerFeature.js +34 -0
- package/dist/utilities/createServerFeature.js.map +1 -0
- package/dist/utilities/fieldsDrawer/Drawer.d.ts +18 -0
- package/dist/utilities/fieldsDrawer/Drawer.d.ts.map +1 -0
- package/dist/utilities/fieldsDrawer/Drawer.js +26 -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 +90 -0
- package/dist/utilities/fieldsDrawer/DrawerContent.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 +24 -0
- package/dist/utilities/forEachNodeRecursively.js.map +1 -0
- package/dist/utilities/generateComponentMap.d.ts +6 -0
- package/dist/utilities/generateComponentMap.d.ts.map +1 -0
- package/dist/utilities/generateComponentMap.js +77 -0
- package/dist/utilities/generateComponentMap.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 +31 -0
- package/dist/utilities/generateSchemaMap.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 +105 -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 +77 -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 +27 -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 +101 -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 +74 -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 +12 -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 +3 -2
- package/dist/validate/index.js.map +1 -1
- package/dist/validate/validateNodes.d.ts +2 -2
- package/dist/validate/validateNodes.d.ts.map +1 -1
- package/dist/validate/validateNodes.js +1 -1
- package/dist/validate/validateNodes.js.map +1 -1
- package/package.json +75 -56
- 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 -128
- 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.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 -127
- 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.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.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.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.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 -23
- package/dist/field/features/converters/html/field/index.d.ts.map +0 -1
- package/dist/field/features/converters/html/field/index.js +0 -114
- 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.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.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.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.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.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.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.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 -93
- 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.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 -91
- 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.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.map +0 -1
- 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 -49
- 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.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- 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.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.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/defaultConverters.js.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/index.d.ts.map +0 -1
- 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.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.map +0 -1
- 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.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.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- 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.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.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- 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.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.map +0 -1
- 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.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 -278
- package/dist/field/features/types.d.ts.map +0 -1
- 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 -125
- package/dist/field/features/upload/component/ExtraFieldsDrawer/index.js.map +0 -1
- 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 -110
- 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.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.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.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.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.map +0 -1
- 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.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.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.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.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.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.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 -505
- 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/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.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.map +0 -1
- package/dist/field/lexical/utils/getDOMRangeRect.d.ts.map +0 -1
- 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.map +0 -1
- package/dist/field/lexical/utils/invariant.d.ts.map +0 -1
- 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.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.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.map +0 -1
- package/dist/field/lexical/utils/rect.d.ts.map +0 -1
- 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.map +0 -1
- package/dist/field/lexical/utils/swipe.d.ts.map +0 -1
- package/dist/field/lexical/utils/swipe.js.map +0 -1
- 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 -85
- 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 -30
- 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/src/index.ts +0 -423
- /package/dist/{field/features → features}/blockquote/markdownTransformer.d.ts +0 -0
- /package/dist/{field/features → features}/blocks/component/removeEmptyArrayValues.js +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/linebreak.js +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/converters/text.js +0 -0
- /package/dist/{field/features → features}/converters/html/converter/defaultConverters.d.ts +0 -0
- /package/dist/{field/features → features}/converters/html/converter/defaultConverters.js +0 -0
- /package/dist/{field/features → features}/converters/html/converter/types.js +0 -0
- /package/dist/{field/features → features}/createFeaturePropComponent.d.ts +0 -0
- /package/dist/{field/features → features}/format/bold/markdownTransformers.d.ts +0 -0
- /package/dist/{field/features → features}/format/bold/markdownTransformers.js +0 -0
- /package/dist/{field/features/format/inlinecode → features/format/inlineCode}/markdownTransformers.d.ts +0 -0
- /package/dist/{field/features/format/inlinecode → features/format/inlineCode}/markdownTransformers.js +0 -0
- /package/dist/{field/features → features}/format/italic/markdownTransformers.d.ts +0 -0
- /package/dist/{field/features → features}/format/italic/markdownTransformers.js +0 -0
- /package/dist/{field/features → features}/format/strikethrough/markdownTransformers.d.ts +0 -0
- /package/dist/{field/features → features}/format/strikethrough/markdownTransformers.js +0 -0
- /package/dist/{field/features → features}/heading/markdownTransformer.d.ts +0 -0
- /package/dist/{field/features/horizontalrule → features/horizontalRule}/component/index.d.ts +0 -0
- /package/dist/{field/features/horizontalrule → features/horizontalRule}/markdownTransformer.d.ts +0 -0
- /package/dist/{field/features/horizontalrule → features/horizontalRule}/markdownTransformer.js +0 -0
- /package/dist/{field/features → features}/link/nodes/AutoLinkNode.d.ts +0 -0
- /package/dist/{field/features/link/drawer → features/link/nodes}/types.js +0 -0
- /package/dist/{field/features → features}/link/plugins/floatingLinkEditor/LinkEditor/commands.d.ts +0 -0
- /package/dist/{field/features → features}/link/plugins/floatingLinkEditor/LinkEditor/index.d.ts +0 -0
- /package/dist/{field/features → features}/link/plugins/floatingLinkEditor/types.d.ts +0 -0
- /package/dist/{field/features → features}/link/plugins/floatingLinkEditor/types.js +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/converter/converters/heading/client.js +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/converters/heading/converter.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/converters/heading/converter.js +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/converters/heading/index.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/converters/link/client.js +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/converters/link/converter.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/converters/link/converter.js +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/converters/link/index.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/converters/list/client.js +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/converters/list/converter.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/converters/list/converter.js +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/converters/list/index.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/converters/listItem/client.js +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.js +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/converters/listItem/index.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/converters/quote/client.js +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/converters/quote/converter.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/converters/quote/converter.js +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/converters/quote/index.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/converters/unknown/client.js +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.js +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/converters/unknown/index.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/converters/upload/client.js +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/converters/upload/converter.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/converters/upload/index.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/defaultConverters.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/defaultConverters.js +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/index.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/converter/index.js +0 -0
- /package/dist/{field/features/link/nodes → features/migrations/lexicalPluginToLexical/converter}/types.js +0 -0
- /package/dist/{field/features → features}/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/blockquote/converter.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/blockquote/converter.js +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/blockquote/index.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/heading/client.js +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/heading/converter.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/heading/converter.js +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/heading/index.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/indent/client.js +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/indent/converter.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/indent/converter.js +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/indent/index.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/link/client.js +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/link/converter.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/link/converter.js +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/link/index.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/listItem/client.js +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/listItem/converter.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/listItem/converter.js +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/listItem/index.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/orderedList/client.js +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/orderedList/converter.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/orderedList/converter.js +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/orderedList/index.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/relationship/client.js +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/relationship/converter.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/relationship/index.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/unknown/client.js +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/unknown/converter.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/unknown/converter.js +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/unknown/index.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/unorderedList/client.js +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/unorderedList/converter.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/unorderedList/converter.js +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/unorderedList/index.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/upload/client.js +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/upload/converter.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/converters/upload/index.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/defaultConverters.d.ts +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/defaultConverters.js +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/converter/index.d.ts +0 -0
- /package/dist/{field/features/migrations/lexicalPluginToLexical → features/migrations/slateToLexical}/converter/types.js +0 -0
- /package/dist/{field/features → features}/migrations/slateToLexical/nodes/unknownConvertedNode/Component.d.ts +0 -0
- /package/dist/{field/features → features}/relationship/drawer/commands.d.ts +0 -0
- /package/dist/{field/features → features}/relationship/drawer/index.d.ts +0 -0
- /package/dist/{field/features → features}/relationship/utils/EnabledRelationshipsCondition.d.ts +0 -0
- /package/dist/{field/features/migrations/slateToLexical/converter → features/toolbars}/types.js +0 -0
- /package/dist/{field/features → features}/upload/component/index.d.ts +0 -0
- /package/dist/{field/features → features}/upload/drawer/commands.d.ts +0 -0
- /package/dist/{field/features → features}/upload/drawer/index.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/config/client/default.js +0 -0
- /package/dist/{field/features → lexical/config}/types.js +0 -0
- /package/dist/{field/lexical → lexical}/nodes/index.js +0 -0
- /package/dist/{field/lexical → lexical}/plugins/MarkdownShortcut/index.d.ts +0 -0
- /package/dist/{field/lexical/config → lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin}/types.js +0 -0
- /package/dist/{field/lexical → lexical}/plugins/SlashMenu/useMenuTriggerMatch.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/plugins/SlashMenu/useMenuTriggerMatch.js +0 -0
- /package/dist/{field/lexical → lexical}/plugins/handles/DraggableBlockPlugin/debounce.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/plugins/handles/DraggableBlockPlugin/debounce.js +0 -0
- /package/dist/{field/lexical → lexical}/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/plugins/handles/DraggableBlockPlugin/getBoundingRectWithoutTransform.js +0 -0
- /package/dist/{field/lexical → lexical}/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js +0 -0
- /package/dist/{field/lexical → lexical}/plugins/handles/utils/doesLineHeightAffectElement.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/plugins/handles/utils/doesLineHeightAffectElement.js +0 -0
- /package/dist/{field/lexical → lexical}/plugins/handles/utils/getCollapsedMargins.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/plugins/handles/utils/getCollapsedMargins.js +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/isOnHandleElement.js +0 -0
- /package/dist/{field/lexical → lexical}/plugins/handles/utils/setHandlePosition.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/theme/EditorTheme.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/Caret/index.svg +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/canUseDOM.js +0 -0
- /package/dist/{field/lexical → lexical}/utils/environment.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/utils/environment.js +0 -0
- /package/dist/{field/lexical → lexical}/utils/getDOMRangeRect.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/utils/getDOMRangeRect.js +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/guard.js +0 -0
- /package/dist/{field/lexical → lexical}/utils/invariant.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/utils/invariant.js +0 -0
- /package/dist/{field/lexical → lexical}/utils/joinClasses.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/utils/joinClasses.js +0 -0
- /package/dist/{field/lexical → lexical}/utils/markdown/createBlockNode.js +0 -0
- /package/dist/{field/lexical → lexical}/utils/point.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/utils/point.js +0 -0
- /package/dist/{field/lexical → lexical}/utils/rect.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/utils/rect.js +0 -0
- /package/dist/{field/lexical → lexical}/utils/setFloatingElemPositionForLinkEditor.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/utils/setFloatingElemPositionForLinkEditor.js +0 -0
- /package/dist/{field/lexical → lexical}/utils/swipe.d.ts +0 -0
- /package/dist/{field/lexical → lexical}/utils/swipe.js +0 -0
- /package/dist/{field/lexical → lexical}/utils/url.d.ts +0 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/features/shared/slashMenu/basicGroup.ts", "../../../src/cell/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/features/align/feature.client.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/useLexicalFeature.tsx", "../../../src/features/createClientComponent.tsx", "../../../src/utilities/createClientFeature.ts", "../../../src/features/align/toolbarAlignGroup.ts", "../../../src/features/blockquote/feature.client.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/feature.client.tsx", "../../../src/lexical/ui/icons/Block/index.tsx", "../../../src/lexical/ui/icons/InlineBlocks/index.tsx", "../../../src/features/blocks/nodes/BlocksNode.tsx", "../../../src/features/blocks/plugin/index.tsx", "../../../src/features/debug/testRecorder/plugin/index.tsx", "../../../src/lexical/utils/canUseDOM.ts", "../../../src/lexical/utils/environment.ts", "../../../src/features/debug/testRecorder/feature.client.tsx", "../../../src/features/debug/treeView/plugin/index.tsx", "../../../src/features/debug/treeView/feature.client.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/feature.client.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/feature.client.tsx", "../../../src/lexical/ui/icons/HorizontalRule/index.tsx", "../../../src/lexical/ui/icons/Add/index.tsx", "../../../src/features/shared/toolbar/addDropdownGroup.ts", "../../../src/features/horizontalRule/markdownTransformer.ts", "../../../src/features/horizontalRule/plugin/index.tsx", "../../../src/features/indent/feature.client.tsx", "../../../src/lexical/ui/icons/IndentDecrease/index.tsx", "../../../src/lexical/ui/icons/IndentIncrease/index.tsx", "../../../src/features/indent/toolbarIndentGroup.ts", "../../../src/features/link/feature.client.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/plugins/autoLink/index.tsx", "../../../src/lexical/utils/invariant.ts", "../../../src/features/link/plugins/clickableLink/index.tsx", "../../../src/features/link/plugins/floatingLinkEditor/LinkEditor/commands.ts", "../../../src/features/link/plugins/floatingLinkEditor/index.tsx", "../../../src/features/link/plugins/floatingLinkEditor/LinkEditor/index.tsx", "../../../src/lexical/utils/setFloatingElemPositionForLinkEditor.ts", "../../../src/features/link/plugins/link/index.tsx", "../../../src/lexical/utils/url.ts", "../../../src/features/lists/checklist/feature.client.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/plugin/index.tsx", "../../../src/features/lists/orderedList/feature.client.tsx", "../../../src/lexical/ui/icons/OrderedList/index.tsx", "../../../src/features/lists/orderedList/markdownTransformer.ts", "../../../src/features/lists/unorderedList/feature.client.tsx", "../../../src/lexical/ui/icons/UnorderedList/index.tsx", "../../../src/features/lists/unorderedList/markdownTransformer.ts", "../../../src/features/migrations/lexicalPluginToLexical/converter/index.ts", "../../../src/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.tsx", "../../../src/features/migrations/lexicalPluginToLexical/feature.client.tsx", "../../../src/lexical/utils/nodeFormat.ts", "../../../src/features/migrations/slateToLexical/converter/index.ts", "../../../src/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.tsx", "../../../src/features/migrations/slateToLexical/feature.client.tsx", "../../../src/features/paragraph/feature.client.tsx", "../../../src/features/relationship/feature.client.tsx", "../../../src/lexical/ui/icons/Relationship/index.tsx", "../../../src/features/relationship/plugins/index.tsx", "../../../src/features/relationship/drawer/index.tsx", "../../../src/features/toolbars/fixed/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/feature.client.tsx", "../../../src/features/toolbars/inline/Toolbar/index.tsx", "../../../src/lexical/utils/getDOMRangeRect.ts", "../../../src/lexical/utils/setFloatingElemPosition.ts", "../../../src/features/toolbars/inline/feature.client.tsx", "../../../src/features/experimental_table/feature.client.ts", "../../../src/lexical/ui/icons/Table/index.tsx", "../../../src/features/experimental_table/plugins/TableActionMenuPlugin/index.tsx", "../../../src/lexical/ui/icons/Meatballs/index.tsx", "../../../src/features/experimental_table/plugins/TableCellResizerPlugin/index.tsx", "../../../src/features/experimental_table/plugins/TablePlugin/index.tsx", "../../../src/features/upload/feature.client.tsx", "../../../src/lexical/ui/icons/Upload/index.tsx", "../../../src/features/upload/plugin/index.tsx", "../../../src/features/upload/drawer/index.tsx", "../../../src/field/index.tsx", "../../../src/lexical/utils/joinClasses.ts", "../../../src/lexical/utils/swipe.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'\nimport type { EditorConfig as LexicalEditorConfig } from 'lexical'\nimport type { CellComponentProps } from 'payload'\n\nimport { createHeadlessEditor } from '@lexical/headless'\nimport { useClientFunctions, useTableCell } from '@payloadcms/ui'\nimport { $getRoot } from 'lexical'\nimport React, { useEffect, useState } from 'react'\n\nimport type { FeatureProviderClient } from '../features/typesClient.js'\nimport type { SanitizedClientEditorConfig } from '../lexical/config/types.js'\nimport type { GeneratedFeatureProviderComponent, LexicalFieldAdminProps } 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'\nimport { getEnabledNodes } from '../lexical/nodes/index.js'\n\nexport const RichTextCell: React.FC<\n {\n admin?: LexicalFieldAdminProps\n lexicalEditorConfig: LexicalEditorConfig\n } & CellComponentProps\n> = (props) => {\n const { admin, lexicalEditorConfig, richTextComponentMap } = props\n\n const [preview, setPreview] = React.useState('Loading...')\n\n const {\n cellData,\n cellProps: { schemaPath },\n } = useTableCell()\n\n const clientFunctions = useClientFunctions()\n const [hasLoadedFeatures, setHasLoadedFeatures] = useState(false)\n\n const [featureProviders, setFeatureProviders] = useState<\n FeatureProviderClient<unknown, unknown>[]\n >([])\n\n const [finalSanitizedEditorConfig, setFinalSanitizedEditorConfig] =\n useState<SanitizedClientEditorConfig>(null)\n\n const featureProviderComponents: GeneratedFeatureProviderComponent[] = (\n richTextComponentMap.get('features') as GeneratedFeatureProviderComponent[]\n ).sort((a, b) => a.order - b.order) // order by order\n\n let featureProvidersAndComponentsToLoad = 0 // feature providers and components\n for (const featureProvider of featureProviderComponents) {\n const featureComponentKeys = Array.from(richTextComponentMap.keys()).filter((key) =>\n key.startsWith(`feature.${featureProvider.key}.components.`),\n )\n\n featureProvidersAndComponentsToLoad += 1\n featureProvidersAndComponentsToLoad += featureComponentKeys.length\n }\n\n useEffect(() => {\n if (!hasLoadedFeatures) {\n const featureProvidersLocal: FeatureProviderClient<unknown, unknown>[] = []\n let featureProvidersAndComponentsLoaded = 0 // feature providers and components only\n\n Object.entries(clientFunctions).forEach(([key, plugin]) => {\n if (key.startsWith(`lexicalFeature.${schemaPath}.`)) {\n if (!key.includes('.lexical_internal_components.')) {\n featureProvidersLocal.push(plugin)\n }\n featureProvidersAndComponentsLoaded++\n }\n })\n\n if (featureProvidersAndComponentsLoaded === featureProvidersAndComponentsToLoad) {\n setFeatureProviders(featureProvidersLocal)\n setHasLoadedFeatures(true)\n\n /**\n * Loaded feature provided => create the final sanitized editor config\n */\n\n const resolvedClientFeatures = loadClientFeatures({\n clientFunctions,\n schemaPath,\n unSanitizedEditorConfig: {\n features: featureProvidersLocal,\n lexical: lexicalEditorConfig,\n },\n })\n\n setFinalSanitizedEditorConfig(\n sanitizeClientEditorConfig(\n lexicalEditorConfig ? lexicalEditorConfig : defaultEditorLexicalConfig,\n resolvedClientFeatures,\n admin,\n ),\n )\n }\n }\n }, [\n admin,\n featureProviderComponents,\n hasLoadedFeatures,\n clientFunctions,\n schemaPath,\n featureProviderComponents.length,\n featureProviders,\n finalSanitizedEditorConfig,\n lexicalEditorConfig,\n richTextComponentMap,\n featureProvidersAndComponentsToLoad,\n ])\n\n useEffect(() => {\n if (!hasLoadedFeatures) {\n return\n }\n let dataToUse = cellData\n if (dataToUse == null || !hasLoadedFeatures || !finalSanitizedEditorConfig) {\n setPreview('')\n return\n }\n\n // Transform data through load hooks\n if (finalSanitizedEditorConfig?.features?.hooks?.load?.length) {\n finalSanitizedEditorConfig.features.hooks.load.forEach((hook) => {\n dataToUse = hook({ incomingEditorState: dataToUse })\n })\n }\n\n if (!dataToUse || typeof dataToUse !== 'object') {\n setPreview('')\n return\n }\n\n // If data is from Slate and not Lexical\n if (Array.isArray(dataToUse) && !('root' in dataToUse)) {\n setPreview('')\n return\n }\n\n // If data is from payload-plugin-lexical\n if ('jsonContent' in dataToUse) {\n setPreview('')\n return\n }\n\n // initialize headless editor\n const headlessEditor = createHeadlessEditor({\n namespace: finalSanitizedEditorConfig.lexical.namespace,\n nodes: getEnabledNodes({ editorConfig: finalSanitizedEditorConfig }),\n theme: finalSanitizedEditorConfig.lexical.theme,\n })\n headlessEditor.setEditorState(headlessEditor.parseEditorState(dataToUse))\n\n const textContent =\n headlessEditor.getEditorState().read(() => {\n return $getRoot().getTextContent()\n }) || ''\n\n // Limiting the number of characters shown is done in a CSS rule\n setPreview(textContent)\n }, [cellData, lexicalEditorConfig, hasLoadedFeatures, finalSanitizedEditorConfig])\n\n if (!hasLoadedFeatures) {\n return (\n <React.Fragment>\n {Array.isArray(featureProviderComponents) &&\n featureProviderComponents.map((featureProvider) => {\n // get all components starting with key feature.${FeatureProvider.key}.components.{featureComponentKey}\n const featureComponentKeys = Array.from(richTextComponentMap.keys()).filter((key) =>\n key.startsWith(\n `lexical_internal_feature.${featureProvider.key}.lexical_internal_components.`,\n ),\n )\n\n const featureComponents: React.ReactNode[] = featureComponentKeys.map((key) => {\n return richTextComponentMap.get(key)\n })\n\n return (\n <React.Fragment key={featureProvider.key}>\n {featureComponents?.length\n ? featureComponents.map((FeatureComponent) => {\n return FeatureComponent\n })\n : null}\n {featureProvider.ClientFeature}\n </React.Fragment>\n )\n })}\n </React.Fragment>\n )\n }\n\n return <span>{preview}</span>\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 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 FeatureProviderClient,\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 clientFunctions,\n schemaPath,\n unSanitizedEditorConfig,\n}: {\n clientFunctions?: Record<string, any>\n schemaPath: string\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 unSanitizedEditorConfig.features.map(\n (f) =>\n [f.clientFeatureProps.featureKey, f] as [string, FeatureProviderClient<unknown, unknown>],\n ),\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 /**\n * Load relevant clientFunctions scoped to this feature and then pass them to the client feature\n */\n const relevantClientFunctions: Record<string, any> = {}\n Object.entries(clientFunctions).forEach(([key, plugin]) => {\n if (\n key.startsWith(\n `lexicalFeature.${schemaPath}.${featureProvider.clientFeatureProps.featureKey}.components.`,\n )\n ) {\n const featureComponentKey = key.split(\n `${schemaPath}.${featureProvider.clientFeatureProps.featureKey}.components.`,\n )[1]\n relevantClientFunctions[featureComponentKey] = plugin\n }\n })\n\n const feature =\n typeof featureProvider.feature === 'function'\n ? featureProvider.feature({\n clientFunctions: relevantClientFunctions,\n featureProviderMap,\n resolvedFeatures,\n unSanitizedEditorConfig,\n })\n : featureProvider.feature\n\n resolvedFeatures.set(featureProvider.clientFeatureProps.featureKey, {\n ...feature,\n key: featureProvider.clientFeatureProps.featureKey,\n order: loaded,\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 Component: plugin.Component,\n clientProps: feature.sanitizedClientFeatureProps,\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 lexical: LexicalEditorConfig,\n resolvedClientFeatureMap: ResolvedClientFeatureMap,\n admin?: LexicalFieldAdminProps,\n): SanitizedClientEditorConfig {\n return {\n admin,\n features: sanitizeClientFeatures(resolvedClientFeatureMap),\n lexical,\n resolvedFeatureMap: resolvedClientFeatureMap,\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", "import 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", "import 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", "import 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", "import 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", "'use client'\n\nimport { useAddClientFunction, useFieldProps, useTableCell } from '@payloadcms/ui'\n\nimport type { FeatureProviderClient } from '../features/typesClient.js'\n\nexport const useLexicalFeature = <ClientFeatureProps,>(\n featureKey: string,\n feature: FeatureProviderClient<ClientFeatureProps>,\n) => {\n const { schemaPath: schemaPathFromFieldProps } = useFieldProps()\n const tableCell = useTableCell()\n\n const schemaPathFromCellProps = tableCell?.cellProps?.schemaPath\n\n const schemaPath = schemaPathFromCellProps || schemaPathFromFieldProps // schemaPathFromCellProps needs to have priority, as there can be cells within fields (e.g. list drawers) and the cell schemaPath needs to be used there - not the parent field schemaPath. There cannot be fields within cells.\n\n useAddClientFunction(`lexicalFeature.${schemaPath}.${featureKey}`, feature)\n}\n", "'use client'\n\nimport type { FeatureProviderProviderClient } from './typesClient.js'\nimport type { ServerFeature } from './typesServer.js'\n\nimport { useLexicalFeature } from '../utilities/useLexicalFeature.js'\n\n/**\n * Utility function to create a client component for the client feature\n */\nexport const createClientComponent = <ClientFeatureProps,>(\n clientFeature: FeatureProviderProviderClient<ClientFeatureProps>,\n): ServerFeature<unknown, ClientFeatureProps>['ClientFeature'] => {\n return (props) => {\n useLexicalFeature(props.featureKey, clientFeature(props))\n return null\n }\n}\n", "import type React from 'react'\n\nimport type {\n ClientComponentProps,\n ClientFeature,\n ClientFeatureProviderMap,\n FeatureProviderClient,\n FeatureProviderProviderClient,\n ResolvedClientFeatureMap,\n} from '../features/typesClient.js'\nimport type { ClientEditorConfig } from '../lexical/config/types.js'\n\nimport { createClientComponent } from '../features/createClientComponent.js'\n\nexport type CreateClientFeatureArgs<UnSanitizedClientProps, ClientProps> =\n | ((props: {\n clientFunctions: Record<string, any>\n /** unSanitizedEditorConfig.features, but mapped */\n featureProviderMap: ClientFeatureProviderMap\n props: ClientComponentProps<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) => React.FC<ClientComponentProps<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 clientFunctions,\n featureProviderMap,\n resolvedFeatures,\n unSanitizedEditorConfig,\n }) => {\n const toReturn = feature({\n clientFunctions,\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 ;(feature as ClientFeature<any>).sanitizedClientFeatureProps = props\n featureProviderClient.feature = feature as ClientFeature<any>\n }\n return featureProviderClient as FeatureProviderClient<any, any>\n }\n\n return createClientComponent(featureProviderProvideClient)\n}\n", "import 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", "import 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", "import 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 = []\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 { Block, ReducedBlock } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\n\nimport type { ToolbarGroup } 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 ClientBlock = {\n LabelComponent?: Block['admin']['components']['Label']\n} & ReducedBlock\n\nexport type BlocksFeatureClientProps = {\n reducedBlocks: ClientBlock[]\n reducedInlineBlocks: ClientBlock[]\n}\n\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.reducedBlocks?.length\n ? {\n items: props.reducedBlocks.map((block) => {\n return {\n Icon: BlockIcon,\n key: 'block-' + block.slug,\n keywords: ['block', 'blocks', block.slug],\n label: ({ i18n }) => {\n if (!block.labels.singular) {\n return block.slug\n }\n\n return getTranslation(block.labels.singular, i18n)\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INSERT_BLOCK_COMMAND, {\n id: null,\n blockName: '',\n blockType: block.slug,\n })\n },\n }\n }),\n key: 'blocks',\n label: ({ i18n }) => {\n return i18n.t('lexical:blocks:label')\n },\n }\n : null,\n props.reducedInlineBlocks?.length\n ? {\n items: props.reducedInlineBlocks.map((inlineBlock) => {\n return {\n Icon: InlineBlocksIcon,\n key: 'inlineBlocks-' + inlineBlock.slug,\n keywords: ['inlineBlock', 'inline block', inlineBlock.slug],\n label: ({ i18n }) => {\n if (!inlineBlock.labels.singular) {\n return inlineBlock.slug\n }\n\n return getTranslation(inlineBlock.labels.singular, i18n)\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(OPEN_INLINE_BLOCK_DRAWER_COMMAND, {\n fields: {\n id: null,\n blockName: '',\n blockType: inlineBlock.slug,\n },\n })\n },\n }\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.reducedBlocks?.length\n ? {\n type: 'dropdown',\n ChildComponent: BlockIcon,\n items: props.reducedBlocks.map((block, 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-' + block.slug,\n label: ({ i18n }) => {\n if (!block.labels.singular) {\n return block.slug\n }\n\n return getTranslation(block.labels.singular, i18n)\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INSERT_BLOCK_COMMAND, {\n id: null,\n blockName: '',\n blockType: block.slug,\n })\n },\n order: index,\n }\n }),\n key: 'blocks',\n order: 20,\n }\n : null,\n props.reducedInlineBlocks?.length\n ? {\n type: 'dropdown',\n ChildComponent: InlineBlocksIcon,\n items: props.reducedInlineBlocks.map((inlineBlock, index) => {\n return {\n ChildComponent: InlineBlocksIcon,\n isActive: undefined,\n key: 'inlineBlock-' + inlineBlock.slug,\n label: ({ i18n }) => {\n if (!inlineBlock.labels.singular) {\n return inlineBlock.slug\n }\n\n return getTranslation(inlineBlock.labels.singular, i18n)\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(OPEN_INLINE_BLOCK_DRAWER_COMMAND, {\n fields: {\n blockType: inlineBlock.slug,\n },\n })\n },\n order: index,\n }\n }),\n key: 'inlineBlocks',\n order: 25,\n }\n : null,\n ].filter(Boolean) as ToolbarGroup[],\n },\n}))\n", "import 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", "import 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", "import type { SerializedDecoratorBlockNode } from '@lexical/react/LexicalDecoratorBlockNode.js'\nimport type {\n DOMConversionMap,\n DOMExportOutput,\n EditorConfig,\n ElementFormatType,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n Spread,\n} from 'lexical'\nimport type { JsonObject } from 'payload'\n\nimport { DecoratorBlockNode } from '@lexical/react/LexicalDecoratorBlockNode.js'\nimport ObjectID from 'bson-objectid'\nimport { deepCopyObjectSimple } from 'payload/shared'\nimport React, { type JSX } from 'react'\n\nexport type BlockFields<TBlockFields extends JsonObject = JsonObject> = {\n /** Block form data */\n blockName: string\n blockType: string\n id: string\n} & TBlockFields\n\nconst BlockComponent = React.lazy(() =>\n import('../component/index.js').then((module) => ({\n default: module.BlockComponent,\n })),\n)\n\nexport type SerializedBlockNode<TBlockFields extends JsonObject = JsonObject> = Spread<\n {\n children?: never // required so that our typed editor state doesn't automatically add children\n fields: BlockFields<TBlockFields>\n type: 'block'\n },\n SerializedDecoratorBlockNode\n>\n\nexport class BlockNode extends DecoratorBlockNode {\n __fields: BlockFields\n\n constructor({\n fields,\n format,\n key,\n }: {\n fields: BlockFields\n format?: ElementFormatType\n key?: NodeKey\n }) {\n super(format, key)\n this.__fields = fields\n }\n\n static clone(node: BlockNode): BlockNode {\n return new BlockNode({\n fields: node.__fields,\n format: node.__format,\n key: node.__key,\n })\n }\n\n static getType(): string {\n return 'block'\n }\n\n static importDOM(): DOMConversionMap<HTMLDivElement> | null {\n return {}\n }\n\n static importJSON(serializedNode: SerializedBlockNode): BlockNode {\n if (serializedNode.version === 1) {\n // Convert (version 1 had the fields wrapped in another, unnecessary data property)\n serializedNode = {\n ...serializedNode,\n fields: {\n ...(serializedNode as any).fields.data,\n },\n version: 2,\n }\n }\n const node = $createBlockNode(serializedNode.fields)\n node.setFormat(serializedNode.format)\n return node\n }\n\n static isInline(): false {\n return false\n }\n decorate(editor: LexicalEditor, config: EditorConfig): JSX.Element {\n return <BlockComponent formData={this.getFields()} nodeKey={this.getKey()} />\n }\n\n exportDOM(): DOMExportOutput {\n const element = document.createElement('div')\n\n const text = document.createTextNode(this.getTextContent())\n element.append(text)\n return { element }\n }\n\n exportJSON(): SerializedBlockNode {\n return {\n ...super.exportJSON(),\n type: 'block',\n fields: this.getFields(),\n version: 2,\n }\n }\n\n getFields(): BlockFields {\n return this.getLatest().__fields\n }\n\n getTextContent(): string {\n return `Block Field`\n }\n\n setFields(fields: BlockFields): void {\n const fieldsCopy = deepCopyObjectSimple(fields)\n\n const writable = this.getWritable()\n writable.__fields = fieldsCopy\n }\n}\n\nexport function $createBlockNode(fields: Exclude<BlockFields, 'id'>): BlockNode {\n return new BlockNode({\n fields: {\n ...fields,\n id: fields?.id || new ObjectID.default().toHexString(),\n },\n })\n}\n\nexport function $isBlockNode(node: BlockNode | LexicalNode | null | undefined): node is BlockNode {\n return node instanceof BlockNode\n}\n", "'use client'\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { $insertNodeToNearestRoot, $wrapNodeInElement, mergeRegister } from '@lexical/utils'\nimport { getTranslation } from '@payloadcms/translations'\nimport { useModal, 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 { ClientComponentProps, PluginComponent } from '../../typesClient.js'\nimport type { BlocksFeatureClientProps, ClientBlock } from '../feature.client.js'\nimport type { BlockFields } from '../nodes/BlocksNode.js'\nimport type { InlineBlockNode } from '../nodes/InlineBlocksNode.js'\n\nimport { useEditorConfigContext } from '../../../lexical/config/client/EditorConfigProvider.js'\nimport { FieldsDrawer } from '../../../utilities/fieldsDrawer/Drawer.js'\nimport { $createBlockNode, BlockNode } from '../nodes/BlocksNode.js'\nimport { $createInlineBlockNode } 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 = Exclude<BlockFields, 'id'>\n\nconst drawerSlug = 'lexical-inlineBlocks-create'\n\nexport const BlocksPlugin: PluginComponent<BlocksFeatureClientProps> = () => {\n const [editor] = useLexicalComposerContext()\n const { closeModal, toggleModal } = useModal()\n const [blockFields, setBlockFields] = useState<BlockFields>(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\n const { editorConfig } = useEditorConfigContext()\n\n const reducedBlock: ClientBlock = (\n editorConfig?.resolvedFeatureMap?.get('blocks')\n ?.sanitizedClientFeatureProps as ClientComponentProps<BlocksFeatureClientProps>\n )?.reducedInlineBlocks?.find((block) => block.slug === blockFields?.blockType)\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 .getParent()\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: InlineBlockNode = $getNodeByKey(targetNodeKey)\n\n if (!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 toggleModal(drawerSlug)\n return true\n }\n\n let rangeSelection: RangeSelection | null = 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 toggleModal(drawerSlug)\n }\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n )\n }, [editor, targetNodeKey, toggleModal])\n\n const blockDisplayName = reducedBlock?.labels?.singular\n ? getTranslation(reducedBlock?.labels?.singular, i18n)\n : reducedBlock?.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 handleDrawerSubmit={(_fields, data) => {\n closeModal(drawerSlug)\n if (!data) {\n return\n }\n\n data.blockType = blockType\n\n editor.dispatchCommand(INSERT_INLINE_BLOCK_COMMAND, data)\n }}\n schemaPathSuffix={blockFields?.blockType}\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'\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 'press': {\n return ` await page.keyboard.press('${value}');`\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 'type': {\n return ` await page.keyboard.type('${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 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 = []\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 'Enter',\n 'Backspace',\n 'Delete',\n 'Escape',\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowDown',\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", "export const CAN_USE_DOM: boolean =\n typeof window !== 'undefined' &&\n typeof window.document !== 'undefined' &&\n typeof window.document.createElement !== 'undefined'\n", "import { 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\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 { $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)) {\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", "import 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", "import 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 { $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)) {\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", "import 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 { $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)) {\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", "import 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 { $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)) {\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", "import 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 { $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)) {\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", "import 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 { $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)) {\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", "import 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 { $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)) {\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", "import 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 './feature.server.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", "import 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", "import 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", "import 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", "import 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", "import 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", "import 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 { MarkdownTransformer } from './markdownTransformer.js'\nimport {\n $isHorizontalRuleNode,\n HorizontalRuleNode,\n INSERT_HORIZONTAL_RULE_COMMAND,\n} 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", "import 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", "import 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 {\n $createHorizontalRuleNode,\n INSERT_HORIZONTAL_RULE_COMMAND,\n} from '../nodes/HorizontalRuleNode.js'\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 // If at least one node is indented, this should be active\n if (\n ('__indent' in node && (node.__indent as number) > 0) ||\n (node.getParent() && '__indent' in node.getParent() && node.getParent().__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", "import 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", "import 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", "import 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 { ExclusiveLinkCollectionsProps } from './feature.server.js'\nimport type { LinkFields } from './nodes/types.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 { TOGGLE_LINK_WITH_MODAL_COMMAND } from './plugins/floatingLinkEditor/LinkEditor/commands.js'\nimport { FloatingLinkEditorPlugin } from './plugins/floatingLinkEditor/index.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 = null\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", "import 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", "import 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 ElementNode,\n createCommand,\n} from 'lexical'\n\nimport type { LinkPayload } from '../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: undefined,\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 && (parent = parent.getParent()) !== null && !predicate(parent));\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: undefined, 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: undefined, 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 { ClientProps } from '../../feature.client.js'\nimport type { LinkFields } from '../../nodes/types.js'\n\nimport { invariant } from '../../../../lexical/utils/invariant.js'\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) return null\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\nfunction startsWithFullStop(textContent: string): boolean {\n return /^\\.[a-z\\d]+/i.test(textContent)\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: LinkFields = {\n linkType: 'custom',\n url: match.url,\n ...match.fields,\n }\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 = []\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 (\n $isAutoLinkNode(previousSibling) &&\n (!startsWithSeparator(text) || startsWithFullStop(text))\n ) {\n previousSibling.append(textNode)\n handleLinkEdit(previousSibling, matchers, onChange)\n onChange(null, previousSibling.getFields()?.url ?? null)\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 invariant(false, '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", "// Taken from https://github.com/facebook/lexical/blob/176b8cf16ecb332ee5efe2c75219e223b7b019f2/packages/shared/src/invariant.ts\n\n// invariant(condition, message) will refine types based on \"condition\", and\n// if \"condition\" is false will throw an error. This function is special-cased\n// in flow itself, so we can't name it anything else.\nexport function invariant(cond?: boolean, message?: string, ...args: string[]): asserts cond {\n if (cond) {\n return\n }\n\n throw new Error(\n 'Internal Lexical error: invariant() is meant to be replaced at compile ' +\n 'time. There is no runtime version. Error: ' +\n message,\n )\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 '../../feature.client.js'\n\nexport const ClickableLinkPlugin: PluginComponent<ClientProps> = () => {\n return <LexicalClickableLinkPlugin />\n}\n", "import 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 * as React from 'react'\nimport { createPortal } from 'react-dom'\n\nimport type { PluginComponentWithAnchor } from '../../../typesClient.js'\nimport type { ClientProps } from '../../feature.client.js'\n\nimport { LinkEditor } from './LinkEditor/index.js'\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 { 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 { formatDrawerSlug, useConfig, useEditDepth, useModal, useTranslation } from '@payloadcms/ui'\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 { LinkNode } from '../../../nodes/LinkNode.js'\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 { $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)\n const [linkLabel, setLinkLabel] = useState(null)\n\n const { uuid } = useEditorConfigContext()\n\n const config = useConfig()\n\n const { i18n, t } = useTranslation()\n\n const [stateData, setStateData] = useState<{ id?: string; text: string } & LinkFields>(null)\n\n const { closeModal, toggleModal } = useModal()\n const editDepth = useEditDepth()\n const [isLink, setIsLink] = useState(false)\n const [selectedNodes, setSelectedNodes] = useState<LexicalNode[]>([])\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 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(null)\n }, [setIsLink, setLinkUrl, setLinkLabel, setSelectedNodes])\n\n const $updateLinkEditor = useCallback(() => {\n const selection = $getSelection()\n let selectedNodeDomRect: DOMRect | undefined = null\n\n if (!$isRangeSelection(selection) || !selection) {\n 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: LinkNode = $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 // Initial state:\n const data: { text: string } & LinkFields = {\n doc: undefined,\n linkType: undefined,\n newTab: undefined,\n url: '',\n ...focusLinkParent.getFields(),\n id: focusLinkParent.getID(),\n text: focusLinkParent.getTextContent(),\n }\n\n if (focusLinkParent.getFields()?.linkType === 'custom') {\n setLinkUrl(focusLinkParent.getFields()?.url ?? null)\n setLinkLabel(null)\n } else {\n // internal link\n setLinkUrl(\n `/admin/collections/${focusLinkParent.getFields()?.doc?.relationTo}/${\n focusLinkParent.getFields()?.doc?.value\n }`,\n )\n\n const relatedField = config.collections.find(\n (coll) => coll.slug === focusLinkParent.getFields()?.doc?.relationTo,\n )\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(\n focusLinkParent.getFields()?.label ? String(focusLinkParent.getFields()?.label) : null,\n )\n setLinkUrl(\n focusLinkParent.getFields()?.url ? String(focusLinkParent.getFields()?.url) : null,\n )\n } else {\n const label = t('fields:linkedTo', {\n label: getTranslation(relatedField.labels.singular, i18n),\n }).replace(/<[^>]*>?/g, '')\n setLinkLabel(label)\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 }, [editor, setNotLink, config.collections, t, i18n, anchorElem])\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 toggleModal(drawerSlug)\n\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, $updateLinkEditor, toggleModal, 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 toggleModal(drawerSlug)\n }}\n onMouseDown={(event) => {\n event.preventDefault()\n }}\n tabIndex={0}\n type=\"button\"\n />\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 )}\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 closeModal(drawerSlug)\n\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 = 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 schemaPathSuffix=\"fields\"\n />\n </React.Fragment>\n )\n}\n", "const 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 { 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 { ClientProps } from '../../feature.client.js'\nimport type { LinkFields } from '../../nodes/types.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 validateUrl !== undefined\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 // Don't paste arbitrary text as a link when there's no validate function\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) return url\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// 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) return false\n\n if (url === 'https://') return true\n\n // This makes sure URLs starting with www. instead of https are valid too\n if (absoluteRegExp.test(url)) return true\n\n // Check relative or anchor links\n if (relativeOrAnchorRegExp.test(url)) return true\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", "import 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 = []\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", "import 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", "import 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 {\n SerializedEditorState,\n SerializedLexicalNode,\n SerializedParagraphNode,\n SerializedTextNode,\n} from 'lexical'\n\nimport type { LexicalPluginNodeConverter, PayloadPluginLexicalData } from './types.js'\n\nexport function convertLexicalPluginToLexical({\n converters,\n lexicalPluginData,\n}: {\n converters: LexicalPluginNodeConverter[]\n lexicalPluginData: PayloadPluginLexicalData\n}): SerializedEditorState {\n return {\n root: {\n type: 'root',\n children: convertLexicalPluginNodesToLexical({\n converters,\n lexicalPluginNodes: lexicalPluginData?.jsonContent?.root?.children || [],\n parentNodeType: 'root',\n }),\n direction: lexicalPluginData?.jsonContent?.root?.direction || 'ltr',\n format: lexicalPluginData?.jsonContent?.root?.format || '',\n indent: lexicalPluginData?.jsonContent?.root?.indent || 0,\n version: 1,\n },\n }\n}\n\nexport function convertLexicalPluginNodesToLexical({\n converters,\n lexicalPluginNodes,\n parentNodeType,\n}: {\n converters: LexicalPluginNodeConverter[]\n lexicalPluginNodes: SerializedLexicalNode[] | undefined\n /**\n * Type of the parent lexical node (not the type of the original, parent payload-plugin-lexical type)\n */\n parentNodeType: string\n}): SerializedLexicalNode[] {\n if (!lexicalPluginNodes?.length) {\n return []\n }\n const unknownConverter = converters.find((converter) => converter.nodeTypes.includes('unknown'))\n return (\n lexicalPluginNodes.map((lexicalPluginNode, i) => {\n if (lexicalPluginNode.type === 'paragraph') {\n return convertParagraphNode(converters, lexicalPluginNode)\n }\n if (lexicalPluginNode.type === 'text' || !lexicalPluginNode.type) {\n return convertTextNode(lexicalPluginNode)\n }\n\n const converter = converters.find((converter) =>\n converter.nodeTypes.includes(lexicalPluginNode.type),\n )\n\n if (converter) {\n return converter.converter({ childIndex: i, converters, lexicalPluginNode, parentNodeType })\n }\n\n console.warn(\n 'lexicalPluginToLexical > No converter found for node type: ' + lexicalPluginNode.type,\n )\n return unknownConverter?.converter({\n childIndex: i,\n converters,\n lexicalPluginNode,\n parentNodeType,\n })\n }) || []\n )\n}\n\nexport function convertParagraphNode(\n converters: LexicalPluginNodeConverter[],\n node: SerializedLexicalNode,\n): SerializedParagraphNode {\n return {\n ...node,\n type: 'paragraph',\n\n children: convertLexicalPluginNodesToLexical({\n converters,\n lexicalPluginNodes: (node as any).children || [],\n parentNodeType: 'paragraph',\n }),\n version: 1,\n } as SerializedParagraphNode\n}\nexport function convertTextNode(node: SerializedLexicalNode): SerializedTextNode {\n return node as SerializedTextNode\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 | null {\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 type { LexicalPluginNodeConverter, PayloadPluginLexicalData } from './converter/types.js'\n\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { convertLexicalPluginToLexical } from './converter/index.js'\nimport { UnknownConvertedNode } from './nodes/unknownConvertedNode/index.js'\n\nexport const LexicalPluginToLexicalFeatureClient = createClientFeature(({ clientFunctions }) => {\n const converters: LexicalPluginNodeConverter[] = Object.values(clientFunctions)\n\n return {\n hooks: {\n load({ incomingEditorState }) {\n if (!incomingEditorState || !('jsonContent' in incomingEditorState)) {\n // incomingEditorState null or not from Lexical Plugin\n return incomingEditorState\n }\n // Lexical Plugin => convert to lexical\n\n return convertLexicalPluginToLexical({\n converters,\n lexicalPluginData: incomingEditorState as unknown as PayloadPluginLexicalData,\n })\n },\n },\n nodes: [UnknownConvertedNode],\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<TextFormatType | string, 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<TextDetailType | string, 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", "import type {\n SerializedEditorState,\n SerializedLexicalNode,\n SerializedParagraphNode,\n SerializedTextNode,\n} from 'lexical'\n\nimport type { SlateNode, SlateNodeConverter } from './types.js'\n\nimport { NodeFormat } from '../../../../lexical/utils/nodeFormat.js'\n\nexport function convertSlateToLexical({\n converters,\n slateData,\n}: {\n converters: SlateNodeConverter[]\n slateData: SlateNode[]\n}): SerializedEditorState {\n return {\n root: {\n type: 'root',\n children: convertSlateNodesToLexical({\n canContainParagraphs: true,\n converters,\n parentNodeType: 'root',\n slateNodes: slateData,\n }),\n direction: 'ltr',\n format: '',\n indent: 0,\n version: 1,\n },\n }\n}\n\nexport function convertSlateNodesToLexical({\n canContainParagraphs,\n converters,\n parentNodeType,\n slateNodes,\n}: {\n canContainParagraphs: boolean\n converters: SlateNodeConverter[] | undefined\n /**\n * Type of the parent lexical node (not the type of the original, parent slate type)\n */\n parentNodeType: string\n slateNodes: SlateNode[]\n}): SerializedLexicalNode[] {\n if (!converters?.length) {\n return []\n }\n const unknownConverter = converters.find((converter) => converter.nodeTypes.includes('unknown'))\n return (\n slateNodes.map((slateNode, i) => {\n if (!('type' in slateNode)) {\n if (canContainParagraphs) {\n // This is a paragraph node. They do not have a type property in Slate\n return convertParagraphNode(converters, slateNode)\n } else {\n // This is a simple text node. canContainParagraphs may be false if this is nested inside a paragraph already, since paragraphs cannot contain paragraphs\n return convertTextNode(slateNode)\n }\n }\n if (slateNode.type === 'p') {\n return convertParagraphNode(converters, slateNode)\n }\n\n const converter = converters.find((converter) => converter.nodeTypes.includes(slateNode.type))\n\n if (converter) {\n return converter.converter({ childIndex: i, converters, parentNodeType, slateNode })\n }\n\n console.warn('slateToLexical > No converter found for node type: ' + slateNode.type)\n return unknownConverter?.converter({\n childIndex: i,\n converters,\n parentNodeType,\n slateNode,\n })\n }) || []\n )\n}\n\nexport function convertParagraphNode(\n converters: SlateNodeConverter[],\n node: SlateNode,\n): SerializedParagraphNode {\n return {\n type: 'paragraph',\n children: convertSlateNodesToLexical({\n canContainParagraphs: false,\n converters,\n parentNodeType: 'paragraph',\n slateNodes: node.children || [],\n }),\n direction: 'ltr',\n format: '',\n indent: 0,\n textFormat: 0,\n version: 1,\n }\n}\nexport function convertTextNode(node: SlateNode): SerializedTextNode {\n return {\n type: 'text',\n detail: 0,\n format: convertNodeToFormat(node),\n mode: 'normal',\n style: '',\n text: node.text,\n version: 1,\n }\n}\n\nexport function convertNodeToFormat(node: SlateNode): number {\n let format = 0\n if (node.bold) {\n format = format | NodeFormat.IS_BOLD\n }\n if (node.italic) {\n format = format | NodeFormat.IS_ITALIC\n }\n if (node.strikethrough) {\n format = format | NodeFormat.IS_STRIKETHROUGH\n }\n if (node.underline) {\n format = format | NodeFormat.IS_UNDERLINE\n }\n if (node.subscript) {\n format = format | NodeFormat.IS_SUBSCRIPT\n }\n if (node.superscript) {\n format = format | NodeFormat.IS_SUPERSCRIPT\n }\n if (node.code) {\n format = format | NodeFormat.IS_CODE\n }\n return format\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 | null {\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 type { SlateNodeConverter } from './converter/types.js'\n\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { convertSlateToLexical } from './converter/index.js'\nimport { UnknownConvertedNode } from './nodes/unknownConvertedNode/index.js'\n\nexport const SlateToLexicalFeatureClient = createClientFeature(({ clientFunctions }) => {\n const converters: SlateNodeConverter[] = Object.values(clientFunctions)\n\n return {\n hooks: {\n load({ incomingEditorState }) {\n if (\n !incomingEditorState ||\n !Array.isArray(incomingEditorState) ||\n 'root' in incomingEditorState\n ) {\n // incomingEditorState null or not from Slate\n return incomingEditorState\n }\n // Slate => convert to lexical\n\n return convertSlateToLexical({\n converters,\n slateData: incomingEditorState,\n })\n },\n },\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 './feature.server.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", "import 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 React, { useEffect } from 'react'\n\nimport type { PluginComponent } from '../../typesClient.js'\nimport type { RelationshipFeatureProps } from '../feature.server.js'\nimport type { RelationshipData } from '../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 { collections } = useConfig()\n\n let enabledRelations: 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 .getParent()\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 { useListDrawer } from '@payloadcms/ui'\nimport { $getNodeByKey, COMMAND_PRIORITY_EDITOR } from 'lexical'\nimport React, { useCallback, useEffect, useState } from 'react'\n\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 [ListDrawer, ListDrawerToggler, { closeDrawer, isDrawerOpen, openDrawer }] = useListDrawer({\n collectionSlugs: enabledCollectionSlugs,\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 openDrawer()\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n )\n }, [editor, openDrawer])\n\n const onSelect = useCallback(\n ({ collectionSlug, docID }) => {\n insertRelationship({\n editor,\n relationTo: collectionSlug,\n replaceNodeKey,\n value: docID,\n })\n closeDrawer()\n },\n [editor, closeDrawer, 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 }, [isDrawerOpen, enabledCollectionSlugs])\n\n return <ListDrawer onSelect={onSelect} />\n}\n\nexport const RelationshipDrawer = (props: Props): React.ReactNode => {\n return props?.enabledCollectionSlugs?.length > 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 { 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 '../feature.server.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { ToolbarButton } from '../../shared/ToolbarButton/index.js'\nimport { ToolbarDropdown } from '../../shared/ToolbarDropdown/index.js'\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 return (\n <ToolbarButton editor={editor} item={item} key={item.key}>\n {item?.ChildComponent && <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\n const [dropdownLabel, setDropdownLabel] = React.useState<null | string>(null)\n const [DropdownIcon, setDropdownIcon] = React.useState<React.FC | null>(null)\n\n React.useEffect(() => {\n if (group?.type === 'dropdown' && group.items.length && group.ChildComponent) {\n setDropdownIcon(() => group.ChildComponent)\n } else {\n setDropdownIcon(null)\n }\n }, [group])\n\n const onActiveChange = ({ activeItems }: { activeItems: ToolbarGroupItem[] }) => {\n if (!activeItems.length) {\n if (group?.type === 'dropdown' && group.items.length && group.ChildComponent) {\n setDropdownIcon(() => group.ChildComponent)\n setDropdownLabel(null)\n } else {\n setDropdownIcon(null)\n setDropdownLabel(null)\n }\n return\n }\n const item = activeItems[0]\n\n let label = item.key\n if (item.label) {\n label = typeof item.label === 'function' ? item.label({ i18n }) : 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\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 Icon={DropdownIcon}\n anchorElem={anchorElem}\n editor={editor}\n groupKey={group.key}\n items={group.items}\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 groupKey={group.key}\n items={group.items}\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 currentToolbarRef.current.className = 'fixed-toolbar fixed-toolbar--overlapping'\n parentToolbarElem.className = 'fixed-toolbar fixed-toolbar--hide'\n } else {\n if (!currentToolbarRef.current.classList.contains('fixed-toolbar--overlapping')) {\n return\n }\n currentToolbarRef.current.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'\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 (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([...editor._updateTags, 'toolbar']) // 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 { ToolbarGroupItem } from '../../types.js'\n\nimport { useEditorConfigContext } from '../../../../lexical/config/client/EditorConfigProvider.js'\nimport { DropDown, DropDownItem } from './DropDown.js'\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\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 = typeof item.label === 'function' ? item.label({ i18n }) : 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 Icon,\n anchorElem,\n classNames,\n editor,\n groupKey,\n items,\n itemsContainerClassNames,\n label,\n maxActiveItems,\n onActiveChange,\n}: {\n Icon?: React.FC\n anchorElem: HTMLElement\n classNames?: string[]\n editor: LexicalEditor\n groupKey: string\n items: ToolbarGroupItem[]\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 editorConfigContext = useEditorConfigContext()\n\n const updateStates = useCallback(() => {\n editor.getEditorState().read(() => {\n const selection = $getSelection()\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 setActiveItemKeys(_activeItemKeys)\n setEnabledItemKeys(_enabledItemKeys)\n\n if (onActiveChange) {\n onActiveChange({ activeItems: _activeItems })\n }\n })\n }, [editor, editorConfigContext, items, maxActiveItems, onActiveChange])\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 return (\n <DropDown\n Icon={Icon}\n buttonAriaLabel={`${groupKey} dropdown`}\n buttonClassName={[baseClass, `${baseClass}-${groupKey}`, ...(classNames || [])]\n .filter(Boolean)\n .join(' ')}\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([...editor._updateTags, 'toolbar']) // 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) return\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) return items[0]\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) return items[0]\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 Icon,\n buttonAriaLabel,\n buttonClassName,\n children,\n disabled = false,\n itemsContainerClassNames,\n label,\n stopCloseOnClickSelf,\n}: {\n Icon?: React.FC\n buttonAriaLabel?: string\n buttonClassName: string\n children: ReactNode\n disabled?: boolean\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 './feature.server.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'\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 return (\n <ToolbarButton editor={editor} item={item} key={item.key}>\n {item?.ChildComponent && <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 | null>(null)\n\n React.useEffect(() => {\n if (group?.type === 'dropdown' && group.items.length && group.ChildComponent) {\n setDropdownIcon(() => group.ChildComponent)\n } else {\n setDropdownIcon(null)\n }\n }, [group])\n\n const onActiveChange = ({ 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(null)\n }\n return\n }\n const item = activeItems[0]\n setDropdownIcon(() => item.ChildComponent)\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 Icon={DropdownIcon}\n anchorElem={anchorElem}\n editor={editor}\n groupKey={group.key}\n items={group.items}\n maxActiveItems={1}\n onActiveChange={onActiveChange}\n />\n ) : (\n <ToolbarDropdown\n anchorElem={anchorElem}\n editor={editor}\n groupKey={group.key}\n items={group.items}\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: 10,\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 {editor.isEditable() && (\n <React.Fragment>\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 </React.Fragment>\n )}\n </div>\n )\n}\n\nfunction useInlineToolbar(\n editor: LexicalEditor,\n anchorElem: HTMLElement,\n): React.ReactElement | null {\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) {\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", "export 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", "const VERTICAL_GAP = 10\nconst HORIZONTAL_OFFSET = 5\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 {\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 {\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 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", "import React from 'react'\n\nexport const TableIcon: React.FC = () => {\n return (\n <svg fill=\"none\" height=\"20\" viewBox=\"0 0 20 20\" width=\"20\" xmlns=\"http://www.w3.org/2000/svg\">\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 TableCellHeaderStates,\n TableCellNode,\n getTableObserverFromTableElement,\n} from '@lexical/table'\nimport { useScrollInfo } from '@payloadcms/ui'\nimport {\n $createParagraphNode,\n $getRoot,\n $getSelection,\n $isElementNode,\n $isParagraphNode,\n $isRangeSelection,\n $isTextNode,\n} from 'lexical'\nimport * as React from 'react'\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport type { PluginComponentWithAnchor } from '../../../typesClient.js'\n\nimport { MeatballsIcon } from '../../../../lexical/ui/icons/Meatballs/index.js'\nimport { invariant } from '../../../../lexical/utils/invariant.js'\nfunction computeSelectionCount(selection: TableSelection): {\n columns: number\n rows: number\n} {\n const selectionShape = selection.getShape()\n return {\n columns: selectionShape.toX - selectionShape.fromX + 1,\n rows: selectionShape.toY - selectionShape.fromY + 1,\n }\n}\n\n// This is important when merging cells as there is no good way to re-merge weird shapes (a result\n// of selecting merged cells and non-merged)\nfunction isTableSelectionRectangular(selection: TableSelection): boolean {\n const nodes = selection.getNodes()\n const currentRows: Array<number> = []\n let currentRow = null\n let expectedColumns = null\n let currentColumns = 0\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i]\n if ($isTableCellNode(node)) {\n const row = node.getParentOrThrow()\n invariant($isTableRowNode(row), 'Expected CellNode to have a RowNode parent')\n if (currentRow !== row) {\n if (expectedColumns !== null && currentColumns !== expectedColumns) {\n return false\n }\n if (currentRow !== null) {\n expectedColumns = currentColumns\n }\n currentRow = row\n currentColumns = 0\n }\n const colSpan = node.__colSpan\n for (let j = 0; j < colSpan; j++) {\n if (currentRows[currentColumns + j] === undefined) {\n currentRows[currentColumns + j] = 0\n }\n currentRows[currentColumns + j] += node.__rowSpan\n }\n currentColumns += colSpan\n }\n }\n return (\n (expectedColumns === null || currentColumns === expectedColumns) &&\n currentRows.every((v) => v === currentRows[0])\n )\n}\n\nfunction $canUnmerge(): boolean {\n const selection = $getSelection()\n if (\n ($isRangeSelection(selection) && !selection.isCollapsed()) ||\n ($isTableSelection(selection) && !selection.anchor.is(selection.focus)) ||\n (!$isRangeSelection(selection) && !$isTableSelection(selection))\n ) {\n return false\n }\n const [cell] = $getNodeTriplet(selection.anchor)\n return cell.__colSpan > 1 || cell.__rowSpan > 1\n}\n\nfunction $cellContainsEmptyParagraph(cell: TableCellNode): boolean {\n if (cell.getChildrenSize() !== 1) {\n return false\n }\n const firstChild = cell.getFirstChildOrThrow()\n if (!$isParagraphNode(firstChild) || !firstChild.isEmpty()) {\n return false\n }\n return true\n}\n\nfunction $selectLastDescendant(node: ElementNode): void {\n const lastDescendant = node.getLastDescendant()\n if ($isTextNode(lastDescendant)) {\n lastDescendant.select()\n } else if ($isElementNode(lastDescendant)) {\n lastDescendant.selectEnd()\n } else if (lastDescendant !== null) {\n lastDescendant.selectNext()\n }\n}\n\ntype TableCellActionMenuProps = Readonly<{\n cellMerge: boolean\n contextRef: { current: HTMLElement | null }\n onClose: () => void\n setIsMenuOpen: (isOpen: boolean) => void\n tableCellNode: TableCellNode\n}>\n\nfunction TableActionMenu({\n cellMerge,\n contextRef,\n onClose,\n setIsMenuOpen,\n tableCellNode: _tableCellNode,\n}: TableCellActionMenuProps) {\n const [editor] = useLexicalComposerContext()\n const dropDownRef = useRef<HTMLDivElement | null>(null)\n const [tableCellNode, updateTableCellNode] = useState(_tableCellNode)\n const [selectionCounts, updateSelectionCounts] = useState({\n columns: 1,\n rows: 1,\n })\n const [canMergeCells, setCanMergeCells] = useState(false)\n const [canUnmergeCell, setCanUnmergeCell] = useState(false)\n const { y } = useScrollInfo()\n\n useEffect(() => {\n return editor.registerMutationListener(TableCellNode, (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 }, [editor, tableCellNode])\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n // Merge cells\n if ($isTableSelection(selection)) {\n const currentSelectionCounts = computeSelectionCount(selection)\n updateSelectionCounts(computeSelectionCount(selection))\n setCanMergeCells(\n isTableSelectionRectangular(selection) &&\n (currentSelectionCounts.columns > 1 || currentSelectionCounts.rows > 1),\n )\n }\n // Unmerge cell\n setCanUnmergeCell($canUnmerge())\n })\n }, [editor])\n\n useEffect(() => {\n const menuButtonElement = contextRef.current\n const dropDownElement = dropDownRef.current\n const rootElement = editor.getRootElement()\n\n if (menuButtonElement != null && dropDownElement != null && rootElement != null) {\n const rootEleRect = rootElement.getBoundingClientRect()\n const menuButtonRect = menuButtonElement.getBoundingClientRect()\n dropDownElement.style.opacity = '1'\n const dropDownElementRect = dropDownElement.getBoundingClientRect()\n const margin = 5\n let leftPosition = menuButtonRect.right + margin\n if (\n leftPosition + dropDownElementRect.width > window.innerWidth ||\n leftPosition + dropDownElementRect.width > rootEleRect.right\n ) {\n const position = menuButtonRect.left - dropDownElementRect.width - margin\n leftPosition = (position < 0 ? margin : position) + window.pageXOffset\n }\n dropDownElement.style.left = `${leftPosition + window.pageXOffset}px`\n\n let topPosition = menuButtonRect.top\n if (topPosition + dropDownElementRect.height > window.innerHeight) {\n const position = menuButtonRect.bottom - dropDownElementRect.height\n topPosition = (position < 0 ? margin : position) + window.pageYOffset\n }\n dropDownElement.style.top = `${topPosition}px`\n }\n }, [contextRef, dropDownRef, editor, y])\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (\n dropDownRef.current != null &&\n contextRef.current != null &&\n !dropDownRef.current.contains(event.target as Node) &&\n !contextRef.current.contains(event.target as Node)\n ) {\n setIsMenuOpen(false)\n }\n }\n\n window.addEventListener('click', handleClickOutside)\n\n return () => window.removeEventListener('click', handleClickOutside)\n }, [setIsMenuOpen, contextRef])\n\n const clearTableSelection = useCallback(() => {\n editor.update(() => {\n if (tableCellNode.isAttached()) {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n const tableElement = editor.getElementByKey(\n tableNode.getKey(),\n ) as HTMLTableElementWithWithTableSelectionState\n\n if (!tableElement) {\n throw new Error('Expected to find tableElement in DOM')\n }\n\n const tableSelection = getTableObserverFromTableElement(tableElement)\n if (tableSelection !== null) {\n tableSelection.clearHighlight()\n }\n\n tableNode.markDirty()\n updateTableCellNode(tableCellNode.getLatest())\n }\n\n const rootNode = $getRoot()\n rootNode.selectStart()\n })\n }, [editor, tableCellNode])\n\n const mergeTableCellsAtSelection = () => {\n editor.update(() => {\n const selection = $getSelection()\n if ($isTableSelection(selection)) {\n const { columns, rows } = computeSelectionCount(selection)\n const nodes = selection.getNodes()\n let firstCell: TableCellNode | null = null\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i]\n if ($isTableCellNode(node)) {\n if (firstCell === null) {\n node.setColSpan(columns).setRowSpan(rows)\n firstCell = node\n const isEmpty = $cellContainsEmptyParagraph(node)\n let firstChild\n if (isEmpty && $isParagraphNode((firstChild = node.getFirstChild()))) {\n firstChild.remove()\n }\n } else if ($isTableCellNode(firstCell)) {\n const isEmpty = $cellContainsEmptyParagraph(node)\n if (!isEmpty) {\n firstCell.append(...node.getChildren())\n }\n node.remove()\n }\n }\n }\n if (firstCell !== null) {\n if (firstCell.getChildrenSize() === 0) {\n firstCell.append($createParagraphNode())\n }\n $selectLastDescendant(firstCell)\n }\n onClose()\n }\n })\n }\n\n const unmergeTableCellsAtSelection = () => {\n editor.update(() => {\n $unmergeCell()\n })\n }\n\n const insertTableRowAtSelection = useCallback(\n (shouldInsertAfter: boolean) => {\n editor.update(() => {\n $insertTableRow__EXPERIMENTAL(shouldInsertAfter)\n onClose()\n })\n },\n [editor, onClose],\n )\n\n const insertTableColumnAtSelection = useCallback(\n (shouldInsertAfter: boolean) => {\n editor.update(() => {\n for (let i = 0; i < selectionCounts.columns; i++) {\n $insertTableColumn__EXPERIMENTAL(shouldInsertAfter)\n }\n onClose()\n })\n },\n [editor, onClose, selectionCounts.columns],\n )\n\n const deleteTableRowAtSelection = useCallback(() => {\n editor.update(() => {\n $deleteTableRow__EXPERIMENTAL()\n onClose()\n })\n }, [editor, onClose])\n\n const deleteTableAtSelection = useCallback(() => {\n editor.update(() => {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n tableNode.remove()\n\n clearTableSelection()\n onClose()\n })\n }, [editor, tableCellNode, clearTableSelection, onClose])\n\n const deleteTableColumnAtSelection = useCallback(() => {\n editor.update(() => {\n $deleteTableColumn__EXPERIMENTAL()\n onClose()\n })\n }, [editor, onClose])\n\n const toggleTableRowIsHeader = useCallback(() => {\n editor.update(() => {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n\n const tableRowIndex = $getTableRowIndexFromTableCellNode(tableCellNode)\n\n const tableRows = tableNode.getChildren()\n\n if (tableRowIndex >= tableRows.length || tableRowIndex < 0) {\n throw new Error('Expected table cell to be inside of table row.')\n }\n\n const tableRow = tableRows[tableRowIndex]\n\n if (!$isTableRowNode(tableRow)) {\n throw new Error('Expected table row')\n }\n\n tableRow.getChildren().forEach((tableCell) => {\n if (!$isTableCellNode(tableCell)) {\n throw new Error('Expected table cell')\n }\n\n tableCell.toggleHeaderStyle(TableCellHeaderStates.ROW)\n })\n\n clearTableSelection()\n onClose()\n })\n }, [editor, tableCellNode, clearTableSelection, onClose])\n\n const toggleTableColumnIsHeader = useCallback(() => {\n editor.update(() => {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n\n const tableColumnIndex = $getTableColumnIndexFromTableCellNode(tableCellNode)\n\n const tableRows = tableNode.getChildren<TableRowNode>()\n const maxRowsLength = Math.max(...tableRows.map((row) => row.getChildren().length))\n\n if (tableColumnIndex >= maxRowsLength || tableColumnIndex < 0) {\n throw new Error('Expected table cell to be inside of table row.')\n }\n\n for (let r = 0; r < tableRows.length; r++) {\n const tableRow = tableRows[r]\n\n if (!$isTableRowNode(tableRow)) {\n throw new Error('Expected table row')\n }\n\n const tableCells = tableRow.getChildren()\n if (tableColumnIndex >= tableCells.length) {\n // if cell is outside of bounds for the current row (for example various merge cell cases) we shouldn't highlight it\n continue\n }\n\n const tableCell = tableCells[tableColumnIndex]\n\n if (!$isTableCellNode(tableCell)) {\n throw new Error('Expected table cell')\n }\n\n tableCell.toggleHeaderStyle(TableCellHeaderStates.COLUMN)\n }\n\n clearTableSelection()\n onClose()\n })\n }, [editor, tableCellNode, clearTableSelection, onClose])\n\n let mergeCellButton: JSX.Element | null = null\n if (cellMerge) {\n if (canMergeCells) {\n mergeCellButton = (\n <button\n className=\"item\"\n data-test-id=\"table-merge-cells\"\n onClick={() => mergeTableCellsAtSelection()}\n type=\"button\"\n >\n Merge cells\n </button>\n )\n } else if (canUnmergeCell) {\n mergeCellButton = (\n <button\n className=\"item\"\n data-test-id=\"table-unmerge-cells\"\n onClick={() => unmergeTableCellsAtSelection()}\n type=\"button\"\n >\n Unmerge cells\n </button>\n )\n }\n }\n\n return createPortal(\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions,jsx-a11y/click-events-have-key-events\n <div\n className=\"table-action-menu-dropdown\"\n onClick={(e) => {\n e.stopPropagation()\n }}\n ref={dropDownRef}\n >\n {mergeCellButton ? (\n <React.Fragment>\n {mergeCellButton}\n <hr />\n </React.Fragment>\n ) : null}\n\n <button\n className=\"item\"\n data-test-id=\"table-insert-row-above\"\n onClick={() => insertTableRowAtSelection(false)}\n type=\"button\"\n >\n <span className=\"text\">\n Insert {selectionCounts.rows === 1 ? 'row' : `${selectionCounts.rows} rows`} above\n </span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-insert-row-below\"\n onClick={() => insertTableRowAtSelection(true)}\n type=\"button\"\n >\n <span className=\"text\">\n Insert {selectionCounts.rows === 1 ? 'row' : `${selectionCounts.rows} rows`} below\n </span>\n </button>\n <hr />\n <button\n className=\"item\"\n data-test-id=\"table-insert-column-before\"\n onClick={() => insertTableColumnAtSelection(false)}\n type=\"button\"\n >\n <span className=\"text\">\n Insert {selectionCounts.columns === 1 ? 'column' : `${selectionCounts.columns} columns`}{' '}\n left\n </span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-insert-column-after\"\n onClick={() => insertTableColumnAtSelection(true)}\n type=\"button\"\n >\n <span className=\"text\">\n Insert {selectionCounts.columns === 1 ? 'column' : `${selectionCounts.columns} columns`}{' '}\n right\n </span>\n </button>\n <hr />\n <button\n className=\"item\"\n data-test-id=\"table-delete-columns\"\n onClick={() => deleteTableColumnAtSelection()}\n type=\"button\"\n >\n <span className=\"text\">Delete column</span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-delete-rows\"\n onClick={() => deleteTableRowAtSelection()}\n type=\"button\"\n >\n <span className=\"text\">Delete row</span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-delete\"\n onClick={() => deleteTableAtSelection()}\n type=\"button\"\n >\n <span className=\"text\">Delete table</span>\n </button>\n <hr />\n <button className=\"item\" onClick={() => toggleTableRowIsHeader()} type=\"button\">\n <span className=\"text\">\n {(tableCellNode.__headerState & TableCellHeaderStates.ROW) === TableCellHeaderStates.ROW\n ? 'Remove'\n : 'Add'}{' '}\n row header\n </span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-column-header\"\n onClick={() => toggleTableColumnIsHeader()}\n type=\"button\"\n >\n <span className=\"text\">\n {(tableCellNode.__headerState & TableCellHeaderStates.COLUMN) ===\n TableCellHeaderStates.COLUMN\n ? 'Remove'\n : 'Add'}{' '}\n column header\n </span>\n </button>\n </div>,\n document.body,\n )\n}\n\nfunction TableCellActionMenuContainer({\n anchorElem,\n cellMerge,\n}: {\n anchorElem: HTMLElement\n cellMerge: boolean\n}): JSX.Element {\n const [editor] = useLexicalComposerContext()\n\n const menuButtonRef = useRef(null)\n const menuRootRef = useRef(null)\n const [isMenuOpen, setIsMenuOpen] = useState(false)\n\n const [tableCellNode, setTableMenuCellNode] = useState<TableCellNode | null>(null)\n\n const $moveMenu = useCallback(() => {\n const menu = menuButtonRef.current\n const selection = $getSelection()\n const nativeSelection = window.getSelection()\n const activeElement = document.activeElement\n\n if (selection == null || menu == null) {\n setTableMenuCellNode(null)\n return\n }\n\n const rootElement = editor.getRootElement()\n\n if (\n $isRangeSelection(selection) &&\n rootElement !== null &&\n nativeSelection !== null &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n const tableCellNodeFromSelection = $getTableCellNodeFromLexicalNode(\n selection.anchor.getNode(),\n )\n\n if (tableCellNodeFromSelection == null) {\n setTableMenuCellNode(null)\n return\n }\n\n const tableCellParentNodeDOM = editor.getElementByKey(tableCellNodeFromSelection.getKey())\n\n if (tableCellParentNodeDOM == null) {\n setTableMenuCellNode(null)\n return\n }\n\n setTableMenuCellNode(tableCellNodeFromSelection)\n } else if (!activeElement) {\n setTableMenuCellNode(null)\n }\n }, [editor])\n\n useEffect(() => {\n return editor.registerUpdateListener(() => {\n editor.getEditorState().read(() => {\n $moveMenu()\n })\n })\n })\n\n useEffect(() => {\n const menuButtonDOM = menuButtonRef.current as HTMLButtonElement | null\n\n if (menuButtonDOM != null && tableCellNode != null) {\n const tableCellNodeDOM = editor.getElementByKey(tableCellNode.getKey())\n\n if (tableCellNodeDOM != null) {\n const tableCellRect = tableCellNodeDOM.getBoundingClientRect()\n const menuRect = menuButtonDOM.getBoundingClientRect()\n const anchorRect = anchorElem.getBoundingClientRect()\n\n const top = tableCellRect.top - anchorRect.top + 4\n const left = tableCellRect.right - menuRect.width - 10 - anchorRect.left\n\n menuButtonDOM.style.opacity = '1'\n menuButtonDOM.style.transform = `translate(${left}px, ${top}px)`\n } else {\n menuButtonDOM.style.opacity = '0'\n menuButtonDOM.style.transform = 'translate(-10000px, -10000px)'\n }\n }\n }, [menuButtonRef, tableCellNode, editor, anchorElem])\n\n const prevTableCellDOM = useRef(tableCellNode)\n\n useEffect(() => {\n if (prevTableCellDOM.current !== tableCellNode) {\n setIsMenuOpen(false)\n }\n\n prevTableCellDOM.current = tableCellNode\n }, [prevTableCellDOM, tableCellNode])\n\n return (\n <div className=\"table-cell-action-button-container\" ref={menuButtonRef}>\n {tableCellNode != null && (\n <React.Fragment>\n <button\n className=\"table-cell-action-button\"\n onClick={(e) => {\n e.stopPropagation()\n setIsMenuOpen(!isMenuOpen)\n }}\n ref={menuRootRef}\n type=\"button\"\n >\n <MeatballsIcon />\n </button>\n {isMenuOpen && (\n <TableActionMenu\n cellMerge={cellMerge}\n contextRef={menuRootRef}\n onClose={() => setIsMenuOpen(false)}\n setIsMenuOpen={setIsMenuOpen}\n tableCellNode={tableCellNode}\n />\n )}\n </React.Fragment>\n )}\n </div>\n )\n}\n\nexport const TableActionMenuPlugin: PluginComponentWithAnchor = ({ anchorElem }) => {\n const isEditable = useLexicalEditable()\n return createPortal(\n isEditable ? (\n <TableCellActionMenuContainer anchorElem={anchorElem ?? document.body} cellMerge />\n ) : null,\n anchorElem ?? document.body,\n )\n}\n", "import 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, TableMapValueType } 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} 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, PluginComponentWithAnchor } from '../../../typesClient.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 = 50\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\n const mouseStartPosRef = useRef<MousePosition | null>(null)\n const [mouseCurrentPos, updateMouseCurrentPos] = useState<MousePosition | null>(null)\n\n const [activeCell, updateActiveCell] = useState<TableDOMCell | null>(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 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 document.addEventListener('mousemove', onMouseMove)\n document.addEventListener('mousedown', onMouseDown)\n document.addEventListener('mouseup', onMouseUp)\n\n return () => {\n document.removeEventListener('mousemove', onMouseMove)\n document.removeEventListener('mousedown', onMouseDown)\n document.removeEventListener('mouseup', onMouseUp)\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 = $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 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 getCellNodeWidth = (\n cell: TableCellNode,\n activeEditor: LexicalEditor,\n ): number | undefined => {\n const width = cell.getWidth()\n if (width !== undefined) {\n return width\n }\n\n const domCellNode = activeEditor.getElementByKey(cell.getKey())\n if (domCellNode == null) {\n return undefined\n }\n const computedStyle = getComputedStyle(domCellNode)\n return (\n domCellNode.clientWidth -\n parseFloat(computedStyle.paddingLeft) -\n parseFloat(computedStyle.paddingRight)\n )\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 for (let row = 0; row < tableMap.length; row++) {\n const cell: TableMapValueType = tableMap[row][columnIndex]\n if (\n cell.startRow === row &&\n (columnIndex === tableMap[row].length - 1 ||\n tableMap[row][columnIndex].cell !== tableMap[row][columnIndex + 1].cell)\n ) {\n const width = getCellNodeWidth(cell.cell, editor)\n if (width === undefined) {\n continue\n }\n const newWidth = Math.max(width + widthChange, MIN_COLUMN_WIDTH)\n cell.cell.setWidth(newWidth)\n }\n }\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=\"TableCellResizer__resizer TableCellResizer__ui\"\n onMouseDown={toggleResize('right')}\n style={resizerStyles.right || undefined}\n />\n <div\n className=\"TableCellResizer__resizer 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 {\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 { useModal } 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 { invariant } from '../../../../lexical/utils/invariant.js'\nimport { FieldsDrawer } from '../../../../utilities/fieldsDrawer/Drawer.js'\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})\nconst drawerSlug = 'lexical-table-create'\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 { closeModal, toggleModal } = useModal()\n\n useEffect(() => {\n if (!editor.hasNodes([TableNode])) {\n invariant(false, 'TablePlugin: TableNode is not registered on editor')\n }\n\n return mergeRegister(\n editor.registerCommand(\n OPEN_TABLE_DRAWER_COMMAND,\n () => {\n let rangeSelection: RangeSelection | null = null\n\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n rangeSelection = selection\n }\n })\n\n if (rangeSelection) {\n toggleModal(drawerSlug)\n }\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n )\n }, [cellContext, editor, toggleModal])\n\n return (\n <React.Fragment>\n <FieldsDrawer\n drawerSlug={drawerSlug}\n drawerTitle=\"Create Table\"\n featureKey=\"experimental_table\"\n handleDrawerSubmit={(_fields, data) => {\n closeModal(drawerSlug)\n\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 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", "import 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 { UploadFeaturePropsClient } from '../feature.client.js'\nimport type { UploadData } from '../nodes/UploadNode.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 { collections } = 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 .getParent()\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 { useListDrawer } from '@payloadcms/ui'\nimport { $getNodeByKey, COMMAND_PRIORITY_EDITOR } from 'lexical'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport { EnabledRelationshipsCondition } from '../../relationship/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 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 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 [ListDrawer, ListDrawerToggler, { closeDrawer, openDrawer }] = useListDrawer({\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 openDrawer()\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n )\n }, [editor, openDrawer])\n\n const onSelect = useCallback(\n ({ collectionSlug, docID }) => {\n insertUpload({\n editor,\n relationTo: collectionSlug,\n replaceNodeKey,\n value: docID,\n })\n closeDrawer()\n },\n [editor, closeDrawer, 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'\nimport type { EditorConfig as LexicalEditorConfig } from 'lexical'\nimport type { FormFieldBase } from 'payload'\n\nimport { ShimmerEffect, useClientFunctions, useFieldProps } from '@payloadcms/ui'\nimport React, { Suspense, lazy, useEffect, useState } from 'react'\n\nimport type { FeatureProviderClient } from '../features/typesClient.js'\nimport type { SanitizedClientEditorConfig } from '../lexical/config/types.js'\nimport type { GeneratedFeatureProviderComponent, LexicalFieldAdminProps } 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<\n {\n admin?: LexicalFieldAdminProps\n lexicalEditorConfig: LexicalEditorConfig\n name: string\n richTextComponentMap: Map<string, React.ReactNode>\n } & FormFieldBase\n> = (props) => {\n const { admin, lexicalEditorConfig, richTextComponentMap } = props\n const { schemaPath } = useFieldProps()\n const clientFunctions = useClientFunctions()\n const [hasLoadedFeatures, setHasLoadedFeatures] = useState(false)\n\n const [featureProviders, setFeatureProviders] = useState<\n FeatureProviderClient<unknown, unknown>[]\n >([])\n\n const [finalSanitizedEditorConfig, setFinalSanitizedEditorConfig] =\n useState<SanitizedClientEditorConfig>(null)\n\n let featureProviderComponents: GeneratedFeatureProviderComponent[] = richTextComponentMap.get(\n 'features',\n ) as GeneratedFeatureProviderComponent[]\n // order by order\n featureProviderComponents = featureProviderComponents.sort((a, b) => a.order - b.order)\n\n let featureProvidersAndComponentsToLoad = 0 // feature providers and components\n for (const featureProvider of featureProviderComponents) {\n const featureComponentKeys = Array.from(richTextComponentMap.keys()).filter((key) =>\n key.startsWith(\n `lexical_internal_feature.${featureProvider.key}.lexical_internal_components.`,\n ),\n )\n\n featureProvidersAndComponentsToLoad += 1\n featureProvidersAndComponentsToLoad += featureComponentKeys.length\n }\n\n useEffect(() => {\n if (!hasLoadedFeatures) {\n const featureProvidersLocal: FeatureProviderClient<unknown, unknown>[] = []\n let featureProvidersAndComponentsLoaded = 0\n\n Object.entries(clientFunctions).forEach(([key, plugin]) => {\n if (key.startsWith(`lexicalFeature.${schemaPath}.`)) {\n if (!key.includes('.lexical_internal_components.')) {\n featureProvidersLocal.push(plugin)\n }\n\n featureProvidersAndComponentsLoaded++\n }\n })\n\n if (featureProvidersAndComponentsLoaded === featureProvidersAndComponentsToLoad) {\n setFeatureProviders(featureProvidersLocal)\n setHasLoadedFeatures(true)\n\n /**\n * Loaded feature provided => create the final sanitized editor config\n */\n\n const resolvedClientFeatures = loadClientFeatures({\n clientFunctions,\n schemaPath,\n unSanitizedEditorConfig: {\n features: featureProvidersLocal,\n lexical: lexicalEditorConfig,\n },\n })\n\n setFinalSanitizedEditorConfig(\n sanitizeClientEditorConfig(\n lexicalEditorConfig ? lexicalEditorConfig : defaultEditorLexicalConfig,\n resolvedClientFeatures,\n admin,\n ),\n )\n }\n }\n }, [\n admin,\n hasLoadedFeatures,\n clientFunctions,\n schemaPath,\n featureProviderComponents.length,\n featureProviders,\n finalSanitizedEditorConfig,\n lexicalEditorConfig,\n featureProvidersAndComponentsToLoad,\n ])\n\n if (!hasLoadedFeatures) {\n return (\n <React.Fragment>\n {Array.isArray(featureProviderComponents) &&\n featureProviderComponents.map((featureProvider) => {\n // get all components starting with key feature.${FeatureProvider.key}.components.{featureComponentKey}\n const featureComponentKeys = Array.from(richTextComponentMap.keys()).filter((key) =>\n key.startsWith(\n `lexical_internal_feature.${featureProvider.key}.lexical_internal_components.`,\n ),\n )\n const featureComponents: React.ReactNode[] = featureComponentKeys.map((key) => {\n return richTextComponentMap.get(key)\n }) // TODO: Type better\n\n return (\n <React.Fragment key={featureProvider.key}>\n {featureComponents?.length\n ? featureComponents.map((FeatureComponent) => {\n return FeatureComponent\n })\n : null}\n {featureProvider.ClientFeature}\n </React.Fragment>\n )\n })}\n </React.Fragment>\n )\n }\n\n return (\n <Suspense fallback={<ShimmerEffect height=\"35vh\" />}>\n {finalSanitizedEditorConfig && (\n <RichTextEditor {...props} editorConfig={finalSanitizedEditorConfig} />\n )}\n </Suspense>\n )\n}\n", "export function joinClasses(...args: Array<boolean | null | string | undefined>): string {\n return args.filter(Boolean).join(' ')\n}\n", "type 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"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["slashMenuBasicGroupWithItems", "items", "i18n", "createHeadlessEditor", "useClientFunctions", "useTableCell", "$getRoot", "React", "useEffect", "useState", "LexicalEditorTheme", "defaultEditorLexicalConfig", "LexicalEditorTheme", "loadClientFeatures", "clientFunctions", "schemaPath", "unSanitizedEditorConfig", "featureProvider", "a", "b", "featureProviderMap", "f", "resolvedFeatures", "loaded", "relevantClientFunctions", "key", "plugin", "featureComponentKey", "feature", "sanitizeClientFeatures", "features", "sanitized", "feature", "plugin", "i", "group", "foundGroup", "sanitizedGroup", "optionGroup", "a", "b", "sanitizeClientEditorConfig", "lexical", "resolvedClientFeatureMap", "admin", "jsx", "jsxs", "RichTextCell", "props", "admin", "lexicalEditorConfig", "richTextComponentMap", "preview", "setPreview", "React", "cellData", "schemaPath", "useTableCell", "clientFunctions", "useClientFunctions", "hasLoadedFeatures", "setHasLoadedFeatures", "useState", "featureProviders", "setFeatureProviders", "finalSanitizedEditorConfig", "setFinalSanitizedEditorConfig", "featureProviderComponents", "a", "b", "featureProvidersAndComponentsToLoad", "featureProvider", "featureComponentKeys", "key", "useEffect", "featureProvidersLocal", "featureProvidersAndComponentsLoaded", "plugin", "resolvedClientFeatures", "loadClientFeatures", "sanitizeClientEditorConfig", "defaultEditorLexicalConfig", "dataToUse", "hook", "headlessEditor", "createHeadlessEditor", "getEnabledNodes", "textContent", "$getRoot", "featureComponents", "FeatureComponent", "$isElementNode", "$isRangeSelection", "FORMAT_ELEMENT_COMMAND", "jsx", "jsxs", "AlignCenterIcon", "jsx", "jsxs", "AlignJustifyIcon", "jsx", "jsxs", "AlignLeftIcon", "jsx", "jsxs", "AlignRightIcon", "useAddClientFunction", "useFieldProps", "useTableCell", "useLexicalFeature", "featureKey", "feature", "schemaPathFromFieldProps", "schemaPath", "createClientComponent", "clientFeature", "props", "useLexicalFeature", "createClientFeature", "feature", "createClientComponent", "props", "featureProviderClient", "clientFunctions", "featureProviderMap", "resolvedFeatures", "unSanitizedEditorConfig", "toReturn", "toolbarAlignGroupWithItems", "items", "AlignLeftIcon", "toolbarGroups", "toolbarAlignGroupWithItems", "AlignLeftIcon", "selection", "$isRangeSelection", "node", "$isElementNode", "parent", "i18n", "editor", "FORMAT_ELEMENT_COMMAND", "AlignCenterIcon", "AlignRightIcon", "AlignJustifyIcon", "AlignFeatureClient", "createClientFeature", "$createQuoteNode", "$isQuoteNode", "QuoteNode", "$setBlocksType", "$getSelection", "$isRangeSelection", "jsx", "BlockquoteIcon", "jsx", "TextIcon", "toolbarTextDropdownGroupWithItems", "items", "TextIcon", "$createQuoteNode", "$isQuoteNode", "QuoteNode", "$createLineBreakNode", "MarkdownTransformer", "node", "exportChildren", "lines", "output", "line", "parentNode", "children", "_match", "isImport", "previousNode", "toolbarGroups", "toolbarTextDropdownGroupWithItems", "BlockquoteIcon", "selection", "$isRangeSelection", "node", "$isQuoteNode", "i18n", "editor", "$getSelection", "$setBlocksType", "$createQuoteNode", "BlockquoteFeatureClient", "createClientFeature", "MarkdownTransformer", "QuoteNode", "slashMenuBasicGroupWithItems", "getTranslation", "jsx", "jsxs", "BlockIcon", "jsx", "InlineBlocksIcon", "DecoratorBlockNode", "ObjectID", "deepCopyObjectSimple", "React", "jsx", "BlockComponent", "module", "BlockNode", "_BlockNode", "fields", "format", "key", "node", "serializedNode", "$createBlockNode", "editor", "config", "element", "text", "fieldsCopy", "writable", "$isBlockNode", "useLexicalComposerContext", "$insertNodeToNearestRoot", "$wrapNodeInElement", "mergeRegister", "getTranslation", "useModal", "useTranslation", "$createParagraphNode", "$getNodeByKey", "$getPreviousSelection", "$getSelection", "$insertNodes", "$isParagraphNode", "$isRangeSelection", "$isRootOrShadowRoot", "COMMAND_PRIORITY_EDITOR", "useEffect", "useState", "jsx", "drawerSlug", "BlocksPlugin", "editor", "useLexicalComposerContext", "closeModal", "toggleModal", "useModal", "blockFields", "setBlockFields", "useState", "blockType", "setBlockType", "targetNodeKey", "setTargetNodeKey", "i18n", "t", "useTranslation", "editorConfig", "useEditorConfigContext", "reducedBlock", "block", "useEffect", "BlockNode", "mergeRegister", "INSERT_BLOCK_COMMAND", "payload", "selection", "$getSelection", "$getPreviousSelection", "$isRangeSelection", "blockNode", "$createBlockNode", "$insertNodeToNearestRoot", "focus", "focusNode", "$isParagraphNode", "node", "COMMAND_PRIORITY_EDITOR", "INSERT_INLINE_BLOCK_COMMAND", "fields", "$getNodeByKey", "inlineBlockNode", "$createInlineBlockNode", "$insertNodes", "$isRootOrShadowRoot", "$wrapNodeInElement", "$createParagraphNode", "OPEN_INLINE_BLOCK_DRAWER_COMMAND", "nodeKey", "rangeSelection", "blockDisplayName", "getTranslation", "FieldsDrawer", "_fields", "data", "BlocksFeatureClient", "createClientFeature", "props", "BlockNode", "InlineBlockNode", "BlocksPlugin", "block", "BlockIcon", "i18n", "getTranslation", "editor", "INSERT_BLOCK_COMMAND", "inlineBlock", "InlineBlocksIcon", "OPEN_INLINE_BLOCK_DRAWER_COMMAND", "index", "useLexicalComposerContext", "$createParagraphNode", "$createTextNode", "$getRoot", "React", "useCallback", "useEffect", "useLayoutEffect", "useRef", "useState", "CAN_USE_DOM", "documentMode", "CAN_USE_DOM", "IS_APPLE", "IS_FIREFOX", "CAN_USE_BEFORE_INPUT", "IS_SAFARI", "IS_IOS", "IS_ANDROID", "IS_WINDOWS", "IS_CHROME", "IS_APPLE_WEBKIT", "jsx", "jsxs", "copy", "text", "textArea", "result", "error", "download", "filename", "a", "formatStep", "step", "formattedStep", "name", "value", "isSelectAll", "event", "IS_APPLE", "sanitizeSelection", "selection", "anchorNode", "focusNode", "anchorOffset", "focusOffset", "getPathFromNodeToEditor", "node", "rootElement", "currentNode", "path", "keyPresses", "useTestRecorder", "editor", "steps", "setSteps", "useState", "isRecording", "setIsRecording", "setCurrentInnerHTML", "templatedTest", "setTemplatedTest", "previousSelectionRef", "useRef", "skipNextSelectionChangeRef", "preRef", "getCurrentEditor", "useCallback", "generateTestContent", "browserSelection", "pushStep", "currentSteps", "currentIndex", "lastStep", "useLayoutEffect", "onKeyDown", "key", "onKeyUp", "prevRootElement", "useEffect", "testContent", "dirtyElements", "dirtyLeaves", "editorState", "currentSelection", "previousSelection", "skipNextSelectionChange", "toggleEditorSelection", "currentEditor", "root", "$getRoot", "$createTextNode", "$createParagraphNode", "currentIsRecording", "onSnapshotClick", "anchorPath", "focusPath", "onCopyClick", "onDownloadClick", "e", "TestRecorderPlugin", "useLexicalComposerContext", "testRecorderButton", "testRecorderOutput", "TestRecorderFeatureClient", "createClientFeature", "TestRecorderPlugin", "useLexicalComposerContext", "TreeView", "jsx", "TreeViewPlugin", "editor", "TreeViewFeatureClient", "createClientFeature", "TreeViewPlugin", "$isRangeSelection", "FORMAT_TEXT_COMMAND", "jsx", "BoldIcon", "toolbarFormatGroupWithItems", "items", "BOLD_ITALIC_STAR", "BOLD_ITALIC_UNDERSCORE", "BOLD_STAR", "BOLD_UNDERSCORE", "toolbarGroups", "toolbarFormatGroupWithItems", "BoldIcon", "selection", "$isRangeSelection", "editor", "FORMAT_TEXT_COMMAND", "BoldFeatureClient", "createClientFeature", "featureProviderMap", "markdownTransformers", "BOLD_STAR", "BOLD_UNDERSCORE", "BOLD_ITALIC_UNDERSCORE", "BOLD_ITALIC_STAR", "$isRangeSelection", "FORMAT_TEXT_COMMAND", "jsx", "jsxs", "CodeIcon", "INLINE_CODE", "toolbarGroups", "toolbarFormatGroupWithItems", "CodeIcon", "selection", "$isRangeSelection", "editor", "FORMAT_TEXT_COMMAND", "InlineCodeFeatureClient", "createClientFeature", "INLINE_CODE", "$isRangeSelection", "FORMAT_TEXT_COMMAND", "jsx", "ItalicIcon", "ITALIC_STAR", "ITALIC_UNDERSCORE", "toolbarGroups", "toolbarFormatGroupWithItems", "ItalicIcon", "selection", "$isRangeSelection", "editor", "FORMAT_TEXT_COMMAND", "ItalicFeatureClient", "createClientFeature", "ITALIC_STAR", "ITALIC_UNDERSCORE", "$isRangeSelection", "FORMAT_TEXT_COMMAND", "jsx", "jsxs", "StrikethroughIcon", "STRIKETHROUGH", "toolbarGroups", "toolbarFormatGroupWithItems", "StrikethroughIcon", "selection", "$isRangeSelection", "editor", "FORMAT_TEXT_COMMAND", "StrikethroughFeatureClient", "createClientFeature", "STRIKETHROUGH", "$isRangeSelection", "FORMAT_TEXT_COMMAND", "jsx", "SubscriptIcon", "toolbarGroups", "toolbarFormatGroupWithItems", "SubscriptIcon", "selection", "$isRangeSelection", "editor", "FORMAT_TEXT_COMMAND", "SubscriptFeatureClient", "createClientFeature", "$isRangeSelection", "FORMAT_TEXT_COMMAND", "jsx", "SuperscriptIcon", "toolbarGroups", "toolbarFormatGroupWithItems", "SuperscriptIcon", "selection", "$isRangeSelection", "editor", "FORMAT_TEXT_COMMAND", "SuperscriptFeatureClient", "createClientFeature", "$isRangeSelection", "FORMAT_TEXT_COMMAND", "jsx", "jsxs", "UnderlineIcon", "toolbarGroups", "toolbarFormatGroupWithItems", "UnderlineIcon", "selection", "$isRangeSelection", "editor", "FORMAT_TEXT_COMMAND", "UnderlineFeatureClient", "createClientFeature", "$createHeadingNode", "$isHeadingNode", "HeadingNode", "$setBlocksType", "$getSelection", "$isRangeSelection", "jsx", "H1Icon", "jsx", "H2Icon", "jsx", "H3Icon", "jsx", "H4Icon", "jsx", "H5Icon", "jsx", "H6Icon", "$createHeadingNode", "$isHeadingNode", "HeadingNode", "createBlockNode", "createNode", "parentNode", "children", "match", "node", "MarkdownTransformer", "enabledHeadingSizes", "pattern", "tag", "size", "regExp", "HeadingNode", "node", "exportChildren", "$isHeadingNode", "level", "createBlockNode", "match", "$createHeadingNode", "$setHeading", "headingSize", "selection", "$getSelection", "$setBlocksType", "$createHeadingNode", "iconImports", "H1Icon", "H2Icon", "H3Icon", "H4Icon", "H5Icon", "H6Icon", "HeadingFeatureClient", "createClientFeature", "props", "enabledHeadingSizes", "toolbarGroups", "toolbarTextDropdownGroupWithItems", "i", "$isRangeSelection", "node", "$isHeadingNode", "parent", "i18n", "editor", "MarkdownTransformer", "HeadingNode", "slashMenuBasicGroupWithItems", "$isNodeSelection", "jsx", "HorizontalRuleIcon", "jsx", "jsxs", "AddIcon", "toolbarAddDropdownGroupWithItems", "items", "AddIcon", "MarkdownTransformer", "HorizontalRuleNode", "node", "exportChildren", "$isHorizontalRuleNode", "parentNode", "$createHorizontalRuleNode", "useLexicalComposerContext", "$insertNodeToNearestRoot", "$getSelection", "$isRangeSelection", "COMMAND_PRIORITY_EDITOR", "useEffect", "HorizontalRulePlugin", "editor", "useLexicalComposerContext", "useEffect", "INSERT_HORIZONTAL_RULE_COMMAND", "type", "selection", "$getSelection", "$isRangeSelection", "horizontalRuleNode", "$createHorizontalRuleNode", "$insertNodeToNearestRoot", "COMMAND_PRIORITY_EDITOR", "HorizontalRuleFeatureClient", "createClientFeature", "MarkdownTransformer", "HorizontalRuleNode", "HorizontalRulePlugin", "slashMenuBasicGroupWithItems", "HorizontalRuleIcon", "i18n", "editor", "INSERT_HORIZONTAL_RULE_COMMAND", "toolbarAddDropdownGroupWithItems", "selection", "$isNodeSelection", "firstNode", "$isHorizontalRuleNode", "INDENT_CONTENT_COMMAND", "OUTDENT_CONTENT_COMMAND", "jsx", "jsxs", "IndentDecreaseIcon", "jsx", "jsxs", "IndentIncreaseIcon", "toolbarIndentGroupWithItems", "items", "toolbarGroups", "toolbarIndentGroupWithItems", "IndentDecreaseIcon", "selection", "node", "i18n", "editor", "OUTDENT_CONTENT_COMMAND", "IndentIncreaseIcon", "INDENT_CONTENT_COMMAND", "IndentFeatureClient", "createClientFeature", "$findMatchingParent", "$getSelection", "$isRangeSelection", "jsx", "LinkIcon", "$isAtNodeEnd", "getSelectedNode", "selection", "anchor", "focus", "anchorNode", "focusNode", "toolbarFeatureButtonsGroupWithItems", "items", "$createTextNode", "$isTextNode", "addClassNamesToElement", "isHTMLAnchorElement", "ObjectID", "$applyNodeReplacement", "$createTextNode", "$getSelection", "$isElementNode", "$isRangeSelection", "ElementNode", "createCommand", "SUPPORTED_URL_PROTOCOLS", "LinkNode", "_LinkNode", "id", "fields", "key", "node", "$convertAnchorElement", "serializedNode", "$createLinkNode", "config", "element", "manageRel", "returnObject", "child", "selection", "destination", "anchorNode", "focusNode", "restoreSelection", "linkNode", "url", "parsedUrl", "writable", "prevNode", "anchor", "newTab", "domNode", "content", "$isLinkNode", "TOGGLE_LINK_COMMAND", "$toggleLink", "payload", "nodes", "parent", "children", "i", "firstNode", "$getLinkAncestor", "prevParent", "$getAncestor", "ancestor", "predicate", "input", "action", "value", "result", "mutableInput", "re", "LinkMarkdownTransformer", "LinkNode", "_node", "exportChildren", "exportFormat", "$isLinkNode", "node", "url", "linkContent", "firstChild", "$isTextNode", "textNode", "match", "linkText", "linkUrl", "linkNode", "$createLinkNode", "linkTextNode", "$createTextNode", "$applyNodeReplacement", "$isElementNode", "AutoLinkNode", "_AutoLinkNode", "LinkNode", "node", "serializedNode", "$createAutoLinkNode", "serialized", "selection", "restoreSelection", "element", "$isElementNode", "linkNode", "fields", "$applyNodeReplacement", "$isAutoLinkNode", "useLexicalComposerContext", "mergeRegister", "$createTextNode", "$getSelection", "$isElementNode", "$isLineBreakNode", "$isNodeSelection", "$isRangeSelection", "$isTextNode", "TextNodeValue", "useEffect", "invariant", "cond", "message", "args", "createLinkMatcherWithRegExp", "regExp", "urlTransformer", "text", "match", "findFirstMatch", "matchers", "i", "PUNCTUATION_OR_SPACE", "isSeparator", "char", "endsWithSeparator", "textContent", "startsWithSeparator", "startsWithFullStop", "isPreviousNodeValid", "node", "previousNode", "$isElementNode", "$isLineBreakNode", "$isTextNode", "isNextNodeValid", "nextNode", "isContentAroundIsValid", "matchStart", "matchEnd", "nodes", "extractMatchingNodes", "startIndex", "endIndex", "unmodifiedBeforeNodes", "matchingNodes", "unmodifiedAfterNodes", "matchingOffset", "currentOffset", "currentNodes", "currentNode", "currentNodeLength", "currentNodeStart", "$createAutoLinkNode_", "fields", "linkNode", "$createAutoLinkNode", "remainingTextNode", "linkTextNode", "textNode", "$createTextNode", "firstTextNode", "offset", "firstLinkTextNode", "linkNodes", "currentNodeEnd", "endNode", "selection", "$getSelection", "selectedTextNode", "$isRangeSelection", "$isNodeSelection", "$handleLinkCreation", "onChange", "initialText", "invalidMatchEnd", "matchLength", "actualMatchStart", "actualMatchEnd", "handleLinkEdit", "children", "childrenLength", "child", "replaceWithChildren", "url", "flds", "handleBadNeighbors", "previousSibling", "nextSibling", "$isAutoLinkNode", "j", "getTextNodesToMatch", "textNodesToMatch", "useAutoLink", "editor", "useEffect", "AutoLinkNode", "invariant", "onChangeWrapped", "prevUrl", "mergeRegister", "TextNodeValue", "parent", "previous", "$isLinkNode", "URL_REGEX", "EMAIL_REGEX", "MATCHERS", "AutoLinkPlugin", "useLexicalComposerContext", "LexicalClickableLinkPlugin", "jsx", "ClickableLinkPlugin", "createCommand", "TOGGLE_LINK_WITH_MODAL_COMMAND", "createPortal", "useLexicalComposerContext", "$findMatchingParent", "mergeRegister", "getTranslation", "formatDrawerSlug", "useConfig", "useEditDepth", "useModal", "useTranslation", "$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", "horizontalOffset", "scrollerElem", "floatingElemRect", "anchorElementRect", "editorScrollerRect", "top", "left", "jsx", "jsxs", "LinkEditor", "anchorElem", "editor", "useLexicalComposerContext", "editorRef", "useRef", "linkUrl", "setLinkUrl", "useState", "linkLabel", "setLinkLabel", "uuid", "useEditorConfigContext", "config", "useConfig", "i18n", "t", "useTranslation", "stateData", "setStateData", "closeModal", "toggleModal", "useModal", "editDepth", "useEditDepth", "isLink", "setIsLink", "selectedNodes", "setSelectedNodes", "isAutoLink", "setIsAutoLink", "drawerSlug", "formatDrawerSlug", "setNotLink", "useCallback", "$updateLinkEditor", "selection", "$getSelection", "selectedNodeDomRect", "$isRangeSelection", "focusNode", "getSelectedNode", "focusLinkParent", "$findMatchingParent", "$isLinkNode", "badNode", "node", "$isLineBreakNode", "linkNode", "data", "relatedField", "coll", "label", "getTranslation", "$isAutoLinkNode", "editorElem", "nativeSelection", "activeElement", "rootElement", "setFloatingElemPositionForLinkEditor", "useEffect", "mergeRegister", "TOGGLE_LINK_WITH_MODAL_COMMAND", "payload", "TOGGLE_LINK_COMMAND", "COMMAND_PRIORITY_LOW", "scrollerElem", "update", "editorState", "SELECTION_CHANGE_COMMAND", "KEY_ESCAPE_COMMAND", "COMMAND_PRIORITY_HIGH", "React", "event", "FieldsDrawer", "fields", "newLinkPayload", "bareLinkFields", "linkParent", "$createLinkNode", "jsx", "FloatingLinkEditorPlugin", "props", "anchorElem", "createPortal", "LinkEditor", "useLexicalComposerContext", "mergeRegister", "$getSelection", "$isElementNode", "$isRangeSelection", "COMMAND_PRIORITY_LOW", "PASTE_COMMAND", "useEffect", "absoluteRegExp", "relativeOrAnchorRegExp", "validateUrl", "url", "LinkPlugin", "editor", "useLexicalComposerContext", "useEffect", "LinkNode", "mergeRegister", "TOGGLE_LINK_COMMAND", "payload", "$toggleLink", "COMMAND_PRIORITY_LOW", "validateUrl", "PASTE_COMMAND", "event", "selection", "$getSelection", "$isRangeSelection", "clipboardText", "node", "$isElementNode", "linkFields", "toolbarGroups", "toolbarFeatureButtonsGroupWithItems", "LinkIcon", "selection", "$isRangeSelection", "selectedNode", "getSelectedNode", "$findMatchingParent", "$isLinkNode", "$getSelection", "i18n", "editor", "isActive", "TOGGLE_LINK_COMMAND", "selectedText", "selectedNodes", "linkFields", "TOGGLE_LINK_WITH_MODAL_COMMAND", "LinkFeatureClient", "createClientFeature", "LinkMarkdownTransformer", "LinkNode", "AutoLinkNode", "LinkPlugin", "AutoLinkPlugin", "ClickableLinkPlugin", "FloatingLinkEditorPlugin", "$isListNode", "INSERT_CHECK_LIST_COMMAND", "ListItemNode", "ListNode", "$isRangeSelection", "jsx", "jsxs", "ChecklistIcon", "ListPlugin", "jsx", "LexicalListPlugin", "slashMenuListGroupWithItems", "items", "i18n", "$isListNode", "ListItemNode", "ListNode", "$createListItemNode", "$createListNode", "$isListItemNode", "$isListNode", "LIST_INDENT_SIZE", "listReplace", "listType", "parentNode", "children", "match", "previousNode", "nextNode", "listItem", "firstChild", "list", "indent", "listExport", "listNode", "exportChildren", "depth", "output", "index", "listItemNode", "prefix", "CHECK_LIST", "ListNode", "ListItemNode", "node", "exportChildren", "$isListNode", "listExport", "listReplace", "CheckListPlugin", "jsx", "LexicalCheckListPlugin", "toolbarGroups", "toolbarTextDropdownGroupWithItems", "ChecklistIcon", "selection", "$isRangeSelection", "node", "$isListNode", "parent", "parentParent", "i18n", "editor", "INSERT_CHECK_LIST_COMMAND", "ChecklistFeatureClient", "createClientFeature", "featureProviderMap", "plugins", "LexicalCheckListPlugin", "LexicalListPlugin", "CHECK_LIST", "ListNode", "ListItemNode", "slashMenuListGroupWithItems", "$isListNode", "INSERT_ORDERED_LIST_COMMAND", "ListItemNode", "ListNode", "$isRangeSelection", "jsx", "jsxs", "OrderedListIcon", "$isListNode", "ListItemNode", "ListNode", "ORDERED_LIST", "ListNode", "ListItemNode", "node", "exportChildren", "$isListNode", "listExport", "listReplace", "toolbarGroups", "toolbarTextDropdownGroupWithItems", "OrderedListIcon", "selection", "$isRangeSelection", "node", "$isListNode", "parent", "parentParent", "i18n", "editor", "INSERT_ORDERED_LIST_COMMAND", "OrderedListFeatureClient", "createClientFeature", "featureProviderMap", "ORDERED_LIST", "ListNode", "ListItemNode", "LexicalListPlugin", "slashMenuListGroupWithItems", "$isListNode", "INSERT_UNORDERED_LIST_COMMAND", "ListItemNode", "ListNode", "$isRangeSelection", "jsx", "jsxs", "UnorderedListIcon", "$isListNode", "ListItemNode", "ListNode", "UNORDERED_LIST", "ListNode", "ListItemNode", "node", "exportChildren", "$isListNode", "listExport", "listReplace", "toolbarGroups", "toolbarTextDropdownGroupWithItems", "UnorderedListIcon", "selection", "$isRangeSelection", "node", "$isListNode", "parent", "parentParent", "i18n", "editor", "INSERT_UNORDERED_LIST_COMMAND", "UnorderedListFeatureClient", "createClientFeature", "UNORDERED_LIST", "ListNode", "ListItemNode", "LexicalListPlugin", "slashMenuListGroupWithItems", "convertLexicalPluginToLexical", "converters", "lexicalPluginData", "convertLexicalPluginNodesToLexical", "lexicalPluginNodes", "parentNodeType", "unknownConverter", "converter", "lexicalPluginNode", "convertParagraphNode", "node", "addClassNamesToElement", "DecoratorNode", "React", "jsx", "Component", "module", "UnknownConvertedNode", "_UnknownConvertedNode", "data", "key", "node", "serializedNode", "$createUnknownConvertedNode", "config", "element", "prevNode", "dom", "LexicalPluginToLexicalFeatureClient", "createClientFeature", "clientFunctions", "converters", "incomingEditorState", "convertLexicalPluginToLexical", "UnknownConvertedNode", "NodeFormat", "IS_ALL_FORMATTING", "NON_BREAKING_SPACE", "DOUBLE_LINE_BREAK", "RTL", "LTR", "RTL_REGEX", "LTR_REGEX", "TEXT_TYPE_TO_FORMAT", "DETAIL_TYPE_TO_DETAIL", "ELEMENT_TYPE_TO_FORMAT", "ELEMENT_FORMAT_TO_TYPE", "TEXT_MODE_TO_TYPE", "TEXT_TYPE_TO_MODE", "convertSlateToLexical", "converters", "slateData", "convertSlateNodesToLexical", "canContainParagraphs", "parentNodeType", "slateNodes", "unknownConverter", "converter", "slateNode", "i", "convertParagraphNode", "convertTextNode", "node", "convertNodeToFormat", "format", "NodeFormat", "addClassNamesToElement", "DecoratorNode", "React", "jsx", "Component", "module", "UnknownConvertedNode", "_UnknownConvertedNode", "data", "key", "node", "serializedNode", "$createUnknownConvertedNode", "config", "element", "prevNode", "dom", "SlateToLexicalFeatureClient", "createClientFeature", "clientFunctions", "converters", "incomingEditorState", "convertSlateToLexical", "UnknownConvertedNode", "$setBlocksType", "$createParagraphNode", "$getSelection", "$isParagraphNode", "$isRangeSelection", "toolbarGroups", "toolbarTextDropdownGroupWithItems", "TextIcon", "selection", "$isRangeSelection", "node", "$isParagraphNode", "i18n", "editor", "$getSelection", "$setBlocksType", "$createParagraphNode", "ParagraphFeatureClient", "createClientFeature", "slashMenuBasicGroupWithItems", "$isNodeSelection", "jsx", "jsxs", "RelationshipIcon", "useLexicalComposerContext", "$insertNodeToNearestRoot", "useConfig", "$getPreviousSelection", "$getSelection", "$isParagraphNode", "$isRangeSelection", "COMMAND_PRIORITY_EDITOR", "createCommand", "useEffect", "useLexicalComposerContext", "useListDrawer", "$getNodeByKey", "COMMAND_PRIORITY_EDITOR", "useCallback", "useEffect", "useState", "jsx", "insertRelationship", "editor", "relationTo", "replaceNodeKey", "value", "node", "$getNodeByKey", "$createRelationshipNode", "INSERT_RELATIONSHIP_COMMAND", "RelationshipDrawerComponent", "enabledCollectionSlugs", "useLexicalComposerContext", "selectedCollectionSlug", "setSelectedCollectionSlug", "useState", "setReplaceNodeKey", "ListDrawer", "ListDrawerToggler", "closeDrawer", "isDrawerOpen", "openDrawer", "useListDrawer", "useEffect", "INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND", "payload", "COMMAND_PRIORITY_EDITOR", "onSelect", "useCallback", "collectionSlug", "docID", "RelationshipDrawer", "props", "EnabledRelationshipsCondition", "jsx", "INSERT_RELATIONSHIP_COMMAND", "createCommand", "RelationshipPlugin", "clientProps", "editor", "useLexicalComposerContext", "collections", "useConfig", "enabledRelations", "slug", "useEffect", "RelationshipNode", "payload", "selection", "$getSelection", "$getPreviousSelection", "$isRangeSelection", "relationshipNode", "$createRelationshipNode", "$insertNodeToNearestRoot", "focus", "focusNode", "$isParagraphNode", "node", "COMMAND_PRIORITY_EDITOR", "RelationshipDrawer", "RelationshipFeatureClient", "createClientFeature", "RelationshipNode", "RelationshipPlugin", "slashMenuBasicGroupWithItems", "RelationshipIcon", "i18n", "editor", "INSERT_RELATIONSHIP_WITH_DRAWER_COMMAND", "toolbarAddDropdownGroupWithItems", "selection", "$isNodeSelection", "firstNode", "$isRelationshipNode", "useLexicalComposerContext", "useScrollInfo", "useThrottledEffect", "useTranslation", "React", "useMemo", "mergeRegister", "$getSelection", "useCallback", "useEffect", "useState", "jsx", "baseClass", "ToolbarButton", "children", "editor", "item", "enabled", "setEnabled", "useState", "active", "setActive", "className", "setClassName", "editorConfigContext", "useEditorConfigContext", "updateStates", "useCallback", "selection", "$getSelection", "isActive", "isEnabled", "useEffect", "mergeRegister", "e", "React", "useCallback", "useEffect", "mergeRegister", "useTranslation", "$getSelection", "React", "useCallback", "useEffect", "useMemo", "useRef", "useState", "createPortal", "jsx", "jsxs", "baseClass", "DropDownContext", "DropDownItem", "active", "children", "editor", "enabled", "item", "title", "className", "setClassName", "ref", "dropDownContext", "registerItem", "e", "DropDownItems", "dropDownRef", "itemsContainerClassNames", "onClose", "items", "setItems", "highlightedItem", "setHighlightedItem", "itemRef", "prev", "handleKeyDown", "event", "key", "index", "contextValue", "DropDown", "Icon", "buttonAriaLabel", "buttonClassName", "disabled", "label", "stopCloseOnClickSelf", "buttonRef", "showDropDown", "setShowDropDown", "handleClose", "button", "dropDown", "left", "top", "scrollTopOffset", "handle", "target", "portal", "jsx", "jsxs", "baseClass", "ToolbarItem", "active", "anchorElem", "editor", "enabled", "item", "i18n", "useTranslation", "title", "DropDownItem", "ToolbarDropdown", "Icon", "classNames", "groupKey", "items", "itemsContainerClassNames", "label", "maxActiveItems", "onActiveChange", "activeItemKeys", "setActiveItemKeys", "React", "enabledItemKeys", "setEnabledItemKeys", "editorConfigContext", "useEditorConfigContext", "updateStates", "useCallback", "selection", "$getSelection", "_activeItemKeys", "_activeItems", "_enabledItemKeys", "useEffect", "mergeRegister", "DropDown", "jsx", "jsxs", "ButtonGroupItem", "anchorElem", "editor", "item", "ToolbarButton", "ToolbarGroupComponent", "editorConfig", "group", "index", "i18n", "useTranslation", "dropdownLabel", "setDropdownLabel", "DropdownIcon", "setDropdownIcon", "onActiveChange", "activeItems", "label", "ToolbarDropdown", "FixedToolbar", "clientProps", "parentWithFixedToolbar", "currentToolbarRef", "y", "useScrollInfo", "parentToolbarElem", "useMemo", "sibling", "useThrottledEffect", "currentToolbarElem", "currentRect", "parentRect", "event", "i", "getParentEditorWithFixedToolbar", "editorConfigContext", "FixedToolbarPlugin", "currentEditor", "useLexicalComposerContext", "useEditorConfigContext", "currentEditorConfig", "FixedToolbarFeatureClient", "createClientFeature", "FixedToolbarPlugin", "useLexicalComposerContext", "mergeRegister", "$getSelection", "$isRangeSelection", "$isTextNode", "COMMAND_PRIORITY_LOW", "SELECTION_CHANGE_COMMAND", "useCallback", "useEffect", "useRef", "useState", "React", "createPortal", "getDOMRangeRect", "nativeSelection", "rootElement", "domRange", "rect", "inner", "setFloatingElemPosition", "args", "alwaysDisplayOnTop", "anchorElem", "anchorFlippedOffset", "floatingElem", "horizontalOffset", "horizontalPosition", "specialHandlingForCaret", "targetRect", "verticalGap", "scrollerElem", "floatingElemRect", "anchorElementRect", "editorScrollerRect", "top", "left", "addedToTop", "jsx", "jsxs", "ButtonGroupItem", "anchorElem", "editor", "item", "ToolbarButton", "ToolbarGroupComponent", "group", "index", "editorConfig", "useEditorConfigContext", "DropdownIcon", "setDropdownIcon", "onActiveChange", "activeItems", "ToolbarDropdown", "InlineToolbar", "floatingToolbarRef", "useRef", "caretRef", "closeFloatingToolbar", "useCallback", "isOpacityZero", "isPointerEventsNone", "mouseMoveListener", "e", "x", "y", "elementUnderMouse", "mouseUpListener", "useEffect", "$updateTextFormatFloatingToolbar", "selection", "$getSelection", "nativeSelection", "possibleLinkEditor", "isLinkEditorVisible", "rootElement", "rangeRect", "getDOMRangeRect", "offsetIfFlipped", "setFloatingElemPosition", "scrollerElem", "update", "mergeRegister", "editorState", "SELECTION_CHANGE_COMMAND", "COMMAND_PRIORITY_LOW", "i", "useInlineToolbar", "isText", "setIsText", "useState", "updatePopup", "$isRangeSelection", "nodes", "foundNodeWithText", "node", "$isTextNode", "rawTextContent", "createPortal", "InlineToolbarPlugin", "useLexicalComposerContext", "InlineToolbarFeatureClient", "createClientFeature", "InlineToolbarPlugin", "TableCellNode", "TableNode", "TableRowNode", "jsx", "TableIcon", "useLexicalComposerContext", "useLexicalEditable", "$deleteTableColumn__EXPERIMENTAL", "$deleteTableRow__EXPERIMENTAL", "$getNodeTriplet", "$getTableCellNodeFromLexicalNode", "$getTableColumnIndexFromTableCellNode", "$getTableNodeFromLexicalNodeOrThrow", "$getTableRowIndexFromTableCellNode", "$insertTableColumn__EXPERIMENTAL", "$insertTableRow__EXPERIMENTAL", "$isTableCellNode", "$isTableRowNode", "$isTableSelection", "$unmergeCell", "TableCellHeaderStates", "TableCellNode", "getTableObserverFromTableElement", "useScrollInfo", "$createParagraphNode", "$getRoot", "$getSelection", "$isElementNode", "$isParagraphNode", "$isRangeSelection", "$isTextNode", "React", "useCallback", "useEffect", "useRef", "useState", "createPortal", "jsx", "jsxs", "MeatballsIcon", "jsx", "jsxs", "computeSelectionCount", "selection", "selectionShape", "isTableSelectionRectangular", "nodes", "currentRows", "currentRow", "expectedColumns", "currentColumns", "i", "node", "$isTableCellNode", "row", "invariant", "$isTableRowNode", "colSpan", "j", "v", "$canUnmerge", "$getSelection", "$isRangeSelection", "$isTableSelection", "cell", "$getNodeTriplet", "$cellContainsEmptyParagraph", "firstChild", "$isParagraphNode", "$selectLastDescendant", "lastDescendant", "$isTextNode", "$isElementNode", "TableActionMenu", "cellMerge", "contextRef", "onClose", "setIsMenuOpen", "_tableCellNode", "editor", "useLexicalComposerContext", "dropDownRef", "useRef", "tableCellNode", "updateTableCellNode", "useState", "selectionCounts", "updateSelectionCounts", "canMergeCells", "setCanMergeCells", "canUnmergeCell", "setCanUnmergeCell", "y", "useScrollInfo", "useEffect", "TableCellNode", "nodeMutations", "currentSelectionCounts", "menuButtonElement", "dropDownElement", "rootElement", "rootEleRect", "menuButtonRect", "dropDownElementRect", "margin", "leftPosition", "position", "topPosition", "handleClickOutside", "event", "clearTableSelection", "useCallback", "tableNode", "$getTableNodeFromLexicalNodeOrThrow", "tableElement", "tableSelection", "getTableObserverFromTableElement", "$getRoot", "mergeTableCellsAtSelection", "columns", "rows", "firstCell", "isEmpty", "$createParagraphNode", "unmergeTableCellsAtSelection", "$unmergeCell", "insertTableRowAtSelection", "shouldInsertAfter", "$insertTableRow__EXPERIMENTAL", "insertTableColumnAtSelection", "$insertTableColumn__EXPERIMENTAL", "deleteTableRowAtSelection", "$deleteTableRow__EXPERIMENTAL", "deleteTableAtSelection", "deleteTableColumnAtSelection", "$deleteTableColumn__EXPERIMENTAL", "toggleTableRowIsHeader", "tableRowIndex", "$getTableRowIndexFromTableCellNode", "tableRows", "tableRow", "tableCell", "TableCellHeaderStates", "toggleTableColumnIsHeader", "tableColumnIndex", "$getTableColumnIndexFromTableCellNode", "maxRowsLength", "r", "tableCells", "mergeCellButton", "createPortal", "e", "TableCellActionMenuContainer", "anchorElem", "menuButtonRef", "menuRootRef", "isMenuOpen", "setTableMenuCellNode", "$moveMenu", "menu", "nativeSelection", "activeElement", "tableCellNodeFromSelection", "$getTableCellNodeFromLexicalNode", "menuButtonDOM", "tableCellNodeDOM", "tableCellRect", "menuRect", "anchorRect", "top", "left", "prevTableCellDOM", "MeatballsIcon", "TableActionMenuPlugin", "isEditable", "useLexicalEditable", "useLexicalComposerContext", "useLexicalEditable", "$computeTableMapSkipCellCheck", "$getTableNodeFromLexicalNodeOrThrow", "$getTableRowIndexFromTableCellNode", "$isTableCellNode", "$isTableRowNode", "getDOMCellFromTarget", "calculateZoomLevel", "$getNearestNodeFromDOMNode", "React", "useCallback", "useEffect", "useMemo", "useRef", "useState", "createPortal", "jsx", "jsxs", "MIN_ROW_HEIGHT", "MIN_COLUMN_WIDTH", "TableCellResizer", "editor", "targetRef", "resizerRef", "tableRectRef", "mouseStartPosRef", "mouseCurrentPos", "updateMouseCurrentPos", "activeCell", "updateActiveCell", "isMouseDown", "updateIsMouseDown", "draggingDirection", "updateDraggingDirection", "resetState", "isMouseDownOnEvent", "event", "onMouseMove", "target", "cell", "tableCellNode", "tableNode", "tableElement", "onMouseDown", "onMouseUp", "isHeightChanging", "direction", "updateRowHeight", "heightChange", "tableRowIndex", "tableRows", "tableRow", "height", "rowCells", "getCellNodeHeight", "newHeight", "getCellNodeWidth", "activeEditor", "width", "domCellNode", "computedStyle", "getCellColumnIndex", "tableMap", "row", "column", "updateColumnWidth", "widthChange", "columnIndex", "newWidth", "mouseUpHandler", "handler", "x", "y", "zoom", "toggleResize", "resizerStyles", "left", "top", "zoneWidth", "styles", "tableRect", "TableCellResizerPlugin", "isEditable", "useLexicalComposerContext", "LexicalReactTablePlugin", "INSERT_TABLE_COMMAND", "TableNode", "mergeRegister", "useModal", "$getSelection", "$isRangeSelection", "COMMAND_PRIORITY_EDITOR", "createCommand", "createContext", "useContext", "useEffect", "useMemo", "useState", "React", "jsx", "jsxs", "OPEN_TABLE_DRAWER_COMMAND", "createCommand", "CellContext", "createContext", "drawerSlug", "TableContext", "children", "contextValue", "setContextValue", "useState", "useMemo", "cellEditorConfig", "cellEditorPlugins", "TablePlugin", "editor", "useLexicalComposerContext", "cellContext", "useContext", "closeModal", "toggleModal", "useModal", "useEffect", "TableNode", "invariant", "mergeRegister", "rangeSelection", "selection", "$getSelection", "$isRangeSelection", "COMMAND_PRIORITY_EDITOR", "FieldsDrawer", "_fields", "data", "INSERT_TABLE_COMMAND", "LexicalReactTablePlugin", "TableFeatureClient", "createClientFeature", "TableNode", "TableCellNode", "TableRowNode", "TablePlugin", "TableCellResizerPlugin", "TableActionMenuPlugin", "TableContext", "slashMenuBasicGroupWithItems", "TableIcon", "editor", "OPEN_TABLE_DRAWER_COMMAND", "toolbarAddDropdownGroupWithItems", "$isNodeSelection", "jsx", "jsxs", "UploadIcon", "useLexicalComposerContext", "$insertNodeToNearestRoot", "mergeRegister", "useConfig", "$getPreviousSelection", "$getSelection", "$isParagraphNode", "$isRangeSelection", "COMMAND_PRIORITY_EDITOR", "createCommand", "useEffect", "useLexicalComposerContext", "useListDrawer", "$getNodeByKey", "COMMAND_PRIORITY_EDITOR", "useCallback", "useEffect", "useState", "jsx", "insertUpload", "editor", "relationTo", "replaceNodeKey", "value", "node", "$getNodeByKey", "$createUploadNode", "INSERT_UPLOAD_COMMAND", "UploadDrawerComponent", "enabledCollectionSlugs", "useLexicalComposerContext", "setReplaceNodeKey", "useState", "ListDrawer", "ListDrawerToggler", "closeDrawer", "openDrawer", "useListDrawer", "useEffect", "INSERT_UPLOAD_WITH_DRAWER_COMMAND", "payload", "COMMAND_PRIORITY_EDITOR", "onSelect", "useCallback", "collectionSlug", "docID", "UploadDrawer", "props", "EnabledRelationshipsCondition", "jsx", "INSERT_UPLOAD_COMMAND", "createCommand", "UploadPlugin", "clientProps", "editor", "useLexicalComposerContext", "collections", "useConfig", "useEffect", "UploadNode", "mergeRegister", "payload", "selection", "$getSelection", "$getPreviousSelection", "$isRangeSelection", "uploadNode", "$createUploadNode", "$insertNodeToNearestRoot", "focus", "focusNode", "$isParagraphNode", "node", "COMMAND_PRIORITY_EDITOR", "UploadDrawer", "slug", "UploadFeatureClient", "createClientFeature", "UploadNode", "UploadPlugin", "slashMenuBasicGroupWithItems", "UploadIcon", "i18n", "editor", "INSERT_UPLOAD_WITH_DRAWER_COMMAND", "toolbarAddDropdownGroupWithItems", "selection", "$isNodeSelection", "firstNode", "$isUploadNode", "ShimmerEffect", "useClientFunctions", "useFieldProps", "React", "Suspense", "lazy", "useEffect", "useState", "jsx", "jsxs", "RichTextEditor", "lazy", "module", "RichTextField", "props", "admin", "lexicalEditorConfig", "richTextComponentMap", "schemaPath", "useFieldProps", "clientFunctions", "useClientFunctions", "hasLoadedFeatures", "setHasLoadedFeatures", "useState", "featureProviders", "setFeatureProviders", "finalSanitizedEditorConfig", "setFinalSanitizedEditorConfig", "featureProviderComponents", "a", "b", "featureProvidersAndComponentsToLoad", "featureProvider", "featureComponentKeys", "key", "useEffect", "featureProvidersLocal", "featureProvidersAndComponentsLoaded", "plugin", "resolvedClientFeatures", "loadClientFeatures", "sanitizeClientEditorConfig", "defaultEditorLexicalConfig", "Suspense", "ShimmerEffect", "React", "featureComponents", "FeatureComponent", "joinClasses", "args", "elements", "readTouch", "touch", "addListener", "element", "cb", "elementValues", "listeners", "handleTouchstart", "e", "handleTouchend", "start", "end", "listener", "deleteListener", "addSwipeLeftListener", "force", "x", "y", "addSwipeRightListener", "addSwipeUpListener", "addSwipeDownListener"]
|
|
7
|
+
}
|