@payloadcms/richtext-lexical 3.84.1 → 4.0.0-internal.d28e9fb
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-4UEGQMIN.js → Field-NXLXFFLW.js} +2 -2
- package/dist/exports/client/Field-NXLXFFLW.js.map +7 -0
- package/dist/exports/client/bundled.css +1 -1
- package/dist/exports/client/chunk-DZDHVMML.js +2 -0
- package/dist/exports/client/chunk-DZDHVMML.js.map +7 -0
- package/dist/exports/client/componentInline-LCHKRXOV.js +2 -0
- package/dist/exports/client/index.d.ts +0 -2
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +32 -32
- package/dist/exports/client/index.js.map +4 -4
- package/dist/features/blocks/client/component/index.d.ts.map +1 -1
- package/dist/features/blocks/client/component/index.js +17 -2
- package/dist/features/blocks/client/component/index.js.map +1 -1
- package/dist/features/blocks/client/componentInline/index.d.ts.map +1 -1
- package/dist/features/blocks/client/componentInline/index.js +13 -3
- package/dist/features/blocks/client/componentInline/index.js.map +1 -1
- package/dist/field/Field.d.ts.map +1 -1
- package/dist/field/Field.js +1 -1
- package/dist/field/Field.js.map +1 -1
- package/dist/field/bundled.css +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -2
- package/dist/index.js.map +1 -1
- package/dist/lexical/config/server/loader.d.ts.map +1 -1
- package/dist/lexical/config/server/loader.js +12 -9
- package/dist/lexical/config/server/loader.js.map +1 -1
- package/dist/lexical/ui/icons/Add/index.d.ts +4 -1
- package/dist/lexical/ui/icons/Add/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Add/index.js +19 -12
- package/dist/lexical/ui/icons/Add/index.js.map +1 -1
- package/dist/lexical/ui/icons/Add/index.svg +2 -3
- package/dist/lexical/ui/icons/Add/light.svg +2 -3
- package/dist/lexical/ui/icons/AlignCenter/index.d.ts +3 -1
- package/dist/lexical/ui/icons/AlignCenter/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/AlignCenter/index.js +15 -19
- package/dist/lexical/ui/icons/AlignCenter/index.js.map +1 -1
- package/dist/lexical/ui/icons/AlignJustify/index.d.ts +3 -1
- package/dist/lexical/ui/icons/AlignJustify/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/AlignJustify/index.js +15 -19
- package/dist/lexical/ui/icons/AlignJustify/index.js.map +1 -1
- package/dist/lexical/ui/icons/AlignLeft/index.d.ts +3 -1
- package/dist/lexical/ui/icons/AlignLeft/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/AlignLeft/index.js +15 -19
- package/dist/lexical/ui/icons/AlignLeft/index.js.map +1 -1
- package/dist/lexical/ui/icons/AlignRight/index.d.ts +3 -1
- package/dist/lexical/ui/icons/AlignRight/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/AlignRight/index.js +15 -19
- package/dist/lexical/ui/icons/AlignRight/index.js.map +1 -1
- package/dist/lexical/ui/icons/Block/index.d.ts +3 -1
- package/dist/lexical/ui/icons/Block/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Block/index.js +13 -28
- package/dist/lexical/ui/icons/Block/index.js.map +1 -1
- package/dist/lexical/ui/icons/Blockquote/index.d.ts +3 -1
- package/dist/lexical/ui/icons/Blockquote/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Blockquote/index.js +9 -6
- package/dist/lexical/ui/icons/Blockquote/index.js.map +1 -1
- package/dist/lexical/ui/icons/Bold/index.d.ts +3 -1
- package/dist/lexical/ui/icons/Bold/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Bold/index.js +13 -8
- package/dist/lexical/ui/icons/Bold/index.js.map +1 -1
- package/dist/lexical/ui/icons/Checklist/index.d.ts +4 -1
- package/dist/lexical/ui/icons/Checklist/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Checklist/index.js +17 -18
- package/dist/lexical/ui/icons/Checklist/index.js.map +1 -1
- package/dist/lexical/ui/icons/Code/index.d.ts +3 -1
- package/dist/lexical/ui/icons/Code/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Code/index.js +15 -13
- package/dist/lexical/ui/icons/Code/index.js.map +1 -1
- package/dist/lexical/ui/icons/CodeBlock/index.d.ts +4 -1
- package/dist/lexical/ui/icons/CodeBlock/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/CodeBlock/index.js +18 -7
- package/dist/lexical/ui/icons/CodeBlock/index.js.map +1 -1
- package/dist/lexical/ui/icons/Collapse/index.d.ts +3 -1
- package/dist/lexical/ui/icons/Collapse/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Collapse/index.js +10 -8
- package/dist/lexical/ui/icons/Collapse/index.js.map +1 -1
- package/dist/lexical/ui/icons/DraggableBlock/index.svg +7 -7
- package/dist/lexical/ui/icons/DraggableBlock/light.svg +7 -7
- package/dist/lexical/ui/icons/Expand/index.d.ts +5 -0
- package/dist/lexical/ui/icons/Expand/index.d.ts.map +1 -0
- package/dist/lexical/ui/icons/Expand/index.js +22 -0
- package/dist/lexical/ui/icons/Expand/index.js.map +1 -0
- package/dist/lexical/ui/icons/H1/index.d.ts +3 -1
- package/dist/lexical/ui/icons/H1/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/H1/index.js +9 -6
- package/dist/lexical/ui/icons/H1/index.js.map +1 -1
- package/dist/lexical/ui/icons/H2/index.d.ts +3 -1
- package/dist/lexical/ui/icons/H2/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/H2/index.js +9 -6
- package/dist/lexical/ui/icons/H2/index.js.map +1 -1
- package/dist/lexical/ui/icons/H3/index.d.ts +3 -1
- package/dist/lexical/ui/icons/H3/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/H3/index.js +9 -6
- package/dist/lexical/ui/icons/H3/index.js.map +1 -1
- package/dist/lexical/ui/icons/H4/index.d.ts +3 -1
- package/dist/lexical/ui/icons/H4/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/H4/index.js +9 -6
- package/dist/lexical/ui/icons/H4/index.js.map +1 -1
- package/dist/lexical/ui/icons/H5/index.d.ts +3 -1
- package/dist/lexical/ui/icons/H5/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/H5/index.js +9 -6
- package/dist/lexical/ui/icons/H5/index.js.map +1 -1
- package/dist/lexical/ui/icons/H6/index.d.ts +3 -1
- package/dist/lexical/ui/icons/H6/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/H6/index.js +9 -6
- package/dist/lexical/ui/icons/H6/index.js.map +1 -1
- package/dist/lexical/ui/icons/HorizontalRule/index.d.ts +3 -1
- package/dist/lexical/ui/icons/HorizontalRule/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/HorizontalRule/index.js +11 -11
- package/dist/lexical/ui/icons/HorizontalRule/index.js.map +1 -1
- package/dist/lexical/ui/icons/IndentDecrease/index.d.ts +3 -1
- package/dist/lexical/ui/icons/IndentDecrease/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/IndentDecrease/index.js +18 -22
- package/dist/lexical/ui/icons/IndentDecrease/index.js.map +1 -1
- package/dist/lexical/ui/icons/IndentIncrease/index.d.ts +3 -1
- package/dist/lexical/ui/icons/IndentIncrease/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/IndentIncrease/index.js +15 -22
- package/dist/lexical/ui/icons/IndentIncrease/index.js.map +1 -1
- package/dist/lexical/ui/icons/InlineBlocks/index.d.ts +3 -1
- package/dist/lexical/ui/icons/InlineBlocks/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/InlineBlocks/index.js +9 -6
- package/dist/lexical/ui/icons/InlineBlocks/index.js.map +1 -1
- package/dist/lexical/ui/icons/Italic/index.d.ts +3 -1
- package/dist/lexical/ui/icons/Italic/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Italic/index.js +13 -8
- package/dist/lexical/ui/icons/Italic/index.js.map +1 -1
- package/dist/lexical/ui/icons/Link/index.d.ts +4 -1
- package/dist/lexical/ui/icons/Link/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Link/index.js +14 -9
- package/dist/lexical/ui/icons/Link/index.js.map +1 -1
- package/dist/lexical/ui/icons/Meatballs/index.d.ts +4 -1
- package/dist/lexical/ui/icons/Meatballs/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Meatballs/index.js +19 -15
- package/dist/lexical/ui/icons/Meatballs/index.js.map +1 -1
- package/dist/lexical/ui/icons/OrderedList/index.d.ts +4 -1
- package/dist/lexical/ui/icons/OrderedList/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/OrderedList/index.js +19 -25
- package/dist/lexical/ui/icons/OrderedList/index.js.map +1 -1
- package/dist/lexical/ui/icons/Relationship/index.d.ts +3 -1
- package/dist/lexical/ui/icons/Relationship/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Relationship/index.js +13 -25
- package/dist/lexical/ui/icons/Relationship/index.js.map +1 -1
- package/dist/lexical/ui/icons/Strikethrough/index.d.ts +3 -1
- package/dist/lexical/ui/icons/Strikethrough/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Strikethrough/index.js +13 -13
- package/dist/lexical/ui/icons/Strikethrough/index.js.map +1 -1
- package/dist/lexical/ui/icons/Subscript/index.d.ts +3 -1
- package/dist/lexical/ui/icons/Subscript/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Subscript/index.js +10 -7
- package/dist/lexical/ui/icons/Subscript/index.js.map +1 -1
- package/dist/lexical/ui/icons/Superscript/index.d.ts +3 -1
- package/dist/lexical/ui/icons/Superscript/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Superscript/index.js +10 -7
- package/dist/lexical/ui/icons/Superscript/index.js.map +1 -1
- package/dist/lexical/ui/icons/Table/index.d.ts +4 -1
- package/dist/lexical/ui/icons/Table/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Table/index.js +20 -15
- package/dist/lexical/ui/icons/Table/index.js.map +1 -1
- package/dist/lexical/ui/icons/Text/index.d.ts +4 -1
- package/dist/lexical/ui/icons/Text/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Text/index.js +17 -8
- package/dist/lexical/ui/icons/Text/index.js.map +1 -1
- package/dist/lexical/ui/icons/Underline/index.d.ts +3 -1
- package/dist/lexical/ui/icons/Underline/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Underline/index.js +16 -14
- package/dist/lexical/ui/icons/Underline/index.js.map +1 -1
- package/dist/lexical/ui/icons/UnorderedList/index.d.ts +3 -1
- package/dist/lexical/ui/icons/UnorderedList/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/UnorderedList/index.js +13 -40
- package/dist/lexical/ui/icons/UnorderedList/index.js.map +1 -1
- package/dist/lexical/ui/icons/Upload/index.d.ts +3 -1
- package/dist/lexical/ui/icons/Upload/index.d.ts.map +1 -1
- package/dist/lexical/ui/icons/Upload/index.js +15 -22
- package/dist/lexical/ui/icons/Upload/index.js.map +1 -1
- package/dist/utilities/buildEditorState.d.ts.map +1 -1
- package/dist/utilities/buildEditorState.js +13 -0
- package/dist/utilities/buildEditorState.js.map +1 -1
- package/package.json +10 -15
- package/dist/exports/client/Component-DOSSWC76.js +0 -2
- package/dist/exports/client/Component-DOSSWC76.js.map +0 -7
- package/dist/exports/client/Component-MBLHTKDK.js +0 -2
- package/dist/exports/client/Component-MBLHTKDK.js.map +0 -7
- package/dist/exports/client/Field-4UEGQMIN.js.map +0 -7
- package/dist/exports/client/chunk-YWIZCGSY.js +0 -2
- package/dist/exports/client/chunk-YWIZCGSY.js.map +0 -7
- package/dist/exports/client/componentInline-CBBUBQ7P.js +0 -2
- package/dist/exports/server/migrate.d.ts +0 -16
- package/dist/exports/server/migrate.d.ts.map +0 -1
- package/dist/exports/server/migrate.js +0 -16
- package/dist/exports/server/migrate.js.map +0 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.d.ts +0 -3
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.d.ts.map +0 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.js +0 -22
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/heading/converter.js.map +0 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.d.ts +0 -3
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.d.ts.map +0 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.js +0 -33
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/link/converter.js.map +0 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.d.ts +0 -3
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.d.ts.map +0 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.js +0 -24
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/list/converter.js.map +0 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.d.ts +0 -3
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.d.ts.map +0 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.js +0 -25
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/listItem/converter.js.map +0 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.d.ts +0 -3
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.d.ts.map +0 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.js +0 -22
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/quote/converter.js.map +0 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.d.ts +0 -3
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.d.ts.map +0 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.js +0 -28
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/unknown/converter.js.map +0 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.d.ts +0 -3
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.d.ts.map +0 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js +0 -22
- package/dist/features/migrations/lexicalPluginToLexical/converter/converters/upload/converter.js.map +0 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/defaultConverters.d.ts +0 -3
- package/dist/features/migrations/lexicalPluginToLexical/converter/defaultConverters.d.ts.map +0 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/defaultConverters.js +0 -9
- package/dist/features/migrations/lexicalPluginToLexical/converter/defaultConverters.js.map +0 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/index.d.ts +0 -19
- package/dist/features/migrations/lexicalPluginToLexical/converter/index.d.ts.map +0 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/index.js +0 -78
- package/dist/features/migrations/lexicalPluginToLexical/converter/index.js.map +0 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/types.d.ts +0 -23
- package/dist/features/migrations/lexicalPluginToLexical/converter/types.d.ts.map +0 -1
- package/dist/features/migrations/lexicalPluginToLexical/converter/types.js +0 -2
- package/dist/features/migrations/lexicalPluginToLexical/converter/types.js.map +0 -1
- package/dist/features/migrations/lexicalPluginToLexical/feature.client.d.ts +0 -2
- package/dist/features/migrations/lexicalPluginToLexical/feature.client.d.ts.map +0 -1
- package/dist/features/migrations/lexicalPluginToLexical/feature.client.js +0 -10
- package/dist/features/migrations/lexicalPluginToLexical/feature.client.js.map +0 -1
- package/dist/features/migrations/lexicalPluginToLexical/feature.server.d.ts +0 -10
- package/dist/features/migrations/lexicalPluginToLexical/feature.server.d.ts.map +0 -1
- package/dist/features/migrations/lexicalPluginToLexical/feature.server.js +0 -49
- package/dist/features/migrations/lexicalPluginToLexical/feature.server.js.map +0 -1
- package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.d.ts +0 -9
- package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.d.ts.map +0 -1
- package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js +0 -15
- package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/Component.js.map +0 -1
- package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts +0 -33
- package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.d.ts.map +0 -1
- package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js +0 -74
- package/dist/features/migrations/lexicalPluginToLexical/nodes/unknownConvertedNode/index.js.map +0 -1
- package/dist/features/migrations/slateToLexical/converter/converters/blockquote/converter.d.ts +0 -3
- package/dist/features/migrations/slateToLexical/converter/converters/blockquote/converter.d.ts.map +0 -1
- package/dist/features/migrations/slateToLexical/converter/converters/blockquote/converter.js +0 -23
- package/dist/features/migrations/slateToLexical/converter/converters/blockquote/converter.js.map +0 -1
- package/dist/features/migrations/slateToLexical/converter/converters/heading/converter.d.ts +0 -3
- package/dist/features/migrations/slateToLexical/converter/converters/heading/converter.d.ts.map +0 -1
- package/dist/features/migrations/slateToLexical/converter/converters/heading/converter.js +0 -24
- package/dist/features/migrations/slateToLexical/converter/converters/heading/converter.js.map +0 -1
- package/dist/features/migrations/slateToLexical/converter/converters/indent/converter.d.ts +0 -3
- package/dist/features/migrations/slateToLexical/converter/converters/indent/converter.d.ts.map +0 -1
- package/dist/features/migrations/slateToLexical/converter/converters/indent/converter.js +0 -33
- package/dist/features/migrations/slateToLexical/converter/converters/indent/converter.js.map +0 -1
- package/dist/features/migrations/slateToLexical/converter/converters/link/converter.d.ts +0 -3
- package/dist/features/migrations/slateToLexical/converter/converters/link/converter.d.ts.map +0 -1
- package/dist/features/migrations/slateToLexical/converter/converters/link/converter.js +0 -30
- package/dist/features/migrations/slateToLexical/converter/converters/link/converter.js.map +0 -1
- package/dist/features/migrations/slateToLexical/converter/converters/listItem/converter.d.ts +0 -3
- package/dist/features/migrations/slateToLexical/converter/converters/listItem/converter.d.ts.map +0 -1
- package/dist/features/migrations/slateToLexical/converter/converters/listItem/converter.js +0 -26
- package/dist/features/migrations/slateToLexical/converter/converters/listItem/converter.js.map +0 -1
- package/dist/features/migrations/slateToLexical/converter/converters/orderedList/converter.d.ts +0 -3
- package/dist/features/migrations/slateToLexical/converter/converters/orderedList/converter.d.ts.map +0 -1
- package/dist/features/migrations/slateToLexical/converter/converters/orderedList/converter.js +0 -26
- package/dist/features/migrations/slateToLexical/converter/converters/orderedList/converter.js.map +0 -1
- package/dist/features/migrations/slateToLexical/converter/converters/relationship/converter.d.ts +0 -3
- package/dist/features/migrations/slateToLexical/converter/converters/relationship/converter.d.ts.map +0 -1
- package/dist/features/migrations/slateToLexical/converter/converters/relationship/converter.js +0 -15
- package/dist/features/migrations/slateToLexical/converter/converters/relationship/converter.js.map +0 -1
- package/dist/features/migrations/slateToLexical/converter/converters/unknown/converter.d.ts +0 -3
- package/dist/features/migrations/slateToLexical/converter/converters/unknown/converter.d.ts.map +0 -1
- package/dist/features/migrations/slateToLexical/converter/converters/unknown/converter.js +0 -27
- package/dist/features/migrations/slateToLexical/converter/converters/unknown/converter.js.map +0 -1
- package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/converter.d.ts +0 -3
- package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/converter.d.ts.map +0 -1
- package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js +0 -26
- package/dist/features/migrations/slateToLexical/converter/converters/unorderedList/converter.js.map +0 -1
- package/dist/features/migrations/slateToLexical/converter/converters/upload/converter.d.ts +0 -3
- package/dist/features/migrations/slateToLexical/converter/converters/upload/converter.d.ts.map +0 -1
- package/dist/features/migrations/slateToLexical/converter/converters/upload/converter.js +0 -18
- package/dist/features/migrations/slateToLexical/converter/converters/upload/converter.js.map +0 -1
- package/dist/features/migrations/slateToLexical/converter/defaultConverters.d.ts +0 -3
- package/dist/features/migrations/slateToLexical/converter/defaultConverters.d.ts.map +0 -1
- package/dist/features/migrations/slateToLexical/converter/defaultConverters.js +0 -12
- package/dist/features/migrations/slateToLexical/converter/defaultConverters.js.map +0 -1
- package/dist/features/migrations/slateToLexical/converter/index.d.ts +0 -19
- package/dist/features/migrations/slateToLexical/converter/index.d.ts.map +0 -1
- package/dist/features/migrations/slateToLexical/converter/index.js +0 -130
- package/dist/features/migrations/slateToLexical/converter/index.js.map +0 -1
- package/dist/features/migrations/slateToLexical/converter/types.d.ts +0 -16
- package/dist/features/migrations/slateToLexical/converter/types.d.ts.map +0 -1
- package/dist/features/migrations/slateToLexical/converter/types.js +0 -2
- package/dist/features/migrations/slateToLexical/converter/types.js.map +0 -1
- package/dist/features/migrations/slateToLexical/feature.client.d.ts +0 -2
- package/dist/features/migrations/slateToLexical/feature.client.d.ts.map +0 -1
- package/dist/features/migrations/slateToLexical/feature.client.js +0 -10
- package/dist/features/migrations/slateToLexical/feature.client.js.map +0 -1
- package/dist/features/migrations/slateToLexical/feature.server.d.ts +0 -40
- package/dist/features/migrations/slateToLexical/feature.server.d.ts.map +0 -1
- package/dist/features/migrations/slateToLexical/feature.server.js +0 -68
- package/dist/features/migrations/slateToLexical/feature.server.js.map +0 -1
- package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.d.ts +0 -9
- package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.d.ts.map +0 -1
- package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js +0 -15
- package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/Component.js.map +0 -1
- package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.d.ts +0 -33
- package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.d.ts.map +0 -1
- package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js +0 -74
- package/dist/features/migrations/slateToLexical/nodes/unknownConvertedNode/index.js.map +0 -1
- package/dist/lexical/ui/icons/AI/index.d.ts +0 -3
- package/dist/lexical/ui/icons/AI/index.d.ts.map +0 -1
- package/dist/lexical/ui/icons/AI/index.js +0 -34
- package/dist/lexical/ui/icons/AI/index.js.map +0 -1
- package/dist/lexical/ui/icons/Caret/index.svg +0 -3
- package/dist/lexical/ui/icons/Edit/index.svg +0 -10
- package/dist/lexical/ui/icons/Remove/index.svg +0 -4
- package/dist/utilities/migrateSlateToLexical/index.d.ts +0 -15
- package/dist/utilities/migrateSlateToLexical/index.d.ts.map +0 -1
- package/dist/utilities/migrateSlateToLexical/index.js +0 -152
- package/dist/utilities/migrateSlateToLexical/index.js.map +0 -1
- package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.d.ts +0 -10
- package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.d.ts.map +0 -1
- package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.js +0 -85
- package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.js.map +0 -1
- /package/dist/exports/client/{componentInline-CBBUBQ7P.js.map → componentInline-LCHKRXOV.js.map} +0 -0
package/dist/index.d.ts
CHANGED
|
@@ -44,7 +44,6 @@ export { LinkFeature, type LinkFeatureServerProps } from './features/link/server
|
|
|
44
44
|
export { ChecklistFeature } from './features/lists/checklist/server/index.js';
|
|
45
45
|
export { OrderedListFeature } from './features/lists/orderedList/server/index.js';
|
|
46
46
|
export { UnorderedListFeature } from './features/lists/unorderedList/server/index.js';
|
|
47
|
-
export type { SlateNode, SlateNodeConverter, } from './features/migrations/slateToLexical/converter/types.js';
|
|
48
47
|
export { ParagraphFeature } from './features/paragraph/server/index.js';
|
|
49
48
|
export { RelationshipFeature, type RelationshipFeatureProps, } from './features/relationship/server/index.js';
|
|
50
49
|
export { type RelationshipData, RelationshipServerNode, } from './features/relationship/server/nodes/RelationshipNode.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,8BAA8B,EAAE,MAAM,YAAY,CAAA;AAclG,eAAO,MAAM,oBAAoB,WAAW,CAAA;AAE5C,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,8BAA8B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -50,12 +50,21 @@ export function lexicalEditor(args) {
|
|
|
50
50
|
resolvedFeatureMap = result.resolvedFeatureMap;
|
|
51
51
|
}
|
|
52
52
|
const featureI18n = finalSanitizedEditorConfig.features.i18n;
|
|
53
|
-
|
|
53
|
+
const supportedLanguages = config.i18n?.supportedLanguages;
|
|
54
|
+
const supportedLanguagesToMerge = {};
|
|
55
|
+
for (const _lang in supportedLanguages) {
|
|
56
|
+
if (!(_lang in i18n)) {
|
|
57
|
+
if (featureI18n[_lang]) {
|
|
58
|
+
supportedLanguagesToMerge[_lang] = featureI18n[_lang];
|
|
59
|
+
}
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
54
62
|
const lang = _lang;
|
|
55
63
|
const lexicalI18nForLang = (featureI18n[lang] ??= {}).lexical ??= {};
|
|
56
64
|
lexicalI18nForLang.general = i18n[lang] ?? {};
|
|
65
|
+
supportedLanguagesToMerge[lang] = featureI18n[lang];
|
|
57
66
|
}
|
|
58
|
-
config.i18n.translations = deepMergeSimple(config.i18n.translations,
|
|
67
|
+
config.i18n.translations = deepMergeSimple(config.i18n.translations, supportedLanguagesToMerge);
|
|
59
68
|
return {
|
|
60
69
|
CellComponent: '@payloadcms/richtext-lexical/rsc#RscEntryLexicalCell',
|
|
61
70
|
DiffComponent: '@payloadcms/richtext-lexical/rsc#LexicalDiffComponent',
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["afterChangeTraverseFields","afterReadTraverseFields","beforeChangeTraverseFields","beforeValidateTraverseFields","checkDependencies","deepMergeSimple","withNullableJSONSchemaType","i18n","defaultEditorFeatures","populateLexicalPopulationPromises","featuresInputToEditorConfig","getGenerateImportMap","getGenerateSchemaMap","getDefaultSanitizedEditorConfig","recurseNodeTree","richTextValidateHOC","checkedDependencies","lexicalTargetVersion","lexicalEditor","args","process","env","NODE_ENV","PAYLOAD_DISABLE_DEPENDENCY_CHECKER","dependencyGroups","name","dependencies","targetVersion","config","isRoot","parentIsLocalized","features","resolvedFeatureMap","finalSanitizedEditorConfig","lexical","result","sanitizedConfig","featureI18n","_lang","lang","lexicalI18nForLang","general","translations","CellComponent","DiffComponent","editorConfig","FieldComponent","path","serverProps","admin","views","generateImportMap","lexicalEditorArgs","generateSchemaMap","graphQLPopulationPromises","context","currentDepth","depth","draft","field","fieldPromises","findMany","flattenLocales","overrideAccess","populationPromises","req","showHiddenFields","siblingDoc","size","editorPopulationPromises","hooks","afterChange","collection","_context","data","global","indexPath","operation","originalDoc","previousDoc","previousValue","schemaPath","value","length","hook","nodeHooks","getSubFields","nodeIDMap","previousNodeIDMap","originalNodeIDMap","internal","richText","join","Object","keys","nodes","root","children","id","node","entries","afterChangeHooks","afterChangeHooksForNode","get","type","console","warn","originalNode","parentRichTextFieldPath","parentRichTextFieldSchemaPath","previousNode","subFieldFn","subFieldDataFn","getSubFieldsData","subFields","nodeSiblingData","nodeSiblingDoc","nodePreviousSiblingDoc","blockData","doc","fields","parentIndexPath","localized","parentPath","parentSchemaPath","previousSiblingDoc","siblingData","afterRead","fallbackLocale","locale","populate","triggerAccessControl","triggerHooks","flattenedNodes","afterReadHooks","afterReadHooksForNode","populateArg","beforeChange","docWithLocales","errors","fieldLabelPath","mergeLocaleActions","siblingDocWithLocales","skipValidation","originalNodeWithLocalesIDMap","beforeChangeHooks","beforeChangeHooksForNode","originalNodeWithLocales","nodeSiblingDocWithLocales","newOriginalNodeIDMap","previousOriginalValue","beforeValidate","beforeValidateHooks","beforeValidateHooksForNode","outputSchema","collectionIDFieldTypes","interfaceNameDefinitions","isRequired","properties","additionalProperties","items","tsType","version","required","direction","oneOf","enum","format","indent","modifyOutputSchema","generatedTypes","modifyOutputSchemas","currentSchema","validate","AlignFeature","BlockquoteFeature","CodeBlock","BlocksFeature","$createServerBlockNode","$isServerBlockNode","ServerBlockNode","$createServerInlineBlockNode","$isServerInlineBlockNode","ServerInlineBlockNode","convertHTMLToLexical","lexicalHTMLField","LinebreakHTMLConverter","ParagraphHTMLConverter","TabHTMLConverter","TextHTMLConverter","defaultHTMLConverters","convertLexicalNodesToHTML","convertLexicalToHTML","consolidateHTMLConverters","lexicalHTML","HTMLConverterFeature","convertLexicalToMarkdown","convertMarkdownToLexical","getPayloadPopulateFn","getRestPopulateFn","DebugJsxConverterFeature","TestRecorderFeature","TreeViewFeature","EXPERIMENTAL_TableFeature","BoldFeature","InlineCodeFeature","ItalicFeature","StrikethroughFeature","SubscriptFeature","SuperscriptFeature","UnderlineFeature","HeadingFeature","HorizontalRuleFeature","IndentFeature","$createAutoLinkNode","$isAutoLinkNode","AutoLinkNode","$createLinkNode","$isLinkNode","LinkNode","LinkFeature","ChecklistFeature","OrderedListFeature","UnorderedListFeature","ParagraphFeature","RelationshipFeature","RelationshipServerNode","defaultColors","TextStateFeature","FixedToolbarFeature","InlineToolbarFeature","createNode","UploadFeature","UploadServerNode","defaultEditorConfig","defaultEditorLexicalConfig","loadFeatures","sortFeaturesForOptimalLoading","sanitizeServerEditorConfig","sanitizeServerFeatures","getEnabledNodes","getEnabledNodesFromServerNodes","DETAIL_TYPE_TO_DETAIL","DOUBLE_LINE_BREAK","ELEMENT_FORMAT_TO_TYPE","ELEMENT_TYPE_TO_FORMAT","IS_ALL_FORMATTING","LTR_REGEX","NodeFormat","NON_BREAKING_SPACE","RTL_REGEX","TEXT_MODE_TO_TYPE","TEXT_TYPE_TO_FORMAT","TEXT_TYPE_TO_MODE","sanitizeUrl","validateUrl","$convertFromMarkdownString","defaultRichTextValue","buildDefaultEditorState","buildEditorState","createServerFeature","editorConfigFactory","extractPropsFromJSXPropsString","extractFrontmatter","frontmatterToObject","objectToFrontmatter","propsToJSXString","upgradeLexicalData"],"sources":["../src/index.ts"],"sourcesContent":["import type { GenericLanguages, GenericTranslationsObject } from '@payloadcms/translations'\nimport type { JSONSchema4 } from 'json-schema'\nimport type { SerializedEditorState, SerializedLexicalNode } from 'lexical'\n\nimport {\n afterChangeTraverseFields,\n afterReadTraverseFields,\n beforeChangeTraverseFields,\n beforeValidateTraverseFields,\n checkDependencies,\n deepMergeSimple,\n withNullableJSONSchemaType,\n} from 'payload'\n\nimport type { FeatureProviderServer, ResolvedServerFeatureMap } from './features/typesServer.js'\nimport type { SanitizedServerEditorConfig } from './lexical/config/types.js'\nimport type { AdapterProps, LexicalEditorProps, LexicalRichTextAdapterProvider } from './types.js'\n\nimport { i18n } from './i18n.js'\nimport { defaultEditorFeatures } from './lexical/config/server/default.js'\nimport { populateLexicalPopulationPromises } from './populateGraphQL/populateLexicalPopulationPromises.js'\nimport { featuresInputToEditorConfig } from './utilities/editorConfigFactory.js'\nimport { getGenerateImportMap } from './utilities/generateImportMap.js'\nimport { getGenerateSchemaMap } from './utilities/generateSchemaMap.js'\nimport { getDefaultSanitizedEditorConfig } from './utilities/getDefaultSanitizedEditorConfig.js'\nimport { recurseNodeTree } from './utilities/recurseNodeTree.js'\nimport { richTextValidateHOC } from './validate/index.js'\n\nlet checkedDependencies = false\n\nexport const lexicalTargetVersion = '0.41.0'\n\nexport function lexicalEditor(args?: LexicalEditorProps): LexicalRichTextAdapterProvider {\n if (\n process.env.NODE_ENV !== 'production' &&\n process.env.PAYLOAD_DISABLE_DEPENDENCY_CHECKER !== 'true' &&\n !checkedDependencies\n ) {\n checkedDependencies = true\n void checkDependencies({\n dependencyGroups: [\n {\n name: 'lexical',\n dependencies: [\n 'lexical',\n '@lexical/headless',\n '@lexical/link',\n '@lexical/list',\n '@lexical/mark',\n '@lexical/react',\n '@lexical/rich-text',\n '@lexical/selection',\n '@lexical/utils',\n ],\n targetVersion: lexicalTargetVersion,\n },\n ],\n })\n }\n return async ({ config, isRoot, parentIsLocalized }) => {\n let features: FeatureProviderServer<unknown, unknown, unknown>[] = []\n let resolvedFeatureMap: ResolvedServerFeatureMap\n\n let finalSanitizedEditorConfig: SanitizedServerEditorConfig // For server only\n if (!args || (!args.features && !args.lexical)) {\n finalSanitizedEditorConfig = await getDefaultSanitizedEditorConfig({\n config,\n parentIsLocalized,\n })\n\n features = defaultEditorFeatures\n\n resolvedFeatureMap = finalSanitizedEditorConfig.resolvedFeatureMap\n } else {\n const result = await featuresInputToEditorConfig({\n config,\n features: args?.features,\n isRoot,\n lexical: args?.lexical,\n parentIsLocalized,\n })\n finalSanitizedEditorConfig = result.sanitizedConfig\n features = result.features\n resolvedFeatureMap = result.resolvedFeatureMap\n }\n\n const featureI18n: Partial<GenericLanguages> = finalSanitizedEditorConfig.features.i18n\n for (const _lang in i18n) {\n const lang = _lang as keyof typeof i18n\n const lexicalI18nForLang = ((featureI18n[lang] ??= {}).lexical ??=\n {}) as GenericTranslationsObject\n\n lexicalI18nForLang.general = i18n[lang] ?? {}\n }\n\n config.i18n.translations = deepMergeSimple(config.i18n.translations, featureI18n)\n\n return {\n CellComponent: '@payloadcms/richtext-lexical/rsc#RscEntryLexicalCell',\n DiffComponent: '@payloadcms/richtext-lexical/rsc#LexicalDiffComponent',\n editorConfig: finalSanitizedEditorConfig,\n features,\n FieldComponent: {\n path: '@payloadcms/richtext-lexical/rsc#RscEntryLexicalField',\n serverProps: {\n admin: args?.admin,\n views: args?.views,\n // SanitizedEditorConfig is manually passed by `renderField` in `fieldSchemasToFormState/renderField.tsx`\n // in order to reduce the size of the field schema\n },\n },\n generateImportMap: getGenerateImportMap({\n lexicalEditorArgs: args,\n resolvedFeatureMap,\n }),\n generateSchemaMap: getGenerateSchemaMap({\n resolvedFeatureMap,\n }),\n graphQLPopulationPromises({\n context,\n currentDepth,\n depth,\n draft,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n overrideAccess,\n parentIsLocalized,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n }) {\n // check if there are any features with nodes which have populationPromises for this field\n if (finalSanitizedEditorConfig?.features?.graphQLPopulationPromises?.size) {\n populateLexicalPopulationPromises({\n context,\n currentDepth: currentDepth ?? 0,\n depth,\n draft,\n editorPopulationPromises: finalSanitizedEditorConfig.features.graphQLPopulationPromises,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n overrideAccess,\n parentIsLocalized,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n })\n }\n },\n hooks: {\n afterChange: [\n async (args) => {\n const {\n collection,\n context: _context,\n data,\n field,\n global,\n indexPath,\n operation,\n originalDoc,\n parentIsLocalized,\n path,\n previousDoc,\n previousValue,\n req,\n schemaPath,\n } = args\n\n let { value } = args\n if (finalSanitizedEditorConfig?.features?.hooks?.afterChange?.length) {\n for (const hook of finalSanitizedEditorConfig.features.hooks.afterChange) {\n value = await hook(args)\n }\n }\n if (\n !finalSanitizedEditorConfig.features.nodeHooks?.afterChange?.size &&\n !finalSanitizedEditorConfig.features.getSubFields?.size\n ) {\n return value\n }\n // TO-DO: We should not use context, as it is intended for external use only\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const context: any = _context\n const nodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n const previousNodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n /**\n * Get the originalNodeIDMap from the beforeValidate hook, which is always run before this hook.\n */\n const originalNodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = context?.internal?.richText?.[path.join('.')]?.originalNodeIDMap\n\n if (!originalNodeIDMap || !Object.keys(originalNodeIDMap).length || !value) {\n return value\n }\n\n recurseNodeTree({\n nodeIDMap,\n nodes: (value as SerializedEditorState)?.root?.children ?? [],\n })\n\n recurseNodeTree({\n nodeIDMap: previousNodeIDMap,\n nodes: (previousValue as SerializedEditorState)?.root?.children ?? [],\n })\n\n // eslint-disable-next-line prefer-const\n for (let [id, node] of Object.entries(nodeIDMap)) {\n const afterChangeHooks = finalSanitizedEditorConfig.features.nodeHooks?.afterChange\n const afterChangeHooksForNode = afterChangeHooks?.get(node.type)\n if (afterChangeHooksForNode) {\n for (const hook of afterChangeHooksForNode) {\n if (!originalNodeIDMap[id]) {\n console.warn(\n '(afterChange) No original node found for node with id',\n id,\n 'node:',\n node,\n 'path',\n path.join('.'),\n )\n continue\n }\n node = await hook({\n context,\n node,\n operation,\n originalNode: originalNodeIDMap[id],\n parentRichTextFieldPath: path,\n parentRichTextFieldSchemaPath: schemaPath,\n\n previousNode: previousNodeIDMap[id]!,\n req,\n })\n }\n }\n const subFieldFn = finalSanitizedEditorConfig.features.getSubFields?.get(node.type)\n const subFieldDataFn = finalSanitizedEditorConfig.features.getSubFieldsData?.get(\n node.type,\n )\n\n if (subFieldFn && subFieldDataFn) {\n const subFields = subFieldFn({ node, req })\n const nodeSiblingData = subFieldDataFn({ node, req }) ?? {}\n\n const nodeSiblingDoc = subFieldDataFn({ node: originalNodeIDMap[id]!, req }) ?? {}\n const nodePreviousSiblingDoc =\n subFieldDataFn({ node: previousNodeIDMap[id]!, req }) ?? {}\n\n if (subFields?.length) {\n await afterChangeTraverseFields({\n blockData: nodeSiblingData,\n collection,\n context,\n data: data ?? {},\n doc: originalDoc,\n fields: subFields,\n global,\n operation,\n parentIndexPath: indexPath.join('-'),\n parentIsLocalized: parentIsLocalized || field.localized || false,\n parentPath: path.join('.'),\n parentSchemaPath: schemaPath.join('.'),\n previousDoc,\n previousSiblingDoc: { ...nodePreviousSiblingDoc },\n req,\n siblingData: nodeSiblingData || {},\n siblingDoc: { ...nodeSiblingDoc },\n })\n }\n }\n }\n return value\n },\n ],\n afterRead: [\n /**\n * afterRead hooks do not receive the originalNode. Thus, they can run on all nodes, not just nodes with an ID.\n */\n async (args) => {\n const {\n collection,\n context: context,\n currentDepth,\n depth,\n draft,\n fallbackLocale,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n global,\n indexPath,\n locale,\n originalDoc,\n overrideAccess,\n parentIsLocalized,\n path,\n populate,\n populationPromises,\n req,\n schemaPath,\n showHiddenFields,\n triggerAccessControl,\n triggerHooks,\n } = args\n\n let { value } = args\n\n if (finalSanitizedEditorConfig?.features?.hooks?.afterRead?.length) {\n for (const hook of finalSanitizedEditorConfig.features.hooks.afterRead) {\n value = await hook(args)\n }\n }\n\n if (\n !finalSanitizedEditorConfig.features.nodeHooks?.afterRead?.size &&\n !finalSanitizedEditorConfig.features.getSubFields?.size\n ) {\n return value\n }\n const flattenedNodes: SerializedLexicalNode[] = []\n\n recurseNodeTree({\n flattenedNodes,\n nodes: (value as SerializedEditorState)?.root?.children ?? [],\n })\n\n for (let node of flattenedNodes) {\n const afterReadHooks = finalSanitizedEditorConfig.features.nodeHooks?.afterRead\n const afterReadHooksForNode = afterReadHooks?.get(node.type)\n if (afterReadHooksForNode) {\n for (const hook of afterReadHooksForNode) {\n node = await hook({\n context,\n currentDepth: currentDepth!,\n depth: depth!,\n draft: draft!,\n fallbackLocale: fallbackLocale!,\n fieldPromises: fieldPromises!,\n findMany: findMany!,\n flattenLocales: flattenLocales!,\n locale: locale!,\n node,\n overrideAccess: overrideAccess!,\n parentRichTextFieldPath: path,\n parentRichTextFieldSchemaPath: schemaPath,\n populateArg: populate,\n populationPromises: populationPromises!,\n req,\n showHiddenFields: showHiddenFields!,\n triggerAccessControl: triggerAccessControl!,\n triggerHooks: triggerHooks!,\n })\n }\n }\n const subFieldFn = finalSanitizedEditorConfig.features.getSubFields?.get(node.type)\n const subFieldDataFn = finalSanitizedEditorConfig.features.getSubFieldsData?.get(\n node.type,\n )\n\n if (subFieldFn && subFieldDataFn) {\n const subFields = subFieldFn({ node, req })\n const nodeSiblingData = subFieldDataFn({ node, req }) ?? {}\n\n if (subFields?.length) {\n afterReadTraverseFields({\n blockData: nodeSiblingData,\n collection,\n context,\n currentDepth: currentDepth!,\n depth: depth!,\n doc: originalDoc,\n draft: draft!,\n fallbackLocale: fallbackLocale!,\n fieldPromises: fieldPromises!,\n fields: subFields,\n findMany: findMany!,\n flattenLocales: flattenLocales!,\n global,\n locale: locale!,\n overrideAccess: overrideAccess!,\n parentIndexPath: indexPath.join('-'),\n parentIsLocalized: parentIsLocalized || field.localized || false,\n parentPath: path.join('.'),\n parentSchemaPath: schemaPath.join('.'),\n populate,\n populationPromises: populationPromises!,\n req,\n showHiddenFields: showHiddenFields!,\n siblingDoc: nodeSiblingData,\n triggerAccessControl,\n triggerHooks,\n })\n }\n }\n }\n\n return value\n },\n ],\n beforeChange: [\n async (args) => {\n const {\n collection,\n context: _context,\n data,\n docWithLocales,\n errors,\n field,\n fieldLabelPath,\n global,\n indexPath,\n mergeLocaleActions,\n operation,\n originalDoc,\n overrideAccess,\n parentIsLocalized,\n path,\n previousValue,\n req,\n schemaPath,\n siblingData,\n siblingDocWithLocales,\n skipValidation,\n } = args\n\n let { value } = args\n\n if (finalSanitizedEditorConfig?.features?.hooks?.beforeChange?.length) {\n for (const hook of finalSanitizedEditorConfig.features.hooks.beforeChange) {\n value = await hook(args)\n }\n }\n\n if (\n !finalSanitizedEditorConfig.features.nodeHooks?.beforeChange?.size &&\n !finalSanitizedEditorConfig.features.getSubFields?.size\n ) {\n return value\n }\n\n // TO-DO: We should not use context, as it is intended for external use only\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const context: any = _context\n const nodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n /**\n * Get the originalNodeIDMap from the beforeValidate hook, which is always run before this hook.\n */\n const originalNodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = context?.internal?.richText?.[path.join('.')]?.originalNodeIDMap\n\n if (!originalNodeIDMap || !Object.keys(originalNodeIDMap).length || !value) {\n return value\n }\n\n const previousNodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n const originalNodeWithLocalesIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n recurseNodeTree({\n nodeIDMap,\n nodes: (value as SerializedEditorState)?.root?.children ?? [],\n })\n\n recurseNodeTree({\n nodeIDMap: previousNodeIDMap,\n nodes: (previousValue as SerializedEditorState)?.root?.children ?? [],\n })\n if (field.name && siblingDocWithLocales?.[field.name]) {\n recurseNodeTree({\n nodeIDMap: originalNodeWithLocalesIDMap,\n nodes:\n (siblingDocWithLocales[field.name] as SerializedEditorState)?.root?.children ??\n [],\n })\n }\n\n // eslint-disable-next-line prefer-const\n for (let [id, node] of Object.entries(nodeIDMap)) {\n const beforeChangeHooks = finalSanitizedEditorConfig.features.nodeHooks?.beforeChange\n const beforeChangeHooksForNode = beforeChangeHooks?.get(node.type)\n if (beforeChangeHooksForNode) {\n for (const hook of beforeChangeHooksForNode) {\n if (!originalNodeIDMap[id]) {\n console.warn(\n '(beforeChange) No original node found for node with id',\n id,\n 'node:',\n node,\n 'path',\n path.join('.'),\n )\n continue\n }\n node = await hook({\n context,\n errors: errors!,\n mergeLocaleActions: mergeLocaleActions!,\n node,\n operation: operation!,\n originalNode: originalNodeIDMap[id],\n originalNodeWithLocales: originalNodeWithLocalesIDMap[id],\n parentRichTextFieldPath: path,\n parentRichTextFieldSchemaPath: schemaPath,\n previousNode: previousNodeIDMap[id]!,\n req,\n skipValidation: skipValidation!,\n })\n }\n }\n\n const subFieldFn = finalSanitizedEditorConfig.features.getSubFields?.get(node.type)\n const subFieldDataFn = finalSanitizedEditorConfig.features.getSubFieldsData?.get(\n node.type,\n )\n\n if (subFieldFn && subFieldDataFn) {\n const subFields = subFieldFn({ node, req })\n const nodeSiblingData = subFieldDataFn({ node, req }) ?? {}\n const nodeSiblingDocWithLocales =\n subFieldDataFn({\n node: originalNodeWithLocalesIDMap[id]!,\n req,\n }) ?? {}\n const nodePreviousSiblingDoc =\n subFieldDataFn({ node: previousNodeIDMap[id]!, req }) ?? {}\n\n if (subFields?.length) {\n await beforeChangeTraverseFields({\n id,\n blockData: nodeSiblingData,\n collection,\n context,\n data: data ?? {},\n doc: originalDoc ?? {},\n docWithLocales: docWithLocales ?? {},\n errors: errors!,\n fieldLabelPath,\n fields: subFields,\n global,\n mergeLocaleActions: mergeLocaleActions!,\n operation: operation!,\n overrideAccess,\n parentIndexPath: indexPath.join('-'),\n parentIsLocalized: parentIsLocalized || field.localized || false,\n parentPath: path.join('.'),\n parentSchemaPath: schemaPath.join('.'),\n req,\n siblingData: nodeSiblingData,\n siblingDoc: nodePreviousSiblingDoc,\n siblingDocWithLocales: nodeSiblingDocWithLocales ?? {},\n skipValidation,\n })\n }\n }\n }\n\n /**\n * within the beforeChange hook, id's may be re-generated.\n * Example:\n * 1. Seed data contains IDs for block feature blocks.\n * 2. Those are used in beforeValidate\n * 3. in beforeChange, those IDs are regenerated, because you cannot provide IDs during document creation. See baseIDField beforeChange hook for reasoning\n * 4. Thus, in order for all post-beforeChange hooks to receive the correct ID, we need to update the originalNodeIDMap with the new ID's, by regenerating the nodeIDMap.\n * The reason this is not generated for every hook, is to save on performance. We know we only really have to generate it in beforeValidate, which is the first hook,\n * and in beforeChange, which is where modifications to the provided IDs can occur.\n */\n const newOriginalNodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n const previousOriginalValue = siblingData[field.name!]\n\n recurseNodeTree({\n nodeIDMap: newOriginalNodeIDMap,\n nodes: (previousOriginalValue as SerializedEditorState)?.root?.children ?? [],\n })\n\n if (!context.internal) {\n // Add to context, for other hooks to use\n context.internal = {}\n }\n if (!context.internal.richText) {\n context.internal.richText = {}\n }\n context.internal.richText[path.join('.')] = {\n originalNodeIDMap: newOriginalNodeIDMap,\n }\n\n return value\n },\n ],\n beforeValidate: [\n async (args) => {\n const {\n collection,\n context,\n data,\n field,\n global,\n indexPath,\n operation,\n originalDoc,\n overrideAccess,\n parentIsLocalized,\n path,\n previousValue,\n req,\n schemaPath,\n } = args\n\n let { value } = args\n if (finalSanitizedEditorConfig?.features?.hooks?.beforeValidate?.length) {\n for (const hook of finalSanitizedEditorConfig.features.hooks.beforeValidate) {\n value = await hook(args)\n }\n }\n\n // return value if there are NO hooks\n if (\n !finalSanitizedEditorConfig.features.nodeHooks?.beforeValidate?.size &&\n !finalSanitizedEditorConfig.features.nodeHooks?.afterChange?.size &&\n !finalSanitizedEditorConfig.features.nodeHooks?.beforeChange?.size &&\n !finalSanitizedEditorConfig.features.getSubFields?.size\n ) {\n return value\n }\n\n /**\n * beforeValidate is the first field hook which runs. This is where we can create the node map, which can then be used in the other hooks.\n *\n */\n\n /**\n * flattenedNodes contains all nodes in the editor, in the order they appear in the editor. They will be used for the following hooks:\n * - afterRead\n *\n * The other hooks require nodes to have IDs, which is why those are ran only from the nodeIDMap. They require IDs because they have both doc/siblingDoc and data/siblingData, and\n * thus require a reliable way to match new node data to old node data. Given that node positions can change in between hooks, this is only reliably possible for nodes which are saved with\n * an ID.\n */\n //const flattenedNodes: SerializedLexicalNode[] = []\n\n /**\n * Only nodes with id's (so, nodes with hooks added to them) will be added to the nodeIDMap. They will be used for the following hooks:\n * - afterChange\n * - beforeChange\n * - beforeValidate\n *\n * Other hooks are handled by the flattenedNodes. All nodes in the nodeIDMap are part of flattenedNodes.\n */\n\n const originalNodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n recurseNodeTree({\n nodeIDMap: originalNodeIDMap,\n nodes: (previousValue as SerializedEditorState)?.root?.children ?? [],\n })\n\n if (!context.internal) {\n // Add to context, for other hooks to use\n context.internal = {}\n }\n if (!(context as any).internal.richText) {\n ;(context as any).internal.richText = {}\n }\n ;(context as any).internal.richText[path.join('.')] = {\n originalNodeIDMap,\n }\n\n /**\n * Now that the maps for all hooks are set up, we can run the validate hook\n */\n if (!finalSanitizedEditorConfig.features.nodeHooks?.beforeValidate?.size) {\n return value\n }\n const nodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n recurseNodeTree({\n //flattenedNodes,\n nodeIDMap,\n nodes: (value as SerializedEditorState)?.root?.children ?? [],\n })\n\n // eslint-disable-next-line prefer-const\n for (let [id, node] of Object.entries(nodeIDMap)) {\n const beforeValidateHooks =\n finalSanitizedEditorConfig.features.nodeHooks.beforeValidate\n const beforeValidateHooksForNode = beforeValidateHooks?.get(node.type)\n if (beforeValidateHooksForNode) {\n for (const hook of beforeValidateHooksForNode) {\n if (!originalNodeIDMap[id]) {\n console.warn(\n '(beforeValidate) No original node found for node with id',\n id,\n 'node:',\n node,\n 'path',\n path.join('.'),\n )\n continue\n }\n node = await hook({\n context,\n node,\n operation,\n originalNode: originalNodeIDMap[id],\n overrideAccess: overrideAccess!,\n parentRichTextFieldPath: path,\n parentRichTextFieldSchemaPath: schemaPath,\n req,\n })\n }\n }\n const subFieldFn = finalSanitizedEditorConfig.features.getSubFields?.get(node.type)\n const subFieldDataFn = finalSanitizedEditorConfig.features.getSubFieldsData?.get(\n node.type,\n )\n\n if (subFieldFn && subFieldDataFn) {\n const subFields = subFieldFn({ node, req })\n const nodeSiblingData = subFieldDataFn({ node, req }) ?? {}\n\n const nodeSiblingDoc = subFieldDataFn({ node: originalNodeIDMap[id]!, req }) ?? {}\n\n if (subFields?.length) {\n await beforeValidateTraverseFields({\n id,\n blockData: nodeSiblingData,\n collection,\n context,\n data,\n doc: originalDoc,\n fields: subFields,\n global,\n operation,\n overrideAccess: overrideAccess!,\n parentIndexPath: indexPath.join('-'),\n parentIsLocalized: parentIsLocalized || field.localized || false,\n parentPath: path.join('.'),\n parentSchemaPath: schemaPath.join('.'),\n req,\n siblingData: nodeSiblingData,\n siblingDoc: nodeSiblingDoc,\n })\n }\n }\n }\n\n return value\n },\n ],\n },\n outputSchema: ({\n collectionIDFieldTypes,\n config,\n field,\n i18n,\n interfaceNameDefinitions,\n isRequired,\n }) => {\n let outputSchema: JSONSchema4 = {\n // This schema matches the SerializedEditorState type so far, that it's possible to cast SerializedEditorState to this schema without any errors.\n // In the future, we should\n // 1) allow recursive children\n // 2) Pass in all the different types for every node added to the editorconfig. This can be done with refs in the schema.\n type: withNullableJSONSchemaType('object', isRequired),\n properties: {\n root: {\n type: 'object',\n additionalProperties: false,\n properties: {\n type: {\n type: 'string',\n },\n children: {\n type: 'array',\n items: {\n type: 'object',\n additionalProperties: true,\n properties: {\n type: {\n type: 'string',\n tsType: 'any',\n },\n version: {\n type: 'integer',\n },\n },\n required: ['type', 'version'],\n },\n },\n direction: {\n oneOf: [\n {\n enum: ['ltr', 'rtl'],\n },\n {\n type: 'null',\n },\n ],\n },\n format: {\n type: 'string',\n enum: ['left', 'start', 'center', 'right', 'end', 'justify', ''], // ElementFormatType, since the root node is an element\n },\n indent: {\n type: 'integer',\n },\n version: {\n type: 'integer',\n },\n },\n required: ['children', 'direction', 'format', 'indent', 'type', 'version'],\n },\n },\n required: ['root'],\n }\n for (const modifyOutputSchema of finalSanitizedEditorConfig.features.generatedTypes\n .modifyOutputSchemas) {\n outputSchema = modifyOutputSchema({\n collectionIDFieldTypes,\n config,\n currentSchema: outputSchema,\n field,\n i18n,\n interfaceNameDefinitions,\n isRequired,\n })\n }\n\n return outputSchema\n },\n validate: richTextValidateHOC({\n editorConfig: finalSanitizedEditorConfig,\n }),\n }\n }\n}\n\nexport { AlignFeature } from './features/align/server/index.js'\nexport { BlockquoteFeature } from './features/blockquote/server/index.js'\nexport { CodeBlock } from './features/blocks/premade/CodeBlock/index.js'\nexport { BlocksFeature } from './features/blocks/server/index.js'\nexport type {\n BlocksFeatureProps,\n LexicalBlockClientProps,\n LexicalBlockLabelClientProps,\n LexicalBlockLabelServerProps,\n LexicalBlockServerProps,\n LexicalInlineBlockClientProps,\n LexicalInlineBlockLabelClientProps,\n LexicalInlineBlockLabelServerProps,\n LexicalInlineBlockServerProps,\n} from './features/blocks/server/index.js'\n\nexport {\n $createServerBlockNode,\n $isServerBlockNode,\n type BlockFields,\n ServerBlockNode,\n} from './features/blocks/server/nodes/BlocksNode.js'\n\nexport {\n $createServerInlineBlockNode,\n $isServerInlineBlockNode,\n type InlineBlockFields,\n ServerInlineBlockNode,\n} from './features/blocks/server/nodes/InlineBlocksNode.js'\n\nexport { convertHTMLToLexical } from './features/converters/htmlToLexical/index.js'\n\nexport { lexicalHTMLField } from './features/converters/lexicalToHtml/async/field/index.js'\nexport { LinebreakHTMLConverter } from './features/converters/lexicalToHtml_deprecated/converter/converters/linebreak.js'\n\nexport { ParagraphHTMLConverter } from './features/converters/lexicalToHtml_deprecated/converter/converters/paragraph.js'\n\nexport { TabHTMLConverter } from './features/converters/lexicalToHtml_deprecated/converter/converters/tab.js'\nexport { TextHTMLConverter } from './features/converters/lexicalToHtml_deprecated/converter/converters/text.js'\nexport { defaultHTMLConverters } from './features/converters/lexicalToHtml_deprecated/converter/defaultConverters.js'\n\nexport {\n convertLexicalNodesToHTML,\n convertLexicalToHTML,\n} from './features/converters/lexicalToHtml_deprecated/converter/index.js'\nexport type { HTMLConverter } from './features/converters/lexicalToHtml_deprecated/converter/types.js'\nexport {\n consolidateHTMLConverters,\n lexicalHTML,\n} from './features/converters/lexicalToHtml_deprecated/field/index.js'\nexport {\n HTMLConverterFeature,\n type HTMLConverterFeatureProps,\n} from './features/converters/lexicalToHtml_deprecated/index.js'\nexport { convertLexicalToMarkdown } from './features/converters/lexicalToMarkdown/index.js'\nexport { convertMarkdownToLexical } from './features/converters/markdownToLexical/index.js'\nexport { getPayloadPopulateFn } from './features/converters/utilities/payloadPopulateFn.js'\n\nexport { getRestPopulateFn } from './features/converters/utilities/restPopulateFn.js'\nexport { DebugJsxConverterFeature } from './features/debug/jsxConverter/server/index.js'\nexport { TestRecorderFeature } from './features/debug/testRecorder/server/index.js'\nexport { TreeViewFeature } from './features/debug/treeView/server/index.js'\nexport { EXPERIMENTAL_TableFeature } from './features/experimental_table/server/index.js'\nexport { BoldFeature } from './features/format/bold/feature.server.js'\nexport { InlineCodeFeature } from './features/format/inlineCode/feature.server.js'\n\nexport { ItalicFeature } from './features/format/italic/feature.server.js'\nexport { StrikethroughFeature } from './features/format/strikethrough/feature.server.js'\nexport { SubscriptFeature } from './features/format/subscript/feature.server.js'\nexport { SuperscriptFeature } from './features/format/superscript/feature.server.js'\nexport { UnderlineFeature } from './features/format/underline/feature.server.js'\nexport { HeadingFeature, type HeadingFeatureProps } from './features/heading/server/index.js'\nexport { HorizontalRuleFeature } from './features/horizontalRule/server/index.js'\n\nexport { IndentFeature } from './features/indent/server/index.js'\nexport {\n $createAutoLinkNode,\n $isAutoLinkNode,\n AutoLinkNode,\n} from './features/link/nodes/AutoLinkNode.js'\nexport { $createLinkNode, $isLinkNode, LinkNode } from './features/link/nodes/LinkNode.js'\n\nexport type { LinkFields } from './features/link/nodes/types.js'\nexport { LinkFeature, type LinkFeatureServerProps } from './features/link/server/index.js'\n\nexport { ChecklistFeature } from './features/lists/checklist/server/index.js'\nexport { OrderedListFeature } from './features/lists/orderedList/server/index.js'\n\nexport { UnorderedListFeature } from './features/lists/unorderedList/server/index.js'\nexport type {\n SlateNode,\n SlateNodeConverter,\n} from './features/migrations/slateToLexical/converter/types.js'\nexport { ParagraphFeature } from './features/paragraph/server/index.js'\n\nexport {\n RelationshipFeature,\n type RelationshipFeatureProps,\n} from './features/relationship/server/index.js'\n\nexport {\n type RelationshipData,\n RelationshipServerNode,\n} from './features/relationship/server/nodes/RelationshipNode.js'\nexport { defaultColors } from './features/textState/defaultColors.js'\nexport { TextStateFeature } from './features/textState/feature.server.js'\n\nexport { FixedToolbarFeature } from './features/toolbars/fixed/server/index.js'\n\nexport { InlineToolbarFeature } from './features/toolbars/inline/server/index.js'\nexport type { ToolbarGroup, ToolbarGroupItem } from './features/toolbars/types.js'\nexport type {\n BaseClientFeatureProps,\n ClientFeature,\n ClientFeatureProviderMap,\n FeatureProviderClient,\n FeatureProviderProviderClient,\n PluginComponent,\n PluginComponentWithAnchor,\n ResolvedClientFeature,\n ResolvedClientFeatureMap,\n SanitizedClientFeatures,\n SanitizedPlugin,\n} from './features/typesClient.js'\n\nexport type {\n AfterChangeNodeHook,\n AfterChangeNodeHookArgs,\n AfterReadNodeHook,\n AfterReadNodeHookArgs,\n BaseNodeHookArgs,\n BeforeChangeNodeHook,\n BeforeChangeNodeHookArgs,\n BeforeValidateNodeHook,\n BeforeValidateNodeHookArgs,\n FeatureProviderProviderServer,\n FeatureProviderServer,\n NodeValidation,\n NodeWithHooks,\n PopulationPromise,\n ResolvedServerFeature,\n ResolvedServerFeatureMap,\n SanitizedServerFeatures,\n ServerFeature,\n ServerFeatureProviderMap,\n} from './features/typesServer.js'\n\nexport { createNode } from './features/typeUtilities.js' // Only useful in feature.server.ts\n\nexport { UploadFeature } from './features/upload/server/index.js'\nexport type { UploadFeatureProps } from './features/upload/server/index.js'\n\nexport { type UploadData, UploadServerNode } from './features/upload/server/nodes/UploadNode.js'\nexport type { EditorConfigContextType } from './lexical/config/client/EditorConfigProvider.js'\n\nexport {\n defaultEditorConfig,\n defaultEditorFeatures,\n defaultEditorLexicalConfig,\n} from './lexical/config/server/default.js'\nexport { loadFeatures, sortFeaturesForOptimalLoading } from './lexical/config/server/loader.js'\n\nexport {\n sanitizeServerEditorConfig,\n sanitizeServerFeatures,\n} from './lexical/config/server/sanitize.js'\nexport type {\n ClientEditorConfig,\n SanitizedClientEditorConfig,\n SanitizedServerEditorConfig,\n ServerEditorConfig,\n} from './lexical/config/types.js'\nexport type { AdapterProps }\n\nexport { getEnabledNodes, getEnabledNodesFromServerNodes } from './lexical/nodes/index.js'\n\nexport type {\n SlashMenuGroup,\n SlashMenuItem,\n} from './lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js'\nexport {\n DETAIL_TYPE_TO_DETAIL,\n DOUBLE_LINE_BREAK,\n ELEMENT_FORMAT_TO_TYPE,\n ELEMENT_TYPE_TO_FORMAT,\n IS_ALL_FORMATTING,\n LTR_REGEX,\n NodeFormat,\n NON_BREAKING_SPACE,\n RTL_REGEX,\n TEXT_MODE_TO_TYPE,\n TEXT_TYPE_TO_FORMAT,\n TEXT_TYPE_TO_MODE,\n} from './lexical/utils/nodeFormat.js'\n\nexport { sanitizeUrl, validateUrl } from './lexical/utils/url.js'\n\nexport type * from './nodeTypes.js'\n\nexport { $convertFromMarkdownString } from './packages/@lexical/markdown/index.js'\nexport { defaultRichTextValue } from './populateGraphQL/defaultValue.js'\nexport { populate } from './populateGraphQL/populate.js'\n\nexport type {\n ClientFeaturesMap,\n LexicalEditorNodeMap,\n LexicalEditorProps,\n LexicalEditorViewMap,\n LexicalFieldAdminProps,\n LexicalRichTextAdapter,\n NodeMapValue,\n SerializedNodeBase,\n ViewMapBlockComponentProps,\n} from './types.js'\n\nexport { buildDefaultEditorState, buildEditorState } from './utilities/buildEditorState.js'\nexport { createServerFeature } from './utilities/createServerFeature.js'\n\nexport { editorConfigFactory } from './utilities/editorConfigFactory.js'\nexport type { FieldsDrawerProps } from './utilities/fieldsDrawer/Drawer.js'\n\nexport { extractPropsFromJSXPropsString } from './utilities/jsx/extractPropsFromJSXPropsString.js'\n\nexport {\n extractFrontmatter,\n frontmatterToObject,\n objectToFrontmatter,\n propsToJSXString,\n} from './utilities/jsx/jsx.js'\nexport { upgradeLexicalData } from './utilities/upgradeLexicalData/index.js'\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["afterChangeTraverseFields","afterReadTraverseFields","beforeChangeTraverseFields","beforeValidateTraverseFields","checkDependencies","deepMergeSimple","withNullableJSONSchemaType","i18n","defaultEditorFeatures","populateLexicalPopulationPromises","featuresInputToEditorConfig","getGenerateImportMap","getGenerateSchemaMap","getDefaultSanitizedEditorConfig","recurseNodeTree","richTextValidateHOC","checkedDependencies","lexicalTargetVersion","lexicalEditor","args","process","env","NODE_ENV","PAYLOAD_DISABLE_DEPENDENCY_CHECKER","dependencyGroups","name","dependencies","targetVersion","config","isRoot","parentIsLocalized","features","resolvedFeatureMap","finalSanitizedEditorConfig","lexical","result","sanitizedConfig","featureI18n","supportedLanguages","supportedLanguagesToMerge","_lang","lang","lexicalI18nForLang","general","translations","CellComponent","DiffComponent","editorConfig","FieldComponent","path","serverProps","admin","views","generateImportMap","lexicalEditorArgs","generateSchemaMap","graphQLPopulationPromises","context","currentDepth","depth","draft","field","fieldPromises","findMany","flattenLocales","overrideAccess","populationPromises","req","showHiddenFields","siblingDoc","size","editorPopulationPromises","hooks","afterChange","collection","_context","data","global","indexPath","operation","originalDoc","previousDoc","previousValue","schemaPath","value","length","hook","nodeHooks","getSubFields","nodeIDMap","previousNodeIDMap","originalNodeIDMap","internal","richText","join","Object","keys","nodes","root","children","id","node","entries","afterChangeHooks","afterChangeHooksForNode","get","type","console","warn","originalNode","parentRichTextFieldPath","parentRichTextFieldSchemaPath","previousNode","subFieldFn","subFieldDataFn","getSubFieldsData","subFields","nodeSiblingData","nodeSiblingDoc","nodePreviousSiblingDoc","blockData","doc","fields","parentIndexPath","localized","parentPath","parentSchemaPath","previousSiblingDoc","siblingData","afterRead","fallbackLocale","locale","populate","triggerAccessControl","triggerHooks","flattenedNodes","afterReadHooks","afterReadHooksForNode","populateArg","beforeChange","docWithLocales","errors","fieldLabelPath","mergeLocaleActions","siblingDocWithLocales","skipValidation","originalNodeWithLocalesIDMap","beforeChangeHooks","beforeChangeHooksForNode","originalNodeWithLocales","nodeSiblingDocWithLocales","newOriginalNodeIDMap","previousOriginalValue","beforeValidate","beforeValidateHooks","beforeValidateHooksForNode","outputSchema","collectionIDFieldTypes","interfaceNameDefinitions","isRequired","properties","additionalProperties","items","tsType","version","required","direction","oneOf","enum","format","indent","modifyOutputSchema","generatedTypes","modifyOutputSchemas","currentSchema","validate","AlignFeature","BlockquoteFeature","CodeBlock","BlocksFeature","$createServerBlockNode","$isServerBlockNode","ServerBlockNode","$createServerInlineBlockNode","$isServerInlineBlockNode","ServerInlineBlockNode","convertHTMLToLexical","lexicalHTMLField","LinebreakHTMLConverter","ParagraphHTMLConverter","TabHTMLConverter","TextHTMLConverter","defaultHTMLConverters","convertLexicalNodesToHTML","convertLexicalToHTML","consolidateHTMLConverters","lexicalHTML","HTMLConverterFeature","convertLexicalToMarkdown","convertMarkdownToLexical","getPayloadPopulateFn","getRestPopulateFn","DebugJsxConverterFeature","TestRecorderFeature","TreeViewFeature","EXPERIMENTAL_TableFeature","BoldFeature","InlineCodeFeature","ItalicFeature","StrikethroughFeature","SubscriptFeature","SuperscriptFeature","UnderlineFeature","HeadingFeature","HorizontalRuleFeature","IndentFeature","$createAutoLinkNode","$isAutoLinkNode","AutoLinkNode","$createLinkNode","$isLinkNode","LinkNode","LinkFeature","ChecklistFeature","OrderedListFeature","UnorderedListFeature","ParagraphFeature","RelationshipFeature","RelationshipServerNode","defaultColors","TextStateFeature","FixedToolbarFeature","InlineToolbarFeature","createNode","UploadFeature","UploadServerNode","defaultEditorConfig","defaultEditorLexicalConfig","loadFeatures","sortFeaturesForOptimalLoading","sanitizeServerEditorConfig","sanitizeServerFeatures","getEnabledNodes","getEnabledNodesFromServerNodes","DETAIL_TYPE_TO_DETAIL","DOUBLE_LINE_BREAK","ELEMENT_FORMAT_TO_TYPE","ELEMENT_TYPE_TO_FORMAT","IS_ALL_FORMATTING","LTR_REGEX","NodeFormat","NON_BREAKING_SPACE","RTL_REGEX","TEXT_MODE_TO_TYPE","TEXT_TYPE_TO_FORMAT","TEXT_TYPE_TO_MODE","sanitizeUrl","validateUrl","$convertFromMarkdownString","defaultRichTextValue","buildDefaultEditorState","buildEditorState","createServerFeature","editorConfigFactory","extractPropsFromJSXPropsString","extractFrontmatter","frontmatterToObject","objectToFrontmatter","propsToJSXString","upgradeLexicalData"],"sources":["../src/index.ts"],"sourcesContent":["import type { GenericLanguages, GenericTranslationsObject } from '@payloadcms/translations'\nimport type { JSONSchema4 } from 'json-schema'\nimport type { SerializedEditorState, SerializedLexicalNode } from 'lexical'\n\nimport {\n afterChangeTraverseFields,\n afterReadTraverseFields,\n beforeChangeTraverseFields,\n beforeValidateTraverseFields,\n checkDependencies,\n deepMergeSimple,\n withNullableJSONSchemaType,\n} from 'payload'\n\nimport type { FeatureProviderServer, ResolvedServerFeatureMap } from './features/typesServer.js'\nimport type { SanitizedServerEditorConfig } from './lexical/config/types.js'\nimport type { AdapterProps, LexicalEditorProps, LexicalRichTextAdapterProvider } from './types.js'\n\nimport { i18n } from './i18n.js'\nimport { defaultEditorFeatures } from './lexical/config/server/default.js'\nimport { populateLexicalPopulationPromises } from './populateGraphQL/populateLexicalPopulationPromises.js'\nimport { featuresInputToEditorConfig } from './utilities/editorConfigFactory.js'\nimport { getGenerateImportMap } from './utilities/generateImportMap.js'\nimport { getGenerateSchemaMap } from './utilities/generateSchemaMap.js'\nimport { getDefaultSanitizedEditorConfig } from './utilities/getDefaultSanitizedEditorConfig.js'\nimport { recurseNodeTree } from './utilities/recurseNodeTree.js'\nimport { richTextValidateHOC } from './validate/index.js'\n\nlet checkedDependencies = false\n\nexport const lexicalTargetVersion = '0.41.0'\n\nexport function lexicalEditor(args?: LexicalEditorProps): LexicalRichTextAdapterProvider {\n if (\n process.env.NODE_ENV !== 'production' &&\n process.env.PAYLOAD_DISABLE_DEPENDENCY_CHECKER !== 'true' &&\n !checkedDependencies\n ) {\n checkedDependencies = true\n void checkDependencies({\n dependencyGroups: [\n {\n name: 'lexical',\n dependencies: [\n 'lexical',\n '@lexical/headless',\n '@lexical/link',\n '@lexical/list',\n '@lexical/mark',\n '@lexical/react',\n '@lexical/rich-text',\n '@lexical/selection',\n '@lexical/utils',\n ],\n targetVersion: lexicalTargetVersion,\n },\n ],\n })\n }\n return async ({ config, isRoot, parentIsLocalized }) => {\n let features: FeatureProviderServer<unknown, unknown, unknown>[] = []\n let resolvedFeatureMap: ResolvedServerFeatureMap\n\n let finalSanitizedEditorConfig: SanitizedServerEditorConfig // For server only\n if (!args || (!args.features && !args.lexical)) {\n finalSanitizedEditorConfig = await getDefaultSanitizedEditorConfig({\n config,\n parentIsLocalized,\n })\n\n features = defaultEditorFeatures\n\n resolvedFeatureMap = finalSanitizedEditorConfig.resolvedFeatureMap\n } else {\n const result = await featuresInputToEditorConfig({\n config,\n features: args?.features,\n isRoot,\n lexical: args?.lexical,\n parentIsLocalized,\n })\n finalSanitizedEditorConfig = result.sanitizedConfig\n features = result.features\n resolvedFeatureMap = result.resolvedFeatureMap\n }\n\n const featureI18n: Partial<GenericLanguages> = finalSanitizedEditorConfig.features.i18n\n const supportedLanguages = config.i18n?.supportedLanguages\n const supportedLanguagesToMerge: Partial<GenericLanguages> = {}\n for (const _lang in supportedLanguages) {\n if (!(_lang in i18n)) {\n if (featureI18n[_lang as keyof typeof i18n]) {\n supportedLanguagesToMerge[_lang as keyof typeof i18n] =\n featureI18n[_lang as keyof typeof i18n]\n }\n continue\n }\n const lang = _lang as keyof typeof i18n\n const lexicalI18nForLang = ((featureI18n[lang] ??= {}).lexical ??=\n {}) as GenericTranslationsObject\n\n lexicalI18nForLang.general = i18n[lang] ?? {}\n supportedLanguagesToMerge[lang] = featureI18n[lang]\n }\n\n config.i18n.translations = deepMergeSimple(config.i18n.translations, supportedLanguagesToMerge)\n\n return {\n CellComponent: '@payloadcms/richtext-lexical/rsc#RscEntryLexicalCell',\n DiffComponent: '@payloadcms/richtext-lexical/rsc#LexicalDiffComponent',\n editorConfig: finalSanitizedEditorConfig,\n features,\n FieldComponent: {\n path: '@payloadcms/richtext-lexical/rsc#RscEntryLexicalField',\n serverProps: {\n admin: args?.admin,\n views: args?.views,\n // SanitizedEditorConfig is manually passed by `renderField` in `fieldSchemasToFormState/renderField.tsx`\n // in order to reduce the size of the field schema\n },\n },\n generateImportMap: getGenerateImportMap({\n lexicalEditorArgs: args,\n resolvedFeatureMap,\n }),\n generateSchemaMap: getGenerateSchemaMap({\n resolvedFeatureMap,\n }),\n graphQLPopulationPromises({\n context,\n currentDepth,\n depth,\n draft,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n overrideAccess,\n parentIsLocalized,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n }) {\n // check if there are any features with nodes which have populationPromises for this field\n if (finalSanitizedEditorConfig?.features?.graphQLPopulationPromises?.size) {\n populateLexicalPopulationPromises({\n context,\n currentDepth: currentDepth ?? 0,\n depth,\n draft,\n editorPopulationPromises: finalSanitizedEditorConfig.features.graphQLPopulationPromises,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n overrideAccess,\n parentIsLocalized,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n })\n }\n },\n hooks: {\n afterChange: [\n async (args) => {\n const {\n collection,\n context: _context,\n data,\n field,\n global,\n indexPath,\n operation,\n originalDoc,\n parentIsLocalized,\n path,\n previousDoc,\n previousValue,\n req,\n schemaPath,\n } = args\n\n let { value } = args\n if (finalSanitizedEditorConfig?.features?.hooks?.afterChange?.length) {\n for (const hook of finalSanitizedEditorConfig.features.hooks.afterChange) {\n value = await hook(args)\n }\n }\n if (\n !finalSanitizedEditorConfig.features.nodeHooks?.afterChange?.size &&\n !finalSanitizedEditorConfig.features.getSubFields?.size\n ) {\n return value\n }\n // TO-DO: We should not use context, as it is intended for external use only\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const context: any = _context\n const nodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n const previousNodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n /**\n * Get the originalNodeIDMap from the beforeValidate hook, which is always run before this hook.\n */\n const originalNodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = context?.internal?.richText?.[path.join('.')]?.originalNodeIDMap\n\n if (!originalNodeIDMap || !Object.keys(originalNodeIDMap).length || !value) {\n return value\n }\n\n recurseNodeTree({\n nodeIDMap,\n nodes: (value as SerializedEditorState)?.root?.children ?? [],\n })\n\n recurseNodeTree({\n nodeIDMap: previousNodeIDMap,\n nodes: (previousValue as SerializedEditorState)?.root?.children ?? [],\n })\n\n // eslint-disable-next-line prefer-const\n for (let [id, node] of Object.entries(nodeIDMap)) {\n const afterChangeHooks = finalSanitizedEditorConfig.features.nodeHooks?.afterChange\n const afterChangeHooksForNode = afterChangeHooks?.get(node.type)\n if (afterChangeHooksForNode) {\n for (const hook of afterChangeHooksForNode) {\n if (!originalNodeIDMap[id]) {\n console.warn(\n '(afterChange) No original node found for node with id',\n id,\n 'node:',\n node,\n 'path',\n path.join('.'),\n )\n continue\n }\n node = await hook({\n context,\n node,\n operation,\n originalNode: originalNodeIDMap[id],\n parentRichTextFieldPath: path,\n parentRichTextFieldSchemaPath: schemaPath,\n\n previousNode: previousNodeIDMap[id]!,\n req,\n })\n }\n }\n const subFieldFn = finalSanitizedEditorConfig.features.getSubFields?.get(node.type)\n const subFieldDataFn = finalSanitizedEditorConfig.features.getSubFieldsData?.get(\n node.type,\n )\n\n if (subFieldFn && subFieldDataFn) {\n const subFields = subFieldFn({ node, req })\n const nodeSiblingData = subFieldDataFn({ node, req }) ?? {}\n\n const nodeSiblingDoc = subFieldDataFn({ node: originalNodeIDMap[id]!, req }) ?? {}\n const nodePreviousSiblingDoc =\n subFieldDataFn({ node: previousNodeIDMap[id]!, req }) ?? {}\n\n if (subFields?.length) {\n await afterChangeTraverseFields({\n blockData: nodeSiblingData,\n collection,\n context,\n data: data ?? {},\n doc: originalDoc,\n fields: subFields,\n global,\n operation,\n parentIndexPath: indexPath.join('-'),\n parentIsLocalized: parentIsLocalized || field.localized || false,\n parentPath: path.join('.'),\n parentSchemaPath: schemaPath.join('.'),\n previousDoc,\n previousSiblingDoc: { ...nodePreviousSiblingDoc },\n req,\n siblingData: nodeSiblingData || {},\n siblingDoc: { ...nodeSiblingDoc },\n })\n }\n }\n }\n return value\n },\n ],\n afterRead: [\n /**\n * afterRead hooks do not receive the originalNode. Thus, they can run on all nodes, not just nodes with an ID.\n */\n async (args) => {\n const {\n collection,\n context: context,\n currentDepth,\n depth,\n draft,\n fallbackLocale,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n global,\n indexPath,\n locale,\n originalDoc,\n overrideAccess,\n parentIsLocalized,\n path,\n populate,\n populationPromises,\n req,\n schemaPath,\n showHiddenFields,\n triggerAccessControl,\n triggerHooks,\n } = args\n\n let { value } = args\n\n if (finalSanitizedEditorConfig?.features?.hooks?.afterRead?.length) {\n for (const hook of finalSanitizedEditorConfig.features.hooks.afterRead) {\n value = await hook(args)\n }\n }\n\n if (\n !finalSanitizedEditorConfig.features.nodeHooks?.afterRead?.size &&\n !finalSanitizedEditorConfig.features.getSubFields?.size\n ) {\n return value\n }\n const flattenedNodes: SerializedLexicalNode[] = []\n\n recurseNodeTree({\n flattenedNodes,\n nodes: (value as SerializedEditorState)?.root?.children ?? [],\n })\n\n for (let node of flattenedNodes) {\n const afterReadHooks = finalSanitizedEditorConfig.features.nodeHooks?.afterRead\n const afterReadHooksForNode = afterReadHooks?.get(node.type)\n if (afterReadHooksForNode) {\n for (const hook of afterReadHooksForNode) {\n node = await hook({\n context,\n currentDepth: currentDepth!,\n depth: depth!,\n draft: draft!,\n fallbackLocale: fallbackLocale!,\n fieldPromises: fieldPromises!,\n findMany: findMany!,\n flattenLocales: flattenLocales!,\n locale: locale!,\n node,\n overrideAccess: overrideAccess!,\n parentRichTextFieldPath: path,\n parentRichTextFieldSchemaPath: schemaPath,\n populateArg: populate,\n populationPromises: populationPromises!,\n req,\n showHiddenFields: showHiddenFields!,\n triggerAccessControl: triggerAccessControl!,\n triggerHooks: triggerHooks!,\n })\n }\n }\n const subFieldFn = finalSanitizedEditorConfig.features.getSubFields?.get(node.type)\n const subFieldDataFn = finalSanitizedEditorConfig.features.getSubFieldsData?.get(\n node.type,\n )\n\n if (subFieldFn && subFieldDataFn) {\n const subFields = subFieldFn({ node, req })\n const nodeSiblingData = subFieldDataFn({ node, req }) ?? {}\n\n if (subFields?.length) {\n afterReadTraverseFields({\n blockData: nodeSiblingData,\n collection,\n context,\n currentDepth: currentDepth!,\n depth: depth!,\n doc: originalDoc,\n draft: draft!,\n fallbackLocale: fallbackLocale!,\n fieldPromises: fieldPromises!,\n fields: subFields,\n findMany: findMany!,\n flattenLocales: flattenLocales!,\n global,\n locale: locale!,\n overrideAccess: overrideAccess!,\n parentIndexPath: indexPath.join('-'),\n parentIsLocalized: parentIsLocalized || field.localized || false,\n parentPath: path.join('.'),\n parentSchemaPath: schemaPath.join('.'),\n populate,\n populationPromises: populationPromises!,\n req,\n showHiddenFields: showHiddenFields!,\n siblingDoc: nodeSiblingData,\n triggerAccessControl,\n triggerHooks,\n })\n }\n }\n }\n\n return value\n },\n ],\n beforeChange: [\n async (args) => {\n const {\n collection,\n context: _context,\n data,\n docWithLocales,\n errors,\n field,\n fieldLabelPath,\n global,\n indexPath,\n mergeLocaleActions,\n operation,\n originalDoc,\n overrideAccess,\n parentIsLocalized,\n path,\n previousValue,\n req,\n schemaPath,\n siblingData,\n siblingDocWithLocales,\n skipValidation,\n } = args\n\n let { value } = args\n\n if (finalSanitizedEditorConfig?.features?.hooks?.beforeChange?.length) {\n for (const hook of finalSanitizedEditorConfig.features.hooks.beforeChange) {\n value = await hook(args)\n }\n }\n\n if (\n !finalSanitizedEditorConfig.features.nodeHooks?.beforeChange?.size &&\n !finalSanitizedEditorConfig.features.getSubFields?.size\n ) {\n return value\n }\n\n // TO-DO: We should not use context, as it is intended for external use only\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const context: any = _context\n const nodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n /**\n * Get the originalNodeIDMap from the beforeValidate hook, which is always run before this hook.\n */\n const originalNodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = context?.internal?.richText?.[path.join('.')]?.originalNodeIDMap\n\n if (!originalNodeIDMap || !Object.keys(originalNodeIDMap).length || !value) {\n return value\n }\n\n const previousNodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n const originalNodeWithLocalesIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n recurseNodeTree({\n nodeIDMap,\n nodes: (value as SerializedEditorState)?.root?.children ?? [],\n })\n\n recurseNodeTree({\n nodeIDMap: previousNodeIDMap,\n nodes: (previousValue as SerializedEditorState)?.root?.children ?? [],\n })\n if (field.name && siblingDocWithLocales?.[field.name]) {\n recurseNodeTree({\n nodeIDMap: originalNodeWithLocalesIDMap,\n nodes:\n (siblingDocWithLocales[field.name] as SerializedEditorState)?.root?.children ??\n [],\n })\n }\n\n // eslint-disable-next-line prefer-const\n for (let [id, node] of Object.entries(nodeIDMap)) {\n const beforeChangeHooks = finalSanitizedEditorConfig.features.nodeHooks?.beforeChange\n const beforeChangeHooksForNode = beforeChangeHooks?.get(node.type)\n if (beforeChangeHooksForNode) {\n for (const hook of beforeChangeHooksForNode) {\n if (!originalNodeIDMap[id]) {\n console.warn(\n '(beforeChange) No original node found for node with id',\n id,\n 'node:',\n node,\n 'path',\n path.join('.'),\n )\n continue\n }\n node = await hook({\n context,\n errors: errors!,\n mergeLocaleActions: mergeLocaleActions!,\n node,\n operation: operation!,\n originalNode: originalNodeIDMap[id],\n originalNodeWithLocales: originalNodeWithLocalesIDMap[id],\n parentRichTextFieldPath: path,\n parentRichTextFieldSchemaPath: schemaPath,\n previousNode: previousNodeIDMap[id]!,\n req,\n skipValidation: skipValidation!,\n })\n }\n }\n\n const subFieldFn = finalSanitizedEditorConfig.features.getSubFields?.get(node.type)\n const subFieldDataFn = finalSanitizedEditorConfig.features.getSubFieldsData?.get(\n node.type,\n )\n\n if (subFieldFn && subFieldDataFn) {\n const subFields = subFieldFn({ node, req })\n const nodeSiblingData = subFieldDataFn({ node, req }) ?? {}\n const nodeSiblingDocWithLocales =\n subFieldDataFn({\n node: originalNodeWithLocalesIDMap[id]!,\n req,\n }) ?? {}\n const nodePreviousSiblingDoc =\n subFieldDataFn({ node: previousNodeIDMap[id]!, req }) ?? {}\n\n if (subFields?.length) {\n await beforeChangeTraverseFields({\n id,\n blockData: nodeSiblingData,\n collection,\n context,\n data: data ?? {},\n doc: originalDoc ?? {},\n docWithLocales: docWithLocales ?? {},\n errors: errors!,\n fieldLabelPath,\n fields: subFields,\n global,\n mergeLocaleActions: mergeLocaleActions!,\n operation: operation!,\n overrideAccess,\n parentIndexPath: indexPath.join('-'),\n parentIsLocalized: parentIsLocalized || field.localized || false,\n parentPath: path.join('.'),\n parentSchemaPath: schemaPath.join('.'),\n req,\n siblingData: nodeSiblingData,\n siblingDoc: nodePreviousSiblingDoc,\n siblingDocWithLocales: nodeSiblingDocWithLocales ?? {},\n skipValidation,\n })\n }\n }\n }\n\n /**\n * within the beforeChange hook, id's may be re-generated.\n * Example:\n * 1. Seed data contains IDs for block feature blocks.\n * 2. Those are used in beforeValidate\n * 3. in beforeChange, those IDs are regenerated, because you cannot provide IDs during document creation. See baseIDField beforeChange hook for reasoning\n * 4. Thus, in order for all post-beforeChange hooks to receive the correct ID, we need to update the originalNodeIDMap with the new ID's, by regenerating the nodeIDMap.\n * The reason this is not generated for every hook, is to save on performance. We know we only really have to generate it in beforeValidate, which is the first hook,\n * and in beforeChange, which is where modifications to the provided IDs can occur.\n */\n const newOriginalNodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n const previousOriginalValue = siblingData[field.name!]\n\n recurseNodeTree({\n nodeIDMap: newOriginalNodeIDMap,\n nodes: (previousOriginalValue as SerializedEditorState)?.root?.children ?? [],\n })\n\n if (!context.internal) {\n // Add to context, for other hooks to use\n context.internal = {}\n }\n if (!context.internal.richText) {\n context.internal.richText = {}\n }\n context.internal.richText[path.join('.')] = {\n originalNodeIDMap: newOriginalNodeIDMap,\n }\n\n return value\n },\n ],\n beforeValidate: [\n async (args) => {\n const {\n collection,\n context,\n data,\n field,\n global,\n indexPath,\n operation,\n originalDoc,\n overrideAccess,\n parentIsLocalized,\n path,\n previousValue,\n req,\n schemaPath,\n } = args\n\n let { value } = args\n if (finalSanitizedEditorConfig?.features?.hooks?.beforeValidate?.length) {\n for (const hook of finalSanitizedEditorConfig.features.hooks.beforeValidate) {\n value = await hook(args)\n }\n }\n\n // return value if there are NO hooks\n if (\n !finalSanitizedEditorConfig.features.nodeHooks?.beforeValidate?.size &&\n !finalSanitizedEditorConfig.features.nodeHooks?.afterChange?.size &&\n !finalSanitizedEditorConfig.features.nodeHooks?.beforeChange?.size &&\n !finalSanitizedEditorConfig.features.getSubFields?.size\n ) {\n return value\n }\n\n /**\n * beforeValidate is the first field hook which runs. This is where we can create the node map, which can then be used in the other hooks.\n *\n */\n\n /**\n * flattenedNodes contains all nodes in the editor, in the order they appear in the editor. They will be used for the following hooks:\n * - afterRead\n *\n * The other hooks require nodes to have IDs, which is why those are ran only from the nodeIDMap. They require IDs because they have both doc/siblingDoc and data/siblingData, and\n * thus require a reliable way to match new node data to old node data. Given that node positions can change in between hooks, this is only reliably possible for nodes which are saved with\n * an ID.\n */\n //const flattenedNodes: SerializedLexicalNode[] = []\n\n /**\n * Only nodes with id's (so, nodes with hooks added to them) will be added to the nodeIDMap. They will be used for the following hooks:\n * - afterChange\n * - beforeChange\n * - beforeValidate\n *\n * Other hooks are handled by the flattenedNodes. All nodes in the nodeIDMap are part of flattenedNodes.\n */\n\n const originalNodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n\n recurseNodeTree({\n nodeIDMap: originalNodeIDMap,\n nodes: (previousValue as SerializedEditorState)?.root?.children ?? [],\n })\n\n if (!context.internal) {\n // Add to context, for other hooks to use\n context.internal = {}\n }\n if (!(context as any).internal.richText) {\n ;(context as any).internal.richText = {}\n }\n ;(context as any).internal.richText[path.join('.')] = {\n originalNodeIDMap,\n }\n\n /**\n * Now that the maps for all hooks are set up, we can run the validate hook\n */\n if (!finalSanitizedEditorConfig.features.nodeHooks?.beforeValidate?.size) {\n return value\n }\n const nodeIDMap: {\n [key: string]: SerializedLexicalNode\n } = {}\n recurseNodeTree({\n //flattenedNodes,\n nodeIDMap,\n nodes: (value as SerializedEditorState)?.root?.children ?? [],\n })\n\n // eslint-disable-next-line prefer-const\n for (let [id, node] of Object.entries(nodeIDMap)) {\n const beforeValidateHooks =\n finalSanitizedEditorConfig.features.nodeHooks.beforeValidate\n const beforeValidateHooksForNode = beforeValidateHooks?.get(node.type)\n if (beforeValidateHooksForNode) {\n for (const hook of beforeValidateHooksForNode) {\n if (!originalNodeIDMap[id]) {\n console.warn(\n '(beforeValidate) No original node found for node with id',\n id,\n 'node:',\n node,\n 'path',\n path.join('.'),\n )\n continue\n }\n node = await hook({\n context,\n node,\n operation,\n originalNode: originalNodeIDMap[id],\n overrideAccess: overrideAccess!,\n parentRichTextFieldPath: path,\n parentRichTextFieldSchemaPath: schemaPath,\n req,\n })\n }\n }\n const subFieldFn = finalSanitizedEditorConfig.features.getSubFields?.get(node.type)\n const subFieldDataFn = finalSanitizedEditorConfig.features.getSubFieldsData?.get(\n node.type,\n )\n\n if (subFieldFn && subFieldDataFn) {\n const subFields = subFieldFn({ node, req })\n const nodeSiblingData = subFieldDataFn({ node, req }) ?? {}\n\n const nodeSiblingDoc = subFieldDataFn({ node: originalNodeIDMap[id]!, req }) ?? {}\n\n if (subFields?.length) {\n await beforeValidateTraverseFields({\n id,\n blockData: nodeSiblingData,\n collection,\n context,\n data,\n doc: originalDoc,\n fields: subFields,\n global,\n operation,\n overrideAccess: overrideAccess!,\n parentIndexPath: indexPath.join('-'),\n parentIsLocalized: parentIsLocalized || field.localized || false,\n parentPath: path.join('.'),\n parentSchemaPath: schemaPath.join('.'),\n req,\n siblingData: nodeSiblingData,\n siblingDoc: nodeSiblingDoc,\n })\n }\n }\n }\n\n return value\n },\n ],\n },\n outputSchema: ({\n collectionIDFieldTypes,\n config,\n field,\n i18n,\n interfaceNameDefinitions,\n isRequired,\n }) => {\n let outputSchema: JSONSchema4 = {\n // This schema matches the SerializedEditorState type so far, that it's possible to cast SerializedEditorState to this schema without any errors.\n // In the future, we should\n // 1) allow recursive children\n // 2) Pass in all the different types for every node added to the editorconfig. This can be done with refs in the schema.\n type: withNullableJSONSchemaType('object', isRequired),\n properties: {\n root: {\n type: 'object',\n additionalProperties: false,\n properties: {\n type: {\n type: 'string',\n },\n children: {\n type: 'array',\n items: {\n type: 'object',\n additionalProperties: true,\n properties: {\n type: {\n type: 'string',\n tsType: 'any',\n },\n version: {\n type: 'integer',\n },\n },\n required: ['type', 'version'],\n },\n },\n direction: {\n oneOf: [\n {\n enum: ['ltr', 'rtl'],\n },\n {\n type: 'null',\n },\n ],\n },\n format: {\n type: 'string',\n enum: ['left', 'start', 'center', 'right', 'end', 'justify', ''], // ElementFormatType, since the root node is an element\n },\n indent: {\n type: 'integer',\n },\n version: {\n type: 'integer',\n },\n },\n required: ['children', 'direction', 'format', 'indent', 'type', 'version'],\n },\n },\n required: ['root'],\n }\n for (const modifyOutputSchema of finalSanitizedEditorConfig.features.generatedTypes\n .modifyOutputSchemas) {\n outputSchema = modifyOutputSchema({\n collectionIDFieldTypes,\n config,\n currentSchema: outputSchema,\n field,\n i18n,\n interfaceNameDefinitions,\n isRequired,\n })\n }\n\n return outputSchema\n },\n validate: richTextValidateHOC({\n editorConfig: finalSanitizedEditorConfig,\n }),\n }\n }\n}\n\nexport { AlignFeature } from './features/align/server/index.js'\nexport { BlockquoteFeature } from './features/blockquote/server/index.js'\nexport { CodeBlock } from './features/blocks/premade/CodeBlock/index.js'\nexport { BlocksFeature } from './features/blocks/server/index.js'\nexport type {\n BlocksFeatureProps,\n LexicalBlockClientProps,\n LexicalBlockLabelClientProps,\n LexicalBlockLabelServerProps,\n LexicalBlockServerProps,\n LexicalInlineBlockClientProps,\n LexicalInlineBlockLabelClientProps,\n LexicalInlineBlockLabelServerProps,\n LexicalInlineBlockServerProps,\n} from './features/blocks/server/index.js'\n\nexport {\n $createServerBlockNode,\n $isServerBlockNode,\n type BlockFields,\n ServerBlockNode,\n} from './features/blocks/server/nodes/BlocksNode.js'\n\nexport {\n $createServerInlineBlockNode,\n $isServerInlineBlockNode,\n type InlineBlockFields,\n ServerInlineBlockNode,\n} from './features/blocks/server/nodes/InlineBlocksNode.js'\n\nexport { convertHTMLToLexical } from './features/converters/htmlToLexical/index.js'\n\nexport { lexicalHTMLField } from './features/converters/lexicalToHtml/async/field/index.js'\nexport { LinebreakHTMLConverter } from './features/converters/lexicalToHtml_deprecated/converter/converters/linebreak.js'\n\nexport { ParagraphHTMLConverter } from './features/converters/lexicalToHtml_deprecated/converter/converters/paragraph.js'\n\nexport { TabHTMLConverter } from './features/converters/lexicalToHtml_deprecated/converter/converters/tab.js'\nexport { TextHTMLConverter } from './features/converters/lexicalToHtml_deprecated/converter/converters/text.js'\nexport { defaultHTMLConverters } from './features/converters/lexicalToHtml_deprecated/converter/defaultConverters.js'\n\nexport {\n convertLexicalNodesToHTML,\n convertLexicalToHTML,\n} from './features/converters/lexicalToHtml_deprecated/converter/index.js'\nexport type { HTMLConverter } from './features/converters/lexicalToHtml_deprecated/converter/types.js'\nexport {\n consolidateHTMLConverters,\n lexicalHTML,\n} from './features/converters/lexicalToHtml_deprecated/field/index.js'\nexport {\n HTMLConverterFeature,\n type HTMLConverterFeatureProps,\n} from './features/converters/lexicalToHtml_deprecated/index.js'\nexport { convertLexicalToMarkdown } from './features/converters/lexicalToMarkdown/index.js'\nexport { convertMarkdownToLexical } from './features/converters/markdownToLexical/index.js'\nexport { getPayloadPopulateFn } from './features/converters/utilities/payloadPopulateFn.js'\n\nexport { getRestPopulateFn } from './features/converters/utilities/restPopulateFn.js'\nexport { DebugJsxConverterFeature } from './features/debug/jsxConverter/server/index.js'\nexport { TestRecorderFeature } from './features/debug/testRecorder/server/index.js'\nexport { TreeViewFeature } from './features/debug/treeView/server/index.js'\nexport { EXPERIMENTAL_TableFeature } from './features/experimental_table/server/index.js'\nexport { BoldFeature } from './features/format/bold/feature.server.js'\nexport { InlineCodeFeature } from './features/format/inlineCode/feature.server.js'\n\nexport { ItalicFeature } from './features/format/italic/feature.server.js'\nexport { StrikethroughFeature } from './features/format/strikethrough/feature.server.js'\nexport { SubscriptFeature } from './features/format/subscript/feature.server.js'\nexport { SuperscriptFeature } from './features/format/superscript/feature.server.js'\nexport { UnderlineFeature } from './features/format/underline/feature.server.js'\nexport { HeadingFeature, type HeadingFeatureProps } from './features/heading/server/index.js'\nexport { HorizontalRuleFeature } from './features/horizontalRule/server/index.js'\n\nexport { IndentFeature } from './features/indent/server/index.js'\nexport {\n $createAutoLinkNode,\n $isAutoLinkNode,\n AutoLinkNode,\n} from './features/link/nodes/AutoLinkNode.js'\nexport { $createLinkNode, $isLinkNode, LinkNode } from './features/link/nodes/LinkNode.js'\n\nexport type { LinkFields } from './features/link/nodes/types.js'\nexport { LinkFeature, type LinkFeatureServerProps } from './features/link/server/index.js'\n\nexport { ChecklistFeature } from './features/lists/checklist/server/index.js'\nexport { OrderedListFeature } from './features/lists/orderedList/server/index.js'\n\nexport { UnorderedListFeature } from './features/lists/unorderedList/server/index.js'\n\nexport { ParagraphFeature } from './features/paragraph/server/index.js'\n\nexport {\n RelationshipFeature,\n type RelationshipFeatureProps,\n} from './features/relationship/server/index.js'\n\nexport {\n type RelationshipData,\n RelationshipServerNode,\n} from './features/relationship/server/nodes/RelationshipNode.js'\nexport { defaultColors } from './features/textState/defaultColors.js'\nexport { TextStateFeature } from './features/textState/feature.server.js'\n\nexport { FixedToolbarFeature } from './features/toolbars/fixed/server/index.js'\n\nexport { InlineToolbarFeature } from './features/toolbars/inline/server/index.js'\nexport type { ToolbarGroup, ToolbarGroupItem } from './features/toolbars/types.js'\nexport type {\n BaseClientFeatureProps,\n ClientFeature,\n ClientFeatureProviderMap,\n FeatureProviderClient,\n FeatureProviderProviderClient,\n PluginComponent,\n PluginComponentWithAnchor,\n ResolvedClientFeature,\n ResolvedClientFeatureMap,\n SanitizedClientFeatures,\n SanitizedPlugin,\n} from './features/typesClient.js'\n\nexport type {\n AfterChangeNodeHook,\n AfterChangeNodeHookArgs,\n AfterReadNodeHook,\n AfterReadNodeHookArgs,\n BaseNodeHookArgs,\n BeforeChangeNodeHook,\n BeforeChangeNodeHookArgs,\n BeforeValidateNodeHook,\n BeforeValidateNodeHookArgs,\n FeatureProviderProviderServer,\n FeatureProviderServer,\n NodeValidation,\n NodeWithHooks,\n PopulationPromise,\n ResolvedServerFeature,\n ResolvedServerFeatureMap,\n SanitizedServerFeatures,\n ServerFeature,\n ServerFeatureProviderMap,\n} from './features/typesServer.js'\n\nexport { createNode } from './features/typeUtilities.js' // Only useful in feature.server.ts\n\nexport { UploadFeature } from './features/upload/server/index.js'\nexport type { UploadFeatureProps } from './features/upload/server/index.js'\n\nexport { type UploadData, UploadServerNode } from './features/upload/server/nodes/UploadNode.js'\nexport type { EditorConfigContextType } from './lexical/config/client/EditorConfigProvider.js'\n\nexport {\n defaultEditorConfig,\n defaultEditorFeatures,\n defaultEditorLexicalConfig,\n} from './lexical/config/server/default.js'\nexport { loadFeatures, sortFeaturesForOptimalLoading } from './lexical/config/server/loader.js'\n\nexport {\n sanitizeServerEditorConfig,\n sanitizeServerFeatures,\n} from './lexical/config/server/sanitize.js'\nexport type {\n ClientEditorConfig,\n SanitizedClientEditorConfig,\n SanitizedServerEditorConfig,\n ServerEditorConfig,\n} from './lexical/config/types.js'\nexport type { AdapterProps }\n\nexport { getEnabledNodes, getEnabledNodesFromServerNodes } from './lexical/nodes/index.js'\n\nexport type {\n SlashMenuGroup,\n SlashMenuItem,\n} from './lexical/plugins/SlashMenu/LexicalTypeaheadMenuPlugin/types.js'\nexport {\n DETAIL_TYPE_TO_DETAIL,\n DOUBLE_LINE_BREAK,\n ELEMENT_FORMAT_TO_TYPE,\n ELEMENT_TYPE_TO_FORMAT,\n IS_ALL_FORMATTING,\n LTR_REGEX,\n NodeFormat,\n NON_BREAKING_SPACE,\n RTL_REGEX,\n TEXT_MODE_TO_TYPE,\n TEXT_TYPE_TO_FORMAT,\n TEXT_TYPE_TO_MODE,\n} from './lexical/utils/nodeFormat.js'\n\nexport { sanitizeUrl, validateUrl } from './lexical/utils/url.js'\n\nexport type * from './nodeTypes.js'\n\nexport { $convertFromMarkdownString } from './packages/@lexical/markdown/index.js'\nexport { defaultRichTextValue } from './populateGraphQL/defaultValue.js'\nexport { populate } from './populateGraphQL/populate.js'\n\nexport type {\n ClientFeaturesMap,\n LexicalEditorNodeMap,\n LexicalEditorProps,\n LexicalEditorViewMap,\n LexicalFieldAdminProps,\n LexicalRichTextAdapter,\n NodeMapValue,\n SerializedNodeBase,\n ViewMapBlockComponentProps,\n} from './types.js'\n\nexport { buildDefaultEditorState, buildEditorState } from './utilities/buildEditorState.js'\nexport { createServerFeature } from './utilities/createServerFeature.js'\n\nexport { editorConfigFactory } from './utilities/editorConfigFactory.js'\nexport type { FieldsDrawerProps } from './utilities/fieldsDrawer/Drawer.js'\n\nexport { extractPropsFromJSXPropsString } from './utilities/jsx/extractPropsFromJSXPropsString.js'\n\nexport {\n extractFrontmatter,\n frontmatterToObject,\n objectToFrontmatter,\n propsToJSXString,\n} from './utilities/jsx/jsx.js'\nexport { upgradeLexicalData } from './utilities/upgradeLexicalData/index.js'\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../src/lexical/config/server/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,OAAO,KAAK,EACV,qBAAqB,EAErB,wBAAwB,EAEzB,MAAM,kCAAkC,CAAA;AACzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AA8FrD,wBAAgB,6BAA6B,CAC3C,gBAAgB,EAAE,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,GACnE,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,CAEpD;AAED,wBAAsB,YAAY,CAAC,EACjC,MAAM,EACN,MAAM,EACN,iBAAiB,EACjB,uBAAuB,GACxB,EAAE;IACD,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,uBAAuB,EAAE,kBAAkB,CAAA;CAC5C,GAAG,OAAO,CAAC,wBAAwB,CAAC,
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../src/lexical/config/server/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,OAAO,KAAK,EACV,qBAAqB,EAErB,wBAAwB,EAEzB,MAAM,kCAAkC,CAAA;AACzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AA8FrD,wBAAgB,6BAA6B,CAC3C,gBAAgB,EAAE,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,GACnE,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,CAEpD;AAED,wBAAsB,YAAY,CAAC,EACjC,MAAM,EACN,MAAM,EACN,iBAAiB,EACjB,uBAAuB,GACxB,EAAE;IACD,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,iBAAiB,EAAE,OAAO,CAAA;IAC1B,uBAAuB,EAAE,kBAAkB,CAAA;CAC5C,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAyFpC"}
|
|
@@ -63,11 +63,16 @@ export async function loadFeatures({
|
|
|
63
63
|
parentIsLocalized,
|
|
64
64
|
unSanitizedEditorConfig
|
|
65
65
|
}) {
|
|
66
|
-
// First remove all duplicate features. The LAST feature with a given key wins
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
66
|
+
// First remove all duplicate features. The LAST feature with a given key wins,
|
|
67
|
+
// and keeps the position of its last occurrence (matching the prior reverse/filter/reverse semantics).
|
|
68
|
+
const dedupedByKey = new Map();
|
|
69
|
+
for (const f of unSanitizedEditorConfig.features) {
|
|
70
|
+
if (dedupedByKey.has(f.key)) {
|
|
71
|
+
dedupedByKey.delete(f.key);
|
|
72
|
+
}
|
|
73
|
+
dedupedByKey.set(f.key, f);
|
|
74
|
+
}
|
|
75
|
+
unSanitizedEditorConfig.features = Array.from(dedupedByKey.values());
|
|
71
76
|
unSanitizedEditorConfig.features = sortFeaturesForOptimalLoading(unSanitizedEditorConfig.features);
|
|
72
77
|
const featureProviderMap = new Map(unSanitizedEditorConfig.features.map(f => [f.key, f]));
|
|
73
78
|
const resolvedFeatures = new Map();
|
|
@@ -79,8 +84,7 @@ export async function loadFeatures({
|
|
|
79
84
|
}
|
|
80
85
|
if (featureProvider.dependencies?.length) {
|
|
81
86
|
for (const dependencyKey of featureProvider.dependencies) {
|
|
82
|
-
|
|
83
|
-
if (!found) {
|
|
87
|
+
if (!featureProviderMap.has(dependencyKey)) {
|
|
84
88
|
throw new Error(`Feature ${featureProvider.key} has a dependency ${dependencyKey} which does not exist.`);
|
|
85
89
|
}
|
|
86
90
|
}
|
|
@@ -90,8 +94,7 @@ export async function loadFeatures({
|
|
|
90
94
|
// look in the resolved features instead of the editorConfig.features, as a dependency requires the feature to be loaded before it, contrary to a soft-dependency
|
|
91
95
|
const found = resolvedFeatures.get(priorityDependencyKey);
|
|
92
96
|
if (!found) {
|
|
93
|
-
|
|
94
|
-
if (!existsInEditorConfig) {
|
|
97
|
+
if (!featureProviderMap.has(priorityDependencyKey)) {
|
|
95
98
|
throw new Error(`Feature ${featureProvider.key} has a priority dependency ${priorityDependencyKey} which does not exist.`);
|
|
96
99
|
} else {
|
|
97
100
|
throw new Error(`Feature ${featureProvider.key} has a priority dependency ${priorityDependencyKey} which is not loaded before it.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","names":["createDependencyGraph","featureProviders","graph","fp","key","dependencies","dependenciesPriority","dependenciesSoft","featureProvider","topologicallySortFeatures","visited","stack","visit","reverse","currentPath","Error","includes","join","push","dep","pop","sortFeaturesForOptimalLoading","loadFeatures","config","isRoot","parentIsLocalized","unSanitizedEditorConfig","features","filter","f","i","arr","firstIndex","findIndex","f2","featureProviderMap","Map","map","resolvedFeatures","loaded","length","dependencyKey","found","find","priorityDependencyKey","get","existsInEditorConfig","feature","resolvedFeature","order","set"],"sources":["../../../../src/lexical/config/server/loader.ts"],"sourcesContent":["import type { SanitizedConfig } from 'payload'\n\nimport type {\n FeatureProviderServer,\n ResolvedServerFeature,\n ResolvedServerFeatureMap,\n ServerFeatureProviderMap,\n} from '../../../features/typesServer.js'\nimport type { ServerEditorConfig } from '../types.js'\n\ntype DependencyGraph = {\n [key: string]: {\n dependencies: string[]\n dependenciesPriority: string[]\n dependenciesSoft: string[]\n featureProvider: FeatureProviderServer<unknown, unknown, unknown>\n }\n}\n\nfunction createDependencyGraph(\n featureProviders: FeatureProviderServer<unknown, unknown, unknown>[],\n): DependencyGraph {\n const graph: DependencyGraph = {}\n for (const fp of featureProviders) {\n graph[fp.key] = {\n dependencies: fp.dependencies || [],\n dependenciesPriority: fp.dependenciesPriority || [],\n dependenciesSoft: fp.dependenciesSoft || [],\n featureProvider: fp,\n }\n }\n return graph\n}\n\nfunction topologicallySortFeatures(\n featureProviders: FeatureProviderServer<unknown, unknown, unknown>[],\n): FeatureProviderServer<unknown, unknown, unknown>[] {\n const graph = createDependencyGraph(featureProviders)\n const visited: { [key: string]: boolean } = {}\n const stack: FeatureProviderServer<unknown, unknown, unknown>[] = []\n\n for (const key in graph) {\n if (!visited[key]) {\n visit(graph, key, visited, stack)\n }\n }\n\n return stack.reverse()\n}\n\nfunction visit(\n graph: DependencyGraph,\n key: string,\n visited: { [key: string]: boolean },\n stack: FeatureProviderServer<unknown, unknown, unknown>[],\n currentPath: string[] = [],\n) {\n if (!graph[key]) {\n throw new Error(`Feature key ${key} is not present in the dependency graph.`)\n }\n\n if (currentPath.includes(key)) {\n throw new Error(`Circular dependency detected: ${currentPath.join(' -> ')} -> ${key}`)\n }\n\n if (visited[key]) {\n return\n }\n\n visited[key] = true\n currentPath.push(key)\n\n // First process the hard priority dependencies\n for (const dep of graph[key].dependenciesPriority) {\n if (!visited[dep]) {\n visit(graph, dep, visited, stack, currentPath)\n }\n }\n\n // Then process the normal dependencies, but make sure to not violate hard dependencies\n for (const dep of graph[key].dependencies) {\n if (!visited[dep] && !graph[key].dependenciesPriority.includes(dep)) {\n visit(graph, dep, visited, stack, currentPath)\n }\n }\n\n // Then process the soft dependencies. Make sure to not violate hard and normal dependencies.\n for (const dep of graph[key].dependenciesSoft) {\n if (\n graph[dep] &&\n !visited[dep] &&\n !graph[key].dependenciesPriority.includes(dep) &&\n !graph[key].dependencies.includes(dep)\n ) {\n visit(graph, dep, visited, stack, currentPath)\n }\n }\n\n stack.push(graph[key].featureProvider)\n currentPath.pop()\n}\n\nexport function sortFeaturesForOptimalLoading(\n featureProviders: FeatureProviderServer<unknown, unknown, unknown>[],\n): FeatureProviderServer<unknown, unknown, unknown>[] {\n return topologicallySortFeatures(featureProviders)\n}\n\nexport async function loadFeatures({\n config,\n isRoot,\n parentIsLocalized,\n unSanitizedEditorConfig,\n}: {\n config: SanitizedConfig\n isRoot?: boolean\n parentIsLocalized: boolean\n unSanitizedEditorConfig: ServerEditorConfig\n}): Promise<ResolvedServerFeatureMap> {\n // First remove all duplicate features. The LAST feature with a given key wins.\n unSanitizedEditorConfig.features = unSanitizedEditorConfig.features\n .reverse()\n .filter((f, i, arr) => {\n const firstIndex = arr.findIndex((f2) => f2.key === f.key)\n return firstIndex === i\n })\n .reverse()\n\n unSanitizedEditorConfig.features = sortFeaturesForOptimalLoading(unSanitizedEditorConfig.features)\n\n const featureProviderMap: ServerFeatureProviderMap = new Map(\n unSanitizedEditorConfig.features.map(\n (f) => [f.key, f] as [string, FeatureProviderServer<unknown, unknown, unknown>],\n ),\n )\n\n const resolvedFeatures: ResolvedServerFeatureMap = new Map()\n\n // Make sure all dependencies declared in the respective features exist\n let loaded = 0\n for (const featureProvider of unSanitizedEditorConfig.features) {\n if (!featureProvider.key) {\n throw new Error(\n `A Feature you've added does not have a key. Please add a key to the feature. This is used to uniquely identify the feature.`,\n )\n }\n if (featureProvider.dependencies?.length) {\n for (const dependencyKey of featureProvider.dependencies) {\n const found = unSanitizedEditorConfig.features.find((f) => f.key === dependencyKey)\n if (!found) {\n throw new Error(\n `Feature ${featureProvider.key} has a dependency ${dependencyKey} which does not exist.`,\n )\n }\n }\n }\n\n if (featureProvider.dependenciesPriority?.length) {\n for (const priorityDependencyKey of featureProvider.dependenciesPriority) {\n // look in the resolved features instead of the editorConfig.features, as a dependency requires the feature to be loaded before it, contrary to a soft-dependency\n const found = resolvedFeatures.get(priorityDependencyKey)\n if (!found) {\n const existsInEditorConfig = unSanitizedEditorConfig.features.find(\n (f) => f.key === priorityDependencyKey,\n )\n if (!existsInEditorConfig) {\n throw new Error(\n `Feature ${featureProvider.key} has a priority dependency ${priorityDependencyKey} which does not exist.`,\n )\n } else {\n throw new Error(\n `Feature ${featureProvider.key} has a priority dependency ${priorityDependencyKey} which is not loaded before it.`,\n )\n }\n }\n }\n }\n\n const feature =\n typeof featureProvider.feature === 'function'\n ? await featureProvider.feature({\n config,\n featureProviderMap,\n isRoot,\n parentIsLocalized,\n resolvedFeatures,\n unSanitizedEditorConfig,\n })\n : featureProvider.feature\n\n const resolvedFeature: ResolvedServerFeature<any, any> = feature as ResolvedServerFeature<\n any,\n any\n >\n\n // All these new properties would be added to the feature, as it's mutated. However, this does not cause any damage and allows\n // us to prevent an unnecessary spread operation.\n resolvedFeature.key = featureProvider.key\n resolvedFeature.order = loaded\n resolvedFeature.dependencies = featureProvider.dependencies!\n resolvedFeature.dependenciesPriority = featureProvider.dependenciesPriority!\n resolvedFeature.dependenciesSoft = featureProvider.dependenciesSoft!\n\n resolvedFeatures.set(featureProvider.key, resolvedFeature)\n\n loaded++\n }\n\n return resolvedFeatures\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"loader.js","names":["createDependencyGraph","featureProviders","graph","fp","key","dependencies","dependenciesPriority","dependenciesSoft","featureProvider","topologicallySortFeatures","visited","stack","visit","reverse","currentPath","Error","includes","join","push","dep","pop","sortFeaturesForOptimalLoading","loadFeatures","config","isRoot","parentIsLocalized","unSanitizedEditorConfig","dedupedByKey","Map","f","features","has","delete","set","Array","from","values","featureProviderMap","map","resolvedFeatures","loaded","length","dependencyKey","priorityDependencyKey","found","get","feature","resolvedFeature","order"],"sources":["../../../../src/lexical/config/server/loader.ts"],"sourcesContent":["import type { SanitizedConfig } from 'payload'\n\nimport type {\n FeatureProviderServer,\n ResolvedServerFeature,\n ResolvedServerFeatureMap,\n ServerFeatureProviderMap,\n} from '../../../features/typesServer.js'\nimport type { ServerEditorConfig } from '../types.js'\n\ntype DependencyGraph = {\n [key: string]: {\n dependencies: string[]\n dependenciesPriority: string[]\n dependenciesSoft: string[]\n featureProvider: FeatureProviderServer<unknown, unknown, unknown>\n }\n}\n\nfunction createDependencyGraph(\n featureProviders: FeatureProviderServer<unknown, unknown, unknown>[],\n): DependencyGraph {\n const graph: DependencyGraph = {}\n for (const fp of featureProviders) {\n graph[fp.key] = {\n dependencies: fp.dependencies || [],\n dependenciesPriority: fp.dependenciesPriority || [],\n dependenciesSoft: fp.dependenciesSoft || [],\n featureProvider: fp,\n }\n }\n return graph\n}\n\nfunction topologicallySortFeatures(\n featureProviders: FeatureProviderServer<unknown, unknown, unknown>[],\n): FeatureProviderServer<unknown, unknown, unknown>[] {\n const graph = createDependencyGraph(featureProviders)\n const visited: { [key: string]: boolean } = {}\n const stack: FeatureProviderServer<unknown, unknown, unknown>[] = []\n\n for (const key in graph) {\n if (!visited[key]) {\n visit(graph, key, visited, stack)\n }\n }\n\n return stack.reverse()\n}\n\nfunction visit(\n graph: DependencyGraph,\n key: string,\n visited: { [key: string]: boolean },\n stack: FeatureProviderServer<unknown, unknown, unknown>[],\n currentPath: string[] = [],\n) {\n if (!graph[key]) {\n throw new Error(`Feature key ${key} is not present in the dependency graph.`)\n }\n\n if (currentPath.includes(key)) {\n throw new Error(`Circular dependency detected: ${currentPath.join(' -> ')} -> ${key}`)\n }\n\n if (visited[key]) {\n return\n }\n\n visited[key] = true\n currentPath.push(key)\n\n // First process the hard priority dependencies\n for (const dep of graph[key].dependenciesPriority) {\n if (!visited[dep]) {\n visit(graph, dep, visited, stack, currentPath)\n }\n }\n\n // Then process the normal dependencies, but make sure to not violate hard dependencies\n for (const dep of graph[key].dependencies) {\n if (!visited[dep] && !graph[key].dependenciesPriority.includes(dep)) {\n visit(graph, dep, visited, stack, currentPath)\n }\n }\n\n // Then process the soft dependencies. Make sure to not violate hard and normal dependencies.\n for (const dep of graph[key].dependenciesSoft) {\n if (\n graph[dep] &&\n !visited[dep] &&\n !graph[key].dependenciesPriority.includes(dep) &&\n !graph[key].dependencies.includes(dep)\n ) {\n visit(graph, dep, visited, stack, currentPath)\n }\n }\n\n stack.push(graph[key].featureProvider)\n currentPath.pop()\n}\n\nexport function sortFeaturesForOptimalLoading(\n featureProviders: FeatureProviderServer<unknown, unknown, unknown>[],\n): FeatureProviderServer<unknown, unknown, unknown>[] {\n return topologicallySortFeatures(featureProviders)\n}\n\nexport async function loadFeatures({\n config,\n isRoot,\n parentIsLocalized,\n unSanitizedEditorConfig,\n}: {\n config: SanitizedConfig\n isRoot?: boolean\n parentIsLocalized: boolean\n unSanitizedEditorConfig: ServerEditorConfig\n}): Promise<ResolvedServerFeatureMap> {\n // First remove all duplicate features. The LAST feature with a given key wins,\n // and keeps the position of its last occurrence (matching the prior reverse/filter/reverse semantics).\n const dedupedByKey = new Map<string, FeatureProviderServer<unknown, unknown, unknown>>()\n for (const f of unSanitizedEditorConfig.features) {\n if (dedupedByKey.has(f.key)) {\n dedupedByKey.delete(f.key)\n }\n dedupedByKey.set(f.key, f)\n }\n unSanitizedEditorConfig.features = Array.from(dedupedByKey.values())\n\n unSanitizedEditorConfig.features = sortFeaturesForOptimalLoading(unSanitizedEditorConfig.features)\n\n const featureProviderMap: ServerFeatureProviderMap = new Map(\n unSanitizedEditorConfig.features.map(\n (f) => [f.key, f] as [string, FeatureProviderServer<unknown, unknown, unknown>],\n ),\n )\n\n const resolvedFeatures: ResolvedServerFeatureMap = new Map()\n\n // Make sure all dependencies declared in the respective features exist\n let loaded = 0\n for (const featureProvider of unSanitizedEditorConfig.features) {\n if (!featureProvider.key) {\n throw new Error(\n `A Feature you've added does not have a key. Please add a key to the feature. This is used to uniquely identify the feature.`,\n )\n }\n if (featureProvider.dependencies?.length) {\n for (const dependencyKey of featureProvider.dependencies) {\n if (!featureProviderMap.has(dependencyKey)) {\n throw new Error(\n `Feature ${featureProvider.key} has a dependency ${dependencyKey} which does not exist.`,\n )\n }\n }\n }\n\n if (featureProvider.dependenciesPriority?.length) {\n for (const priorityDependencyKey of featureProvider.dependenciesPriority) {\n // look in the resolved features instead of the editorConfig.features, as a dependency requires the feature to be loaded before it, contrary to a soft-dependency\n const found = resolvedFeatures.get(priorityDependencyKey)\n if (!found) {\n if (!featureProviderMap.has(priorityDependencyKey)) {\n throw new Error(\n `Feature ${featureProvider.key} has a priority dependency ${priorityDependencyKey} which does not exist.`,\n )\n } else {\n throw new Error(\n `Feature ${featureProvider.key} has a priority dependency ${priorityDependencyKey} which is not loaded before it.`,\n )\n }\n }\n }\n }\n\n const feature =\n typeof featureProvider.feature === 'function'\n ? await featureProvider.feature({\n config,\n featureProviderMap,\n isRoot,\n parentIsLocalized,\n resolvedFeatures,\n unSanitizedEditorConfig,\n })\n : featureProvider.feature\n\n const resolvedFeature: ResolvedServerFeature<any, any> = feature as ResolvedServerFeature<\n any,\n any\n >\n\n // All these new properties would be added to the feature, as it's mutated. However, this does not cause any damage and allows\n // us to prevent an unnecessary spread operation.\n resolvedFeature.key = featureProvider.key\n resolvedFeature.order = loaded\n resolvedFeature.dependencies = featureProvider.dependencies!\n resolvedFeature.dependenciesPriority = featureProvider.dependenciesPriority!\n resolvedFeature.dependenciesSoft = featureProvider.dependenciesSoft!\n\n resolvedFeatures.set(featureProvider.key, resolvedFeature)\n\n loaded++\n }\n\n return resolvedFeatures\n}\n"],"mappings":"AAmBA,SAASA,sBACPC,gBAAoE;EAEpE,MAAMC,KAAA,GAAyB,CAAC;EAChC,KAAK,MAAMC,EAAA,IAAMF,gBAAA,EAAkB;IACjCC,KAAK,CAACC,EAAA,CAAGC,GAAG,CAAC,GAAG;MACdC,YAAA,EAAcF,EAAA,CAAGE,YAAY,IAAI,EAAE;MACnCC,oBAAA,EAAsBH,EAAA,CAAGG,oBAAoB,IAAI,EAAE;MACnDC,gBAAA,EAAkBJ,EAAA,CAAGI,gBAAgB,IAAI,EAAE;MAC3CC,eAAA,EAAiBL;IACnB;EACF;EACA,OAAOD,KAAA;AACT;AAEA,SAASO,0BACPR,gBAAoE;EAEpE,MAAMC,KAAA,GAAQF,qBAAA,CAAsBC,gBAAA;EACpC,MAAMS,OAAA,GAAsC,CAAC;EAC7C,MAAMC,KAAA,GAA4D,EAAE;EAEpE,KAAK,MAAMP,GAAA,IAAOF,KAAA,EAAO;IACvB,IAAI,CAACQ,OAAO,CAACN,GAAA,CAAI,EAAE;MACjBQ,KAAA,CAAMV,KAAA,EAAOE,GAAA,EAAKM,OAAA,EAASC,KAAA;IAC7B;EACF;EAEA,OAAOA,KAAA,CAAME,OAAO;AACtB;AAEA,SAASD,MACPV,KAAsB,EACtBE,GAAW,EACXM,OAAmC,EACnCC,KAAyD,EACzDG,WAAA,GAAwB,EAAE;EAE1B,IAAI,CAACZ,KAAK,CAACE,GAAA,CAAI,EAAE;IACf,MAAM,IAAIW,KAAA,CAAM,eAAeX,GAAA,0CAA6C;EAC9E;EAEA,IAAIU,WAAA,CAAYE,QAAQ,CAACZ,GAAA,GAAM;IAC7B,MAAM,IAAIW,KAAA,CAAM,iCAAiCD,WAAA,CAAYG,IAAI,CAAC,cAAcb,GAAA,EAAK;EACvF;EAEA,IAAIM,OAAO,CAACN,GAAA,CAAI,EAAE;IAChB;EACF;EAEAM,OAAO,CAACN,GAAA,CAAI,GAAG;EACfU,WAAA,CAAYI,IAAI,CAACd,GAAA;EAEjB;EACA,KAAK,MAAMe,GAAA,IAAOjB,KAAK,CAACE,GAAA,CAAI,CAACE,oBAAoB,EAAE;IACjD,IAAI,CAACI,OAAO,CAACS,GAAA,CAAI,EAAE;MACjBP,KAAA,CAAMV,KAAA,EAAOiB,GAAA,EAAKT,OAAA,EAASC,KAAA,EAAOG,WAAA;IACpC;EACF;EAEA;EACA,KAAK,MAAMK,GAAA,IAAOjB,KAAK,CAACE,GAAA,CAAI,CAACC,YAAY,EAAE;IACzC,IAAI,CAACK,OAAO,CAACS,GAAA,CAAI,IAAI,CAACjB,KAAK,CAACE,GAAA,CAAI,CAACE,oBAAoB,CAACU,QAAQ,CAACG,GAAA,GAAM;MACnEP,KAAA,CAAMV,KAAA,EAAOiB,GAAA,EAAKT,OAAA,EAASC,KAAA,EAAOG,WAAA;IACpC;EACF;EAEA;EACA,KAAK,MAAMK,GAAA,IAAOjB,KAAK,CAACE,GAAA,CAAI,CAACG,gBAAgB,EAAE;IAC7C,IACEL,KAAK,CAACiB,GAAA,CAAI,IACV,CAACT,OAAO,CAACS,GAAA,CAAI,IACb,CAACjB,KAAK,CAACE,GAAA,CAAI,CAACE,oBAAoB,CAACU,QAAQ,CAACG,GAAA,KAC1C,CAACjB,KAAK,CAACE,GAAA,CAAI,CAACC,YAAY,CAACW,QAAQ,CAACG,GAAA,GAClC;MACAP,KAAA,CAAMV,KAAA,EAAOiB,GAAA,EAAKT,OAAA,EAASC,KAAA,EAAOG,WAAA;IACpC;EACF;EAEAH,KAAA,CAAMO,IAAI,CAAChB,KAAK,CAACE,GAAA,CAAI,CAACI,eAAe;EACrCM,WAAA,CAAYM,GAAG;AACjB;AAEA,OAAO,SAASC,8BACdpB,gBAAoE;EAEpE,OAAOQ,yBAAA,CAA0BR,gBAAA;AACnC;AAEA,OAAO,eAAeqB,aAAa;EACjCC,MAAM;EACNC,MAAM;EACNC,iBAAiB;EACjBC;AAAuB,CAMxB;EACC;EACA;EACA,MAAMC,YAAA,GAAe,IAAIC,GAAA;EACzB,KAAK,MAAMC,CAAA,IAAKH,uBAAA,CAAwBI,QAAQ,EAAE;IAChD,IAAIH,YAAA,CAAaI,GAAG,CAACF,CAAA,CAAEzB,GAAG,GAAG;MAC3BuB,YAAA,CAAaK,MAAM,CAACH,CAAA,CAAEzB,GAAG;IAC3B;IACAuB,YAAA,CAAaM,GAAG,CAACJ,CAAA,CAAEzB,GAAG,EAAEyB,CAAA;EAC1B;EACAH,uBAAA,CAAwBI,QAAQ,GAAGI,KAAA,CAAMC,IAAI,CAACR,YAAA,CAAaS,MAAM;EAEjEV,uBAAA,CAAwBI,QAAQ,GAAGT,6BAAA,CAA8BK,uBAAA,CAAwBI,QAAQ;EAEjG,MAAMO,kBAAA,GAA+C,IAAIT,GAAA,CACvDF,uBAAA,CAAwBI,QAAQ,CAACQ,GAAG,CACjCT,CAAA,IAAM,CAACA,CAAA,CAAEzB,GAAG,EAAEyB,CAAA,CAAE;EAIrB,MAAMU,gBAAA,GAA6C,IAAIX,GAAA;EAEvD;EACA,IAAIY,MAAA,GAAS;EACb,KAAK,MAAMhC,eAAA,IAAmBkB,uBAAA,CAAwBI,QAAQ,EAAE;IAC9D,IAAI,CAACtB,eAAA,CAAgBJ,GAAG,EAAE;MACxB,MAAM,IAAIW,KAAA,CACR,6HAA6H;IAEjI;IACA,IAAIP,eAAA,CAAgBH,YAAY,EAAEoC,MAAA,EAAQ;MACxC,KAAK,MAAMC,aAAA,IAAiBlC,eAAA,CAAgBH,YAAY,EAAE;QACxD,IAAI,CAACgC,kBAAA,CAAmBN,GAAG,CAACW,aAAA,GAAgB;UAC1C,MAAM,IAAI3B,KAAA,CACR,WAAWP,eAAA,CAAgBJ,GAAG,qBAAqBsC,aAAA,wBAAqC;QAE5F;MACF;IACF;IAEA,IAAIlC,eAAA,CAAgBF,oBAAoB,EAAEmC,MAAA,EAAQ;MAChD,KAAK,MAAME,qBAAA,IAAyBnC,eAAA,CAAgBF,oBAAoB,EAAE;QACxE;QACA,MAAMsC,KAAA,GAAQL,gBAAA,CAAiBM,GAAG,CAACF,qBAAA;QACnC,IAAI,CAACC,KAAA,EAAO;UACV,IAAI,CAACP,kBAAA,CAAmBN,GAAG,CAACY,qBAAA,GAAwB;YAClD,MAAM,IAAI5B,KAAA,CACR,WAAWP,eAAA,CAAgBJ,GAAG,8BAA8BuC,qBAAA,wBAA6C;UAE7G,OAAO;YACL,MAAM,IAAI5B,KAAA,CACR,WAAWP,eAAA,CAAgBJ,GAAG,8BAA8BuC,qBAAA,iCAAsD;UAEtH;QACF;MACF;IACF;IAEA,MAAMG,OAAA,GACJ,OAAOtC,eAAA,CAAgBsC,OAAO,KAAK,aAC/B,MAAMtC,eAAA,CAAgBsC,OAAO,CAAC;MAC5BvB,MAAA;MACAc,kBAAA;MACAb,MAAA;MACAC,iBAAA;MACAc,gBAAA;MACAb;IACF,KACAlB,eAAA,CAAgBsC,OAAO;IAE7B,MAAMC,eAAA,GAAmDD,OAAA;IAKzD;IACA;IACAC,eAAA,CAAgB3C,GAAG,GAAGI,eAAA,CAAgBJ,GAAG;IACzC2C,eAAA,CAAgBC,KAAK,GAAGR,MAAA;IACxBO,eAAA,CAAgB1C,YAAY,GAAGG,eAAA,CAAgBH,YAAY;IAC3D0C,eAAA,CAAgBzC,oBAAoB,GAAGE,eAAA,CAAgBF,oBAAoB;IAC3EyC,eAAA,CAAgBxC,gBAAgB,GAAGC,eAAA,CAAgBD,gBAAgB;IAEnEgC,gBAAA,CAAiBN,GAAG,CAACzB,eAAA,CAAgBJ,GAAG,EAAE2C,eAAA;IAE1CP,MAAA;EACF;EAEA,OAAOD,gBAAA;AACT","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lexical/ui/icons/Add/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lexical/ui/icons/Add/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAA;CACxB,CAWA,CAAA"}
|
|
@@ -1,19 +1,26 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
-
import { jsx as _jsx
|
|
3
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
4
4
|
import React from 'react';
|
|
5
|
-
|
|
5
|
+
const paths = {
|
|
6
|
+
16: 'M8.5 3.5a.5.5 0 0 0-1 0v4h-4a.5.5 0 0 0 0 1h4v4a.5.5 0 0 0 1 0v-4h4a.5.5 0 0 0 0-1h-4z',
|
|
7
|
+
24: 'M12 6a.5.5 0 0 1 .5.5v5h5a.5.5 0 0 1 0 1h-5v5a.5.5 0 0 1-1 0v-5h-5a.5.5 0 0 1 0-1h5v-5A.5.5 0 0 1 12 6'
|
|
8
|
+
};
|
|
9
|
+
export const AddIcon = ({
|
|
10
|
+
className,
|
|
11
|
+
size = 24
|
|
12
|
+
}) => /*#__PURE__*/_jsx("svg", {
|
|
13
|
+
className: className,
|
|
6
14
|
fill: "none",
|
|
7
|
-
height:
|
|
8
|
-
viewBox:
|
|
9
|
-
width:
|
|
15
|
+
height: size,
|
|
16
|
+
viewBox: `0 0 ${size} ${size}`,
|
|
17
|
+
width: size,
|
|
10
18
|
xmlns: "http://www.w3.org/2000/svg",
|
|
11
|
-
children:
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
})]
|
|
19
|
+
children: /*#__PURE__*/_jsx("path", {
|
|
20
|
+
clipRule: "evenodd",
|
|
21
|
+
d: paths[size],
|
|
22
|
+
fill: "currentColor",
|
|
23
|
+
fillRule: "evenodd"
|
|
24
|
+
})
|
|
18
25
|
});
|
|
19
26
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","AddIcon","
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","paths","AddIcon","className","size","_jsx","fill","height","viewBox","width","xmlns","clipRule","d","fillRule"],"sources":["../../../../../src/lexical/ui/icons/Add/index.tsx"],"sourcesContent":["'use client'\nimport React from 'react'\n\nconst paths = {\n 16: 'M8.5 3.5a.5.5 0 0 0-1 0v4h-4a.5.5 0 0 0 0 1h4v4a.5.5 0 0 0 1 0v-4h4a.5.5 0 0 0 0-1h-4z',\n 24: 'M12 6a.5.5 0 0 1 .5.5v5h5a.5.5 0 0 1 0 1h-5v5a.5.5 0 0 1-1 0v-5h-5a.5.5 0 0 1 0-1h5v-5A.5.5 0 0 1 12 6',\n}\n\nexport const AddIcon: React.FC<{\n readonly className?: string\n readonly size?: 16 | 24\n}> = ({ className, size = 24 }) => (\n <svg\n className={className}\n fill=\"none\"\n height={size}\n viewBox={`0 0 ${size} ${size}`}\n width={size}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path clipRule=\"evenodd\" d={paths[size]} fill=\"currentColor\" fillRule=\"evenodd\" />\n </svg>\n)\n"],"mappings":"AAAA;;;AACA,OAAOA,KAAA,MAAW;AAElB,MAAMC,KAAA,GAAQ;EACZ,IAAI;EACJ,IAAI;AACN;AAEA,OAAO,MAAMC,OAAA,GAGRA,CAAC;EAAEC,SAAS;EAAEC,IAAA,GAAO;AAAE,CAAE,kBAC5BC,IAAA,CAAC;EACCF,SAAA,EAAWA,SAAA;EACXG,IAAA,EAAK;EACLC,MAAA,EAAQH,IAAA;EACRI,OAAA,EAAS,OAAOJ,IAAA,IAAQA,IAAA,EAAM;EAC9BK,KAAA,EAAOL,IAAA;EACPM,KAAA,EAAM;YAEN,aAAAL,IAAA,CAAC;IAAKM,QAAA,EAAS;IAAUC,CAAA,EAAGX,KAAK,CAACG,IAAA,CAAK;IAAEE,IAAA,EAAK;IAAeO,QAAA,EAAS","ignoreList":[]}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
<svg width="
|
|
2
|
-
<path d="
|
|
3
|
-
<path d="M9,16V8" stroke="#000000" />
|
|
1
|
+
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.5 3.5a.5.5 0 0 0-1 0v4h-4a.5.5 0 0 0 0 1h4v4a.5.5 0 0 0 1 0v-4h4a.5.5 0 0 0 0-1h-4z" fill="#000000" />
|
|
4
3
|
</svg>
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
<svg width="
|
|
2
|
-
<path d="
|
|
3
|
-
<path d="M9,16V8" stroke="#ffffff" />
|
|
1
|
+
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.5 3.5a.5.5 0 0 0-1 0v4h-4a.5.5 0 0 0 0 1h4v4a.5.5 0 0 0 1 0v-4h4a.5.5 0 0 0 0-1h-4z" fill="#ffffff" />
|
|
4
3
|
</svg>
|