@payloadcms/richtext-lexical 3.29.0-canary.5 → 3.29.0-canary.7
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/bundled.css +1 -1
- 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/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/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/client/index.d.ts +2 -1
- package/dist/features/indent/client/index.d.ts.map +1 -1
- package/dist/features/indent/client/index.js +41 -19
- package/dist/features/indent/client/index.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/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/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-IUDF2DGI.js +0 -2
- package/dist/exports/client/Field-IUDF2DGI.js.map +0 -7
- 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/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","$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":"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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';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["HeadingNode","createServerFeature","convertLexicalNodesToHTML","createNode","MarkdownTransformer","i18n","HeadingFeature","feature","props","enabledHeadingSizes","ClientFeature","clientFeatureProps","markdownTransformers","nodes","converters","html","converter","currentDepth","depth","draft","node","overrideAccess","parent","req","showHiddenFields","childrenText","lexicalNodes","children","style","format","indent","filter","Boolean","join","tag","nodeTypes","getType","sanitizedServerFeatureProps","key"],"sources":["../../../../src/features/heading/server/index.ts"],"sourcesContent":["import type {\n SerializedHeadingNode as _SerializedHeadingNode,\n HeadingTagType,\n} from '@lexical/rich-text'\nimport type { Spread } from 'lexical'\n\nimport { HeadingNode } from '@lexical/rich-text'\n\nimport { createServerFeature } from '../../../utilities/createServerFeature.js'\nimport { convertLexicalNodesToHTML } from '../../converters/
|
|
1
|
+
{"version":3,"file":"index.js","names":["HeadingNode","createServerFeature","convertLexicalNodesToHTML","createNode","MarkdownTransformer","i18n","HeadingFeature","feature","props","enabledHeadingSizes","ClientFeature","clientFeatureProps","markdownTransformers","nodes","converters","html","converter","currentDepth","depth","draft","node","overrideAccess","parent","req","showHiddenFields","childrenText","lexicalNodes","children","style","format","indent","filter","Boolean","join","tag","nodeTypes","getType","sanitizedServerFeatureProps","key"],"sources":["../../../../src/features/heading/server/index.ts"],"sourcesContent":["import type {\n SerializedHeadingNode as _SerializedHeadingNode,\n HeadingTagType,\n} from '@lexical/rich-text'\nimport type { Spread } from 'lexical'\n\nimport { HeadingNode } from '@lexical/rich-text'\n\nimport { createServerFeature } from '../../../utilities/createServerFeature.js'\nimport { convertLexicalNodesToHTML } from '../../converters/lexicalToHtml_deprecated/converter/index.js'\nimport { createNode } from '../../typeUtilities.js'\nimport { MarkdownTransformer } from '../markdownTransformer.js'\nimport { i18n } from './i18n.js'\n\nexport type SerializedHeadingNode = Spread<\n {\n type: 'heading'\n },\n _SerializedHeadingNode\n>\n\nexport type HeadingFeatureProps = {\n enabledHeadingSizes?: HeadingTagType[]\n}\n\nexport const HeadingFeature = createServerFeature<\n HeadingFeatureProps,\n HeadingFeatureProps,\n HeadingFeatureProps\n>({\n feature: ({ props }) => {\n if (!props) {\n props = {}\n }\n\n const { enabledHeadingSizes = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'] } = props\n\n return {\n ClientFeature: '@payloadcms/richtext-lexical/client#HeadingFeatureClient',\n clientFeatureProps: props,\n i18n,\n markdownTransformers: [MarkdownTransformer(enabledHeadingSizes)],\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 const style = [\n node.format ? `text-align: ${node.format};` : '',\n node.indent > 0 ? `padding-inline-start: ${node.indent * 40}px;` : '',\n ]\n .filter(Boolean)\n .join(' ')\n return `<${node?.tag}${style ? ` style='${style}'` : ''}>${childrenText}</${node?.tag}>`\n },\n nodeTypes: [HeadingNode.getType()],\n },\n },\n node: HeadingNode,\n }),\n ],\n sanitizedServerFeatureProps: props,\n }\n },\n key: 'heading',\n})\n"],"mappings":"AAMA,SAASA,WAAW,QAAQ;AAE5B,SAASC,mBAAmB,QAAQ;AACpC,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,UAAU,QAAQ;AAC3B,SAASC,mBAAmB,QAAQ;AACpC,SAASC,IAAI,QAAQ;AAarB,OAAO,MAAMC,cAAA,GAAiBL,mBAAA,CAI5B;EACAM,OAAA,EAASA,CAAC;IAAEC;EAAK,CAAE;IACjB,IAAI,CAACA,KAAA,EAAO;MACVA,KAAA,GAAQ,CAAC;IACX;IAEA,MAAM;MAAEC,mBAAA,GAAsB,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM;IAAK,CAAE,GAAGD,KAAA;IAEvE,OAAO;MACLE,aAAA,EAAe;MACfC,kBAAA,EAAoBH,KAAA;MACpBH,IAAA;MACAO,oBAAA,EAAsB,CAACR,mBAAA,CAAoBK,mBAAA,EAAqB;MAChEI,KAAA,EAAO,CACLV,UAAA,CAAW;QACTW,UAAA,EAAY;UACVC,IAAA,EAAM;YACJC,SAAA,EAAW,MAAAA,CAAO;cAChBF,UAAU;cACVG,YAAY;cACZC,KAAK;cACLC,KAAK;cACLC,IAAI;cACJC,cAAc;cACdC,MAAM;cACNC,GAAG;cACHC;YAAgB,CACjB;cACC,MAAMC,YAAA,GAAe,MAAMvB,yBAAA,CAA0B;gBACnDY,UAAA;gBACAG,YAAA;gBACAC,KAAA;gBACAC,KAAA;gBACAO,YAAA,EAAcN,IAAA,CAAKO,QAAQ;gBAC3BN,cAAA;gBACAC,MAAA,EAAQ;kBACN,GAAGF,IAAI;kBACPE;gBACF;gBACAC,GAAA;gBACAC;cACF;cACA,MAAMI,KAAA,GAAQ,CACZR,IAAA,CAAKS,MAAM,GAAG,eAAeT,IAAA,CAAKS,MAAM,GAAG,GAAG,IAC9CT,IAAA,CAAKU,MAAM,GAAG,IAAI,yBAAyBV,IAAA,CAAKU,MAAM,GAAG,OAAO,GAAG,GACpE,CACEC,MAAM,CAACC,OAAA,EACPC,IAAI,CAAC;cACR,OAAO,IAAIb,IAAA,EAAMc,GAAA,GAAMN,KAAA,GAAQ,WAAWA,KAAA,GAAQ,GAAG,MAAMH,YAAA,KAAiBL,IAAA,EAAMc,GAAA,GAAM;YAC1F;YACAC,SAAA,EAAW,CAACnC,WAAA,CAAYoC,OAAO;UACjC;QACF;QACAhB,IAAA,EAAMpB;MACR,GACD;MACDqC,2BAAA,EAA6B7B;IAC/B;EACF;EACA8B,GAAA,EAAK;AACP","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndentPlugin.d.ts","sourceRoot":"","sources":["../../../../src/features/indent/client/IndentPlugin.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IndentPlugin.d.ts","sourceRoot":"","sources":["../../../../src/features/indent/client/IndentPlugin.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAE5D,eAAO,MAAM,YAAY,EAAE,eAAe,CAAC,kBAAkB,CAiD5D,CAAA"}
|
|
@@ -2,26 +2,46 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext';
|
|
3
3
|
import { TabIndentationPlugin } from '@lexical/react/LexicalTabIndentationPlugin';
|
|
4
4
|
import { $findMatchingParent, mergeRegister } from '@lexical/utils';
|
|
5
|
-
import { $getSelection, $isElementNode, $isRangeSelection, COMMAND_PRIORITY_LOW, INDENT_CONTENT_COMMAND } from 'lexical';
|
|
5
|
+
import { $getSelection, $isElementNode, $isRangeSelection, COMMAND_PRIORITY_LOW, INDENT_CONTENT_COMMAND, KEY_TAB_COMMAND, OUTDENT_CONTENT_COMMAND, TabNode } from 'lexical';
|
|
6
6
|
import { useEffect } from 'react';
|
|
7
|
-
export const IndentPlugin =
|
|
7
|
+
export const IndentPlugin = ({
|
|
8
|
+
clientProps
|
|
9
|
+
}) => {
|
|
8
10
|
const [editor] = useLexicalComposerContext();
|
|
9
11
|
const {
|
|
10
|
-
disabledNodes
|
|
11
|
-
|
|
12
|
+
disabledNodes,
|
|
13
|
+
disableTabNode
|
|
14
|
+
} = clientProps;
|
|
12
15
|
useEffect(() => {
|
|
13
16
|
if (!editor || !disabledNodes?.length) {
|
|
14
17
|
return;
|
|
15
18
|
}
|
|
16
|
-
return
|
|
19
|
+
return editor.registerCommand(INDENT_CONTENT_COMMAND, () => {
|
|
17
20
|
return $handleIndentAndOutdent(block => {
|
|
18
21
|
if (!disabledNodes.includes(block.getType())) {
|
|
19
22
|
const indent = block.getIndent();
|
|
20
23
|
block.setIndent(indent + 1);
|
|
21
24
|
}
|
|
22
25
|
});
|
|
23
|
-
}, COMMAND_PRIORITY_LOW)
|
|
26
|
+
}, COMMAND_PRIORITY_LOW);
|
|
24
27
|
}, [editor, disabledNodes]);
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
if (!editor || !disableTabNode) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
return mergeRegister(
|
|
33
|
+
// This is so that when you press Tab in the middle of a paragraph,
|
|
34
|
+
// it indents the paragraph, instead of inserting a TabNode.
|
|
35
|
+
editor.registerCommand(KEY_TAB_COMMAND, event => {
|
|
36
|
+
event.preventDefault();
|
|
37
|
+
return editor.dispatchCommand(event.shiftKey ? OUTDENT_CONTENT_COMMAND : INDENT_CONTENT_COMMAND, undefined);
|
|
38
|
+
}, COMMAND_PRIORITY_LOW),
|
|
39
|
+
// Tab isn't the only way to insert a TabNode. We have to make sure
|
|
40
|
+
// it doesn't happen, for example, when pasting from the clipboard.
|
|
41
|
+
editor.registerNodeTransform(TabNode, node => {
|
|
42
|
+
node.remove();
|
|
43
|
+
}));
|
|
44
|
+
}, [editor, disableTabNode]);
|
|
25
45
|
return /*#__PURE__*/_jsx(TabIndentationPlugin, {});
|
|
26
46
|
};
|
|
27
47
|
function $handleIndentAndOutdent(indentOrOutdent) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IndentPlugin.js","names":["useLexicalComposerContext","TabIndentationPlugin","$findMatchingParent","mergeRegister","$getSelection","$isElementNode","$isRangeSelection","COMMAND_PRIORITY_LOW","INDENT_CONTENT_COMMAND","useEffect","IndentPlugin","
|
|
1
|
+
{"version":3,"file":"IndentPlugin.js","names":["useLexicalComposerContext","TabIndentationPlugin","$findMatchingParent","mergeRegister","$getSelection","$isElementNode","$isRangeSelection","COMMAND_PRIORITY_LOW","INDENT_CONTENT_COMMAND","KEY_TAB_COMMAND","OUTDENT_CONTENT_COMMAND","TabNode","useEffect","IndentPlugin","clientProps","editor","disabledNodes","disableTabNode","length","registerCommand","$handleIndentAndOutdent","block","includes","getType","indent","getIndent","setIndent","event","preventDefault","dispatchCommand","shiftKey","undefined","registerNodeTransform","node","remove","_jsx","indentOrOutdent","selection","alreadyHandled","Set","nodes","getNodes","i","key","getKey","has","parentBlock","parentNode","isInline","parentKey","canIndent","add","size"],"sources":["../../../../src/features/indent/client/IndentPlugin.tsx"],"sourcesContent":["import type { ElementNode } from 'lexical'\n\nimport { useLexicalComposerContext } from '@lexical/react/LexicalComposerContext'\nimport { TabIndentationPlugin } from '@lexical/react/LexicalTabIndentationPlugin'\nimport { $findMatchingParent, mergeRegister } from '@lexical/utils'\nimport {\n $getSelection,\n $isElementNode,\n $isRangeSelection,\n COMMAND_PRIORITY_LOW,\n INDENT_CONTENT_COMMAND,\n KEY_TAB_COMMAND,\n OUTDENT_CONTENT_COMMAND,\n TabNode,\n} from 'lexical'\nimport { useEffect } from 'react'\n\nimport type { PluginComponent } from '../../typesClient.js'\nimport type { IndentFeatureProps } from '../server/index.js'\n\nexport const IndentPlugin: PluginComponent<IndentFeatureProps> = ({ clientProps }) => {\n const [editor] = useLexicalComposerContext()\n const { disabledNodes, disableTabNode } = clientProps\n\n useEffect(() => {\n if (!editor || !disabledNodes?.length) {\n return\n }\n return editor.registerCommand(\n INDENT_CONTENT_COMMAND,\n () => {\n return $handleIndentAndOutdent((block) => {\n if (!disabledNodes.includes(block.getType())) {\n const indent = block.getIndent()\n block.setIndent(indent + 1)\n }\n })\n },\n COMMAND_PRIORITY_LOW,\n )\n }, [editor, disabledNodes])\n\n useEffect(() => {\n if (!editor || !disableTabNode) {\n return\n }\n return mergeRegister(\n // This is so that when you press Tab in the middle of a paragraph,\n // it indents the paragraph, instead of inserting a TabNode.\n editor.registerCommand<KeyboardEvent>(\n KEY_TAB_COMMAND,\n (event) => {\n event.preventDefault()\n return editor.dispatchCommand(\n event.shiftKey ? OUTDENT_CONTENT_COMMAND : INDENT_CONTENT_COMMAND,\n undefined,\n )\n },\n COMMAND_PRIORITY_LOW,\n ),\n // Tab isn't the only way to insert a TabNode. We have to make sure\n // it doesn't happen, for example, when pasting from the clipboard.\n editor.registerNodeTransform(TabNode, (node) => {\n node.remove()\n }),\n )\n }, [editor, disableTabNode])\n\n return <TabIndentationPlugin />\n}\n\nfunction $handleIndentAndOutdent(indentOrOutdent: (block: ElementNode) => void): boolean {\n const selection = $getSelection()\n if (!$isRangeSelection(selection)) {\n return false\n }\n const alreadyHandled = new Set()\n const nodes = selection.getNodes()\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i]!\n const key = node.getKey()\n if (alreadyHandled.has(key)) {\n continue\n }\n const parentBlock = $findMatchingParent(\n node,\n (parentNode): parentNode is ElementNode =>\n $isElementNode(parentNode) && !parentNode.isInline(),\n )\n if (parentBlock === null) {\n continue\n }\n const parentKey = parentBlock.getKey()\n if (parentBlock.canIndent() && !alreadyHandled.has(parentKey)) {\n alreadyHandled.add(parentKey)\n indentOrOutdent(parentBlock)\n }\n }\n return alreadyHandled.size > 0\n}\n"],"mappings":";AAEA,SAASA,yBAAyB,QAAQ;AAC1C,SAASC,oBAAoB,QAAQ;AACrC,SAASC,mBAAmB,EAAEC,aAAa,QAAQ;AACnD,SACEC,aAAa,EACbC,cAAc,EACdC,iBAAiB,EACjBC,oBAAoB,EACpBC,sBAAsB,EACtBC,eAAe,EACfC,uBAAuB,EACvBC,OAAO,QACF;AACP,SAASC,SAAS,QAAQ;AAK1B,OAAO,MAAMC,YAAA,GAAoDA,CAAC;EAAEC;AAAW,CAAE;EAC/E,MAAM,CAACC,MAAA,CAAO,GAAGf,yBAAA;EACjB,MAAM;IAAEgB,aAAa;IAAEC;EAAc,CAAE,GAAGH,WAAA;EAE1CF,SAAA,CAAU;IACR,IAAI,CAACG,MAAA,IAAU,CAACC,aAAA,EAAeE,MAAA,EAAQ;MACrC;IACF;IACA,OAAOH,MAAA,CAAOI,eAAe,CAC3BX,sBAAA,EACA;MACE,OAAOY,uBAAA,CAAyBC,KAAA;QAC9B,IAAI,CAACL,aAAA,CAAcM,QAAQ,CAACD,KAAA,CAAME,OAAO,KAAK;UAC5C,MAAMC,MAAA,GAASH,KAAA,CAAMI,SAAS;UAC9BJ,KAAA,CAAMK,SAAS,CAACF,MAAA,GAAS;QAC3B;MACF;IACF,GACAjB,oBAAA;EAEJ,GAAG,CAACQ,MAAA,EAAQC,aAAA,CAAc;EAE1BJ,SAAA,CAAU;IACR,IAAI,CAACG,MAAA,IAAU,CAACE,cAAA,EAAgB;MAC9B;IACF;IACA,OAAOd,aAAA;IACL;IACA;IACAY,MAAA,CAAOI,eAAe,CACpBV,eAAA,EACCkB,KAAA;MACCA,KAAA,CAAMC,cAAc;MACpB,OAAOb,MAAA,CAAOc,eAAe,CAC3BF,KAAA,CAAMG,QAAQ,GAAGpB,uBAAA,GAA0BF,sBAAA,EAC3CuB,SAAA;IAEJ,GACAxB,oBAAA;IAEF;IACA;IACAQ,MAAA,CAAOiB,qBAAqB,CAACrB,OAAA,EAAUsB,IAAA;MACrCA,IAAA,CAAKC,MAAM;IACb;EAEJ,GAAG,CAACnB,MAAA,EAAQE,cAAA,CAAe;EAE3B,oBAAOkB,IAAA,CAAClC,oBAAA;AACV;AAEA,SAASmB,wBAAwBgB,eAA6C;EAC5E,MAAMC,SAAA,GAAYjC,aAAA;EAClB,IAAI,CAACE,iBAAA,CAAkB+B,SAAA,GAAY;IACjC,OAAO;EACT;EACA,MAAMC,cAAA,GAAiB,IAAIC,GAAA;EAC3B,MAAMC,KAAA,GAAQH,SAAA,CAAUI,QAAQ;EAChC,KAAK,IAAIC,CAAA,GAAI,GAAGA,CAAA,GAAIF,KAAA,CAAMtB,MAAM,EAAEwB,CAAA,IAAK;IACrC,MAAMT,IAAA,GAAOO,KAAK,CAACE,CAAA,CAAE;IACrB,MAAMC,GAAA,GAAMV,IAAA,CAAKW,MAAM;IACvB,IAAIN,cAAA,CAAeO,GAAG,CAACF,GAAA,GAAM;MAC3B;IACF;IACA,MAAMG,WAAA,GAAc5C,mBAAA,CAClB+B,IAAA,EACCc,UAAA,IACC1C,cAAA,CAAe0C,UAAA,KAAe,CAACA,UAAA,CAAWC,QAAQ;IAEtD,IAAIF,WAAA,KAAgB,MAAM;MACxB;IACF;IACA,MAAMG,SAAA,GAAYH,WAAA,CAAYF,MAAM;IACpC,IAAIE,WAAA,CAAYI,SAAS,MAAM,CAACZ,cAAA,CAAeO,GAAG,CAACI,SAAA,GAAY;MAC7DX,cAAA,CAAea,GAAG,CAACF,SAAA;MACnBb,eAAA,CAAgBU,WAAA;IAClB;EACF;EACA,OAAOR,cAAA,CAAec,IAAI,GAAG;AAC/B","ignoreList":[]}
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
|
|
1
|
+
import { type IndentFeatureProps } from '../server/index.js';
|
|
2
|
+
export declare const IndentFeatureClient: import("../../typesClient.js").FeatureProviderProviderClient<IndentFeatureProps, IndentFeatureProps>;
|
|
2
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/indent/client/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/indent/client/index.tsx"],"names":[],"mappings":"AAiBA,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAwE5D,eAAO,MAAM,mBAAmB,sGAiB9B,CAAA"}
|
|
@@ -7,7 +7,9 @@ import { IndentIncreaseIcon } from '../../../lexical/ui/icons/IndentIncrease/ind
|
|
|
7
7
|
import { createClientFeature } from '../../../utilities/createClientFeature.js';
|
|
8
8
|
import { IndentPlugin } from './IndentPlugin.js';
|
|
9
9
|
import { toolbarIndentGroupWithItems } from './toolbarIndentGroup.js';
|
|
10
|
-
const toolbarGroups =
|
|
10
|
+
const toolbarGroups = ({
|
|
11
|
+
disabledNodes
|
|
12
|
+
}) => [toolbarIndentGroupWithItems([{
|
|
11
13
|
ChildComponent: IndentDecreaseIcon,
|
|
12
14
|
isActive: () => false,
|
|
13
15
|
isEnabled: ({
|
|
@@ -28,13 +30,8 @@ const toolbarGroups = [toolbarIndentGroupWithItems([{
|
|
|
28
30
|
}
|
|
29
31
|
}
|
|
30
32
|
}
|
|
31
|
-
if (!atLeastOneNodeCanOutdent
|
|
32
|
-
|
|
33
|
-
if ($findMatchingParent(anchorNode, node => isIndentable(node) && node.getIndent() > 0)) {
|
|
34
|
-
return true;
|
|
35
|
-
}
|
|
36
|
-
const focusNode = selection.focus.getNode();
|
|
37
|
-
if ($findMatchingParent(focusNode, node => isIndentable(node) && node.getIndent() > 0)) {
|
|
33
|
+
if (!atLeastOneNodeCanOutdent) {
|
|
34
|
+
if ($pointsAncestorMatch(selection, node => isIndentable(node) && node.getIndent() > 0)) {
|
|
38
35
|
return true;
|
|
39
36
|
}
|
|
40
37
|
}
|
|
@@ -55,6 +52,18 @@ const toolbarGroups = [toolbarIndentGroupWithItems([{
|
|
|
55
52
|
}, {
|
|
56
53
|
ChildComponent: IndentIncreaseIcon,
|
|
57
54
|
isActive: () => false,
|
|
55
|
+
isEnabled: ({
|
|
56
|
+
selection
|
|
57
|
+
}) => {
|
|
58
|
+
const nodes = selection?.getNodes();
|
|
59
|
+
if (!nodes?.length) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
if (nodes.some(node => disabledNodes?.includes(node.getType()))) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
return !$pointsAncestorMatch(selection, node => (disabledNodes ?? []).includes(node.getType()));
|
|
66
|
+
},
|
|
58
67
|
key: 'indentIncrease',
|
|
59
68
|
label: ({
|
|
60
69
|
i18n
|
|
@@ -68,16 +77,29 @@ const toolbarGroups = [toolbarIndentGroupWithItems([{
|
|
|
68
77
|
},
|
|
69
78
|
order: 2
|
|
70
79
|
}])];
|
|
71
|
-
export const IndentFeatureClient = createClientFeature({
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
80
|
+
export const IndentFeatureClient = createClientFeature(({
|
|
81
|
+
props
|
|
82
|
+
}) => {
|
|
83
|
+
const disabledNodes = props.disabledNodes ?? [];
|
|
84
|
+
return {
|
|
85
|
+
plugins: [{
|
|
86
|
+
Component: IndentPlugin,
|
|
87
|
+
position: 'normal'
|
|
88
|
+
}],
|
|
89
|
+
sanitizedClientFeatureProps: props,
|
|
90
|
+
toolbarFixed: {
|
|
91
|
+
groups: toolbarGroups({
|
|
92
|
+
disabledNodes
|
|
93
|
+
})
|
|
94
|
+
},
|
|
95
|
+
toolbarInline: {
|
|
96
|
+
groups: toolbarGroups({
|
|
97
|
+
disabledNodes
|
|
98
|
+
})
|
|
99
|
+
}
|
|
100
|
+
};
|
|
82
101
|
});
|
|
102
|
+
function $pointsAncestorMatch(selection, fn) {
|
|
103
|
+
return $isRangeSelection(selection) && (!!$findMatchingParent(selection.anchor.getNode(), fn) || !!$findMatchingParent(selection.focus.getNode(), fn));
|
|
104
|
+
}
|
|
83
105
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["$findMatchingParent","$isElementNode","$isRangeSelection","INDENT_CONTENT_COMMAND","OUTDENT_CONTENT_COMMAND","IndentDecreaseIcon","IndentIncreaseIcon","createClientFeature","IndentPlugin","toolbarIndentGroupWithItems","toolbarGroups","ChildComponent","isActive","isEnabled","selection","nodes","getNodes","length","atLeastOneNodeCanOutdent","isIndentable","node","canIndent","getIndent","
|
|
1
|
+
{"version":3,"file":"index.js","names":["$findMatchingParent","$isElementNode","$isRangeSelection","INDENT_CONTENT_COMMAND","OUTDENT_CONTENT_COMMAND","IndentDecreaseIcon","IndentIncreaseIcon","createClientFeature","IndentPlugin","toolbarIndentGroupWithItems","toolbarGroups","disabledNodes","ChildComponent","isActive","isEnabled","selection","nodes","getNodes","length","atLeastOneNodeCanOutdent","isIndentable","node","canIndent","getIndent","$pointsAncestorMatch","key","label","i18n","t","onSelect","editor","dispatchCommand","undefined","order","some","includes","getType","IndentFeatureClient","props","plugins","Component","position","sanitizedClientFeatureProps","toolbarFixed","groups","toolbarInline","fn","anchor","getNode","focus"],"sources":["../../../../src/features/indent/client/index.tsx"],"sourcesContent":["'use client'\n\nimport type { BaseSelection, ElementNode, LexicalNode } from 'lexical'\n\nimport { $findMatchingParent } from '@lexical/utils'\nimport {\n $isElementNode,\n $isRangeSelection,\n INDENT_CONTENT_COMMAND,\n OUTDENT_CONTENT_COMMAND,\n} from 'lexical'\n\nimport type { ToolbarGroup } from '../../toolbars/types.js'\n\nimport { IndentDecreaseIcon } from '../../../lexical/ui/icons/IndentDecrease/index.js'\nimport { IndentIncreaseIcon } from '../../../lexical/ui/icons/IndentIncrease/index.js'\nimport { createClientFeature } from '../../../utilities/createClientFeature.js'\nimport { type IndentFeatureProps } from '../server/index.js'\nimport { IndentPlugin } from './IndentPlugin.js'\nimport { toolbarIndentGroupWithItems } from './toolbarIndentGroup.js'\n\nconst toolbarGroups = ({ disabledNodes }: IndentFeatureProps): ToolbarGroup[] => [\n toolbarIndentGroupWithItems([\n {\n ChildComponent: IndentDecreaseIcon,\n isActive: () => false,\n isEnabled: ({ selection }) => {\n const nodes = selection?.getNodes()\n if (!nodes?.length) {\n return false\n }\n let atLeastOneNodeCanOutdent = false\n const isIndentable = (node: LexicalNode): node is ElementNode =>\n $isElementNode(node) && node.canIndent()\n for (const node of nodes) {\n if (isIndentable(node)) {\n if (node.getIndent() <= 0) {\n return false\n } else {\n atLeastOneNodeCanOutdent = true\n }\n }\n }\n\n if (!atLeastOneNodeCanOutdent) {\n if (\n $pointsAncestorMatch(selection, (node) => isIndentable(node) && node.getIndent() > 0)\n ) {\n return true\n }\n }\n return atLeastOneNodeCanOutdent\n },\n key: 'indentDecrease',\n label: ({ i18n }) => {\n return i18n.t('lexical:indent:decreaseLabel')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(OUTDENT_CONTENT_COMMAND, undefined)\n },\n order: 1,\n },\n {\n ChildComponent: IndentIncreaseIcon,\n isActive: () => false,\n isEnabled: ({ selection }) => {\n const nodes = selection?.getNodes()\n if (!nodes?.length) {\n return false\n }\n if (nodes.some((node) => disabledNodes?.includes(node.getType()))) {\n return false\n }\n return !$pointsAncestorMatch(selection, (node) =>\n (disabledNodes ?? []).includes(node.getType()),\n )\n },\n key: 'indentIncrease',\n label: ({ i18n }) => {\n return i18n.t('lexical:indent:increaseLabel')\n },\n onSelect: ({ editor }) => {\n editor.dispatchCommand(INDENT_CONTENT_COMMAND, undefined)\n },\n order: 2,\n },\n ]),\n]\n\nexport const IndentFeatureClient = createClientFeature<IndentFeatureProps>(({ props }) => {\n const disabledNodes = props.disabledNodes ?? []\n return {\n plugins: [\n {\n Component: IndentPlugin,\n position: 'normal',\n },\n ],\n sanitizedClientFeatureProps: props,\n toolbarFixed: {\n groups: toolbarGroups({ disabledNodes }),\n },\n toolbarInline: {\n groups: toolbarGroups({ disabledNodes }),\n },\n }\n})\n\nfunction $pointsAncestorMatch(\n selection: BaseSelection,\n fn: (node: LexicalNode) => boolean,\n): boolean {\n return (\n $isRangeSelection(selection) &&\n (!!$findMatchingParent(selection.anchor.getNode(), fn) ||\n !!$findMatchingParent(selection.focus.getNode(), fn))\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,6 +4,13 @@ export type IndentFeatureProps = {
|
|
|
4
4
|
* These can be: "paragraph", "heading", "listitem", "quote" or other indentable nodes if they exist.
|
|
5
5
|
*/
|
|
6
6
|
disabledNodes?: string[];
|
|
7
|
+
/**
|
|
8
|
+
* If true, pressing Tab in the middle of a block such as a paragraph or heading will not insert a tabNode.
|
|
9
|
+
* Instead, Tab will only be used for block-level indentation.
|
|
10
|
+
*
|
|
11
|
+
* @default false
|
|
12
|
+
*/
|
|
13
|
+
disableTabNode?: boolean;
|
|
7
14
|
};
|
|
8
15
|
export declare const IndentFeature: import("../../typesServer.js").FeatureProviderProviderServer<IndentFeatureProps, IndentFeatureProps, IndentFeatureProps>;
|
|
9
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/indent/server/index.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;CACzB,CAAA;AAED,eAAO,MAAM,aAAa,0HAaxB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/indent/server/index.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB,CAAA;AAED,eAAO,MAAM,aAAa,0HAaxB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["createServerFeature","i18n","IndentFeature","feature","props","ClientFeature","clientFeatureProps","key"],"sources":["../../../../src/features/indent/server/index.ts"],"sourcesContent":["import { createServerFeature } from '../../../utilities/createServerFeature.js'\nimport { i18n } from './i18n.js'\n\nexport type IndentFeatureProps = {\n /**\n * The nodes that should not be indented. \"type\" property of the nodes you don't want to be indented.\n * These can be: \"paragraph\", \"heading\", \"listitem\", \"quote\" or other indentable nodes if they exist.\n */\n disabledNodes?: string[]\n}\n\nexport const IndentFeature = createServerFeature<\n IndentFeatureProps,\n IndentFeatureProps,\n IndentFeatureProps\n>({\n feature: ({ props }) => {\n return {\n ClientFeature: '@payloadcms/richtext-lexical/client#IndentFeatureClient',\n clientFeatureProps: props,\n i18n,\n }\n },\n key: 'indent',\n})\n"],"mappings":"AAAA,SAASA,mBAAmB,QAAQ;AACpC,SAASC,IAAI,QAAQ;
|
|
1
|
+
{"version":3,"file":"index.js","names":["createServerFeature","i18n","IndentFeature","feature","props","ClientFeature","clientFeatureProps","key"],"sources":["../../../../src/features/indent/server/index.ts"],"sourcesContent":["import { createServerFeature } from '../../../utilities/createServerFeature.js'\nimport { i18n } from './i18n.js'\n\nexport type IndentFeatureProps = {\n /**\n * The nodes that should not be indented. \"type\" property of the nodes you don't want to be indented.\n * These can be: \"paragraph\", \"heading\", \"listitem\", \"quote\" or other indentable nodes if they exist.\n */\n disabledNodes?: string[]\n /**\n * If true, pressing Tab in the middle of a block such as a paragraph or heading will not insert a tabNode.\n * Instead, Tab will only be used for block-level indentation.\n *\n * @default false\n */\n disableTabNode?: boolean\n}\n\nexport const IndentFeature = createServerFeature<\n IndentFeatureProps,\n IndentFeatureProps,\n IndentFeatureProps\n>({\n feature: ({ props }) => {\n return {\n ClientFeature: '@payloadcms/richtext-lexical/client#IndentFeatureClient',\n clientFeatureProps: props,\n i18n,\n }\n },\n key: 'indent',\n})\n"],"mappings":"AAAA,SAASA,mBAAmB,QAAQ;AACpC,SAASC,IAAI,QAAQ;AAiBrB,OAAO,MAAMC,aAAA,GAAgBF,mBAAA,CAI3B;EACAG,OAAA,EAASA,CAAC;IAAEC;EAAK,CAAE;IACjB,OAAO;MACLC,aAAA,EAAe;MACfC,kBAAA,EAAoBF,KAAA;MACpBH;IACF;EACF;EACAM,GAAA,EAAK;AACP","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/link/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAEd,KAAK,EACL,kBAAkB,EAElB,eAAe,EAChB,MAAM,SAAS,CAAA;AAMhB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAarD,MAAM,MAAM,6BAA6B,GACrC;IACE;;;QAGI;IACJ,mBAAmB,CAAC,EAAE,cAAc,EAAE,CAAA;IAGtC,kBAAkB,CAAC,EAAE,KAAK,CAAA;CAC3B,GACD;IAEE,mBAAmB,CAAC,EAAE,KAAK,CAAA;IAE3B;;;QAGI;IACJ,kBAAkB,CAAC,EAAE,cAAc,EAAE,CAAA;CACtC,CAAA;AAEL,MAAM,MAAM,sBAAsB,GAAG;IACnC;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;IACxC;;;OAGG;IACH,MAAM,CAAC,EACH,CAAC,CAAC,IAAI,EAAE;QACN,MAAM,EAAE,eAAe,CAAA;QACvB,aAAa,EAAE,kBAAkB,EAAE,CAAA;KACpC,KAAK,CAAC,KAAK,GAAG,kBAAkB,CAAC,EAAE,CAAC,GACrC,KAAK,EAAE,CAAA;IACX;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,GAAG,6BAA6B,CAAA;AAEjC,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/link/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAEd,KAAK,EACL,kBAAkB,EAElB,eAAe,EAChB,MAAM,SAAS,CAAA;AAMhB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAarD,MAAM,MAAM,6BAA6B,GACrC;IACE;;;QAGI;IACJ,mBAAmB,CAAC,EAAE,cAAc,EAAE,CAAA;IAGtC,kBAAkB,CAAC,EAAE,KAAK,CAAA;CAC3B,GACD;IAEE,mBAAmB,CAAC,EAAE,KAAK,CAAA;IAE3B;;;QAGI;IACJ,kBAAkB,CAAC,EAAE,cAAc,EAAE,CAAA;CACtC,CAAA;AAEL,MAAM,MAAM,sBAAsB,GAAG;IACnC;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;IACxC;;;OAGG;IACH,MAAM,CAAC,EACH,CAAC,CAAC,IAAI,EAAE;QACN,MAAM,EAAE,eAAe,CAAA;QACvB,aAAa,EAAE,kBAAkB,EAAE,CAAA;KACpC,KAAK,CAAC,KAAK,GAAG,kBAAkB,CAAC,EAAE,CAAC,GACrC,KAAK,EAAE,CAAA;IACX;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,GAAG,6BAA6B,CAAA;AAEjC,eAAO,MAAM,WAAW,2HA0LtB,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import escapeHTML from 'escape-html';
|
|
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 { LinkMarkdownTransformer } from '../markdownTransformer.js';
|
|
7
7
|
import { AutoLinkNode } from '../nodes/AutoLinkNode.js';
|
|
@@ -95,13 +95,11 @@ export const LinkFeature = createServerFeature({
|
|
|
95
95
|
req,
|
|
96
96
|
showHiddenFields
|
|
97
97
|
});
|
|
98
|
-
const rel = node.fields.newTab ? ' rel="noopener noreferrer"' : '';
|
|
99
|
-
const target = node.fields.newTab ? ' target="_blank"' : '';
|
|
100
98
|
let href = node.fields.url ?? '';
|
|
101
99
|
if (node.fields.linkType === 'internal') {
|
|
102
100
|
href = typeof node.fields.doc?.value !== 'object' ? String(node.fields.doc?.value) : String(node.fields.doc?.value?.id);
|
|
103
101
|
}
|
|
104
|
-
return `<a href="${href}"${target}
|
|
102
|
+
return `<a href="${href}"${node.fields.newTab ? ' rel="noopener noreferrer" target="_blank"' : ''}>${childrenText}</a>`;
|
|
105
103
|
},
|
|
106
104
|
nodeTypes: [AutoLinkNode.getType()]
|
|
107
105
|
}
|
|
@@ -137,10 +135,8 @@ export const LinkFeature = createServerFeature({
|
|
|
137
135
|
req,
|
|
138
136
|
showHiddenFields
|
|
139
137
|
});
|
|
140
|
-
const rel = node.fields.newTab ? ' rel="noopener noreferrer"' : '';
|
|
141
|
-
const target = node.fields.newTab ? ' target="_blank"' : '';
|
|
142
138
|
const href = node.fields.linkType === 'custom' ? escapeHTML(node.fields.url) : node.fields.doc?.value;
|
|
143
|
-
return `<a href="${href}"${target}
|
|
139
|
+
return `<a href="${href}"${node.fields.newTab ? ' rel="noopener noreferrer" target="_blank"' : ''}>${childrenText}</a>`;
|
|
144
140
|
},
|
|
145
141
|
nodeTypes: [LinkNode.getType()]
|
|
146
142
|
}
|