@payloadcms/richtext-lexical 4.0.0-canary.0 → 4.0.0-internal.183b315
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/@types/assets.d.js +2 -0
- package/dist/@types/assets.d.js.map +1 -0
- package/dist/cell/rscEntry.d.ts.map +1 -1
- package/dist/cell/rscEntry.js +5 -5
- package/dist/cell/rscEntry.js.map +1 -1
- package/dist/exports/client/Field-VYBSMSRY.js +2 -0
- package/dist/exports/client/Field-VYBSMSRY.js.map +7 -0
- package/dist/exports/client/{RelationshipComponent-RZL743CS.js → RelationshipComponent-YCPAKOL7.js} +1 -1
- package/dist/exports/client/RelationshipComponent-YCPAKOL7.js.map +7 -0
- package/dist/exports/client/bundled.css +1 -1
- package/dist/exports/client/{chunk-XIJE2UCQ.js → chunk-ZYXHC5CY.js} +2 -2
- package/dist/exports/client/chunk-ZYXHC5CY.js.map +7 -0
- package/dist/exports/client/{component-KESPRYJR.js → component-PHZQBOJE.js} +1 -1
- package/dist/exports/client/component-PHZQBOJE.js.map +7 -0
- package/dist/exports/client/componentInline-R3EPNYWF.js +2 -0
- package/dist/exports/client/index.d.ts +1 -0
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +25 -25
- package/dist/exports/client/index.js.map +4 -4
- package/dist/exports/server/rsc.browser.d.ts +11 -0
- package/dist/exports/server/rsc.browser.d.ts.map +1 -0
- package/dist/exports/server/rsc.browser.js +10 -0
- package/dist/exports/server/rsc.browser.js.map +1 -0
- package/dist/features/blockquote/server/index.d.ts +1 -4
- package/dist/features/blockquote/server/index.d.ts.map +1 -1
- package/dist/features/blockquote/server/index.js +2 -0
- package/dist/features/blockquote/server/index.js.map +1 -1
- package/dist/features/blockquote/server/schema.d.ts +8 -0
- package/dist/features/blockquote/server/schema.d.ts.map +1 -0
- package/dist/features/blockquote/server/schema.js +15 -0
- package/dist/features/blockquote/server/schema.js.map +1 -0
- package/dist/features/blocks/client/component/index.d.ts +1 -1
- package/dist/features/blocks/client/component/index.d.ts.map +1 -1
- package/dist/features/blocks/client/component/index.js +1 -1
- package/dist/features/blocks/client/component/index.js.map +1 -1
- package/dist/features/blocks/client/componentInline/index.d.ts +1 -1
- package/dist/features/blocks/client/componentInline/index.d.ts.map +1 -1
- package/dist/features/blocks/client/componentInline/index.js +1 -1
- package/dist/features/blocks/client/componentInline/index.js.map +1 -1
- package/dist/features/blocks/client/markdown/markdownTransformer.js +4 -4
- package/dist/features/blocks/client/markdown/markdownTransformer.js.map +1 -1
- package/dist/features/blocks/client/nodes/BlocksNode.d.ts +1 -1
- package/dist/features/blocks/client/nodes/BlocksNode.d.ts.map +1 -1
- package/dist/features/blocks/client/nodes/BlocksNode.js.map +1 -1
- package/dist/features/blocks/client/nodes/InlineBlocksNode.d.ts +1 -1
- package/dist/features/blocks/client/nodes/InlineBlocksNode.d.ts.map +1 -1
- package/dist/features/blocks/client/nodes/InlineBlocksNode.js.map +1 -1
- package/dist/features/blocks/client/plugin/index.d.ts +1 -1
- package/dist/features/blocks/client/plugin/index.d.ts.map +1 -1
- package/dist/features/blocks/client/plugin/index.js.map +1 -1
- package/dist/features/blocks/premade/CodeBlock/Component/Block.d.ts.map +1 -1
- package/dist/features/blocks/premade/CodeBlock/Component/Block.js +1 -0
- package/dist/features/blocks/premade/CodeBlock/Component/Block.js.map +1 -1
- package/dist/features/blocks/server/graphQLPopulationPromise.d.ts +1 -2
- package/dist/features/blocks/server/graphQLPopulationPromise.d.ts.map +1 -1
- package/dist/features/blocks/server/graphQLPopulationPromise.js.map +1 -1
- package/dist/features/blocks/server/index.d.ts +1 -0
- package/dist/features/blocks/server/index.d.ts.map +1 -1
- package/dist/features/blocks/server/index.js +20 -66
- package/dist/features/blocks/server/index.js.map +1 -1
- package/dist/features/blocks/server/markdown/markdownTransformer.js +4 -4
- package/dist/features/blocks/server/markdown/markdownTransformer.js.map +1 -1
- package/dist/features/blocks/server/nodes/BlocksNode.d.ts +1 -18
- package/dist/features/blocks/server/nodes/BlocksNode.d.ts.map +1 -1
- package/dist/features/blocks/server/nodes/BlocksNode.js.map +1 -1
- package/dist/features/blocks/server/nodes/InlineBlocksNode.d.ts +2 -10
- package/dist/features/blocks/server/nodes/InlineBlocksNode.d.ts.map +1 -1
- package/dist/features/blocks/server/nodes/InlineBlocksNode.js.map +1 -1
- package/dist/features/blocks/server/schema.d.ts +45 -0
- package/dist/features/blocks/server/schema.d.ts.map +1 -0
- package/dist/features/blocks/server/schema.js +139 -0
- package/dist/features/blocks/server/schema.js.map +1 -0
- package/dist/features/blocks/server/validate.d.ts +1 -2
- package/dist/features/blocks/server/validate.d.ts.map +1 -1
- package/dist/features/blocks/server/validate.js.map +1 -1
- package/dist/features/converters/lexicalToHtml/async/converters/upload.js.map +1 -1
- package/dist/features/converters/lexicalToHtml/async/types.d.ts +14 -15
- package/dist/features/converters/lexicalToHtml/async/types.d.ts.map +1 -1
- package/dist/features/converters/lexicalToHtml/async/types.js.map +1 -1
- package/dist/features/converters/lexicalToHtml/sync/converters/upload.js.map +1 -1
- package/dist/features/converters/lexicalToHtml/sync/types.d.ts +14 -15
- package/dist/features/converters/lexicalToHtml/sync/types.d.ts.map +1 -1
- package/dist/features/converters/lexicalToHtml/sync/types.js.map +1 -1
- package/dist/features/converters/lexicalToJSX/Component/index.d.ts +4 -2
- package/dist/features/converters/lexicalToJSX/Component/index.d.ts.map +1 -1
- package/dist/features/converters/lexicalToJSX/Component/index.js +5 -4
- package/dist/features/converters/lexicalToJSX/Component/index.js.map +1 -1
- package/dist/features/converters/lexicalToJSX/converter/converters/upload.js.map +1 -1
- package/dist/features/converters/lexicalToJSX/converter/types.d.ts +12 -14
- package/dist/features/converters/lexicalToJSX/converter/types.d.ts.map +1 -1
- package/dist/features/converters/lexicalToJSX/converter/types.js.map +1 -1
- package/dist/features/converters/lexicalToPlaintext/sync/types.d.ts +12 -14
- package/dist/features/converters/lexicalToPlaintext/sync/types.d.ts.map +1 -1
- package/dist/features/converters/lexicalToPlaintext/sync/types.js.map +1 -1
- package/dist/features/experimental_table/server/index.d.ts +1 -6
- package/dist/features/experimental_table/server/index.d.ts.map +1 -1
- package/dist/features/experimental_table/server/index.js +4 -0
- package/dist/features/experimental_table/server/index.js.map +1 -1
- package/dist/features/experimental_table/server/schema.d.ts +27 -0
- package/dist/features/experimental_table/server/schema.d.ts.map +1 -0
- package/dist/features/experimental_table/server/schema.js +107 -0
- package/dist/features/experimental_table/server/schema.js.map +1 -0
- package/dist/features/heading/server/index.d.ts +2 -4
- package/dist/features/heading/server/index.d.ts.map +1 -1
- package/dist/features/heading/server/index.js +2 -0
- package/dist/features/heading/server/index.js.map +1 -1
- package/dist/features/heading/server/schema.d.ts +10 -0
- package/dist/features/heading/server/schema.d.ts.map +1 -0
- package/dist/features/heading/server/schema.js +37 -0
- package/dist/features/heading/server/schema.js.map +1 -0
- package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.d.ts +1 -1
- package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.d.ts.map +1 -1
- package/dist/features/horizontalRule/client/nodes/HorizontalRuleNode.js.map +1 -1
- package/dist/features/horizontalRule/server/index.d.ts +1 -0
- package/dist/features/horizontalRule/server/index.d.ts.map +1 -1
- package/dist/features/horizontalRule/server/index.js +2 -0
- package/dist/features/horizontalRule/server/index.js.map +1 -1
- package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.d.ts +1 -5
- package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.d.ts.map +1 -1
- package/dist/features/horizontalRule/server/nodes/HorizontalRuleNode.js.map +1 -1
- package/dist/features/horizontalRule/server/schema.d.ts +7 -0
- package/dist/features/horizontalRule/server/schema.d.ts.map +1 -0
- package/dist/features/horizontalRule/server/schema.js +25 -0
- package/dist/features/horizontalRule/server/schema.js.map +1 -0
- package/dist/features/link/client/index.d.ts.map +1 -1
- package/dist/features/link/client/index.js.map +1 -1
- package/dist/features/link/client/plugins/autoLink/index.d.ts +1 -1
- package/dist/features/link/client/plugins/autoLink/index.d.ts.map +1 -1
- package/dist/features/link/client/plugins/autoLink/index.js.map +1 -1
- package/dist/features/link/client/plugins/floatingLinkEditor/LinkEditor/index.js.map +1 -1
- package/dist/features/link/client/plugins/floatingLinkEditor/types.d.ts +1 -1
- package/dist/features/link/client/plugins/floatingLinkEditor/types.d.ts.map +1 -1
- package/dist/features/link/client/plugins/floatingLinkEditor/types.js.map +1 -1
- package/dist/features/link/client/plugins/link/index.js.map +1 -1
- package/dist/features/link/markdownTransformer.d.ts +1 -1
- package/dist/features/link/markdownTransformer.d.ts.map +1 -1
- package/dist/features/link/markdownTransformer.js.map +1 -1
- package/dist/features/link/markdownTransformer.spec.js.map +1 -1
- package/dist/features/link/nodes/AutoLinkNode.d.ts +3 -3
- package/dist/features/link/nodes/AutoLinkNode.d.ts.map +1 -1
- package/dist/features/link/nodes/AutoLinkNode.js +2 -1
- package/dist/features/link/nodes/AutoLinkNode.js.map +1 -1
- package/dist/features/link/nodes/LinkNode.d.ts +3 -3
- package/dist/features/link/nodes/LinkNode.d.ts.map +1 -1
- package/dist/features/link/nodes/LinkNode.js +2 -1
- package/dist/features/link/nodes/LinkNode.js.map +1 -1
- package/dist/features/link/server/baseFields.js.map +1 -1
- package/dist/features/link/server/graphQLPopulationPromise.d.ts +1 -1
- package/dist/features/link/server/graphQLPopulationPromise.d.ts.map +1 -1
- package/dist/features/link/server/graphQLPopulationPromise.js.map +1 -1
- package/dist/features/link/server/index.d.ts +2 -1
- package/dist/features/link/server/index.d.ts.map +1 -1
- package/dist/features/link/server/index.js +3 -0
- package/dist/features/link/server/index.js.map +1 -1
- package/dist/features/link/server/schema.d.ts +32 -0
- package/dist/features/link/server/schema.d.ts.map +1 -0
- package/dist/features/link/server/schema.js +169 -0
- package/dist/features/link/server/schema.js.map +1 -0
- package/dist/features/link/server/validate.d.ts +1 -1
- package/dist/features/link/server/validate.d.ts.map +1 -1
- package/dist/features/link/server/validate.js.map +1 -1
- package/dist/features/lists/checklist/server/index.d.ts.map +1 -1
- package/dist/features/lists/checklist/server/index.js +3 -0
- package/dist/features/lists/checklist/server/index.js.map +1 -1
- package/dist/features/lists/orderedList/server/index.d.ts.map +1 -1
- package/dist/features/lists/orderedList/server/index.js +3 -0
- package/dist/features/lists/orderedList/server/index.js.map +1 -1
- package/dist/features/lists/plugin/index.d.ts +0 -9
- package/dist/features/lists/plugin/index.d.ts.map +1 -1
- package/dist/features/lists/plugin/index.js.map +1 -1
- package/dist/features/lists/shared/schema.d.ts +18 -0
- package/dist/features/lists/shared/schema.d.ts.map +1 -0
- package/dist/features/lists/shared/schema.js +62 -0
- package/dist/features/lists/shared/schema.js.map +1 -0
- package/dist/features/lists/unorderedList/server/index.d.ts.map +1 -1
- package/dist/features/lists/unorderedList/server/index.js +3 -0
- package/dist/features/lists/unorderedList/server/index.js.map +1 -1
- package/dist/features/relationship/client/components/RelationshipComponent.d.ts +1 -1
- package/dist/features/relationship/client/components/RelationshipComponent.d.ts.map +1 -1
- package/dist/features/relationship/client/components/RelationshipComponent.js.map +1 -1
- package/dist/features/relationship/client/nodes/RelationshipNode.d.ts +1 -1
- package/dist/features/relationship/client/nodes/RelationshipNode.d.ts.map +1 -1
- package/dist/features/relationship/client/nodes/RelationshipNode.js.map +1 -1
- package/dist/features/relationship/client/plugins/index.d.ts +1 -1
- package/dist/features/relationship/client/plugins/index.d.ts.map +1 -1
- package/dist/features/relationship/client/plugins/index.js.map +1 -1
- package/dist/features/relationship/client/utils/useEnabledRelationships.d.ts.map +1 -1
- package/dist/features/relationship/client/utils/useEnabledRelationships.js +9 -40
- package/dist/features/relationship/client/utils/useEnabledRelationships.js.map +1 -1
- package/dist/features/relationship/server/graphQLPopulationPromise.d.ts +1 -1
- package/dist/features/relationship/server/graphQLPopulationPromise.d.ts.map +1 -1
- package/dist/features/relationship/server/graphQLPopulationPromise.js.map +1 -1
- package/dist/features/relationship/server/index.d.ts +1 -0
- package/dist/features/relationship/server/index.d.ts.map +1 -1
- package/dist/features/relationship/server/index.js +2 -0
- package/dist/features/relationship/server/index.js.map +1 -1
- package/dist/features/relationship/server/nodes/RelationshipNode.d.ts +1 -10
- package/dist/features/relationship/server/nodes/RelationshipNode.d.ts.map +1 -1
- package/dist/features/relationship/server/nodes/RelationshipNode.js.map +1 -1
- package/dist/features/relationship/server/schema.d.ts +28 -0
- package/dist/features/relationship/server/schema.d.ts.map +1 -0
- package/dist/features/relationship/server/schema.js +80 -0
- package/dist/features/relationship/server/schema.js.map +1 -0
- package/dist/features/relationship/shared/filterEnabledRelationshipCollections.d.ts +23 -0
- package/dist/features/relationship/shared/filterEnabledRelationshipCollections.d.ts.map +1 -0
- package/dist/features/relationship/shared/filterEnabledRelationshipCollections.js +34 -0
- package/dist/features/relationship/shared/filterEnabledRelationshipCollections.js.map +1 -0
- package/dist/features/toolbars/shared/ToolbarDropdown/index.js.map +1 -1
- package/dist/features/typesServer.d.ts +17 -40
- package/dist/features/typesServer.d.ts.map +1 -1
- package/dist/features/typesServer.js.map +1 -1
- package/dist/features/upload/client/component/index.d.ts +1 -1
- package/dist/features/upload/client/component/index.d.ts.map +1 -1
- package/dist/features/upload/client/component/index.js.map +1 -1
- package/dist/features/upload/client/nodes/UploadNode.d.ts +1 -1
- package/dist/features/upload/client/nodes/UploadNode.d.ts.map +1 -1
- package/dist/features/upload/client/nodes/UploadNode.js.map +1 -1
- package/dist/features/upload/client/plugin/index.d.ts +1 -1
- package/dist/features/upload/client/plugin/index.d.ts.map +1 -1
- package/dist/features/upload/client/plugin/index.js.map +1 -1
- package/dist/features/upload/server/graphQLPopulationPromise.d.ts +1 -1
- package/dist/features/upload/server/graphQLPopulationPromise.d.ts.map +1 -1
- package/dist/features/upload/server/graphQLPopulationPromise.js.map +1 -1
- package/dist/features/upload/server/index.d.ts +1 -0
- package/dist/features/upload/server/index.d.ts.map +1 -1
- package/dist/features/upload/server/index.js +3 -2
- package/dist/features/upload/server/index.js.map +1 -1
- package/dist/features/upload/server/nodes/UploadNode.d.ts +1 -55
- package/dist/features/upload/server/nodes/UploadNode.d.ts.map +1 -1
- package/dist/features/upload/server/nodes/UploadNode.js.map +1 -1
- package/dist/features/upload/server/nodes/conversions.d.ts.map +1 -1
- package/dist/features/upload/server/nodes/conversions.js.map +1 -1
- package/dist/features/upload/server/schema.d.ts +52 -0
- package/dist/features/upload/server/schema.d.ts.map +1 -0
- package/dist/features/upload/server/schema.js +129 -0
- package/dist/features/upload/server/schema.js.map +1 -0
- package/dist/features/upload/server/validate.d.ts +1 -1
- package/dist/features/upload/server/validate.d.ts.map +1 -1
- package/dist/features/upload/server/validate.js.map +1 -1
- package/dist/field/Diff/converters/upload/index.js.map +1 -1
- package/dist/field/bundled.css +1 -1
- package/dist/field/clientEntry.d.ts +29 -0
- package/dist/field/clientEntry.d.ts.map +1 -0
- package/dist/field/clientEntry.js +86 -0
- package/dist/field/clientEntry.js.map +1 -0
- package/dist/field/index.css +9 -12
- package/dist/field/index.js +1 -1
- package/dist/field/index.js.map +1 -1
- package/dist/field/rscEntry.d.ts.map +1 -1
- package/dist/field/rscEntry.js +2 -0
- package/dist/field/rscEntry.js.map +1 -1
- package/dist/index.d.ts +8 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +47 -4
- package/dist/index.js.map +1 -1
- package/dist/lexical/LexicalEditor.d.ts.map +1 -1
- package/dist/lexical/LexicalEditor.js +36 -2
- package/dist/lexical/LexicalEditor.js.map +1 -1
- package/dist/lexical/LexicalProvider.d.ts.map +1 -1
- package/dist/lexical/LexicalProvider.js +22 -7
- package/dist/lexical/LexicalProvider.js.map +1 -1
- package/dist/lexical/config/client/loader.d.ts.map +1 -1
- package/dist/lexical/config/client/loader.js +5 -1
- package/dist/lexical/config/client/loader.js.map +1 -1
- package/dist/lexical/config/server/sanitize.d.ts.map +1 -1
- package/dist/lexical/config/server/sanitize.js +9 -11
- package/dist/lexical/config/server/sanitize.js.map +1 -1
- package/dist/lexical/plugins/DecoratorPlugin/index.js.map +1 -1
- package/dist/types/builtInNodes.d.ts +14 -0
- package/dist/types/builtInNodes.d.ts.map +1 -0
- package/dist/types/builtInNodes.js +203 -0
- package/dist/types/builtInNodes.js.map +1 -0
- package/dist/types/index.d.ts +16 -17
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/jsonSchemaHelpers.d.ts +30 -0
- package/dist/types/jsonSchemaHelpers.d.ts.map +1 -0
- package/dist/types/jsonSchemaHelpers.js +58 -0
- package/dist/types/jsonSchemaHelpers.js.map +1 -0
- package/dist/types/nodeTypes.d.ts +115 -61
- package/dist/types/nodeTypes.d.ts.map +1 -1
- package/dist/types/nodeTypes.js +3 -2
- package/dist/types/nodeTypes.js.map +1 -1
- package/dist/types/schema.d.ts.map +1 -1
- package/dist/types/schema.js +67 -65
- package/dist/types/schema.js.map +1 -1
- package/dist/utilities/buildEditorState.d.ts +17 -3
- package/dist/utilities/buildEditorState.d.ts.map +1 -1
- package/dist/utilities/buildEditorState.js +8 -0
- package/dist/utilities/buildEditorState.js.map +1 -1
- package/dist/utilities/buildInitialState.d.ts +2 -1
- package/dist/utilities/buildInitialState.d.ts.map +1 -1
- package/dist/utilities/buildInitialState.js.map +1 -1
- package/dist/utilities/generateImportMap.d.ts.map +1 -1
- package/dist/utilities/generateImportMap.js +7 -3
- package/dist/utilities/generateImportMap.js.map +1 -1
- package/package.json +8 -7
- package/dist/exports/client/Field-G5Z2HM5Y.js +0 -2
- package/dist/exports/client/Field-G5Z2HM5Y.js.map +0 -7
- package/dist/exports/client/RelationshipComponent-RZL743CS.js.map +0 -7
- package/dist/exports/client/chunk-XIJE2UCQ.js.map +0 -7
- package/dist/exports/client/component-KESPRYJR.js.map +0 -7
- package/dist/exports/client/componentInline-R2RSJX4K.js +0 -2
- package/dist/features/link/nodes/types.d.ts +0 -27
- package/dist/features/link/nodes/types.d.ts.map +0 -1
- package/dist/features/link/nodes/types.js +0 -2
- package/dist/features/link/nodes/types.js.map +0 -1
- /package/dist/exports/client/{componentInline-R2RSJX4K.js.map → componentInline-R3EPNYWF.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["fieldsToJSONSchema","flattenAllFields","sanitizeFields","applyBaseFilterToFields","createServerFeature","createNode","blockPopulationPromiseHOC","i18n","getBlockMarkdownTransformers","ServerBlockNode","ServerInlineBlockNode","blockValidationHOC","BlocksFeature","feature","config","_config","isRoot","parentIsLocalized","props","_props","validRelationships","collections","map","c","slug","sanitized","fields","name","type","blockReferences","blocks","inlineBlocks","requireFieldLevelRichTextEditor","blockConfigs","_block","block","find","b","Error","push","inlineBlockConfigs","ClientFeature","generatedTypes","modifyJSONSchema","collectionIDFieldTypes","currentSchema","field","interfaceNameDefinitions","length","flattenedFields","generateSchemaMap","schemaMap","Map","blockFields","admin","components","unshift","Block","BlockLabel","Label","set","markdownTransformers","nodes","getSubFields","node","blockType","getSubFieldsData","graphQLPopulationPromises","validations","sanitizedServerFeatureProps","key"],"sources":["../../../../src/features/blocks/server/index.ts"],"sourcesContent":["import type {\n Block,\n BlocksField,\n BlockSlug,\n Config,\n FieldSchemaMap,\n FlattenedBlocksField,\n UIFieldClientProps,\n UIFieldServerProps,\n} from 'payload'\n\nimport { fieldsToJSONSchema, flattenAllFields, sanitizeFields } from 'payload'\n\nimport { applyBaseFilterToFields } from '../../../utilities/applyBaseFilterToFields.js'\nimport { createServerFeature } from '../../../utilities/createServerFeature.js'\nimport { createNode } from '../../typeUtilities.js'\nimport { blockPopulationPromiseHOC } from './graphQLPopulationPromise.js'\nimport { i18n } from './i18n.js'\nimport { getBlockMarkdownTransformers } from './markdown/markdownTransformer.js'\nimport { ServerBlockNode } from './nodes/BlocksNode.js'\nimport { ServerInlineBlockNode } from './nodes/InlineBlocksNode.js'\nimport { blockValidationHOC } from './validate.js'\n\nexport type BlocksFeatureProps = {\n blocks?: (Block | BlockSlug)[] | Block[]\n inlineBlocks?: (Block | BlockSlug)[] | Block[]\n}\n\nexport const BlocksFeature = createServerFeature<BlocksFeatureProps, BlocksFeatureProps>({\n feature: async ({ config: _config, isRoot, parentIsLocalized, props: _props }) => {\n const validRelationships = _config.collections.map((c) => c.slug) || []\n\n const sanitized = await sanitizeFields({\n config: _config as unknown as Config,\n fields: [\n {\n name: 'lexical_blocks',\n type: 'blocks',\n blockReferences: _props.blocks ?? [],\n blocks: [],\n },\n {\n name: 'lexical_inline_blocks',\n type: 'blocks',\n blockReferences: _props.inlineBlocks ?? [],\n blocks: [],\n },\n ],\n parentIsLocalized,\n requireFieldLevelRichTextEditor: isRoot,\n validRelationships,\n })\n\n const blockConfigs: Block[] = []\n for (const _block of (sanitized[0] as BlocksField).blockReferences ??\n (sanitized[0] as BlocksField).blocks) {\n const block =\n typeof _block === 'string' ? _config?.blocks?.find((b) => b.slug === _block) : _block\n if (!block) {\n throw new Error(\n `Block not found for slug: ${typeof _block === 'string' ? _block : _block?.slug}`,\n )\n }\n // Apply baseFilter to relationship fields in the block\n blockConfigs.push({\n ...block,\n fields: applyBaseFilterToFields(block.fields, _config),\n })\n }\n\n const inlineBlockConfigs: Block[] = []\n for (const _block of (sanitized[1] as BlocksField).blockReferences ??\n (sanitized[1] as BlocksField).blocks) {\n const block =\n typeof _block === 'string' ? _config?.blocks?.find((b) => b.slug === _block) : _block\n if (!block) {\n throw new Error(\n `Block not found for slug: ${typeof _block === 'string' ? _block : _block?.slug}`,\n )\n }\n // Apply baseFilter to relationship fields in the block\n inlineBlockConfigs.push({\n ...block,\n fields: applyBaseFilterToFields(block.fields, _config),\n })\n }\n\n return {\n ClientFeature: '@payloadcms/richtext-lexical/client#BlocksFeatureClient',\n generatedTypes: {\n modifyJSONSchema: ({\n collectionIDFieldTypes,\n config,\n currentSchema,\n field,\n i18n,\n interfaceNameDefinitions,\n }) => {\n if (!blockConfigs?.length && !inlineBlockConfigs?.length) {\n return currentSchema\n }\n\n const fields: FlattenedBlocksField[] = []\n\n if (blockConfigs?.length) {\n fields.push({\n name: field?.name + '_lexical_blocks',\n type: 'blocks',\n blocks: blockConfigs.map((block) => {\n return {\n ...block,\n flattenedFields: flattenAllFields({ fields: block.fields }),\n }\n }),\n })\n }\n if (inlineBlockConfigs?.length) {\n fields.push({\n name: field?.name + '_lexical_inline_blocks',\n type: 'blocks',\n blocks: inlineBlockConfigs.map((block) => {\n return {\n ...block,\n flattenedFields: flattenAllFields({ fields: block.fields }),\n }\n }),\n })\n }\n\n if (fields.length) {\n // This is only done so that interfaceNameDefinitions sets those block's interfaceNames.\n // we don't actually use the JSON Schema itself in the generated types yet.\n fieldsToJSONSchema(\n collectionIDFieldTypes,\n fields,\n interfaceNameDefinitions,\n config,\n i18n,\n )\n }\n\n return currentSchema\n },\n },\n generateSchemaMap: ({ config }) => {\n /**\n * Add sub-fields to the schemaMap. E.g. if you have an array field as part of the block, and it runs addRow, it will request these\n * sub-fields from the component map. Thus, we need to put them in the component map here.\n */\n const schemaMap: FieldSchemaMap = new Map()\n\n if (blockConfigs?.length) {\n for (const block of blockConfigs) {\n const blockFields = [...block.fields]\n\n if (block?.admin?.components) {\n blockFields.unshift({\n name: `_components`,\n type: 'ui',\n admin: {\n components: {\n Block: block.admin?.components?.Block,\n BlockLabel: block.admin?.components?.Label,\n },\n },\n })\n }\n schemaMap.set(`lexical_blocks.${block.slug}.fields`, {\n fields: blockFields,\n })\n schemaMap.set(`lexical_blocks.${block.slug}`, {\n name: `lexical_blocks_${block.slug}`,\n type: 'blocks',\n blocks: [block],\n })\n }\n }\n\n if (inlineBlockConfigs?.length) {\n // To generate block schemaMap which generates things like the componentMap for admin.Label\n for (const block of inlineBlockConfigs) {\n const blockFields = [...block.fields]\n\n if (block?.admin?.components) {\n blockFields.unshift({\n name: `_components`,\n type: 'ui',\n admin: {\n components: {\n Block: block.admin?.components?.Block,\n BlockLabel: block.admin?.components?.Label,\n },\n },\n })\n }\n\n schemaMap.set(`lexical_inline_blocks.${block.slug}.fields`, {\n fields: blockFields,\n })\n\n schemaMap.set(`lexical_inline_blocks.${block.slug}`, {\n name: `lexical_inline_blocks_${block.slug}`,\n type: 'blocks',\n blocks: [block],\n })\n }\n }\n\n return schemaMap\n },\n i18n,\n markdownTransformers: getBlockMarkdownTransformers({\n blocks: blockConfigs,\n inlineBlocks: inlineBlockConfigs,\n }),\n\n nodes: [\n createNode({\n // @ts-expect-error - TODO: fix this\n getSubFields: ({ node }) => {\n if (!node) {\n if (blockConfigs?.length) {\n return [\n {\n name: 'lexical_blocks',\n type: 'blocks',\n blocks: blockConfigs,\n },\n ]\n }\n return []\n }\n\n const blockType = node.fields.blockType\n\n const block = blockConfigs?.find((block) => block.slug === blockType)\n return block?.fields\n },\n getSubFieldsData: ({ node }) => {\n return node?.fields\n },\n graphQLPopulationPromises: [blockPopulationPromiseHOC(blockConfigs)],\n node: ServerBlockNode,\n validations: [blockValidationHOC(blockConfigs)],\n }),\n createNode({\n // @ts-expect-error - TODO: fix this\n getSubFields: ({ node }) => {\n if (!node) {\n if (inlineBlockConfigs?.length) {\n return [\n {\n name: 'lexical_inline_blocks',\n type: 'blocks',\n blocks: inlineBlockConfigs,\n },\n ]\n }\n return []\n }\n\n const blockType = node.fields.blockType\n\n const block = inlineBlockConfigs?.find((block) => block.slug === blockType)\n return block?.fields\n },\n getSubFieldsData: ({ node }) => {\n return node?.fields\n },\n graphQLPopulationPromises: [blockPopulationPromiseHOC(inlineBlockConfigs)],\n node: ServerInlineBlockNode,\n validations: [blockValidationHOC(inlineBlockConfigs)],\n }),\n ],\n sanitizedServerFeatureProps: _props,\n }\n },\n key: 'blocks',\n})\n\n/**\n * Props for the client components provided to `admin.components.Block` of lexical blocks.\n */\nexport type LexicalBlockClientProps = UIFieldClientProps\n/**\n * Props for the server components provided to `admin.components.Block` of lexical blocks.\n */\nexport type LexicalBlockServerProps = UIFieldServerProps\n\n/**\n * Props for the client components provided to `admin.components.Label` of lexical blocks.\n */\nexport type LexicalBlockLabelClientProps = UIFieldClientProps\n/**\n * Props for the server components provided to `admin.components.Label` of lexical blocks.\n */\nexport type LexicalBlockLabelServerProps = UIFieldServerProps\n\n/**\n * Props for the client components provided to `admin.components.Block` of lexical inline blocks.\n */\nexport type LexicalInlineBlockClientProps = UIFieldClientProps\n/**\n * Props for the server components provided to `admin.components.Block` of lexical inline blocks.\n */\nexport type LexicalInlineBlockServerProps = UIFieldServerProps\n\n/**\n * Props for the client components provided to `admin.components.Label` of lexical inline blocks.\n */\nexport type LexicalInlineBlockLabelClientProps = UIFieldClientProps\n/**\n * Props for the server components provided to `admin.components.Label` of lexical inline blocks.\n */\nexport type LexicalInlineBlockLabelServerProps = UIFieldServerProps\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["sanitizeFields","applyBaseFilterToFields","createServerFeature","createNode","blockPopulationPromiseHOC","i18n","getBlockMarkdownTransformers","ServerBlockNode","ServerInlineBlockNode","createBlockNodeJSONSchema","createInlineBlockNodeJSONSchema","blockValidationHOC","BlocksFeature","feature","config","_config","isRoot","parentIsLocalized","props","_props","validRelationships","collections","map","c","slug","sanitized","fields","name","type","blockReferences","blocks","inlineBlocks","requireFieldLevelRichTextEditor","blockConfigs","_block","block","find","b","Error","push","inlineBlockConfigs","ClientFeature","generateSchemaMap","schemaMap","Map","length","blockFields","admin","components","unshift","Block","BlockLabel","Label","set","markdownTransformers","nodes","jsonSchema","undefined","getSubFields","node","blockType","getSubFieldsData","graphQLPopulationPromises","validations","sanitizedServerFeatureProps","key"],"sources":["../../../../src/features/blocks/server/index.ts"],"sourcesContent":["import type {\n Block,\n BlocksField,\n BlockSlug,\n Config,\n FieldSchemaMap,\n UIFieldClientProps,\n UIFieldServerProps,\n} from 'payload'\n\nimport { sanitizeFields } from 'payload'\n\nimport { applyBaseFilterToFields } from '../../../utilities/applyBaseFilterToFields.js'\nimport { createServerFeature } from '../../../utilities/createServerFeature.js'\nimport { createNode } from '../../typeUtilities.js'\nimport { blockPopulationPromiseHOC } from './graphQLPopulationPromise.js'\nimport { i18n } from './i18n.js'\nimport { getBlockMarkdownTransformers } from './markdown/markdownTransformer.js'\nimport { ServerBlockNode } from './nodes/BlocksNode.js'\nimport { ServerInlineBlockNode } from './nodes/InlineBlocksNode.js'\nimport { createBlockNodeJSONSchema, createInlineBlockNodeJSONSchema } from './schema.js'\nimport { blockValidationHOC } from './validate.js'\n\nexport type {\n BlockFields,\n BlockFieldsOptionalID,\n InlineBlockFields,\n SerializedBlockNode,\n SerializedInlineBlockNode,\n} from './schema.js'\n\nexport type BlocksFeatureProps = {\n blocks?: (Block | BlockSlug)[] | Block[]\n inlineBlocks?: (Block | BlockSlug)[] | Block[]\n}\n\nexport const BlocksFeature = createServerFeature<BlocksFeatureProps, BlocksFeatureProps>({\n feature: async ({ config: _config, isRoot, parentIsLocalized, props: _props }) => {\n const validRelationships = _config.collections.map((c) => c.slug) || []\n\n const sanitized = await sanitizeFields({\n config: _config as unknown as Config,\n fields: [\n {\n name: 'lexical_blocks',\n type: 'blocks',\n blockReferences: _props.blocks ?? [],\n blocks: [],\n },\n {\n name: 'lexical_inline_blocks',\n type: 'blocks',\n blockReferences: _props.inlineBlocks ?? [],\n blocks: [],\n },\n ],\n parentIsLocalized,\n requireFieldLevelRichTextEditor: isRoot,\n validRelationships,\n })\n\n const blockConfigs: Block[] = []\n for (const _block of (sanitized[0] as BlocksField).blockReferences ??\n (sanitized[0] as BlocksField).blocks) {\n const block =\n typeof _block === 'string' ? _config?.blocks?.find((b) => b.slug === _block) : _block\n if (!block) {\n throw new Error(\n `Block not found for slug: ${typeof _block === 'string' ? _block : _block?.slug}`,\n )\n }\n // Apply baseFilter to relationship fields in the block\n blockConfigs.push({\n ...block,\n fields: applyBaseFilterToFields(block.fields, _config),\n })\n }\n\n const inlineBlockConfigs: Block[] = []\n for (const _block of (sanitized[1] as BlocksField).blockReferences ??\n (sanitized[1] as BlocksField).blocks) {\n const block =\n typeof _block === 'string' ? _config?.blocks?.find((b) => b.slug === _block) : _block\n if (!block) {\n throw new Error(\n `Block not found for slug: ${typeof _block === 'string' ? _block : _block?.slug}`,\n )\n }\n // Apply baseFilter to relationship fields in the block\n inlineBlockConfigs.push({\n ...block,\n fields: applyBaseFilterToFields(block.fields, _config),\n })\n }\n\n return {\n ClientFeature: '@payloadcms/richtext-lexical/client#BlocksFeatureClient',\n generateSchemaMap: ({ config }) => {\n /**\n * Add sub-fields to the schemaMap. E.g. if you have an array field as part of the block, and it runs addRow, it will request these\n * sub-fields from the component map. Thus, we need to put them in the component map here.\n */\n const schemaMap: FieldSchemaMap = new Map()\n\n if (blockConfigs?.length) {\n for (const block of blockConfigs) {\n const blockFields = [...block.fields]\n\n if (block?.admin?.components) {\n blockFields.unshift({\n name: `_components`,\n type: 'ui',\n admin: {\n components: {\n Block: block.admin?.components?.Block,\n BlockLabel: block.admin?.components?.Label,\n },\n },\n })\n }\n schemaMap.set(`lexical_blocks.${block.slug}.fields`, {\n fields: blockFields,\n })\n schemaMap.set(`lexical_blocks.${block.slug}`, {\n name: `lexical_blocks_${block.slug}`,\n type: 'blocks',\n blocks: [block],\n })\n }\n }\n\n if (inlineBlockConfigs?.length) {\n // To generate block schemaMap which generates things like the componentMap for admin.Label\n for (const block of inlineBlockConfigs) {\n const blockFields = [...block.fields]\n\n if (block?.admin?.components) {\n blockFields.unshift({\n name: `_components`,\n type: 'ui',\n admin: {\n components: {\n Block: block.admin?.components?.Block,\n BlockLabel: block.admin?.components?.Label,\n },\n },\n })\n }\n\n schemaMap.set(`lexical_inline_blocks.${block.slug}.fields`, {\n fields: blockFields,\n })\n\n schemaMap.set(`lexical_inline_blocks.${block.slug}`, {\n name: `lexical_inline_blocks_${block.slug}`,\n type: 'blocks',\n blocks: [block],\n })\n }\n }\n\n return schemaMap\n },\n i18n,\n markdownTransformers: getBlockMarkdownTransformers({\n blocks: blockConfigs,\n inlineBlocks: inlineBlockConfigs,\n }),\n\n nodes: [\n createNode({\n jsonSchema: blockConfigs.length ? createBlockNodeJSONSchema(blockConfigs) : undefined,\n // @ts-expect-error - TODO: fix this\n getSubFields: ({ node }) => {\n if (!node) {\n if (!blockConfigs.length) {\n return []\n }\n return [\n {\n name: 'lexical_blocks',\n type: 'blocks',\n blocks: blockConfigs,\n },\n ]\n }\n\n const blockType = node.fields.blockType\n const block = blockConfigs.find((block) => block.slug === blockType)\n return block?.fields\n },\n getSubFieldsData: ({ node }) => {\n return node?.fields\n },\n graphQLPopulationPromises: [blockPopulationPromiseHOC(blockConfigs)],\n node: ServerBlockNode,\n validations: [blockValidationHOC(blockConfigs)],\n }),\n createNode({\n jsonSchema: inlineBlockConfigs.length\n ? createInlineBlockNodeJSONSchema(inlineBlockConfigs)\n : undefined,\n // @ts-expect-error - TODO: fix this\n getSubFields: ({ node }) => {\n if (!node) {\n if (!inlineBlockConfigs.length) {\n return []\n }\n return [\n {\n name: 'lexical_inline_blocks',\n type: 'blocks',\n blocks: inlineBlockConfigs,\n },\n ]\n }\n\n const blockType = node.fields.blockType\n const block = inlineBlockConfigs.find((block) => block.slug === blockType)\n return block?.fields\n },\n getSubFieldsData: ({ node }) => {\n return node?.fields\n },\n graphQLPopulationPromises: [blockPopulationPromiseHOC(inlineBlockConfigs)],\n node: ServerInlineBlockNode,\n validations: [blockValidationHOC(inlineBlockConfigs)],\n }),\n ],\n sanitizedServerFeatureProps: _props,\n }\n },\n key: 'blocks',\n})\n\n/**\n * Props for the client components provided to `admin.components.Block` of lexical blocks.\n */\nexport type LexicalBlockClientProps = UIFieldClientProps\n/**\n * Props for the server components provided to `admin.components.Block` of lexical blocks.\n */\nexport type LexicalBlockServerProps = UIFieldServerProps\n\n/**\n * Props for the client components provided to `admin.components.Label` of lexical blocks.\n */\nexport type LexicalBlockLabelClientProps = UIFieldClientProps\n/**\n * Props for the server components provided to `admin.components.Label` of lexical blocks.\n */\nexport type LexicalBlockLabelServerProps = UIFieldServerProps\n\n/**\n * Props for the client components provided to `admin.components.Block` of lexical inline blocks.\n */\nexport type LexicalInlineBlockClientProps = UIFieldClientProps\n/**\n * Props for the server components provided to `admin.components.Block` of lexical inline blocks.\n */\nexport type LexicalInlineBlockServerProps = UIFieldServerProps\n\n/**\n * Props for the client components provided to `admin.components.Label` of lexical inline blocks.\n */\nexport type LexicalInlineBlockLabelClientProps = UIFieldClientProps\n/**\n * Props for the server components provided to `admin.components.Label` of lexical inline blocks.\n */\nexport type LexicalInlineBlockLabelServerProps = UIFieldServerProps\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -276,8 +276,8 @@ function getMarkdownTransformerForBlock(block, isInlineBlock) {
|
|
|
276
276
|
return [false, startLineIndex];
|
|
277
277
|
}
|
|
278
278
|
const node = $createServerBlockNode({
|
|
279
|
-
|
|
280
|
-
|
|
279
|
+
...blockFields,
|
|
280
|
+
blockType: block.slug
|
|
281
281
|
});
|
|
282
282
|
if (node) {
|
|
283
283
|
// Now handle beforeStartLine and afterEndLine. If those are not empty, we need to add them as text nodes before and after the block node.
|
|
@@ -351,8 +351,8 @@ function getMarkdownTransformerForBlock(block, isInlineBlock) {
|
|
|
351
351
|
return false;
|
|
352
352
|
}
|
|
353
353
|
const node = $createServerBlockNode({
|
|
354
|
-
|
|
355
|
-
|
|
354
|
+
...blockFields,
|
|
355
|
+
blockType: block.slug
|
|
356
356
|
});
|
|
357
357
|
if (node) {
|
|
358
358
|
rootNode.append(node);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markdownTransformer.js","names":["$parseSerializedNode","getEnabledNodesFromServerNodes","extractPropsFromJSXPropsString","propsToJSXString","getLexicalToMarkdown","getMarkdownToLexical","$createServerBlockNode","$isServerBlockNode","ServerBlockNode","$createServerInlineBlockNode","$isServerInlineBlockNode","ServerInlineBlockNode","linesFromStartToContentAndPropsString","createTagRegexes","tagName","escapedTagName","replace","openingTag","closingTag","optionalWhitespace","mandatoryClosingBracket","startPattern","endPattern","regExpEnd","RegExp","regExpStart","getBlockMarkdownTransformers","blocks","inlineBlocks","length","transformers","block","transformer","getMarkdownTransformerForBlock","concat","isInlineBlock","jsx","regex","slug","toReturn","push","allNodes","allTransformers","type","dependencies","export","node","getFields","blockType","toLowerCase","nodeFields","lexicalToMarkdown","nodes","exportResult","fields","hasProps","props","Object","keys","children","getEndIndex","match","endlineLastCharIndex","isEndOptional","lines","getTextContent","regexpEndRegex","startLineIndex","startMatch","trimChildren","importRegExp","customStartRegex","regExp","content","propsString","index","import","markdownToLexical","blockFields","closeMatch","htmlToLexical","openMatch","inlineBlockNode","sanitizedChildren","includes","child","split","sanitizedChild","doNotTrimChildren","handleImportAfterStartMatch","customEndRegex","undefined","rootNode","optional","afterEndLine","beforeStartLine","unsanitizedContent","endLineIndex","endsWith","slice","startsWith","prevNodes","nextNodes","markdown","root","firstPrevNode","append","lastChild","getChildren","linesInBetween","line","childrenString","join","trim"],"sources":["../../../../../src/features/blocks/server/markdown/markdownTransformer.ts"],"sourcesContent":["import type { ElementNode, SerializedLexicalNode } from 'lexical'\nimport type { Block } from 'payload'\n\nimport { $parseSerializedNode } from 'lexical'\n\nimport type { NodeWithHooks } from '../../../typesServer.js'\n\nimport { getEnabledNodesFromServerNodes } from '../../../../lexical/nodes/index.js'\nimport {\n type MultilineElementTransformer,\n type TextMatchTransformer,\n type Transformer,\n} from '../../../../packages/@lexical/markdown/index.js'\nimport { extractPropsFromJSXPropsString } from '../../../../utilities/jsx/extractPropsFromJSXPropsString.js'\nimport { propsToJSXString } from '../../../../utilities/jsx/jsx.js'\nimport { getLexicalToMarkdown } from '../../client/markdown/getLexicalToMarkdown.js'\nimport { getMarkdownToLexical } from '../../client/markdown/getMarkdownToLexical.js'\nimport { $createServerBlockNode, $isServerBlockNode, ServerBlockNode } from '../nodes/BlocksNode.js'\nimport {\n $createServerInlineBlockNode,\n $isServerInlineBlockNode,\n ServerInlineBlockNode,\n} from '../nodes/InlineBlocksNode.js'\nimport { linesFromStartToContentAndPropsString } from './linesFromMatchToContentAndPropsString.js'\n\nexport function createTagRegexes(tagName: string) {\n const escapedTagName = tagName.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n\n // Regex components\n const openingTag = `<${escapedTagName}`\n const closingTag = `</${escapedTagName}`\n const optionalWhitespace = `\\\\s*`\n const mandatoryClosingBracket = `>`\n\n // Assembled regex patterns\n const startPattern = `${openingTag}(?=\\\\s|>|$)` // Only match the tag name\n const endPattern = `${closingTag}${optionalWhitespace}${mandatoryClosingBracket}`\n\n return {\n regExpEnd: new RegExp(endPattern, 'i'),\n regExpStart: new RegExp(startPattern, 'i'),\n }\n}\nexport const getBlockMarkdownTransformers = ({\n blocks,\n inlineBlocks,\n}: {\n blocks: Block[]\n inlineBlocks: Block[]\n}): ((props: {\n allNodes: Array<NodeWithHooks>\n allTransformers: Transformer[]\n}) => MultilineElementTransformer | TextMatchTransformer)[] => {\n if (!blocks?.length && !inlineBlocks?.length) {\n return []\n }\n\n let transformers: ((props: {\n allNodes: Array<NodeWithHooks>\n allTransformers: Transformer[]\n }) => MultilineElementTransformer | TextMatchTransformer)[] = []\n\n if (blocks?.length) {\n for (const block of blocks) {\n const transformer = getMarkdownTransformerForBlock(block, false)\n\n if (transformer) {\n transformers = transformers.concat(transformer)\n }\n }\n }\n\n if (inlineBlocks?.length) {\n for (const block of inlineBlocks) {\n const transformer = getMarkdownTransformerForBlock(block, true)\n\n if (transformer) {\n transformers = transformers.concat(transformer)\n }\n }\n }\n\n return transformers\n}\n\nfunction getMarkdownTransformerForBlock(\n block: Block,\n isInlineBlock: boolean,\n): Array<\n (props: {\n allNodes: Array<NodeWithHooks>\n allTransformers: Transformer[]\n }) => MultilineElementTransformer | TextMatchTransformer\n> | null {\n if (!block.jsx) {\n return null\n }\n\n const regex = createTagRegexes(block.slug)\n const toReturn: Array<\n (props: {\n allNodes: Array<NodeWithHooks>\n allTransformers: Transformer[]\n }) => MultilineElementTransformer | TextMatchTransformer\n > = []\n\n if (isInlineBlock) {\n toReturn.push(({ allNodes, allTransformers }) => ({\n type: 'text-match',\n dependencies: [ServerInlineBlockNode],\n export: (node) => {\n if (!$isServerInlineBlockNode(node)) {\n return null\n }\n\n if (node.getFields()?.blockType?.toLowerCase() !== block.slug.toLowerCase()) {\n return null\n }\n\n const nodeFields = node.getFields()\n const lexicalToMarkdown = getLexicalToMarkdown(\n getEnabledNodesFromServerNodes({\n nodes: allNodes,\n }),\n allTransformers,\n )\n\n const exportResult = block.jsx!.export({\n fields: nodeFields,\n lexicalToMarkdown,\n })\n if (exportResult === false) {\n return null\n }\n if (typeof exportResult === 'string') {\n return exportResult\n }\n\n const hasProps = exportResult.props && Object.keys(exportResult.props)?.length > 0\n const props = exportResult.props ?? {}\n\n if (exportResult?.children?.length) {\n return `<${nodeFields.blockType}${hasProps ? ' ' + propsToJSXString({ props }) : ''}>${exportResult.children}</${nodeFields.blockType}>`\n }\n\n return `<${nodeFields.blockType}${hasProps ? ' ' + propsToJSXString({ props }) : ''}/>`\n },\n getEndIndex: (node, match) => {\n const { endlineLastCharIndex } = linesFromStartToContentAndPropsString({\n isEndOptional: false,\n lines: [node.getTextContent()],\n regexpEndRegex: regex.regExpEnd,\n startLineIndex: 0,\n startMatch: match,\n trimChildren: false,\n })\n\n return endlineLastCharIndex\n },\n importRegExp: block.jsx?.customStartRegex ?? regex.regExpStart,\n regExp: /___ignoreignoreignore___/g,\n replace(node, match) {\n const { content, propsString } = linesFromStartToContentAndPropsString({\n isEndOptional: false,\n lines: [node.getTextContent()],\n regexpEndRegex: regex.regExpEnd,\n startLineIndex: 0,\n startMatch: {\n ...match,\n index: 0,\n },\n trimChildren: false,\n })\n\n if (!block?.jsx?.import) {\n // No multiline transformer handled this line successfully\n return\n }\n\n const markdownToLexical = getMarkdownToLexical(\n getEnabledNodesFromServerNodes({\n nodes: allNodes,\n }),\n allTransformers,\n )\n\n const blockFields = block.jsx.import({\n children: content,\n closeMatch: null,\n htmlToLexical: null, // TODO\n markdownToLexical,\n openMatch: match,\n props: propsString\n ? extractPropsFromJSXPropsString({\n propsString,\n })\n : {},\n })\n if (blockFields === false) {\n return\n }\n\n const inlineBlockNode = $createServerInlineBlockNode({\n blockType: block.slug,\n ...(blockFields as any),\n })\n\n node.replace(inlineBlockNode)\n },\n }))\n\n return toReturn\n }\n\n toReturn.push(({ allNodes, allTransformers }) => ({\n dependencies: [ServerBlockNode],\n export: (node) => {\n if (!$isServerBlockNode(node)) {\n return null\n }\n\n if (node.getFields()?.blockType?.toLowerCase() !== block.slug.toLowerCase()) {\n return null\n }\n\n const nodeFields = node.getFields()\n const lexicalToMarkdown = getLexicalToMarkdown(\n getEnabledNodesFromServerNodes({\n nodes: allNodes,\n }),\n allTransformers,\n )\n\n const exportResult = block.jsx!.export({\n fields: nodeFields,\n lexicalToMarkdown,\n })\n if (exportResult === false) {\n return null\n }\n if (typeof exportResult === 'string') {\n return exportResult\n }\n\n const hasProps = exportResult.props && Object.keys(exportResult.props)?.length > 0\n const props = exportResult.props ?? {}\n\n if (exportResult?.children?.length) {\n const children = exportResult.children\n let sanitizedChildren = ''\n\n // Ensure it has a leftpad of at least 2 spaces. The data is saved without those spaces, so we can just blindly add it to every child\n if (children.includes('\\n')) {\n for (const child of children.split('\\n')) {\n let sanitizedChild = ''\n if (!block?.jsx?.doNotTrimChildren && child !== '') {\n sanitizedChild = ' '\n }\n sanitizedChild += child + '\\n'\n\n sanitizedChildren += sanitizedChild\n }\n } else {\n sanitizedChildren = (block?.jsx?.doNotTrimChildren ? '' : ' ') + children + '\\n'\n }\n\n return `<${nodeFields.blockType}${hasProps ? ' ' + propsToJSXString({ props }) : ''}>\\n${sanitizedChildren}</${nodeFields.blockType}>`\n }\n\n return `<${nodeFields.blockType}${hasProps ? ' ' + propsToJSXString({ props }) : ''}/>`\n },\n handleImportAfterStartMatch: block.jsx?.customEndRegex\n ? undefined\n : ({ lines, rootNode, startLineIndex, startMatch, transformer }) => {\n const regexpEndRegex: RegExp | undefined =\n typeof transformer.regExpEnd === 'object' && 'regExp' in transformer.regExpEnd\n ? transformer.regExpEnd.regExp\n : transformer.regExpEnd\n\n const isEndOptional =\n transformer.regExpEnd &&\n typeof transformer.regExpEnd === 'object' &&\n 'optional' in transformer.regExpEnd\n ? transformer.regExpEnd.optional\n : !transformer.regExpEnd\n\n const {\n afterEndLine,\n beforeStartLine,\n content: unsanitizedContent,\n endLineIndex,\n propsString,\n } = linesFromStartToContentAndPropsString({\n isEndOptional,\n lines,\n regexpEndRegex,\n startLineIndex,\n startMatch,\n trimChildren: false,\n })\n\n let content = ''\n\n if (block?.jsx?.doNotTrimChildren) {\n content = unsanitizedContent.endsWith('\\n')\n ? unsanitizedContent.slice(0, -1)\n : unsanitizedContent\n } else {\n // Ensure it has a leftpad of at least 2 spaces. The data is saved without those spaces, so we can just blindly add it to every child\n if (unsanitizedContent.includes('\\n')) {\n const split = unsanitizedContent.split('\\n')\n let index = 0\n for (const child of split) {\n index++\n\n if (child.startsWith(' ')) {\n content += child.slice(2)\n } else {\n // If one child is misaligned, skip aligning completely, unless it's just empty\n if (child === '') {\n content += child\n } else {\n content = unsanitizedContent.endsWith('\\n')\n ? unsanitizedContent.slice(0, -1)\n : unsanitizedContent\n break\n }\n }\n\n content += index === split.length ? '' : '\\n'\n }\n } else {\n content =\n (!unsanitizedContent.startsWith(' ')\n ? unsanitizedContent\n : unsanitizedContent.slice(2)) + '\\n'\n }\n }\n\n if (!block?.jsx?.import) {\n // No multiline transformer handled this line successfully\n return [false, startLineIndex]\n }\n\n const markdownToLexical = getMarkdownToLexical(\n getEnabledNodesFromServerNodes({\n nodes: allNodes,\n }),\n allTransformers,\n )\n\n const blockFields = block.jsx.import({\n children: content,\n closeMatch: null,\n htmlToLexical: null, // TODO\n markdownToLexical,\n openMatch: startMatch,\n props: propsString\n ? extractPropsFromJSXPropsString({\n propsString,\n })\n : {},\n })\n if (blockFields === false) {\n return [false, startLineIndex]\n }\n\n const node = $createServerBlockNode({\n blockType: block.slug,\n ...blockFields,\n } as any)\n\n if (node) {\n // Now handle beforeStartLine and afterEndLine. If those are not empty, we need to add them as text nodes before and after the block node.\n // However, those themselves can contain other markdown matches, so we need to parse them as well.\n // Example where this is needed: \"Hello <InlineCode>inline code</InlineCode> test.\"\n let prevNodes: null | SerializedLexicalNode[] = null\n let nextNodes: null | SerializedLexicalNode[] = null\n // TODO: Might not need this prevNodes and nextNodes handling if inline nodes are handled by textmatch transformers\n\n if (beforeStartLine?.length) {\n prevNodes = markdownToLexical({ markdown: beforeStartLine })?.root?.children ?? []\n\n const firstPrevNode = prevNodes?.[0]\n if (firstPrevNode) {\n rootNode.append($parseSerializedNode(firstPrevNode))\n }\n }\n\n rootNode.append(node)\n\n if (afterEndLine?.length) {\n nextNodes = markdownToLexical({ markdown: afterEndLine })?.root?.children\n const lastChild = rootNode.getChildren()[rootNode.getChildren().length - 1]\n\n const children = ($parseSerializedNode(nextNodes[0]!) as ElementNode)?.getChildren()\n if (children?.length) {\n for (const child of children) {\n ;(lastChild as ElementNode).append(child)\n }\n }\n }\n }\n\n return [true, endLineIndex]\n },\n regExpEnd: block.jsx?.customEndRegex ?? regex.regExpEnd,\n regExpStart: block.jsx?.customStartRegex ?? regex.regExpStart,\n // This replace is ONLY run for ``` code blocks (so any blocks with custom start and end regexes). For others, we use the special JSX handling above:\n type: 'multiline-element',\n replace: (rootNode, children, openMatch, closeMatch, linesInBetween) => {\n if (block?.jsx?.import) {\n if (!linesInBetween) {\n // convert children to linesInBetween\n let line = ''\n if (children) {\n for (const child of children) {\n line += child.getTextContent()\n }\n }\n\n linesInBetween = [line]\n }\n\n let childrenString = ''\n if (block?.jsx?.doNotTrimChildren) {\n childrenString = linesInBetween.join('\\n')\n } else {\n childrenString = linesInBetween.join('\\n').trim()\n }\n\n const propsString = openMatch[1]?.trim()\n\n const markdownToLexical = getMarkdownToLexical(\n getEnabledNodesFromServerNodes({\n nodes: allNodes,\n }),\n allTransformers,\n )\n\n const blockFields = block.jsx.import({\n children: childrenString,\n closeMatch: closeMatch as RegExpMatchArray,\n htmlToLexical: null, // TODO\n markdownToLexical,\n openMatch: openMatch as RegExpMatchArray,\n props: propsString\n ? extractPropsFromJSXPropsString({\n propsString,\n })\n : {},\n })\n if (blockFields === false) {\n return false\n }\n\n const node = $createServerBlockNode({\n blockType: block.slug,\n ...blockFields,\n } as any)\n\n if (node) {\n rootNode.append(node)\n }\n\n return\n }\n return false // Run next transformer\n },\n }))\n\n return toReturn\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"markdownTransformer.js","names":["$parseSerializedNode","getEnabledNodesFromServerNodes","extractPropsFromJSXPropsString","propsToJSXString","getLexicalToMarkdown","getMarkdownToLexical","$createServerBlockNode","$isServerBlockNode","ServerBlockNode","$createServerInlineBlockNode","$isServerInlineBlockNode","ServerInlineBlockNode","linesFromStartToContentAndPropsString","createTagRegexes","tagName","escapedTagName","replace","openingTag","closingTag","optionalWhitespace","mandatoryClosingBracket","startPattern","endPattern","regExpEnd","RegExp","regExpStart","getBlockMarkdownTransformers","blocks","inlineBlocks","length","transformers","block","transformer","getMarkdownTransformerForBlock","concat","isInlineBlock","jsx","regex","slug","toReturn","push","allNodes","allTransformers","type","dependencies","export","node","getFields","blockType","toLowerCase","nodeFields","lexicalToMarkdown","nodes","exportResult","fields","hasProps","props","Object","keys","children","getEndIndex","match","endlineLastCharIndex","isEndOptional","lines","getTextContent","regexpEndRegex","startLineIndex","startMatch","trimChildren","importRegExp","customStartRegex","regExp","content","propsString","index","import","markdownToLexical","blockFields","closeMatch","htmlToLexical","openMatch","inlineBlockNode","sanitizedChildren","includes","child","split","sanitizedChild","doNotTrimChildren","handleImportAfterStartMatch","customEndRegex","undefined","rootNode","optional","afterEndLine","beforeStartLine","unsanitizedContent","endLineIndex","endsWith","slice","startsWith","prevNodes","nextNodes","markdown","root","firstPrevNode","append","lastChild","getChildren","linesInBetween","line","childrenString","join","trim"],"sources":["../../../../../src/features/blocks/server/markdown/markdownTransformer.ts"],"sourcesContent":["import type { ElementNode, SerializedLexicalNode } from 'lexical'\nimport type { Block } from 'payload'\n\nimport { $parseSerializedNode } from 'lexical'\n\nimport type { NodeWithHooks } from '../../../typesServer.js'\n\nimport { getEnabledNodesFromServerNodes } from '../../../../lexical/nodes/index.js'\nimport {\n type MultilineElementTransformer,\n type TextMatchTransformer,\n type Transformer,\n} from '../../../../packages/@lexical/markdown/index.js'\nimport { extractPropsFromJSXPropsString } from '../../../../utilities/jsx/extractPropsFromJSXPropsString.js'\nimport { propsToJSXString } from '../../../../utilities/jsx/jsx.js'\nimport { getLexicalToMarkdown } from '../../client/markdown/getLexicalToMarkdown.js'\nimport { getMarkdownToLexical } from '../../client/markdown/getMarkdownToLexical.js'\nimport { $createServerBlockNode, $isServerBlockNode, ServerBlockNode } from '../nodes/BlocksNode.js'\nimport {\n $createServerInlineBlockNode,\n $isServerInlineBlockNode,\n ServerInlineBlockNode,\n} from '../nodes/InlineBlocksNode.js'\nimport { linesFromStartToContentAndPropsString } from './linesFromMatchToContentAndPropsString.js'\n\nexport function createTagRegexes(tagName: string) {\n const escapedTagName = tagName.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n\n // Regex components\n const openingTag = `<${escapedTagName}`\n const closingTag = `</${escapedTagName}`\n const optionalWhitespace = `\\\\s*`\n const mandatoryClosingBracket = `>`\n\n // Assembled regex patterns\n const startPattern = `${openingTag}(?=\\\\s|>|$)` // Only match the tag name\n const endPattern = `${closingTag}${optionalWhitespace}${mandatoryClosingBracket}`\n\n return {\n regExpEnd: new RegExp(endPattern, 'i'),\n regExpStart: new RegExp(startPattern, 'i'),\n }\n}\nexport const getBlockMarkdownTransformers = ({\n blocks,\n inlineBlocks,\n}: {\n blocks: Block[]\n inlineBlocks: Block[]\n}): ((props: {\n allNodes: Array<NodeWithHooks>\n allTransformers: Transformer[]\n}) => MultilineElementTransformer | TextMatchTransformer)[] => {\n if (!blocks?.length && !inlineBlocks?.length) {\n return []\n }\n\n let transformers: ((props: {\n allNodes: Array<NodeWithHooks>\n allTransformers: Transformer[]\n }) => MultilineElementTransformer | TextMatchTransformer)[] = []\n\n if (blocks?.length) {\n for (const block of blocks) {\n const transformer = getMarkdownTransformerForBlock(block, false)\n\n if (transformer) {\n transformers = transformers.concat(transformer)\n }\n }\n }\n\n if (inlineBlocks?.length) {\n for (const block of inlineBlocks) {\n const transformer = getMarkdownTransformerForBlock(block, true)\n\n if (transformer) {\n transformers = transformers.concat(transformer)\n }\n }\n }\n\n return transformers\n}\n\nfunction getMarkdownTransformerForBlock(\n block: Block,\n isInlineBlock: boolean,\n): Array<\n (props: {\n allNodes: Array<NodeWithHooks>\n allTransformers: Transformer[]\n }) => MultilineElementTransformer | TextMatchTransformer\n> | null {\n if (!block.jsx) {\n return null\n }\n\n const regex = createTagRegexes(block.slug)\n const toReturn: Array<\n (props: {\n allNodes: Array<NodeWithHooks>\n allTransformers: Transformer[]\n }) => MultilineElementTransformer | TextMatchTransformer\n > = []\n\n if (isInlineBlock) {\n toReturn.push(({ allNodes, allTransformers }) => ({\n type: 'text-match',\n dependencies: [ServerInlineBlockNode],\n export: (node) => {\n if (!$isServerInlineBlockNode(node)) {\n return null\n }\n\n if (node.getFields()?.blockType?.toLowerCase() !== block.slug.toLowerCase()) {\n return null\n }\n\n const nodeFields = node.getFields()\n const lexicalToMarkdown = getLexicalToMarkdown(\n getEnabledNodesFromServerNodes({\n nodes: allNodes,\n }),\n allTransformers,\n )\n\n const exportResult = block.jsx!.export({\n fields: nodeFields,\n lexicalToMarkdown,\n })\n if (exportResult === false) {\n return null\n }\n if (typeof exportResult === 'string') {\n return exportResult\n }\n\n const hasProps = exportResult.props && Object.keys(exportResult.props)?.length > 0\n const props = exportResult.props ?? {}\n\n if (exportResult?.children?.length) {\n return `<${nodeFields.blockType}${hasProps ? ' ' + propsToJSXString({ props }) : ''}>${exportResult.children}</${nodeFields.blockType}>`\n }\n\n return `<${nodeFields.blockType}${hasProps ? ' ' + propsToJSXString({ props }) : ''}/>`\n },\n getEndIndex: (node, match) => {\n const { endlineLastCharIndex } = linesFromStartToContentAndPropsString({\n isEndOptional: false,\n lines: [node.getTextContent()],\n regexpEndRegex: regex.regExpEnd,\n startLineIndex: 0,\n startMatch: match,\n trimChildren: false,\n })\n\n return endlineLastCharIndex\n },\n importRegExp: block.jsx?.customStartRegex ?? regex.regExpStart,\n regExp: /___ignoreignoreignore___/g,\n replace(node, match) {\n const { content, propsString } = linesFromStartToContentAndPropsString({\n isEndOptional: false,\n lines: [node.getTextContent()],\n regexpEndRegex: regex.regExpEnd,\n startLineIndex: 0,\n startMatch: {\n ...match,\n index: 0,\n },\n trimChildren: false,\n })\n\n if (!block?.jsx?.import) {\n // No multiline transformer handled this line successfully\n return\n }\n\n const markdownToLexical = getMarkdownToLexical(\n getEnabledNodesFromServerNodes({\n nodes: allNodes,\n }),\n allTransformers,\n )\n\n const blockFields = block.jsx.import({\n children: content,\n closeMatch: null,\n htmlToLexical: null, // TODO\n markdownToLexical,\n openMatch: match,\n props: propsString\n ? extractPropsFromJSXPropsString({\n propsString,\n })\n : {},\n })\n if (blockFields === false) {\n return\n }\n\n const inlineBlockNode = $createServerInlineBlockNode({\n blockType: block.slug,\n ...(blockFields as any),\n })\n\n node.replace(inlineBlockNode)\n },\n }))\n\n return toReturn\n }\n\n toReturn.push(({ allNodes, allTransformers }) => ({\n dependencies: [ServerBlockNode],\n export: (node) => {\n if (!$isServerBlockNode(node)) {\n return null\n }\n\n if (node.getFields()?.blockType?.toLowerCase() !== block.slug.toLowerCase()) {\n return null\n }\n\n const nodeFields = node.getFields()\n const lexicalToMarkdown = getLexicalToMarkdown(\n getEnabledNodesFromServerNodes({\n nodes: allNodes,\n }),\n allTransformers,\n )\n\n const exportResult = block.jsx!.export({\n fields: nodeFields,\n lexicalToMarkdown,\n })\n if (exportResult === false) {\n return null\n }\n if (typeof exportResult === 'string') {\n return exportResult\n }\n\n const hasProps = exportResult.props && Object.keys(exportResult.props)?.length > 0\n const props = exportResult.props ?? {}\n\n if (exportResult?.children?.length) {\n const children = exportResult.children\n let sanitizedChildren = ''\n\n // Ensure it has a leftpad of at least 2 spaces. The data is saved without those spaces, so we can just blindly add it to every child\n if (children.includes('\\n')) {\n for (const child of children.split('\\n')) {\n let sanitizedChild = ''\n if (!block?.jsx?.doNotTrimChildren && child !== '') {\n sanitizedChild = ' '\n }\n sanitizedChild += child + '\\n'\n\n sanitizedChildren += sanitizedChild\n }\n } else {\n sanitizedChildren = (block?.jsx?.doNotTrimChildren ? '' : ' ') + children + '\\n'\n }\n\n return `<${nodeFields.blockType}${hasProps ? ' ' + propsToJSXString({ props }) : ''}>\\n${sanitizedChildren}</${nodeFields.blockType}>`\n }\n\n return `<${nodeFields.blockType}${hasProps ? ' ' + propsToJSXString({ props }) : ''}/>`\n },\n handleImportAfterStartMatch: block.jsx?.customEndRegex\n ? undefined\n : ({ lines, rootNode, startLineIndex, startMatch, transformer }) => {\n const regexpEndRegex: RegExp | undefined =\n typeof transformer.regExpEnd === 'object' && 'regExp' in transformer.regExpEnd\n ? transformer.regExpEnd.regExp\n : transformer.regExpEnd\n\n const isEndOptional =\n transformer.regExpEnd &&\n typeof transformer.regExpEnd === 'object' &&\n 'optional' in transformer.regExpEnd\n ? transformer.regExpEnd.optional\n : !transformer.regExpEnd\n\n const {\n afterEndLine,\n beforeStartLine,\n content: unsanitizedContent,\n endLineIndex,\n propsString,\n } = linesFromStartToContentAndPropsString({\n isEndOptional,\n lines,\n regexpEndRegex,\n startLineIndex,\n startMatch,\n trimChildren: false,\n })\n\n let content = ''\n\n if (block?.jsx?.doNotTrimChildren) {\n content = unsanitizedContent.endsWith('\\n')\n ? unsanitizedContent.slice(0, -1)\n : unsanitizedContent\n } else {\n // Ensure it has a leftpad of at least 2 spaces. The data is saved without those spaces, so we can just blindly add it to every child\n if (unsanitizedContent.includes('\\n')) {\n const split = unsanitizedContent.split('\\n')\n let index = 0\n for (const child of split) {\n index++\n\n if (child.startsWith(' ')) {\n content += child.slice(2)\n } else {\n // If one child is misaligned, skip aligning completely, unless it's just empty\n if (child === '') {\n content += child\n } else {\n content = unsanitizedContent.endsWith('\\n')\n ? unsanitizedContent.slice(0, -1)\n : unsanitizedContent\n break\n }\n }\n\n content += index === split.length ? '' : '\\n'\n }\n } else {\n content =\n (!unsanitizedContent.startsWith(' ')\n ? unsanitizedContent\n : unsanitizedContent.slice(2)) + '\\n'\n }\n }\n\n if (!block?.jsx?.import) {\n // No multiline transformer handled this line successfully\n return [false, startLineIndex]\n }\n\n const markdownToLexical = getMarkdownToLexical(\n getEnabledNodesFromServerNodes({\n nodes: allNodes,\n }),\n allTransformers,\n )\n\n const blockFields = block.jsx.import({\n children: content,\n closeMatch: null,\n htmlToLexical: null, // TODO\n markdownToLexical,\n openMatch: startMatch,\n props: propsString\n ? extractPropsFromJSXPropsString({\n propsString,\n })\n : {},\n })\n if (blockFields === false) {\n return [false, startLineIndex]\n }\n\n const node = $createServerBlockNode({\n ...blockFields,\n blockType: block.slug,\n })\n\n if (node) {\n // Now handle beforeStartLine and afterEndLine. If those are not empty, we need to add them as text nodes before and after the block node.\n // However, those themselves can contain other markdown matches, so we need to parse them as well.\n // Example where this is needed: \"Hello <InlineCode>inline code</InlineCode> test.\"\n let prevNodes: null | SerializedLexicalNode[] = null\n let nextNodes: null | SerializedLexicalNode[] = null\n // TODO: Might not need this prevNodes and nextNodes handling if inline nodes are handled by textmatch transformers\n\n if (beforeStartLine?.length) {\n prevNodes = markdownToLexical({ markdown: beforeStartLine })?.root?.children ?? []\n\n const firstPrevNode = prevNodes?.[0]\n if (firstPrevNode) {\n rootNode.append($parseSerializedNode(firstPrevNode))\n }\n }\n\n rootNode.append(node)\n\n if (afterEndLine?.length) {\n nextNodes = markdownToLexical({ markdown: afterEndLine })?.root?.children\n const lastChild = rootNode.getChildren()[rootNode.getChildren().length - 1]\n\n const children = ($parseSerializedNode(nextNodes[0]!) as ElementNode)?.getChildren()\n if (children?.length) {\n for (const child of children) {\n ;(lastChild as ElementNode).append(child)\n }\n }\n }\n }\n\n return [true, endLineIndex]\n },\n regExpEnd: block.jsx?.customEndRegex ?? regex.regExpEnd,\n regExpStart: block.jsx?.customStartRegex ?? regex.regExpStart,\n // This replace is ONLY run for ``` code blocks (so any blocks with custom start and end regexes). For others, we use the special JSX handling above:\n type: 'multiline-element',\n replace: (rootNode, children, openMatch, closeMatch, linesInBetween) => {\n if (block?.jsx?.import) {\n if (!linesInBetween) {\n // convert children to linesInBetween\n let line = ''\n if (children) {\n for (const child of children) {\n line += child.getTextContent()\n }\n }\n\n linesInBetween = [line]\n }\n\n let childrenString = ''\n if (block?.jsx?.doNotTrimChildren) {\n childrenString = linesInBetween.join('\\n')\n } else {\n childrenString = linesInBetween.join('\\n').trim()\n }\n\n const propsString = openMatch[1]?.trim()\n\n const markdownToLexical = getMarkdownToLexical(\n getEnabledNodesFromServerNodes({\n nodes: allNodes,\n }),\n allTransformers,\n )\n\n const blockFields = block.jsx.import({\n children: childrenString,\n closeMatch: closeMatch as RegExpMatchArray,\n htmlToLexical: null, // TODO\n markdownToLexical,\n openMatch: openMatch as RegExpMatchArray,\n props: propsString\n ? extractPropsFromJSXPropsString({\n propsString,\n })\n : {},\n })\n if (blockFields === false) {\n return false\n }\n\n const node = $createServerBlockNode({\n ...blockFields,\n blockType: block.slug,\n })\n\n if (node) {\n rootNode.append(node)\n }\n\n return\n }\n return false // Run next transformer\n },\n }))\n\n return toReturn\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,23 +1,7 @@
|
|
|
1
|
-
import type { SerializedDecoratorBlockNode } from '@lexical/react/LexicalDecoratorBlockNode.js';
|
|
2
|
-
import type { JsonObject } from 'payload';
|
|
3
1
|
import type { JSX } from 'react';
|
|
4
2
|
import { DecoratorBlockNode } from '@lexical/react/LexicalDecoratorBlockNode.js';
|
|
5
3
|
import { type DOMConversionMap, type DOMExportOutput, type EditorConfig, type ElementFormatType, type LexicalEditor, type LexicalNode, type NodeKey } from 'lexical';
|
|
6
|
-
import type {
|
|
7
|
-
type BaseBlockFields<TBlockFields extends JsonObject = JsonObject> = {
|
|
8
|
-
/** Block form data */
|
|
9
|
-
blockName: string;
|
|
10
|
-
blockType: string;
|
|
11
|
-
} & TBlockFields;
|
|
12
|
-
export type BlockFields<TBlockFields extends JsonObject = JsonObject> = {
|
|
13
|
-
id: string;
|
|
14
|
-
} & BaseBlockFields<TBlockFields>;
|
|
15
|
-
export type BlockFieldsOptionalID<TBlockFields extends JsonObject = JsonObject> = {
|
|
16
|
-
id?: string;
|
|
17
|
-
} & BaseBlockFields<TBlockFields>;
|
|
18
|
-
export type SerializedBlockNode<TBlockFields extends JsonObject = JsonObject> = {
|
|
19
|
-
fields: BlockFields<TBlockFields>;
|
|
20
|
-
} & StronglyTypedLeafNode<SerializedDecoratorBlockNode, 'block'>;
|
|
4
|
+
import type { BlockFields, BlockFieldsOptionalID, SerializedBlockNode } from '../schema.js';
|
|
21
5
|
export declare class ServerBlockNode extends DecoratorBlockNode {
|
|
22
6
|
__cacheBuster: number;
|
|
23
7
|
__fields: BlockFields;
|
|
@@ -43,5 +27,4 @@ export declare class ServerBlockNode extends DecoratorBlockNode {
|
|
|
43
27
|
}
|
|
44
28
|
export declare function $createServerBlockNode(fields: BlockFieldsOptionalID): ServerBlockNode;
|
|
45
29
|
export declare function $isServerBlockNode(node: LexicalNode | null | ServerBlockNode | undefined): node is ServerBlockNode;
|
|
46
|
-
export {};
|
|
47
30
|
//# sourceMappingURL=BlocksNode.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlocksNode.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/server/nodes/BlocksNode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"BlocksNode.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/server/nodes/BlocksNode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAEhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAA;AAGhF,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,OAAO,EACb,MAAM,SAAS,CAAA;AAEhB,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAE3F,qBAAa,eAAgB,SAAQ,kBAAkB;IACrD,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,WAAW,CAAA;gBAET,EACV,WAAW,EACX,MAAM,EACN,MAAM,EACN,GAAG,GACJ,EAAE;QACD,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,MAAM,EAAE,WAAW,CAAA;QACnB,MAAM,CAAC,EAAE,iBAAiB,CAAA;QAC1B,GAAG,CAAC,EAAE,OAAO,CAAA;KACd;WAMe,KAAK,CAAC,IAAI,EAAE,eAAe,GAAG,eAAe;WAS7C,OAAO,IAAI,MAAM;WAIjB,SAAS,IAAI,gBAAgB,CAAC,cAAc,CAAC,GAAG,IAAI;WAIpD,UAAU,CAAC,cAAc,EAAE,mBAAmB,GAAG,eAAe;IAgBhF,MAAM,CAAC,QAAQ,IAAI,KAAK;IAIf,SAAS,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,WAAW;IAM7C,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,GAAG,GAAG,CAAC,OAAO;IAIlE,SAAS,IAAI,eAAe;IAQ5B,UAAU,IAAI,mBAAmB;IAS1C,cAAc,IAAI,MAAM;IAIxB,SAAS,IAAI,WAAW;IAIf,cAAc,IAAI,MAAM;IAIjC,SAAS,CAAC,MAAM,EAAE,WAAW,EAAE,sBAAsB,CAAC,EAAE,OAAO,GAAG,IAAI;CAOvE;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,qBAAqB,GAAG,eAAe,CASrF;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,eAAe,GAAG,SAAS,GACrD,IAAI,IAAI,eAAe,CAEzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BlocksNode.js","names":["DecoratorBlockNode","addClassNamesToElement","ObjectID","$applyNodeReplacement","ServerBlockNode","__cacheBuster","__fields","constructor","cacheBuster","fields","format","key","clone","node","__format","__key","getType","importDOM","importJSON","serializedNode","version","data","$createServerBlockNode","setFormat","isInline","createDOM","config","element","document","createElement","theme","block","decorate","editor","exportDOM","text","createTextNode","getTextContent","append","exportJSON","type","getFields","getCacheBuster","getLatest","setFields","preventFormStateUpdate","writable","getWritable","id","default","toHexString","$isServerBlockNode"],"sources":["../../../../../src/features/blocks/server/nodes/BlocksNode.tsx"],"sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"BlocksNode.js","names":["DecoratorBlockNode","addClassNamesToElement","ObjectID","$applyNodeReplacement","ServerBlockNode","__cacheBuster","__fields","constructor","cacheBuster","fields","format","key","clone","node","__format","__key","getType","importDOM","importJSON","serializedNode","version","data","$createServerBlockNode","setFormat","isInline","createDOM","config","element","document","createElement","theme","block","decorate","editor","exportDOM","text","createTextNode","getTextContent","append","exportJSON","type","getFields","getCacheBuster","getLatest","setFields","preventFormStateUpdate","writable","getWritable","id","default","toHexString","$isServerBlockNode"],"sources":["../../../../../src/features/blocks/server/nodes/BlocksNode.tsx"],"sourcesContent":["import type { JSX } from 'react'\n\nimport { DecoratorBlockNode } from '@lexical/react/LexicalDecoratorBlockNode.js'\nimport { addClassNamesToElement } from '@lexical/utils'\nimport ObjectID from 'bson-objectid'\nimport {\n $applyNodeReplacement,\n type DOMConversionMap,\n type DOMExportOutput,\n type EditorConfig,\n type ElementFormatType,\n type LexicalEditor,\n type LexicalNode,\n type NodeKey,\n} from 'lexical'\n\nimport type { BlockFields, BlockFieldsOptionalID, SerializedBlockNode } from '../schema.js'\n\nexport class ServerBlockNode extends DecoratorBlockNode {\n __cacheBuster: number\n __fields: BlockFields\n\n constructor({\n cacheBuster,\n fields,\n format,\n key,\n }: {\n cacheBuster?: number\n fields: BlockFields\n format?: ElementFormatType\n key?: NodeKey\n }) {\n super(format, key)\n this.__fields = fields\n this.__cacheBuster = cacheBuster || 0\n }\n\n static override clone(node: ServerBlockNode): ServerBlockNode {\n return new this({\n cacheBuster: node.__cacheBuster,\n fields: node.__fields,\n format: node.__format,\n key: node.__key,\n })\n }\n\n static override getType(): string {\n return 'block'\n }\n\n static override importDOM(): DOMConversionMap<HTMLDivElement> | null {\n return {}\n }\n\n static override importJSON(serializedNode: SerializedBlockNode): ServerBlockNode {\n if (serializedNode.version === 1) {\n // Convert (version 1 had the fields wrapped in another, unnecessary data property)\n serializedNode = {\n ...serializedNode,\n fields: {\n ...(serializedNode as any).fields.data,\n },\n version: 2,\n }\n }\n const node = $createServerBlockNode(serializedNode.fields)\n node.setFormat(serializedNode.format)\n return node\n }\n\n static isInline(): false {\n return false\n }\n\n override createDOM(config?: EditorConfig): HTMLElement {\n const element = document.createElement('div')\n addClassNamesToElement(element, config?.theme?.block)\n return element\n }\n\n override decorate(editor: LexicalEditor, config: EditorConfig): JSX.Element {\n return null as unknown as JSX.Element\n }\n\n override exportDOM(): DOMExportOutput {\n const element = document.createElement('div')\n\n const text = document.createTextNode(this.getTextContent())\n element.append(text)\n return { element }\n }\n\n override exportJSON(): SerializedBlockNode {\n return {\n ...super.exportJSON(),\n type: 'block',\n fields: this.getFields(),\n version: 2,\n }\n }\n\n getCacheBuster(): number {\n return this.getLatest().__cacheBuster\n }\n\n getFields(): BlockFields {\n return this.getLatest().__fields\n }\n\n override getTextContent(): string {\n return `Block Field`\n }\n\n setFields(fields: BlockFields, preventFormStateUpdate?: boolean): void {\n const writable = this.getWritable()\n writable.__fields = fields\n if (!preventFormStateUpdate) {\n writable.__cacheBuster++\n }\n }\n}\n\nexport function $createServerBlockNode(fields: BlockFieldsOptionalID): ServerBlockNode {\n return $applyNodeReplacement(\n new ServerBlockNode({\n fields: {\n ...fields,\n id: fields?.id || new ObjectID.default().toHexString(),\n },\n }),\n )\n}\n\nexport function $isServerBlockNode(\n node: LexicalNode | null | ServerBlockNode | undefined,\n): node is ServerBlockNode {\n return node instanceof ServerBlockNode\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,16 +1,8 @@
|
|
|
1
|
-
import type { DOMConversionMap, DOMExportOutput, EditorConfig, LexicalEditor, LexicalNode, NodeKey
|
|
2
|
-
import type { JsonObject } from 'payload';
|
|
1
|
+
import type { DOMConversionMap, DOMExportOutput, EditorConfig, LexicalEditor, LexicalNode, NodeKey } from 'lexical';
|
|
3
2
|
import type React from 'react';
|
|
4
3
|
import type { JSX } from 'react';
|
|
5
4
|
import { DecoratorNode } from 'lexical';
|
|
6
|
-
import type {
|
|
7
|
-
export type InlineBlockFields<TInlineBlockFields extends JsonObject = JsonObject> = {
|
|
8
|
-
blockType: string;
|
|
9
|
-
id: string;
|
|
10
|
-
} & TInlineBlockFields;
|
|
11
|
-
export type SerializedInlineBlockNode<TBlockFields extends JsonObject = JsonObject> = {
|
|
12
|
-
fields: InlineBlockFields<TBlockFields>;
|
|
13
|
-
} & StronglyTypedLeafNode<SerializedLexicalNode, 'inlineBlock'>;
|
|
5
|
+
import type { InlineBlockFields, SerializedInlineBlockNode } from '../schema.js';
|
|
14
6
|
export declare class ServerInlineBlockNode extends DecoratorNode<null | React.ReactElement> {
|
|
15
7
|
__cacheBuster: number;
|
|
16
8
|
__fields: InlineBlockFields;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InlineBlocksNode.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/server/nodes/InlineBlocksNode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,WAAW,EACX,OAAO,
|
|
1
|
+
{"version":3,"file":"InlineBlocksNode.d.ts","sourceRoot":"","sources":["../../../../../src/features/blocks/server/nodes/InlineBlocksNode.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EACf,YAAY,EACZ,aAAa,EACb,WAAW,EACX,OAAO,EACR,MAAM,SAAS,CAAA;AAChB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,OAAO,CAAA;AAIhC,OAAO,EAAyB,aAAa,EAAE,MAAM,SAAS,CAAA;AAE9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AAEhF,qBAAa,qBAAsB,SAAQ,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC,YAAY,CAAC;IACjF,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,iBAAiB,CAAA;gBAEf,EACV,WAAW,EACX,MAAM,EACN,GAAG,GACJ,EAAE;QACD,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,MAAM,EAAE,iBAAiB,CAAA;QACzB,GAAG,CAAC,EAAE,OAAO,CAAA;KACd;WAMe,KAAK,CAAC,IAAI,EAAE,qBAAqB,GAAG,qBAAqB;WAQzD,OAAO,IAAI,MAAM;WAIjB,SAAS,IAAI,gBAAgB,CAAC,cAAc,CAAC,GAAG,IAAI;WAIpD,UAAU,CAAC,cAAc,EAAE,yBAAyB,GAAG,qBAAqB;IAK5F,MAAM,CAAC,QAAQ,IAAI,KAAK;IAIxB,SAAS;IAIA,SAAS,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,WAAW;IAM7C,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,GAAG,GAAG,CAAC,OAAO,GAAG,IAAI;IAIzE,SAAS,IAAI,eAAe;IAS5B,UAAU,IAAI,yBAAyB;IAQhD,cAAc,IAAI,MAAM;IAIxB,SAAS,IAAI,iBAAiB;IAIrB,cAAc,IAAI,MAAM;IAIxB,QAAQ;IAIjB,SAAS,CAAC,MAAM,EAAE,iBAAiB,EAAE,sBAAsB,CAAC,EAAE,OAAO,GAAG,IAAI;IAQnE,SAAS,IAAI,OAAO;CAG9B;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,GACvC,qBAAqB,CASvB;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,qBAAqB,GAAG,SAAS,GAC3D,IAAI,IAAI,qBAAqB,CAE/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InlineBlocksNode.js","names":["addClassNamesToElement","ObjectID","$applyNodeReplacement","DecoratorNode","ServerInlineBlockNode","__cacheBuster","__fields","constructor","cacheBuster","fields","key","clone","node","__key","getType","importDOM","importJSON","serializedNode","$createServerInlineBlockNode","isInline","canIndent","createDOM","config","element","document","createElement","theme","inlineBlock","decorate","editor","exportDOM","classList","add","text","createTextNode","getTextContent","append","exportJSON","type","getFields","version","getCacheBuster","getLatest","setFields","preventFormStateUpdate","writable","getWritable","updateDOM","id","default","toHexString","$isServerInlineBlockNode"],"sources":["../../../../../src/features/blocks/server/nodes/InlineBlocksNode.tsx"],"sourcesContent":["import type {\n DOMConversionMap,\n DOMExportOutput,\n EditorConfig,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n
|
|
1
|
+
{"version":3,"file":"InlineBlocksNode.js","names":["addClassNamesToElement","ObjectID","$applyNodeReplacement","DecoratorNode","ServerInlineBlockNode","__cacheBuster","__fields","constructor","cacheBuster","fields","key","clone","node","__key","getType","importDOM","importJSON","serializedNode","$createServerInlineBlockNode","isInline","canIndent","createDOM","config","element","document","createElement","theme","inlineBlock","decorate","editor","exportDOM","classList","add","text","createTextNode","getTextContent","append","exportJSON","type","getFields","version","getCacheBuster","getLatest","setFields","preventFormStateUpdate","writable","getWritable","updateDOM","id","default","toHexString","$isServerInlineBlockNode"],"sources":["../../../../../src/features/blocks/server/nodes/InlineBlocksNode.tsx"],"sourcesContent":["import type {\n DOMConversionMap,\n DOMExportOutput,\n EditorConfig,\n LexicalEditor,\n LexicalNode,\n NodeKey,\n} from 'lexical'\nimport type React from 'react'\nimport type { JSX } from 'react'\n\nimport { addClassNamesToElement } from '@lexical/utils'\nimport ObjectID from 'bson-objectid'\nimport { $applyNodeReplacement, DecoratorNode } from 'lexical'\n\nimport type { InlineBlockFields, SerializedInlineBlockNode } from '../schema.js'\n\nexport class ServerInlineBlockNode extends DecoratorNode<null | React.ReactElement> {\n __cacheBuster: number\n __fields: InlineBlockFields\n\n constructor({\n cacheBuster,\n fields,\n key,\n }: {\n cacheBuster?: number\n fields: InlineBlockFields\n key?: NodeKey\n }) {\n super(key)\n this.__fields = fields\n this.__cacheBuster = cacheBuster || 0\n }\n\n static override clone(node: ServerInlineBlockNode): ServerInlineBlockNode {\n return new this({\n cacheBuster: node.__cacheBuster,\n fields: node.__fields,\n key: node.__key,\n })\n }\n\n static override getType(): string {\n return 'inlineBlock'\n }\n\n static override importDOM(): DOMConversionMap<HTMLDivElement> | null {\n return {}\n }\n\n static override importJSON(serializedNode: SerializedInlineBlockNode): ServerInlineBlockNode {\n const node = $createServerInlineBlockNode(serializedNode.fields)\n return node\n }\n\n static isInline(): false {\n return false\n }\n\n canIndent() {\n return true\n }\n\n override createDOM(config?: EditorConfig): HTMLElement {\n const element = document.createElement('span')\n addClassNamesToElement(element, config?.theme?.inlineBlock)\n return element\n }\n\n override decorate(editor: LexicalEditor, config: EditorConfig): JSX.Element | null {\n return null\n }\n\n override exportDOM(): DOMExportOutput {\n const element = document.createElement('span')\n element.classList.add('inline-block-container')\n\n const text = document.createTextNode(this.getTextContent())\n element.append(text)\n return { element }\n }\n\n override exportJSON(): SerializedInlineBlockNode {\n return {\n type: 'inlineBlock',\n fields: this.getFields(),\n version: 1,\n }\n }\n\n getCacheBuster(): number {\n return this.getLatest().__cacheBuster\n }\n\n getFields(): InlineBlockFields {\n return this.getLatest().__fields\n }\n\n override getTextContent(): string {\n return `Block Field`\n }\n\n override isInline() {\n return true\n }\n\n setFields(fields: InlineBlockFields, preventFormStateUpdate?: boolean): void {\n const writable = this.getWritable()\n writable.__fields = fields\n if (!preventFormStateUpdate) {\n writable.__cacheBuster++\n }\n }\n\n override updateDOM(): boolean {\n return false\n }\n}\n\nexport function $createServerInlineBlockNode(\n fields: Exclude<InlineBlockFields, 'id'>,\n): ServerInlineBlockNode {\n return $applyNodeReplacement(\n new ServerInlineBlockNode({\n fields: {\n ...fields,\n id: fields?.id || new ObjectID.default().toHexString(),\n },\n }),\n )\n}\n\nexport function $isServerInlineBlockNode(\n node: LexicalNode | null | ServerInlineBlockNode | undefined,\n): node is ServerInlineBlockNode {\n return node instanceof ServerInlineBlockNode\n}\n"],"mappings":"AAWA,SAASA,sBAAsB,QAAQ;AACvC,OAAOC,QAAA,MAAc;AACrB,SAASC,qBAAqB,EAAEC,aAAa,QAAQ;AAIrD,OAAO,MAAMC,qBAAA,SAA8BD,aAAA;EACzCE,aAAA;EACAC,QAAA;EAEAC,YAAY;IACVC,WAAW;IACXC,MAAM;IACNC;EAAG,CAKJ,EAAE;IACD,KAAK,CAACA,GAAA;IACN,IAAI,CAACJ,QAAQ,GAAGG,MAAA;IAChB,IAAI,CAACJ,aAAa,GAAGG,WAAA,IAAe;EACtC;EAEA,OAAgBG,MAAMC,IAA2B,EAAyB;IACxE,OAAO,IAAI,IAAI,CAAC;MACdJ,WAAA,EAAaI,IAAA,CAAKP,aAAa;MAC/BI,MAAA,EAAQG,IAAA,CAAKN,QAAQ;MACrBI,GAAA,EAAKE,IAAA,CAAKC;IACZ;EACF;EAEA,OAAgBC,QAAA,EAAkB;IAChC,OAAO;EACT;EAEA,OAAgBC,UAAA,EAAqD;IACnE,OAAO,CAAC;EACV;EAEA,OAAgBC,WAAWC,cAAyC,EAAyB;IAC3F,MAAML,IAAA,GAAOM,4BAAA,CAA6BD,cAAA,CAAeR,MAAM;IAC/D,OAAOG,IAAA;EACT;EAEA,OAAOO,SAAA,EAAkB;IACvB,OAAO;EACT;EAEAC,UAAA,EAAY;IACV,OAAO;EACT;EAESC,UAAUC,MAAqB,EAAe;IACrD,MAAMC,OAAA,GAAUC,QAAA,CAASC,aAAa,CAAC;IACvCzB,sBAAA,CAAuBuB,OAAA,EAASD,MAAA,EAAQI,KAAA,EAAOC,WAAA;IAC/C,OAAOJ,OAAA;EACT;EAESK,SAASC,MAAqB,EAAEP,MAAoB,EAAsB;IACjF,OAAO;EACT;EAESQ,UAAA,EAA6B;IACpC,MAAMP,OAAA,GAAUC,QAAA,CAASC,aAAa,CAAC;IACvCF,OAAA,CAAQQ,SAAS,CAACC,GAAG,CAAC;IAEtB,MAAMC,IAAA,GAAOT,QAAA,CAASU,cAAc,CAAC,IAAI,CAACC,cAAc;IACxDZ,OAAA,CAAQa,MAAM,CAACH,IAAA;IACf,OAAO;MAAEV;IAAQ;EACnB;EAESc,WAAA,EAAwC;IAC/C,OAAO;MACLC,IAAA,EAAM;MACN7B,MAAA,EAAQ,IAAI,CAAC8B,SAAS;MACtBC,OAAA,EAAS;IACX;EACF;EAEAC,eAAA,EAAyB;IACvB,OAAO,IAAI,CAACC,SAAS,GAAGrC,aAAa;EACvC;EAEAkC,UAAA,EAA+B;IAC7B,OAAO,IAAI,CAACG,SAAS,GAAGpC,QAAQ;EAClC;EAES6B,eAAA,EAAyB;IAChC,OAAO,aAAa;EACtB;EAEShB,SAAA,EAAW;IAClB,OAAO;EACT;EAEAwB,UAAUlC,MAAyB,EAAEmC,sBAAgC,EAAQ;IAC3E,MAAMC,QAAA,GAAW,IAAI,CAACC,WAAW;IACjCD,QAAA,CAASvC,QAAQ,GAAGG,MAAA;IACpB,IAAI,CAACmC,sBAAA,EAAwB;MAC3BC,QAAA,CAASxC,aAAa;IACxB;EACF;EAES0C,UAAA,EAAqB;IAC5B,OAAO;EACT;AACF;AAEA,OAAO,SAAS7B,6BACdT,MAAwC;EAExC,OAAOP,qBAAA,CACL,IAAIE,qBAAA,CAAsB;IACxBK,MAAA,EAAQ;MACN,GAAGA,MAAM;MACTuC,EAAA,EAAIvC,MAAA,EAAQuC,EAAA,IAAM,IAAI/C,QAAA,CAASgD,OAAO,GAAGC,WAAW;IACtD;EACF;AAEJ;AAEA,OAAO,SAASC,yBACdvC,IAA4D;EAE5D,OAAOA,IAAA,YAAgBR,qBAAA;AACzB","ignoreList":[]}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { Block, JsonObject } from 'payload';
|
|
2
|
+
import type { LexicalElementFormat } from '../../../types/nodeTypes.js';
|
|
3
|
+
import type { JSONSchemaFn } from '../../typesServer.js';
|
|
4
|
+
type BaseBlockFields<TFields extends JsonObject = JsonObject> = {
|
|
5
|
+
blockName?: null | string;
|
|
6
|
+
blockType: string;
|
|
7
|
+
} & TFields;
|
|
8
|
+
export type BlockFields<TFields extends JsonObject = JsonObject> = {
|
|
9
|
+
id: string;
|
|
10
|
+
} & BaseBlockFields<TFields>;
|
|
11
|
+
export type BlockFieldsOptionalID<TFields extends JsonObject = JsonObject> = {
|
|
12
|
+
id?: string;
|
|
13
|
+
} & BaseBlockFields<TFields>;
|
|
14
|
+
export type InlineBlockFields<TFields extends JsonObject = JsonObject> = {
|
|
15
|
+
blockType: string;
|
|
16
|
+
id: string;
|
|
17
|
+
} & TFields;
|
|
18
|
+
export type SerializedBlockNode<TFields extends {
|
|
19
|
+
blockType: string;
|
|
20
|
+
} = {
|
|
21
|
+
blockType: string;
|
|
22
|
+
}> = TFields extends unknown ? {
|
|
23
|
+
fields: {
|
|
24
|
+
blockName?: null | string;
|
|
25
|
+
id: string;
|
|
26
|
+
} & Omit<TFields, 'blockName' | 'id'>;
|
|
27
|
+
format: LexicalElementFormat;
|
|
28
|
+
type: 'block';
|
|
29
|
+
version: number;
|
|
30
|
+
} : never;
|
|
31
|
+
export type SerializedInlineBlockNode<TFields extends {
|
|
32
|
+
blockType: string;
|
|
33
|
+
} = {
|
|
34
|
+
blockType: string;
|
|
35
|
+
}> = TFields extends unknown ? {
|
|
36
|
+
fields: {
|
|
37
|
+
id: string;
|
|
38
|
+
} & Omit<TFields, 'id'>;
|
|
39
|
+
type: 'inlineBlock';
|
|
40
|
+
version: number;
|
|
41
|
+
} : never;
|
|
42
|
+
export declare const createBlockNodeJSONSchema: (blockConfigs: Block[]) => JSONSchemaFn;
|
|
43
|
+
export declare const createInlineBlockNodeJSONSchema: (inlineBlockConfigs: Block[]) => JSONSchemaFn;
|
|
44
|
+
export {};
|
|
45
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/features/blocks/server/schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAIhD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AACvE,OAAO,KAAK,EAAkB,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAIxE,KAAK,eAAe,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,IAAI;IAC9D,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;CAClB,GAAG,OAAO,CAAA;AAEX,MAAM,MAAM,WAAW,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,IAAI;IACjE,EAAE,EAAE,MAAM,CAAA;CACX,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;AAE5B,MAAM,MAAM,qBAAqB,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,IAAI;IAC3E,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;AAE5B,MAAM,MAAM,iBAAiB,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,IAAI;IACvE,SAAS,EAAE,MAAM,CAAA;IACjB,EAAE,EAAE,MAAM,CAAA;CACX,GAAG,OAAO,CAAA;AAMX,MAAM,MAAM,mBAAmB,CAAC,OAAO,SAAS;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,IAC3F,OAAO,SAAS,OAAO,GACnB;IACE,MAAM,EAAE;QAAE,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAAC,CAAA;IACrF,MAAM,EAAE,oBAAoB,CAAA;IAC5B,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;CAChB,GACD,KAAK,CAAA;AAEX,MAAM,MAAM,yBAAyB,CACnC,OAAO,SAAS;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,IAC3D,OAAO,SAAS,OAAO,GACvB;IACE,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IAC5C,IAAI,EAAE,aAAa,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;CAChB,GACD,KAAK,CAAA;AAwET,eAAO,MAAM,yBAAyB,GACnC,cAAc,KAAK,EAAE,KAAG,YA+BxB,CAAA;AAEH,eAAO,MAAM,+BAA+B,GACzC,oBAAoB,KAAK,EAAE,KAAG,YA8B9B,CAAA"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import { fieldsToJSONSchema, flattenAllFields, registerBlockInterface } from 'payload';
|
|
2
|
+
import { formatSchema } from '../../../types/jsonSchemaHelpers.js';
|
|
3
|
+
/**
|
|
4
|
+
* MUST stay byte-for-byte in sync with the runtime `SerializedBlockNode` and
|
|
5
|
+
* `SerializedInlineBlockNode` declared above.
|
|
6
|
+
*/
|
|
7
|
+
const BLOCK_NODES_TS = `export type SerializedBlockNode<TFields extends { blockType: string }> = TFields extends unknown ? {
|
|
8
|
+
type: 'block';
|
|
9
|
+
format: LexicalElementFormat;
|
|
10
|
+
version: number;
|
|
11
|
+
fields: { id: string; blockName?: string | null } & Omit<TFields, 'id' | 'blockName'>;
|
|
12
|
+
} : never;
|
|
13
|
+
export type SerializedInlineBlockNode<TFields extends { blockType: string }> = TFields extends unknown ? {
|
|
14
|
+
type: 'inlineBlock';
|
|
15
|
+
version: number;
|
|
16
|
+
fields: { id: string } & Omit<TFields, 'id'>;
|
|
17
|
+
} : never;`;
|
|
18
|
+
/**
|
|
19
|
+
* JSON Schema for one block's `fields:` payload. Strips Payload's auto-added
|
|
20
|
+
* `id`/`blockName` and re-adds them with strict runtime types: required
|
|
21
|
+
* non-null `id`, optional `blockName?: string | null` (omitted for inline
|
|
22
|
+
* blocks). Registers the interface through `registerBlockInterface` (shared with
|
|
23
|
+
* payload core) and returns its collision-safe name.
|
|
24
|
+
*/
|
|
25
|
+
const buildBlockFieldsSchema = (block, args, {
|
|
26
|
+
isInlineBlock
|
|
27
|
+
}) => {
|
|
28
|
+
const flattened = flattenAllFields({
|
|
29
|
+
fields: block.fields
|
|
30
|
+
});
|
|
31
|
+
const userFieldsSchema = args.config ? fieldsToJSONSchema({
|
|
32
|
+
collectionIDFieldTypes: args.collectionIDFieldTypes,
|
|
33
|
+
config: args.config,
|
|
34
|
+
fields: flattened,
|
|
35
|
+
i18n: args.i18n,
|
|
36
|
+
interfaceNameDefinitions: args.interfaceNameDefinitions,
|
|
37
|
+
typeStringDefinitions: args.typeStringDefinitions
|
|
38
|
+
}) : {
|
|
39
|
+
properties: {},
|
|
40
|
+
required: []
|
|
41
|
+
};
|
|
42
|
+
const {
|
|
43
|
+
id: _stripId,
|
|
44
|
+
blockName: _stripBlockName,
|
|
45
|
+
...userOnlyProperties
|
|
46
|
+
} = userFieldsSchema.properties ?? {};
|
|
47
|
+
const userOnlyRequired = (userFieldsSchema.required ?? []).filter(r => r !== 'id' && r !== 'blockName');
|
|
48
|
+
const properties = {
|
|
49
|
+
id: {
|
|
50
|
+
type: 'string'
|
|
51
|
+
},
|
|
52
|
+
blockType: {
|
|
53
|
+
type: 'string',
|
|
54
|
+
const: block.slug
|
|
55
|
+
},
|
|
56
|
+
...userOnlyProperties
|
|
57
|
+
};
|
|
58
|
+
const required = ['id', 'blockType', ...userOnlyRequired];
|
|
59
|
+
if (!isInlineBlock) {
|
|
60
|
+
properties.blockName = {
|
|
61
|
+
type: ['string', 'null']
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
const fieldsSchema = {
|
|
65
|
+
type: 'object',
|
|
66
|
+
additionalProperties: false,
|
|
67
|
+
properties,
|
|
68
|
+
required
|
|
69
|
+
};
|
|
70
|
+
return registerBlockInterface(block, fieldsSchema, args.interfaceNameDefinitions);
|
|
71
|
+
};
|
|
72
|
+
export const createBlockNodeJSONSchema = blockConfigs => args => {
|
|
73
|
+
args.typeStringDefinitions.add(BLOCK_NODES_TS);
|
|
74
|
+
const definitionNames = blockConfigs.map(block => buildBlockFieldsSchema(block, args, {
|
|
75
|
+
isInlineBlock: false
|
|
76
|
+
}));
|
|
77
|
+
const fieldsSchema = definitionNames.length === 0 ? {
|
|
78
|
+
type: 'object',
|
|
79
|
+
additionalProperties: true
|
|
80
|
+
} : definitionNames.length === 1 ? {
|
|
81
|
+
$ref: `#/$defs/${definitionNames[0]}`
|
|
82
|
+
} : {
|
|
83
|
+
oneOf: definitionNames.map(name => ({
|
|
84
|
+
$ref: `#/$defs/${name}`
|
|
85
|
+
}))
|
|
86
|
+
};
|
|
87
|
+
const tsType = definitionNames.length > 0 ? `SerializedBlockNode<${definitionNames.join(' | ')}>` : `SerializedBlockNode<{ blockType: string }>`;
|
|
88
|
+
return {
|
|
89
|
+
type: 'object',
|
|
90
|
+
additionalProperties: false,
|
|
91
|
+
properties: {
|
|
92
|
+
type: {
|
|
93
|
+
type: 'string',
|
|
94
|
+
const: 'block'
|
|
95
|
+
},
|
|
96
|
+
fields: fieldsSchema,
|
|
97
|
+
format: formatSchema,
|
|
98
|
+
version: {
|
|
99
|
+
type: 'integer'
|
|
100
|
+
}
|
|
101
|
+
},
|
|
102
|
+
required: ['fields', 'format', 'type', 'version'],
|
|
103
|
+
tsType
|
|
104
|
+
};
|
|
105
|
+
};
|
|
106
|
+
export const createInlineBlockNodeJSONSchema = inlineBlockConfigs => args => {
|
|
107
|
+
args.typeStringDefinitions.add(BLOCK_NODES_TS);
|
|
108
|
+
const definitionNames = inlineBlockConfigs.map(block => buildBlockFieldsSchema(block, args, {
|
|
109
|
+
isInlineBlock: true
|
|
110
|
+
}));
|
|
111
|
+
const fieldsSchema = definitionNames.length === 0 ? {
|
|
112
|
+
type: 'object',
|
|
113
|
+
additionalProperties: true
|
|
114
|
+
} : definitionNames.length === 1 ? {
|
|
115
|
+
$ref: `#/$defs/${definitionNames[0]}`
|
|
116
|
+
} : {
|
|
117
|
+
oneOf: definitionNames.map(name => ({
|
|
118
|
+
$ref: `#/$defs/${name}`
|
|
119
|
+
}))
|
|
120
|
+
};
|
|
121
|
+
const tsType = definitionNames.length > 0 ? `SerializedInlineBlockNode<${definitionNames.join(' | ')}>` : `SerializedInlineBlockNode<{ blockType: string }>`;
|
|
122
|
+
return {
|
|
123
|
+
type: 'object',
|
|
124
|
+
additionalProperties: false,
|
|
125
|
+
properties: {
|
|
126
|
+
type: {
|
|
127
|
+
type: 'string',
|
|
128
|
+
const: 'inlineBlock'
|
|
129
|
+
},
|
|
130
|
+
fields: fieldsSchema,
|
|
131
|
+
version: {
|
|
132
|
+
type: 'integer'
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
required: ['fields', 'type', 'version'],
|
|
136
|
+
tsType
|
|
137
|
+
};
|
|
138
|
+
};
|
|
139
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","names":["fieldsToJSONSchema","flattenAllFields","registerBlockInterface","formatSchema","BLOCK_NODES_TS","buildBlockFieldsSchema","block","args","isInlineBlock","flattened","fields","userFieldsSchema","config","collectionIDFieldTypes","i18n","interfaceNameDefinitions","typeStringDefinitions","properties","required","id","_stripId","blockName","_stripBlockName","userOnlyProperties","userOnlyRequired","filter","r","type","blockType","const","slug","fieldsSchema","additionalProperties","createBlockNodeJSONSchema","blockConfigs","add","definitionNames","map","length","$ref","oneOf","name","tsType","join","format","version","createInlineBlockNodeJSONSchema","inlineBlockConfigs"],"sources":["../../../../src/features/blocks/server/schema.ts"],"sourcesContent":["import type { JSONSchema4 } from 'json-schema'\nimport type { Block, JsonObject } from 'payload'\n\nimport { fieldsToJSONSchema, flattenAllFields, registerBlockInterface } from 'payload'\n\nimport type { LexicalElementFormat } from '../../../types/nodeTypes.js'\nimport type { JSONSchemaArgs, JSONSchemaFn } from '../../typesServer.js'\n\nimport { formatSchema } from '../../../types/jsonSchemaHelpers.js'\n\ntype BaseBlockFields<TFields extends JsonObject = JsonObject> = {\n blockName?: null | string\n blockType: string\n} & TFields\n\nexport type BlockFields<TFields extends JsonObject = JsonObject> = {\n id: string\n} & BaseBlockFields<TFields>\n\nexport type BlockFieldsOptionalID<TFields extends JsonObject = JsonObject> = {\n id?: string\n} & BaseBlockFields<TFields>\n\nexport type InlineBlockFields<TFields extends JsonObject = JsonObject> = {\n blockType: string\n id: string\n} & TFields\n\n// Distributive (`TFields extends unknown ?`) so `SerializedBlockNode<A | B>` expands to\n// `SerializedBlockNode<A> | SerializedBlockNode<B>` - i.e. a discriminated union where each block\n// keeps its own fields. Without this, `Omit<A | B, ...>` collapses to the blocks' common keys and\n// every block-specific field is lost. Lets users write either form interchangeably.\nexport type SerializedBlockNode<TFields extends { blockType: string } = { blockType: string }> =\n TFields extends unknown\n ? {\n fields: { blockName?: null | string; id: string } & Omit<TFields, 'blockName' | 'id'>\n format: LexicalElementFormat\n type: 'block'\n version: number\n }\n : never\n\nexport type SerializedInlineBlockNode<\n TFields extends { blockType: string } = { blockType: string },\n> = TFields extends unknown\n ? {\n fields: { id: string } & Omit<TFields, 'id'>\n type: 'inlineBlock'\n version: number\n }\n : never\n\n/**\n * MUST stay byte-for-byte in sync with the runtime `SerializedBlockNode` and\n * `SerializedInlineBlockNode` declared above.\n */\nconst BLOCK_NODES_TS = `export type SerializedBlockNode<TFields extends { blockType: string }> = TFields extends unknown ? {\n type: 'block';\n format: LexicalElementFormat;\n version: number;\n fields: { id: string; blockName?: string | null } & Omit<TFields, 'id' | 'blockName'>;\n} : never;\nexport type SerializedInlineBlockNode<TFields extends { blockType: string }> = TFields extends unknown ? {\n type: 'inlineBlock';\n version: number;\n fields: { id: string } & Omit<TFields, 'id'>;\n} : never;`\n\n/**\n * JSON Schema for one block's `fields:` payload. Strips Payload's auto-added\n * `id`/`blockName` and re-adds them with strict runtime types: required\n * non-null `id`, optional `blockName?: string | null` (omitted for inline\n * blocks). Registers the interface through `registerBlockInterface` (shared with\n * payload core) and returns its collision-safe name.\n */\nconst buildBlockFieldsSchema = (\n block: Block,\n args: JSONSchemaArgs,\n { isInlineBlock }: { isInlineBlock: boolean },\n): string => {\n const flattened = flattenAllFields({ fields: block.fields })\n const userFieldsSchema = args.config\n ? fieldsToJSONSchema({\n collectionIDFieldTypes: args.collectionIDFieldTypes,\n config: args.config,\n fields: flattened,\n i18n: args.i18n,\n interfaceNameDefinitions: args.interfaceNameDefinitions,\n typeStringDefinitions: args.typeStringDefinitions,\n })\n : { properties: {}, required: [] }\n\n const {\n id: _stripId,\n blockName: _stripBlockName,\n ...userOnlyProperties\n } = (userFieldsSchema.properties ?? {}) as { [k: string]: JSONSchema4 }\n const userOnlyRequired = (userFieldsSchema.required ?? []).filter(\n (r) => r !== 'id' && r !== 'blockName',\n )\n\n const properties: { [k: string]: JSONSchema4 } = {\n id: { type: 'string' },\n blockType: { type: 'string', const: block.slug },\n ...userOnlyProperties,\n }\n const required = ['id', 'blockType', ...userOnlyRequired]\n\n if (!isInlineBlock) {\n properties.blockName = { type: ['string', 'null'] }\n }\n\n const fieldsSchema: JSONSchema4 = {\n type: 'object',\n additionalProperties: false,\n properties,\n required,\n }\n\n return registerBlockInterface(block, fieldsSchema, args.interfaceNameDefinitions)\n}\n\nexport const createBlockNodeJSONSchema =\n (blockConfigs: Block[]): JSONSchemaFn =>\n (args) => {\n args.typeStringDefinitions.add(BLOCK_NODES_TS)\n const definitionNames = blockConfigs.map((block) =>\n buildBlockFieldsSchema(block, args, { isInlineBlock: false }),\n )\n\n const fieldsSchema: JSONSchema4 =\n definitionNames.length === 0\n ? { type: 'object', additionalProperties: true }\n : definitionNames.length === 1\n ? { $ref: `#/$defs/${definitionNames[0]!}` }\n : { oneOf: definitionNames.map((name) => ({ $ref: `#/$defs/${name}` })) }\n\n const tsType =\n definitionNames.length > 0\n ? `SerializedBlockNode<${definitionNames.join(' | ')}>`\n : `SerializedBlockNode<{ blockType: string }>`\n\n return {\n type: 'object',\n additionalProperties: false,\n properties: {\n type: { type: 'string', const: 'block' },\n fields: fieldsSchema,\n format: formatSchema,\n version: { type: 'integer' },\n },\n required: ['fields', 'format', 'type', 'version'],\n tsType,\n }\n }\n\nexport const createInlineBlockNodeJSONSchema =\n (inlineBlockConfigs: Block[]): JSONSchemaFn =>\n (args) => {\n args.typeStringDefinitions.add(BLOCK_NODES_TS)\n const definitionNames = inlineBlockConfigs.map((block) =>\n buildBlockFieldsSchema(block, args, { isInlineBlock: true }),\n )\n\n const fieldsSchema: JSONSchema4 =\n definitionNames.length === 0\n ? { type: 'object', additionalProperties: true }\n : definitionNames.length === 1\n ? { $ref: `#/$defs/${definitionNames[0]!}` }\n : { oneOf: definitionNames.map((name) => ({ $ref: `#/$defs/${name}` })) }\n\n const tsType =\n definitionNames.length > 0\n ? `SerializedInlineBlockNode<${definitionNames.join(' | ')}>`\n : `SerializedInlineBlockNode<{ blockType: string }>`\n\n return {\n type: 'object',\n additionalProperties: false,\n properties: {\n type: { type: 'string', const: 'inlineBlock' },\n fields: fieldsSchema,\n version: { type: 'integer' },\n },\n required: ['fields', 'type', 'version'],\n tsType,\n }\n }\n"],"mappings":"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","ignoreList":[]}
|