@payloadcms/richtext-lexical 3.29.0-internal.0ad276c → 3.29.0-internal.2984e42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/exports/client/Field-5SZDDPZE.js +2 -0
- package/dist/exports/client/Field-5SZDDPZE.js.map +7 -0
- package/dist/exports/client/{RelationshipComponent-JPESGV4Q.js → RelationshipComponent-APF3CN47.js} +2 -2
- package/dist/exports/client/bundled.css +1 -1
- package/dist/exports/client/chunk-46KMRCKV.js +2 -0
- package/dist/exports/client/chunk-46KMRCKV.js.map +7 -0
- package/dist/exports/client/chunk-BZZVLW4U.js +2 -0
- package/dist/exports/client/chunk-BZZVLW4U.js.map +7 -0
- package/dist/exports/client/{chunk-PUXDVIHC.js → chunk-Y2GOLUGU.js} +2 -2
- package/dist/exports/client/{component-P5K7Z5NW.js → component-Y3OSWJM5.js} +2 -2
- package/dist/exports/client/componentInline-ZB4EY7EQ.js +2 -0
- package/dist/exports/client/index.js +10 -10
- package/dist/exports/client/index.js.map +3 -3
- package/dist/exports/html/index.d.ts +15 -15
- package/dist/exports/html/index.d.ts.map +1 -1
- package/dist/exports/html/index.js +13 -13
- package/dist/exports/html/index.js.map +1 -1
- package/dist/exports/html-async/index.d.ts +15 -15
- package/dist/exports/html-async/index.d.ts.map +1 -1
- package/dist/exports/html-async/index.js +13 -13
- package/dist/exports/html-async/index.js.map +1 -1
- package/dist/exports/plaintext/index.d.ts +3 -0
- package/dist/exports/plaintext/index.d.ts.map +1 -0
- package/dist/exports/plaintext/index.js +2 -0
- package/dist/exports/plaintext/index.js.map +1 -0
- package/dist/exports/react/index.d.ts +15 -15
- package/dist/exports/react/index.d.ts.map +1 -1
- package/dist/exports/react/index.js +14 -14
- package/dist/exports/react/index.js.map +1 -1
- package/dist/features/blockquote/server/index.js +1 -1
- package/dist/features/blockquote/server/index.js.map +1 -1
- package/dist/features/blocks/client/component/BlockContent.d.ts.map +1 -1
- package/dist/features/blocks/client/component/BlockContent.js +2 -4
- package/dist/features/blocks/client/component/BlockContent.js.map +1 -1
- package/dist/features/blocks/client/componentInline/index.d.ts.map +1 -1
- package/dist/features/blocks/client/componentInline/index.js +2 -4
- package/dist/features/blocks/client/componentInline/index.js.map +1 -1
- package/dist/features/blocks/server/linesFromMatchToContentAndPropsString.d.ts.map +1 -1
- package/dist/features/blocks/server/linesFromMatchToContentAndPropsString.js +1 -1
- package/dist/features/blocks/server/linesFromMatchToContentAndPropsString.js.map +1 -1
- package/dist/features/converters/htmlToLexical/index.d.ts.map +1 -1
- package/dist/features/converters/htmlToLexical/index.js +0 -1
- package/dist/features/converters/htmlToLexical/index.js.map +1 -1
- package/dist/features/converters/lexicalToHtml/async/converters/blockquote.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml/async/converters/blockquote.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/async/converters/heading.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml/async/converters/heading.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/async/converters/horizontalRule.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml/async/converters/horizontalRule.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/async/converters/linebreak.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml/async/converters/linebreak.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/async/converters/link.d.ts.map +1 -0
- package/dist/features/converters/{html → lexicalToHtml}/async/converters/link.js +4 -12
- package/dist/features/converters/lexicalToHtml/async/converters/link.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/async/converters/list.d.ts.map +1 -0
- package/dist/features/converters/{html → lexicalToHtml}/async/converters/list.js +1 -1
- package/dist/features/converters/lexicalToHtml/async/converters/list.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/async/converters/paragraph.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml/async/converters/paragraph.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/async/converters/tab.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml/async/converters/tab.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/async/converters/table.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml/async/converters/table.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/async/converters/text.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml/async/converters/text.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/async/converters/upload.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml/async/converters/upload.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/async/defaultConverters.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml/async/defaultConverters.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/async/field/index.d.ts.map +1 -0
- package/dist/features/converters/{html → lexicalToHtml}/async/field/index.js +11 -11
- package/dist/features/converters/lexicalToHtml/async/field/index.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/async/index.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml/async/index.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/async/types.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml/async/types.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/shared/findConverterForNode.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml/shared/findConverterForNode.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/shared/types.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml/shared/types.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/sync/converters/blockquote.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml/sync/converters/blockquote.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/sync/converters/heading.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml/sync/converters/heading.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/sync/converters/horizontalRule.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml/sync/converters/horizontalRule.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/sync/converters/linebreak.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml/sync/converters/linebreak.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/sync/converters/link.d.ts.map +1 -0
- package/dist/features/converters/{html → lexicalToHtml}/sync/converters/link.js +4 -12
- package/dist/features/converters/lexicalToHtml/sync/converters/link.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/sync/converters/list.d.ts.map +1 -0
- package/dist/features/converters/{html → lexicalToHtml}/sync/converters/list.js +1 -1
- package/dist/features/converters/lexicalToHtml/sync/converters/list.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/sync/converters/paragraph.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml/sync/converters/paragraph.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/sync/converters/tab.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml/sync/converters/tab.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/sync/converters/table.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml/sync/converters/table.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/sync/converters/text.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml/sync/converters/text.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/sync/converters/upload.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml/sync/converters/upload.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/sync/defaultConverters.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml/sync/defaultConverters.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/sync/index.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml/sync/index.js.map +1 -0
- package/dist/features/converters/lexicalToHtml/sync/types.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml/sync/types.js.map +1 -0
- package/dist/features/converters/lexicalToHtml_deprecated/converter/converters/linebreak.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml_deprecated/converter/converters/linebreak.js.map +1 -0
- package/dist/features/converters/lexicalToHtml_deprecated/converter/converters/paragraph.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml_deprecated/converter/converters/paragraph.js.map +1 -0
- package/dist/features/converters/lexicalToHtml_deprecated/converter/converters/tab.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml_deprecated/converter/converters/tab.js.map +1 -0
- package/dist/features/converters/lexicalToHtml_deprecated/converter/converters/text.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml_deprecated/converter/converters/text.js.map +1 -0
- package/dist/features/converters/lexicalToHtml_deprecated/converter/defaultConverters.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml_deprecated/converter/defaultConverters.js.map +1 -0
- package/dist/features/converters/lexicalToHtml_deprecated/converter/index.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml_deprecated/converter/index.js.map +1 -0
- package/dist/features/converters/lexicalToHtml_deprecated/converter/types.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml_deprecated/converter/types.js.map +1 -0
- package/dist/features/converters/lexicalToHtml_deprecated/field/index.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml_deprecated/field/index.js.map +1 -0
- package/dist/features/converters/lexicalToHtml_deprecated/index.d.ts.map +1 -0
- package/dist/features/converters/lexicalToHtml_deprecated/index.js.map +1 -0
- package/dist/features/converters/lexicalToJSX/Component/index.d.ts.map +1 -0
- package/dist/features/converters/lexicalToJSX/Component/index.js.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/converters/blockquote.d.ts.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/converters/blockquote.js.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/converters/heading.d.ts.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/converters/heading.js.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/converters/horizontalRule.d.ts.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/converters/horizontalRule.js.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/converters/linebreak.d.ts.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/converters/linebreak.js.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/converters/link.d.ts.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/converters/link.js.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/converters/list.d.ts.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/converters/list.js.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/converters/paragraph.d.ts.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/converters/paragraph.js.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/converters/tab.d.ts.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/converters/tab.js.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/converters/table.d.ts.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/converters/table.js.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/converters/text.d.ts.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/converters/text.js.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/converters/upload.d.ts.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/converters/upload.js.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/defaultConverters.d.ts.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/defaultConverters.js.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/index.d.ts.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/index.js.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/types.d.ts.map +1 -0
- package/dist/features/converters/lexicalToJSX/converter/types.js.map +1 -0
- package/dist/features/converters/lexicalToMarkdown/index.d.ts +7 -0
- package/dist/features/converters/lexicalToMarkdown/index.d.ts.map +1 -0
- package/dist/features/converters/lexicalToMarkdown/index.js +24 -0
- package/dist/features/converters/lexicalToMarkdown/index.js.map +1 -0
- package/dist/features/converters/lexicalToPlaintext/convertLexicalToPlaintext.spec.js +84 -0
- package/dist/features/converters/lexicalToPlaintext/convertLexicalToPlaintext.spec.js.map +1 -0
- package/dist/features/converters/lexicalToPlaintext/shared/findConverterForNode.d.ts +7 -0
- package/dist/features/converters/lexicalToPlaintext/shared/findConverterForNode.d.ts.map +1 -0
- package/dist/features/converters/lexicalToPlaintext/shared/findConverterForNode.js +15 -0
- package/dist/features/converters/lexicalToPlaintext/shared/findConverterForNode.js.map +1 -0
- package/dist/features/converters/lexicalToPlaintext/shared/types.d.ts +5 -0
- package/dist/features/converters/lexicalToPlaintext/shared/types.d.ts.map +1 -0
- package/dist/features/converters/lexicalToPlaintext/shared/types.js +2 -0
- package/dist/features/converters/lexicalToPlaintext/shared/types.js.map +1 -0
- package/dist/features/converters/lexicalToPlaintext/sync/index.d.ts +22 -0
- package/dist/features/converters/lexicalToPlaintext/sync/index.d.ts.map +1 -0
- package/dist/features/converters/lexicalToPlaintext/sync/index.js +79 -0
- package/dist/features/converters/lexicalToPlaintext/sync/index.js.map +1 -0
- package/dist/features/converters/lexicalToPlaintext/sync/types.d.ts +60 -0
- package/dist/features/converters/lexicalToPlaintext/sync/types.d.ts.map +1 -0
- package/dist/features/converters/lexicalToPlaintext/sync/types.js +2 -0
- package/dist/features/converters/lexicalToPlaintext/sync/types.js.map +1 -0
- package/dist/features/converters/markdownToLexical/index.d.ts +8 -0
- package/dist/features/converters/markdownToLexical/index.d.ts.map +1 -0
- package/dist/features/converters/markdownToLexical/index.js +21 -0
- package/dist/features/converters/markdownToLexical/index.js.map +1 -0
- package/dist/features/converters/utilities/payloadPopulateFn.d.ts +1 -1
- package/dist/features/converters/utilities/payloadPopulateFn.d.ts.map +1 -1
- package/dist/features/converters/utilities/payloadPopulateFn.js.map +1 -1
- package/dist/features/converters/utilities/restPopulateFn.d.ts +1 -1
- package/dist/features/converters/utilities/restPopulateFn.d.ts.map +1 -1
- package/dist/features/converters/utilities/restPopulateFn.js.map +1 -1
- package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js +3 -3
- package/dist/features/experimental_table/client/plugins/TableActionMenuPlugin/index.js.map +1 -1
- package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.d.ts +1 -0
- package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.d.ts.map +1 -1
- package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js +5 -1
- package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.js.map +1 -1
- package/dist/features/experimental_table/client/plugins/TablePlugin/index.js +3 -3
- package/dist/features/experimental_table/client/plugins/TablePlugin/index.js.map +1 -1
- package/dist/features/experimental_table/server/index.js +1 -1
- package/dist/features/experimental_table/server/index.js.map +1 -1
- package/dist/features/heading/server/index.js +1 -1
- package/dist/features/heading/server/index.js.map +1 -1
- package/dist/features/indent/client/IndentPlugin.d.ts.map +1 -1
- package/dist/features/indent/client/IndentPlugin.js +26 -6
- package/dist/features/indent/client/IndentPlugin.js.map +1 -1
- package/dist/features/indent/server/index.d.ts +7 -0
- package/dist/features/indent/server/index.d.ts.map +1 -1
- package/dist/features/indent/server/index.js.map +1 -1
- package/dist/features/link/server/index.d.ts.map +1 -1
- package/dist/features/link/server/index.js +3 -7
- package/dist/features/link/server/index.js.map +1 -1
- package/dist/features/lists/htmlConverter.d.ts +1 -1
- package/dist/features/lists/htmlConverter.d.ts.map +1 -1
- package/dist/features/lists/htmlConverter.js +1 -1
- package/dist/features/lists/htmlConverter.js.map +1 -1
- package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js +2 -2
- package/dist/features/toolbars/shared/ToolbarDropdown/DropDown.js.map +1 -1
- package/dist/features/typesServer.d.ts +1 -1
- package/dist/features/typesServer.d.ts.map +1 -1
- package/dist/features/typesServer.js.map +1 -1
- package/dist/field/Field.d.ts.map +1 -1
- package/dist/field/Field.js +2 -3
- package/dist/field/Field.js.map +1 -1
- package/dist/field/bundled.css +1 -1
- package/dist/index.d.ts +13 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -10
- package/dist/index.js.map +1 -1
- package/dist/lexical/config/client/EditorConfigProvider.js +4 -4
- package/dist/lexical/config/client/EditorConfigProvider.js.map +1 -1
- package/dist/nodeTypes.d.ts +1 -1
- package/dist/nodeTypes.d.ts.map +1 -1
- package/dist/nodeTypes.js.map +1 -1
- package/package.json +24 -19
- package/dist/exports/client/Field-FLAQN6LU.js +0 -2
- package/dist/exports/client/Field-FLAQN6LU.js.map +0 -7
- package/dist/exports/client/chunk-3LGFOM34.js +0 -2
- package/dist/exports/client/chunk-3LGFOM34.js.map +0 -7
- package/dist/exports/client/chunk-QBDC3MVG.js +0 -2
- package/dist/exports/client/chunk-QBDC3MVG.js.map +0 -7
- package/dist/exports/client/componentInline-IBB73SHH.js +0 -2
- package/dist/features/converters/html/async/converters/blockquote.d.ts.map +0 -1
- package/dist/features/converters/html/async/converters/blockquote.js.map +0 -1
- package/dist/features/converters/html/async/converters/heading.d.ts.map +0 -1
- package/dist/features/converters/html/async/converters/heading.js.map +0 -1
- package/dist/features/converters/html/async/converters/horizontalRule.d.ts.map +0 -1
- package/dist/features/converters/html/async/converters/horizontalRule.js.map +0 -1
- package/dist/features/converters/html/async/converters/linebreak.d.ts.map +0 -1
- package/dist/features/converters/html/async/converters/linebreak.js.map +0 -1
- package/dist/features/converters/html/async/converters/link.d.ts.map +0 -1
- package/dist/features/converters/html/async/converters/link.js.map +0 -1
- package/dist/features/converters/html/async/converters/list.d.ts.map +0 -1
- package/dist/features/converters/html/async/converters/list.js.map +0 -1
- package/dist/features/converters/html/async/converters/paragraph.d.ts.map +0 -1
- package/dist/features/converters/html/async/converters/paragraph.js.map +0 -1
- package/dist/features/converters/html/async/converters/tab.d.ts.map +0 -1
- package/dist/features/converters/html/async/converters/tab.js.map +0 -1
- package/dist/features/converters/html/async/converters/table.d.ts.map +0 -1
- package/dist/features/converters/html/async/converters/table.js.map +0 -1
- package/dist/features/converters/html/async/converters/text.d.ts.map +0 -1
- package/dist/features/converters/html/async/converters/text.js.map +0 -1
- package/dist/features/converters/html/async/converters/upload.d.ts.map +0 -1
- package/dist/features/converters/html/async/converters/upload.js.map +0 -1
- package/dist/features/converters/html/async/defaultConverters.d.ts.map +0 -1
- package/dist/features/converters/html/async/defaultConverters.js.map +0 -1
- package/dist/features/converters/html/async/field/index.d.ts.map +0 -1
- package/dist/features/converters/html/async/field/index.js.map +0 -1
- package/dist/features/converters/html/async/index.d.ts.map +0 -1
- package/dist/features/converters/html/async/index.js.map +0 -1
- package/dist/features/converters/html/async/types.d.ts.map +0 -1
- package/dist/features/converters/html/async/types.js.map +0 -1
- package/dist/features/converters/html/shared/findConverterForNode.d.ts.map +0 -1
- package/dist/features/converters/html/shared/findConverterForNode.js.map +0 -1
- package/dist/features/converters/html/shared/types.d.ts.map +0 -1
- package/dist/features/converters/html/shared/types.js.map +0 -1
- package/dist/features/converters/html/sync/converters/blockquote.d.ts.map +0 -1
- package/dist/features/converters/html/sync/converters/blockquote.js.map +0 -1
- package/dist/features/converters/html/sync/converters/heading.d.ts.map +0 -1
- package/dist/features/converters/html/sync/converters/heading.js.map +0 -1
- package/dist/features/converters/html/sync/converters/horizontalRule.d.ts.map +0 -1
- package/dist/features/converters/html/sync/converters/horizontalRule.js.map +0 -1
- package/dist/features/converters/html/sync/converters/linebreak.d.ts.map +0 -1
- package/dist/features/converters/html/sync/converters/linebreak.js.map +0 -1
- package/dist/features/converters/html/sync/converters/link.d.ts.map +0 -1
- package/dist/features/converters/html/sync/converters/link.js.map +0 -1
- package/dist/features/converters/html/sync/converters/list.d.ts.map +0 -1
- package/dist/features/converters/html/sync/converters/list.js.map +0 -1
- package/dist/features/converters/html/sync/converters/paragraph.d.ts.map +0 -1
- package/dist/features/converters/html/sync/converters/paragraph.js.map +0 -1
- package/dist/features/converters/html/sync/converters/tab.d.ts.map +0 -1
- package/dist/features/converters/html/sync/converters/tab.js.map +0 -1
- package/dist/features/converters/html/sync/converters/table.d.ts.map +0 -1
- package/dist/features/converters/html/sync/converters/table.js.map +0 -1
- package/dist/features/converters/html/sync/converters/text.d.ts.map +0 -1
- package/dist/features/converters/html/sync/converters/text.js.map +0 -1
- package/dist/features/converters/html/sync/converters/upload.d.ts.map +0 -1
- package/dist/features/converters/html/sync/converters/upload.js.map +0 -1
- package/dist/features/converters/html/sync/defaultConverters.d.ts.map +0 -1
- package/dist/features/converters/html/sync/defaultConverters.js.map +0 -1
- package/dist/features/converters/html/sync/index.d.ts.map +0 -1
- package/dist/features/converters/html/sync/index.js.map +0 -1
- package/dist/features/converters/html/sync/types.d.ts.map +0 -1
- package/dist/features/converters/html/sync/types.js.map +0 -1
- package/dist/features/converters/html_deprecated/converter/converters/linebreak.d.ts.map +0 -1
- package/dist/features/converters/html_deprecated/converter/converters/linebreak.js.map +0 -1
- package/dist/features/converters/html_deprecated/converter/converters/paragraph.d.ts.map +0 -1
- package/dist/features/converters/html_deprecated/converter/converters/paragraph.js.map +0 -1
- package/dist/features/converters/html_deprecated/converter/converters/tab.d.ts.map +0 -1
- package/dist/features/converters/html_deprecated/converter/converters/tab.js.map +0 -1
- package/dist/features/converters/html_deprecated/converter/converters/text.d.ts.map +0 -1
- package/dist/features/converters/html_deprecated/converter/converters/text.js.map +0 -1
- package/dist/features/converters/html_deprecated/converter/defaultConverters.d.ts.map +0 -1
- package/dist/features/converters/html_deprecated/converter/defaultConverters.js.map +0 -1
- package/dist/features/converters/html_deprecated/converter/index.d.ts.map +0 -1
- package/dist/features/converters/html_deprecated/converter/index.js.map +0 -1
- package/dist/features/converters/html_deprecated/converter/types.d.ts.map +0 -1
- package/dist/features/converters/html_deprecated/converter/types.js.map +0 -1
- package/dist/features/converters/html_deprecated/field/index.d.ts.map +0 -1
- package/dist/features/converters/html_deprecated/field/index.js.map +0 -1
- package/dist/features/converters/html_deprecated/index.d.ts.map +0 -1
- package/dist/features/converters/html_deprecated/index.js.map +0 -1
- package/dist/features/converters/jsx/Component/index.d.ts.map +0 -1
- package/dist/features/converters/jsx/Component/index.js.map +0 -1
- package/dist/features/converters/jsx/converter/converters/blockquote.d.ts.map +0 -1
- package/dist/features/converters/jsx/converter/converters/blockquote.js.map +0 -1
- package/dist/features/converters/jsx/converter/converters/heading.d.ts.map +0 -1
- package/dist/features/converters/jsx/converter/converters/heading.js.map +0 -1
- package/dist/features/converters/jsx/converter/converters/horizontalRule.d.ts.map +0 -1
- package/dist/features/converters/jsx/converter/converters/horizontalRule.js.map +0 -1
- package/dist/features/converters/jsx/converter/converters/linebreak.d.ts.map +0 -1
- package/dist/features/converters/jsx/converter/converters/linebreak.js.map +0 -1
- package/dist/features/converters/jsx/converter/converters/link.d.ts.map +0 -1
- package/dist/features/converters/jsx/converter/converters/link.js.map +0 -1
- package/dist/features/converters/jsx/converter/converters/list.d.ts.map +0 -1
- package/dist/features/converters/jsx/converter/converters/list.js.map +0 -1
- package/dist/features/converters/jsx/converter/converters/paragraph.d.ts.map +0 -1
- package/dist/features/converters/jsx/converter/converters/paragraph.js.map +0 -1
- package/dist/features/converters/jsx/converter/converters/tab.d.ts.map +0 -1
- package/dist/features/converters/jsx/converter/converters/tab.js.map +0 -1
- package/dist/features/converters/jsx/converter/converters/table.d.ts.map +0 -1
- package/dist/features/converters/jsx/converter/converters/table.js.map +0 -1
- package/dist/features/converters/jsx/converter/converters/text.d.ts.map +0 -1
- package/dist/features/converters/jsx/converter/converters/text.js.map +0 -1
- package/dist/features/converters/jsx/converter/converters/upload.d.ts.map +0 -1
- package/dist/features/converters/jsx/converter/converters/upload.js.map +0 -1
- package/dist/features/converters/jsx/converter/defaultConverters.d.ts.map +0 -1
- package/dist/features/converters/jsx/converter/defaultConverters.js.map +0 -1
- package/dist/features/converters/jsx/converter/index.d.ts.map +0 -1
- package/dist/features/converters/jsx/converter/index.js.map +0 -1
- package/dist/features/converters/jsx/converter/types.d.ts.map +0 -1
- package/dist/features/converters/jsx/converter/types.js.map +0 -1
- /package/dist/exports/client/{RelationshipComponent-JPESGV4Q.js.map → RelationshipComponent-APF3CN47.js.map} +0 -0
- /package/dist/exports/client/{chunk-PUXDVIHC.js.map → chunk-Y2GOLUGU.js.map} +0 -0
- /package/dist/exports/client/{component-P5K7Z5NW.js.map → component-Y3OSWJM5.js.map} +0 -0
- /package/dist/exports/client/{componentInline-IBB73SHH.js.map → componentInline-ZB4EY7EQ.js.map} +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/async/converters/blockquote.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/async/converters/blockquote.js +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/async/converters/heading.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/async/converters/heading.js +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/async/converters/horizontalRule.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/async/converters/horizontalRule.js +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/async/converters/linebreak.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/async/converters/linebreak.js +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/async/converters/link.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/async/converters/list.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/async/converters/paragraph.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/async/converters/paragraph.js +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/async/converters/tab.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/async/converters/tab.js +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/async/converters/table.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/async/converters/table.js +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/async/converters/text.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/async/converters/text.js +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/async/converters/upload.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/async/converters/upload.js +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/async/defaultConverters.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/async/defaultConverters.js +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/async/field/index.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/async/index.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/async/index.js +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/async/types.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/async/types.js +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/shared/findConverterForNode.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/shared/findConverterForNode.js +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/shared/types.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/shared/types.js +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/sync/converters/blockquote.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/sync/converters/blockquote.js +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/sync/converters/heading.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/sync/converters/heading.js +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/sync/converters/horizontalRule.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/sync/converters/horizontalRule.js +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/sync/converters/linebreak.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/sync/converters/linebreak.js +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/sync/converters/link.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/sync/converters/list.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/sync/converters/paragraph.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/sync/converters/paragraph.js +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/sync/converters/tab.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/sync/converters/tab.js +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/sync/converters/table.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/sync/converters/table.js +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/sync/converters/text.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/sync/converters/text.js +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/sync/converters/upload.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/sync/converters/upload.js +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/sync/defaultConverters.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/sync/defaultConverters.js +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/sync/index.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/sync/index.js +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/sync/types.d.ts +0 -0
- /package/dist/features/converters/{html → lexicalToHtml}/sync/types.js +0 -0
- /package/dist/features/converters/{html_deprecated → lexicalToHtml_deprecated}/converter/converters/linebreak.d.ts +0 -0
- /package/dist/features/converters/{html_deprecated → lexicalToHtml_deprecated}/converter/converters/linebreak.js +0 -0
- /package/dist/features/converters/{html_deprecated → lexicalToHtml_deprecated}/converter/converters/paragraph.d.ts +0 -0
- /package/dist/features/converters/{html_deprecated → lexicalToHtml_deprecated}/converter/converters/paragraph.js +0 -0
- /package/dist/features/converters/{html_deprecated → lexicalToHtml_deprecated}/converter/converters/tab.d.ts +0 -0
- /package/dist/features/converters/{html_deprecated → lexicalToHtml_deprecated}/converter/converters/tab.js +0 -0
- /package/dist/features/converters/{html_deprecated → lexicalToHtml_deprecated}/converter/converters/text.d.ts +0 -0
- /package/dist/features/converters/{html_deprecated → lexicalToHtml_deprecated}/converter/converters/text.js +0 -0
- /package/dist/features/converters/{html_deprecated → lexicalToHtml_deprecated}/converter/defaultConverters.d.ts +0 -0
- /package/dist/features/converters/{html_deprecated → lexicalToHtml_deprecated}/converter/defaultConverters.js +0 -0
- /package/dist/features/converters/{html_deprecated → lexicalToHtml_deprecated}/converter/index.d.ts +0 -0
- /package/dist/features/converters/{html_deprecated → lexicalToHtml_deprecated}/converter/index.js +0 -0
- /package/dist/features/converters/{html_deprecated → lexicalToHtml_deprecated}/converter/types.d.ts +0 -0
- /package/dist/features/converters/{html_deprecated → lexicalToHtml_deprecated}/converter/types.js +0 -0
- /package/dist/features/converters/{html_deprecated → lexicalToHtml_deprecated}/field/index.d.ts +0 -0
- /package/dist/features/converters/{html_deprecated → lexicalToHtml_deprecated}/field/index.js +0 -0
- /package/dist/features/converters/{html_deprecated → lexicalToHtml_deprecated}/index.d.ts +0 -0
- /package/dist/features/converters/{html_deprecated → lexicalToHtml_deprecated}/index.js +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/Component/index.d.ts +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/Component/index.js +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/converter/converters/blockquote.d.ts +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/converter/converters/blockquote.js +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/converter/converters/heading.d.ts +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/converter/converters/heading.js +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/converter/converters/horizontalRule.d.ts +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/converter/converters/horizontalRule.js +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/converter/converters/linebreak.d.ts +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/converter/converters/linebreak.js +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/converter/converters/link.d.ts +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/converter/converters/link.js +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/converter/converters/list.d.ts +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/converter/converters/list.js +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/converter/converters/paragraph.d.ts +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/converter/converters/paragraph.js +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/converter/converters/tab.d.ts +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/converter/converters/tab.js +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/converter/converters/table.d.ts +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/converter/converters/table.js +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/converter/converters/text.d.ts +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/converter/converters/text.js +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/converter/converters/upload.d.ts +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/converter/converters/upload.js +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/converter/defaultConverters.d.ts +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/converter/defaultConverters.js +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/converter/index.d.ts +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/converter/index.js +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/converter/types.d.ts +0 -0
- /package/dist/features/converters/{jsx → lexicalToJSX}/converter/types.js +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","useLexicalEditable","$computeTableMapSkipCellCheck","$deleteTableColumn__EXPERIMENTAL","$deleteTableRow__EXPERIMENTAL","$getNodeTriplet","$getTableCellNodeFromLexicalNode","$getTableColumnIndexFromTableCellNode","$getTableNodeFromLexicalNodeOrThrow","$getTableRowIndexFromTableCellNode","$insertTableColumn__EXPERIMENTAL","$insertTableRow__EXPERIMENTAL","$isTableCellNode","$isTableSelection","$unmergeCell","getTableElement","getTableObserverFromTableElement","TableCellHeaderStates","TableCellNode","mergeRegister","useScrollInfo","$createParagraphNode","$getRoot","$getSelection","$isElementNode","$isParagraphNode","$isRangeSelection","$isTextNode","COMMAND_PRIORITY_CRITICAL","getDOMSelection","isDOMNode","SELECTION_CHANGE_COMMAND","React","useCallback","useEffect","useRef","useState","createPortal","MeatballsIcon","computeSelectionCount","selection","selectionShape","getShape","columns","toX","fromX","rows","toY","fromY","$canUnmerge","isCollapsed","anchor","is","focus","cell","__colSpan","__rowSpan","$cellContainsEmptyParagraph","getChildrenSize","firstChild","getFirstChildOrThrow","isEmpty","$selectLastDescendant","node","lastDescendant","getLastDescendant","select","selectEnd","selectNext","TableActionMenu","cellMerge","contextRef","onClose","setIsMenuOpen","tableCellNode","_tableCellNode","editor","dropDownRef","updateTableCellNode","selectionCounts","updateSelectionCounts","canMergeCells","setCanMergeCells","canUnmergeCell","setCanUnmergeCell","y","registerMutationListener","nodeMutations","nodeUpdated","get","getKey","getEditorState","read","getLatest","skipInitialization","currentSelectionCounts","menuButtonElement","current","dropDownElement","rootElement","getRootElement","rootEleRect","getBoundingClientRect","menuButtonRect","style","opacity","dropDownElementRect","margin","leftPosition","right","width","window","innerWidth","position","left","pageXOffset","topPosition","top","height","innerHeight","bottom","handleClickOutside","event","target","contains","addEventListener","removeEventListener","clearTableSelection","update","isAttached","tableNode","tableElement","getElementByKey","Error","tableObserver","$clearHighlight","markDirty","rootNode","selectStart","mergeTableCellsAtSelection","nodes","getNodes","tableCells","filter","length","gridMap","minRow","Infinity","maxRow","minCol","maxCol","processedCells","Set","row","mapCell","cellKey","has","some","add","cellStartRow","startRow","cellStartCol","startColumn","cellRowSpan","cellColSpan","Math","min","max","totalRowSpan","totalColSpan","targetCellMap","targetCell","setColSpan","setRowSpan","seenCells","col","currentCell","key","append","getChildren","remove","unmergeTableCellsAtSelection","insertTableRowAtSelection","shouldInsertAfter","i","insertTableColumnAtSelection","deleteTableRowAtSelection","deleteTableAtSelection","deleteTableColumnAtSelection","toggleTableRowIsHeader","tableRowIndex","rowCells","newStyle","getHeaderStyles","ROW","setHeaderStyles","toggleTableColumnIsHeader","tableColumnIndex","columnCells","COLUMN","toggleRowStriping","setRowStriping","getRowStriping","toggleFirstColumnFreeze","setFrozenColumns","getFrozenColumns","mergeCellButton","_jsx","className","onClick","type","_jsxs","e","stopPropagation","ref","Fragment","__headerState","document","body","TableCellActionMenuContainer","anchorElem","menuButtonRef","menuRootRef","isMenuOpen","setTableMenuCellNode","$moveMenu","menu","nativeSelection","_window","activeElement","disable","classList","tableCellParentNodeDOM","anchorNode","tableCellNodeFromSelection","getNode","enabled","isSelecting","toggle","tableCellRect","anchorRect","transform","timeoutId","undefined","callback","delayedCallback","setTimeout","registerUpdateListener","registerCommand","registerRootListener","prevRootElement","clearTimeout","prevTableCellDOM","TableActionMenuPlugin","t0","$","isEditable","t1"],"sources":["../../../../../../src/features/experimental_table/client/plugins/TableActionMenuPlugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type { TableObserver, TableSelection } from '@lexical/table'\nimport type { ElementNode } from 'lexical'\nimport type { JSX } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport {\n $computeTableMapSkipCellCheck,\n $deleteTableColumn__EXPERIMENTAL,\n $deleteTableRow__EXPERIMENTAL,\n $getNodeTriplet,\n $getTableCellNodeFromLexicalNode,\n $getTableColumnIndexFromTableCellNode,\n $getTableNodeFromLexicalNodeOrThrow,\n $getTableRowIndexFromTableCellNode,\n $insertTableColumn__EXPERIMENTAL,\n $insertTableRow__EXPERIMENTAL,\n $isTableCellNode,\n $isTableSelection,\n $unmergeCell,\n getTableElement,\n getTableObserverFromTableElement,\n TableCellHeaderStates,\n TableCellNode,\n} from '@lexical/table'\nimport { mergeRegister } from '@lexical/utils'\nimport { useScrollInfo } from '@payloadcms/ui'\nimport {\n $createParagraphNode,\n $getRoot,\n $getSelection,\n $isElementNode,\n $isParagraphNode,\n $isRangeSelection,\n $isTextNode,\n COMMAND_PRIORITY_CRITICAL,\n getDOMSelection,\n isDOMNode,\n SELECTION_CHANGE_COMMAND,\n} from 'lexical'\nimport * as React from 'react'\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport type { PluginComponentWithAnchor } from '../../../../typesClient.js'\n\nimport './index.scss'\nimport { MeatballsIcon } from '../../../../../lexical/ui/icons/Meatballs/index.js'\n\nfunction computeSelectionCount(selection: TableSelection): {\n columns: number\n rows: number\n} {\n const selectionShape = selection.getShape()\n return {\n columns: selectionShape.toX - selectionShape.fromX + 1,\n rows: selectionShape.toY - selectionShape.fromY + 1,\n }\n}\n\nfunction $canUnmerge(): boolean {\n const selection = $getSelection()\n if (\n ($isRangeSelection(selection) && !selection.isCollapsed()) ||\n ($isTableSelection(selection) && !selection.anchor.is(selection.focus)) ||\n (!$isRangeSelection(selection) && !$isTableSelection(selection))\n ) {\n return false\n }\n const [cell] = $getNodeTriplet(selection.anchor)\n return cell.__colSpan > 1 || cell.__rowSpan > 1\n}\n\nfunction $cellContainsEmptyParagraph(cell: TableCellNode): boolean {\n if (cell.getChildrenSize() !== 1) {\n return false\n }\n const firstChild = cell.getFirstChildOrThrow()\n if (!$isParagraphNode(firstChild) || !firstChild.isEmpty()) {\n return false\n }\n return true\n}\n\nfunction $selectLastDescendant(node: ElementNode): void {\n const lastDescendant = node.getLastDescendant()\n if ($isTextNode(lastDescendant)) {\n lastDescendant.select()\n } else if ($isElementNode(lastDescendant)) {\n lastDescendant.selectEnd()\n } else if (lastDescendant !== null) {\n lastDescendant.selectNext()\n }\n}\n\ntype TableCellActionMenuProps = Readonly<{\n cellMerge: boolean\n contextRef: { current: HTMLElement | null }\n onClose: () => void\n setIsMenuOpen: (isOpen: boolean) => void\n tableCellNode: TableCellNode\n}>\n\nfunction TableActionMenu({\n cellMerge,\n contextRef,\n onClose,\n setIsMenuOpen,\n tableCellNode: _tableCellNode,\n}: TableCellActionMenuProps) {\n const [editor] = useLexicalComposerContext()\n const dropDownRef = useRef<HTMLDivElement | null>(null)\n const [tableCellNode, updateTableCellNode] = useState(_tableCellNode)\n const [selectionCounts, updateSelectionCounts] = useState({\n columns: 1,\n rows: 1,\n })\n const [canMergeCells, setCanMergeCells] = useState(false)\n const [canUnmergeCell, setCanUnmergeCell] = useState(false)\n const { y } = useScrollInfo()\n\n useEffect(() => {\n return editor.registerMutationListener(\n TableCellNode,\n (nodeMutations) => {\n const nodeUpdated = nodeMutations.get(tableCellNode.getKey()) === 'updated'\n\n if (nodeUpdated) {\n editor.getEditorState().read(() => {\n updateTableCellNode(tableCellNode.getLatest())\n })\n }\n },\n { skipInitialization: true },\n )\n }, [editor, tableCellNode])\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n // Merge cells\n if ($isTableSelection(selection)) {\n const currentSelectionCounts = computeSelectionCount(selection)\n updateSelectionCounts(computeSelectionCount(selection))\n\n setCanMergeCells(currentSelectionCounts.columns > 1 || currentSelectionCounts.rows > 1)\n }\n // Unmerge cell\n setCanUnmergeCell($canUnmerge())\n })\n }, [editor])\n\n useEffect(() => {\n const menuButtonElement = contextRef.current\n const dropDownElement = dropDownRef.current\n const rootElement = editor.getRootElement()\n\n if (menuButtonElement != null && dropDownElement != null && rootElement != null) {\n const rootEleRect = rootElement.getBoundingClientRect()\n const menuButtonRect = menuButtonElement.getBoundingClientRect()\n dropDownElement.style.opacity = '1'\n const dropDownElementRect = dropDownElement.getBoundingClientRect()\n const margin = 5\n let leftPosition = menuButtonRect.right + margin\n if (\n leftPosition + dropDownElementRect.width > window.innerWidth ||\n leftPosition + dropDownElementRect.width > rootEleRect.right\n ) {\n const position = menuButtonRect.left - dropDownElementRect.width - margin\n leftPosition = (position < 0 ? margin : position) + window.pageXOffset\n }\n dropDownElement.style.left = `${leftPosition + window.pageXOffset}px`\n\n let topPosition = menuButtonRect.top\n if (topPosition + dropDownElementRect.height > window.innerHeight) {\n const position = menuButtonRect.bottom - dropDownElementRect.height\n topPosition = position < 0 ? margin : position\n }\n dropDownElement.style.top = `${topPosition}px`\n }\n }, [contextRef, dropDownRef, editor, y])\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (\n dropDownRef.current != null &&\n contextRef.current != null &&\n isDOMNode(event.target) &&\n !dropDownRef.current.contains(event.target) &&\n !contextRef.current.contains(event.target)\n ) {\n setIsMenuOpen(false)\n }\n }\n\n window.addEventListener('click', handleClickOutside)\n\n return () => window.removeEventListener('click', handleClickOutside)\n }, [setIsMenuOpen, contextRef])\n\n const clearTableSelection = useCallback(() => {\n editor.update(() => {\n if (tableCellNode.isAttached()) {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n const tableElement = getTableElement(tableNode, editor.getElementByKey(tableNode.getKey()))\n\n if (tableElement === null) {\n throw new Error('Expected to find tableElement in DOM')\n }\n\n const tableObserver = getTableObserverFromTableElement(tableElement)\n if (tableObserver !== null) {\n tableObserver.$clearHighlight()\n }\n\n tableNode.markDirty()\n updateTableCellNode(tableCellNode.getLatest())\n }\n\n const rootNode = $getRoot()\n rootNode.selectStart()\n })\n }, [editor, tableCellNode])\n\n const mergeTableCellsAtSelection = () => {\n editor.update(() => {\n const selection = $getSelection()\n if ($isTableSelection(selection)) {\n // Get all selected cells and compute the total area\n const nodes = selection.getNodes()\n const tableCells = nodes.filter($isTableCellNode)\n\n if (tableCells.length === 0) {\n return\n }\n\n // Find the table node\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCells[0] as TableCellNode)\n const [gridMap] = $computeTableMapSkipCellCheck(tableNode, null, null)\n\n // Find the boundaries of the selection including merged cells\n let minRow = Infinity\n let maxRow = -Infinity\n let minCol = Infinity\n let maxCol = -Infinity\n\n // First pass: find the actual boundaries considering merged cells\n const processedCells = new Set()\n for (const row of gridMap) {\n for (const mapCell of row) {\n if (!mapCell || !mapCell.cell) {\n continue\n }\n\n const cellKey = mapCell.cell.getKey()\n if (processedCells.has(cellKey)) {\n continue\n }\n\n if (tableCells.some((cell) => cell.is(mapCell.cell))) {\n processedCells.add(cellKey)\n // Get the actual position of this cell in the grid\n const cellStartRow = mapCell.startRow\n const cellStartCol = mapCell.startColumn\n const cellRowSpan = mapCell.cell.__rowSpan || 1\n const cellColSpan = mapCell.cell.__colSpan || 1\n\n // Update boundaries considering the cell's actual position and span\n minRow = Math.min(minRow, cellStartRow)\n maxRow = Math.max(maxRow, cellStartRow + cellRowSpan - 1)\n minCol = Math.min(minCol, cellStartCol)\n maxCol = Math.max(maxCol, cellStartCol + cellColSpan - 1)\n }\n }\n }\n\n // Validate boundaries\n if (minRow === Infinity || minCol === Infinity) {\n return\n }\n\n // The total span of the merged cell\n const totalRowSpan = maxRow - minRow + 1\n const totalColSpan = maxCol - minCol + 1\n\n // Use the top-left cell as the target cell\n const targetCellMap = gridMap?.[minRow]?.[minCol]\n if (!targetCellMap?.cell) {\n return\n }\n const targetCell = targetCellMap.cell\n\n // Set the spans for the target cell\n targetCell.setColSpan(totalColSpan)\n targetCell.setRowSpan(totalRowSpan)\n\n // Move content from other cells to the target cell\n const seenCells = new Set([targetCell.getKey()])\n\n // Second pass: merge content and remove other cells\n for (let row = minRow; row <= maxRow; row++) {\n for (let col = minCol; col <= maxCol; col++) {\n const mapCell = gridMap?.[row]?.[col]\n if (!mapCell?.cell) {\n continue\n }\n\n const currentCell = mapCell.cell\n const key = currentCell.getKey()\n\n if (!seenCells.has(key)) {\n seenCells.add(key)\n const isEmpty = $cellContainsEmptyParagraph(currentCell)\n if (!isEmpty) {\n targetCell.append(...currentCell.getChildren())\n }\n currentCell.remove()\n }\n }\n }\n\n // Ensure target cell has content\n if (targetCell.getChildrenSize() === 0) {\n targetCell.append($createParagraphNode())\n }\n\n $selectLastDescendant(targetCell)\n onClose()\n }\n })\n }\n\n const unmergeTableCellsAtSelection = () => {\n editor.update(() => {\n $unmergeCell()\n })\n }\n\n const insertTableRowAtSelection = useCallback(\n (shouldInsertAfter: boolean) => {\n editor.update(() => {\n for (let i = 0; i < selectionCounts.rows; i++) {\n $insertTableRow__EXPERIMENTAL(shouldInsertAfter)\n }\n onClose()\n })\n },\n [editor, onClose, selectionCounts.rows],\n )\n\n const insertTableColumnAtSelection = useCallback(\n (shouldInsertAfter: boolean) => {\n editor.update(() => {\n for (let i = 0; i < selectionCounts.columns; i++) {\n $insertTableColumn__EXPERIMENTAL(shouldInsertAfter)\n }\n onClose()\n })\n },\n [editor, onClose, selectionCounts.columns],\n )\n\n const deleteTableRowAtSelection = useCallback(() => {\n editor.update(() => {\n $deleteTableRow__EXPERIMENTAL()\n onClose()\n })\n }, [editor, onClose])\n\n const deleteTableAtSelection = useCallback(() => {\n editor.update(() => {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n tableNode.remove()\n\n clearTableSelection()\n onClose()\n })\n }, [editor, tableCellNode, clearTableSelection, onClose])\n\n const deleteTableColumnAtSelection = useCallback(() => {\n editor.update(() => {\n $deleteTableColumn__EXPERIMENTAL()\n onClose()\n })\n }, [editor, onClose])\n\n const toggleTableRowIsHeader = useCallback(() => {\n editor.update(() => {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n\n const tableRowIndex = $getTableRowIndexFromTableCellNode(tableCellNode)\n\n const [gridMap] = $computeTableMapSkipCellCheck(tableNode, null, null)\n\n const rowCells = new Set<TableCellNode>()\n\n const newStyle = tableCellNode.getHeaderStyles() ^ TableCellHeaderStates.ROW\n if (gridMap[tableRowIndex]) {\n for (let col = 0; col < gridMap[tableRowIndex].length; col++) {\n const mapCell = gridMap[tableRowIndex][col]\n\n if (!mapCell?.cell) {\n continue\n }\n\n if (!rowCells.has(mapCell.cell)) {\n rowCells.add(mapCell.cell)\n mapCell.cell.setHeaderStyles(newStyle, TableCellHeaderStates.ROW)\n }\n }\n }\n\n clearTableSelection()\n onClose()\n })\n }, [editor, tableCellNode, clearTableSelection, onClose])\n\n const toggleTableColumnIsHeader = useCallback(() => {\n editor.update(() => {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n\n const tableColumnIndex = $getTableColumnIndexFromTableCellNode(tableCellNode)\n\n const [gridMap] = $computeTableMapSkipCellCheck(tableNode, null, null)\n\n const columnCells = new Set<TableCellNode>()\n\n const newStyle = tableCellNode.getHeaderStyles() ^ TableCellHeaderStates.COLUMN\n if (gridMap) {\n for (let row = 0; row < gridMap.length; row++) {\n const mapCell = gridMap?.[row]?.[tableColumnIndex]\n\n if (!mapCell?.cell) {\n continue\n }\n\n if (!columnCells.has(mapCell.cell)) {\n columnCells.add(mapCell.cell)\n mapCell.cell.setHeaderStyles(newStyle, TableCellHeaderStates.COLUMN)\n }\n }\n }\n\n clearTableSelection()\n onClose()\n })\n }, [editor, tableCellNode, clearTableSelection, onClose])\n\n const toggleRowStriping = useCallback(() => {\n editor.update(() => {\n if (tableCellNode.isAttached()) {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n if (tableNode) {\n tableNode.setRowStriping(!tableNode.getRowStriping())\n }\n }\n\n clearTableSelection()\n onClose()\n })\n }, [editor, tableCellNode, clearTableSelection, onClose])\n\n const toggleFirstColumnFreeze = useCallback(() => {\n editor.update(() => {\n if (tableCellNode.isAttached()) {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n if (tableNode) {\n tableNode.setFrozenColumns(tableNode.getFrozenColumns() === 0 ? 1 : 0)\n }\n }\n clearTableSelection()\n onClose()\n })\n }, [editor, tableCellNode, clearTableSelection, onClose])\n\n let mergeCellButton: JSX.Element | null = null\n if (cellMerge) {\n if (canMergeCells) {\n mergeCellButton = (\n <button\n className=\"item\"\n data-test-id=\"table-merge-cells\"\n onClick={() => mergeTableCellsAtSelection()}\n type=\"button\"\n >\n <span className=\"text\">Merge cells</span>\n </button>\n )\n } else if (canUnmergeCell) {\n mergeCellButton = (\n <button\n className=\"item\"\n data-test-id=\"table-unmerge-cells\"\n onClick={() => unmergeTableCellsAtSelection()}\n type=\"button\"\n >\n <span className=\"text\">Unmerge cells</span>\n </button>\n )\n }\n }\n\n return createPortal(\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions,jsx-a11y/click-events-have-key-events\n <div\n className=\"table-action-menu-dropdown\"\n onClick={(e) => {\n e.stopPropagation()\n }}\n ref={dropDownRef}\n >\n {mergeCellButton ? (\n <React.Fragment>\n {mergeCellButton}\n <hr />\n </React.Fragment>\n ) : null}\n\n <button\n className=\"item\"\n data-test-id=\"table-row-striping\"\n onClick={() => toggleRowStriping()}\n type=\"button\"\n >\n <span className=\"text\">Toggle Row Striping</span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-freeze-first-column\"\n onClick={() => toggleFirstColumnFreeze()}\n type=\"button\"\n >\n <span className=\"text\">Toggle First Column Freeze</span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-insert-row-above\"\n onClick={() => insertTableRowAtSelection(false)}\n type=\"button\"\n >\n <span className=\"text\">\n Insert {selectionCounts.rows === 1 ? 'row' : `${selectionCounts.rows} rows`} above\n </span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-insert-row-below\"\n onClick={() => insertTableRowAtSelection(true)}\n type=\"button\"\n >\n <span className=\"text\">\n Insert {selectionCounts.rows === 1 ? 'row' : `${selectionCounts.rows} rows`} below\n </span>\n </button>\n <hr />\n <button\n className=\"item\"\n data-test-id=\"table-insert-column-before\"\n onClick={() => insertTableColumnAtSelection(false)}\n type=\"button\"\n >\n <span className=\"text\">\n Insert {selectionCounts.columns === 1 ? 'column' : `${selectionCounts.columns} columns`}{' '}\n left\n </span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-insert-column-after\"\n onClick={() => insertTableColumnAtSelection(true)}\n type=\"button\"\n >\n <span className=\"text\">\n Insert {selectionCounts.columns === 1 ? 'column' : `${selectionCounts.columns} columns`}{' '}\n right\n </span>\n </button>\n <hr />\n <button\n className=\"item\"\n data-test-id=\"table-delete-columns\"\n onClick={() => deleteTableColumnAtSelection()}\n type=\"button\"\n >\n <span className=\"text\">Delete column</span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-delete-rows\"\n onClick={() => deleteTableRowAtSelection()}\n type=\"button\"\n >\n <span className=\"text\">Delete row</span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-delete\"\n onClick={() => deleteTableAtSelection()}\n type=\"button\"\n >\n <span className=\"text\">Delete table</span>\n </button>\n <hr />\n <button\n className=\"item\"\n data-test-id=\"table-row-header\"\n onClick={() => toggleTableRowIsHeader()}\n type=\"button\"\n >\n <span className=\"text\">\n {(tableCellNode.__headerState & TableCellHeaderStates.ROW) === TableCellHeaderStates.ROW\n ? 'Remove'\n : 'Add'}{' '}\n row header\n </span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-column-header\"\n onClick={() => toggleTableColumnIsHeader()}\n type=\"button\"\n >\n <span className=\"text\">\n {(tableCellNode.__headerState & TableCellHeaderStates.COLUMN) ===\n TableCellHeaderStates.COLUMN\n ? 'Remove'\n : 'Add'}{' '}\n column header\n </span>\n </button>\n </div>,\n document.body,\n )\n}\n\nfunction TableCellActionMenuContainer({\n anchorElem,\n cellMerge,\n}: {\n anchorElem: HTMLElement\n cellMerge: boolean\n}): JSX.Element {\n const [editor] = useLexicalComposerContext()\n\n const menuButtonRef = useRef<HTMLDivElement | null>(null)\n const menuRootRef = useRef<HTMLButtonElement | null>(null)\n const [isMenuOpen, setIsMenuOpen] = useState(false)\n\n const [tableCellNode, setTableMenuCellNode] = useState<null | TableCellNode>(null)\n\n const $moveMenu = useCallback(() => {\n const menu = menuButtonRef.current\n const selection = $getSelection()\n const nativeSelection = getDOMSelection(editor._window)\n const activeElement = document.activeElement\n function disable() {\n if (menu) {\n menu.classList.remove('table-cell-action-button-container--active')\n menu.classList.add('table-cell-action-button-container--inactive')\n }\n setTableMenuCellNode(null)\n }\n\n if (selection == null || menu == null) {\n return disable()\n }\n\n const rootElement = editor.getRootElement()\n let tableObserver: null | TableObserver = null\n let tableCellParentNodeDOM: HTMLElement | null = null\n\n if (\n $isRangeSelection(selection) &&\n rootElement !== null &&\n nativeSelection !== null &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n const tableCellNodeFromSelection = $getTableCellNodeFromLexicalNode(\n selection.anchor.getNode(),\n )\n\n if (tableCellNodeFromSelection == null) {\n return disable()\n }\n\n tableCellParentNodeDOM = editor.getElementByKey(tableCellNodeFromSelection.getKey())\n\n if (tableCellParentNodeDOM == null || !tableCellNodeFromSelection.isAttached()) {\n return disable()\n }\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNodeFromSelection)\n const tableElement = getTableElement(tableNode, editor.getElementByKey(tableNode.getKey()))\n\n if (tableElement === null) {\n throw new Error('TableActionMenu: Expected to find tableElement in DOM')\n }\n\n tableObserver = getTableObserverFromTableElement(tableElement)\n setTableMenuCellNode(tableCellNodeFromSelection)\n } else if ($isTableSelection(selection)) {\n const anchorNode = $getTableCellNodeFromLexicalNode(selection.anchor.getNode())\n if (!$isTableCellNode(anchorNode)) {\n throw new Error('TableSelection anchorNode must be a TableCellNode')\n }\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(anchorNode)\n const tableElement = getTableElement(tableNode, editor.getElementByKey(tableNode.getKey()))\n\n if (tableElement === null) {\n throw new Error('TableActionMenu: Expected to find tableElement in DOM')\n }\n\n tableObserver = getTableObserverFromTableElement(tableElement)\n tableCellParentNodeDOM = editor.getElementByKey(anchorNode.getKey())\n } else if (!activeElement) {\n return disable()\n }\n if (tableObserver === null || tableCellParentNodeDOM === null) {\n return disable()\n }\n const enabled = !tableObserver || !tableObserver.isSelecting\n menu.classList.toggle('table-cell-action-button-container--active', enabled)\n menu.classList.toggle('table-cell-action-button-container--inactive', !enabled)\n if (enabled) {\n const tableCellRect = tableCellParentNodeDOM.getBoundingClientRect()\n const anchorRect = anchorElem.getBoundingClientRect()\n const top = tableCellRect.top - anchorRect.top\n const left = tableCellRect.right - anchorRect.left\n menu.style.transform = `translate(${left}px, ${top}px)`\n }\n }, [editor, anchorElem])\n\n useEffect(() => {\n // We call the $moveMenu callback every time the selection changes,\n // once up front, and once after each mouseUp\n let timeoutId: ReturnType<typeof setTimeout> | undefined = undefined\n const callback = () => {\n timeoutId = undefined\n editor.getEditorState().read($moveMenu)\n }\n const delayedCallback = () => {\n if (timeoutId === undefined) {\n timeoutId = setTimeout(callback, 0)\n }\n return false\n }\n return mergeRegister(\n editor.registerUpdateListener(delayedCallback),\n editor.registerCommand(SELECTION_CHANGE_COMMAND, delayedCallback, COMMAND_PRIORITY_CRITICAL),\n editor.registerRootListener((rootElement, prevRootElement) => {\n if (prevRootElement) {\n prevRootElement.removeEventListener('mouseup', delayedCallback)\n }\n if (rootElement) {\n rootElement.addEventListener('mouseup', delayedCallback)\n delayedCallback()\n }\n }),\n () => clearTimeout(timeoutId),\n )\n })\n\n const prevTableCellDOM = useRef(tableCellNode)\n\n useEffect(() => {\n if (prevTableCellDOM.current !== tableCellNode) {\n setIsMenuOpen(false)\n }\n\n prevTableCellDOM.current = tableCellNode\n }, [prevTableCellDOM, tableCellNode])\n\n return (\n <div className=\"table-cell-action-button-container\" ref={menuButtonRef}>\n {tableCellNode != null && (\n <React.Fragment>\n <button\n className=\"table-cell-action-button\"\n onClick={(e) => {\n e.stopPropagation()\n setIsMenuOpen(!isMenuOpen)\n }}\n ref={menuRootRef}\n type=\"button\"\n >\n <MeatballsIcon />\n </button>\n {isMenuOpen && (\n <TableActionMenu\n cellMerge={cellMerge}\n contextRef={menuRootRef}\n onClose={() => setIsMenuOpen(false)}\n setIsMenuOpen={setIsMenuOpen}\n tableCellNode={tableCellNode}\n />\n )}\n </React.Fragment>\n )}\n </div>\n )\n}\n\nexport const TableActionMenuPlugin: PluginComponentWithAnchor = ({ anchorElem }) => {\n const isEditable = useLexicalEditable()\n return createPortal(\n isEditable ? (\n <TableCellActionMenuContainer anchorElem={anchorElem ?? document.body} cellMerge />\n ) : null,\n anchorElem ?? document.body,\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAMA,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,kBAAkB,QAAQ;AACnC,SACEC,6BAA6B,EAC7BC,gCAAgC,EAChCC,6BAA6B,EAC7BC,eAAe,EACfC,gCAAgC,EAChCC,qCAAqC,EACrCC,mCAAmC,EACnCC,kCAAkC,EAClCC,gCAAgC,EAChCC,6BAA6B,EAC7BC,gBAAgB,EAChBC,iBAAiB,EACjBC,YAAY,EACZC,eAAe,EACfC,gCAAgC,EAChCC,qBAAqB,EACrBC,aAAa,QACR;AACP,SAASC,aAAa,QAAQ;AAC9B,SAASC,aAAa,QAAQ;AAC9B,SACEC,oBAAoB,EACpBC,QAAQ,EACRC,aAAa,EACbC,cAAc,EACdC,gBAAgB,EAChBC,iBAAiB,EACjBC,WAAW,EACXC,yBAAyB,EACzBC,eAAe,EACfC,SAAS,EACTC,wBAAwB,QACnB;AACP,YAAYC,KAAA,MAAW;AACvB,SAASC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AACzD,SAASC,YAAY,QAAQ;AAK7B,SAASC,aAAa,QAAQ;AAE9B,SAASC,sBAAsBC,SAAyB;EAItD,MAAMC,cAAA,GAAiBD,SAAA,CAAUE,QAAQ;EACzC,OAAO;IACLC,OAAA,EAASF,cAAA,CAAeG,GAAG,GAAGH,cAAA,CAAeI,KAAK,GAAG;IACrDC,IAAA,EAAML,cAAA,CAAeM,GAAG,GAAGN,cAAA,CAAeO,KAAK,GAAG;EACpD;AACF;AAEA,SAASC,YAAA;EACP,MAAMT,SAAA,GAAYjB,aAAA;EAClB,IACEG,iBAAC,CAAkBc,SAAA,KAAc,CAACA,SAAA,CAAUU,WAAW,MACtDrC,iBAAA,CAAkB2B,SAAA,KAAc,CAACA,SAAA,CAAUW,MAAM,CAACC,EAAE,CAACZ,SAAA,CAAUa,KAAK,KACpE,CAAC3B,iBAAA,CAAkBc,SAAA,KAAc,CAAC3B,iBAAA,CAAkB2B,SAAA,GACrD;IACA,OAAO;EACT;EACA,MAAM,CAACc,IAAA,CAAK,GAAGjD,eAAA,CAAgBmC,SAAA,CAAUW,MAAM;EAC/C,OAAOG,IAAA,CAAKC,SAAS,GAAG,KAAKD,IAAA,CAAKE,SAAS,GAAG;AAChD;AAEA,SAASC,4BAA4BH,IAAmB;EACtD,IAAIA,IAAA,CAAKI,eAAe,OAAO,GAAG;IAChC,OAAO;EACT;EACA,MAAMC,UAAA,GAAaL,IAAA,CAAKM,oBAAoB;EAC5C,IAAI,CAACnC,gBAAA,CAAiBkC,UAAA,KAAe,CAACA,UAAA,CAAWE,OAAO,IAAI;IAC1D,OAAO;EACT;EACA,OAAO;AACT;AAEA,SAASC,sBAAsBC,IAAiB;EAC9C,MAAMC,cAAA,GAAiBD,IAAA,CAAKE,iBAAiB;EAC7C,IAAItC,WAAA,CAAYqC,cAAA,GAAiB;IAC/BA,cAAA,CAAeE,MAAM;EACvB,OAAO,IAAI1C,cAAA,CAAewC,cAAA,GAAiB;IACzCA,cAAA,CAAeG,SAAS;EAC1B,OAAO,IAAIH,cAAA,KAAmB,MAAM;IAClCA,cAAA,CAAeI,UAAU;EAC3B;AACF;AAUA,SAASC,gBAAgB;EACvBC,SAAS;EACTC,UAAU;EACVC,OAAO;EACPC,aAAa;EACbC,aAAA,EAAeC;AAAc,CACJ;EACzB,MAAM,CAACC,MAAA,CAAO,GAAG5E,yBAAA;EACjB,MAAM6E,WAAA,GAAc1C,MAAA,CAA8B;EAClD,MAAM,CAACuC,aAAA,EAAeI,mBAAA,CAAoB,GAAG1C,QAAA,CAASuC,cAAA;EACtD,MAAM,CAACI,eAAA,EAAiBC,qBAAA,CAAsB,GAAG5C,QAAA,CAAS;IACxDO,OAAA,EAAS;IACTG,IAAA,EAAM;EACR;EACA,MAAM,CAACmC,aAAA,EAAeC,gBAAA,CAAiB,GAAG9C,QAAA,CAAS;EACnD,MAAM,CAAC+C,cAAA,EAAgBC,iBAAA,CAAkB,GAAGhD,QAAA,CAAS;EACrD,MAAM;IAAEiD;EAAC,CAAE,GAAGjE,aAAA;EAEdc,SAAA,CAAU;IACR,OAAO0C,MAAA,CAAOU,wBAAwB,CACpCpE,aAAA,EACCqE,aAAA;MACC,MAAMC,WAAA,GAAcD,aAAA,CAAcE,GAAG,CAACf,aAAA,CAAcgB,MAAM,QAAQ;MAElE,IAAIF,WAAA,EAAa;QACfZ,MAAA,CAAOe,cAAc,GAAGC,IAAI,CAAC;UAC3Bd,mBAAA,CAAoBJ,aAAA,CAAcmB,SAAS;QAC7C;MACF;IACF,GACA;MAAEC,kBAAA,EAAoB;IAAK;EAE/B,GAAG,CAAClB,MAAA,EAAQF,aAAA,CAAc;EAE1BxC,SAAA,CAAU;IACR0C,MAAA,CAAOe,cAAc,GAAGC,IAAI,CAAC;MAC3B,MAAMpD,SAAA,GAAYjB,aAAA;MAClB;MACA,IAAIV,iBAAA,CAAkB2B,SAAA,GAAY;QAChC,MAAMuD,sBAAA,GAAyBxD,qBAAA,CAAsBC,SAAA;QACrDwC,qBAAA,CAAsBzC,qBAAA,CAAsBC,SAAA;QAE5C0C,gBAAA,CAAiBa,sBAAA,CAAuBpD,OAAO,GAAG,KAAKoD,sBAAA,CAAuBjD,IAAI,GAAG;MACvF;MACA;MACAsC,iBAAA,CAAkBnC,WAAA;IACpB;EACF,GAAG,CAAC2B,MAAA,CAAO;EAEX1C,SAAA,CAAU;IACR,MAAM8D,iBAAA,GAAoBzB,UAAA,CAAW0B,OAAO;IAC5C,MAAMC,eAAA,GAAkBrB,WAAA,CAAYoB,OAAO;IAC3C,MAAME,WAAA,GAAcvB,MAAA,CAAOwB,cAAc;IAEzC,IAAIJ,iBAAA,IAAqB,QAAQE,eAAA,IAAmB,QAAQC,WAAA,IAAe,MAAM;MAC/E,MAAME,WAAA,GAAcF,WAAA,CAAYG,qBAAqB;MACrD,MAAMC,cAAA,GAAiBP,iBAAA,CAAkBM,qBAAqB;MAC9DJ,eAAA,CAAgBM,KAAK,CAACC,OAAO,GAAG;MAChC,MAAMC,mBAAA,GAAsBR,eAAA,CAAgBI,qBAAqB;MACjE,MAAMK,MAAA,GAAS;MACf,IAAIC,YAAA,GAAeL,cAAA,CAAeM,KAAK,GAAGF,MAAA;MAC1C,IACEC,YAAA,GAAeF,mBAAA,CAAoBI,KAAK,GAAGC,MAAA,CAAOC,UAAU,IAC5DJ,YAAA,GAAeF,mBAAA,CAAoBI,KAAK,GAAGT,WAAA,CAAYQ,KAAK,EAC5D;QACA,MAAMI,QAAA,GAAWV,cAAA,CAAeW,IAAI,GAAGR,mBAAA,CAAoBI,KAAK,GAAGH,MAAA;QACnEC,YAAA,GAAe,CAACK,QAAA,GAAW,IAAIN,MAAA,GAASM,QAAO,IAAKF,MAAA,CAAOI,WAAW;MACxE;MACAjB,eAAA,CAAgBM,KAAK,CAACU,IAAI,GAAG,GAAGN,YAAA,GAAeG,MAAA,CAAOI,WAAW,IAAI;MAErE,IAAIC,WAAA,GAAcb,cAAA,CAAec,GAAG;MACpC,IAAID,WAAA,GAAcV,mBAAA,CAAoBY,MAAM,GAAGP,MAAA,CAAOQ,WAAW,EAAE;QACjE,MAAMN,UAAA,GAAWV,cAAA,CAAeiB,MAAM,GAAGd,mBAAA,CAAoBY,MAAM;QACnEF,WAAA,GAAcH,UAAA,GAAW,IAAIN,MAAA,GAASM,UAAA;MACxC;MACAf,eAAA,CAAgBM,KAAK,CAACa,GAAG,GAAG,GAAGD,WAAA,IAAe;IAChD;EACF,GAAG,CAAC7C,UAAA,EAAYM,WAAA,EAAaD,MAAA,EAAQS,CAAA,CAAE;EAEvCnD,SAAA,CAAU;IACR,SAASuF,mBAAmBC,KAAiB;MAC3C,IACE7C,WAAA,CAAYoB,OAAO,IAAI,QACvB1B,UAAA,CAAW0B,OAAO,IAAI,QACtBnE,SAAA,CAAU4F,KAAA,CAAMC,MAAM,KACtB,CAAC9C,WAAA,CAAYoB,OAAO,CAAC2B,QAAQ,CAACF,KAAA,CAAMC,MAAM,KAC1C,CAACpD,UAAA,CAAW0B,OAAO,CAAC2B,QAAQ,CAACF,KAAA,CAAMC,MAAM,GACzC;QACAlD,aAAA,CAAc;MAChB;IACF;IAEAsC,MAAA,CAAOc,gBAAgB,CAAC,SAASJ,kBAAA;IAEjC,OAAO,MAAMV,MAAA,CAAOe,mBAAmB,CAAC,SAASL,kBAAA;EACnD,GAAG,CAAChD,aAAA,EAAeF,UAAA,CAAW;EAE9B,MAAMwD,mBAAA,GAAsB9F,WAAA,CAAY;IACtC2C,MAAA,CAAOoD,MAAM,CAAC;MACZ,IAAItD,aAAA,CAAcuD,UAAU,IAAI;QAC9B,MAAMC,SAAA,GAAY1H,mCAAA,CAAoCkE,aAAA;QACtD,MAAMyD,YAAA,GAAepH,eAAA,CAAgBmH,SAAA,EAAWtD,MAAA,CAAOwD,eAAe,CAACF,SAAA,CAAUxC,MAAM;QAEvF,IAAIyC,YAAA,KAAiB,MAAM;UACzB,MAAM,IAAIE,KAAA,CAAM;QAClB;QAEA,MAAMC,aAAA,GAAgBtH,gCAAA,CAAiCmH,YAAA;QACvD,IAAIG,aAAA,KAAkB,MAAM;UAC1BA,aAAA,CAAcC,eAAe;QAC/B;QAEAL,SAAA,CAAUM,SAAS;QACnB1D,mBAAA,CAAoBJ,aAAA,CAAcmB,SAAS;MAC7C;MAEA,MAAM4C,QAAA,GAAWnH,QAAA;MACjBmH,QAAA,CAASC,WAAW;IACtB;EACF,GAAG,CAAC9D,MAAA,EAAQF,aAAA,CAAc;EAE1B,MAAMiE,0BAAA,GAA6BA,CAAA;IACjC/D,MAAA,CAAOoD,MAAM,CAAC;MACZ,MAAMxF,WAAA,GAAYjB,aAAA;MAClB,IAAIV,iBAAA,CAAkB2B,WAAA,GAAY;QAChC;QACA,MAAMoG,KAAA,GAAQpG,WAAA,CAAUqG,QAAQ;QAChC,MAAMC,UAAA,GAAaF,KAAA,CAAMG,MAAM,CAACnI,gBAAA;QAEhC,IAAIkI,UAAA,CAAWE,MAAM,KAAK,GAAG;UAC3B;QACF;QAEA;QACA,MAAMd,WAAA,GAAY1H,mCAAA,CAAoCsI,UAAU,CAAC,EAAE;QACnE,MAAM,CAACG,OAAA,CAAQ,GAAG/I,6BAAA,CAA8BgI,WAAA,EAAW,MAAM;QAEjE;QACA,IAAIgB,MAAA,GAASC,QAAA;QACb,IAAIC,MAAA,GAAS,CAACD,QAAA;QACd,IAAIE,MAAA,GAASF,QAAA;QACb,IAAIG,MAAA,GAAS,CAACH,QAAA;QAEd;QACA,MAAMI,cAAA,GAAiB,IAAIC,GAAA;QAC3B,KAAK,MAAMC,GAAA,IAAOR,OAAA,EAAS;UACzB,KAAK,MAAMS,OAAA,IAAWD,GAAA,EAAK;YACzB,IAAI,CAACC,OAAA,IAAW,CAACA,OAAA,CAAQpG,IAAI,EAAE;cAC7B;YACF;YAEA,MAAMqG,OAAA,GAAUD,OAAA,CAAQpG,IAAI,CAACoC,MAAM;YACnC,IAAI6D,cAAA,CAAeK,GAAG,CAACD,OAAA,GAAU;cAC/B;YACF;YAEA,IAAIb,UAAA,CAAWe,IAAI,CAAEvG,IAAA,IAASA,IAAA,CAAKF,EAAE,CAACsG,OAAA,CAAQpG,IAAI,IAAI;cACpDiG,cAAA,CAAeO,GAAG,CAACH,OAAA;cACnB;cACA,MAAMI,YAAA,GAAeL,OAAA,CAAQM,QAAQ;cACrC,MAAMC,YAAA,GAAeP,OAAA,CAAQQ,WAAW;cACxC,MAAMC,WAAA,GAAcT,OAAA,CAAQpG,IAAI,CAACE,SAAS,IAAI;cAC9C,MAAM4G,WAAA,GAAcV,OAAA,CAAQpG,IAAI,CAACC,SAAS,IAAI;cAE9C;cACA2F,MAAA,GAASmB,IAAA,CAAKC,GAAG,CAACpB,MAAA,EAAQa,YAAA;cAC1BX,MAAA,GAASiB,IAAA,CAAKE,GAAG,CAACnB,MAAA,EAAQW,YAAA,GAAeI,WAAA,GAAc;cACvDd,MAAA,GAASgB,IAAA,CAAKC,GAAG,CAACjB,MAAA,EAAQY,YAAA;cAC1BX,MAAA,GAASe,IAAA,CAAKE,GAAG,CAACjB,MAAA,EAAQW,YAAA,GAAeG,WAAA,GAAc;YACzD;UACF;QACF;QAEA;QACA,IAAIlB,MAAA,KAAWC,QAAA,IAAYE,MAAA,KAAWF,QAAA,EAAU;UAC9C;QACF;QAEA;QACA,MAAMqB,YAAA,GAAepB,MAAA,GAASF,MAAA,GAAS;QACvC,MAAMuB,YAAA,GAAenB,MAAA,GAASD,MAAA,GAAS;QAEvC;QACA,MAAMqB,aAAA,GAAgBzB,OAAA,GAAUC,MAAA,CAAO,GAAGG,MAAA,CAAO;QACjD,IAAI,CAACqB,aAAA,EAAepH,IAAA,EAAM;UACxB;QACF;QACA,MAAMqH,UAAA,GAAaD,aAAA,CAAcpH,IAAI;QAErC;QACAqH,UAAA,CAAWC,UAAU,CAACH,YAAA;QACtBE,UAAA,CAAWE,UAAU,CAACL,YAAA;QAEtB;QACA,MAAMM,SAAA,GAAY,IAAItB,GAAA,CAAI,CAACmB,UAAA,CAAWjF,MAAM,GAAG;QAE/C;QACA,KAAK,IAAI+D,KAAA,GAAMP,MAAA,EAAQO,KAAA,IAAOL,MAAA,EAAQK,KAAA,IAAO;UAC3C,KAAK,IAAIsB,GAAA,GAAM1B,MAAA,EAAQ0B,GAAA,IAAOzB,MAAA,EAAQyB,GAAA,IAAO;YAC3C,MAAMrB,SAAA,GAAUT,OAAA,GAAUQ,KAAA,CAAI,GAAGsB,GAAA,CAAI;YACrC,IAAI,CAACrB,SAAA,EAASpG,IAAA,EAAM;cAClB;YACF;YAEA,MAAM0H,WAAA,GAActB,SAAA,CAAQpG,IAAI;YAChC,MAAM2H,GAAA,GAAMD,WAAA,CAAYtF,MAAM;YAE9B,IAAI,CAACoF,SAAA,CAAUlB,GAAG,CAACqB,GAAA,GAAM;cACvBH,SAAA,CAAUhB,GAAG,CAACmB,GAAA;cACd,MAAMpH,OAAA,GAAUJ,2BAAA,CAA4BuH,WAAA;cAC5C,IAAI,CAACnH,OAAA,EAAS;gBACZ8G,UAAA,CAAWO,MAAM,IAAIF,WAAA,CAAYG,WAAW;cAC9C;cACAH,WAAA,CAAYI,MAAM;YACpB;UACF;QACF;QAEA;QACA,IAAIT,UAAA,CAAWjH,eAAe,OAAO,GAAG;UACtCiH,UAAA,CAAWO,MAAM,CAAC7J,oBAAA;QACpB;QAEAyC,qBAAA,CAAsB6G,UAAA;QACtBnG,OAAA;MACF;IACF;EACF;EAEA,MAAM6G,4BAAA,GAA+BA,CAAA;IACnCzG,MAAA,CAAOoD,MAAM,CAAC;MACZlH,YAAA;IACF;EACF;EAEA,MAAMwK,yBAAA,GAA4BrJ,WAAA,CAC/BsJ,iBAAA;IACC3G,MAAA,CAAOoD,MAAM,CAAC;MACZ,KAAK,IAAIwD,CAAA,GAAI,GAAGA,CAAA,GAAIzG,eAAA,CAAgBjC,IAAI,EAAE0I,CAAA,IAAK;QAC7C7K,6BAAA,CAA8B4K,iBAAA;MAChC;MACA/G,OAAA;IACF;EACF,GACA,CAACI,MAAA,EAAQJ,OAAA,EAASO,eAAA,CAAgBjC,IAAI,CAAC;EAGzC,MAAM2I,4BAAA,GAA+BxJ,WAAA,CAClCsJ,mBAAA;IACC3G,MAAA,CAAOoD,MAAM,CAAC;MACZ,KAAK,IAAIwD,GAAA,GAAI,GAAGA,GAAA,GAAIzG,eAAA,CAAgBpC,OAAO,EAAE6I,GAAA,IAAK;QAChD9K,gCAAA,CAAiC6K,mBAAA;MACnC;MACA/G,OAAA;IACF;EACF,GACA,CAACI,MAAA,EAAQJ,OAAA,EAASO,eAAA,CAAgBpC,OAAO,CAAC;EAG5C,MAAM+I,yBAAA,GAA4BzJ,WAAA,CAAY;IAC5C2C,MAAA,CAAOoD,MAAM,CAAC;MACZ5H,6BAAA;MACAoE,OAAA;IACF;EACF,GAAG,CAACI,MAAA,EAAQJ,OAAA,CAAQ;EAEpB,MAAMmH,sBAAA,GAAyB1J,WAAA,CAAY;IACzC2C,MAAA,CAAOoD,MAAM,CAAC;MACZ,MAAME,WAAA,GAAY1H,mCAAA,CAAoCkE,aAAA;MACtDwD,WAAA,CAAUkD,MAAM;MAEhBrD,mBAAA;MACAvD,OAAA;IACF;EACF,GAAG,CAACI,MAAA,EAAQF,aAAA,EAAeqD,mBAAA,EAAqBvD,OAAA,CAAQ;EAExD,MAAMoH,4BAAA,GAA+B3J,WAAA,CAAY;IAC/C2C,MAAA,CAAOoD,MAAM,CAAC;MACZ7H,gCAAA;MACAqE,OAAA;IACF;EACF,GAAG,CAACI,MAAA,EAAQJ,OAAA,CAAQ;EAEpB,MAAMqH,sBAAA,GAAyB5J,WAAA,CAAY;IACzC2C,MAAA,CAAOoD,MAAM,CAAC;MACZ,MAAME,WAAA,GAAY1H,mCAAA,CAAoCkE,aAAA;MAEtD,MAAMoH,aAAA,GAAgBrL,kCAAA,CAAmCiE,aAAA;MAEzD,MAAM,CAACuE,SAAA,CAAQ,GAAG/I,6BAAA,CAA8BgI,WAAA,EAAW,MAAM;MAEjE,MAAM6D,QAAA,GAAW,IAAIvC,GAAA;MAErB,MAAMwC,QAAA,GAAWtH,aAAA,CAAcuH,eAAe,KAAKhL,qBAAA,CAAsBiL,GAAG;MAC5E,IAAIjD,SAAO,CAAC6C,aAAA,CAAc,EAAE;QAC1B,KAAK,IAAIf,KAAA,GAAM,GAAGA,KAAA,GAAM9B,SAAO,CAAC6C,aAAA,CAAc,CAAC9C,MAAM,EAAE+B,KAAA,IAAO;UAC5D,MAAMrB,SAAA,GAAUT,SAAO,CAAC6C,aAAA,CAAc,CAACf,KAAA,CAAI;UAE3C,IAAI,CAACrB,SAAA,EAASpG,IAAA,EAAM;YAClB;UACF;UAEA,IAAI,CAACyI,QAAA,CAASnC,GAAG,CAACF,SAAA,CAAQpG,IAAI,GAAG;YAC/ByI,QAAA,CAASjC,GAAG,CAACJ,SAAA,CAAQpG,IAAI;YACzBoG,SAAA,CAAQpG,IAAI,CAAC6I,eAAe,CAACH,QAAA,EAAU/K,qBAAA,CAAsBiL,GAAG;UAClE;QACF;MACF;MAEAnE,mBAAA;MACAvD,OAAA;IACF;EACF,GAAG,CAACI,MAAA,EAAQF,aAAA,EAAeqD,mBAAA,EAAqBvD,OAAA,CAAQ;EAExD,MAAM4H,yBAAA,GAA4BnK,WAAA,CAAY;IAC5C2C,MAAA,CAAOoD,MAAM,CAAC;MACZ,MAAME,WAAA,GAAY1H,mCAAA,CAAoCkE,aAAA;MAEtD,MAAM2H,gBAAA,GAAmB9L,qCAAA,CAAsCmE,aAAA;MAE/D,MAAM,CAACuE,SAAA,CAAQ,GAAG/I,6BAAA,CAA8BgI,WAAA,EAAW,MAAM;MAEjE,MAAMoE,WAAA,GAAc,IAAI9C,GAAA;MAExB,MAAMwC,UAAA,GAAWtH,aAAA,CAAcuH,eAAe,KAAKhL,qBAAA,CAAsBsL,MAAM;MAC/E,IAAItD,SAAA,EAAS;QACX,KAAK,IAAIQ,KAAA,GAAM,GAAGA,KAAA,GAAMR,SAAA,CAAQD,MAAM,EAAES,KAAA,IAAO;UAC7C,MAAMC,SAAA,GAAUT,SAAA,GAAUQ,KAAA,CAAI,GAAG4C,gBAAA,CAAiB;UAElD,IAAI,CAAC3C,SAAA,EAASpG,IAAA,EAAM;YAClB;UACF;UAEA,IAAI,CAACgJ,WAAA,CAAY1C,GAAG,CAACF,SAAA,CAAQpG,IAAI,GAAG;YAClCgJ,WAAA,CAAYxC,GAAG,CAACJ,SAAA,CAAQpG,IAAI;YAC5BoG,SAAA,CAAQpG,IAAI,CAAC6I,eAAe,CAACH,UAAA,EAAU/K,qBAAA,CAAsBsL,MAAM;UACrE;QACF;MACF;MAEAxE,mBAAA;MACAvD,OAAA;IACF;EACF,GAAG,CAACI,MAAA,EAAQF,aAAA,EAAeqD,mBAAA,EAAqBvD,OAAA,CAAQ;EAExD,MAAMgI,iBAAA,GAAoBvK,WAAA,CAAY;IACpC2C,MAAA,CAAOoD,MAAM,CAAC;MACZ,IAAItD,aAAA,CAAcuD,UAAU,IAAI;QAC9B,MAAMC,WAAA,GAAY1H,mCAAA,CAAoCkE,aAAA;QACtD,IAAIwD,WAAA,EAAW;UACbA,WAAA,CAAUuE,cAAc,CAAC,CAACvE,WAAA,CAAUwE,cAAc;QACpD;MACF;MAEA3E,mBAAA;MACAvD,OAAA;IACF;EACF,GAAG,CAACI,MAAA,EAAQF,aAAA,EAAeqD,mBAAA,EAAqBvD,OAAA,CAAQ;EAExD,MAAMmI,uBAAA,GAA0B1K,WAAA,CAAY;IAC1C2C,MAAA,CAAOoD,MAAM,CAAC;MACZ,IAAItD,aAAA,CAAcuD,UAAU,IAAI;QAC9B,MAAMC,WAAA,GAAY1H,mCAAA,CAAoCkE,aAAA;QACtD,IAAIwD,WAAA,EAAW;UACbA,WAAA,CAAU0E,gBAAgB,CAAC1E,WAAA,CAAU2E,gBAAgB,OAAO,IAAI,IAAI;QACtE;MACF;MACA9E,mBAAA;MACAvD,OAAA;IACF;EACF,GAAG,CAACI,MAAA,EAAQF,aAAA,EAAeqD,mBAAA,EAAqBvD,OAAA,CAAQ;EAExD,IAAIsI,eAAA,GAAsC;EAC1C,IAAIxI,SAAA,EAAW;IACb,IAAIW,aAAA,EAAe;MACjB6H,eAAA,gBACEC,IAAA,CAAC;QACCC,SAAA,EAAU;QACV,gBAAa;QACbC,OAAA,EAASA,CAAA,KAAMtE,0BAAA;QACfuE,IAAA,EAAK;kBAEL,aAAAH,IAAA,CAAC;UAAKC,SAAA,EAAU;oBAAO;;;IAG7B,OAAO,IAAI7H,cAAA,EAAgB;MACzB2H,eAAA,gBACEC,IAAA,CAAC;QACCC,SAAA,EAAU;QACV,gBAAa;QACbC,OAAA,EAASA,CAAA,KAAM5B,4BAAA;QACf6B,IAAA,EAAK;kBAEL,aAAAH,IAAA,CAAC;UAAKC,SAAA,EAAU;oBAAO;;;IAG7B;EACF;EAEA,oBAAO3K,YAAA;EACL;;EACA8K,KAAA,CAAC;IACCH,SAAA,EAAU;IACVC,OAAA,EAAUG,CAAA;MACRA,CAAA,CAAEC,eAAe;IACnB;IACAC,GAAA,EAAKzI,WAAA;eAEJiI,eAAA,gBACCK,KAAA,CAACnL,KAAA,CAAMuL,QAAQ;iBACZT,eAAA,E,aACDC,IAAA,CAAC;SAED,M,aAEJA,IAAA,CAAC;MACCC,SAAA,EAAU;MACV,gBAAa;MACbC,OAAA,EAASA,CAAA,KAAMT,iBAAA;MACfU,IAAA,EAAK;gBAEL,aAAAH,IAAA,CAAC;QAAKC,SAAA,EAAU;kBAAO;;qBAEzBD,IAAA,CAAC;MACCC,SAAA,EAAU;MACV,gBAAa;MACbC,OAAA,EAASA,CAAA,KAAMN,uBAAA;MACfO,IAAA,EAAK;gBAEL,aAAAH,IAAA,CAAC;QAAKC,SAAA,EAAU;kBAAO;;qBAEzBD,IAAA,CAAC;MACCC,SAAA,EAAU;MACV,gBAAa;MACbC,OAAA,EAASA,CAAA,KAAM3B,yBAAA,CAA0B;MACzC4B,IAAA,EAAK;gBAEL,aAAAC,KAAA,CAAC;QAAKH,SAAA,EAAU;mBAAO,WACbjI,eAAA,CAAgBjC,IAAI,KAAK,IAAI,QAAQ,GAAGiC,eAAA,CAAgBjC,IAAI,OAAO,EAAC;;qBAGhFiK,IAAA,CAAC;MACCC,SAAA,EAAU;MACV,gBAAa;MACbC,OAAA,EAASA,CAAA,KAAM3B,yBAAA,CAA0B;MACzC4B,IAAA,EAAK;gBAEL,aAAAC,KAAA,CAAC;QAAKH,SAAA,EAAU;mBAAO,WACbjI,eAAA,CAAgBjC,IAAI,KAAK,IAAI,QAAQ,GAAGiC,eAAA,CAAgBjC,IAAI,OAAO,EAAC;;qBAGhFiK,IAAA,CAAC,W,aACDA,IAAA,CAAC;MACCC,SAAA,EAAU;MACV,gBAAa;MACbC,OAAA,EAASA,CAAA,KAAMxB,4BAAA,CAA6B;MAC5CyB,IAAA,EAAK;gBAEL,aAAAC,KAAA,CAAC;QAAKH,SAAA,EAAU;mBAAO,WACbjI,eAAA,CAAgBpC,OAAO,KAAK,IAAI,WAAW,GAAGoC,eAAA,CAAgBpC,OAAO,UAAU,EAAE,KAAI;;qBAIjGoK,IAAA,CAAC;MACCC,SAAA,EAAU;MACV,gBAAa;MACbC,OAAA,EAASA,CAAA,KAAMxB,4BAAA,CAA6B;MAC5CyB,IAAA,EAAK;gBAEL,aAAAC,KAAA,CAAC;QAAKH,SAAA,EAAU;mBAAO,WACbjI,eAAA,CAAgBpC,OAAO,KAAK,IAAI,WAAW,GAAGoC,eAAA,CAAgBpC,OAAO,UAAU,EAAE,KAAI;;qBAIjGoK,IAAA,CAAC,W,aACDA,IAAA,CAAC;MACCC,SAAA,EAAU;MACV,gBAAa;MACbC,OAAA,EAASA,CAAA,KAAMrB,4BAAA;MACfsB,IAAA,EAAK;gBAEL,aAAAH,IAAA,CAAC;QAAKC,SAAA,EAAU;kBAAO;;qBAEzBD,IAAA,CAAC;MACCC,SAAA,EAAU;MACV,gBAAa;MACbC,OAAA,EAASA,CAAA,KAAMvB,yBAAA;MACfwB,IAAA,EAAK;gBAEL,aAAAH,IAAA,CAAC;QAAKC,SAAA,EAAU;kBAAO;;qBAEzBD,IAAA,CAAC;MACCC,SAAA,EAAU;MACV,gBAAa;MACbC,OAAA,EAASA,CAAA,KAAMtB,sBAAA;MACfuB,IAAA,EAAK;gBAEL,aAAAH,IAAA,CAAC;QAAKC,SAAA,EAAU;kBAAO;;qBAEzBD,IAAA,CAAC,W,aACDA,IAAA,CAAC;MACCC,SAAA,EAAU;MACV,gBAAa;MACbC,OAAA,EAASA,CAAA,KAAMpB,sBAAA;MACfqB,IAAA,EAAK;gBAEL,aAAAC,KAAA,CAAC;QAAKH,SAAA,EAAU;mBACZ,CAAAtI,aAAA,CAAc8I,aAAa,GAAGvM,qBAAA,CAAsBiL,GAAG,MAAMjL,qBAAA,CAAsBiL,GAAG,GACpF,WACA,OAAO,KAAI;;qBAInBa,IAAA,CAAC;MACCC,SAAA,EAAU;MACV,gBAAa;MACbC,OAAA,EAASA,CAAA,KAAMb,yBAAA;MACfc,IAAA,EAAK;gBAEL,aAAAC,KAAA,CAAC;QAAKH,SAAA,EAAU;mBACZ,CAAAtI,aAAA,CAAc8I,aAAa,GAAGvM,qBAAA,CAAsBsL,MAAM,MAC5DtL,qBAAA,CAAsBsL,MAAM,GACxB,WACA,OAAO,KAAI;;;MAKrBkB,QAAA,CAASC,IAAI;AAEjB;AAEA,SAASC,6BAA6B;EACpCC,UAAU;EACVtJ;AAAS,CAIV;EACC,MAAM,CAACM,MAAA,CAAO,GAAG5E,yBAAA;EAEjB,MAAM6N,aAAA,GAAgB1L,MAAA,CAA8B;EACpD,MAAM2L,WAAA,GAAc3L,MAAA,CAAiC;EACrD,MAAM,CAAC4L,UAAA,EAAYtJ,aAAA,CAAc,GAAGrC,QAAA,CAAS;EAE7C,MAAM,CAACsC,aAAA,EAAesJ,oBAAA,CAAqB,GAAG5L,QAAA,CAA+B;EAE7E,MAAM6L,SAAA,GAAYhM,WAAA,CAAY;IAC5B,MAAMiM,IAAA,GAAOL,aAAA,CAAc5H,OAAO;IAClC,MAAMzD,SAAA,GAAYjB,aAAA;IAClB,MAAM4M,eAAA,GAAkBtM,eAAA,CAAgB+C,MAAA,CAAOwJ,OAAO;IACtD,MAAMC,aAAA,GAAgBZ,QAAA,CAASY,aAAa;IAC5C,SAASC,QAAA;MACP,IAAIJ,IAAA,EAAM;QACRA,IAAA,CAAKK,SAAS,CAACnD,MAAM,CAAC;QACtB8C,IAAA,CAAKK,SAAS,CAACzE,GAAG,CAAC;MACrB;MACAkE,oBAAA,CAAqB;IACvB;IAEA,IAAIxL,SAAA,IAAa,QAAQ0L,IAAA,IAAQ,MAAM;MACrC,OAAOI,OAAA;IACT;IAEA,MAAMnI,WAAA,GAAcvB,MAAA,CAAOwB,cAAc;IACzC,IAAIkC,aAAA,GAAsC;IAC1C,IAAIkG,sBAAA,GAA6C;IAEjD,IACE9M,iBAAA,CAAkBc,SAAA,KAClB2D,WAAA,KAAgB,QAChBgI,eAAA,KAAoB,QACpBhI,WAAA,CAAYyB,QAAQ,CAACuG,eAAA,CAAgBM,UAAU,GAC/C;MACA,MAAMC,0BAAA,GAA6BpO,gCAAA,CACjCkC,SAAA,CAAUW,MAAM,CAACwL,OAAO;MAG1B,IAAID,0BAAA,IAA8B,MAAM;QACtC,OAAOJ,OAAA;MACT;MAEAE,sBAAA,GAAyB5J,MAAA,CAAOwD,eAAe,CAACsG,0BAAA,CAA2BhJ,MAAM;MAEjF,IAAI8I,sBAAA,IAA0B,QAAQ,CAACE,0BAAA,CAA2BzG,UAAU,IAAI;QAC9E,OAAOqG,OAAA;MACT;MAEA,MAAMpG,SAAA,GAAY1H,mCAAA,CAAoCkO,0BAAA;MACtD,MAAMvG,YAAA,GAAepH,eAAA,CAAgBmH,SAAA,EAAWtD,MAAA,CAAOwD,eAAe,CAACF,SAAA,CAAUxC,MAAM;MAEvF,IAAIyC,YAAA,KAAiB,MAAM;QACzB,MAAM,IAAIE,KAAA,CAAM;MAClB;MAEAC,aAAA,GAAgBtH,gCAAA,CAAiCmH,YAAA;MACjD6F,oBAAA,CAAqBU,0BAAA;IACvB,OAAO,IAAI7N,iBAAA,CAAkB2B,SAAA,GAAY;MACvC,MAAMiM,UAAA,GAAanO,gCAAA,CAAiCkC,SAAA,CAAUW,MAAM,CAACwL,OAAO;MAC5E,IAAI,CAAC/N,gBAAA,CAAiB6N,UAAA,GAAa;QACjC,MAAM,IAAIpG,KAAA,CAAM;MAClB;MACA,MAAMH,WAAA,GAAY1H,mCAAA,CAAoCiO,UAAA;MACtD,MAAMtG,cAAA,GAAepH,eAAA,CAAgBmH,WAAA,EAAWtD,MAAA,CAAOwD,eAAe,CAACF,WAAA,CAAUxC,MAAM;MAEvF,IAAIyC,cAAA,KAAiB,MAAM;QACzB,MAAM,IAAIE,KAAA,CAAM;MAClB;MAEAC,aAAA,GAAgBtH,gCAAA,CAAiCmH,cAAA;MACjDqG,sBAAA,GAAyB5J,MAAA,CAAOwD,eAAe,CAACqG,UAAA,CAAW/I,MAAM;IACnE,OAAO,IAAI,CAAC2I,aAAA,EAAe;MACzB,OAAOC,OAAA;IACT;IACA,IAAIhG,aAAA,KAAkB,QAAQkG,sBAAA,KAA2B,MAAM;MAC7D,OAAOF,OAAA;IACT;IACA,MAAMM,OAAA,GAAU,CAACtG,aAAA,IAAiB,CAACA,aAAA,CAAcuG,WAAW;IAC5DX,IAAA,CAAKK,SAAS,CAACO,MAAM,CAAC,8CAA8CF,OAAA;IACpEV,IAAA,CAAKK,SAAS,CAACO,MAAM,CAAC,gDAAgD,CAACF,OAAA;IACvE,IAAIA,OAAA,EAAS;MACX,MAAMG,aAAA,GAAgBP,sBAAA,CAAuBlI,qBAAqB;MAClE,MAAM0I,UAAA,GAAapB,UAAA,CAAWtH,qBAAqB;MACnD,MAAMe,GAAA,GAAM0H,aAAA,CAAc1H,GAAG,GAAG2H,UAAA,CAAW3H,GAAG;MAC9C,MAAMH,IAAA,GAAO6H,aAAA,CAAclI,KAAK,GAAGmI,UAAA,CAAW9H,IAAI;MAClDgH,IAAA,CAAK1H,KAAK,CAACyI,SAAS,GAAG,aAAa/H,IAAA,OAAWG,GAAA,KAAQ;IACzD;EACF,GAAG,CAACzC,MAAA,EAAQgJ,UAAA,CAAW;EAEvB1L,SAAA,CAAU;IACR;IACA;IACA,IAAIgN,SAAA,GAAuDC,SAAA;IAC3D,MAAMC,QAAA,GAAWA,CAAA;MACfF,SAAA,GAAYC,SAAA;MACZvK,MAAA,CAAOe,cAAc,GAAGC,IAAI,CAACqI,SAAA;IAC/B;IACA,MAAMoB,eAAA,GAAkBA,CAAA;MACtB,IAAIH,SAAA,KAAcC,SAAA,EAAW;QAC3BD,SAAA,GAAYI,UAAA,CAAWF,QAAA,EAAU;MACnC;MACA,OAAO;IACT;IACA,OAAOjO,aAAA,CACLyD,MAAA,CAAO2K,sBAAsB,CAACF,eAAA,GAC9BzK,MAAA,CAAO4K,eAAe,CAACzN,wBAAA,EAA0BsN,eAAA,EAAiBzN,yBAAA,GAClEgD,MAAA,CAAO6K,oBAAoB,CAAC,CAACtJ,aAAA,EAAauJ,eAAA;MACxC,IAAIA,eAAA,EAAiB;QACnBA,eAAA,CAAgB5H,mBAAmB,CAAC,WAAWuH,eAAA;MACjD;MACA,IAAIlJ,aAAA,EAAa;QACfA,aAAA,CAAY0B,gBAAgB,CAAC,WAAWwH,eAAA;QACxCA,eAAA;MACF;IACF,IACA,MAAMM,YAAA,CAAaT,SAAA;EAEvB;EAEA,MAAMU,gBAAA,GAAmBzN,MAAA,CAAOuC,aAAA;EAEhCxC,SAAA,CAAU;IACR,IAAI0N,gBAAA,CAAiB3J,OAAO,KAAKvB,aAAA,EAAe;MAC9CD,aAAA,CAAc;IAChB;IAEAmL,gBAAA,CAAiB3J,OAAO,GAAGvB,aAAA;EAC7B,GAAG,CAACkL,gBAAA,EAAkBlL,aAAA,CAAc;EAEpC,oBACEqI,IAAA,CAAC;IAAIC,SAAA,EAAU;IAAqCM,GAAA,EAAKO,aAAA;cACtDnJ,aAAA,IAAiB,qBAChByI,KAAA,CAACnL,KAAA,CAAMuL,QAAQ;8BACbR,IAAA,CAAC;QACCC,SAAA,EAAU;QACVC,OAAA,EAAUG,CAAA;UACRA,CAAA,CAAEC,eAAe;UACjB5I,aAAA,CAAc,CAACsJ,UAAA;QACjB;QACAT,GAAA,EAAKQ,WAAA;QACLZ,IAAA,EAAK;kBAEL,aAAAH,IAAA,CAACzK,aAAA;UAEFyL,UAAA,iBACChB,IAAA,CAAC1I,eAAA;QACCC,SAAA,EAAWA,SAAA;QACXC,UAAA,EAAYuJ,WAAA;QACZtJ,OAAA,EAASA,CAAA,KAAMC,aAAA,CAAc;QAC7BA,aAAA,EAAeA,aAAA;QACfC,aAAA,EAAeA;;;;AAO7B;AAEA,OAAO,MAAMmL,qBAAA,GAAmDC,EAAA;EAAA,MAAAC,CAAA,GAAAhQ,EAAA;EAAC;IAAA6N;EAAA,IAAAkC,EAAc;EAC7E,MAAAE,UAAA,GAAmB/P,kBAAA;EAAA,IAAAgQ,EAAA;EAAA,IAAAF,CAAA,QAAAnC,UAAA,IAAAmC,CAAA,QAAAC,UAAA;IACZC,EAAA,GAAA5N,YAAA,CACL2N,UAAA,GACEjD,IAAA,CAAAY,4BAAA;MAAAC,UAAA,EAA0CA,UAAA,IAAAH,QAAA,CAAAC,IAA2B;MAAApJ,SAAA;IAAA,C,QACnE,EACJsJ,UAAA,IAAAH,QAAA,CAAAC,IAA2B;IAAAqC,CAAA,MAAAnC,UAAA;IAAAmC,CAAA,MAAAC,UAAA;IAAAD,CAAA,MAAAE,EAAA;EAAA;IAAAA,EAAA,GAAAF,CAAA;EAAA;EAAA,OAJtBE,EAIsB;AAAA,CAE/B","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","useLexicalEditable","$computeTableMapSkipCellCheck","$deleteTableColumn__EXPERIMENTAL","$deleteTableRow__EXPERIMENTAL","$getNodeTriplet","$getTableCellNodeFromLexicalNode","$getTableColumnIndexFromTableCellNode","$getTableNodeFromLexicalNodeOrThrow","$getTableRowIndexFromTableCellNode","$insertTableColumn__EXPERIMENTAL","$insertTableRow__EXPERIMENTAL","$isTableCellNode","$isTableSelection","$unmergeCell","getTableElement","getTableObserverFromTableElement","TableCellHeaderStates","TableCellNode","mergeRegister","useScrollInfo","$createParagraphNode","$getRoot","$getSelection","$isElementNode","$isParagraphNode","$isRangeSelection","$isTextNode","COMMAND_PRIORITY_CRITICAL","getDOMSelection","isDOMNode","SELECTION_CHANGE_COMMAND","React","useCallback","useEffect","useRef","useState","createPortal","MeatballsIcon","computeSelectionCount","selection","selectionShape","getShape","columns","toX","fromX","rows","toY","fromY","$canUnmerge","isCollapsed","anchor","is","focus","cell","__colSpan","__rowSpan","$cellContainsEmptyParagraph","getChildrenSize","firstChild","getFirstChildOrThrow","isEmpty","$selectLastDescendant","node","lastDescendant","getLastDescendant","select","selectEnd","selectNext","TableActionMenu","cellMerge","contextRef","onClose","setIsMenuOpen","tableCellNode","_tableCellNode","editor","dropDownRef","updateTableCellNode","selectionCounts","updateSelectionCounts","canMergeCells","setCanMergeCells","canUnmergeCell","setCanUnmergeCell","y","registerMutationListener","nodeMutations","nodeUpdated","get","getKey","getEditorState","read","getLatest","skipInitialization","currentSelectionCounts","menuButtonElement","current","dropDownElement","rootElement","getRootElement","rootEleRect","getBoundingClientRect","menuButtonRect","style","opacity","dropDownElementRect","margin","leftPosition","right","width","window","innerWidth","position","left","pageXOffset","topPosition","top","height","innerHeight","bottom","handleClickOutside","event","target","contains","addEventListener","removeEventListener","clearTableSelection","update","isAttached","tableNode","tableElement","getElementByKey","Error","tableObserver","$clearHighlight","markDirty","rootNode","selectStart","mergeTableCellsAtSelection","nodes","getNodes","tableCells","filter","length","gridMap","minRow","Infinity","maxRow","minCol","maxCol","processedCells","Set","row","mapCell","cellKey","has","some","add","cellStartRow","startRow","cellStartCol","startColumn","cellRowSpan","cellColSpan","Math","min","max","totalRowSpan","totalColSpan","targetCellMap","targetCell","setColSpan","setRowSpan","seenCells","col","currentCell","key","append","getChildren","remove","unmergeTableCellsAtSelection","insertTableRowAtSelection","shouldInsertAfter","i","insertTableColumnAtSelection","deleteTableRowAtSelection","deleteTableAtSelection","deleteTableColumnAtSelection","toggleTableRowIsHeader","tableRowIndex","rowCells","newStyle","getHeaderStyles","ROW","setHeaderStyles","toggleTableColumnIsHeader","tableColumnIndex","columnCells","COLUMN","toggleRowStriping","setRowStriping","getRowStriping","toggleFirstColumnFreeze","setFrozenColumns","getFrozenColumns","mergeCellButton","_jsx","className","onClick","type","_jsxs","e","stopPropagation","ref","Fragment","__headerState","document","body","TableCellActionMenuContainer","anchorElem","menuButtonRef","menuRootRef","isMenuOpen","setTableMenuCellNode","$moveMenu","menu","nativeSelection","_window","activeElement","disable","classList","tableCellParentNodeDOM","anchorNode","tableCellNodeFromSelection","getNode","enabled","isSelecting","toggle","tableCellRect","anchorRect","transform","timeoutId","undefined","callback","delayedCallback","setTimeout","registerUpdateListener","registerCommand","registerRootListener","prevRootElement","clearTimeout","prevTableCellDOM","TableActionMenuPlugin","t0","$","isEditable","t1"],"sources":["../../../../../../src/features/experimental_table/client/plugins/TableActionMenuPlugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type { TableObserver, TableSelection } from '@lexical/table'\nimport type { ElementNode } from 'lexical'\nimport type { JSX } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport {\n $computeTableMapSkipCellCheck,\n $deleteTableColumn__EXPERIMENTAL,\n $deleteTableRow__EXPERIMENTAL,\n $getNodeTriplet,\n $getTableCellNodeFromLexicalNode,\n $getTableColumnIndexFromTableCellNode,\n $getTableNodeFromLexicalNodeOrThrow,\n $getTableRowIndexFromTableCellNode,\n $insertTableColumn__EXPERIMENTAL,\n $insertTableRow__EXPERIMENTAL,\n $isTableCellNode,\n $isTableSelection,\n $unmergeCell,\n getTableElement,\n getTableObserverFromTableElement,\n TableCellHeaderStates,\n TableCellNode,\n} from '@lexical/table'\nimport { mergeRegister } from '@lexical/utils'\nimport { useScrollInfo } from '@payloadcms/ui'\nimport {\n $createParagraphNode,\n $getRoot,\n $getSelection,\n $isElementNode,\n $isParagraphNode,\n $isRangeSelection,\n $isTextNode,\n COMMAND_PRIORITY_CRITICAL,\n getDOMSelection,\n isDOMNode,\n SELECTION_CHANGE_COMMAND,\n} from 'lexical'\nimport * as React from 'react'\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport type { PluginComponentWithAnchor } from '../../../../typesClient.js'\n\nimport './index.scss'\nimport { MeatballsIcon } from '../../../../../lexical/ui/icons/Meatballs/index.js'\n\nfunction computeSelectionCount(selection: TableSelection): {\n columns: number\n rows: number\n} {\n const selectionShape = selection.getShape()\n return {\n columns: selectionShape.toX - selectionShape.fromX + 1,\n rows: selectionShape.toY - selectionShape.fromY + 1,\n }\n}\n\nfunction $canUnmerge(): boolean {\n const selection = $getSelection()\n if (\n ($isRangeSelection(selection) && !selection.isCollapsed()) ||\n ($isTableSelection(selection) && !selection.anchor.is(selection.focus)) ||\n (!$isRangeSelection(selection) && !$isTableSelection(selection))\n ) {\n return false\n }\n const [cell] = $getNodeTriplet(selection.anchor)\n return cell.__colSpan > 1 || cell.__rowSpan > 1\n}\n\nfunction $cellContainsEmptyParagraph(cell: TableCellNode): boolean {\n if (cell.getChildrenSize() !== 1) {\n return false\n }\n const firstChild = cell.getFirstChildOrThrow()\n if (!$isParagraphNode(firstChild) || !firstChild.isEmpty()) {\n return false\n }\n return true\n}\n\nfunction $selectLastDescendant(node: ElementNode): void {\n const lastDescendant = node.getLastDescendant()\n if ($isTextNode(lastDescendant)) {\n lastDescendant.select()\n } else if ($isElementNode(lastDescendant)) {\n lastDescendant.selectEnd()\n } else if (lastDescendant !== null) {\n lastDescendant.selectNext()\n }\n}\n\ntype TableCellActionMenuProps = Readonly<{\n cellMerge: boolean\n contextRef: { current: HTMLElement | null }\n onClose: () => void\n setIsMenuOpen: (isOpen: boolean) => void\n tableCellNode: TableCellNode\n}>\n\nfunction TableActionMenu({\n cellMerge,\n contextRef,\n onClose,\n setIsMenuOpen,\n tableCellNode: _tableCellNode,\n}: TableCellActionMenuProps) {\n const [editor] = useLexicalComposerContext()\n const dropDownRef = useRef<HTMLDivElement | null>(null)\n const [tableCellNode, updateTableCellNode] = useState(_tableCellNode)\n const [selectionCounts, updateSelectionCounts] = useState({\n columns: 1,\n rows: 1,\n })\n const [canMergeCells, setCanMergeCells] = useState(false)\n const [canUnmergeCell, setCanUnmergeCell] = useState(false)\n const { y } = useScrollInfo()\n\n useEffect(() => {\n return editor.registerMutationListener(\n TableCellNode,\n (nodeMutations) => {\n const nodeUpdated = nodeMutations.get(tableCellNode.getKey()) === 'updated'\n\n if (nodeUpdated) {\n editor.getEditorState().read(() => {\n updateTableCellNode(tableCellNode.getLatest())\n })\n }\n },\n { skipInitialization: true },\n )\n }, [editor, tableCellNode])\n\n useEffect(() => {\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n // Merge cells\n if ($isTableSelection(selection)) {\n const currentSelectionCounts = computeSelectionCount(selection)\n updateSelectionCounts(computeSelectionCount(selection))\n\n setCanMergeCells(currentSelectionCounts.columns > 1 || currentSelectionCounts.rows > 1)\n }\n // Unmerge cell\n setCanUnmergeCell($canUnmerge())\n })\n }, [editor])\n\n useEffect(() => {\n const menuButtonElement = contextRef.current\n const dropDownElement = dropDownRef.current\n const rootElement = editor.getRootElement()\n\n if (menuButtonElement != null && dropDownElement != null && rootElement != null) {\n const rootEleRect = rootElement.getBoundingClientRect()\n const menuButtonRect = menuButtonElement.getBoundingClientRect()\n dropDownElement.style.opacity = '1'\n const dropDownElementRect = dropDownElement.getBoundingClientRect()\n const margin = 5\n let leftPosition = menuButtonRect.right + margin\n if (\n leftPosition + dropDownElementRect.width > window.innerWidth ||\n leftPosition + dropDownElementRect.width > rootEleRect.right\n ) {\n const position = menuButtonRect.left - dropDownElementRect.width - margin\n leftPosition = (position < 0 ? margin : position) + window.pageXOffset\n }\n dropDownElement.style.left = `${leftPosition + window.pageXOffset}px`\n\n let topPosition = menuButtonRect.top\n if (topPosition + dropDownElementRect.height > window.innerHeight) {\n const position = menuButtonRect.bottom - dropDownElementRect.height\n topPosition = position < 0 ? margin : position\n }\n dropDownElement.style.top = `${topPosition}px`\n }\n }, [contextRef, dropDownRef, editor, y])\n\n useEffect(() => {\n function handleClickOutside(event: MouseEvent) {\n if (\n dropDownRef.current != null &&\n contextRef.current != null &&\n isDOMNode(event.target) &&\n !dropDownRef.current.contains(event.target) &&\n !contextRef.current.contains(event.target)\n ) {\n setIsMenuOpen(false)\n }\n }\n\n window.addEventListener('click', handleClickOutside)\n\n return () => window.removeEventListener('click', handleClickOutside)\n }, [setIsMenuOpen, contextRef])\n\n const clearTableSelection = useCallback(() => {\n editor.update(() => {\n if (tableCellNode.isAttached()) {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n const tableElement = getTableElement(tableNode, editor.getElementByKey(tableNode.getKey()))\n\n if (tableElement === null) {\n throw new Error('Expected to find tableElement in DOM')\n }\n\n const tableObserver = getTableObserverFromTableElement(tableElement)\n if (tableObserver !== null) {\n tableObserver.$clearHighlight()\n }\n\n tableNode.markDirty()\n updateTableCellNode(tableCellNode.getLatest())\n }\n\n const rootNode = $getRoot()\n rootNode.selectStart()\n })\n }, [editor, tableCellNode])\n\n const mergeTableCellsAtSelection = () => {\n editor.update(() => {\n const selection = $getSelection()\n if ($isTableSelection(selection)) {\n // Get all selected cells and compute the total area\n const nodes = selection.getNodes()\n const tableCells = nodes.filter($isTableCellNode)\n\n if (tableCells.length === 0) {\n return\n }\n\n // Find the table node\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCells[0] as TableCellNode)\n const [gridMap] = $computeTableMapSkipCellCheck(tableNode, null, null)\n\n // Find the boundaries of the selection including merged cells\n let minRow = Infinity\n let maxRow = -Infinity\n let minCol = Infinity\n let maxCol = -Infinity\n\n // First pass: find the actual boundaries considering merged cells\n const processedCells = new Set()\n for (const row of gridMap) {\n for (const mapCell of row) {\n if (!mapCell || !mapCell.cell) {\n continue\n }\n\n const cellKey = mapCell.cell.getKey()\n if (processedCells.has(cellKey)) {\n continue\n }\n\n if (tableCells.some((cell) => cell.is(mapCell.cell))) {\n processedCells.add(cellKey)\n // Get the actual position of this cell in the grid\n const cellStartRow = mapCell.startRow\n const cellStartCol = mapCell.startColumn\n const cellRowSpan = mapCell.cell.__rowSpan || 1\n const cellColSpan = mapCell.cell.__colSpan || 1\n\n // Update boundaries considering the cell's actual position and span\n minRow = Math.min(minRow, cellStartRow)\n maxRow = Math.max(maxRow, cellStartRow + cellRowSpan - 1)\n minCol = Math.min(minCol, cellStartCol)\n maxCol = Math.max(maxCol, cellStartCol + cellColSpan - 1)\n }\n }\n }\n\n // Validate boundaries\n if (minRow === Infinity || minCol === Infinity) {\n return\n }\n\n // The total span of the merged cell\n const totalRowSpan = maxRow - minRow + 1\n const totalColSpan = maxCol - minCol + 1\n\n // Use the top-left cell as the target cell\n const targetCellMap = gridMap?.[minRow]?.[minCol]\n if (!targetCellMap?.cell) {\n return\n }\n const targetCell = targetCellMap.cell\n\n // Set the spans for the target cell\n targetCell.setColSpan(totalColSpan)\n targetCell.setRowSpan(totalRowSpan)\n\n // Move content from other cells to the target cell\n const seenCells = new Set([targetCell.getKey()])\n\n // Second pass: merge content and remove other cells\n for (let row = minRow; row <= maxRow; row++) {\n for (let col = minCol; col <= maxCol; col++) {\n const mapCell = gridMap?.[row]?.[col]\n if (!mapCell?.cell) {\n continue\n }\n\n const currentCell = mapCell.cell\n const key = currentCell.getKey()\n\n if (!seenCells.has(key)) {\n seenCells.add(key)\n const isEmpty = $cellContainsEmptyParagraph(currentCell)\n if (!isEmpty) {\n targetCell.append(...currentCell.getChildren())\n }\n currentCell.remove()\n }\n }\n }\n\n // Ensure target cell has content\n if (targetCell.getChildrenSize() === 0) {\n targetCell.append($createParagraphNode())\n }\n\n $selectLastDescendant(targetCell)\n onClose()\n }\n })\n }\n\n const unmergeTableCellsAtSelection = () => {\n editor.update(() => {\n $unmergeCell()\n })\n }\n\n const insertTableRowAtSelection = useCallback(\n (shouldInsertAfter: boolean) => {\n editor.update(() => {\n for (let i = 0; i < selectionCounts.rows; i++) {\n $insertTableRow__EXPERIMENTAL(shouldInsertAfter)\n }\n onClose()\n })\n },\n [editor, onClose, selectionCounts.rows],\n )\n\n const insertTableColumnAtSelection = useCallback(\n (shouldInsertAfter: boolean) => {\n editor.update(() => {\n for (let i = 0; i < selectionCounts.columns; i++) {\n $insertTableColumn__EXPERIMENTAL(shouldInsertAfter)\n }\n onClose()\n })\n },\n [editor, onClose, selectionCounts.columns],\n )\n\n const deleteTableRowAtSelection = useCallback(() => {\n editor.update(() => {\n $deleteTableRow__EXPERIMENTAL()\n onClose()\n })\n }, [editor, onClose])\n\n const deleteTableAtSelection = useCallback(() => {\n editor.update(() => {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n tableNode.remove()\n\n clearTableSelection()\n onClose()\n })\n }, [editor, tableCellNode, clearTableSelection, onClose])\n\n const deleteTableColumnAtSelection = useCallback(() => {\n editor.update(() => {\n $deleteTableColumn__EXPERIMENTAL()\n onClose()\n })\n }, [editor, onClose])\n\n const toggleTableRowIsHeader = useCallback(() => {\n editor.update(() => {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n\n const tableRowIndex = $getTableRowIndexFromTableCellNode(tableCellNode)\n\n const [gridMap] = $computeTableMapSkipCellCheck(tableNode, null, null)\n\n const rowCells = new Set<TableCellNode>()\n\n const newStyle = tableCellNode.getHeaderStyles() ^ TableCellHeaderStates.ROW\n if (gridMap[tableRowIndex]) {\n for (let col = 0; col < gridMap[tableRowIndex].length; col++) {\n const mapCell = gridMap[tableRowIndex][col]\n\n if (!mapCell?.cell) {\n continue\n }\n\n if (!rowCells.has(mapCell.cell)) {\n rowCells.add(mapCell.cell)\n mapCell.cell.setHeaderStyles(newStyle, TableCellHeaderStates.ROW)\n }\n }\n }\n\n clearTableSelection()\n onClose()\n })\n }, [editor, tableCellNode, clearTableSelection, onClose])\n\n const toggleTableColumnIsHeader = useCallback(() => {\n editor.update(() => {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n\n const tableColumnIndex = $getTableColumnIndexFromTableCellNode(tableCellNode)\n\n const [gridMap] = $computeTableMapSkipCellCheck(tableNode, null, null)\n\n const columnCells = new Set<TableCellNode>()\n\n const newStyle = tableCellNode.getHeaderStyles() ^ TableCellHeaderStates.COLUMN\n if (gridMap) {\n for (let row = 0; row < gridMap.length; row++) {\n const mapCell = gridMap?.[row]?.[tableColumnIndex]\n\n if (!mapCell?.cell) {\n continue\n }\n\n if (!columnCells.has(mapCell.cell)) {\n columnCells.add(mapCell.cell)\n mapCell.cell.setHeaderStyles(newStyle, TableCellHeaderStates.COLUMN)\n }\n }\n }\n\n clearTableSelection()\n onClose()\n })\n }, [editor, tableCellNode, clearTableSelection, onClose])\n\n const toggleRowStriping = useCallback(() => {\n editor.update(() => {\n if (tableCellNode.isAttached()) {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n if (tableNode) {\n tableNode.setRowStriping(!tableNode.getRowStriping())\n }\n }\n\n clearTableSelection()\n onClose()\n })\n }, [editor, tableCellNode, clearTableSelection, onClose])\n\n const toggleFirstColumnFreeze = useCallback(() => {\n editor.update(() => {\n if (tableCellNode.isAttached()) {\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n if (tableNode) {\n tableNode.setFrozenColumns(tableNode.getFrozenColumns() === 0 ? 1 : 0)\n }\n }\n clearTableSelection()\n onClose()\n })\n }, [editor, tableCellNode, clearTableSelection, onClose])\n\n let mergeCellButton: JSX.Element | null = null\n if (cellMerge) {\n if (canMergeCells) {\n mergeCellButton = (\n <button\n className=\"item\"\n data-test-id=\"table-merge-cells\"\n onClick={() => mergeTableCellsAtSelection()}\n type=\"button\"\n >\n <span className=\"text\">Merge cells</span>\n </button>\n )\n } else if (canUnmergeCell) {\n mergeCellButton = (\n <button\n className=\"item\"\n data-test-id=\"table-unmerge-cells\"\n onClick={() => unmergeTableCellsAtSelection()}\n type=\"button\"\n >\n <span className=\"text\">Unmerge cells</span>\n </button>\n )\n }\n }\n\n return createPortal(\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions,jsx-a11y/click-events-have-key-events\n <div\n className=\"table-action-menu-dropdown\"\n onClick={(e) => {\n e.stopPropagation()\n }}\n ref={dropDownRef}\n >\n {mergeCellButton ? (\n <React.Fragment>\n {mergeCellButton}\n <hr />\n </React.Fragment>\n ) : null}\n\n <button\n className=\"item\"\n data-test-id=\"table-row-striping\"\n onClick={() => toggleRowStriping()}\n type=\"button\"\n >\n <span className=\"text\">Toggle Row Striping</span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-freeze-first-column\"\n onClick={() => toggleFirstColumnFreeze()}\n type=\"button\"\n >\n <span className=\"text\">Toggle First Column Freeze</span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-insert-row-above\"\n onClick={() => insertTableRowAtSelection(false)}\n type=\"button\"\n >\n <span className=\"text\">\n Insert {selectionCounts.rows === 1 ? 'row' : `${selectionCounts.rows} rows`} above\n </span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-insert-row-below\"\n onClick={() => insertTableRowAtSelection(true)}\n type=\"button\"\n >\n <span className=\"text\">\n Insert {selectionCounts.rows === 1 ? 'row' : `${selectionCounts.rows} rows`} below\n </span>\n </button>\n <hr />\n <button\n className=\"item\"\n data-test-id=\"table-insert-column-before\"\n onClick={() => insertTableColumnAtSelection(false)}\n type=\"button\"\n >\n <span className=\"text\">\n Insert {selectionCounts.columns === 1 ? 'column' : `${selectionCounts.columns} columns`}{' '}\n left\n </span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-insert-column-after\"\n onClick={() => insertTableColumnAtSelection(true)}\n type=\"button\"\n >\n <span className=\"text\">\n Insert {selectionCounts.columns === 1 ? 'column' : `${selectionCounts.columns} columns`}{' '}\n right\n </span>\n </button>\n <hr />\n <button\n className=\"item\"\n data-test-id=\"table-delete-columns\"\n onClick={() => deleteTableColumnAtSelection()}\n type=\"button\"\n >\n <span className=\"text\">Delete column</span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-delete-rows\"\n onClick={() => deleteTableRowAtSelection()}\n type=\"button\"\n >\n <span className=\"text\">Delete row</span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-delete\"\n onClick={() => deleteTableAtSelection()}\n type=\"button\"\n >\n <span className=\"text\">Delete table</span>\n </button>\n <hr />\n <button\n className=\"item\"\n data-test-id=\"table-row-header\"\n onClick={() => toggleTableRowIsHeader()}\n type=\"button\"\n >\n <span className=\"text\">\n {(tableCellNode.__headerState & TableCellHeaderStates.ROW) === TableCellHeaderStates.ROW\n ? 'Remove'\n : 'Add'}{' '}\n row header\n </span>\n </button>\n <button\n className=\"item\"\n data-test-id=\"table-column-header\"\n onClick={() => toggleTableColumnIsHeader()}\n type=\"button\"\n >\n <span className=\"text\">\n {(tableCellNode.__headerState & TableCellHeaderStates.COLUMN) ===\n TableCellHeaderStates.COLUMN\n ? 'Remove'\n : 'Add'}{' '}\n column header\n </span>\n </button>\n </div>,\n document.body,\n )\n}\n\nfunction TableCellActionMenuContainer({\n anchorElem,\n cellMerge,\n}: {\n anchorElem: HTMLElement\n cellMerge: boolean\n}): JSX.Element {\n const [editor] = useLexicalComposerContext()\n\n const menuButtonRef = useRef<HTMLDivElement | null>(null)\n const menuRootRef = useRef<HTMLButtonElement | null>(null)\n const [isMenuOpen, setIsMenuOpen] = useState(false)\n\n const [tableCellNode, setTableMenuCellNode] = useState<null | TableCellNode>(null)\n\n const $moveMenu = useCallback(() => {\n const menu = menuButtonRef.current\n const selection = $getSelection()\n const nativeSelection = getDOMSelection(editor._window)\n const activeElement = document.activeElement\n function disable() {\n if (menu) {\n menu.classList.remove('table-cell-action-button-container--active')\n menu.classList.add('table-cell-action-button-container--inactive')\n }\n setTableMenuCellNode(null)\n }\n\n if (selection == null || menu == null) {\n return disable()\n }\n\n const rootElement = editor.getRootElement()\n let tableObserver: null | TableObserver = null\n let tableCellParentNodeDOM: HTMLElement | null = null\n\n if (\n $isRangeSelection(selection) &&\n rootElement !== null &&\n nativeSelection !== null &&\n rootElement.contains(nativeSelection.anchorNode)\n ) {\n const tableCellNodeFromSelection = $getTableCellNodeFromLexicalNode(\n selection.anchor.getNode(),\n )\n\n if (tableCellNodeFromSelection == null) {\n return disable()\n }\n\n tableCellParentNodeDOM = editor.getElementByKey(tableCellNodeFromSelection.getKey())\n\n if (tableCellParentNodeDOM == null || !tableCellNodeFromSelection.isAttached()) {\n return disable()\n }\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNodeFromSelection)\n const tableElement = getTableElement(tableNode, editor.getElementByKey(tableNode.getKey()))\n\n if (tableElement === null) {\n throw new Error('TableActionMenu: Expected to find tableElement in DOM')\n }\n\n tableObserver = getTableObserverFromTableElement(tableElement)\n setTableMenuCellNode(tableCellNodeFromSelection)\n } else if ($isTableSelection(selection)) {\n const anchorNode = $getTableCellNodeFromLexicalNode(selection.anchor.getNode())\n if (!$isTableCellNode(anchorNode)) {\n throw new Error('TableSelection anchorNode must be a TableCellNode')\n }\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(anchorNode)\n const tableElement = getTableElement(tableNode, editor.getElementByKey(tableNode.getKey()))\n\n if (tableElement === null) {\n throw new Error('TableActionMenu: Expected to find tableElement in DOM')\n }\n\n tableObserver = getTableObserverFromTableElement(tableElement)\n tableCellParentNodeDOM = editor.getElementByKey(anchorNode.getKey())\n } else if (!activeElement) {\n return disable()\n }\n if (tableObserver === null || tableCellParentNodeDOM === null) {\n return disable()\n }\n const enabled = !tableObserver || !tableObserver.isSelecting\n menu.classList.toggle('table-cell-action-button-container--active', enabled)\n menu.classList.toggle('table-cell-action-button-container--inactive', !enabled)\n if (enabled) {\n const tableCellRect = tableCellParentNodeDOM.getBoundingClientRect()\n const anchorRect = anchorElem.getBoundingClientRect()\n const top = tableCellRect.top - anchorRect.top\n const left = tableCellRect.right - anchorRect.left\n menu.style.transform = `translate(${left}px, ${top}px)`\n }\n }, [editor, anchorElem])\n\n useEffect(() => {\n // We call the $moveMenu callback every time the selection changes,\n // once up front, and once after each pointerup\n let timeoutId: ReturnType<typeof setTimeout> | undefined = undefined\n const callback = () => {\n timeoutId = undefined\n editor.getEditorState().read($moveMenu)\n }\n const delayedCallback = () => {\n if (timeoutId === undefined) {\n timeoutId = setTimeout(callback, 0)\n }\n return false\n }\n return mergeRegister(\n editor.registerUpdateListener(delayedCallback),\n editor.registerCommand(SELECTION_CHANGE_COMMAND, delayedCallback, COMMAND_PRIORITY_CRITICAL),\n editor.registerRootListener((rootElement, prevRootElement) => {\n if (prevRootElement) {\n prevRootElement.removeEventListener('pointerup', delayedCallback)\n }\n if (rootElement) {\n rootElement.addEventListener('pointerup', delayedCallback)\n delayedCallback()\n }\n }),\n () => clearTimeout(timeoutId),\n )\n })\n\n const prevTableCellDOM = useRef(tableCellNode)\n\n useEffect(() => {\n if (prevTableCellDOM.current !== tableCellNode) {\n setIsMenuOpen(false)\n }\n\n prevTableCellDOM.current = tableCellNode\n }, [prevTableCellDOM, tableCellNode])\n\n return (\n <div className=\"table-cell-action-button-container\" ref={menuButtonRef}>\n {tableCellNode != null && (\n <React.Fragment>\n <button\n className=\"table-cell-action-button\"\n onClick={(e) => {\n e.stopPropagation()\n setIsMenuOpen(!isMenuOpen)\n }}\n ref={menuRootRef}\n type=\"button\"\n >\n <MeatballsIcon />\n </button>\n {isMenuOpen && (\n <TableActionMenu\n cellMerge={cellMerge}\n contextRef={menuRootRef}\n onClose={() => setIsMenuOpen(false)}\n setIsMenuOpen={setIsMenuOpen}\n tableCellNode={tableCellNode}\n />\n )}\n </React.Fragment>\n )}\n </div>\n )\n}\n\nexport const TableActionMenuPlugin: PluginComponentWithAnchor = ({ anchorElem }) => {\n const isEditable = useLexicalEditable()\n return createPortal(\n isEditable ? (\n <TableCellActionMenuContainer anchorElem={anchorElem ?? document.body} cellMerge />\n ) : null,\n anchorElem ?? document.body,\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/features/experimental_table/client/plugins/TableCellResizerPlugin/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/features/experimental_table/client/plugins/TableCellResizerPlugin/index.tsx"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/features/experimental_table/client/plugins/TableCellResizerPlugin/index.tsx"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAEjE,OAAO,cAAc,CAAA;AAqZrB,eAAO,MAAM,sBAAsB,EAAE,eAQpC,CAAA"}
|
|
@@ -136,8 +136,12 @@ function TableCellResizer({
|
|
|
136
136
|
throw new Error('TableCellResizer: Table cell node not found.');
|
|
137
137
|
}
|
|
138
138
|
const tableNode_1 = $getTableNodeFromLexicalNodeOrThrow(tableCellNode_0);
|
|
139
|
-
const
|
|
139
|
+
const baseRowIndex = $getTableRowIndexFromTableCellNode(tableCellNode_0);
|
|
140
140
|
const tableRows = tableNode_1.getChildren();
|
|
141
|
+
// Determine if this is a full row merge by checking colspan
|
|
142
|
+
const isFullRowMerge = tableCellNode_0.getColSpan() === tableNode_1.getColumnCount();
|
|
143
|
+
// For full row merges, apply to first row. For partial merges, apply to last row
|
|
144
|
+
const tableRowIndex = isFullRowMerge ? baseRowIndex : baseRowIndex + tableCellNode_0.getRowSpan() - 1;
|
|
141
145
|
if (tableRowIndex >= tableRows.length || tableRowIndex < 0) {
|
|
142
146
|
throw new Error('Expected table cell to be inside of table row.');
|
|
143
147
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","useLexicalEditable","$computeTableMapSkipCellCheck","$getTableNodeFromLexicalNodeOrThrow","$getTableRowIndexFromTableCellNode","$isTableCellNode","$isTableRowNode","getDOMCellFromTarget","getTableElement","TableNode","calculateZoomLevel","mergeRegister","$getNearestNodeFromDOMNode","isHTMLElement","React","useCallback","useEffect","useMemo","useRef","useState","createPortal","useEditorConfigContext","MIN_ROW_HEIGHT","MIN_COLUMN_WIDTH","TableCellResizer","editor","targetRef","resizerRef","tableRectRef","hasTable","setHasTable","editorConfig","mouseStartPosRef","mouseCurrentPos","updateMouseCurrentPos","activeCell","updateActiveCell","isMouseDown","updateIsMouseDown","draggingDirection","updateDraggingDirection","resetState","current","isMouseDownOnEvent","event","buttons","tableKeys","Set","registerMutationListener","nodeMutations","nodeKey","mutation","delete","add","size","registerNodeTransform","tableNode","getColWidths","numColumns","getColumnCount","columnWidth","setColWidths","Array","fill","onMouseMove","target","x","clientX","y","clientY","contains","cell","getEditorState","read","tableCellNode","elem","Error","tableElement","getElementByKey","getKey","getBoundingClientRect","onMouseDown","onMouseUp","removeRootListener","registerRootListener","rootElement","prevRootElement","removeEventListener","addEventListener","isHeightChanging","direction","updateRowHeight","heightChange","update","tableRowIndex","getRowSpan","tableRows","getChildren","length","tableRow","height","getHeight","undefined","rowCells","Math","min","map","getCellNodeHeight","Infinity","newHeight","max","setHeight","tag","activeEditor","domCellNode","clientHeight","getCellColumnIndex","tableMap","columnIndex","forEach","row","columnIndexInner","updateColumnWidth","widthChange","colWidths","width","newColWidths","newWidth","mouseUpHandler","handler","preventDefault","stopPropagation","zoom","document","toggleResize","resizerStyles","setResizerStyles","bottom","left","right","top","zoneWidth","styles","backgroundColor","cursor","window","scrollX","scrollY","tableRect","_jsx","ref","_jsxs","Fragment","className","lexical","theme","tableCellResizer","style","TableCellResizerPlugin","$","isEditable","t0","t1"],"sources":["../../../../../../src/features/experimental_table/client/plugins/TableCellResizerPlugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type { TableCellNode, TableDOMCell, TableMapType } from '@lexical/table'\nimport type { LexicalEditor, NodeKey } from 'lexical'\nimport type { JSX, MouseEventHandler } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport {\n $computeTableMapSkipCellCheck,\n $getTableNodeFromLexicalNodeOrThrow,\n $getTableRowIndexFromTableCellNode,\n $isTableCellNode,\n $isTableRowNode,\n getDOMCellFromTarget,\n getTableElement,\n TableNode,\n} from '@lexical/table'\nimport { calculateZoomLevel, mergeRegister } from '@lexical/utils'\nimport { $getNearestNodeFromDOMNode, isHTMLElement } from 'lexical'\nimport * as React from 'react'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport type { PluginComponent } from '../../../../typesClient.js'\n\nimport { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js'\n\ntype MousePosition = {\n x: number\n y: number\n}\n\ntype MouseDraggingDirection = 'bottom' | 'right'\n\nconst MIN_ROW_HEIGHT = 33\nconst MIN_COLUMN_WIDTH = 92\n\nfunction TableCellResizer({ editor }: { editor: LexicalEditor }): JSX.Element {\n const targetRef = useRef<HTMLElement | null>(null)\n const resizerRef = useRef<HTMLDivElement | null>(null)\n const tableRectRef = useRef<ClientRect | null>(null)\n const [hasTable, setHasTable] = useState(false)\n const editorConfig = useEditorConfigContext()\n\n const mouseStartPosRef = useRef<MousePosition | null>(null)\n const [mouseCurrentPos, updateMouseCurrentPos] = useState<MousePosition | null>(null)\n\n const [activeCell, updateActiveCell] = useState<null | TableDOMCell>(null)\n const [isMouseDown, updateIsMouseDown] = useState<boolean>(false)\n const [draggingDirection, updateDraggingDirection] = useState<MouseDraggingDirection | null>(null)\n\n const resetState = useCallback(() => {\n updateActiveCell(null)\n targetRef.current = null\n updateDraggingDirection(null)\n mouseStartPosRef.current = null\n tableRectRef.current = null\n }, [])\n\n const isMouseDownOnEvent = (event: MouseEvent) => {\n return (event.buttons & 1) === 1\n }\n\n useEffect(() => {\n const tableKeys = new Set<NodeKey>()\n return mergeRegister(\n editor.registerMutationListener(TableNode, (nodeMutations) => {\n for (const [nodeKey, mutation] of nodeMutations) {\n if (mutation === 'destroyed') {\n tableKeys.delete(nodeKey)\n } else {\n tableKeys.add(nodeKey)\n }\n }\n setHasTable(tableKeys.size > 0)\n }),\n editor.registerNodeTransform(TableNode, (tableNode) => {\n if (tableNode.getColWidths()) {\n return tableNode\n }\n\n const numColumns = tableNode.getColumnCount()\n const columnWidth = MIN_COLUMN_WIDTH\n\n tableNode.setColWidths(Array(numColumns).fill(columnWidth))\n return tableNode\n }),\n )\n }, [editor])\n\n useEffect(() => {\n if (!hasTable) {\n return\n }\n\n const onMouseMove = (event: MouseEvent) => {\n const target = event.target\n if (!isHTMLElement(target)) {\n return\n }\n\n if (draggingDirection) {\n updateMouseCurrentPos({\n x: event.clientX,\n y: event.clientY,\n })\n return\n }\n updateIsMouseDown(isMouseDownOnEvent(event))\n if (resizerRef.current && resizerRef.current.contains(target)) {\n return\n }\n\n if (targetRef.current !== target) {\n targetRef.current = target\n const cell = getDOMCellFromTarget(target)\n\n if (cell && activeCell !== cell) {\n editor.getEditorState().read(\n () => {\n const tableCellNode = $getNearestNodeFromDOMNode(cell.elem)\n\n if (!tableCellNode) {\n throw new Error('TableCellResizer: Table cell node not found.')\n }\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n const tableElement = getTableElement(\n tableNode,\n editor.getElementByKey(tableNode.getKey()),\n )\n if (!tableElement) {\n throw new Error('TableCellResizer: Table element not found.')\n }\n\n targetRef.current = target\n tableRectRef.current = tableElement.getBoundingClientRect()\n updateActiveCell(cell)\n },\n { editor },\n )\n } else if (cell == null) {\n resetState()\n }\n }\n }\n\n const onMouseDown = (event: MouseEvent) => {\n updateIsMouseDown(true)\n }\n\n const onMouseUp = (event: MouseEvent) => {\n updateIsMouseDown(false)\n }\n\n const removeRootListener = editor.registerRootListener((rootElement, prevRootElement) => {\n prevRootElement?.removeEventListener('mousemove', onMouseMove)\n prevRootElement?.removeEventListener('mousedown', onMouseDown)\n prevRootElement?.removeEventListener('mouseup', onMouseUp)\n rootElement?.addEventListener('mousemove', onMouseMove)\n rootElement?.addEventListener('mousedown', onMouseDown)\n rootElement?.addEventListener('mouseup', onMouseUp)\n })\n\n return () => {\n removeRootListener()\n }\n }, [activeCell, draggingDirection, editor, hasTable, resetState])\n\n const isHeightChanging = (direction: MouseDraggingDirection) => {\n if (direction === 'bottom') {\n return true\n }\n return false\n }\n\n const updateRowHeight = useCallback(\n (heightChange: number) => {\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n\n editor.update(\n () => {\n const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem)\n if (!$isTableCellNode(tableCellNode)) {\n throw new Error('TableCellResizer: Table cell node not found.')\n }\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n\n const tableRowIndex =\n $getTableRowIndexFromTableCellNode(tableCellNode) + tableCellNode.getRowSpan() - 1\n\n const tableRows = tableNode.getChildren()\n\n if (tableRowIndex >= tableRows.length || tableRowIndex < 0) {\n throw new Error('Expected table cell to be inside of table row.')\n }\n\n const tableRow = tableRows[tableRowIndex]\n\n if (!$isTableRowNode(tableRow)) {\n throw new Error('Expected table row')\n }\n\n let height = tableRow.getHeight()\n if (height === undefined) {\n const rowCells = tableRow.getChildren<TableCellNode>()\n height = Math.min(\n ...rowCells.map((cell) => getCellNodeHeight(cell, editor) ?? Infinity),\n )\n }\n\n const newHeight = Math.max(height + heightChange, MIN_ROW_HEIGHT)\n tableRow.setHeight(newHeight)\n },\n { tag: 'skip-scroll-into-view' },\n )\n },\n [activeCell, editor],\n )\n\n const getCellNodeHeight = (\n cell: TableCellNode,\n activeEditor: LexicalEditor,\n ): number | undefined => {\n const domCellNode = activeEditor.getElementByKey(cell.getKey())\n return domCellNode?.clientHeight\n }\n\n const getCellColumnIndex = (tableCellNode: TableCellNode, tableMap: TableMapType) => {\n let columnIndex: number | undefined\n tableMap.forEach((row) => {\n row.forEach((cell, columnIndexInner) => {\n if (cell.cell === tableCellNode) {\n columnIndex = columnIndexInner\n }\n })\n })\n return columnIndex\n }\n\n const updateColumnWidth = useCallback(\n (widthChange: number) => {\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n editor.update(\n () => {\n const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem)\n if (!$isTableCellNode(tableCellNode)) {\n throw new Error('TableCellResizer: Table cell node not found.')\n }\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n const [tableMap] = $computeTableMapSkipCellCheck(tableNode, null, null)\n const columnIndex = getCellColumnIndex(tableCellNode, tableMap)\n if (columnIndex === undefined) {\n throw new Error('TableCellResizer: Table column not found.')\n }\n\n const colWidths = tableNode.getColWidths()\n if (!colWidths) {\n return\n }\n const width = colWidths[columnIndex]\n if (width === undefined) {\n return\n }\n const newColWidths = [...colWidths]\n const newWidth = Math.max(width + widthChange, MIN_COLUMN_WIDTH)\n newColWidths[columnIndex] = newWidth\n tableNode.setColWidths(newColWidths)\n },\n { tag: 'skip-scroll-into-view' },\n )\n },\n [activeCell, editor],\n )\n\n const mouseUpHandler = useCallback(\n (direction: MouseDraggingDirection) => {\n const handler = (event: MouseEvent) => {\n event.preventDefault()\n event.stopPropagation()\n\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n\n if (mouseStartPosRef.current) {\n const { x, y } = mouseStartPosRef.current\n\n if (activeCell === null) {\n return\n }\n const zoom = calculateZoomLevel(event.target as Element)\n\n if (isHeightChanging(direction)) {\n const heightChange = (event.clientY - y) / zoom\n updateRowHeight(heightChange)\n } else {\n const widthChange = (event.clientX - x) / zoom\n updateColumnWidth(widthChange)\n }\n\n resetState()\n document.removeEventListener('mouseup', handler)\n }\n }\n return handler\n },\n [activeCell, resetState, updateColumnWidth, updateRowHeight],\n )\n\n const toggleResize = useCallback(\n (direction: MouseDraggingDirection): MouseEventHandler<HTMLDivElement> =>\n (event) => {\n event.preventDefault()\n event.stopPropagation()\n\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n\n mouseStartPosRef.current = {\n x: event.clientX,\n y: event.clientY,\n }\n updateMouseCurrentPos(mouseStartPosRef.current)\n updateDraggingDirection(direction)\n\n document.addEventListener('mouseup', mouseUpHandler(direction))\n },\n [activeCell, mouseUpHandler],\n )\n\n const [resizerStyles, setResizerStyles] = useState<{\n bottom?: null | React.CSSProperties\n left?: null | React.CSSProperties\n right?: null | React.CSSProperties\n top?: null | React.CSSProperties\n }>({\n bottom: null,\n left: null,\n right: null,\n top: null,\n })\n\n useEffect(() => {\n if (activeCell) {\n const { height, left, top, width } = activeCell.elem.getBoundingClientRect()\n const zoom = calculateZoomLevel(activeCell.elem)\n const zoneWidth = 10 // Pixel width of the zone where you can drag the edge\n const styles = {\n bottom: {\n backgroundColor: 'none',\n cursor: 'row-resize',\n height: `${zoneWidth}px`,\n left: `${window.scrollX + left}px`,\n top: `${window.scrollY + top + height - zoneWidth / 2}px`,\n width: `${width}px`,\n },\n right: {\n backgroundColor: 'none',\n cursor: 'col-resize',\n height: `${height}px`,\n left: `${window.scrollX + left + width - zoneWidth / 2}px`,\n top: `${window.scrollY + top}px`,\n width: `${zoneWidth}px`,\n },\n }\n\n const tableRect = tableRectRef.current\n\n if (draggingDirection && mouseCurrentPos && tableRect) {\n if (isHeightChanging(draggingDirection)) {\n styles[draggingDirection].left = `${window.scrollX + tableRect.left}px`\n styles[draggingDirection].top = `${window.scrollY + mouseCurrentPos.y / zoom}px`\n styles[draggingDirection].height = '3px'\n styles[draggingDirection].width = `${tableRect.width}px`\n } else {\n styles[draggingDirection].top = `${window.scrollY + tableRect.top}px`\n styles[draggingDirection].left = `${window.scrollX + mouseCurrentPos.x / zoom}px`\n styles[draggingDirection].width = '3px'\n styles[draggingDirection].height = `${tableRect.height}px`\n }\n\n styles[draggingDirection].backgroundColor = '#adf'\n }\n\n setResizerStyles(styles)\n } else {\n setResizerStyles({\n bottom: null,\n left: null,\n right: null,\n top: null,\n })\n }\n }, [activeCell, draggingDirection, mouseCurrentPos])\n\n return (\n <div ref={resizerRef}>\n {activeCell != null && !isMouseDown && (\n <React.Fragment>\n <div\n className={`${editorConfig.editorConfig.lexical.theme.tableCellResizer} TableCellResizer__ui`}\n onMouseDown={toggleResize('right')}\n style={resizerStyles.right || undefined}\n />\n <div\n className={`${editorConfig.editorConfig.lexical.theme.tableCellResizer} TableCellResizer__ui`}\n onMouseDown={toggleResize('bottom')}\n style={resizerStyles.bottom || undefined}\n />\n </React.Fragment>\n )}\n </div>\n )\n}\n\nexport const TableCellResizerPlugin: PluginComponent = () => {\n const [editor] = useLexicalComposerContext()\n const isEditable = useLexicalEditable()\n\n return useMemo(\n () => (isEditable ? createPortal(<TableCellResizer editor={editor} />, document.body) : null),\n [editor, isEditable],\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","useLexicalEditable","$computeTableMapSkipCellCheck","$getTableNodeFromLexicalNodeOrThrow","$getTableRowIndexFromTableCellNode","$isTableCellNode","$isTableRowNode","getDOMCellFromTarget","getTableElement","TableNode","calculateZoomLevel","mergeRegister","$getNearestNodeFromDOMNode","isHTMLElement","React","useCallback","useEffect","useMemo","useRef","useState","createPortal","useEditorConfigContext","MIN_ROW_HEIGHT","MIN_COLUMN_WIDTH","TableCellResizer","editor","targetRef","resizerRef","tableRectRef","hasTable","setHasTable","editorConfig","mouseStartPosRef","mouseCurrentPos","updateMouseCurrentPos","activeCell","updateActiveCell","isMouseDown","updateIsMouseDown","draggingDirection","updateDraggingDirection","resetState","current","isMouseDownOnEvent","event","buttons","tableKeys","Set","registerMutationListener","nodeMutations","nodeKey","mutation","delete","add","size","registerNodeTransform","tableNode","getColWidths","numColumns","getColumnCount","columnWidth","setColWidths","Array","fill","onMouseMove","target","x","clientX","y","clientY","contains","cell","getEditorState","read","tableCellNode","elem","Error","tableElement","getElementByKey","getKey","getBoundingClientRect","onMouseDown","onMouseUp","removeRootListener","registerRootListener","rootElement","prevRootElement","removeEventListener","addEventListener","isHeightChanging","direction","updateRowHeight","heightChange","update","baseRowIndex","tableRows","getChildren","isFullRowMerge","getColSpan","tableRowIndex","getRowSpan","length","tableRow","height","getHeight","undefined","rowCells","Math","min","map","getCellNodeHeight","Infinity","newHeight","max","setHeight","tag","activeEditor","domCellNode","clientHeight","getCellColumnIndex","tableMap","columnIndex","forEach","row","columnIndexInner","updateColumnWidth","widthChange","colWidths","width","newColWidths","newWidth","mouseUpHandler","handler","preventDefault","stopPropagation","zoom","document","toggleResize","resizerStyles","setResizerStyles","bottom","left","right","top","zoneWidth","styles","backgroundColor","cursor","window","scrollX","scrollY","tableRect","_jsx","ref","_jsxs","Fragment","className","lexical","theme","tableCellResizer","style","TableCellResizerPlugin","$","isEditable","t0","t1"],"sources":["../../../../../../src/features/experimental_table/client/plugins/TableCellResizerPlugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type { TableCellNode, TableDOMCell, TableMapType } from '@lexical/table'\nimport type { LexicalEditor, NodeKey } from 'lexical'\nimport type { JSX, MouseEventHandler } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { useLexicalEditable } from '@lexical/react/useLexicalEditable'\nimport {\n $computeTableMapSkipCellCheck,\n $getTableNodeFromLexicalNodeOrThrow,\n $getTableRowIndexFromTableCellNode,\n $isTableCellNode,\n $isTableRowNode,\n getDOMCellFromTarget,\n getTableElement,\n TableNode,\n} from '@lexical/table'\nimport { calculateZoomLevel, mergeRegister } from '@lexical/utils'\nimport { $getNearestNodeFromDOMNode, isHTMLElement } from 'lexical'\nimport * as React from 'react'\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { createPortal } from 'react-dom'\n\nimport type { PluginComponent } from '../../../../typesClient.js'\n\nimport './index.scss'\nimport { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js'\n\ntype MousePosition = {\n x: number\n y: number\n}\n\ntype MouseDraggingDirection = 'bottom' | 'right'\n\nconst MIN_ROW_HEIGHT = 33\nconst MIN_COLUMN_WIDTH = 92\n\nfunction TableCellResizer({ editor }: { editor: LexicalEditor }): JSX.Element {\n const targetRef = useRef<HTMLElement | null>(null)\n const resizerRef = useRef<HTMLDivElement | null>(null)\n const tableRectRef = useRef<ClientRect | null>(null)\n const [hasTable, setHasTable] = useState(false)\n const editorConfig = useEditorConfigContext()\n\n const mouseStartPosRef = useRef<MousePosition | null>(null)\n const [mouseCurrentPos, updateMouseCurrentPos] = useState<MousePosition | null>(null)\n\n const [activeCell, updateActiveCell] = useState<null | TableDOMCell>(null)\n const [isMouseDown, updateIsMouseDown] = useState<boolean>(false)\n const [draggingDirection, updateDraggingDirection] = useState<MouseDraggingDirection | null>(null)\n\n const resetState = useCallback(() => {\n updateActiveCell(null)\n targetRef.current = null\n updateDraggingDirection(null)\n mouseStartPosRef.current = null\n tableRectRef.current = null\n }, [])\n\n const isMouseDownOnEvent = (event: MouseEvent) => {\n return (event.buttons & 1) === 1\n }\n\n useEffect(() => {\n const tableKeys = new Set<NodeKey>()\n return mergeRegister(\n editor.registerMutationListener(TableNode, (nodeMutations) => {\n for (const [nodeKey, mutation] of nodeMutations) {\n if (mutation === 'destroyed') {\n tableKeys.delete(nodeKey)\n } else {\n tableKeys.add(nodeKey)\n }\n }\n setHasTable(tableKeys.size > 0)\n }),\n editor.registerNodeTransform(TableNode, (tableNode) => {\n if (tableNode.getColWidths()) {\n return tableNode\n }\n\n const numColumns = tableNode.getColumnCount()\n const columnWidth = MIN_COLUMN_WIDTH\n\n tableNode.setColWidths(Array(numColumns).fill(columnWidth))\n return tableNode\n }),\n )\n }, [editor])\n\n useEffect(() => {\n if (!hasTable) {\n return\n }\n\n const onMouseMove = (event: MouseEvent) => {\n const target = event.target\n if (!isHTMLElement(target)) {\n return\n }\n\n if (draggingDirection) {\n updateMouseCurrentPos({\n x: event.clientX,\n y: event.clientY,\n })\n return\n }\n updateIsMouseDown(isMouseDownOnEvent(event))\n if (resizerRef.current && resizerRef.current.contains(target)) {\n return\n }\n\n if (targetRef.current !== target) {\n targetRef.current = target\n const cell = getDOMCellFromTarget(target)\n\n if (cell && activeCell !== cell) {\n editor.getEditorState().read(\n () => {\n const tableCellNode = $getNearestNodeFromDOMNode(cell.elem)\n\n if (!tableCellNode) {\n throw new Error('TableCellResizer: Table cell node not found.')\n }\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n const tableElement = getTableElement(\n tableNode,\n editor.getElementByKey(tableNode.getKey()),\n )\n if (!tableElement) {\n throw new Error('TableCellResizer: Table element not found.')\n }\n\n targetRef.current = target\n tableRectRef.current = tableElement.getBoundingClientRect()\n updateActiveCell(cell)\n },\n { editor },\n )\n } else if (cell == null) {\n resetState()\n }\n }\n }\n\n const onMouseDown = (event: MouseEvent) => {\n updateIsMouseDown(true)\n }\n\n const onMouseUp = (event: MouseEvent) => {\n updateIsMouseDown(false)\n }\n\n const removeRootListener = editor.registerRootListener((rootElement, prevRootElement) => {\n prevRootElement?.removeEventListener('mousemove', onMouseMove)\n prevRootElement?.removeEventListener('mousedown', onMouseDown)\n prevRootElement?.removeEventListener('mouseup', onMouseUp)\n rootElement?.addEventListener('mousemove', onMouseMove)\n rootElement?.addEventListener('mousedown', onMouseDown)\n rootElement?.addEventListener('mouseup', onMouseUp)\n })\n\n return () => {\n removeRootListener()\n }\n }, [activeCell, draggingDirection, editor, hasTable, resetState])\n\n const isHeightChanging = (direction: MouseDraggingDirection) => {\n if (direction === 'bottom') {\n return true\n }\n return false\n }\n\n const updateRowHeight = useCallback(\n (heightChange: number) => {\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n\n editor.update(\n () => {\n const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem)\n if (!$isTableCellNode(tableCellNode)) {\n throw new Error('TableCellResizer: Table cell node not found.')\n }\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n\n const baseRowIndex = $getTableRowIndexFromTableCellNode(tableCellNode)\n const tableRows = tableNode.getChildren()\n\n // Determine if this is a full row merge by checking colspan\n const isFullRowMerge = tableCellNode.getColSpan() === tableNode.getColumnCount()\n\n // For full row merges, apply to first row. For partial merges, apply to last row\n const tableRowIndex = isFullRowMerge\n ? baseRowIndex\n : baseRowIndex + tableCellNode.getRowSpan() - 1\n\n if (tableRowIndex >= tableRows.length || tableRowIndex < 0) {\n throw new Error('Expected table cell to be inside of table row.')\n }\n\n const tableRow = tableRows[tableRowIndex]\n\n if (!$isTableRowNode(tableRow)) {\n throw new Error('Expected table row')\n }\n\n let height = tableRow.getHeight()\n if (height === undefined) {\n const rowCells = tableRow.getChildren<TableCellNode>()\n height = Math.min(\n ...rowCells.map((cell) => getCellNodeHeight(cell, editor) ?? Infinity),\n )\n }\n\n const newHeight = Math.max(height + heightChange, MIN_ROW_HEIGHT)\n tableRow.setHeight(newHeight)\n },\n { tag: 'skip-scroll-into-view' },\n )\n },\n [activeCell, editor],\n )\n\n const getCellNodeHeight = (\n cell: TableCellNode,\n activeEditor: LexicalEditor,\n ): number | undefined => {\n const domCellNode = activeEditor.getElementByKey(cell.getKey())\n return domCellNode?.clientHeight\n }\n\n const getCellColumnIndex = (tableCellNode: TableCellNode, tableMap: TableMapType) => {\n let columnIndex: number | undefined\n tableMap.forEach((row) => {\n row.forEach((cell, columnIndexInner) => {\n if (cell.cell === tableCellNode) {\n columnIndex = columnIndexInner\n }\n })\n })\n return columnIndex\n }\n\n const updateColumnWidth = useCallback(\n (widthChange: number) => {\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n editor.update(\n () => {\n const tableCellNode = $getNearestNodeFromDOMNode(activeCell.elem)\n if (!$isTableCellNode(tableCellNode)) {\n throw new Error('TableCellResizer: Table cell node not found.')\n }\n\n const tableNode = $getTableNodeFromLexicalNodeOrThrow(tableCellNode)\n const [tableMap] = $computeTableMapSkipCellCheck(tableNode, null, null)\n const columnIndex = getCellColumnIndex(tableCellNode, tableMap)\n if (columnIndex === undefined) {\n throw new Error('TableCellResizer: Table column not found.')\n }\n\n const colWidths = tableNode.getColWidths()\n if (!colWidths) {\n return\n }\n const width = colWidths[columnIndex]\n if (width === undefined) {\n return\n }\n const newColWidths = [...colWidths]\n const newWidth = Math.max(width + widthChange, MIN_COLUMN_WIDTH)\n newColWidths[columnIndex] = newWidth\n tableNode.setColWidths(newColWidths)\n },\n { tag: 'skip-scroll-into-view' },\n )\n },\n [activeCell, editor],\n )\n\n const mouseUpHandler = useCallback(\n (direction: MouseDraggingDirection) => {\n const handler = (event: MouseEvent) => {\n event.preventDefault()\n event.stopPropagation()\n\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n\n if (mouseStartPosRef.current) {\n const { x, y } = mouseStartPosRef.current\n\n if (activeCell === null) {\n return\n }\n const zoom = calculateZoomLevel(event.target as Element)\n\n if (isHeightChanging(direction)) {\n const heightChange = (event.clientY - y) / zoom\n updateRowHeight(heightChange)\n } else {\n const widthChange = (event.clientX - x) / zoom\n updateColumnWidth(widthChange)\n }\n\n resetState()\n document.removeEventListener('mouseup', handler)\n }\n }\n return handler\n },\n [activeCell, resetState, updateColumnWidth, updateRowHeight],\n )\n\n const toggleResize = useCallback(\n (direction: MouseDraggingDirection): MouseEventHandler<HTMLDivElement> =>\n (event) => {\n event.preventDefault()\n event.stopPropagation()\n\n if (!activeCell) {\n throw new Error('TableCellResizer: Expected active cell.')\n }\n\n mouseStartPosRef.current = {\n x: event.clientX,\n y: event.clientY,\n }\n updateMouseCurrentPos(mouseStartPosRef.current)\n updateDraggingDirection(direction)\n\n document.addEventListener('mouseup', mouseUpHandler(direction))\n },\n [activeCell, mouseUpHandler],\n )\n\n const [resizerStyles, setResizerStyles] = useState<{\n bottom?: null | React.CSSProperties\n left?: null | React.CSSProperties\n right?: null | React.CSSProperties\n top?: null | React.CSSProperties\n }>({\n bottom: null,\n left: null,\n right: null,\n top: null,\n })\n\n useEffect(() => {\n if (activeCell) {\n const { height, left, top, width } = activeCell.elem.getBoundingClientRect()\n const zoom = calculateZoomLevel(activeCell.elem)\n const zoneWidth = 10 // Pixel width of the zone where you can drag the edge\n const styles = {\n bottom: {\n backgroundColor: 'none',\n cursor: 'row-resize',\n height: `${zoneWidth}px`,\n left: `${window.scrollX + left}px`,\n top: `${window.scrollY + top + height - zoneWidth / 2}px`,\n width: `${width}px`,\n },\n right: {\n backgroundColor: 'none',\n cursor: 'col-resize',\n height: `${height}px`,\n left: `${window.scrollX + left + width - zoneWidth / 2}px`,\n top: `${window.scrollY + top}px`,\n width: `${zoneWidth}px`,\n },\n }\n\n const tableRect = tableRectRef.current\n\n if (draggingDirection && mouseCurrentPos && tableRect) {\n if (isHeightChanging(draggingDirection)) {\n styles[draggingDirection].left = `${window.scrollX + tableRect.left}px`\n styles[draggingDirection].top = `${window.scrollY + mouseCurrentPos.y / zoom}px`\n styles[draggingDirection].height = '3px'\n styles[draggingDirection].width = `${tableRect.width}px`\n } else {\n styles[draggingDirection].top = `${window.scrollY + tableRect.top}px`\n styles[draggingDirection].left = `${window.scrollX + mouseCurrentPos.x / zoom}px`\n styles[draggingDirection].width = '3px'\n styles[draggingDirection].height = `${tableRect.height}px`\n }\n\n styles[draggingDirection].backgroundColor = '#adf'\n }\n\n setResizerStyles(styles)\n } else {\n setResizerStyles({\n bottom: null,\n left: null,\n right: null,\n top: null,\n })\n }\n }, [activeCell, draggingDirection, mouseCurrentPos])\n\n return (\n <div ref={resizerRef}>\n {activeCell != null && !isMouseDown && (\n <React.Fragment>\n <div\n className={`${editorConfig.editorConfig.lexical.theme.tableCellResizer} TableCellResizer__ui`}\n onMouseDown={toggleResize('right')}\n style={resizerStyles.right || undefined}\n />\n <div\n className={`${editorConfig.editorConfig.lexical.theme.tableCellResizer} TableCellResizer__ui`}\n onMouseDown={toggleResize('bottom')}\n style={resizerStyles.bottom || undefined}\n />\n </React.Fragment>\n )}\n </div>\n )\n}\n\nexport const TableCellResizerPlugin: PluginComponent = () => {\n const [editor] = useLexicalComposerContext()\n const isEditable = useLexicalEditable()\n\n return useMemo(\n () => (isEditable ? createPortal(<TableCellResizer editor={editor} />, document.body) : null),\n [editor, isEditable],\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAMA,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,kBAAkB,QAAQ;AACnC,SACEC,6BAA6B,EAC7BC,mCAAmC,EACnCC,kCAAkC,EAClCC,gBAAgB,EAChBC,eAAe,EACfC,oBAAoB,EACpBC,eAAe,EACfC,SAAS,QACJ;AACP,SAASC,kBAAkB,EAAEC,aAAa,QAAQ;AAClD,SAASC,0BAA0B,EAAEC,aAAa,QAAQ;AAC1D,YAAYC,KAAA,MAAW;AACvB,SAASC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAClE,SAASC,YAAY,QAAQ;AAK7B,SAASC,sBAAsB,QAAQ;AASvC,MAAMC,cAAA,GAAiB;AACvB,MAAMC,gBAAA,GAAmB;AAEzB,SAASC,iBAAiB;EAAEC;AAAM,CAA6B;EAC7D,MAAMC,SAAA,GAAYR,MAAA,CAA2B;EAC7C,MAAMS,UAAA,GAAaT,MAAA,CAA8B;EACjD,MAAMU,YAAA,GAAeV,MAAA,CAA0B;EAC/C,MAAM,CAACW,QAAA,EAAUC,WAAA,CAAY,GAAGX,QAAA,CAAS;EACzC,MAAMY,YAAA,GAAeV,sBAAA;EAErB,MAAMW,gBAAA,GAAmBd,MAAA,CAA6B;EACtD,MAAM,CAACe,eAAA,EAAiBC,qBAAA,CAAsB,GAAGf,QAAA,CAA+B;EAEhF,MAAM,CAACgB,UAAA,EAAYC,gBAAA,CAAiB,GAAGjB,QAAA,CAA8B;EACrE,MAAM,CAACkB,WAAA,EAAaC,iBAAA,CAAkB,GAAGnB,QAAA,CAAkB;EAC3D,MAAM,CAACoB,iBAAA,EAAmBC,uBAAA,CAAwB,GAAGrB,QAAA,CAAwC;EAE7F,MAAMsB,UAAA,GAAa1B,WAAA,CAAY;IAC7BqB,gBAAA,CAAiB;IACjBV,SAAA,CAAUgB,OAAO,GAAG;IACpBF,uBAAA,CAAwB;IACxBR,gBAAA,CAAiBU,OAAO,GAAG;IAC3Bd,YAAA,CAAac,OAAO,GAAG;EACzB,GAAG,EAAE;EAEL,MAAMC,kBAAA,GAAsBC,KAAA;IAC1B,OAAO,CAACA,KAAA,CAAMC,OAAO,GAAG,OAAO;EACjC;EAEA7B,SAAA,CAAU;IACR,MAAM8B,SAAA,GAAY,IAAIC,GAAA;IACtB,OAAOpC,aAAA,CACLc,MAAA,CAAOuB,wBAAwB,CAACvC,SAAA,EAAYwC,aAAA;MAC1C,KAAK,MAAM,CAACC,OAAA,EAASC,QAAA,CAAS,IAAIF,aAAA,EAAe;QAC/C,IAAIE,QAAA,KAAa,aAAa;UAC5BL,SAAA,CAAUM,MAAM,CAACF,OAAA;QACnB,OAAO;UACLJ,SAAA,CAAUO,GAAG,CAACH,OAAA;QAChB;MACF;MACApB,WAAA,CAAYgB,SAAA,CAAUQ,IAAI,GAAG;IAC/B,IACA7B,MAAA,CAAO8B,qBAAqB,CAAC9C,SAAA,EAAY+C,SAAA;MACvC,IAAIA,SAAA,CAAUC,YAAY,IAAI;QAC5B,OAAOD,SAAA;MACT;MAEA,MAAME,UAAA,GAAaF,SAAA,CAAUG,cAAc;MAC3C,MAAMC,WAAA,GAAcrC,gBAAA;MAEpBiC,SAAA,CAAUK,YAAY,CAACC,KAAA,CAAMJ,UAAA,EAAYK,IAAI,CAACH,WAAA;MAC9C,OAAOJ,SAAA;IACT;EAEJ,GAAG,CAAC/B,MAAA,CAAO;EAEXT,SAAA,CAAU;IACR,IAAI,CAACa,QAAA,EAAU;MACb;IACF;IAEA,MAAMmC,WAAA,GAAepB,OAAA;MACnB,MAAMqB,MAAA,GAASrB,OAAA,CAAMqB,MAAM;MAC3B,IAAI,CAACpD,aAAA,CAAcoD,MAAA,GAAS;QAC1B;MACF;MAEA,IAAI1B,iBAAA,EAAmB;QACrBL,qBAAA,CAAsB;UACpBgC,CAAA,EAAGtB,OAAA,CAAMuB,OAAO;UAChBC,CAAA,EAAGxB,OAAA,CAAMyB;QACX;QACA;MACF;MACA/B,iBAAA,CAAkBK,kBAAA,CAAmBC,OAAA;MACrC,IAAIjB,UAAA,CAAWe,OAAO,IAAIf,UAAA,CAAWe,OAAO,CAAC4B,QAAQ,CAACL,MAAA,GAAS;QAC7D;MACF;MAEA,IAAIvC,SAAA,CAAUgB,OAAO,KAAKuB,MAAA,EAAQ;QAChCvC,SAAA,CAAUgB,OAAO,GAAGuB,MAAA;QACpB,MAAMM,IAAA,GAAOhE,oBAAA,CAAqB0D,MAAA;QAElC,IAAIM,IAAA,IAAQpC,UAAA,KAAeoC,IAAA,EAAM;UAC/B9C,MAAA,CAAO+C,cAAc,GAAGC,IAAI,CAC1B;YACE,MAAMC,aAAA,GAAgB9D,0BAAA,CAA2B2D,IAAA,CAAKI,IAAI;YAE1D,IAAI,CAACD,aAAA,EAAe;cAClB,MAAM,IAAIE,KAAA,CAAM;YAClB;YAEA,MAAMpB,WAAA,GAAYrD,mCAAA,CAAoCuE,aAAA;YACtD,MAAMG,YAAA,GAAerE,eAAA,CACnBgD,WAAA,EACA/B,MAAA,CAAOqD,eAAe,CAACtB,WAAA,CAAUuB,MAAM;YAEzC,IAAI,CAACF,YAAA,EAAc;cACjB,MAAM,IAAID,KAAA,CAAM;YAClB;YAEAlD,SAAA,CAAUgB,OAAO,GAAGuB,MAAA;YACpBrC,YAAA,CAAac,OAAO,GAAGmC,YAAA,CAAaG,qBAAqB;YACzD5C,gBAAA,CAAiBmC,IAAA;UACnB,GACA;YAAE9C;UAAO;QAEb,OAAO,IAAI8C,IAAA,IAAQ,MAAM;UACvB9B,UAAA;QACF;MACF;IACF;IAEA,MAAMwC,WAAA,GAAerC,OAAA;MACnBN,iBAAA,CAAkB;IACpB;IAEA,MAAM4C,SAAA,GAAatC,OAAA;MACjBN,iBAAA,CAAkB;IACpB;IAEA,MAAM6C,kBAAA,GAAqB1D,MAAA,CAAO2D,oBAAoB,CAAC,CAACC,WAAA,EAAaC,eAAA;MACnEA,eAAA,EAAiBC,mBAAA,CAAoB,aAAavB,WAAA;MAClDsB,eAAA,EAAiBC,mBAAA,CAAoB,aAAaN,WAAA;MAClDK,eAAA,EAAiBC,mBAAA,CAAoB,WAAWL,SAAA;MAChDG,WAAA,EAAaG,gBAAA,CAAiB,aAAaxB,WAAA;MAC3CqB,WAAA,EAAaG,gBAAA,CAAiB,aAAaP,WAAA;MAC3CI,WAAA,EAAaG,gBAAA,CAAiB,WAAWN,SAAA;IAC3C;IAEA,OAAO;MACLC,kBAAA;IACF;EACF,GAAG,CAAChD,UAAA,EAAYI,iBAAA,EAAmBd,MAAA,EAAQI,QAAA,EAAUY,UAAA,CAAW;EAEhE,MAAMgD,gBAAA,GAAoBC,SAAA;IACxB,IAAIA,SAAA,KAAc,UAAU;MAC1B,OAAO;IACT;IACA,OAAO;EACT;EAEA,MAAMC,eAAA,GAAkB5E,WAAA,CACrB6E,YAAA;IACC,IAAI,CAACzD,UAAA,EAAY;MACf,MAAM,IAAIyC,KAAA,CAAM;IAClB;IAEAnD,MAAA,CAAOoE,MAAM,CACX;MACE,MAAMnB,eAAA,GAAgB9D,0BAAA,CAA2BuB,UAAA,CAAWwC,IAAI;MAChE,IAAI,CAACtE,gBAAA,CAAiBqE,eAAA,GAAgB;QACpC,MAAM,IAAIE,KAAA,CAAM;MAClB;MAEA,MAAMpB,WAAA,GAAYrD,mCAAA,CAAoCuE,eAAA;MAEtD,MAAMoB,YAAA,GAAe1F,kCAAA,CAAmCsE,eAAA;MACxD,MAAMqB,SAAA,GAAYvC,WAAA,CAAUwC,WAAW;MAEvC;MACA,MAAMC,cAAA,GAAiBvB,eAAA,CAAcwB,UAAU,OAAO1C,WAAA,CAAUG,cAAc;MAE9E;MACA,MAAMwC,aAAA,GAAgBF,cAAA,GAClBH,YAAA,GACAA,YAAA,GAAepB,eAAA,CAAc0B,UAAU,KAAK;MAEhD,IAAID,aAAA,IAAiBJ,SAAA,CAAUM,MAAM,IAAIF,aAAA,GAAgB,GAAG;QAC1D,MAAM,IAAIvB,KAAA,CAAM;MAClB;MAEA,MAAM0B,QAAA,GAAWP,SAAS,CAACI,aAAA,CAAc;MAEzC,IAAI,CAAC7F,eAAA,CAAgBgG,QAAA,GAAW;QAC9B,MAAM,IAAI1B,KAAA,CAAM;MAClB;MAEA,IAAI2B,MAAA,GAASD,QAAA,CAASE,SAAS;MAC/B,IAAID,MAAA,KAAWE,SAAA,EAAW;QACxB,MAAMC,QAAA,GAAWJ,QAAA,CAASN,WAAW;QACrCO,MAAA,GAASI,IAAA,CAAKC,GAAG,IACZF,QAAA,CAASG,GAAG,CAAEtC,MAAA,IAASuC,iBAAA,CAAkBvC,MAAA,EAAM9C,MAAA,KAAWsF,QAAA;MAEjE;MAEA,MAAMC,SAAA,GAAYL,IAAA,CAAKM,GAAG,CAACV,MAAA,GAASX,YAAA,EAActE,cAAA;MAClDgF,QAAA,CAASY,SAAS,CAACF,SAAA;IACrB,GACA;MAAEG,GAAA,EAAK;IAAwB;EAEnC,GACA,CAAChF,UAAA,EAAYV,MAAA,CAAO;EAGtB,MAAMqF,iBAAA,GAAoBA,CACxBvC,MAAA,EACA6C,YAAA;IAEA,MAAMC,WAAA,GAAcD,YAAA,CAAatC,eAAe,CAACP,MAAA,CAAKQ,MAAM;IAC5D,OAAOsC,WAAA,EAAaC,YAAA;EACtB;EAEA,MAAMC,kBAAA,GAAqBA,CAAC7C,eAAA,EAA8B8C,QAAA;IACxD,IAAIC,WAAA;IACJD,QAAA,CAASE,OAAO,CAAEC,GAAA;MAChBA,GAAA,CAAID,OAAO,CAAC,CAACnD,MAAA,EAAMqD,gBAAA;QACjB,IAAIrD,MAAA,CAAKA,IAAI,KAAKG,eAAA,EAAe;UAC/B+C,WAAA,GAAcG,gBAAA;QAChB;MACF;IACF;IACA,OAAOH,WAAA;EACT;EAEA,MAAMI,iBAAA,GAAoB9G,WAAA,CACvB+G,WAAA;IACC,IAAI,CAAC3F,UAAA,EAAY;MACf,MAAM,IAAIyC,KAAA,CAAM;IAClB;IACAnD,MAAA,CAAOoE,MAAM,CACX;MACE,MAAMnB,eAAA,GAAgB9D,0BAAA,CAA2BuB,UAAA,CAAWwC,IAAI;MAChE,IAAI,CAACtE,gBAAA,CAAiBqE,eAAA,GAAgB;QACpC,MAAM,IAAIE,KAAA,CAAM;MAClB;MAEA,MAAMpB,WAAA,GAAYrD,mCAAA,CAAoCuE,eAAA;MACtD,MAAM,CAAC8C,UAAA,CAAS,GAAGtH,6BAAA,CAA8BsD,WAAA,EAAW,MAAM;MAClE,MAAMiE,aAAA,GAAcF,kBAAA,CAAmB7C,eAAA,EAAe8C,UAAA;MACtD,IAAIC,aAAA,KAAgBhB,SAAA,EAAW;QAC7B,MAAM,IAAI7B,KAAA,CAAM;MAClB;MAEA,MAAMmD,SAAA,GAAYvE,WAAA,CAAUC,YAAY;MACxC,IAAI,CAACsE,SAAA,EAAW;QACd;MACF;MACA,MAAMC,KAAA,GAAQD,SAAS,CAACN,aAAA,CAAY;MACpC,IAAIO,KAAA,KAAUvB,SAAA,EAAW;QACvB;MACF;MACA,MAAMwB,YAAA,GAAe,C,GAAIF,SAAA,CAAU;MACnC,MAAMG,QAAA,GAAWvB,IAAA,CAAKM,GAAG,CAACe,KAAA,GAAQF,WAAA,EAAavG,gBAAA;MAC/C0G,YAAY,CAACR,aAAA,CAAY,GAAGS,QAAA;MAC5B1E,WAAA,CAAUK,YAAY,CAACoE,YAAA;IACzB,GACA;MAAEd,GAAA,EAAK;IAAwB;EAEnC,GACA,CAAChF,UAAA,EAAYV,MAAA,CAAO;EAGtB,MAAM0G,cAAA,GAAiBpH,WAAA,CACpB2E,WAAA;IACC,MAAM0C,OAAA,GAAWxF,OAAA;MACfA,OAAA,CAAMyF,cAAc;MACpBzF,OAAA,CAAM0F,eAAe;MAErB,IAAI,CAACnG,UAAA,EAAY;QACf,MAAM,IAAIyC,KAAA,CAAM;MAClB;MAEA,IAAI5C,gBAAA,CAAiBU,OAAO,EAAE;QAC5B,MAAM;UAAEwB,CAAC;UAAEE;QAAC,CAAE,GAAGpC,gBAAA,CAAiBU,OAAO;QAEzC,IAAIP,UAAA,KAAe,MAAM;UACvB;QACF;QACA,MAAMoG,IAAA,GAAO7H,kBAAA,CAAmBkC,OAAA,CAAMqB,MAAM;QAE5C,IAAIwB,gBAAA,CAAiBC,WAAA,GAAY;UAC/B,MAAME,cAAA,GAAe,CAAChD,OAAA,CAAMyB,OAAO,GAAGD,CAAA,IAAKmE,IAAA;UAC3C5C,eAAA,CAAgBC,cAAA;QAClB,OAAO;UACL,MAAMkC,aAAA,GAAc,CAAClF,OAAA,CAAMuB,OAAO,GAAGD,CAAA,IAAKqE,IAAA;UAC1CV,iBAAA,CAAkBC,aAAA;QACpB;QAEArF,UAAA;QACA+F,QAAA,CAASjD,mBAAmB,CAAC,WAAW6C,OAAA;MAC1C;IACF;IACA,OAAOA,OAAA;EACT,GACA,CAACjG,UAAA,EAAYM,UAAA,EAAYoF,iBAAA,EAAmBlC,eAAA,CAAgB;EAG9D,MAAM8C,YAAA,GAAe1H,WAAA,CAClB2E,WAAA,IACE9C,OAAA;IACCA,OAAA,CAAMyF,cAAc;IACpBzF,OAAA,CAAM0F,eAAe;IAErB,IAAI,CAACnG,UAAA,EAAY;MACf,MAAM,IAAIyC,KAAA,CAAM;IAClB;IAEA5C,gBAAA,CAAiBU,OAAO,GAAG;MACzBwB,CAAA,EAAGtB,OAAA,CAAMuB,OAAO;MAChBC,CAAA,EAAGxB,OAAA,CAAMyB;IACX;IACAnC,qBAAA,CAAsBF,gBAAA,CAAiBU,OAAO;IAC9CF,uBAAA,CAAwBkD,WAAA;IAExB8C,QAAA,CAAShD,gBAAgB,CAAC,WAAW2C,cAAA,CAAezC,WAAA;EACtD,GACF,CAACvD,UAAA,EAAYgG,cAAA,CAAe;EAG9B,MAAM,CAACO,aAAA,EAAeC,gBAAA,CAAiB,GAAGxH,QAAA,CAKvC;IACDyH,MAAA,EAAQ;IACRC,IAAA,EAAM;IACNC,KAAA,EAAO;IACPC,GAAA,EAAK;EACP;EAEA/H,SAAA,CAAU;IACR,IAAImB,UAAA,EAAY;MACd,MAAM;QAAEoE,MAAM,EAANA,QAAM;QAAEsC,IAAI;QAAEE,GAAG;QAAEf,KAAK,EAALA;MAAK,CAAE,GAAG7F,UAAA,CAAWwC,IAAI,CAACK,qBAAqB;MAC1E,MAAMuD,MAAA,GAAO7H,kBAAA,CAAmByB,UAAA,CAAWwC,IAAI;MAC/C,MAAMqE,SAAA,GAAY,GAAG;MAAA;MACrB,MAAMC,MAAA,GAAS;QACbL,MAAA,EAAQ;UACNM,eAAA,EAAiB;UACjBC,MAAA,EAAQ;UACR5C,MAAA,EAAQ,GAAGyC,SAAA,IAAa;UACxBH,IAAA,EAAM,GAAGO,MAAA,CAAOC,OAAO,GAAGR,IAAA,IAAQ;UAClCE,GAAA,EAAK,GAAGK,MAAA,CAAOE,OAAO,GAAGP,GAAA,GAAMxC,QAAA,GAASyC,SAAA,GAAY,KAAK;UACzDhB,KAAA,EAAO,GAAGA,OAAA;QACZ;QACAc,KAAA,EAAO;UACLI,eAAA,EAAiB;UACjBC,MAAA,EAAQ;UACR5C,MAAA,EAAQ,GAAGA,QAAA,IAAU;UACrBsC,IAAA,EAAM,GAAGO,MAAA,CAAOC,OAAO,GAAGR,IAAA,GAAOb,OAAA,GAAQgB,SAAA,GAAY,KAAK;UAC1DD,GAAA,EAAK,GAAGK,MAAA,CAAOE,OAAO,GAAGP,GAAA,IAAO;UAChCf,KAAA,EAAO,GAAGgB,SAAA;QACZ;MACF;MAEA,MAAMO,SAAA,GAAY3H,YAAA,CAAac,OAAO;MAEtC,IAAIH,iBAAA,IAAqBN,eAAA,IAAmBsH,SAAA,EAAW;QACrD,IAAI9D,gBAAA,CAAiBlD,iBAAA,GAAoB;UACvC0G,MAAM,CAAC1G,iBAAA,CAAkB,CAACsG,IAAI,GAAG,GAAGO,MAAA,CAAOC,OAAO,GAAGE,SAAA,CAAUV,IAAI,IAAI;UACvEI,MAAM,CAAC1G,iBAAA,CAAkB,CAACwG,GAAG,GAAG,GAAGK,MAAA,CAAOE,OAAO,GAAGrH,eAAA,CAAgBmC,CAAC,GAAGmE,MAAA,IAAQ;UAChFU,MAAM,CAAC1G,iBAAA,CAAkB,CAACgE,MAAM,GAAG;UACnC0C,MAAM,CAAC1G,iBAAA,CAAkB,CAACyF,KAAK,GAAG,GAAGuB,SAAA,CAAUvB,KAAK,IAAI;QAC1D,OAAO;UACLiB,MAAM,CAAC1G,iBAAA,CAAkB,CAACwG,GAAG,GAAG,GAAGK,MAAA,CAAOE,OAAO,GAAGC,SAAA,CAAUR,GAAG,IAAI;UACrEE,MAAM,CAAC1G,iBAAA,CAAkB,CAACsG,IAAI,GAAG,GAAGO,MAAA,CAAOC,OAAO,GAAGpH,eAAA,CAAgBiC,CAAC,GAAGqE,MAAA,IAAQ;UACjFU,MAAM,CAAC1G,iBAAA,CAAkB,CAACyF,KAAK,GAAG;UAClCiB,MAAM,CAAC1G,iBAAA,CAAkB,CAACgE,MAAM,GAAG,GAAGgD,SAAA,CAAUhD,MAAM,IAAI;QAC5D;QAEA0C,MAAM,CAAC1G,iBAAA,CAAkB,CAAC2G,eAAe,GAAG;MAC9C;MAEAP,gBAAA,CAAiBM,MAAA;IACnB,OAAO;MACLN,gBAAA,CAAiB;QACfC,MAAA,EAAQ;QACRC,IAAA,EAAM;QACNC,KAAA,EAAO;QACPC,GAAA,EAAK;MACP;IACF;EACF,GAAG,CAAC5G,UAAA,EAAYI,iBAAA,EAAmBN,eAAA,CAAgB;EAEnD,oBACEuH,IAAA,CAAC;IAAIC,GAAA,EAAK9H,UAAA;cACPQ,UAAA,IAAc,QAAQ,CAACE,WAAA,iBACtBqH,KAAA,CAAC5I,KAAA,CAAM6I,QAAQ;8BACbH,IAAA,CAAC;QACCI,SAAA,EAAW,GAAG7H,YAAA,CAAaA,YAAY,CAAC8H,OAAO,CAACC,KAAK,CAACC,gBAAgB,uBAAuB;QAC7F9E,WAAA,EAAawD,YAAA,CAAa;QAC1BuB,KAAA,EAAOtB,aAAA,CAAcI,KAAK,IAAIrC;uBAEhC+C,IAAA,CAAC;QACCI,SAAA,EAAW,GAAG7H,YAAA,CAAaA,YAAY,CAAC8H,OAAO,CAACC,KAAK,CAACC,gBAAgB,uBAAuB;QAC7F9E,WAAA,EAAawD,YAAA,CAAa;QAC1BuB,KAAA,EAAOtB,aAAA,CAAcE,MAAM,IAAInC;;;;AAM3C;AAEA,OAAO,MAAMwD,sBAAA,GAA0CA,CAAA;EAAA,MAAAC,CAAA,GAAAnK,EAAA;EACrD,OAAA0B,MAAA,IAAiBzB,yBAAA;EACjB,MAAAmK,UAAA,GAAmBlK,kBAAA;EAAA,IAAAmK,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAH,CAAA,QAAAzI,MAAA,IAAAyI,CAAA,QAAAC,UAAA;IAGVE,EAAA,GAAAF,UAAA,GAAa/I,YAAA,CAAaoI,IAAA,CAAAhI,gBAAA;MAAAC;IAAA,C,gBAAmD,QAAI;IAAAyI,CAAA,MAAAzI,MAAA;IAAAyI,CAAA,MAAAC,UAAA;IAAAD,CAAA,MAAAG,EAAA;EAAA;IAAAA,EAAA,GAAAH,CAAA;EAAA;EAAAE,EAAA,GAAjFC,EAAiF;EAAA,OADnFD,EAEe;AAAA,CAExB","ignoreList":[]}
|
|
@@ -8,7 +8,7 @@ import { INSERT_TABLE_COMMAND, TableCellNode, TableNode, TableRowNode } from '@l
|
|
|
8
8
|
import { mergeRegister } from '@lexical/utils';
|
|
9
9
|
import { formatDrawerSlug, useEditDepth } from '@payloadcms/ui';
|
|
10
10
|
import { $getSelection, $isRangeSelection, COMMAND_PRIORITY_EDITOR, createCommand } from 'lexical';
|
|
11
|
-
import { createContext,
|
|
11
|
+
import { createContext, use, useEffect, useMemo, useState } from 'react';
|
|
12
12
|
import * as React from 'react';
|
|
13
13
|
import { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js';
|
|
14
14
|
import { FieldsDrawer } from '../../../../../utilities/fieldsDrawer/Drawer.js';
|
|
@@ -28,7 +28,7 @@ export function TableContext({
|
|
|
28
28
|
cellEditorConfig: null,
|
|
29
29
|
cellEditorPlugins: null
|
|
30
30
|
});
|
|
31
|
-
return /*#__PURE__*/_jsx(CellContext
|
|
31
|
+
return /*#__PURE__*/_jsx(CellContext, {
|
|
32
32
|
value: useMemo(() => ({
|
|
33
33
|
cellEditorConfig: contextValue.cellEditorConfig,
|
|
34
34
|
cellEditorPlugins: contextValue.cellEditorPlugins,
|
|
@@ -45,7 +45,7 @@ export function TableContext({
|
|
|
45
45
|
export const TablePlugin = () => {
|
|
46
46
|
const $ = _c(16);
|
|
47
47
|
const [editor] = useLexicalComposerContext();
|
|
48
|
-
const cellContext =
|
|
48
|
+
const cellContext = use(CellContext);
|
|
49
49
|
const editDepth = useEditDepth();
|
|
50
50
|
const {
|
|
51
51
|
fieldProps: t0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","TablePlugin","LexicalReactTablePlugin","INSERT_TABLE_COMMAND","TableCellNode","TableNode","TableRowNode","mergeRegister","formatDrawerSlug","useEditDepth","$getSelection","$isRangeSelection","COMMAND_PRIORITY_EDITOR","createCommand","createContext","
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useLexicalComposerContext","TablePlugin","LexicalReactTablePlugin","INSERT_TABLE_COMMAND","TableCellNode","TableNode","TableRowNode","mergeRegister","formatDrawerSlug","useEditDepth","$getSelection","$isRangeSelection","COMMAND_PRIORITY_EDITOR","createCommand","createContext","use","useEffect","useMemo","useState","React","useEditorConfigContext","FieldsDrawer","useLexicalDrawer","OPEN_TABLE_DRAWER_COMMAND","CellContext","cellEditorConfig","cellEditorPlugins","set","TableContext","children","contextValue","setContextValue","_jsx","value","$","editor","cellContext","editDepth","fieldProps","t0","uuid","schemaPath","t1","t2","slug","depth","drawerSlug","toggleDrawer","t3","hasNodes","Error","registerCommand","rangeSelection","getEditorState","read","selection","t4","t5","_fields","data","columns","rows","dispatchCommand","String","t6","_jsxs","Fragment","drawerTitle","featureKey","handleDrawerSubmit","schemaPathSuffix","hasCellBackgroundColor","hasCellMerge","hasHorizontalScroll"],"sources":["../../../../../../src/features/experimental_table/client/plugins/TablePlugin/index.tsx"],"sourcesContent":["'use client'\n\nimport type {\n EditorThemeClasses,\n Klass,\n LexicalCommand,\n LexicalEditor,\n LexicalNode,\n RangeSelection,\n} from 'lexical'\nimport type { JSX } from 'react'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { TablePlugin as LexicalReactTablePlugin } from '@lexical/react/LexicalTablePlugin'\nimport { INSERT_TABLE_COMMAND, TableCellNode, TableNode, TableRowNode } from '@lexical/table'\nimport { mergeRegister } from '@lexical/utils'\nimport { formatDrawerSlug, useEditDepth } from '@payloadcms/ui'\nimport { $getSelection, $isRangeSelection, COMMAND_PRIORITY_EDITOR, createCommand } from 'lexical'\nimport { createContext, use, useEffect, useMemo, useState } from 'react'\nimport * as React from 'react'\n\nimport type { PluginComponent } from '../../../../typesClient.js'\n\nimport { useEditorConfigContext } from '../../../../../lexical/config/client/EditorConfigProvider.js'\nimport { FieldsDrawer } from '../../../../../utilities/fieldsDrawer/Drawer.js'\nimport { useLexicalDrawer } from '../../../../../utilities/fieldsDrawer/useLexicalDrawer.js'\nimport './index.scss'\n\nexport type CellContextShape = {\n cellEditorConfig: CellEditorConfig | null\n cellEditorPlugins: Array<JSX.Element> | JSX.Element | null\n set: (\n cellEditorConfig: CellEditorConfig | null,\n cellEditorPlugins: Array<JSX.Element> | JSX.Element | null,\n ) => void\n}\n\nexport type CellEditorConfig = Readonly<{\n namespace: string\n nodes?: ReadonlyArray<Klass<LexicalNode>>\n onError: (error: Error, editor: LexicalEditor) => void\n readOnly?: boolean\n theme?: EditorThemeClasses\n}>\n\nexport const OPEN_TABLE_DRAWER_COMMAND: LexicalCommand<{}> = createCommand(\n 'OPEN_EMBED_DRAWER_COMMAND',\n)\n\nexport const CellContext = createContext<CellContextShape>({\n cellEditorConfig: null,\n cellEditorPlugins: null,\n set: () => {\n // Empty\n },\n})\n\nexport function TableContext({ children }: { children: JSX.Element }) {\n const [contextValue, setContextValue] = useState<{\n cellEditorConfig: CellEditorConfig | null\n cellEditorPlugins: Array<JSX.Element> | JSX.Element | null\n }>({\n cellEditorConfig: null,\n cellEditorPlugins: null,\n })\n return (\n <CellContext\n value={useMemo(\n () => ({\n cellEditorConfig: contextValue.cellEditorConfig,\n cellEditorPlugins: contextValue.cellEditorPlugins,\n set: (cellEditorConfig, cellEditorPlugins) => {\n setContextValue({ cellEditorConfig, cellEditorPlugins })\n },\n }),\n [contextValue.cellEditorConfig, contextValue.cellEditorPlugins],\n )}\n >\n {children}\n </CellContext>\n )\n}\n\nexport const TablePlugin: PluginComponent = () => {\n const [editor] = useLexicalComposerContext()\n const cellContext = use(CellContext)\n const editDepth = useEditDepth()\n const {\n fieldProps: { schemaPath },\n uuid,\n } = useEditorConfigContext()\n\n const drawerSlug = formatDrawerSlug({\n slug: 'lexical-table-create-' + uuid,\n depth: editDepth,\n })\n const { toggleDrawer } = useLexicalDrawer(drawerSlug, true)\n\n useEffect(() => {\n if (!editor.hasNodes([TableNode, TableRowNode, TableCellNode])) {\n throw new Error(\n 'TablePlugin: TableNode, TableRowNode, or TableCellNode is not registered on editor',\n )\n }\n\n return mergeRegister(\n editor.registerCommand(\n OPEN_TABLE_DRAWER_COMMAND,\n () => {\n let rangeSelection: null | RangeSelection = null\n\n editor.getEditorState().read(() => {\n const selection = $getSelection()\n if ($isRangeSelection(selection)) {\n rangeSelection = selection\n }\n })\n\n if (rangeSelection) {\n toggleDrawer()\n }\n return true\n },\n COMMAND_PRIORITY_EDITOR,\n ),\n )\n }, [cellContext, editor, toggleDrawer])\n\n return (\n <React.Fragment>\n <FieldsDrawer\n drawerSlug={drawerSlug}\n drawerTitle=\"Create Table\"\n featureKey=\"experimental_table\"\n handleDrawerSubmit={(_fields, data) => {\n if (!data.columns || !data.rows) {\n return\n }\n\n editor.dispatchCommand(INSERT_TABLE_COMMAND, {\n columns: String(data.columns),\n rows: String(data.rows),\n })\n }}\n schemaPath={schemaPath}\n schemaPathSuffix=\"fields\"\n />\n <LexicalReactTablePlugin\n hasCellBackgroundColor={false}\n hasCellMerge\n hasHorizontalScroll={true}\n />\n </React.Fragment>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { TableCellNode, TableNode, TableRowNode } from '@lexical/table';
|
|
2
2
|
import { sanitizeFields } from 'payload';
|
|
3
3
|
import { createServerFeature } from '../../../utilities/createServerFeature.js';
|
|
4
|
-
import { convertLexicalNodesToHTML } from '../../converters/
|
|
4
|
+
import { convertLexicalNodesToHTML } from '../../converters/lexicalToHtml_deprecated/converter/index.js';
|
|
5
5
|
import { createNode } from '../../typeUtilities.js';
|
|
6
6
|
import { TableMarkdownTransformer } from '../markdownTransformer.js';
|
|
7
7
|
const fields = [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["TableCellNode","TableNode","TableRowNode","sanitizeFields","createServerFeature","convertLexicalNodesToHTML","createNode","TableMarkdownTransformer","fields","name","type","defaultValue","required","EXPERIMENTAL_TableFeature","feature","config","isRoot","parentIsLocalized","validRelationships","collections","map","c","slug","sanitizedFields","requireFieldLevelRichTextEditor","ClientFeature","generateSchemaMap","schemaMap","Map","set","markdownTransformers","nodes","converters","html","converter","currentDepth","depth","draft","node","overrideAccess","parent","req","showHiddenFields","childrenText","lexicalNodes","children","nodeTypes","getType","tagName","headerState","headerStateClass","backgroundColor","colSpan","rowSpan","key"],"sources":["../../../../src/features/experimental_table/server/index.ts"],"sourcesContent":["import type {\n SerializedTableCellNode as _SerializedTableCellNode,\n SerializedTableNode as _SerializedTableNode,\n SerializedTableRowNode as _SerializedTableRowNode,\n} from '@lexical/table'\nimport type { Spread } from 'lexical'\nimport type { Config, Field, FieldSchemaMap } from 'payload'\n\nimport { TableCellNode, TableNode, TableRowNode } from '@lexical/table'\nimport { sanitizeFields } from 'payload'\n\nimport { createServerFeature } from '../../../utilities/createServerFeature.js'\nimport { convertLexicalNodesToHTML } from '../../converters/
|
|
1
|
+
{"version":3,"file":"index.js","names":["TableCellNode","TableNode","TableRowNode","sanitizeFields","createServerFeature","convertLexicalNodesToHTML","createNode","TableMarkdownTransformer","fields","name","type","defaultValue","required","EXPERIMENTAL_TableFeature","feature","config","isRoot","parentIsLocalized","validRelationships","collections","map","c","slug","sanitizedFields","requireFieldLevelRichTextEditor","ClientFeature","generateSchemaMap","schemaMap","Map","set","markdownTransformers","nodes","converters","html","converter","currentDepth","depth","draft","node","overrideAccess","parent","req","showHiddenFields","childrenText","lexicalNodes","children","nodeTypes","getType","tagName","headerState","headerStateClass","backgroundColor","colSpan","rowSpan","key"],"sources":["../../../../src/features/experimental_table/server/index.ts"],"sourcesContent":["import type {\n SerializedTableCellNode as _SerializedTableCellNode,\n SerializedTableNode as _SerializedTableNode,\n SerializedTableRowNode as _SerializedTableRowNode,\n} from '@lexical/table'\nimport type { Spread } from 'lexical'\nimport type { Config, Field, FieldSchemaMap } from 'payload'\n\nimport { TableCellNode, TableNode, TableRowNode } from '@lexical/table'\nimport { sanitizeFields } from 'payload'\n\nimport { createServerFeature } from '../../../utilities/createServerFeature.js'\nimport { convertLexicalNodesToHTML } from '../../converters/lexicalToHtml_deprecated/converter/index.js'\nimport { createNode } from '../../typeUtilities.js'\nimport { TableMarkdownTransformer } from '../markdownTransformer.js'\n\nconst fields: Field[] = [\n {\n name: 'rows',\n type: 'number',\n defaultValue: 5,\n required: true,\n },\n {\n name: 'columns',\n type: 'number',\n defaultValue: 5,\n required: true,\n },\n]\n\nexport type SerializedTableCellNode = Spread<\n {\n type: 'tablecell'\n },\n _SerializedTableCellNode\n>\n\nexport type SerializedTableNode = Spread<\n {\n type: 'table'\n },\n _SerializedTableNode\n>\n\nexport type SerializedTableRowNode = Spread<\n {\n type: 'tablerow'\n },\n _SerializedTableRowNode\n>\nexport const EXPERIMENTAL_TableFeature = createServerFeature({\n feature: async ({ config, isRoot, parentIsLocalized }) => {\n const validRelationships = config.collections.map((c) => c.slug) || []\n\n const sanitizedFields = await sanitizeFields({\n config: config as unknown as Config,\n fields,\n parentIsLocalized,\n requireFieldLevelRichTextEditor: isRoot,\n validRelationships,\n })\n return {\n ClientFeature: '@payloadcms/richtext-lexical/client#TableFeatureClient',\n generateSchemaMap: () => {\n const schemaMap: FieldSchemaMap = new Map()\n\n schemaMap.set('fields', {\n fields: sanitizedFields,\n })\n\n return schemaMap\n },\n markdownTransformers: [TableMarkdownTransformer],\n nodes: [\n createNode({\n converters: {\n html: {\n converter: async ({\n converters,\n currentDepth,\n depth,\n draft,\n node,\n overrideAccess,\n parent,\n req,\n showHiddenFields,\n }) => {\n const childrenText = await convertLexicalNodesToHTML({\n converters,\n currentDepth,\n depth,\n draft,\n lexicalNodes: node.children,\n overrideAccess,\n parent: {\n ...node,\n parent,\n },\n req,\n showHiddenFields,\n })\n return `<div class=\"lexical-table-container\"><table class=\"lexical-table\" style=\"border-collapse: collapse;\">${childrenText}</table></div>`\n },\n nodeTypes: [TableNode.getType()],\n },\n },\n node: TableNode,\n }),\n createNode({\n converters: {\n html: {\n converter: async ({\n converters,\n currentDepth,\n depth,\n draft,\n node,\n overrideAccess,\n parent,\n req,\n showHiddenFields,\n }) => {\n const childrenText = await convertLexicalNodesToHTML({\n converters,\n currentDepth,\n depth,\n draft,\n lexicalNodes: node.children,\n overrideAccess,\n parent: {\n ...node,\n parent,\n },\n req,\n showHiddenFields,\n })\n\n const tagName = node.headerState > 0 ? 'th' : 'td'\n const headerStateClass = `lexical-table-cell-header-${node.headerState}`\n const backgroundColor = node.backgroundColor\n ? `background-color: ${node.backgroundColor};`\n : ''\n const colSpan = node.colSpan && node.colSpan > 1 ? `colspan=\"${node.colSpan}\"` : ''\n const rowSpan = node.rowSpan && node.rowSpan > 1 ? `rowspan=\"${node.rowSpan}\"` : ''\n\n return `<${tagName} class=\"lexical-table-cell ${headerStateClass}\" style=\"border: 1px solid #ccc; padding: 8px; ${backgroundColor}\" ${colSpan} ${rowSpan}>${childrenText}</${tagName}>`\n },\n nodeTypes: [TableCellNode.getType()],\n },\n },\n node: TableCellNode,\n }),\n createNode({\n converters: {\n html: {\n converter: async ({\n converters,\n currentDepth,\n depth,\n draft,\n node,\n overrideAccess,\n parent,\n req,\n showHiddenFields,\n }) => {\n const childrenText = await convertLexicalNodesToHTML({\n converters,\n currentDepth,\n depth,\n draft,\n lexicalNodes: node.children,\n overrideAccess,\n parent: {\n ...node,\n parent,\n },\n req,\n showHiddenFields,\n })\n return `<tr class=\"lexical-table-row\">${childrenText}</tr>`\n },\n nodeTypes: [TableRowNode.getType()],\n },\n },\n node: TableRowNode,\n }),\n ],\n }\n },\n key: 'experimental_table',\n})\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { HeadingNode } from '@lexical/rich-text';
|
|
2
2
|
import { createServerFeature } from '../../../utilities/createServerFeature.js';
|
|
3
|
-
import { convertLexicalNodesToHTML } from '../../converters/
|
|
3
|
+
import { convertLexicalNodesToHTML } from '../../converters/lexicalToHtml_deprecated/converter/index.js';
|
|
4
4
|
import { createNode } from '../../typeUtilities.js';
|
|
5
5
|
import { MarkdownTransformer } from '../markdownTransformer.js';
|
|
6
6
|
import { i18n } from './i18n.js';
|