@payloadcms/richtext-lexical 3.0.0-beta.5 → 3.0.0-beta.51
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 +45 -31
- package/dist/cell/index.js.map +1 -1
- package/dist/exports/client/Component-6AVANNNR.js +2 -0
- package/dist/exports/client/Component-6AVANNNR.js.map +7 -0
- package/dist/exports/client/Component-SZVAYRJX.js +2 -0
- package/dist/exports/client/Component-SZVAYRJX.js.map +7 -0
- package/dist/exports/client/Field-U5PHZTST.js +2 -0
- package/dist/exports/client/Field-U5PHZTST.js.map +7 -0
- package/dist/exports/client/RelationshipComponent-FGUPLCD2.js +2 -0
- package/dist/exports/client/RelationshipComponent-FGUPLCD2.js.map +7 -0
- package/dist/exports/client/bundled.css +1 -0
- package/dist/exports/client/chunk-35NZOHAF.js +2 -0
- package/dist/exports/client/chunk-35NZOHAF.js.map +7 -0
- package/dist/exports/client/chunk-3PZ2ZFQG.js +3 -0
- package/dist/exports/client/chunk-3PZ2ZFQG.js.map +7 -0
- package/dist/exports/client/chunk-FSTRW2TI.js +2 -0
- package/dist/exports/client/chunk-FSTRW2TI.js.map +7 -0
- package/dist/exports/client/chunk-M6MN4CA5.js +2 -0
- package/dist/exports/client/chunk-M6MN4CA5.js.map +7 -0
- package/dist/exports/client/chunk-Y5455JF3.js +2 -0
- package/dist/exports/client/chunk-Y5455JF3.js.map +7 -0
- package/dist/exports/client/component-FFLILIUZ.js +2 -0
- package/dist/exports/client/component-FFLILIUZ.js.map +7 -0
- package/dist/exports/client/component-RAVN56DE.js +2 -0
- package/dist/exports/client/component-RAVN56DE.js.map +7 -0
- package/dist/exports/client/component-Z34HXRX3.js +2 -0
- package/dist/exports/client/component-Z34HXRX3.js.map +7 -0
- package/dist/exports/client/index.d.ts +52 -0
- package/dist/exports/client/index.d.ts.map +1 -0
- package/dist/exports/client/index.js +36 -0
- package/dist/exports/client/index.js.map +7 -0
- package/dist/field/Field.d.ts +1 -2
- package/dist/field/Field.d.ts.map +1 -1
- package/dist/field/Field.js +69 -55
- package/dist/field/Field.js.map +1 -1
- package/dist/field/bundled.css +0 -0
- package/dist/field/features/align/feature.client.d.ts +4 -1
- package/dist/field/features/align/feature.client.d.ts.map +1 -1
- package/dist/field/features/align/feature.client.js +135 -54
- package/dist/field/features/align/feature.client.js.map +1 -1
- package/dist/field/features/align/feature.server.d.ts.map +1 -1
- package/dist/field/features/align/feature.server.js +4 -1
- package/dist/field/features/align/feature.server.js.map +1 -1
- package/dist/field/features/align/i18n.d.ts +3 -0
- package/dist/field/features/align/i18n.d.ts.map +1 -0
- package/dist/field/features/align/i18n.js +196 -0
- package/dist/field/features/align/i18n.js.map +1 -0
- package/dist/field/features/align/toolbarAlignGroup.d.ts +3 -0
- package/dist/field/features/align/toolbarAlignGroup.d.ts.map +1 -0
- package/dist/field/features/align/toolbarAlignGroup.js +12 -0
- package/dist/field/features/align/toolbarAlignGroup.js.map +1 -0
- package/dist/field/features/blockquote/feature.client.d.ts +4 -1
- package/dist/field/features/blockquote/feature.client.d.ts.map +1 -1
- package/dist/field/features/blockquote/feature.client.js +60 -46
- package/dist/field/features/blockquote/feature.client.js.map +1 -1
- package/dist/field/features/blockquote/feature.server.d.ts +1 -1
- package/dist/field/features/blockquote/feature.server.d.ts.map +1 -1
- package/dist/field/features/blockquote/feature.server.js +10 -7
- package/dist/field/features/blockquote/feature.server.js.map +1 -1
- package/dist/field/features/blockquote/i18n.d.ts +3 -0
- package/dist/field/features/blockquote/i18n.d.ts.map +1 -0
- package/dist/field/features/blockquote/i18n.js +100 -0
- package/dist/field/features/blockquote/i18n.js.map +1 -0
- package/dist/field/features/blockquote/markdownTransformer.d.ts.map +1 -1
- package/dist/field/features/blockquote/markdownTransformer.js +2 -4
- package/dist/field/features/blockquote/markdownTransformer.js.map +1 -1
- package/dist/field/features/blocks/component/BlockContent.d.ts.map +1 -1
- package/dist/field/features/blocks/component/BlockContent.js +77 -67
- package/dist/field/features/blocks/component/BlockContent.js.map +1 -1
- package/dist/field/features/blocks/component/FormSavePlugin.d.ts +1 -2
- package/dist/field/features/blocks/component/FormSavePlugin.d.ts.map +1 -1
- package/dist/field/features/blocks/component/FormSavePlugin.js +2 -2
- package/dist/field/features/blocks/component/FormSavePlugin.js.map +1 -1
- package/dist/field/features/blocks/component/index.d.ts +0 -1
- package/dist/field/features/blocks/component/index.d.ts.map +1 -1
- package/dist/field/features/blocks/component/index.js +60 -30
- package/dist/field/features/blocks/component/index.js.map +1 -1
- package/dist/field/features/blocks/component/removeEmptyArrayValues.d.ts +1 -1
- package/dist/field/features/blocks/component/removeEmptyArrayValues.d.ts.map +1 -1
- package/dist/field/features/blocks/component/removeEmptyArrayValues.js.map +1 -1
- package/dist/field/features/blocks/drawer/index.d.ts.map +1 -1
- package/dist/field/features/blocks/drawer/index.js +5 -11
- package/dist/field/features/blocks/drawer/index.js.map +1 -1
- package/dist/field/features/blocks/feature.client.d.ts +4 -1
- package/dist/field/features/blocks/feature.client.d.ts.map +1 -1
- package/dist/field/features/blocks/feature.client.js +58 -27
- package/dist/field/features/blocks/feature.client.js.map +1 -1
- package/dist/field/features/blocks/feature.server.d.ts +2 -5
- package/dist/field/features/blocks/feature.server.d.ts.map +1 -1
- package/dist/field/features/blocks/feature.server.js +62 -82
- package/dist/field/features/blocks/feature.server.js.map +1 -1
- package/dist/field/features/blocks/{populationPromise.d.ts → graphQLPopulationPromise.d.ts} +1 -1
- package/dist/field/features/blocks/graphQLPopulationPromise.d.ts.map +1 -0
- package/dist/field/features/blocks/graphQLPopulationPromise.js +31 -0
- package/dist/field/features/blocks/graphQLPopulationPromise.js.map +1 -0
- package/dist/field/features/blocks/i18n.d.ts +3 -0
- package/dist/field/features/blocks/i18n.d.ts.map +1 -0
- package/dist/field/features/blocks/i18n.js +100 -0
- package/dist/field/features/blocks/i18n.js.map +1 -0
- package/dist/field/features/blocks/nodes/BlocksNode.d.ts +2 -4
- package/dist/field/features/blocks/nodes/BlocksNode.d.ts.map +1 -1
- package/dist/field/features/blocks/nodes/BlocksNode.js +3 -3
- package/dist/field/features/blocks/nodes/BlocksNode.js.map +1 -1
- package/dist/field/features/blocks/plugin/commands.d.ts.map +1 -1
- package/dist/field/features/blocks/plugin/commands.js +1 -2
- package/dist/field/features/blocks/plugin/commands.js.map +1 -1
- package/dist/field/features/blocks/plugin/index.d.ts +3 -2
- package/dist/field/features/blocks/plugin/index.d.ts.map +1 -1
- package/dist/field/features/blocks/plugin/index.js +10 -11
- package/dist/field/features/blocks/plugin/index.js.map +1 -1
- package/dist/field/features/blocks/validate.d.ts.map +1 -1
- package/dist/field/features/blocks/validate.js +22 -36
- package/dist/field/features/blocks/validate.js.map +1 -1
- package/dist/field/features/converters/html/field/index.d.ts +14 -2
- package/dist/field/features/converters/html/field/index.d.ts.map +1 -1
- package/dist/field/features/converters/html/field/index.js +97 -57
- package/dist/field/features/converters/html/field/index.js.map +1 -1
- package/dist/field/features/createFeaturePropComponent.d.ts.map +1 -1
- package/dist/field/features/createFeaturePropComponent.js +6 -3
- package/dist/field/features/createFeaturePropComponent.js.map +1 -1
- package/dist/field/features/debug/{testrecorder → testRecorder}/feature.client.d.ts +4 -1
- package/dist/field/features/debug/testRecorder/feature.client.d.ts.map +1 -0
- package/dist/field/features/debug/{testrecorder → testRecorder}/feature.client.js.map +1 -1
- package/dist/field/features/debug/testRecorder/feature.server.d.ts.map +1 -0
- package/dist/field/features/debug/{testrecorder → testRecorder}/feature.server.js +3 -2
- package/dist/field/features/debug/testRecorder/feature.server.js.map +1 -0
- package/dist/field/features/debug/testRecorder/plugin/index.d.ts +5 -0
- package/dist/field/features/debug/testRecorder/plugin/index.d.ts.map +1 -0
- package/dist/field/features/debug/{testrecorder → testRecorder}/plugin/index.js +68 -45
- package/dist/field/features/debug/testRecorder/plugin/index.js.map +1 -0
- package/dist/field/features/debug/{treeview → treeView}/feature.client.d.ts +4 -1
- package/dist/field/features/debug/treeView/feature.client.d.ts.map +1 -0
- package/dist/field/features/debug/{treeview → treeView}/feature.client.js.map +1 -1
- package/dist/field/features/debug/treeView/feature.server.d.ts.map +1 -0
- package/dist/field/features/debug/{treeview → treeView}/feature.server.js +3 -2
- package/dist/field/features/debug/treeView/feature.server.js.map +1 -0
- package/dist/field/features/debug/treeView/plugin/index.d.ts +4 -0
- package/dist/field/features/debug/treeView/plugin/index.d.ts.map +1 -0
- package/dist/field/features/debug/{treeview → treeView}/plugin/index.js +6 -8
- package/dist/field/features/debug/treeView/plugin/index.js.map +1 -0
- package/dist/field/features/format/bold/feature.client.d.ts +4 -1
- package/dist/field/features/format/bold/feature.client.d.ts.map +1 -1
- package/dist/field/features/format/bold/feature.client.js +26 -23
- package/dist/field/features/format/bold/feature.client.js.map +1 -1
- package/dist/field/features/format/bold/feature.server.d.ts.map +1 -1
- package/dist/field/features/format/bold/feature.server.js +2 -1
- package/dist/field/features/format/bold/feature.server.js.map +1 -1
- package/dist/field/features/format/{inlinecode → inlineCode}/feature.client.d.ts +4 -1
- package/dist/field/features/format/inlineCode/feature.client.d.ts.map +1 -0
- package/dist/field/features/format/inlineCode/feature.client.js +46 -0
- package/dist/field/features/format/inlineCode/feature.client.js.map +1 -0
- package/dist/field/features/format/inlineCode/feature.server.d.ts.map +1 -0
- package/dist/field/features/format/{inlinecode → inlineCode}/feature.server.js +3 -2
- package/dist/field/features/format/inlineCode/feature.server.js.map +1 -0
- package/dist/field/features/format/{inlinecode → inlineCode}/markdownTransformers.d.ts.map +1 -1
- package/dist/field/features/format/{inlinecode → inlineCode}/markdownTransformers.js.map +1 -1
- package/dist/field/features/format/italic/feature.client.d.ts +4 -1
- package/dist/field/features/format/italic/feature.client.d.ts.map +1 -1
- package/dist/field/features/format/italic/feature.client.js +27 -24
- package/dist/field/features/format/italic/feature.client.js.map +1 -1
- package/dist/field/features/format/italic/feature.server.d.ts.map +1 -1
- package/dist/field/features/format/italic/feature.server.js +2 -1
- package/dist/field/features/format/italic/feature.server.js.map +1 -1
- package/dist/field/features/format/shared/toolbarFormatGroup.d.ts +3 -0
- package/dist/field/features/format/shared/toolbarFormatGroup.d.ts.map +1 -0
- package/dist/field/features/format/shared/toolbarFormatGroup.js +10 -0
- package/dist/field/features/format/shared/toolbarFormatGroup.js.map +1 -0
- package/dist/field/features/format/strikethrough/feature.client.d.ts +4 -1
- package/dist/field/features/format/strikethrough/feature.client.d.ts.map +1 -1
- package/dist/field/features/format/strikethrough/feature.client.js +27 -24
- package/dist/field/features/format/strikethrough/feature.client.js.map +1 -1
- package/dist/field/features/format/strikethrough/feature.server.d.ts.map +1 -1
- package/dist/field/features/format/strikethrough/feature.server.js +2 -1
- package/dist/field/features/format/strikethrough/feature.server.js.map +1 -1
- package/dist/field/features/format/subscript/feature.client.d.ts +4 -1
- package/dist/field/features/format/subscript/feature.client.d.ts.map +1 -1
- package/dist/field/features/format/subscript/feature.client.js +25 -22
- package/dist/field/features/format/subscript/feature.client.js.map +1 -1
- package/dist/field/features/format/subscript/feature.server.d.ts.map +1 -1
- package/dist/field/features/format/subscript/feature.server.js +2 -1
- package/dist/field/features/format/subscript/feature.server.js.map +1 -1
- package/dist/field/features/format/superscript/feature.client.d.ts +4 -1
- package/dist/field/features/format/superscript/feature.client.d.ts.map +1 -1
- package/dist/field/features/format/superscript/feature.client.js +25 -22
- package/dist/field/features/format/superscript/feature.client.js.map +1 -1
- package/dist/field/features/format/superscript/feature.server.d.ts.map +1 -1
- package/dist/field/features/format/superscript/feature.server.js +2 -1
- package/dist/field/features/format/superscript/feature.server.js.map +1 -1
- package/dist/field/features/format/underline/feature.client.d.ts +4 -1
- package/dist/field/features/format/underline/feature.client.d.ts.map +1 -1
- package/dist/field/features/format/underline/feature.client.js +25 -22
- package/dist/field/features/format/underline/feature.client.js.map +1 -1
- package/dist/field/features/format/underline/feature.server.d.ts.map +1 -1
- package/dist/field/features/format/underline/feature.server.js +2 -1
- package/dist/field/features/format/underline/feature.server.js.map +1 -1
- package/dist/field/features/heading/feature.client.d.ts +4 -1
- package/dist/field/features/heading/feature.client.d.ts.map +1 -1
- package/dist/field/features/heading/feature.client.js +75 -54
- package/dist/field/features/heading/feature.client.js.map +1 -1
- package/dist/field/features/heading/feature.server.d.ts.map +1 -1
- package/dist/field/features/heading/feature.server.js +9 -6
- package/dist/field/features/heading/feature.server.js.map +1 -1
- package/dist/field/features/heading/i18n.d.ts +3 -0
- package/dist/field/features/heading/i18n.d.ts.map +1 -0
- package/dist/field/features/heading/i18n.js +100 -0
- package/dist/field/features/heading/i18n.js.map +1 -0
- package/dist/field/features/heading/markdownTransformer.d.ts.map +1 -1
- package/dist/field/features/heading/markdownTransformer.js +1 -2
- package/dist/field/features/heading/markdownTransformer.js.map +1 -1
- package/dist/field/features/horizontalRule/component/index.d.ts +10 -0
- package/dist/field/features/horizontalRule/component/index.d.ts.map +1 -0
- package/dist/field/features/horizontalRule/component/index.js +67 -0
- package/dist/field/features/horizontalRule/component/index.js.map +1 -0
- package/dist/field/features/horizontalRule/feature.client.d.ts +6 -0
- package/dist/field/features/horizontalRule/feature.client.d.ts.map +1 -0
- package/dist/field/features/horizontalRule/feature.client.js +77 -0
- package/dist/field/features/horizontalRule/feature.client.js.map +1 -0
- package/dist/field/features/horizontalRule/feature.server.d.ts +3 -0
- package/dist/field/features/horizontalRule/feature.server.d.ts.map +1 -0
- package/dist/field/features/horizontalRule/feature.server.js +39 -0
- package/dist/field/features/horizontalRule/feature.server.js.map +1 -0
- package/dist/field/features/horizontalRule/i18n.d.ts +3 -0
- package/dist/field/features/horizontalRule/i18n.d.ts.map +1 -0
- package/dist/field/features/horizontalRule/i18n.js +100 -0
- package/dist/field/features/horizontalRule/i18n.js.map +1 -0
- package/dist/field/features/horizontalRule/markdownTransformer.d.ts +3 -0
- package/dist/field/features/horizontalRule/markdownTransformer.d.ts.map +1 -0
- package/dist/field/features/horizontalRule/markdownTransformer.js +23 -0
- package/dist/field/features/horizontalRule/markdownTransformer.js.map +1 -0
- package/dist/field/features/horizontalRule/nodes/HorizontalRuleNode.d.ts +53 -0
- package/dist/field/features/horizontalRule/nodes/HorizontalRuleNode.d.ts.map +1 -0
- package/dist/field/features/horizontalRule/nodes/HorizontalRuleNode.js +92 -0
- package/dist/field/features/horizontalRule/nodes/HorizontalRuleNode.js.map +1 -0
- package/dist/field/features/horizontalRule/plugin/index.d.ts +7 -0
- package/dist/field/features/horizontalRule/plugin/index.d.ts.map +1 -0
- package/dist/field/features/horizontalRule/plugin/index.js +30 -0
- package/dist/field/features/horizontalRule/plugin/index.js.map +1 -0
- package/dist/field/features/indent/feature.client.d.ts +4 -1
- package/dist/field/features/indent/feature.client.d.ts.map +1 -1
- package/dist/field/features/indent/feature.client.js +47 -42
- package/dist/field/features/indent/feature.client.js.map +1 -1
- package/dist/field/features/indent/feature.server.d.ts.map +1 -1
- package/dist/field/features/indent/feature.server.js +4 -1
- package/dist/field/features/indent/feature.server.js.map +1 -1
- package/dist/field/features/indent/i18n.d.ts +3 -0
- package/dist/field/features/indent/i18n.d.ts.map +1 -0
- package/dist/field/features/indent/i18n.js +132 -0
- package/dist/field/features/indent/i18n.js.map +1 -0
- package/dist/field/features/indent/toolbarIndentGroup.d.ts +3 -0
- package/dist/field/features/indent/toolbarIndentGroup.d.ts.map +1 -0
- package/dist/field/features/indent/toolbarIndentGroup.js +10 -0
- package/dist/field/features/indent/toolbarIndentGroup.js.map +1 -0
- package/dist/field/features/link/drawer/baseFields.d.ts +2 -3
- package/dist/field/features/link/drawer/baseFields.d.ts.map +1 -1
- package/dist/field/features/link/drawer/baseFields.js +30 -43
- package/dist/field/features/link/drawer/baseFields.js.map +1 -1
- package/dist/field/features/link/drawer/index.d.ts.map +1 -1
- package/dist/field/features/link/drawer/index.js +32 -31
- package/dist/field/features/link/drawer/index.js.map +1 -1
- package/dist/field/features/link/drawer/types.d.ts +5 -3
- package/dist/field/features/link/drawer/types.d.ts.map +1 -1
- package/dist/field/features/link/drawer/types.js.map +1 -1
- package/dist/field/features/link/feature.client.d.ts +13 -1
- package/dist/field/features/link/feature.client.d.ts.map +1 -1
- package/dist/field/features/link/feature.client.js +65 -47
- package/dist/field/features/link/feature.client.js.map +1 -1
- package/dist/field/features/link/feature.server.d.ts +10 -6
- package/dist/field/features/link/feature.server.d.ts.map +1 -1
- package/dist/field/features/link/feature.server.js +66 -17
- package/dist/field/features/link/feature.server.js.map +1 -1
- package/dist/field/features/link/{populationPromise.d.ts → graphQLPopulationPromise.d.ts} +1 -1
- package/dist/field/features/link/graphQLPopulationPromise.d.ts.map +1 -0
- package/dist/field/features/link/graphQLPopulationPromise.js +31 -0
- package/dist/field/features/link/graphQLPopulationPromise.js.map +1 -0
- package/dist/field/features/link/i18n.d.ts +3 -0
- package/dist/field/features/link/i18n.d.ts.map +1 -0
- package/dist/field/features/link/i18n.js +100 -0
- package/dist/field/features/link/i18n.js.map +1 -0
- package/dist/field/features/link/markdownTransformer.d.ts +6 -0
- package/dist/field/features/link/markdownTransformer.d.ts.map +1 -0
- package/dist/field/features/link/markdownTransformer.js +50 -0
- package/dist/field/features/link/markdownTransformer.js.map +1 -0
- package/dist/field/features/link/nodes/AutoLinkNode.d.ts.map +1 -1
- package/dist/field/features/link/nodes/AutoLinkNode.js +3 -2
- package/dist/field/features/link/nodes/AutoLinkNode.js.map +1 -1
- package/dist/field/features/link/nodes/LinkNode.d.ts +9 -8
- package/dist/field/features/link/nodes/LinkNode.d.ts.map +1 -1
- package/dist/field/features/link/nodes/LinkNode.js +28 -11
- package/dist/field/features/link/nodes/LinkNode.js.map +1 -1
- package/dist/field/features/link/nodes/types.d.ts +2 -1
- package/dist/field/features/link/nodes/types.d.ts.map +1 -1
- package/dist/field/features/link/nodes/types.js.map +1 -1
- package/dist/field/features/link/plugins/autoLink/index.d.ts +3 -2
- package/dist/field/features/link/plugins/autoLink/index.d.ts.map +1 -1
- package/dist/field/features/link/plugins/autoLink/index.js +11 -12
- package/dist/field/features/link/plugins/autoLink/index.js.map +1 -1
- package/dist/field/features/link/plugins/clickableLink/index.d.ts +3 -2
- package/dist/field/features/link/plugins/clickableLink/index.d.ts.map +1 -1
- package/dist/field/features/link/plugins/clickableLink/index.js +5 -6
- package/dist/field/features/link/plugins/clickableLink/index.js.map +1 -1
- package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/commands.d.ts.map +1 -1
- package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/commands.js +1 -2
- package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/commands.js.map +1 -1
- package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.d.ts.map +1 -1
- package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.js +179 -143
- package/dist/field/features/link/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
- package/dist/field/features/link/plugins/floatingLinkEditor/index.d.ts +3 -4
- package/dist/field/features/link/plugins/floatingLinkEditor/index.d.ts.map +1 -1
- package/dist/field/features/link/plugins/floatingLinkEditor/index.js +2 -2
- package/dist/field/features/link/plugins/floatingLinkEditor/index.js.map +1 -1
- package/dist/field/features/link/plugins/floatingLinkEditor/utilities.d.ts +3 -6
- package/dist/field/features/link/plugins/floatingLinkEditor/utilities.d.ts.map +1 -1
- package/dist/field/features/link/plugins/floatingLinkEditor/utilities.js +12 -30
- package/dist/field/features/link/plugins/floatingLinkEditor/utilities.js.map +1 -1
- package/dist/field/features/link/plugins/link/index.d.ts +3 -1
- package/dist/field/features/link/plugins/link/index.d.ts.map +1 -1
- package/dist/field/features/link/plugins/link/index.js +7 -16
- package/dist/field/features/link/plugins/link/index.js.map +1 -1
- package/dist/field/features/link/validate.d.ts +6 -0
- package/dist/field/features/link/validate.d.ts.map +1 -0
- package/dist/field/features/link/validate.js +28 -0
- package/dist/field/features/link/validate.js.map +1 -0
- package/dist/field/features/lists/checklist/feature.client.d.ts +4 -1
- package/dist/field/features/lists/checklist/feature.client.d.ts.map +1 -1
- package/dist/field/features/lists/checklist/feature.client.js +69 -44
- package/dist/field/features/lists/checklist/feature.client.js.map +1 -1
- package/dist/field/features/lists/checklist/feature.server.d.ts +1 -1
- package/dist/field/features/lists/checklist/feature.server.d.ts.map +1 -1
- package/dist/field/features/lists/checklist/feature.server.js +13 -10
- package/dist/field/features/lists/checklist/feature.server.js.map +1 -1
- package/dist/field/features/lists/checklist/i18n.d.ts +3 -0
- package/dist/field/features/lists/checklist/i18n.d.ts.map +1 -0
- package/dist/field/features/lists/checklist/i18n.js +100 -0
- package/dist/field/features/lists/checklist/i18n.js.map +1 -0
- package/dist/field/features/lists/checklist/markdownTransformers.d.ts.map +1 -1
- package/dist/field/features/lists/checklist/markdownTransformers.js +2 -3
- package/dist/field/features/lists/checklist/markdownTransformers.js.map +1 -1
- package/dist/field/features/lists/checklist/plugin/index.d.ts +2 -2
- package/dist/field/features/lists/checklist/plugin/index.d.ts.map +1 -1
- package/dist/field/features/lists/checklist/plugin/index.js +5 -5
- package/dist/field/features/lists/checklist/plugin/index.js.map +1 -1
- package/dist/field/features/lists/htmlConverter.d.ts.map +1 -1
- package/dist/field/features/lists/htmlConverter.js +13 -6
- package/dist/field/features/lists/htmlConverter.js.map +1 -1
- package/dist/field/features/lists/{orderedlist → orderedList}/feature.client.d.ts +4 -1
- package/dist/field/features/lists/orderedList/feature.client.d.ts.map +1 -0
- package/dist/field/features/lists/orderedList/feature.client.js +97 -0
- package/dist/field/features/lists/orderedList/feature.client.js.map +1 -0
- package/dist/field/features/lists/orderedList/feature.server.d.ts.map +1 -0
- package/dist/field/features/lists/{orderedlist → orderedList}/feature.server.js +12 -9
- package/dist/field/features/lists/orderedList/feature.server.js.map +1 -0
- package/dist/field/features/lists/orderedList/i18n.d.ts +3 -0
- package/dist/field/features/lists/orderedList/i18n.d.ts.map +1 -0
- package/dist/field/features/lists/orderedList/i18n.js +100 -0
- package/dist/field/features/lists/orderedList/i18n.js.map +1 -0
- package/dist/field/features/lists/orderedList/markdownTransformer.d.ts.map +1 -0
- package/dist/field/features/lists/{orderedlist → orderedList}/markdownTransformer.js +2 -3
- package/dist/field/features/lists/orderedList/markdownTransformer.js.map +1 -0
- package/dist/field/features/lists/plugin/index.d.ts +2 -2
- package/dist/field/features/lists/plugin/index.d.ts.map +1 -1
- package/dist/field/features/lists/plugin/index.js +5 -5
- package/dist/field/features/lists/plugin/index.js.map +1 -1
- package/dist/field/features/lists/{common → shared}/markdown.d.ts.map +1 -1
- package/dist/field/features/lists/{common → shared}/markdown.js +1 -2
- package/dist/field/features/lists/shared/markdown.js.map +1 -0
- package/dist/field/features/lists/shared/slashMenuListGroup.d.ts +3 -0
- package/dist/field/features/lists/shared/slashMenuListGroup.d.ts.map +1 -0
- package/dist/field/features/lists/shared/slashMenuListGroup.js +11 -0
- package/dist/field/features/lists/shared/slashMenuListGroup.js.map +1 -0
- package/dist/field/features/lists/{unorderedlist → unorderedList}/feature.client.d.ts +4 -1
- package/dist/field/features/lists/unorderedList/feature.client.d.ts.map +1 -0
- package/dist/field/features/lists/unorderedList/feature.client.js +97 -0
- package/dist/field/features/lists/unorderedList/feature.client.js.map +1 -0
- package/dist/field/features/lists/unorderedList/feature.server.d.ts.map +1 -0
- package/dist/field/features/lists/{unorderedlist → unorderedList}/feature.server.js +11 -8
- package/dist/field/features/lists/unorderedList/feature.server.js.map +1 -0
- package/dist/field/features/lists/unorderedList/i18n.d.ts +3 -0
- package/dist/field/features/lists/unorderedList/i18n.d.ts.map +1 -0
- package/dist/field/features/lists/unorderedList/i18n.js +100 -0
- package/dist/field/features/lists/unorderedList/i18n.js.map +1 -0
- package/dist/field/features/lists/unorderedList/markdownTransformer.d.ts.map +1 -0
- package/dist/field/features/lists/{unorderedlist → unorderedList}/markdownTransformer.js +2 -3
- package/dist/field/features/lists/unorderedList/markdownTransformer.js.map +1 -0
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.d.ts.map +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js +2 -4
- package/dist/field/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js.map +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/feature.client.d.ts +4 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/feature.client.d.ts.map +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/feature.server.d.ts.map +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/feature.server.js +2 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/feature.server.js.map +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js +9 -2
- package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js.map +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts +3 -6
- package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts.map +1 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js +4 -5
- package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/client.d.ts +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/client.js +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/client.js.map +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/index.js +2 -2
- package/dist/field/features/migrations/slateToLexical/converter/converters/blockquote/index.js.map +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/converter.d.ts.map +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/converter.js +2 -4
- package/dist/field/features/migrations/slateToLexical/converter/converters/relationship/converter.js.map +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/upload/converter.d.ts.map +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/converters/upload/converter.js +2 -4
- package/dist/field/features/migrations/slateToLexical/converter/converters/upload/converter.js.map +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/index.d.ts.map +1 -1
- package/dist/field/features/migrations/slateToLexical/converter/index.js +2 -1
- package/dist/field/features/migrations/slateToLexical/converter/index.js.map +1 -1
- package/dist/field/features/migrations/slateToLexical/feature.client.d.ts +4 -1
- package/dist/field/features/migrations/slateToLexical/feature.client.d.ts.map +1 -1
- package/dist/field/features/migrations/slateToLexical/feature.server.d.ts.map +1 -1
- package/dist/field/features/migrations/slateToLexical/feature.server.js +2 -1
- package/dist/field/features/migrations/slateToLexical/feature.server.js.map +1 -1
- package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js +9 -2
- package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js.map +1 -1
- package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.d.ts +3 -6
- package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.d.ts.map +1 -1
- package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js +4 -5
- package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js.map +1 -1
- package/dist/field/features/paragraph/feature.client.d.ts +4 -1
- package/dist/field/features/paragraph/feature.client.d.ts.map +1 -1
- package/dist/field/features/paragraph/feature.client.js +54 -41
- package/dist/field/features/paragraph/feature.client.js.map +1 -1
- package/dist/field/features/paragraph/feature.server.d.ts.map +1 -1
- package/dist/field/features/paragraph/feature.server.js +4 -1
- package/dist/field/features/paragraph/feature.server.js.map +1 -1
- package/dist/field/features/paragraph/i18n.d.ts +3 -0
- package/dist/field/features/paragraph/i18n.d.ts.map +1 -0
- package/dist/field/features/paragraph/i18n.js +132 -0
- package/dist/field/features/paragraph/i18n.js.map +1 -0
- package/dist/field/features/relationship/drawer/commands.d.ts.map +1 -1
- package/dist/field/features/relationship/drawer/commands.js +1 -2
- package/dist/field/features/relationship/drawer/commands.js.map +1 -1
- package/dist/field/features/relationship/drawer/index.d.ts.map +1 -1
- package/dist/field/features/relationship/drawer/index.js +18 -16
- package/dist/field/features/relationship/drawer/index.js.map +1 -1
- package/dist/field/features/relationship/feature.client.d.ts +17 -2
- package/dist/field/features/relationship/feature.client.d.ts.map +1 -1
- package/dist/field/features/relationship/feature.client.js +51 -28
- package/dist/field/features/relationship/feature.client.js.map +1 -1
- package/dist/field/features/relationship/feature.server.d.ts +10 -1
- package/dist/field/features/relationship/feature.server.d.ts.map +1 -1
- package/dist/field/features/relationship/feature.server.js +43 -8
- package/dist/field/features/relationship/feature.server.js.map +1 -1
- package/dist/field/features/relationship/graphQLPopulationPromise.d.ts +5 -0
- package/dist/field/features/relationship/graphQLPopulationPromise.d.ts.map +1 -0
- package/dist/field/features/relationship/graphQLPopulationPromise.js +29 -0
- package/dist/field/features/relationship/graphQLPopulationPromise.js.map +1 -0
- package/dist/field/features/relationship/i18n.d.ts +3 -0
- package/dist/field/features/relationship/i18n.d.ts.map +1 -0
- package/dist/field/features/relationship/i18n.js +100 -0
- package/dist/field/features/relationship/i18n.js.map +1 -0
- package/dist/field/features/relationship/nodes/RelationshipNode.d.ts +4 -9
- package/dist/field/features/relationship/nodes/RelationshipNode.d.ts.map +1 -1
- package/dist/field/features/relationship/nodes/RelationshipNode.js +12 -11
- package/dist/field/features/relationship/nodes/RelationshipNode.js.map +1 -1
- package/dist/field/features/relationship/nodes/components/RelationshipComponent.d.ts.map +1 -1
- package/dist/field/features/relationship/nodes/components/RelationshipComponent.js +119 -56
- package/dist/field/features/relationship/nodes/components/RelationshipComponent.js.map +1 -1
- package/dist/field/features/relationship/plugins/index.d.ts +2 -2
- package/dist/field/features/relationship/plugins/index.d.ts.map +1 -1
- package/dist/field/features/relationship/plugins/index.js +16 -18
- package/dist/field/features/relationship/plugins/index.js.map +1 -1
- package/dist/field/features/relationship/utils/EnabledRelationshipsCondition.d.ts.map +1 -1
- package/dist/field/features/relationship/utils/EnabledRelationshipsCondition.js +1 -3
- package/dist/field/features/relationship/utils/EnabledRelationshipsCondition.js.map +1 -1
- package/dist/field/features/shared/slashMenu/basicGroup.d.ts +3 -0
- package/dist/field/features/shared/slashMenu/basicGroup.d.ts.map +1 -0
- package/dist/field/features/shared/slashMenu/basicGroup.js +11 -0
- package/dist/field/features/shared/slashMenu/basicGroup.js.map +1 -0
- package/dist/field/features/shared/toolbar/addDropdownGroup.d.ts +3 -0
- package/dist/field/features/shared/toolbar/addDropdownGroup.d.ts.map +1 -0
- package/dist/field/features/shared/toolbar/addDropdownGroup.js +12 -0
- package/dist/field/features/shared/toolbar/addDropdownGroup.js.map +1 -0
- package/dist/field/features/shared/toolbar/featureButtonsGroup.d.ts +3 -0
- package/dist/field/features/shared/toolbar/featureButtonsGroup.d.ts.map +1 -0
- package/dist/field/features/shared/toolbar/featureButtonsGroup.js +10 -0
- package/dist/field/features/shared/toolbar/featureButtonsGroup.js.map +1 -0
- package/dist/field/features/shared/toolbar/textDropdownGroup.d.ts +3 -0
- package/dist/field/features/shared/toolbar/textDropdownGroup.d.ts.map +1 -0
- package/dist/field/features/shared/toolbar/textDropdownGroup.js +12 -0
- package/dist/field/features/shared/toolbar/textDropdownGroup.js.map +1 -0
- package/dist/field/features/toolbars/fixed/Toolbar/index.d.ts +5 -0
- package/dist/field/features/toolbars/fixed/Toolbar/index.d.ts.map +1 -0
- package/dist/field/features/toolbars/fixed/Toolbar/index.js +207 -0
- package/dist/field/features/toolbars/fixed/Toolbar/index.js.map +1 -0
- package/dist/field/features/toolbars/fixed/feature.client.d.ts +7 -0
- package/dist/field/features/toolbars/fixed/feature.client.d.ts.map +1 -0
- package/dist/field/features/toolbars/fixed/feature.client.js +20 -0
- package/dist/field/features/toolbars/fixed/feature.client.js.map +1 -0
- package/dist/field/features/toolbars/fixed/feature.server.d.ts +19 -0
- package/dist/field/features/toolbars/fixed/feature.server.d.ts.map +1 -0
- package/dist/field/features/toolbars/fixed/feature.server.js +21 -0
- package/dist/field/features/toolbars/fixed/feature.server.js.map +1 -0
- package/dist/field/features/toolbars/inline/Toolbar/index.d.ts +4 -0
- package/dist/field/features/toolbars/inline/Toolbar/index.d.ts.map +1 -0
- package/dist/field/features/toolbars/inline/Toolbar/index.js +319 -0
- package/dist/field/features/toolbars/inline/Toolbar/index.js.map +1 -0
- package/dist/field/features/toolbars/inline/feature.client.d.ts +6 -0
- package/dist/field/features/toolbars/inline/feature.client.d.ts.map +1 -0
- package/dist/field/features/toolbars/inline/feature.client.js +20 -0
- package/dist/field/features/toolbars/inline/feature.client.js.map +1 -0
- package/dist/field/features/toolbars/inline/feature.server.d.ts +3 -0
- package/dist/field/features/toolbars/inline/feature.server.d.ts.map +1 -0
- package/dist/field/features/toolbars/inline/feature.server.js +16 -0
- package/dist/field/features/toolbars/inline/feature.server.js.map +1 -0
- package/dist/field/features/toolbars/shared/ToolbarButton/index.d.ts +10 -0
- package/dist/field/features/toolbars/shared/ToolbarButton/index.d.ts.map +1 -0
- package/dist/field/{lexical/plugins/FloatingSelectToolbar → features/toolbars/shared}/ToolbarButton/index.js +34 -23
- package/dist/field/features/toolbars/shared/ToolbarButton/index.js.map +1 -0
- package/dist/field/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts +22 -0
- package/dist/field/features/toolbars/shared/ToolbarDropdown/DropDown.d.ts.map +1 -0
- package/dist/field/{lexical/plugins/FloatingSelectToolbar → features/toolbars/shared}/ToolbarDropdown/DropDown.js +75 -102
- package/dist/field/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -0
- package/dist/field/features/toolbars/shared/ToolbarDropdown/index.d.ts +23 -0
- package/dist/field/features/toolbars/shared/ToolbarDropdown/index.d.ts.map +1 -0
- package/dist/field/features/toolbars/shared/ToolbarDropdown/index.js +141 -0
- package/dist/field/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -0
- package/dist/field/features/toolbars/types.d.ts +48 -0
- package/dist/field/features/toolbars/types.d.ts.map +1 -0
- package/dist/field/features/toolbars/types.js.map +1 -0
- package/dist/field/features/typeUtilities.d.ts +8 -0
- package/dist/field/features/typeUtilities.d.ts.map +1 -0
- package/dist/field/features/typeUtilities.js +8 -0
- package/dist/field/features/typeUtilities.js.map +1 -0
- package/dist/field/features/types.d.ts +259 -69
- package/dist/field/features/types.d.ts.map +1 -1
- package/dist/field/features/types.js.map +1 -1
- package/dist/field/features/upload/component/ExtraFieldsDrawer/index.d.ts +1 -1
- package/dist/field/features/upload/component/ExtraFieldsDrawer/index.d.ts.map +1 -1
- package/dist/field/features/upload/component/ExtraFieldsDrawer/index.js +35 -37
- package/dist/field/features/upload/component/ExtraFieldsDrawer/index.js.map +1 -1
- package/dist/field/features/upload/component/index.d.ts.map +1 -1
- package/dist/field/features/upload/component/index.js +160 -85
- package/dist/field/features/upload/component/index.js.map +1 -1
- package/dist/field/features/upload/drawer/commands.d.ts.map +1 -1
- package/dist/field/features/upload/drawer/commands.js +1 -2
- package/dist/field/features/upload/drawer/commands.js.map +1 -1
- package/dist/field/features/upload/drawer/index.d.ts.map +1 -1
- package/dist/field/features/upload/drawer/index.js +17 -18
- package/dist/field/features/upload/drawer/index.js.map +1 -1
- package/dist/field/features/upload/feature.client.d.ts +4 -1
- package/dist/field/features/upload/feature.client.d.ts.map +1 -1
- package/dist/field/features/upload/feature.client.js +52 -26
- package/dist/field/features/upload/feature.client.js.map +1 -1
- package/dist/field/features/upload/feature.server.d.ts +10 -3
- package/dist/field/features/upload/feature.server.d.ts.map +1 -1
- package/dist/field/features/upload/feature.server.js +93 -15
- package/dist/field/features/upload/feature.server.js.map +1 -1
- package/dist/field/features/upload/{populationPromise.d.ts → graphQLPopulationPromise.d.ts} +1 -1
- package/dist/field/features/upload/graphQLPopulationPromise.d.ts.map +1 -0
- package/dist/field/features/upload/graphQLPopulationPromise.js +52 -0
- package/dist/field/features/upload/graphQLPopulationPromise.js.map +1 -0
- package/dist/field/features/upload/i18n.d.ts +3 -0
- package/dist/field/features/upload/i18n.d.ts.map +1 -0
- package/dist/field/features/upload/i18n.js +100 -0
- package/dist/field/features/upload/i18n.js.map +1 -0
- package/dist/field/features/upload/nodes/UploadNode.d.ts +7 -19
- package/dist/field/features/upload/nodes/UploadNode.d.ts.map +1 -1
- package/dist/field/features/upload/nodes/UploadNode.js +45 -15
- package/dist/field/features/upload/nodes/UploadNode.js.map +1 -1
- package/dist/field/features/upload/plugin/index.d.ts +5 -4
- package/dist/field/features/upload/plugin/index.d.ts.map +1 -1
- package/dist/field/features/upload/plugin/index.js +18 -20
- package/dist/field/features/upload/plugin/index.js.map +1 -1
- package/dist/field/features/upload/validate.d.ts +2 -1
- package/dist/field/features/upload/validate.d.ts.map +1 -1
- package/dist/field/features/upload/validate.js +37 -10
- package/dist/field/features/upload/validate.js.map +1 -1
- package/dist/field/index.d.ts +3 -1
- package/dist/field/index.d.ts.map +1 -1
- package/dist/field/index.js +35 -86
- package/dist/field/index.js.map +1 -1
- package/dist/field/lexical/EditorPlugin.d.ts +1 -0
- package/dist/field/lexical/EditorPlugin.d.ts.map +1 -1
- package/dist/field/lexical/EditorPlugin.js +8 -4
- package/dist/field/lexical/EditorPlugin.js.map +1 -1
- package/dist/field/lexical/LexicalEditor.d.ts +3 -1
- package/dist/field/lexical/LexicalEditor.d.ts.map +1 -1
- package/dist/field/lexical/LexicalEditor.js +157 -77
- package/dist/field/lexical/LexicalEditor.js.map +1 -1
- package/dist/field/lexical/LexicalProvider.d.ts +1 -2
- package/dist/field/lexical/LexicalProvider.d.ts.map +1 -1
- package/dist/field/lexical/LexicalProvider.js +52 -41
- package/dist/field/lexical/LexicalProvider.js.map +1 -1
- package/dist/field/lexical/config/client/EditorConfigProvider.d.ts +15 -4
- package/dist/field/lexical/config/client/EditorConfigProvider.d.ts.map +1 -1
- package/dist/field/lexical/config/client/EditorConfigProvider.js +61 -11
- package/dist/field/lexical/config/client/EditorConfigProvider.js.map +1 -1
- package/dist/field/lexical/config/client/default.d.ts +1 -1
- package/dist/field/lexical/config/client/default.d.ts.map +1 -1
- package/dist/field/lexical/config/client/default.js.map +1 -1
- package/dist/field/lexical/config/client/sanitize.d.ts +3 -2
- package/dist/field/lexical/config/client/sanitize.d.ts.map +1 -1
- package/dist/field/lexical/config/client/sanitize.js +83 -33
- package/dist/field/lexical/config/client/sanitize.js.map +1 -1
- package/dist/field/lexical/config/server/default.d.ts +2 -3
- package/dist/field/lexical/config/server/default.d.ts.map +1 -1
- package/dist/field/lexical/config/server/default.js +12 -10
- package/dist/field/lexical/config/server/default.js.map +1 -1
- package/dist/field/lexical/config/server/loader.d.ts +5 -2
- package/dist/field/lexical/config/server/loader.d.ts.map +1 -1
- package/dist/field/lexical/config/server/loader.js +4 -2
- package/dist/field/lexical/config/server/loader.js.map +1 -1
- package/dist/field/lexical/config/server/sanitize.d.ts +2 -1
- package/dist/field/lexical/config/server/sanitize.d.ts.map +1 -1
- package/dist/field/lexical/config/server/sanitize.js +39 -9
- package/dist/field/lexical/config/server/sanitize.js.map +1 -1
- package/dist/field/lexical/config/types.d.ts +3 -1
- package/dist/field/lexical/config/types.d.ts.map +1 -1
- package/dist/field/lexical/config/types.js.map +1 -1
- package/dist/field/lexical/nodes/index.d.ts +1 -2
- package/dist/field/lexical/nodes/index.d.ts.map +1 -1
- package/dist/field/lexical/nodes/index.js.map +1 -1
- package/dist/field/lexical/plugins/MarkdownShortcut/index.d.ts.map +1 -1
- package/dist/field/lexical/plugins/MarkdownShortcut/index.js +3 -3
- package/dist/field/lexical/plugins/MarkdownShortcut/index.js.map +1 -1
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts +10 -10
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.d.ts.map +1 -1
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js +74 -77
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.js.map +1 -1
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts +5 -5
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.d.ts.map +1 -1
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js +8 -10
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.js.map +1 -1
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts +19 -27
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.d.ts.map +1 -1
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js +1 -37
- package/dist/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js.map +1 -1
- package/dist/field/lexical/plugins/SlashMenu/index.d.ts +2 -2
- package/dist/field/lexical/plugins/SlashMenu/index.d.ts.map +1 -1
- package/dist/field/lexical/plugins/SlashMenu/index.js +108 -93
- package/dist/field/lexical/plugins/SlashMenu/index.js.map +1 -1
- package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.d.ts +2 -2
- package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.d.ts.map +1 -1
- package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.js +47 -126
- package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.js.map +1 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.d.ts +1 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.d.ts.map +1 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/highlightElemOriginalPosition.js.map +1 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.d.ts +2 -2
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.d.ts.map +1 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js +116 -67
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.js.map +1 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.d.ts +8 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.d.ts.map +1 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js +83 -16
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/setTargetLine.js.map +1 -1
- package/dist/field/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.d.ts +5 -0
- package/dist/field/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.d.ts.map +1 -0
- package/dist/field/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.js +21 -0
- package/dist/field/lexical/plugins/handles/utils/calculateDistanceFromScrollerElem.js.map +1 -0
- package/dist/field/lexical/plugins/handles/utils/doesLineHeightAffectElement.d.ts +9 -0
- package/dist/field/lexical/plugins/handles/utils/doesLineHeightAffectElement.d.ts.map +1 -0
- package/dist/field/lexical/plugins/handles/utils/doesLineHeightAffectElement.js +35 -0
- package/dist/field/lexical/plugins/handles/utils/doesLineHeightAffectElement.js.map +1 -0
- package/dist/field/lexical/plugins/handles/{DraggableBlockPlugin → utils}/getNodeCloseToPoint.d.ts +5 -1
- package/dist/field/lexical/plugins/handles/utils/getNodeCloseToPoint.d.ts.map +1 -0
- package/dist/field/lexical/plugins/handles/{DraggableBlockPlugin → utils}/getNodeCloseToPoint.js +5 -18
- package/dist/field/lexical/plugins/handles/utils/getNodeCloseToPoint.js.map +1 -0
- package/dist/field/lexical/plugins/handles/utils/getTopLevelNodeKeys.d.ts.map +1 -1
- package/dist/field/lexical/plugins/handles/utils/getTopLevelNodeKeys.js +1 -2
- package/dist/field/lexical/plugins/handles/utils/getTopLevelNodeKeys.js.map +1 -1
- package/dist/field/lexical/plugins/handles/utils/setHandlePosition.d.ts +1 -1
- package/dist/field/lexical/plugins/handles/utils/setHandlePosition.d.ts.map +1 -1
- package/dist/field/lexical/plugins/handles/utils/setHandlePosition.js +19 -7
- package/dist/field/lexical/plugins/handles/utils/setHandlePosition.js.map +1 -1
- package/dist/field/lexical/theme/EditorTheme.d.ts.map +1 -1
- package/dist/field/lexical/theme/EditorTheme.js +1 -1
- package/dist/field/lexical/theme/EditorTheme.js.map +1 -1
- package/dist/field/lexical/ui/ContentEditable.d.ts +1 -1
- package/dist/field/lexical/ui/ContentEditable.d.ts.map +1 -1
- package/dist/field/lexical/ui/ContentEditable.js +3 -4
- package/dist/field/lexical/ui/ContentEditable.js.map +1 -1
- package/dist/field/lexical/ui/icons/AI/index.js +26 -17
- package/dist/field/lexical/ui/icons/AI/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/Add/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/Add/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/Add/index.js +21 -0
- package/dist/field/lexical/ui/icons/Add/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/Add/light.svg +4 -0
- package/dist/field/lexical/ui/icons/AlignCenter/index.js +21 -15
- package/dist/field/lexical/ui/icons/AlignCenter/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/AlignJustify/index.js +21 -15
- package/dist/field/lexical/ui/icons/AlignJustify/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/AlignLeft/index.js +21 -15
- package/dist/field/lexical/ui/icons/AlignLeft/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/AlignRight/index.js +21 -15
- package/dist/field/lexical/ui/icons/AlignRight/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/Block/index.js +30 -24
- package/dist/field/lexical/ui/icons/Block/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/Blockquote/index.js +8 -6
- package/dist/field/lexical/ui/icons/Blockquote/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/Bold/index.js +8 -6
- package/dist/field/lexical/ui/icons/Bold/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/Checklist/index.js +19 -14
- package/dist/field/lexical/ui/icons/Checklist/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/Code/index.js +14 -9
- package/dist/field/lexical/ui/icons/Code/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/CodeBlock/index.js +14 -9
- package/dist/field/lexical/ui/icons/CodeBlock/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/DraggableBlock/light.svg +9 -0
- package/dist/field/lexical/ui/icons/H1/index.js +8 -6
- package/dist/field/lexical/ui/icons/H1/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/H2/index.js +8 -6
- package/dist/field/lexical/ui/icons/H2/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/H3/index.js +8 -6
- package/dist/field/lexical/ui/icons/H3/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/H4/index.js +8 -6
- package/dist/field/lexical/ui/icons/H4/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/H5/index.js +8 -6
- package/dist/field/lexical/ui/icons/H5/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/H6/index.js +8 -6
- package/dist/field/lexical/ui/icons/H6/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/HorizontalRule/index.d.ts +3 -0
- package/dist/field/lexical/ui/icons/HorizontalRule/index.d.ts.map +1 -0
- package/dist/field/lexical/ui/icons/HorizontalRule/index.js +21 -0
- package/dist/field/lexical/ui/icons/HorizontalRule/index.js.map +1 -0
- package/dist/field/lexical/ui/icons/IndentDecrease/index.js +25 -18
- package/dist/field/lexical/ui/icons/IndentDecrease/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/IndentIncrease/index.js +25 -18
- package/dist/field/lexical/ui/icons/IndentIncrease/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/Italic/index.js +8 -6
- package/dist/field/lexical/ui/icons/Italic/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/Link/index.d.ts.map +1 -1
- package/dist/field/lexical/ui/icons/Link/index.js +10 -18
- package/dist/field/lexical/ui/icons/Link/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/OrderedList/index.js +29 -21
- package/dist/field/lexical/ui/icons/OrderedList/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/Relationship/index.js +26 -17
- package/dist/field/lexical/ui/icons/Relationship/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/Strikethrough/index.js +14 -9
- package/dist/field/lexical/ui/icons/Strikethrough/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/Subscript/index.js +8 -6
- package/dist/field/lexical/ui/icons/Subscript/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/Superscript/index.js +8 -6
- package/dist/field/lexical/ui/icons/Superscript/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/Text/index.js +8 -6
- package/dist/field/lexical/ui/icons/Text/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/Underline/index.js +14 -9
- package/dist/field/lexical/ui/icons/Underline/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/UnorderedList/index.js +45 -36
- package/dist/field/lexical/ui/icons/UnorderedList/index.js.map +1 -1
- package/dist/field/lexical/ui/icons/Upload/index.js +24 -18
- package/dist/field/lexical/ui/icons/Upload/index.js.map +1 -1
- package/dist/field/lexical/utils/getSelectedNode.d.ts.map +1 -1
- package/dist/field/lexical/utils/getSelectedNode.js +1 -2
- package/dist/field/lexical/utils/getSelectedNode.js.map +1 -1
- package/dist/field/lexical/utils/nodeFormat.d.ts +2 -2
- package/dist/field/lexical/utils/nodeFormat.d.ts.map +1 -1
- package/dist/field/lexical/utils/nodeFormat.js +1 -1
- package/dist/field/lexical/utils/nodeFormat.js.map +1 -1
- package/dist/field/lexical/utils/setFloatingElemPosition.d.ts +11 -1
- package/dist/field/lexical/utils/setFloatingElemPosition.d.ts.map +1 -1
- package/dist/field/lexical/utils/setFloatingElemPosition.js +16 -13
- package/dist/field/lexical/utils/setFloatingElemPosition.js.map +1 -1
- package/dist/field/lexical/utils/url.d.ts.map +1 -1
- package/dist/field/lexical/utils/url.js +13 -2
- package/dist/field/lexical/utils/url.js.map +1 -1
- package/dist/forEachNodeRecursively.d.ts +10 -0
- package/dist/forEachNodeRecursively.d.ts.map +1 -0
- package/dist/forEachNodeRecursively.js +24 -0
- package/dist/forEachNodeRecursively.js.map +1 -0
- package/dist/generateComponentMap.d.ts +1 -1
- package/dist/generateComponentMap.d.ts.map +1 -1
- package/dist/generateComponentMap.js +21 -29
- package/dist/generateComponentMap.js.map +1 -1
- package/dist/generateSchemaMap.d.ts +1 -1
- package/dist/generateSchemaMap.d.ts.map +1 -1
- package/dist/generateSchemaMap.js +4 -12
- package/dist/generateSchemaMap.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 +21 -36
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +592 -201
- package/dist/index.js.map +1 -1
- package/dist/{populate → populateGraphQL}/defaultValue.d.ts +0 -1
- package/dist/populateGraphQL/defaultValue.d.ts.map +1 -0
- package/dist/{populate → populateGraphQL}/defaultValue.js +1 -19
- 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/{populate/recurseNestedFields.js → populateGraphQL/recursivelyPopulateFieldsForGraphQL.js} +7 -5
- package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.js.map +1 -0
- package/dist/recurseNodeTree.d.ts +9 -0
- package/dist/recurseNodeTree.d.ts.map +1 -0
- package/dist/recurseNodeTree.js +27 -0
- package/dist/recurseNodeTree.js.map +1 -0
- package/dist/types.d.ts +45 -8
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/useLexicalFeature.d.ts.map +1 -1
- package/dist/useLexicalFeature.js +6 -3
- package/dist/useLexicalFeature.js.map +1 -1
- package/dist/validate/index.d.ts +2 -2
- 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 +1 -1
- 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 +71 -53
- package/components.d.ts +0 -6
- package/components.js +0 -7
- 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/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/blocks/component/index.scss +0 -153
- 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/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/debug/testrecorder/feature.client.d.ts.map +0 -1
- package/dist/field/features/debug/testrecorder/feature.server.d.ts.map +0 -1
- 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.map +0 -1
- package/dist/field/features/debug/testrecorder/plugin/index.scss +0 -49
- package/dist/field/features/debug/treeview/feature.client.d.ts.map +0 -1
- package/dist/field/features/debug/treeview/feature.server.d.ts.map +0 -1
- 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.map +0 -1
- package/dist/field/features/debug/treeview/plugin/index.scss +0 -78
- 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.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.map +0 -1
- package/dist/field/features/format/inlinecode/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/index.scss +0 -50
- package/dist/field/features/link/plugins/floatingLinkEditor/index.scss +0 -78
- 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/common/markdown.js.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- 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.map +0 -1
- package/dist/field/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.scss +0 -14
- package/dist/field/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.scss +0 -14
- package/dist/field/features/relationship/nodes/components/index.scss +0 -97
- 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/upload/component/index.scss +0 -152
- 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/index.scss +0 -46
- package/dist/field/lexical/LexicalEditor.scss +0 -56
- 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.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.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.map +0 -1
- package/dist/field/lexical/plugins/SlashMenu/index.scss +0 -61
- package/dist/field/lexical/plugins/handles/AddBlockHandlePlugin/index.scss +0 -31
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.d.ts.map +0 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/getNodeCloseToPoint.js.map +0 -1
- package/dist/field/lexical/plugins/handles/DraggableBlockPlugin/index.scss +0 -55
- package/dist/field/lexical/theme/EditorTheme.scss +0 -505
- package/dist/field/lexical/ui/ContentEditable.scss +0 -25
- package/dist/populate/defaultValue.d.ts.map +0 -1
- 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.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 -209
- package/dist/scss/colors.scss +0 -269
- package/dist/scss/fonts.scss +0 -75
- 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 -220
- package/dist/scss/z-index.scss +0 -9
- package/src/index.ts +0 -423
- /package/dist/field/features/debug/{testrecorder → testRecorder}/feature.client.js +0 -0
- /package/dist/field/features/debug/{testrecorder → testRecorder}/feature.server.d.ts +0 -0
- /package/dist/field/features/debug/{treeview → treeView}/feature.client.js +0 -0
- /package/dist/field/features/debug/{treeview → treeView}/feature.server.d.ts +0 -0
- /package/dist/field/features/format/{inlinecode → inlineCode}/feature.server.d.ts +0 -0
- /package/dist/field/features/format/{inlinecode → inlineCode}/markdownTransformers.d.ts +0 -0
- /package/dist/field/features/format/{inlinecode → inlineCode}/markdownTransformers.js +0 -0
- /package/dist/field/features/lists/{orderedlist → orderedList}/feature.server.d.ts +0 -0
- /package/dist/field/features/lists/{orderedlist → orderedList}/markdownTransformer.d.ts +0 -0
- /package/dist/field/features/lists/{common → shared}/markdown.d.ts +0 -0
- /package/dist/field/features/lists/{unorderedlist → unorderedList}/feature.server.d.ts +0 -0
- /package/dist/field/features/lists/{unorderedlist → unorderedList}/markdownTransformer.d.ts +0 -0
- /package/dist/field/{lexical/plugins/FloatingSelectToolbar → features/toolbars}/types.js +0 -0
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
import
|
|
5
|
-
const { mergeRegister } = lexicalUtilsImport;
|
|
6
|
-
import lexicalImport from 'lexical';
|
|
7
|
-
const { $getSelection, $isRangeSelection, COMMAND_PRIORITY_LOW, KEY_ARROW_DOWN_COMMAND, KEY_ARROW_UP_COMMAND, KEY_ENTER_COMMAND, KEY_ESCAPE_COMMAND, KEY_TAB_COMMAND, createCommand } = lexicalImport;
|
|
2
|
+
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
|
|
3
|
+
import { mergeRegister } from '@lexical/utils';
|
|
4
|
+
import { $getSelection, $isRangeSelection, COMMAND_PRIORITY_LOW, KEY_ARROW_DOWN_COMMAND, KEY_ARROW_UP_COMMAND, KEY_ENTER_COMMAND, KEY_ESCAPE_COMMAND, KEY_TAB_COMMAND, createCommand } from 'lexical';
|
|
8
5
|
import { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';
|
|
9
6
|
const baseClass = 'slash-menu-popup';
|
|
10
7
|
const scrollIntoViewIfNeeded = (target)=>{
|
|
@@ -31,7 +28,7 @@ const scrollIntoViewIfNeeded = (target)=>{
|
|
|
31
28
|
*/ function getFullMatchOffset(documentText, entryText, offset) {
|
|
32
29
|
let triggerOffset = offset;
|
|
33
30
|
for(let i = triggerOffset; i <= entryText.length; i++){
|
|
34
|
-
if (documentText.
|
|
31
|
+
if (documentText.substring(documentText.length - i) === entryText.substring(0, i)) {
|
|
35
32
|
triggerOffset = i;
|
|
36
33
|
}
|
|
37
34
|
}
|
|
@@ -142,50 +139,50 @@ export function useDynamicPositioning(resolution, targetElement, onReposition, o
|
|
|
142
139
|
]);
|
|
143
140
|
}
|
|
144
141
|
export const SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND = createCommand('SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND');
|
|
145
|
-
export function LexicalMenu({ anchorElementRef, close, editor, //
|
|
146
|
-
|
|
147
|
-
const [
|
|
142
|
+
export function LexicalMenu({ anchorElementRef, close, editor, // groups filtering is already handled in SlashMenu/index.tsx. Thus, groups always contains the matching items.
|
|
143
|
+
groups, menuRenderFn, onSelectItem, resolution, shouldSplitNodeWithQuery = false }) {
|
|
144
|
+
const [selectedItemKey, setSelectedItemKey] = useState(null);
|
|
148
145
|
const matchingString = resolution.match && resolution.match.matchingString || '';
|
|
149
|
-
const
|
|
146
|
+
const updateSelectedItem = useCallback((item)=>{
|
|
150
147
|
const rootElem = editor.getRootElement();
|
|
151
148
|
if (rootElem !== null) {
|
|
152
|
-
rootElem.setAttribute('aria-activedescendant', `${baseClass}__item-${
|
|
153
|
-
|
|
149
|
+
rootElem.setAttribute('aria-activedescendant', `${baseClass}__item-${item.key}`);
|
|
150
|
+
setSelectedItemKey(item.key);
|
|
154
151
|
}
|
|
155
152
|
}, [
|
|
156
153
|
editor
|
|
157
154
|
]);
|
|
158
|
-
const
|
|
159
|
-
// set selected
|
|
160
|
-
if (
|
|
161
|
-
//
|
|
162
|
-
const
|
|
163
|
-
if (
|
|
164
|
-
const
|
|
165
|
-
|
|
155
|
+
const setSelectedItemKeyToFirstMatchingItem = useCallback(()=>{
|
|
156
|
+
// set selected item to the first of the matching ones
|
|
157
|
+
if (groups !== null && matchingString != null) {
|
|
158
|
+
// groups filtering is already handled in SlashMenu/index.tsx. Thus, groups always contains the matching items.
|
|
159
|
+
const allItems = groups.flatMap((group)=>group.items);
|
|
160
|
+
if (allItems.length) {
|
|
161
|
+
const firstMatchingItem = allItems[0];
|
|
162
|
+
updateSelectedItem(firstMatchingItem);
|
|
166
163
|
}
|
|
167
164
|
}
|
|
168
165
|
}, [
|
|
169
|
-
|
|
170
|
-
|
|
166
|
+
groups,
|
|
167
|
+
updateSelectedItem,
|
|
171
168
|
matchingString
|
|
172
169
|
]);
|
|
173
170
|
useEffect(()=>{
|
|
174
|
-
|
|
171
|
+
setSelectedItemKeyToFirstMatchingItem();
|
|
175
172
|
}, [
|
|
176
173
|
matchingString,
|
|
177
|
-
|
|
174
|
+
setSelectedItemKeyToFirstMatchingItem
|
|
178
175
|
]);
|
|
179
|
-
const
|
|
176
|
+
const selectItemAndCleanUp = useCallback((selectedItem)=>{
|
|
180
177
|
editor.update(()=>{
|
|
181
178
|
const textNodeContainingQuery = resolution.match != null && shouldSplitNodeWithQuery ? $splitNodeContainingQuery(resolution.match) : null;
|
|
182
|
-
|
|
179
|
+
onSelectItem(selectedItem, textNodeContainingQuery, close, resolution.match ? resolution.match.matchingString : '');
|
|
183
180
|
});
|
|
184
181
|
}, [
|
|
185
182
|
editor,
|
|
186
183
|
shouldSplitNodeWithQuery,
|
|
187
184
|
resolution.match,
|
|
188
|
-
|
|
185
|
+
onSelectItem,
|
|
189
186
|
close
|
|
190
187
|
]);
|
|
191
188
|
useEffect(()=>{
|
|
@@ -199,42 +196,42 @@ groupsWithOptions, menuRenderFn, onSelectOption, resolution, shouldSplitNodeWith
|
|
|
199
196
|
editor
|
|
200
197
|
]);
|
|
201
198
|
useLayoutEffect(()=>{
|
|
202
|
-
if (
|
|
203
|
-
|
|
204
|
-
} else if (
|
|
205
|
-
|
|
199
|
+
if (groups === null) {
|
|
200
|
+
setSelectedItemKey(null);
|
|
201
|
+
} else if (selectedItemKey === null) {
|
|
202
|
+
setSelectedItemKeyToFirstMatchingItem();
|
|
206
203
|
}
|
|
207
204
|
}, [
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
205
|
+
groups,
|
|
206
|
+
selectedItemKey,
|
|
207
|
+
updateSelectedItem,
|
|
208
|
+
setSelectedItemKeyToFirstMatchingItem
|
|
212
209
|
]);
|
|
213
210
|
useEffect(()=>{
|
|
214
|
-
return mergeRegister(editor.registerCommand(SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND, ({
|
|
215
|
-
if (
|
|
216
|
-
scrollIntoViewIfNeeded(
|
|
211
|
+
return mergeRegister(editor.registerCommand(SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND, ({ item })=>{
|
|
212
|
+
if (item.ref && item.ref.current != null) {
|
|
213
|
+
scrollIntoViewIfNeeded(item.ref.current);
|
|
217
214
|
return true;
|
|
218
215
|
}
|
|
219
216
|
return false;
|
|
220
217
|
}, COMMAND_PRIORITY_LOW));
|
|
221
218
|
}, [
|
|
222
219
|
editor,
|
|
223
|
-
|
|
220
|
+
updateSelectedItem
|
|
224
221
|
]);
|
|
225
222
|
useEffect(()=>{
|
|
226
223
|
return mergeRegister(editor.registerCommand(KEY_ARROW_DOWN_COMMAND, (payload)=>{
|
|
227
224
|
const event = payload;
|
|
228
|
-
if (
|
|
229
|
-
const
|
|
230
|
-
const selectedIndex =
|
|
231
|
-
const newSelectedIndex = selectedIndex !==
|
|
232
|
-
const
|
|
233
|
-
|
|
234
|
-
if (
|
|
225
|
+
if (groups !== null && groups.length && selectedItemKey !== null) {
|
|
226
|
+
const allItems = groups.flatMap((group)=>group.items);
|
|
227
|
+
const selectedIndex = allItems.findIndex((item)=>item.key === selectedItemKey);
|
|
228
|
+
const newSelectedIndex = selectedIndex !== allItems.length - 1 ? selectedIndex + 1 : 0;
|
|
229
|
+
const newSelectedItem = allItems[newSelectedIndex];
|
|
230
|
+
updateSelectedItem(newSelectedItem);
|
|
231
|
+
if (newSelectedItem.ref != null && newSelectedItem.ref.current) {
|
|
235
232
|
editor.dispatchCommand(SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND, {
|
|
236
233
|
index: newSelectedIndex,
|
|
237
|
-
|
|
234
|
+
item: newSelectedItem
|
|
238
235
|
});
|
|
239
236
|
}
|
|
240
237
|
event.preventDefault();
|
|
@@ -243,14 +240,14 @@ groupsWithOptions, menuRenderFn, onSelectOption, resolution, shouldSplitNodeWith
|
|
|
243
240
|
return true;
|
|
244
241
|
}, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_ARROW_UP_COMMAND, (payload)=>{
|
|
245
242
|
const event = payload;
|
|
246
|
-
if (
|
|
247
|
-
const
|
|
248
|
-
const selectedIndex =
|
|
249
|
-
const newSelectedIndex = selectedIndex !== 0 ? selectedIndex - 1 :
|
|
250
|
-
const
|
|
251
|
-
|
|
252
|
-
if (
|
|
253
|
-
scrollIntoViewIfNeeded(
|
|
243
|
+
if (groups !== null && groups.length && selectedItemKey !== null) {
|
|
244
|
+
const allItems = groups.flatMap((group)=>group.items);
|
|
245
|
+
const selectedIndex = allItems.findIndex((item)=>item.key === selectedItemKey);
|
|
246
|
+
const newSelectedIndex = selectedIndex !== 0 ? selectedIndex - 1 : allItems.length - 1;
|
|
247
|
+
const newSelectedItem = allItems[newSelectedIndex];
|
|
248
|
+
updateSelectedItem(newSelectedItem);
|
|
249
|
+
if (newSelectedItem.ref != null && newSelectedItem.ref.current) {
|
|
250
|
+
scrollIntoViewIfNeeded(newSelectedItem.ref.current);
|
|
254
251
|
}
|
|
255
252
|
event.preventDefault();
|
|
256
253
|
event.stopImmediatePropagation();
|
|
@@ -264,51 +261,51 @@ groupsWithOptions, menuRenderFn, onSelectOption, resolution, shouldSplitNodeWith
|
|
|
264
261
|
return true;
|
|
265
262
|
}, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_TAB_COMMAND, (payload)=>{
|
|
266
263
|
const event = payload;
|
|
267
|
-
if (
|
|
264
|
+
if (groups === null || selectedItemKey === null) {
|
|
268
265
|
return false;
|
|
269
266
|
}
|
|
270
|
-
const
|
|
271
|
-
const
|
|
272
|
-
if (!
|
|
267
|
+
const allItems = groups.flatMap((group)=>group.items);
|
|
268
|
+
const selectedItem = allItems.find((item)=>item.key === selectedItemKey);
|
|
269
|
+
if (!selectedItem) {
|
|
273
270
|
return false;
|
|
274
271
|
}
|
|
275
272
|
event.preventDefault();
|
|
276
273
|
event.stopImmediatePropagation();
|
|
277
|
-
|
|
274
|
+
selectItemAndCleanUp(selectedItem);
|
|
278
275
|
return true;
|
|
279
276
|
}, COMMAND_PRIORITY_LOW), editor.registerCommand(KEY_ENTER_COMMAND, (event)=>{
|
|
280
|
-
if (
|
|
277
|
+
if (groups === null || selectedItemKey === null) {
|
|
281
278
|
return false;
|
|
282
279
|
}
|
|
283
|
-
const
|
|
284
|
-
const
|
|
285
|
-
if (!
|
|
280
|
+
const allItems = groups.flatMap((group)=>group.items);
|
|
281
|
+
const selectedItem = allItems.find((item)=>item.key === selectedItemKey);
|
|
282
|
+
if (!selectedItem) {
|
|
286
283
|
return false;
|
|
287
284
|
}
|
|
288
285
|
if (event !== null) {
|
|
289
286
|
event.preventDefault();
|
|
290
287
|
event.stopImmediatePropagation();
|
|
291
288
|
}
|
|
292
|
-
|
|
289
|
+
selectItemAndCleanUp(selectedItem);
|
|
293
290
|
return true;
|
|
294
291
|
}, COMMAND_PRIORITY_LOW));
|
|
295
292
|
}, [
|
|
296
|
-
|
|
293
|
+
selectItemAndCleanUp,
|
|
297
294
|
close,
|
|
298
295
|
editor,
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
296
|
+
groups,
|
|
297
|
+
selectedItemKey,
|
|
298
|
+
updateSelectedItem
|
|
302
299
|
]);
|
|
303
300
|
const listItemProps = useMemo(()=>({
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
301
|
+
groups,
|
|
302
|
+
selectItemAndCleanUp,
|
|
303
|
+
selectedItemKey,
|
|
304
|
+
setSelectedItemKey
|
|
308
305
|
}), [
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
306
|
+
selectItemAndCleanUp,
|
|
307
|
+
selectedItemKey,
|
|
308
|
+
groups
|
|
312
309
|
]);
|
|
313
310
|
return menuRenderFn(anchorElementRef, listItemProps, resolution.match ? resolution.match.matchingString : '');
|
|
314
311
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.tsx"],"sourcesContent":["'use client'\nimport type { LexicalCommand, LexicalEditor, TextNode } from 'lexical'\nimport type { MutableRefObject, ReactPortal } from 'react'\n\nimport lexicalComposerContextImport from '@lexical/react/LexicalComposerContext.js'\nconst { useLexicalComposerContext } = lexicalComposerContextImport\n\nimport lexicalUtilsImport from '@lexical/utils'\nconst { mergeRegister } = lexicalUtilsImport\n\nimport lexicalImport from 'lexical'\nconst {\n $getSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_LOW,\n KEY_ARROW_DOWN_COMMAND,\n KEY_ARROW_UP_COMMAND,\n KEY_ENTER_COMMAND,\n KEY_ESCAPE_COMMAND,\n KEY_TAB_COMMAND,\n createCommand,\n} = lexicalImport\n\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'\n\nimport type { MenuTextMatch } from '../useMenuTriggerMatch.js'\nimport type { SlashMenuGroup, SlashMenuOption } from './types.js'\n\nexport type MenuResolution = {\n getRect: () => DOMRect\n match?: MenuTextMatch\n}\n\nconst baseClass = 'slash-menu-popup'\n\nexport type MenuRenderFn = (\n anchorElementRef: MutableRefObject<HTMLElement | null>,\n itemProps: {\n groupsWithOptions: Array<SlashMenuGroup>\n selectOptionAndCleanUp: (selectedOption: SlashMenuOption) => void\n selectedOptionKey: null | string\n setSelectedOptionKey: (optionKey: string) => void\n },\n matchingString: null | string,\n) => JSX.Element | ReactPortal | null\n\nconst scrollIntoViewIfNeeded = (target: HTMLElement) => {\n const typeaheadContainerNode = document.getElementById('slash-menu')\n if (!typeaheadContainerNode) return\n\n const typeaheadRect = typeaheadContainerNode.getBoundingClientRect()\n\n if (typeaheadRect.top + typeaheadRect.height > window.innerHeight) {\n typeaheadContainerNode.scrollIntoView({\n block: 'center',\n })\n }\n\n if (typeaheadRect.top < 0) {\n typeaheadContainerNode.scrollIntoView({\n block: 'center',\n })\n }\n\n target.scrollIntoView({ block: 'nearest' })\n}\n\n/**\n * Walk backwards along user input and forward through entity title to try\n * and replace more of the user's text with entity.\n */\nfunction getFullMatchOffset(documentText: string, entryText: string, offset: number): number {\n let triggerOffset = offset\n for (let i = triggerOffset; i <= entryText.length; i++) {\n if (documentText.substr(-i) === entryText.substr(0, i)) {\n triggerOffset = i\n }\n }\n return triggerOffset\n}\n\n/**\n * Split Lexical TextNode and return a new TextNode only containing matched text.\n * Common use cases include: removing the node, replacing with a new node.\n */\nfunction $splitNodeContainingQuery(match: MenuTextMatch): TextNode | null {\n const selection = $getSelection()\n if (!$isRangeSelection(selection) || !selection.isCollapsed()) {\n return null\n }\n const anchor = selection.anchor\n if (anchor.type !== 'text') {\n return null\n }\n const anchorNode = anchor.getNode()\n if (!anchorNode.isSimpleText()) {\n return null\n }\n const selectionOffset = anchor.offset\n const textContent = anchorNode.getTextContent().slice(0, selectionOffset)\n // eslint-disable-next-line react/destructuring-assignment\n const characterOffset = match.replaceableString.length\n // eslint-disable-next-line react/destructuring-assignment\n const queryOffset = getFullMatchOffset(textContent, match.matchingString, characterOffset)\n const startOffset = selectionOffset - queryOffset\n if (startOffset < 0) {\n return null\n }\n let newNode\n if (startOffset === 0) {\n ;[newNode] = anchorNode.splitText(selectionOffset)\n } else {\n ;[, newNode] = anchorNode.splitText(startOffset, selectionOffset)\n }\n\n return newNode\n}\n\n// Got from https://stackoverflow.com/a/42543908/2013580\nexport function getScrollParent(\n element: HTMLElement,\n includeHidden: boolean,\n): HTMLBodyElement | HTMLElement {\n let style = getComputedStyle(element)\n const excludeStaticParent = style.position === 'absolute'\n const overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/\n if (style.position === 'fixed') {\n return document.body\n }\n for (let parent: HTMLElement | null = element; (parent = parent.parentElement); ) {\n style = getComputedStyle(parent)\n if (excludeStaticParent && style.position === 'static') {\n continue\n }\n if (overflowRegex.test(style.overflow + style.overflowY + style.overflowX)) {\n return parent\n }\n }\n return document.body\n}\n\nfunction isTriggerVisibleInNearestScrollContainer(\n targetElement: HTMLElement,\n containerElement: HTMLElement,\n): boolean {\n const tRect = targetElement.getBoundingClientRect()\n const cRect = containerElement.getBoundingClientRect()\n return tRect.top > cRect.top && tRect.top < cRect.bottom\n}\n\n// Reposition the menu on scroll, window resize, and element resize.\nexport function useDynamicPositioning(\n resolution: MenuResolution | null,\n targetElement: HTMLElement | null,\n onReposition: () => void,\n onVisibilityChange?: (isInView: boolean) => void,\n) {\n const [editor] = useLexicalComposerContext()\n useEffect(() => {\n if (targetElement != null && resolution != null) {\n const rootElement = editor.getRootElement()\n const rootScrollParent =\n rootElement != null ? getScrollParent(rootElement, false) : document.body\n let ticking = false\n let previousIsInView = isTriggerVisibleInNearestScrollContainer(\n targetElement,\n rootScrollParent,\n )\n const handleScroll = function () {\n if (!ticking) {\n window.requestAnimationFrame(function () {\n onReposition()\n ticking = false\n })\n ticking = true\n }\n const isInView = isTriggerVisibleInNearestScrollContainer(targetElement, rootScrollParent)\n if (isInView !== previousIsInView) {\n previousIsInView = isInView\n if (onVisibilityChange != null) {\n onVisibilityChange(isInView)\n }\n }\n }\n const resizeObserver = new ResizeObserver(onReposition)\n window.addEventListener('resize', onReposition)\n document.addEventListener('scroll', handleScroll, {\n capture: true,\n passive: true,\n })\n resizeObserver.observe(targetElement)\n return () => {\n resizeObserver.unobserve(targetElement)\n window.removeEventListener('resize', onReposition)\n document.removeEventListener('scroll', handleScroll, true)\n }\n }\n }, [targetElement, editor, onVisibilityChange, onReposition, resolution])\n}\n\nexport const SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND: LexicalCommand<{\n index: number\n option: SlashMenuOption\n}> = createCommand('SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND')\n\nexport function LexicalMenu({\n anchorElementRef,\n close,\n editor,\n // groupsWithOptions filtering is already handled in SlashMenu/index.tsx. Thus, groupsWithOptions always contains the matching options.\n groupsWithOptions,\n menuRenderFn,\n onSelectOption,\n resolution,\n shouldSplitNodeWithQuery = false,\n}: {\n anchorElementRef: MutableRefObject<HTMLElement>\n close: () => void\n editor: LexicalEditor\n groupsWithOptions: Array<SlashMenuGroup>\n menuRenderFn: MenuRenderFn\n onSelectOption: (\n option: SlashMenuOption,\n textNodeContainingQuery: TextNode | null,\n closeMenu: () => void,\n matchingString: string,\n ) => void\n resolution: MenuResolution\n shouldSplitNodeWithQuery?: boolean\n}): JSX.Element | null {\n const [selectedOptionKey, setSelectedOptionKey] = useState<null | string>(null)\n\n const matchingString = (resolution.match && resolution.match.matchingString) || ''\n\n const updateSelectedOption = useCallback(\n (option: SlashMenuOption) => {\n const rootElem = editor.getRootElement()\n if (rootElem !== null) {\n rootElem.setAttribute('aria-activedescendant', `${baseClass}__item-${option.key}`)\n setSelectedOptionKey(option.key)\n }\n },\n [editor],\n )\n\n const setSelectedOptionKeyToFirstMatchingOption = useCallback(() => {\n // set selected option to the first of the matching ones\n if (groupsWithOptions !== null && matchingString != null) {\n // groupsWithOptions filtering is already handled in SlashMenu/index.tsx. Thus, groupsWithOptions always contains the matching options.\n const allOptions = groupsWithOptions.flatMap((group) => group.options)\n\n if (allOptions.length) {\n const firstMatchingOption = allOptions[0]\n updateSelectedOption(firstMatchingOption)\n }\n }\n }, [groupsWithOptions, updateSelectedOption, matchingString])\n\n useEffect(() => {\n setSelectedOptionKeyToFirstMatchingOption()\n }, [matchingString, setSelectedOptionKeyToFirstMatchingOption])\n\n const selectOptionAndCleanUp = useCallback(\n (selectedOption: SlashMenuOption) => {\n editor.update(() => {\n const textNodeContainingQuery =\n resolution.match != null && shouldSplitNodeWithQuery\n ? $splitNodeContainingQuery(resolution.match)\n : null\n\n onSelectOption(\n selectedOption,\n textNodeContainingQuery,\n close,\n resolution.match ? resolution.match.matchingString : '',\n )\n })\n },\n [editor, shouldSplitNodeWithQuery, resolution.match, onSelectOption, close],\n )\n\n useEffect(() => {\n return () => {\n const rootElem = editor.getRootElement()\n if (rootElem !== null) {\n rootElem.removeAttribute('aria-activedescendant')\n }\n }\n }, [editor])\n\n useLayoutEffect(() => {\n if (groupsWithOptions === null) {\n setSelectedOptionKey(null)\n } else if (selectedOptionKey === null) {\n setSelectedOptionKeyToFirstMatchingOption()\n }\n }, [\n groupsWithOptions,\n selectedOptionKey,\n updateSelectedOption,\n setSelectedOptionKeyToFirstMatchingOption,\n ])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND,\n ({ option }) => {\n if (option.ref && option.ref.current != null) {\n scrollIntoViewIfNeeded(option.ref.current)\n return true\n }\n\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, updateSelectedOption])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand<KeyboardEvent>(\n KEY_ARROW_DOWN_COMMAND,\n (payload) => {\n const event = payload\n if (\n groupsWithOptions !== null &&\n groupsWithOptions.length &&\n selectedOptionKey !== null\n ) {\n const allOptions = groupsWithOptions.flatMap((group) => group.options)\n const selectedIndex = allOptions.findIndex((option) => option.key === selectedOptionKey)\n\n const newSelectedIndex = selectedIndex !== allOptions.length - 1 ? selectedIndex + 1 : 0\n\n const newSelectedOption = allOptions[newSelectedIndex]\n\n updateSelectedOption(newSelectedOption)\n if (newSelectedOption.ref != null && newSelectedOption.ref.current) {\n editor.dispatchCommand(SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND, {\n index: newSelectedIndex,\n option: newSelectedOption,\n })\n }\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_ARROW_UP_COMMAND,\n (payload) => {\n const event = payload\n if (\n groupsWithOptions !== null &&\n groupsWithOptions.length &&\n selectedOptionKey !== null\n ) {\n const allOptions = groupsWithOptions.flatMap((group) => group.options)\n const selectedIndex = allOptions.findIndex((option) => option.key === selectedOptionKey)\n\n const newSelectedIndex = selectedIndex !== 0 ? selectedIndex - 1 : allOptions.length - 1\n\n const newSelectedOption = allOptions[newSelectedIndex]\n\n updateSelectedOption(newSelectedOption)\n if (newSelectedOption.ref != null && newSelectedOption.ref.current) {\n scrollIntoViewIfNeeded(newSelectedOption.ref.current)\n }\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_ESCAPE_COMMAND,\n (payload) => {\n const event = payload\n event.preventDefault()\n event.stopImmediatePropagation()\n close()\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_TAB_COMMAND,\n (payload) => {\n const event = payload\n\n if (groupsWithOptions === null || selectedOptionKey === null) {\n return false\n }\n const allOptions = groupsWithOptions.flatMap((group) => group.options)\n const selectedOption = allOptions.find((option) => option.key === selectedOptionKey)\n if (!selectedOption) {\n return false\n }\n\n event.preventDefault()\n event.stopImmediatePropagation()\n selectOptionAndCleanUp(selectedOption)\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(\n KEY_ENTER_COMMAND,\n (event: KeyboardEvent | null) => {\n if (groupsWithOptions === null || selectedOptionKey === null) {\n return false\n }\n const allOptions = groupsWithOptions.flatMap((group) => group.options)\n const selectedOption = allOptions.find((option) => option.key === selectedOptionKey)\n if (!selectedOption) {\n return false\n }\n\n if (event !== null) {\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n selectOptionAndCleanUp(selectedOption)\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [\n selectOptionAndCleanUp,\n close,\n editor,\n groupsWithOptions,\n selectedOptionKey,\n updateSelectedOption,\n ])\n\n const listItemProps = useMemo(\n () => ({\n groupsWithOptions,\n selectOptionAndCleanUp,\n selectedOptionKey,\n setSelectedOptionKey,\n }),\n [selectOptionAndCleanUp, selectedOptionKey, groupsWithOptions],\n )\n\n return menuRenderFn(\n anchorElementRef,\n listItemProps,\n resolution.match ? resolution.match.matchingString : '',\n )\n}\n\nexport function useMenuAnchorRef(\n anchorElem: HTMLElement,\n resolution: MenuResolution | null,\n setResolution: (r: MenuResolution | null) => void,\n className?: string,\n): MutableRefObject<HTMLElement> {\n const [editor] = useLexicalComposerContext()\n const anchorElementRef = useRef<HTMLElement>(document.createElement('div'))\n const positionMenu = useCallback(() => {\n const rootElement = editor.getRootElement()\n const containerDiv = anchorElementRef.current\n\n const VERTICAL_OFFSET = 32 as const\n\n const menuEle = containerDiv.firstChild as Element\n if (rootElement !== null && resolution !== null) {\n const { height, width } = resolution.getRect()\n let { left, top } = resolution.getRect()\n\n const rawTop = top\n top -= anchorElem.getBoundingClientRect().top + window.scrollY\n left -= anchorElem.getBoundingClientRect().left + window.scrollX\n containerDiv.style.left = `${left + window.scrollX}px`\n containerDiv.style.height = `${height}px`\n containerDiv.style.width = `${width}px`\n if (menuEle !== null) {\n const menuRect = menuEle.getBoundingClientRect()\n const menuHeight = menuRect.height\n const menuWidth = menuRect.width\n\n const rootElementRect = rootElement.getBoundingClientRect()\n\n if (left + menuWidth > rootElementRect.right) {\n containerDiv.style.left = `${rootElementRect.right - menuWidth + window.scrollX}px`\n }\n\n const wouldGoOffBottomOfScreen = rawTop + menuHeight + VERTICAL_OFFSET > window.innerHeight\n //const wouldGoOffBottomOfContainer = top + menuHeight > rootElementRect.bottom\n const wouldGoOffTopOfScreen = rawTop < 0\n\n // Position slash menu above the cursor instead of below (default) if it would otherwise go off the bottom of the screen.\n if (wouldGoOffBottomOfScreen && !wouldGoOffTopOfScreen) {\n const margin = 24\n containerDiv.style.top = `${\n top + VERTICAL_OFFSET - menuHeight + window.scrollY - (height + margin)\n }px`\n } else {\n containerDiv.style.top = `${top + window.scrollY + VERTICAL_OFFSET}px`\n }\n }\n\n if (!containerDiv.isConnected) {\n if (className != null) {\n containerDiv.className = className\n }\n containerDiv.setAttribute('aria-label', 'Slash menu')\n containerDiv.setAttribute('id', 'slash-menu')\n containerDiv.setAttribute('role', 'listbox')\n containerDiv.style.display = 'block'\n containerDiv.style.position = 'absolute'\n anchorElem.append(containerDiv)\n }\n anchorElementRef.current = containerDiv\n rootElement.setAttribute('aria-controls', 'slash-menu')\n }\n }, [editor, resolution, className, anchorElem])\n\n useEffect(() => {\n const rootElement = editor.getRootElement()\n if (resolution !== null) {\n positionMenu()\n return () => {\n if (rootElement !== null) {\n rootElement.removeAttribute('aria-controls')\n }\n\n const containerDiv = anchorElementRef.current\n if (containerDiv !== null && containerDiv.isConnected) {\n containerDiv.remove()\n }\n }\n }\n }, [editor, positionMenu, resolution])\n\n const onVisibilityChange = useCallback(\n (isInView: boolean) => {\n if (resolution !== null) {\n if (!isInView) {\n setResolution(null)\n }\n }\n },\n [resolution, setResolution],\n )\n\n useDynamicPositioning(resolution, anchorElementRef.current, positionMenu, onVisibilityChange)\n\n return anchorElementRef\n}\n"],"names":["lexicalComposerContextImport","useLexicalComposerContext","lexicalUtilsImport","mergeRegister","lexicalImport","$getSelection","$isRangeSelection","COMMAND_PRIORITY_LOW","KEY_ARROW_DOWN_COMMAND","KEY_ARROW_UP_COMMAND","KEY_ENTER_COMMAND","KEY_ESCAPE_COMMAND","KEY_TAB_COMMAND","createCommand","useCallback","useEffect","useLayoutEffect","useMemo","useRef","useState","baseClass","scrollIntoViewIfNeeded","target","typeaheadContainerNode","document","getElementById","typeaheadRect","getBoundingClientRect","top","height","window","innerHeight","scrollIntoView","block","getFullMatchOffset","documentText","entryText","offset","triggerOffset","i","length","substr","$splitNodeContainingQuery","match","selection","isCollapsed","anchor","type","anchorNode","getNode","isSimpleText","selectionOffset","textContent","getTextContent","slice","characterOffset","replaceableString","queryOffset","matchingString","startOffset","newNode","splitText","getScrollParent","element","includeHidden","style","getComputedStyle","excludeStaticParent","position","overflowRegex","body","parent","parentElement","test","overflow","overflowY","overflowX","isTriggerVisibleInNearestScrollContainer","targetElement","containerElement","tRect","cRect","bottom","useDynamicPositioning","resolution","onReposition","onVisibilityChange","editor","rootElement","getRootElement","rootScrollParent","ticking","previousIsInView","handleScroll","requestAnimationFrame","isInView","resizeObserver","ResizeObserver","addEventListener","capture","passive","observe","unobserve","removeEventListener","SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND","LexicalMenu","anchorElementRef","close","groupsWithOptions","menuRenderFn","onSelectOption","shouldSplitNodeWithQuery","selectedOptionKey","setSelectedOptionKey","updateSelectedOption","option","rootElem","setAttribute","key","setSelectedOptionKeyToFirstMatchingOption","allOptions","flatMap","group","options","firstMatchingOption","selectOptionAndCleanUp","selectedOption","update","textNodeContainingQuery","removeAttribute","registerCommand","ref","current","payload","event","selectedIndex","findIndex","newSelectedIndex","newSelectedOption","dispatchCommand","index","preventDefault","stopImmediatePropagation","find","listItemProps","useMenuAnchorRef","anchorElem","setResolution","className","createElement","positionMenu","containerDiv","VERTICAL_OFFSET","menuEle","firstChild","width","getRect","left","rawTop","scrollY","scrollX","menuRect","menuHeight","menuWidth","rootElementRect","right","wouldGoOffBottomOfScreen","wouldGoOffTopOfScreen","margin","isConnected","display","append","remove"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/LexicalMenu.tsx"],"sourcesContent":["'use client'\nimport type { LexicalCommand, LexicalEditor, TextNode } from 'lexical'\nimport type { JSX, MutableRefObject, ReactPortal } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js'\nimport { mergeRegister } from '@lexical/utils'\nimport {\n $getSelection,\n $isRangeSelection,\n COMMAND_PRIORITY_LOW,\n KEY_ARROW_DOWN_COMMAND,\n KEY_ARROW_UP_COMMAND,\n KEY_ENTER_COMMAND,\n KEY_ESCAPE_COMMAND,\n KEY_TAB_COMMAND,\n createCommand,\n} from 'lexical'\nimport { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react'\n\nimport type { MenuTextMatch } from '../useMenuTriggerMatch.js'\nimport type { SlashMenuGroupInternal, SlashMenuItem, SlashMenuItemInternal } from './types.js'\n\nexport type MenuResolution = {\n getRect: () => DOMRect\n match?: MenuTextMatch\n}\n\nconst baseClass = 'slash-menu-popup'\n\nexport type MenuRenderFn = (\n anchorElementRef: MutableRefObject<HTMLElement | null>,\n itemProps: {\n groups: Array<SlashMenuGroupInternal>\n selectItemAndCleanUp: (selectedItem: SlashMenuItem) => void\n selectedItemKey: null | string\n setSelectedItemKey: (itemKey: string) => void\n },\n matchingString: null | string,\n) => JSX.Element | ReactPortal | null\n\nconst scrollIntoViewIfNeeded = (target: HTMLElement) => {\n const typeaheadContainerNode = document.getElementById('slash-menu')\n if (!typeaheadContainerNode) return\n\n const typeaheadRect = typeaheadContainerNode.getBoundingClientRect()\n\n if (typeaheadRect.top + typeaheadRect.height > window.innerHeight) {\n typeaheadContainerNode.scrollIntoView({\n block: 'center',\n })\n }\n\n if (typeaheadRect.top < 0) {\n typeaheadContainerNode.scrollIntoView({\n block: 'center',\n })\n }\n\n target.scrollIntoView({ block: 'nearest' })\n}\n\n/**\n * Walk backwards along user input and forward through entity title to try\n * and replace more of the user's text with entity.\n */\nfunction getFullMatchOffset(documentText: string, entryText: string, offset: number) {\n let triggerOffset = offset\n for (let i = triggerOffset; i <= entryText.length; i++) {\n if (documentText.substring(documentText.length - i) === entryText.substring(0, i)) {\n triggerOffset = i\n }\n }\n return triggerOffset\n}\n\n/**\n * Split Lexical TextNode and return a new TextNode only containing matched text.\n * Common use cases include: removing the node, replacing with a new node.\n */\nfunction $splitNodeContainingQuery(match: MenuTextMatch): TextNode | null {\n const selection = $getSelection()\n if (!$isRangeSelection(selection) || !selection.isCollapsed()) {\n return null\n }\n const anchor = selection.anchor\n if (anchor.type !== 'text') {\n return null\n }\n const anchorNode = anchor.getNode()\n if (!anchorNode.isSimpleText()) {\n return null\n }\n const selectionOffset = anchor.offset\n const textContent = anchorNode.getTextContent().slice(0, selectionOffset)\n // eslint-disable-next-line react/destructuring-assignment\n const characterOffset = match.replaceableString.length\n // eslint-disable-next-line react/destructuring-assignment\n const queryOffset = getFullMatchOffset(textContent, match.matchingString, characterOffset)\n const startOffset = selectionOffset - queryOffset\n if (startOffset < 0) {\n return null\n }\n let newNode\n if (startOffset === 0) {\n ;[newNode] = anchorNode.splitText(selectionOffset)\n } else {\n ;[, newNode] = anchorNode.splitText(startOffset, selectionOffset)\n }\n\n return newNode\n}\n\n// Got from https://stackoverflow.com/a/42543908/2013580\nexport function getScrollParent(\n element: HTMLElement,\n includeHidden: boolean,\n): HTMLBodyElement | HTMLElement {\n let style = getComputedStyle(element)\n const excludeStaticParent = style.position === 'absolute'\n const overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/\n if (style.position === 'fixed') {\n return document.body\n }\n for (let parent: HTMLElement | null = element; (parent = parent.parentElement); ) {\n style = getComputedStyle(parent)\n if (excludeStaticParent && style.position === 'static') {\n continue\n }\n if (overflowRegex.test(style.overflow + style.overflowY + style.overflowX)) {\n return parent\n }\n }\n return document.body\n}\n\nfunction isTriggerVisibleInNearestScrollContainer(\n targetElement: HTMLElement,\n containerElement: HTMLElement,\n): boolean {\n const tRect = targetElement.getBoundingClientRect()\n const cRect = containerElement.getBoundingClientRect()\n return tRect.top > cRect.top && tRect.top < cRect.bottom\n}\n\n// Reposition the menu on scroll, window resize, and element resize.\nexport function useDynamicPositioning(\n resolution: MenuResolution | null,\n targetElement: HTMLElement | null,\n onReposition: () => void,\n onVisibilityChange?: (isInView: boolean) => void,\n) {\n const [editor] = useLexicalComposerContext()\n useEffect(() => {\n if (targetElement != null && resolution != null) {\n const rootElement = editor.getRootElement()\n const rootScrollParent =\n rootElement != null ? getScrollParent(rootElement, false) : document.body\n let ticking = false\n let previousIsInView = isTriggerVisibleInNearestScrollContainer(\n targetElement,\n rootScrollParent,\n )\n const handleScroll = function () {\n if (!ticking) {\n window.requestAnimationFrame(function () {\n onReposition()\n ticking = false\n })\n ticking = true\n }\n const isInView = isTriggerVisibleInNearestScrollContainer(targetElement, rootScrollParent)\n if (isInView !== previousIsInView) {\n previousIsInView = isInView\n if (onVisibilityChange != null) {\n onVisibilityChange(isInView)\n }\n }\n }\n const resizeObserver = new ResizeObserver(onReposition)\n window.addEventListener('resize', onReposition)\n document.addEventListener('scroll', handleScroll, {\n capture: true,\n passive: true,\n })\n resizeObserver.observe(targetElement)\n return () => {\n resizeObserver.unobserve(targetElement)\n window.removeEventListener('resize', onReposition)\n document.removeEventListener('scroll', handleScroll, true)\n }\n }\n }, [targetElement, editor, onVisibilityChange, onReposition, resolution])\n}\n\nexport const SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND: LexicalCommand<{\n index: number\n item: SlashMenuItemInternal\n}> = createCommand('SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND')\n\nexport function LexicalMenu({\n anchorElementRef,\n close,\n editor,\n // groups filtering is already handled in SlashMenu/index.tsx. Thus, groups always contains the matching items.\n groups,\n menuRenderFn,\n onSelectItem,\n resolution,\n shouldSplitNodeWithQuery = false,\n}: {\n anchorElementRef: MutableRefObject<HTMLElement>\n close: () => void\n editor: LexicalEditor\n groups: Array<SlashMenuGroupInternal>\n menuRenderFn: MenuRenderFn\n onSelectItem: (\n item: SlashMenuItem,\n textNodeContainingQuery: TextNode | null,\n closeMenu: () => void,\n matchingString: string,\n ) => void\n resolution: MenuResolution\n shouldSplitNodeWithQuery?: boolean\n}): JSX.Element | null {\n const [selectedItemKey, setSelectedItemKey] = useState<null | string>(null)\n\n const matchingString = (resolution.match && resolution.match.matchingString) || ''\n\n const updateSelectedItem = useCallback(\n (item: SlashMenuItem) => {\n const rootElem = editor.getRootElement()\n if (rootElem !== null) {\n rootElem.setAttribute('aria-activedescendant', `${baseClass}__item-${item.key}`)\n setSelectedItemKey(item.key)\n }\n },\n [editor],\n )\n\n const setSelectedItemKeyToFirstMatchingItem = useCallback(() => {\n // set selected item to the first of the matching ones\n if (groups !== null && matchingString != null) {\n // groups filtering is already handled in SlashMenu/index.tsx. Thus, groups always contains the matching items.\n const allItems = groups.flatMap((group) => group.items)\n\n if (allItems.length) {\n const firstMatchingItem = allItems[0]\n updateSelectedItem(firstMatchingItem)\n }\n }\n }, [groups, updateSelectedItem, matchingString])\n\n useEffect(() => {\n setSelectedItemKeyToFirstMatchingItem()\n }, [matchingString, setSelectedItemKeyToFirstMatchingItem])\n\n const selectItemAndCleanUp = useCallback(\n (selectedItem: SlashMenuItem) => {\n editor.update(() => {\n const textNodeContainingQuery =\n resolution.match != null && shouldSplitNodeWithQuery\n ? $splitNodeContainingQuery(resolution.match)\n : null\n\n onSelectItem(\n selectedItem,\n textNodeContainingQuery,\n close,\n resolution.match ? resolution.match.matchingString : '',\n )\n })\n },\n [editor, shouldSplitNodeWithQuery, resolution.match, onSelectItem, close],\n )\n\n useEffect(() => {\n return () => {\n const rootElem = editor.getRootElement()\n if (rootElem !== null) {\n rootElem.removeAttribute('aria-activedescendant')\n }\n }\n }, [editor])\n\n useLayoutEffect(() => {\n if (groups === null) {\n setSelectedItemKey(null)\n } else if (selectedItemKey === null) {\n setSelectedItemKeyToFirstMatchingItem()\n }\n }, [groups, selectedItemKey, updateSelectedItem, setSelectedItemKeyToFirstMatchingItem])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND,\n ({ item }) => {\n if (item.ref && item.ref.current != null) {\n scrollIntoViewIfNeeded(item.ref.current)\n return true\n }\n\n return false\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, updateSelectedItem])\n\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand<KeyboardEvent>(\n KEY_ARROW_DOWN_COMMAND,\n (payload) => {\n const event = payload\n if (groups !== null && groups.length && selectedItemKey !== null) {\n const allItems = groups.flatMap((group) => group.items)\n const selectedIndex = allItems.findIndex((item) => item.key === selectedItemKey)\n\n const newSelectedIndex = selectedIndex !== allItems.length - 1 ? selectedIndex + 1 : 0\n\n const newSelectedItem = allItems[newSelectedIndex]\n\n updateSelectedItem(newSelectedItem)\n if (newSelectedItem.ref != null && newSelectedItem.ref.current) {\n editor.dispatchCommand(SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND, {\n index: newSelectedIndex,\n item: newSelectedItem,\n })\n }\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_ARROW_UP_COMMAND,\n (payload) => {\n const event = payload\n if (groups !== null && groups.length && selectedItemKey !== null) {\n const allItems = groups.flatMap((group) => group.items)\n const selectedIndex = allItems.findIndex((item) => item.key === selectedItemKey)\n\n const newSelectedIndex = selectedIndex !== 0 ? selectedIndex - 1 : allItems.length - 1\n\n const newSelectedItem = allItems[newSelectedIndex]\n\n updateSelectedItem(newSelectedItem)\n if (newSelectedItem.ref != null && newSelectedItem.ref.current) {\n scrollIntoViewIfNeeded(newSelectedItem.ref.current)\n }\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_ESCAPE_COMMAND,\n (payload) => {\n const event = payload\n event.preventDefault()\n event.stopImmediatePropagation()\n close()\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand<KeyboardEvent>(\n KEY_TAB_COMMAND,\n (payload) => {\n const event = payload\n\n if (groups === null || selectedItemKey === null) {\n return false\n }\n const allItems = groups.flatMap((group) => group.items)\n const selectedItem = allItems.find((item) => item.key === selectedItemKey)\n if (!selectedItem) {\n return false\n }\n\n event.preventDefault()\n event.stopImmediatePropagation()\n selectItemAndCleanUp(selectedItem)\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n editor.registerCommand(\n KEY_ENTER_COMMAND,\n (event: KeyboardEvent | null) => {\n if (groups === null || selectedItemKey === null) {\n return false\n }\n const allItems = groups.flatMap((group) => group.items)\n const selectedItem = allItems.find((item) => item.key === selectedItemKey)\n if (!selectedItem) {\n return false\n }\n\n if (event !== null) {\n event.preventDefault()\n event.stopImmediatePropagation()\n }\n selectItemAndCleanUp(selectedItem)\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [selectItemAndCleanUp, close, editor, groups, selectedItemKey, updateSelectedItem])\n\n const listItemProps = useMemo(\n () => ({\n groups,\n selectItemAndCleanUp,\n selectedItemKey,\n setSelectedItemKey,\n }),\n [selectItemAndCleanUp, selectedItemKey, groups],\n )\n\n return menuRenderFn(\n anchorElementRef,\n listItemProps,\n resolution.match ? resolution.match.matchingString : '',\n )\n}\n\nexport function useMenuAnchorRef(\n anchorElem: HTMLElement,\n resolution: MenuResolution | null,\n setResolution: (r: MenuResolution | null) => void,\n className?: string,\n): MutableRefObject<HTMLElement> {\n const [editor] = useLexicalComposerContext()\n const anchorElementRef = useRef<HTMLElement>(document.createElement('div'))\n const positionMenu = useCallback(() => {\n const rootElement = editor.getRootElement()\n const containerDiv = anchorElementRef.current\n\n const VERTICAL_OFFSET = 32\n\n const menuEle = containerDiv.firstChild as Element\n if (rootElement !== null && resolution !== null) {\n const { height, width } = resolution.getRect()\n let { left, top } = resolution.getRect()\n\n const rawTop = top\n top -= anchorElem.getBoundingClientRect().top + window.scrollY\n left -= anchorElem.getBoundingClientRect().left + window.scrollX\n containerDiv.style.left = `${left + window.scrollX}px`\n containerDiv.style.height = `${height}px`\n containerDiv.style.width = `${width}px`\n if (menuEle !== null) {\n const menuRect = menuEle.getBoundingClientRect()\n const menuHeight = menuRect.height\n const menuWidth = menuRect.width\n\n const rootElementRect = rootElement.getBoundingClientRect()\n\n if (left + menuWidth > rootElementRect.right) {\n containerDiv.style.left = `${rootElementRect.right - menuWidth + window.scrollX}px`\n }\n\n const wouldGoOffBottomOfScreen = rawTop + menuHeight + VERTICAL_OFFSET > window.innerHeight\n //const wouldGoOffBottomOfContainer = top + menuHeight > rootElementRect.bottom\n const wouldGoOffTopOfScreen = rawTop < 0\n\n // Position slash menu above the cursor instead of below (default) if it would otherwise go off the bottom of the screen.\n if (wouldGoOffBottomOfScreen && !wouldGoOffTopOfScreen) {\n const margin = 24\n containerDiv.style.top = `${\n top + VERTICAL_OFFSET - menuHeight + window.scrollY - (height + margin)\n }px`\n } else {\n containerDiv.style.top = `${top + window.scrollY + VERTICAL_OFFSET}px`\n }\n }\n\n if (!containerDiv.isConnected) {\n if (className != null) {\n containerDiv.className = className\n }\n containerDiv.setAttribute('aria-label', 'Slash menu')\n containerDiv.setAttribute('id', 'slash-menu')\n containerDiv.setAttribute('role', 'listbox')\n containerDiv.style.display = 'block'\n containerDiv.style.position = 'absolute'\n anchorElem.append(containerDiv)\n }\n anchorElementRef.current = containerDiv\n rootElement.setAttribute('aria-controls', 'slash-menu')\n }\n }, [editor, resolution, className, anchorElem])\n\n useEffect(() => {\n const rootElement = editor.getRootElement()\n if (resolution !== null) {\n positionMenu()\n return () => {\n if (rootElement !== null) {\n rootElement.removeAttribute('aria-controls')\n }\n\n const containerDiv = anchorElementRef.current\n if (containerDiv !== null && containerDiv.isConnected) {\n containerDiv.remove()\n }\n }\n }\n }, [editor, positionMenu, resolution])\n\n const onVisibilityChange = useCallback(\n (isInView: boolean) => {\n if (resolution !== null) {\n if (!isInView) {\n setResolution(null)\n }\n }\n },\n [resolution, setResolution],\n )\n\n useDynamicPositioning(resolution, anchorElementRef.current, positionMenu, onVisibilityChange)\n\n return anchorElementRef\n}\n"],"names":["useLexicalComposerContext","mergeRegister","$getSelection","$isRangeSelection","COMMAND_PRIORITY_LOW","KEY_ARROW_DOWN_COMMAND","KEY_ARROW_UP_COMMAND","KEY_ENTER_COMMAND","KEY_ESCAPE_COMMAND","KEY_TAB_COMMAND","createCommand","useCallback","useEffect","useLayoutEffect","useMemo","useRef","useState","baseClass","scrollIntoViewIfNeeded","target","typeaheadContainerNode","document","getElementById","typeaheadRect","getBoundingClientRect","top","height","window","innerHeight","scrollIntoView","block","getFullMatchOffset","documentText","entryText","offset","triggerOffset","i","length","substring","$splitNodeContainingQuery","match","selection","isCollapsed","anchor","type","anchorNode","getNode","isSimpleText","selectionOffset","textContent","getTextContent","slice","characterOffset","replaceableString","queryOffset","matchingString","startOffset","newNode","splitText","getScrollParent","element","includeHidden","style","getComputedStyle","excludeStaticParent","position","overflowRegex","body","parent","parentElement","test","overflow","overflowY","overflowX","isTriggerVisibleInNearestScrollContainer","targetElement","containerElement","tRect","cRect","bottom","useDynamicPositioning","resolution","onReposition","onVisibilityChange","editor","rootElement","getRootElement","rootScrollParent","ticking","previousIsInView","handleScroll","requestAnimationFrame","isInView","resizeObserver","ResizeObserver","addEventListener","capture","passive","observe","unobserve","removeEventListener","SCROLL_TYPEAHEAD_OPTION_INTO_VIEW_COMMAND","LexicalMenu","anchorElementRef","close","groups","menuRenderFn","onSelectItem","shouldSplitNodeWithQuery","selectedItemKey","setSelectedItemKey","updateSelectedItem","item","rootElem","setAttribute","key","setSelectedItemKeyToFirstMatchingItem","allItems","flatMap","group","items","firstMatchingItem","selectItemAndCleanUp","selectedItem","update","textNodeContainingQuery","removeAttribute","registerCommand","ref","current","payload","event","selectedIndex","findIndex","newSelectedIndex","newSelectedItem","dispatchCommand","index","preventDefault","stopImmediatePropagation","find","listItemProps","useMenuAnchorRef","anchorElem","setResolution","className","createElement","positionMenu","containerDiv","VERTICAL_OFFSET","menuEle","firstChild","width","getRect","left","rawTop","scrollY","scrollX","menuRect","menuHeight","menuWidth","rootElementRect","right","wouldGoOffBottomOfScreen","wouldGoOffTopOfScreen","margin","isConnected","display","append","remove"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
@@ -1,25 +1,25 @@
|
|
|
1
|
-
/// <reference types="react" resolution-mode="require"/>
|
|
2
1
|
import type { LexicalCommand, ParagraphNode, TextNode } from 'lexical';
|
|
2
|
+
import { type JSX } from 'react';
|
|
3
3
|
import type { MenuTextMatch, TriggerFn } from '../useMenuTriggerMatch.js';
|
|
4
4
|
import type { MenuRenderFn, MenuResolution } from './LexicalMenu.js';
|
|
5
|
-
import type {
|
|
5
|
+
import type { SlashMenuGroupInternal, SlashMenuItem } from './types.js';
|
|
6
6
|
export declare const PUNCTUATION = "\\.,\\+\\*\\?\\$\\@\\|#{}\\(\\)\\^\\-\\[\\]\\\\/!%'\"~=<>_:;";
|
|
7
7
|
export declare function getScrollParent(element: HTMLElement, includeHidden: boolean): HTMLBodyElement | HTMLElement;
|
|
8
8
|
export { useDynamicPositioning } from './LexicalMenu.js';
|
|
9
9
|
export type TypeaheadMenuPluginProps = {
|
|
10
10
|
anchorClassName?: string;
|
|
11
11
|
anchorElem: HTMLElement;
|
|
12
|
-
|
|
12
|
+
groups: Array<SlashMenuGroupInternal>;
|
|
13
13
|
menuRenderFn: MenuRenderFn;
|
|
14
14
|
onClose?: () => void;
|
|
15
15
|
onOpen?: (resolution: MenuResolution) => void;
|
|
16
16
|
onQueryChange: (matchingString: null | string) => void;
|
|
17
|
-
|
|
17
|
+
onSelectItem: (item: SlashMenuItem, textNodeContainingQuery: TextNode | null, closeMenu: () => void, matchingString: string) => void;
|
|
18
18
|
triggerFn: TriggerFn;
|
|
19
19
|
};
|
|
20
20
|
export declare const ENABLE_SLASH_MENU_COMMAND: LexicalCommand<{
|
|
21
21
|
node: ParagraphNode;
|
|
22
22
|
}>;
|
|
23
|
-
export declare function LexicalTypeaheadMenuPlugin({ anchorClassName, anchorElem,
|
|
23
|
+
export declare function LexicalTypeaheadMenuPlugin({ anchorClassName, anchorElem, groups, menuRenderFn, onClose, onOpen, onQueryChange, onSelectItem, triggerFn, }: TypeaheadMenuPluginProps): JSX.Element | null;
|
|
24
24
|
export type { MenuRenderFn, MenuResolution, MenuTextMatch, TriggerFn };
|
|
25
25
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EAEd,aAAa,EAEb,QAAQ,EACT,MAAM,SAAS,CAAA;AAWhB,OAAO,EAAE,KAAK,GAAG,EAAoC,MAAM,OAAO,CAAA;AAGlE,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACpE,OAAO,KAAK,EAAkB,sBAAsB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAIvF,eAAO,MAAM,WAAW,iEAAiE,CAAA;AA4EzF,wBAAgB,eAAe,CAC7B,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,OAAO,GACrB,eAAe,GAAG,WAAW,CAiB/B;AAED,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AAExD,MAAM,MAAM,wBAAwB,GAAG;IACrC,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,UAAU,EAAE,WAAW,CAAA;IACvB,MAAM,EAAE,KAAK,CAAC,sBAAsB,CAAC,CAAA;IACrC,YAAY,EAAE,YAAY,CAAA;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,cAAc,KAAK,IAAI,CAAA;IAC7C,aAAa,EAAE,CAAC,cAAc,EAAE,IAAI,GAAG,MAAM,KAAK,IAAI,CAAA;IACtD,YAAY,EAAE,CACZ,IAAI,EAAE,aAAa,EACnB,uBAAuB,EAAE,QAAQ,GAAG,IAAI,EACxC,SAAS,EAAE,MAAM,IAAI,EACrB,cAAc,EAAE,MAAM,KACnB,IAAI,CAAA;IACT,SAAS,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,eAAO,MAAM,yBAAyB,EAAE,cAAc,CAAC;IACrD,IAAI,EAAE,aAAa,CAAA;CACpB,CAA8C,CAAA;AAE/C,wBAAgB,0BAA0B,CAAC,EACzC,eAAe,EACf,UAAU,EACV,MAAM,EACN,YAAY,EACZ,OAAO,EACP,MAAM,EACN,aAAa,EACb,YAAY,EACZ,SAAS,GACV,EAAE,wBAAwB,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI,CAyH/C;AAED,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,SAAS,EAAE,CAAA"}
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
import lexicalImport from 'lexical';
|
|
7
|
-
const { $getSelection, $isRangeSelection, $isTextNode, COMMAND_PRIORITY_LOW, createCommand } = lexicalImport;
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext.js';
|
|
4
|
+
import { mergeRegister } from '@lexical/utils';
|
|
5
|
+
import { $getSelection, $isRangeSelection, $isTextNode, COMMAND_PRIORITY_LOW, createCommand } from 'lexical';
|
|
8
6
|
import { useCallback, useEffect, useState } from 'react';
|
|
9
7
|
import * as React from 'react';
|
|
10
8
|
import { LexicalMenu, useMenuAnchorRef } from './LexicalMenu.js';
|
|
@@ -95,7 +93,7 @@ export function getScrollParent(element, includeHidden) {
|
|
|
95
93
|
}
|
|
96
94
|
export { useDynamicPositioning } from './LexicalMenu.js';
|
|
97
95
|
export const ENABLE_SLASH_MENU_COMMAND = createCommand('ENABLE_SLASH_MENU_COMMAND');
|
|
98
|
-
export function LexicalTypeaheadMenuPlugin({ anchorClassName, anchorElem,
|
|
96
|
+
export function LexicalTypeaheadMenuPlugin({ anchorClassName, anchorElem, groups, menuRenderFn, onClose, onOpen, onQueryChange, onSelectItem, triggerFn }) {
|
|
99
97
|
const [editor] = useLexicalComposerContext();
|
|
100
98
|
const [resolution, setResolution] = useState(null);
|
|
101
99
|
const anchorElementRef = useMenuAnchorRef(anchorElem, resolution, setResolution, anchorClassName);
|
|
@@ -192,13 +190,13 @@ export function LexicalTypeaheadMenuPlugin({ anchorClassName, anchorElem, groups
|
|
|
192
190
|
closeTypeahead,
|
|
193
191
|
openTypeahead
|
|
194
192
|
]);
|
|
195
|
-
return resolution === null || editor === null ? null : /*#__PURE__*/
|
|
193
|
+
return resolution === null || editor === null ? null : /*#__PURE__*/ _jsx(LexicalMenu, {
|
|
196
194
|
anchorElementRef: anchorElementRef,
|
|
197
195
|
close: closeTypeahead,
|
|
198
196
|
editor: editor,
|
|
199
|
-
|
|
197
|
+
groups: groups,
|
|
200
198
|
menuRenderFn: menuRenderFn,
|
|
201
|
-
|
|
199
|
+
onSelectItem: onSelectItem,
|
|
202
200
|
resolution: resolution,
|
|
203
201
|
shouldSplitNodeWithQuery: true
|
|
204
202
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../src/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.tsx"],"sourcesContent":["'use client'\nimport type {\n LexicalCommand,\n LexicalEditor,\n ParagraphNode,\n RangeSelection,\n TextNode,\n} from 'lexical'\n\nimport lexicalComposerContextImport from '@lexical/react/LexicalComposerContext.js'\nconst { useLexicalComposerContext } = lexicalComposerContextImport\n\nimport lexicalUtilsImport from '@lexical/utils'\nconst { mergeRegister } = lexicalUtilsImport\n\nimport lexicalImport from 'lexical'\nconst { $getSelection, $isRangeSelection, $isTextNode, COMMAND_PRIORITY_LOW, createCommand } =\n lexicalImport\n\nimport { useCallback, useEffect, useState } from 'react'\nimport * as React from 'react'\n\nimport type { MenuTextMatch, TriggerFn } from '../useMenuTriggerMatch.js'\nimport type { MenuRenderFn, MenuResolution } from './LexicalMenu.js'\nimport type { SlashMenuGroup, SlashMenuOption } from './types.js'\n\nimport { LexicalMenu, useMenuAnchorRef } from './LexicalMenu.js'\n\nexport const PUNCTUATION = '\\\\.,\\\\+\\\\*\\\\?\\\\$\\\\@\\\\|#{}\\\\(\\\\)\\\\^\\\\-\\\\[\\\\]\\\\\\\\/!%\\'\"~=<>_:;'\n\nfunction getTextUpToAnchor(selection: RangeSelection): null | string {\n const anchor = selection.anchor\n if (anchor.type !== 'text') {\n return null\n }\n const anchorNode = anchor.getNode()\n if (!anchorNode.isSimpleText()) {\n return null\n }\n const anchorOffset = anchor.offset\n return anchorNode.getTextContent().slice(0, anchorOffset)\n}\n\nfunction tryToPositionRange(leadOffset: number, range: Range, editorWindow: Window): boolean {\n const domSelection = editorWindow.getSelection()\n if (domSelection === null || !domSelection.isCollapsed) {\n return false\n }\n const anchorNode = domSelection.anchorNode\n const startOffset = leadOffset\n const endOffset = domSelection.anchorOffset\n\n if (anchorNode == null || endOffset == null) {\n return false\n }\n\n try {\n range.setStart(anchorNode, startOffset)\n // if endOffset is 0, positioning the range for when you click the plus button to open the slash menu will fial\n range.setEnd(anchorNode, endOffset > 1 ? endOffset : 1)\n } catch (error) {\n return false\n }\n\n return true\n}\n\nfunction getQueryTextForSearch(editor: LexicalEditor): null | string {\n let text = null\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if (!$isRangeSelection(selection)) {\n return\n }\n text = getTextUpToAnchor(selection)\n })\n return text\n}\n\nfunction isSelectionOnEntityBoundary(editor: LexicalEditor, offset: number): boolean {\n if (offset !== 0) {\n return false\n }\n return editor.getEditorState().read(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n const anchor = selection.anchor\n const anchorNode = anchor.getNode()\n const prevSibling = anchorNode.getPreviousSibling()\n return $isTextNode(prevSibling) && prevSibling.isTextEntity()\n }\n return false\n })\n}\n\nfunction startTransition(callback: () => void) {\n if (React.startTransition) {\n React.startTransition(callback)\n } else {\n callback()\n }\n}\n\n// Got from https://stackoverflow.com/a/42543908/2013580\nexport function getScrollParent(\n element: HTMLElement,\n includeHidden: boolean,\n): HTMLBodyElement | HTMLElement {\n let style = getComputedStyle(element)\n const excludeStaticParent = style.position === 'absolute'\n const overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/\n if (style.position === 'fixed') {\n return document.body\n }\n for (let parent: HTMLElement | null = element; (parent = parent.parentElement); ) {\n style = getComputedStyle(parent)\n if (excludeStaticParent && style.position === 'static') {\n continue\n }\n if (overflowRegex.test(style.overflow + style.overflowY + style.overflowX)) {\n return parent\n }\n }\n return document.body\n}\n\nexport { useDynamicPositioning } from './LexicalMenu.js'\n\nexport type TypeaheadMenuPluginProps = {\n anchorClassName?: string\n anchorElem: HTMLElement\n groupsWithOptions: Array<SlashMenuGroup>\n menuRenderFn: MenuRenderFn\n onClose?: () => void\n onOpen?: (resolution: MenuResolution) => void\n onQueryChange: (matchingString: null | string) => void\n onSelectOption: (\n option: SlashMenuOption,\n textNodeContainingQuery: TextNode | null,\n closeMenu: () => void,\n matchingString: string,\n ) => void\n triggerFn: TriggerFn\n}\n\nexport const ENABLE_SLASH_MENU_COMMAND: LexicalCommand<{\n node: ParagraphNode\n}> = createCommand('ENABLE_SLASH_MENU_COMMAND')\n\nexport function LexicalTypeaheadMenuPlugin({\n anchorClassName,\n anchorElem,\n groupsWithOptions,\n menuRenderFn,\n onClose,\n onOpen,\n onQueryChange,\n onSelectOption,\n triggerFn,\n}: TypeaheadMenuPluginProps): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n const [resolution, setResolution] = useState<MenuResolution | null>(null)\n const anchorElementRef = useMenuAnchorRef(anchorElem, resolution, setResolution, anchorClassName)\n\n const closeTypeahead = useCallback(() => {\n setResolution(null)\n if (onClose != null && resolution !== null) {\n onClose()\n }\n }, [onClose, resolution])\n\n const openTypeahead = useCallback(\n (res: MenuResolution) => {\n setResolution(res)\n if (onOpen != null && resolution === null) {\n onOpen(res)\n }\n },\n [onOpen, resolution],\n )\n\n // This is mainly used for the AddBlockHandlePlugin, so that the slash menu can be opened from there\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n ENABLE_SLASH_MENU_COMMAND,\n ({ node }) => {\n editor.getEditorState().read(() => {\n const match: MenuTextMatch = {\n leadOffset: 0,\n matchingString: '',\n replaceableString: '',\n }\n if (match !== null && !isSelectionOnEntityBoundary(editor, match.leadOffset)) {\n if (node !== null) {\n const editorWindow = editor._window ?? window\n const range = editorWindow.document.createRange()\n\n const isRangePositioned = tryToPositionRange(match.leadOffset, range, editorWindow)\n if (isRangePositioned !== null) {\n startTransition(() =>\n openTypeahead({\n getRect: () => {\n return range.getBoundingClientRect()\n },\n match,\n }),\n )\n }\n\n return\n }\n }\n })\n\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, openTypeahead])\n\n useEffect(() => {\n const updateListener = () => {\n editor.getEditorState().read(() => {\n const editorWindow = editor._window ?? window\n const range = editorWindow.document.createRange()\n const selection = $getSelection()\n const text = getQueryTextForSearch(editor)\n\n if (\n !$isRangeSelection(selection) ||\n !selection.isCollapsed() ||\n text === null ||\n range === null\n ) {\n closeTypeahead()\n return\n }\n\n const match = triggerFn({ editor, query: text })\n onQueryChange(match ? match.matchingString : null)\n\n if (match !== null && !isSelectionOnEntityBoundary(editor, match.leadOffset)) {\n const isRangePositioned = tryToPositionRange(match.leadOffset, range, editorWindow)\n if (isRangePositioned !== null) {\n startTransition(() =>\n openTypeahead({\n getRect: () => {\n return range.getBoundingClientRect()\n },\n match,\n }),\n )\n return\n }\n }\n closeTypeahead()\n })\n }\n\n const removeUpdateListener = editor.registerUpdateListener(updateListener)\n\n return () => {\n removeUpdateListener()\n }\n }, [editor, triggerFn, onQueryChange, resolution, closeTypeahead, openTypeahead])\n\n return resolution === null || editor === null ? null : (\n <LexicalMenu\n anchorElementRef={anchorElementRef}\n close={closeTypeahead}\n editor={editor}\n groupsWithOptions={groupsWithOptions}\n menuRenderFn={menuRenderFn}\n onSelectOption={onSelectOption}\n resolution={resolution}\n shouldSplitNodeWithQuery\n />\n )\n}\n\nexport type { MenuRenderFn, MenuResolution, MenuTextMatch, TriggerFn }\n"],"names":["lexicalComposerContextImport","useLexicalComposerContext","lexicalUtilsImport","mergeRegister","lexicalImport","$getSelection","$isRangeSelection","$isTextNode","COMMAND_PRIORITY_LOW","createCommand","useCallback","useEffect","useState","React","LexicalMenu","useMenuAnchorRef","PUNCTUATION","getTextUpToAnchor","selection","anchor","type","anchorNode","getNode","isSimpleText","anchorOffset","offset","getTextContent","slice","tryToPositionRange","leadOffset","range","editorWindow","domSelection","getSelection","isCollapsed","startOffset","endOffset","setStart","setEnd","error","getQueryTextForSearch","editor","text","getEditorState","read","isSelectionOnEntityBoundary","prevSibling","getPreviousSibling","isTextEntity","startTransition","callback","getScrollParent","element","includeHidden","style","getComputedStyle","excludeStaticParent","position","overflowRegex","document","body","parent","parentElement","test","overflow","overflowY","overflowX","useDynamicPositioning","ENABLE_SLASH_MENU_COMMAND","LexicalTypeaheadMenuPlugin","anchorClassName","anchorElem","groupsWithOptions","menuRenderFn","onClose","onOpen","onQueryChange","onSelectOption","triggerFn","resolution","setResolution","anchorElementRef","closeTypeahead","openTypeahead","res","registerCommand","node","match","matchingString","replaceableString","_window","window","createRange","isRangePositioned","getRect","getBoundingClientRect","updateListener","query","removeUpdateListener","registerUpdateListener","close","shouldSplitNodeWithQuery"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AASA,OAAOA,kCAAkC,2CAA0C;AACnF,MAAM,EAAEC,yBAAyB,EAAE,GAAGD;AAEtC,OAAOE,wBAAwB,iBAAgB;AAC/C,MAAM,EAAEC,aAAa,EAAE,GAAGD;AAE1B,OAAOE,mBAAmB,UAAS;AACnC,MAAM,EAAEC,aAAa,EAAEC,iBAAiB,EAAEC,WAAW,EAAEC,oBAAoB,EAAEC,aAAa,EAAE,GAC1FL;AAEF,SAASM,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAO;AACxD,YAAYC,WAAW,QAAO;AAM9B,SAASC,WAAW,EAAEC,gBAAgB,QAAQ,mBAAkB;AAEhE,OAAO,MAAMC,cAAc,+DAA8D;AAEzF,SAASC,kBAAkBC,SAAyB;IAClD,MAAMC,SAASD,UAAUC,MAAM;IAC/B,IAAIA,OAAOC,IAAI,KAAK,QAAQ;QAC1B,OAAO;IACT;IACA,MAAMC,aAAaF,OAAOG,OAAO;IACjC,IAAI,CAACD,WAAWE,YAAY,IAAI;QAC9B,OAAO;IACT;IACA,MAAMC,eAAeL,OAAOM,MAAM;IAClC,OAAOJ,WAAWK,cAAc,GAAGC,KAAK,CAAC,GAAGH;AAC9C;AAEA,SAASI,mBAAmBC,UAAkB,EAAEC,KAAY,EAAEC,YAAoB;IAChF,MAAMC,eAAeD,aAAaE,YAAY;IAC9C,IAAID,iBAAiB,QAAQ,CAACA,aAAaE,WAAW,EAAE;QACtD,OAAO;IACT;IACA,MAAMb,aAAaW,aAAaX,UAAU;IAC1C,MAAMc,cAAcN;IACpB,MAAMO,YAAYJ,aAAaR,YAAY;IAE3C,IAAIH,cAAc,QAAQe,aAAa,MAAM;QAC3C,OAAO;IACT;IAEA,IAAI;QACFN,MAAMO,QAAQ,CAAChB,YAAYc;QAC3B,+GAA+G;QAC/GL,MAAMQ,MAAM,CAACjB,YAAYe,YAAY,IAAIA,YAAY;IACvD,EAAE,OAAOG,OAAO;QACd,OAAO;IACT;IAEA,OAAO;AACT;AAEA,SAASC,sBAAsBC,MAAqB;IAClD,IAAIC,OAAO;IACXD,OAAOE,cAAc,GAAGC,IAAI,CAAC;QAC3B,MAAM1B,YAAYb;QAClB,IAAI,CAACC,kBAAkBY,YAAY;YACjC;QACF;QACAwB,OAAOzB,kBAAkBC;IAC3B;IACA,OAAOwB;AACT;AAEA,SAASG,4BAA4BJ,MAAqB,EAAEhB,MAAc;IACxE,IAAIA,WAAW,GAAG;QAChB,OAAO;IACT;IACA,OAAOgB,OAAOE,cAAc,GAAGC,IAAI,CAAC;QAClC,MAAM1B,YAAYb;QAClB,IAAIC,kBAAkBY,YAAY;YAChC,MAAMC,SAASD,UAAUC,MAAM;YAC/B,MAAME,aAAaF,OAAOG,OAAO;YACjC,MAAMwB,cAAczB,WAAW0B,kBAAkB;YACjD,OAAOxC,YAAYuC,gBAAgBA,YAAYE,YAAY;QAC7D;QACA,OAAO;IACT;AACF;AAEA,SAASC,gBAAgBC,QAAoB;IAC3C,IAAIrC,MAAMoC,eAAe,EAAE;QACzBpC,MAAMoC,eAAe,CAACC;IACxB,OAAO;QACLA;IACF;AACF;AAEA,wDAAwD;AACxD,OAAO,SAASC,gBACdC,OAAoB,EACpBC,aAAsB;IAEtB,IAAIC,QAAQC,iBAAiBH;IAC7B,MAAMI,sBAAsBF,MAAMG,QAAQ,KAAK;IAC/C,MAAMC,gBAAgBL,gBAAgB,yBAAyB;IAC/D,IAAIC,MAAMG,QAAQ,KAAK,SAAS;QAC9B,OAAOE,SAASC,IAAI;IACtB;IACA,IAAK,IAAIC,SAA6BT,SAAUS,SAASA,OAAOC,aAAa,EAAK;QAChFR,QAAQC,iBAAiBM;QACzB,IAAIL,uBAAuBF,MAAMG,QAAQ,KAAK,UAAU;YACtD;QACF;QACA,IAAIC,cAAcK,IAAI,CAACT,MAAMU,QAAQ,GAAGV,MAAMW,SAAS,GAAGX,MAAMY,SAAS,GAAG;YAC1E,OAAOL;QACT;IACF;IACA,OAAOF,SAASC,IAAI;AACtB;AAEA,SAASO,qBAAqB,QAAQ,mBAAkB;AAmBxD,OAAO,MAAMC,4BAER3D,cAAc,6BAA4B;AAE/C,OAAO,SAAS4D,2BAA2B,EACzCC,eAAe,EACfC,UAAU,EACVC,iBAAiB,EACjBC,YAAY,EACZC,OAAO,EACPC,MAAM,EACNC,aAAa,EACbC,cAAc,EACdC,SAAS,EACgB;IACzB,MAAM,CAACrC,OAAO,GAAGxC;IACjB,MAAM,CAAC8E,YAAYC,cAAc,GAAGpE,SAAgC;IACpE,MAAMqE,mBAAmBlE,iBAAiBwD,YAAYQ,YAAYC,eAAeV;IAEjF,MAAMY,iBAAiBxE,YAAY;QACjCsE,cAAc;QACd,IAAIN,WAAW,QAAQK,eAAe,MAAM;YAC1CL;QACF;IACF,GAAG;QAACA;QAASK;KAAW;IAExB,MAAMI,gBAAgBzE,YACpB,CAAC0E;QACCJ,cAAcI;QACd,IAAIT,UAAU,QAAQI,eAAe,MAAM;YACzCJ,OAAOS;QACT;IACF,GACA;QAACT;QAAQI;KAAW;IAGtB,oGAAoG;IACpGpE,UAAU;QACR,OAAOR,cACLsC,OAAO4C,eAAe,CACpBjB,2BACA,CAAC,EAAEkB,IAAI,EAAE;YACP7C,OAAOE,cAAc,GAAGC,IAAI,CAAC;gBAC3B,MAAM2C,QAAuB;oBAC3B1D,YAAY;oBACZ2D,gBAAgB;oBAChBC,mBAAmB;gBACrB;gBACA,IAAIF,UAAU,QAAQ,CAAC1C,4BAA4BJ,QAAQ8C,MAAM1D,UAAU,GAAG;oBAC5E,IAAIyD,SAAS,MAAM;wBACjB,MAAMvD,eAAeU,OAAOiD,OAAO,IAAIC;wBACvC,MAAM7D,QAAQC,aAAa4B,QAAQ,CAACiC,WAAW;wBAE/C,MAAMC,oBAAoBjE,mBAAmB2D,MAAM1D,UAAU,EAAEC,OAAOC;wBACtE,IAAI8D,sBAAsB,MAAM;4BAC9B5C,gBAAgB,IACdkC,cAAc;oCACZW,SAAS;wCACP,OAAOhE,MAAMiE,qBAAqB;oCACpC;oCACAR;gCACF;wBAEJ;wBAEA;oBACF;gBACF;YACF;YAEA,OAAO;QACT,GACA/E;IAGN,GAAG;QAACiC;QAAQ0C;KAAc;IAE1BxE,UAAU;QACR,MAAMqF,iBAAiB;YACrBvD,OAAOE,cAAc,GAAGC,IAAI,CAAC;gBAC3B,MAAMb,eAAeU,OAAOiD,OAAO,IAAIC;gBACvC,MAAM7D,QAAQC,aAAa4B,QAAQ,CAACiC,WAAW;gBAC/C,MAAM1E,YAAYb;gBAClB,MAAMqC,OAAOF,sBAAsBC;gBAEnC,IACE,CAACnC,kBAAkBY,cACnB,CAACA,UAAUgB,WAAW,MACtBQ,SAAS,QACTZ,UAAU,MACV;oBACAoD;oBACA;gBACF;gBAEA,MAAMK,QAAQT,UAAU;oBAAErC;oBAAQwD,OAAOvD;gBAAK;gBAC9CkC,cAAcW,QAAQA,MAAMC,cAAc,GAAG;gBAE7C,IAAID,UAAU,QAAQ,CAAC1C,4BAA4BJ,QAAQ8C,MAAM1D,UAAU,GAAG;oBAC5E,MAAMgE,oBAAoBjE,mBAAmB2D,MAAM1D,UAAU,EAAEC,OAAOC;oBACtE,IAAI8D,sBAAsB,MAAM;wBAC9B5C,gBAAgB,IACdkC,cAAc;gCACZW,SAAS;oCACP,OAAOhE,MAAMiE,qBAAqB;gCACpC;gCACAR;4BACF;wBAEF;oBACF;gBACF;gBACAL;YACF;QACF;QAEA,MAAMgB,uBAAuBzD,OAAO0D,sBAAsB,CAACH;QAE3D,OAAO;YACLE;QACF;IACF,GAAG;QAACzD;QAAQqC;QAAWF;QAAeG;QAAYG;QAAgBC;KAAc;IAEhF,OAAOJ,eAAe,QAAQtC,WAAW,OAAO,qBAC9C,oBAAC3B;QACCmE,kBAAkBA;QAClBmB,OAAOlB;QACPzC,QAAQA;QACR+B,mBAAmBA;QACnBC,cAAcA;QACdI,gBAAgBA;QAChBE,YAAYA;QACZsB,0BAAAA;;AAGN"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../src/field/lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/index.tsx"],"sourcesContent":["'use client'\nimport type {\n LexicalCommand,\n LexicalEditor,\n ParagraphNode,\n RangeSelection,\n TextNode,\n} 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 createCommand,\n} from 'lexical'\nimport { type JSX, useCallback, useEffect, useState } from 'react'\nimport * as React from 'react'\n\nimport type { MenuTextMatch, TriggerFn } from '../useMenuTriggerMatch.js'\nimport type { MenuRenderFn, MenuResolution } from './LexicalMenu.js'\nimport type { SlashMenuGroup, SlashMenuGroupInternal, SlashMenuItem } from './types.js'\n\nimport { LexicalMenu, useMenuAnchorRef } from './LexicalMenu.js'\n\nexport const PUNCTUATION = '\\\\.,\\\\+\\\\*\\\\?\\\\$\\\\@\\\\|#{}\\\\(\\\\)\\\\^\\\\-\\\\[\\\\]\\\\\\\\/!%\\'\"~=<>_:;'\n\nfunction getTextUpToAnchor(selection: RangeSelection): null | string {\n const anchor = selection.anchor\n if (anchor.type !== 'text') {\n return null\n }\n const anchorNode = anchor.getNode()\n if (!anchorNode.isSimpleText()) {\n return null\n }\n const anchorOffset = anchor.offset\n return anchorNode.getTextContent().slice(0, anchorOffset)\n}\n\nfunction tryToPositionRange(leadOffset: number, range: Range, editorWindow: Window): boolean {\n const domSelection = editorWindow.getSelection()\n if (domSelection === null || !domSelection.isCollapsed) {\n return false\n }\n const anchorNode = domSelection.anchorNode\n const startOffset = leadOffset\n const endOffset = domSelection.anchorOffset\n\n if (anchorNode == null || endOffset == null) {\n return false\n }\n\n try {\n range.setStart(anchorNode, startOffset)\n // if endOffset is 0, positioning the range for when you click the plus button to open the slash menu will fial\n range.setEnd(anchorNode, endOffset > 1 ? endOffset : 1)\n } catch (error) {\n return false\n }\n\n return true\n}\n\nfunction getQueryTextForSearch(editor: LexicalEditor): null | string {\n let text = null\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if (!$isRangeSelection(selection)) {\n return\n }\n text = getTextUpToAnchor(selection)\n })\n return text\n}\n\nfunction isSelectionOnEntityBoundary(editor: LexicalEditor, offset: number): boolean {\n if (offset !== 0) {\n return false\n }\n return editor.getEditorState().read(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n const anchor = selection.anchor\n const anchorNode = anchor.getNode()\n const prevSibling = anchorNode.getPreviousSibling()\n return $isTextNode(prevSibling) && prevSibling.isTextEntity()\n }\n return false\n })\n}\n\nfunction startTransition(callback: () => void) {\n if (React.startTransition) {\n React.startTransition(callback)\n } else {\n callback()\n }\n}\n\n// Got from https://stackoverflow.com/a/42543908/2013580\nexport function getScrollParent(\n element: HTMLElement,\n includeHidden: boolean,\n): HTMLBodyElement | HTMLElement {\n let style = getComputedStyle(element)\n const excludeStaticParent = style.position === 'absolute'\n const overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/\n if (style.position === 'fixed') {\n return document.body\n }\n for (let parent: HTMLElement | null = element; (parent = parent.parentElement); ) {\n style = getComputedStyle(parent)\n if (excludeStaticParent && style.position === 'static') {\n continue\n }\n if (overflowRegex.test(style.overflow + style.overflowY + style.overflowX)) {\n return parent\n }\n }\n return document.body\n}\n\nexport { useDynamicPositioning } from './LexicalMenu.js'\n\nexport type TypeaheadMenuPluginProps = {\n anchorClassName?: string\n anchorElem: HTMLElement\n groups: Array<SlashMenuGroupInternal>\n menuRenderFn: MenuRenderFn\n onClose?: () => void\n onOpen?: (resolution: MenuResolution) => void\n onQueryChange: (matchingString: null | string) => void\n onSelectItem: (\n item: SlashMenuItem,\n textNodeContainingQuery: TextNode | null,\n closeMenu: () => void,\n matchingString: string,\n ) => void\n triggerFn: TriggerFn\n}\n\nexport const ENABLE_SLASH_MENU_COMMAND: LexicalCommand<{\n node: ParagraphNode\n}> = createCommand('ENABLE_SLASH_MENU_COMMAND')\n\nexport function LexicalTypeaheadMenuPlugin({\n anchorClassName,\n anchorElem,\n groups,\n menuRenderFn,\n onClose,\n onOpen,\n onQueryChange,\n onSelectItem,\n triggerFn,\n}: TypeaheadMenuPluginProps): JSX.Element | null {\n const [editor] = useLexicalComposerContext()\n const [resolution, setResolution] = useState<MenuResolution | null>(null)\n const anchorElementRef = useMenuAnchorRef(anchorElem, resolution, setResolution, anchorClassName)\n\n const closeTypeahead = useCallback(() => {\n setResolution(null)\n if (onClose != null && resolution !== null) {\n onClose()\n }\n }, [onClose, resolution])\n\n const openTypeahead = useCallback(\n (res: MenuResolution) => {\n setResolution(res)\n if (onOpen != null && resolution === null) {\n onOpen(res)\n }\n },\n [onOpen, resolution],\n )\n\n // This is mainly used for the AddBlockHandlePlugin, so that the slash menu can be opened from there\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand(\n ENABLE_SLASH_MENU_COMMAND,\n ({ node }) => {\n editor.getEditorState().read(() => {\n const match: MenuTextMatch = {\n leadOffset: 0,\n matchingString: '',\n replaceableString: '',\n }\n if (match !== null && !isSelectionOnEntityBoundary(editor, match.leadOffset)) {\n if (node !== null) {\n const editorWindow = editor._window ?? window\n const range = editorWindow.document.createRange()\n\n const isRangePositioned = tryToPositionRange(match.leadOffset, range, editorWindow)\n if (isRangePositioned !== null) {\n startTransition(() =>\n openTypeahead({\n getRect: () => {\n return range.getBoundingClientRect()\n },\n match,\n }),\n )\n }\n\n return\n }\n }\n })\n\n return true\n },\n COMMAND_PRIORITY_LOW,\n ),\n )\n }, [editor, openTypeahead])\n\n useEffect(() => {\n const updateListener = () => {\n editor.getEditorState().read(() => {\n const editorWindow = editor._window ?? window\n const range = editorWindow.document.createRange()\n const selection = $getSelection()\n const text = getQueryTextForSearch(editor)\n\n if (\n !$isRangeSelection(selection) ||\n !selection.isCollapsed() ||\n text === null ||\n range === null\n ) {\n closeTypeahead()\n return\n }\n\n const match = triggerFn({ editor, query: text })\n onQueryChange(match ? match.matchingString : null)\n\n if (match !== null && !isSelectionOnEntityBoundary(editor, match.leadOffset)) {\n const isRangePositioned = tryToPositionRange(match.leadOffset, range, editorWindow)\n if (isRangePositioned !== null) {\n startTransition(() =>\n openTypeahead({\n getRect: () => {\n return range.getBoundingClientRect()\n },\n match,\n }),\n )\n return\n }\n }\n closeTypeahead()\n })\n }\n\n const removeUpdateListener = editor.registerUpdateListener(updateListener)\n\n return () => {\n removeUpdateListener()\n }\n }, [editor, triggerFn, onQueryChange, resolution, closeTypeahead, openTypeahead])\n\n return resolution === null || editor === null ? null : (\n <LexicalMenu\n anchorElementRef={anchorElementRef}\n close={closeTypeahead}\n editor={editor}\n groups={groups}\n menuRenderFn={menuRenderFn}\n onSelectItem={onSelectItem}\n resolution={resolution}\n shouldSplitNodeWithQuery\n />\n )\n}\n\nexport type { MenuRenderFn, MenuResolution, MenuTextMatch, TriggerFn }\n"],"names":["useLexicalComposerContext","mergeRegister","$getSelection","$isRangeSelection","$isTextNode","COMMAND_PRIORITY_LOW","createCommand","useCallback","useEffect","useState","React","LexicalMenu","useMenuAnchorRef","PUNCTUATION","getTextUpToAnchor","selection","anchor","type","anchorNode","getNode","isSimpleText","anchorOffset","offset","getTextContent","slice","tryToPositionRange","leadOffset","range","editorWindow","domSelection","getSelection","isCollapsed","startOffset","endOffset","setStart","setEnd","error","getQueryTextForSearch","editor","text","getEditorState","read","isSelectionOnEntityBoundary","prevSibling","getPreviousSibling","isTextEntity","startTransition","callback","getScrollParent","element","includeHidden","style","getComputedStyle","excludeStaticParent","position","overflowRegex","document","body","parent","parentElement","test","overflow","overflowY","overflowX","useDynamicPositioning","ENABLE_SLASH_MENU_COMMAND","LexicalTypeaheadMenuPlugin","anchorClassName","anchorElem","groups","menuRenderFn","onClose","onOpen","onQueryChange","onSelectItem","triggerFn","resolution","setResolution","anchorElementRef","closeTypeahead","openTypeahead","res","registerCommand","node","match","matchingString","replaceableString","_window","window","createRange","isRangePositioned","getRect","getBoundingClientRect","updateListener","query","removeUpdateListener","registerUpdateListener","close","shouldSplitNodeWithQuery"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|