@payloadcms/richtext-lexical 3.23.0 → 3.24.0-canary.05013b2
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/cell/rscEntry.d.ts.map +1 -1
- package/dist/cell/rscEntry.js +1 -2
- package/dist/cell/rscEntry.js.map +1 -1
- package/dist/dependencyChecker.spec.js +0 -2
- package/dist/dependencyChecker.spec.js.map +1 -1
- package/dist/exports/client/{Field-ZQTPXWY3.js → Field-NNWFQETL.js} +2 -2
- package/dist/exports/client/bundled.css +1 -1
- package/dist/exports/client/chunk-EE27FURT.js +2 -0
- package/dist/exports/client/chunk-EE27FURT.js.map +7 -0
- package/dist/exports/client/chunk-OZ6Q4DWN.js +12 -0
- package/dist/exports/client/chunk-OZ6Q4DWN.js.map +7 -0
- package/dist/exports/client/componentInline-XEH2GDVO.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 +10 -10
- package/dist/exports/client/index.js.map +3 -3
- package/dist/exports/react/components/RichText/converter/converters/table.d.ts.map +1 -1
- package/dist/exports/react/components/RichText/converter/converters/table.js +10 -7
- package/dist/exports/react/components/RichText/converter/converters/table.js.map +1 -1
- package/dist/exports/react/components/RichText/converter/converters/upload.d.ts.map +1 -1
- package/dist/exports/react/components/RichText/converter/converters/upload.js +14 -10
- package/dist/exports/react/components/RichText/converter/converters/upload.js.map +1 -1
- package/dist/features/blocks/client/component/index.d.ts.map +1 -1
- package/dist/features/blocks/client/component/index.js +5 -2
- package/dist/features/blocks/client/component/index.js.map +1 -1
- package/dist/features/blocks/client/componentInline/index.d.ts.map +1 -1
- package/dist/features/blocks/client/componentInline/index.js +5 -2
- package/dist/features/blocks/client/componentInline/index.js.map +1 -1
- package/dist/features/blocks/client/index.d.ts.map +1 -1
- package/dist/features/blocks/client/index.js +3 -2
- package/dist/features/blocks/client/index.js.map +1 -1
- package/dist/features/blocks/server/graphQLPopulationPromise.d.ts.map +1 -1
- package/dist/features/blocks/server/graphQLPopulationPromise.js +3 -0
- package/dist/features/blocks/server/graphQLPopulationPromise.js.map +1 -1
- package/dist/features/blocks/server/index.d.ts +3 -3
- package/dist/features/blocks/server/index.d.ts.map +1 -1
- package/dist/features/blocks/server/index.js +58 -38
- package/dist/features/blocks/server/index.js.map +1 -1
- package/dist/features/blocks/server/validate.d.ts +5 -0
- package/dist/features/blocks/server/validate.d.ts.map +1 -1
- package/dist/features/blocks/server/validate.js +8 -2
- package/dist/features/blocks/server/validate.js.map +1 -1
- package/dist/features/converters/html/field/index.d.ts.map +1 -1
- package/dist/features/converters/html/field/index.js +3 -43
- package/dist/features/converters/html/field/index.js.map +1 -1
- package/dist/features/experimental_table/server/index.js +1 -1
- package/dist/features/experimental_table/server/index.js.map +1 -1
- package/dist/features/indent/client/index.d.ts.map +1 -1
- package/dist/features/indent/client/index.js +23 -7
- package/dist/features/indent/client/index.js.map +1 -1
- package/dist/features/link/server/graphQLPopulationPromise.d.ts.map +1 -1
- package/dist/features/link/server/graphQLPopulationPromise.js +3 -0
- package/dist/features/link/server/graphQLPopulationPromise.js.map +1 -1
- package/dist/features/link/server/validate.d.ts.map +1 -1
- package/dist/features/link/server/validate.js +3 -2
- package/dist/features/link/server/validate.js.map +1 -1
- package/dist/features/typesServer.d.ts +2 -1
- package/dist/features/typesServer.d.ts.map +1 -1
- package/dist/features/typesServer.js.map +1 -1
- package/dist/features/upload/server/feature.server.d.ts.map +1 -1
- package/dist/features/upload/server/feature.server.js +4 -3
- package/dist/features/upload/server/feature.server.js.map +1 -1
- package/dist/features/upload/server/graphQLPopulationPromise.d.ts.map +1 -1
- package/dist/features/upload/server/graphQLPopulationPromise.js +3 -0
- package/dist/features/upload/server/graphQLPopulationPromise.js.map +1 -1
- package/dist/features/upload/server/nodes/UploadNode.d.ts +19 -8
- 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/validate.d.ts.map +1 -1
- package/dist/features/upload/server/validate.js +5 -4
- package/dist/features/upload/server/validate.js.map +1 -1
- package/dist/field/bundled.css +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -1
- package/dist/packages/@lexical/markdown/MarkdownExport.d.ts.map +1 -1
- package/dist/packages/@lexical/markdown/MarkdownExport.js +5 -5
- package/dist/packages/@lexical/markdown/MarkdownExport.js.map +1 -1
- package/dist/packages/@lexical/markdown/MarkdownImport.js +6 -5
- package/dist/packages/@lexical/markdown/MarkdownImport.js.map +1 -1
- package/dist/packages/@lexical/markdown/MarkdownShortcuts.d.ts.map +1 -1
- package/dist/packages/@lexical/markdown/MarkdownShortcuts.js +6 -4
- package/dist/packages/@lexical/markdown/MarkdownShortcuts.js.map +1 -1
- package/dist/packages/@lexical/markdown/MarkdownTransformers.js.map +1 -1
- package/dist/packages/@lexical/markdown/importTextFormatTransformer.d.ts.map +1 -1
- package/dist/packages/@lexical/markdown/importTextFormatTransformer.js +4 -1
- package/dist/packages/@lexical/markdown/importTextFormatTransformer.js.map +1 -1
- package/dist/packages/@lexical/markdown/importTextMatchTransformer.d.ts.map +1 -1
- package/dist/packages/@lexical/markdown/importTextMatchTransformer.js +1 -1
- package/dist/packages/@lexical/markdown/importTextMatchTransformer.js.map +1 -1
- package/dist/populateGraphQL/populateLexicalPopulationPromises.d.ts +2 -1
- package/dist/populateGraphQL/populateLexicalPopulationPromises.d.ts.map +1 -1
- package/dist/populateGraphQL/populateLexicalPopulationPromises.js +2 -0
- package/dist/populateGraphQL/populateLexicalPopulationPromises.js.map +1 -1
- package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.d.ts +2 -1
- package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.d.ts.map +1 -1
- package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.js +2 -0
- package/dist/populateGraphQL/recursivelyPopulateFieldsForGraphQL.js.map +1 -1
- package/dist/utilities/jsx/collectTopLevelJSXInLines.d.ts.map +1 -1
- package/dist/utilities/jsx/collectTopLevelJSXInLines.js +2 -1
- package/dist/utilities/jsx/collectTopLevelJSXInLines.js.map +1 -1
- package/dist/utilities/migrateSlateToLexical/index.js +8 -4
- package/dist/utilities/migrateSlateToLexical/index.js.map +1 -1
- package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.d.ts +3 -2
- package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.d.ts.map +1 -1
- package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.js +18 -13
- package/dist/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.js.map +1 -1
- package/dist/utilities/upgradeLexicalData/index.js +8 -4
- package/dist/utilities/upgradeLexicalData/index.js.map +1 -1
- package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.d.ts +3 -2
- package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.d.ts.map +1 -1
- package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.js +18 -13
- package/dist/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.js.map +1 -1
- package/dist/validate/hasText.js +1 -1
- package/dist/validate/hasText.js.map +1 -1
- package/package.json +8 -18
- package/dist/exports/client/chunk-CIY6PKN6.js +0 -12
- package/dist/exports/client/chunk-CIY6PKN6.js.map +0 -7
- package/dist/exports/client/chunk-KEEUF5NK.js +0 -2
- package/dist/exports/client/chunk-KEEUF5NK.js.map +0 -7
- package/dist/exports/client/componentInline-UG3ZWWJY.js +0 -2
- /package/dist/exports/client/{Field-ZQTPXWY3.js.map → Field-NNWFQETL.js.map} +0 -0
- /package/dist/exports/client/{componentInline-UG3ZWWJY.js.map → componentInline-XEH2GDVO.js.map} +0 -0
|
@@ -10,6 +10,7 @@ export const recursivelyPopulateFieldsForGraphQL = ({
|
|
|
10
10
|
findMany,
|
|
11
11
|
flattenLocales,
|
|
12
12
|
overrideAccess = false,
|
|
13
|
+
parentIsLocalized,
|
|
13
14
|
populationPromises,
|
|
14
15
|
req,
|
|
15
16
|
showHiddenFields,
|
|
@@ -31,6 +32,7 @@ export const recursivelyPopulateFieldsForGraphQL = ({
|
|
|
31
32
|
locale: req.locale,
|
|
32
33
|
overrideAccess,
|
|
33
34
|
parentIndexPath: '',
|
|
35
|
+
parentIsLocalized,
|
|
34
36
|
parentPath: '',
|
|
35
37
|
parentSchemaPath: '',
|
|
36
38
|
populationPromises,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recursivelyPopulateFieldsForGraphQL.js","names":["afterReadTraverseFields","recursivelyPopulateFieldsForGraphQL","context","currentDepth","data","depth","draft","fieldPromises","fields","findMany","flattenLocales","overrideAccess","populationPromises","req","showHiddenFields","siblingDoc","collection","doc","fallbackLocale","global","locale","parentIndexPath","parentPath","parentSchemaPath","triggerHooks"],"sources":["../../src/populateGraphQL/recursivelyPopulateFieldsForGraphQL.ts"],"sourcesContent":["import type { Field, JsonObject, PayloadRequest, RequestContext } from 'payload'\n\nimport { afterReadTraverseFields } from 'payload'\n\nimport type { PopulationPromise } from '../features/typesServer.js'\n\ntype NestedRichTextFieldsArgs = {\n context: RequestContext\n currentDepth?: number\n data: unknown\n depth: number\n draft: boolean\n /**\n * This maps all the population promises to the node types\n */\n editorPopulationPromises: Map<string, Array<PopulationPromise>>\n /**\n * fieldPromises are used for things like field hooks. They should be awaited before awaiting populationPromises\n */\n fieldPromises: Promise<void>[]\n fields: Field[]\n findMany: boolean\n flattenLocales: boolean\n overrideAccess: boolean\n populationPromises: Promise<void>[]\n req: PayloadRequest\n showHiddenFields: boolean\n siblingDoc: JsonObject\n}\n\nexport const recursivelyPopulateFieldsForGraphQL = ({\n context,\n currentDepth = 0,\n data,\n depth,\n draft,\n fieldPromises,\n fields,\n findMany,\n flattenLocales,\n overrideAccess = false,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n}: NestedRichTextFieldsArgs): void => {\n afterReadTraverseFields({\n collection: null, // Pass from core? This is only needed for hooks, so we can leave this null for now\n context,\n currentDepth,\n depth,\n doc: data as any, // Looks like it's only needed for hooks and access control, so doesn't matter what we pass here right now\n draft,\n fallbackLocale: req.fallbackLocale!,\n fieldPromises,\n fields,\n findMany,\n flattenLocales,\n global: null, // Pass from core? This is only needed for hooks, so we can leave this null for now\n locale: req.locale!,\n overrideAccess,\n parentIndexPath: '',\n parentPath: '',\n parentSchemaPath: '',\n populationPromises, // This is not the same as populationPromises passed into this recurseNestedFields. These are just promises resolved at the very end.\n req,\n showHiddenFields,\n siblingDoc,\n triggerHooks: false,\n })\n}\n"],"mappings":"AAEA,SAASA,uBAAuB,QAAQ;
|
|
1
|
+
{"version":3,"file":"recursivelyPopulateFieldsForGraphQL.js","names":["afterReadTraverseFields","recursivelyPopulateFieldsForGraphQL","context","currentDepth","data","depth","draft","fieldPromises","fields","findMany","flattenLocales","overrideAccess","parentIsLocalized","populationPromises","req","showHiddenFields","siblingDoc","collection","doc","fallbackLocale","global","locale","parentIndexPath","parentPath","parentSchemaPath","triggerHooks"],"sources":["../../src/populateGraphQL/recursivelyPopulateFieldsForGraphQL.ts"],"sourcesContent":["import type { Field, JsonObject, PayloadRequest, RequestContext } from 'payload'\n\nimport { afterReadTraverseFields } from 'payload'\n\nimport type { PopulationPromise } from '../features/typesServer.js'\n\ntype NestedRichTextFieldsArgs = {\n context: RequestContext\n currentDepth?: number\n data: unknown\n depth: number\n draft: boolean\n /**\n * This maps all the population promises to the node types\n */\n editorPopulationPromises: Map<string, Array<PopulationPromise>>\n /**\n * fieldPromises are used for things like field hooks. They should be awaited before awaiting populationPromises\n */\n fieldPromises: Promise<void>[]\n fields: Field[]\n findMany: boolean\n flattenLocales: boolean\n overrideAccess: boolean\n parentIsLocalized: boolean\n populationPromises: Promise<void>[]\n req: PayloadRequest\n showHiddenFields: boolean\n siblingDoc: JsonObject\n}\n\nexport const recursivelyPopulateFieldsForGraphQL = ({\n context,\n currentDepth = 0,\n data,\n depth,\n draft,\n fieldPromises,\n fields,\n findMany,\n flattenLocales,\n overrideAccess = false,\n parentIsLocalized,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc,\n}: NestedRichTextFieldsArgs): void => {\n afterReadTraverseFields({\n collection: null, // Pass from core? This is only needed for hooks, so we can leave this null for now\n context,\n currentDepth,\n depth,\n doc: data as any, // Looks like it's only needed for hooks and access control, so doesn't matter what we pass here right now\n draft,\n fallbackLocale: req.fallbackLocale!,\n fieldPromises,\n fields,\n findMany,\n flattenLocales,\n global: null, // Pass from core? This is only needed for hooks, so we can leave this null for now\n locale: req.locale!,\n overrideAccess,\n parentIndexPath: '',\n parentIsLocalized,\n parentPath: '',\n parentSchemaPath: '',\n populationPromises, // This is not the same as populationPromises passed into this recurseNestedFields. These are just promises resolved at the very end.\n req,\n showHiddenFields,\n siblingDoc,\n triggerHooks: false,\n })\n}\n"],"mappings":"AAEA,SAASA,uBAAuB,QAAQ;AA6BxC,OAAO,MAAMC,mCAAA,GAAsCA,CAAC;EAClDC,OAAO;EACPC,YAAA,GAAe,CAAC;EAChBC,IAAI;EACJC,KAAK;EACLC,KAAK;EACLC,aAAa;EACbC,MAAM;EACNC,QAAQ;EACRC,cAAc;EACdC,cAAA,GAAiB,KAAK;EACtBC,iBAAiB;EACjBC,kBAAkB;EAClBC,GAAG;EACHC,gBAAgB;EAChBC;AAAU,CACe;EACzBhB,uBAAA,CAAwB;IACtBiB,UAAA,EAAY;IACZf,OAAA;IACAC,YAAA;IACAE,KAAA;IACAa,GAAA,EAAKd,IAAA;IACLE,KAAA;IACAa,cAAA,EAAgBL,GAAA,CAAIK,cAAc;IAClCZ,aAAA;IACAC,MAAA;IACAC,QAAA;IACAC,cAAA;IACAU,MAAA,EAAQ;IACRC,MAAA,EAAQP,GAAA,CAAIO,MAAM;IAClBV,cAAA;IACAW,eAAA,EAAiB;IACjBV,iBAAA;IACAW,UAAA,EAAY;IACZC,gBAAA,EAAkB;IAClBX,kBAAA;IACAC,GAAA;IACAC,gBAAA;IACAC,UAAA;IACAS,YAAA,EAAc;EAChB;AACF","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collectTopLevelJSXInLines.d.ts","sourceRoot":"","sources":["../../../src/utilities/jsx/collectTopLevelJSXInLines.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EACpB,UAAU,EAAE,MAAM,GACjB;IACD,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;CACpB,EAAE,
|
|
1
|
+
{"version":3,"file":"collectTopLevelJSXInLines.d.ts","sourceRoot":"","sources":["../../../src/utilities/jsx/collectTopLevelJSXInLines.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,EACpB,UAAU,EAAE,MAAM,GACjB;IACD,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAA;CACpB,EAAE,CAkCF"}
|
|
@@ -52,7 +52,8 @@ export function collectTopLevelJSXInLines(lines, jsxToMatch) {
|
|
|
52
52
|
const regex = createTagRegexes(jsxToMatch);
|
|
53
53
|
const linesLength = lines.length;
|
|
54
54
|
for (let i = 0; i < linesLength; i++) {
|
|
55
|
-
const
|
|
55
|
+
const line = lines[i];
|
|
56
|
+
const startMatch = line.match(regex.regExpStart);
|
|
56
57
|
if (!startMatch) {
|
|
57
58
|
continue; // Try next transformer
|
|
58
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collectTopLevelJSXInLines.js","names":["linesFromStartToContentAndPropsString","createTagRegexes","collectTopLevelJSXInLines","lines","jsxToMatch","finds","regex","linesLength","length","i","startMatch","match","regExpStart","content","endLineIndex","propsString","isEndOptional","regexpEndRegex","regExpEnd","startLineIndex","push"],"sources":["../../../src/utilities/jsx/collectTopLevelJSXInLines.ts"],"sourcesContent":["import { linesFromStartToContentAndPropsString } from '../../features/blocks/server/linesFromMatchToContentAndPropsString.js'\nimport { createTagRegexes } from '../../features/blocks/server/markdownTransformer.js'\n\n/**\n * Helpful utility for parsing out all matching top-level JSX tags in a given string.\n * This will collect them in a list, that contains the content of the JSX tag and the props string.\n *\n * While this is not used within payload, this can be used for certain payload blocks that need to\n * be serializable and deserializable to and from JSX.\n *\n * @example:\n *\n * Say you have Steps block that contains a steps array. Its JSX representation may look like this:\n *\n * <Steps>\n * <Step title=\"Step1\">\n * <h1>Step 1</h1>\n * </Step>\n * <Step title=\"Step2\">\n * <h1>Step 2</h1>\n * </Step>\n * </Steps>\n *\n * In this case, the Steps block would have the following content as its children string:\n * <Step title=\"Step1\">\n * <h1>Step 1</h1>\n * </Step>\n * <Step title=\"Step2\">\n * <h1>Step 2</h1>\n * </Step>\n *\n * It could then use this function to collect all the top-level JSX tags (= the steps):\n *\n * collectTopLevelJSXInLines(children.split('\\n'), 'Step')\n *\n * This will return:\n *\n * [\n * {\n * content: '<h1>Step 1</h1>',\n * propsString: 'title=\"Step1\"',\n * },\n * {\n * content: '<h1>Step 2</h1>',\n * propsString: 'title=\"Step2\"',\n * },\n * ]\n *\n * You can then map this data to construct the data for this blocks array field.\n */\nexport function collectTopLevelJSXInLines(\n lines: Array<string>,\n jsxToMatch: string,\n): {\n content: string\n propsString: string\n}[] {\n const finds: {\n content: string\n propsString: string\n }[] = []\n const regex = createTagRegexes(jsxToMatch)\n\n const linesLength = lines.length\n\n for (let i = 0; i < linesLength; i++) {\n const
|
|
1
|
+
{"version":3,"file":"collectTopLevelJSXInLines.js","names":["linesFromStartToContentAndPropsString","createTagRegexes","collectTopLevelJSXInLines","lines","jsxToMatch","finds","regex","linesLength","length","i","line","startMatch","match","regExpStart","content","endLineIndex","propsString","isEndOptional","regexpEndRegex","regExpEnd","startLineIndex","push"],"sources":["../../../src/utilities/jsx/collectTopLevelJSXInLines.ts"],"sourcesContent":["import { linesFromStartToContentAndPropsString } from '../../features/blocks/server/linesFromMatchToContentAndPropsString.js'\nimport { createTagRegexes } from '../../features/blocks/server/markdownTransformer.js'\n\n/**\n * Helpful utility for parsing out all matching top-level JSX tags in a given string.\n * This will collect them in a list, that contains the content of the JSX tag and the props string.\n *\n * While this is not used within payload, this can be used for certain payload blocks that need to\n * be serializable and deserializable to and from JSX.\n *\n * @example:\n *\n * Say you have Steps block that contains a steps array. Its JSX representation may look like this:\n *\n * <Steps>\n * <Step title=\"Step1\">\n * <h1>Step 1</h1>\n * </Step>\n * <Step title=\"Step2\">\n * <h1>Step 2</h1>\n * </Step>\n * </Steps>\n *\n * In this case, the Steps block would have the following content as its children string:\n * <Step title=\"Step1\">\n * <h1>Step 1</h1>\n * </Step>\n * <Step title=\"Step2\">\n * <h1>Step 2</h1>\n * </Step>\n *\n * It could then use this function to collect all the top-level JSX tags (= the steps):\n *\n * collectTopLevelJSXInLines(children.split('\\n'), 'Step')\n *\n * This will return:\n *\n * [\n * {\n * content: '<h1>Step 1</h1>',\n * propsString: 'title=\"Step1\"',\n * },\n * {\n * content: '<h1>Step 2</h1>',\n * propsString: 'title=\"Step2\"',\n * },\n * ]\n *\n * You can then map this data to construct the data for this blocks array field.\n */\nexport function collectTopLevelJSXInLines(\n lines: Array<string>,\n jsxToMatch: string,\n): {\n content: string\n propsString: string\n}[] {\n const finds: {\n content: string\n propsString: string\n }[] = []\n const regex = createTagRegexes(jsxToMatch)\n\n const linesLength = lines.length\n\n for (let i = 0; i < linesLength; i++) {\n const line = lines[i]!\n const startMatch = line.match(regex.regExpStart)\n if (!startMatch) {\n continue // Try next transformer\n }\n\n const { content, endLineIndex, propsString } = linesFromStartToContentAndPropsString({\n isEndOptional: false,\n lines,\n regexpEndRegex: regex.regExpEnd,\n startLineIndex: i,\n startMatch,\n })\n\n finds.push({\n content,\n propsString,\n })\n\n i = endLineIndex\n continue\n }\n\n return finds\n}\n"],"mappings":"AAAA,SAASA,qCAAqC,QAAQ;AACtD,SAASC,gBAAgB,QAAQ;AAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CA,OAAO,SAASC,0BACdC,KAAoB,EACpBC,UAAkB;EAKlB,MAAMC,KAAA,GAGA,EAAE;EACR,MAAMC,KAAA,GAAQL,gBAAA,CAAiBG,UAAA;EAE/B,MAAMG,WAAA,GAAcJ,KAAA,CAAMK,MAAM;EAEhC,KAAK,IAAIC,CAAA,GAAI,GAAGA,CAAA,GAAIF,WAAA,EAAaE,CAAA,IAAK;IACpC,MAAMC,IAAA,GAAOP,KAAK,CAACM,CAAA,CAAE;IACrB,MAAME,UAAA,GAAaD,IAAA,CAAKE,KAAK,CAACN,KAAA,CAAMO,WAAW;IAC/C,IAAI,CAACF,UAAA,EAAY;MACf,UAAS;IACX;IAEA,MAAM;MAAEG,OAAO;MAAEC,YAAY;MAAEC;IAAW,CAAE,GAAGhB,qCAAA,CAAsC;MACnFiB,aAAA,EAAe;MACfd,KAAA;MACAe,cAAA,EAAgBZ,KAAA,CAAMa,SAAS;MAC/BC,cAAA,EAAgBX,CAAA;MAChBE;IACF;IAEAN,KAAA,CAAMgB,IAAI,CAAC;MACTP,OAAA;MACAE;IACF;IAEAP,CAAA,GAAIM,YAAA;IACJ;EACF;EAEA,OAAOV,KAAA;AACT","ignoreList":[]}
|
|
@@ -60,7 +60,8 @@ async function migrateGlobal({
|
|
|
60
60
|
});
|
|
61
61
|
const found = migrateDocument({
|
|
62
62
|
document,
|
|
63
|
-
fields: global.fields
|
|
63
|
+
fields: global.fields,
|
|
64
|
+
payload
|
|
64
65
|
});
|
|
65
66
|
if (found) {
|
|
66
67
|
try {
|
|
@@ -111,7 +112,8 @@ async function migrateCollection({
|
|
|
111
112
|
console.log(`SlateToLexical: ${locale}: Migrating collection:`, collection.slug, '(' + cur + '/' + max + ') - Migrating Document: ' + document.id + ' (' + migrated + '/' + documentCount + ')');
|
|
112
113
|
const found = migrateDocument({
|
|
113
114
|
document,
|
|
114
|
-
fields: collection.fields
|
|
115
|
+
fields: collection.fields,
|
|
116
|
+
payload
|
|
115
117
|
});
|
|
116
118
|
if (found) {
|
|
117
119
|
try {
|
|
@@ -138,12 +140,14 @@ async function migrateCollection({
|
|
|
138
140
|
}
|
|
139
141
|
function migrateDocument({
|
|
140
142
|
document,
|
|
141
|
-
fields
|
|
143
|
+
fields,
|
|
144
|
+
payload
|
|
142
145
|
}) {
|
|
143
146
|
return !!migrateDocumentFieldsRecursively({
|
|
144
147
|
data: document,
|
|
145
148
|
fields,
|
|
146
|
-
found: 0
|
|
149
|
+
found: 0,
|
|
150
|
+
payload
|
|
147
151
|
});
|
|
148
152
|
}
|
|
149
153
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["migrateDocumentFieldsRecursively","migrateSlateToLexical","payload","collections","config","errors","allLocales","localization","localeCodes","totalCollections","length","locale","curCollection","collection","migrateCollection","cur","max","global","globals","migrateGlobal","console","error","JSON","stringify","log","slug","document","findGlobal","depth","draft","undefined","overrideAccess","found","migrateDocument","fields","updateGlobal","data","_status","e","push","documentCount","count","totalDocs","page","migrated","documents","find","pagination","docs","id","update"],"sources":["../../../src/utilities/migrateSlateToLexical/index.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport type { CollectionConfig, Field, GlobalConfig, Payload } from 'payload'\n\nimport { migrateDocumentFieldsRecursively } from './migrateDocumentFieldsRecursively.js'\n\n/**\n * This goes through every single collection and field in the payload config, and migrates its data from Slate to Lexical. This does not support sub-fields within slate.\n *\n * It will only translate fields fulfilling all these requirements:\n * - field schema uses lexical editor\n * - lexical editor has SlateToLexicalFeature added\n * - saved field data is in Slate format\n *\n * @param payload\n */\nexport async function migrateSlateToLexical({ payload }: { payload: Payload }) {\n const collections = payload.config.collections\n\n const errors: unknown[] = []\n\n const allLocales = payload.config.localization ? payload.config.localization.localeCodes : [null]\n\n const totalCollections = collections.length\n for (const locale of allLocales) {\n let curCollection = 0\n for (const collection of collections) {\n curCollection++\n await migrateCollection({\n collection,\n cur: curCollection,\n errors,\n locale,\n max: totalCollections,\n payload,\n })\n }\n for (const global of payload.config.globals) {\n await migrateGlobal({\n errors,\n global,\n locale,\n payload,\n })\n }\n }\n\n if (errors.length) {\n console.error(`Found ${errors.length} errors::`, JSON.stringify(errors, null, 2))\n } else {\n console.log('Migration successful - no errors')\n }\n}\n\nasync function migrateGlobal({\n errors,\n global,\n locale,\n payload,\n}: {\n errors: unknown[]\n global: GlobalConfig\n locale: null | string\n payload: Payload\n}) {\n console.log(`SlateToLexical: ${locale}: Migrating global:`, global.slug)\n\n const document = await payload.findGlobal({\n slug: global.slug,\n depth: 0,\n draft: true,\n locale: locale || undefined,\n overrideAccess: true,\n })\n\n const found = migrateDocument({\n document,\n fields: global.fields,\n })\n\n if (found) {\n try {\n await payload.updateGlobal({\n slug: global.slug,\n data: document,\n depth: 0,\n draft: document?._status === 'draft',\n locale: locale || undefined,\n })\n // Catch it, because some errors were caused by the user previously (e.g. invalid relationships) and will throw an error now, even though they are not related to the migration\n } catch (e) {\n console.log('Error updating global', e, {\n slug: global.slug,\n })\n errors.push(e)\n }\n }\n}\n\nasync function migrateCollection({\n collection,\n cur,\n errors,\n locale,\n max,\n payload,\n}: {\n collection: CollectionConfig\n cur: number\n errors: unknown[]\n locale: null | string\n max: number\n payload: Payload\n}) {\n console.log(\n `SlateToLexical: ${locale}: Migrating collection:`,\n collection.slug,\n '(' + cur + '/' + max + ')',\n )\n\n const documentCount = (\n await payload.count({\n collection: collection.slug,\n depth: 0,\n locale: locale || undefined,\n })\n ).totalDocs\n\n let page = 1\n let migrated = 0\n\n while (migrated < documentCount) {\n const documents = await payload.find({\n collection: collection.slug,\n depth: 0,\n draft: true,\n locale: locale || undefined,\n overrideAccess: true,\n page,\n pagination: true,\n })\n\n for (const document of documents.docs) {\n migrated++\n console.log(\n `SlateToLexical: ${locale}: Migrating collection:`,\n collection.slug,\n '(' +\n cur +\n '/' +\n max +\n ') - Migrating Document: ' +\n document.id +\n ' (' +\n migrated +\n '/' +\n documentCount +\n ')',\n )\n const found = migrateDocument({\n document,\n fields: collection.fields,\n })\n\n if (found) {\n try {\n await payload.update({\n id: document.id,\n collection: collection.slug,\n data: document,\n depth: 0,\n draft: document?._status === 'draft',\n locale: locale || undefined,\n })\n // Catch it, because some errors were caused by the user previously (e.g. invalid relationships) and will throw an error now, even though they are not related to the migration\n } catch (e) {\n errors.push(e)\n\n console.log('Error updating collection', e, {\n id: document.id,\n slug: collection.slug,\n })\n }\n }\n }\n page++\n }\n}\n\nfunction migrateDocument({\n document,\n fields,\n}: {\n document: Record<string, unknown>\n fields: Field[]\n}): boolean {\n return !!migrateDocumentFieldsRecursively({\n data: document,\n fields,\n found: 0,\n })\n}\n"],"mappings":"AAAA,+BAGA,SAASA,gCAAgC,QAAQ;AAEjD;;;;;;;;;;AAUA,OAAO,eAAeC,sBAAsB;EAAEC;AAAO,CAAwB;EAC3E,MAAMC,WAAA,GAAcD,OAAA,CAAQE,MAAM,CAACD,WAAW;EAE9C,MAAME,MAAA,GAAoB,EAAE;EAE5B,MAAMC,UAAA,GAAaJ,OAAA,CAAQE,MAAM,CAACG,YAAY,GAAGL,OAAA,CAAQE,MAAM,CAACG,YAAY,CAACC,WAAW,GAAG,CAAC,KAAK;EAEjG,MAAMC,gBAAA,GAAmBN,WAAA,CAAYO,MAAM;EAC3C,KAAK,MAAMC,MAAA,IAAUL,UAAA,EAAY;IAC/B,IAAIM,aAAA,GAAgB;IACpB,KAAK,MAAMC,UAAA,IAAcV,WAAA,EAAa;MACpCS,aAAA;MACA,MAAME,iBAAA,CAAkB;QACtBD,UAAA;QACAE,GAAA,EAAKH,aAAA;QACLP,MAAA;QACAM,MAAA;QACAK,GAAA,EAAKP,gBAAA;QACLP;MACF;IACF;IACA,KAAK,MAAMe,MAAA,IAAUf,OAAA,CAAQE,MAAM,CAACc,OAAO,EAAE;MAC3C,MAAMC,aAAA,CAAc;QAClBd,MAAA;QACAY,MAAA;QACAN,MAAA;QACAT;MACF;IACF;EACF;EAEA,IAAIG,MAAA,CAAOK,MAAM,EAAE;IACjBU,OAAA,CAAQC,KAAK,CAAC,SAAShB,MAAA,CAAOK,MAAM,WAAW,EAAEY,IAAA,CAAKC,SAAS,CAAClB,MAAA,EAAQ,MAAM;EAChF,OAAO;IACLe,OAAA,CAAQI,GAAG,CAAC;EACd;AACF;AAEA,eAAeL,cAAc;EAC3Bd,MAAM;EACNY,MAAM;EACNN,MAAM;EACNT;AAAO,CAMR;EACCkB,OAAA,CAAQI,GAAG,CAAC,mBAAmBb,MAAA,qBAA2B,EAAEM,MAAA,CAAOQ,IAAI;EAEvE,MAAMC,QAAA,GAAW,MAAMxB,OAAA,CAAQyB,UAAU,CAAC;IACxCF,IAAA,EAAMR,MAAA,CAAOQ,IAAI;IACjBG,KAAA,EAAO;IACPC,KAAA,EAAO;IACPlB,MAAA,EAAQA,MAAA,IAAUmB,SAAA;IAClBC,cAAA,EAAgB;EAClB;EAEA,MAAMC,KAAA,GAAQC,eAAA,CAAgB;IAC5BP,QAAA;IACAQ,MAAA,EAAQjB,MAAA,CAAOiB;
|
|
1
|
+
{"version":3,"file":"index.js","names":["migrateDocumentFieldsRecursively","migrateSlateToLexical","payload","collections","config","errors","allLocales","localization","localeCodes","totalCollections","length","locale","curCollection","collection","migrateCollection","cur","max","global","globals","migrateGlobal","console","error","JSON","stringify","log","slug","document","findGlobal","depth","draft","undefined","overrideAccess","found","migrateDocument","fields","updateGlobal","data","_status","e","push","documentCount","count","totalDocs","page","migrated","documents","find","pagination","docs","id","update"],"sources":["../../../src/utilities/migrateSlateToLexical/index.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport type { CollectionConfig, Field, GlobalConfig, Payload } from 'payload'\n\nimport { migrateDocumentFieldsRecursively } from './migrateDocumentFieldsRecursively.js'\n\n/**\n * This goes through every single collection and field in the payload config, and migrates its data from Slate to Lexical. This does not support sub-fields within slate.\n *\n * It will only translate fields fulfilling all these requirements:\n * - field schema uses lexical editor\n * - lexical editor has SlateToLexicalFeature added\n * - saved field data is in Slate format\n *\n * @param payload\n */\nexport async function migrateSlateToLexical({ payload }: { payload: Payload }) {\n const collections = payload.config.collections\n\n const errors: unknown[] = []\n\n const allLocales = payload.config.localization ? payload.config.localization.localeCodes : [null]\n\n const totalCollections = collections.length\n for (const locale of allLocales) {\n let curCollection = 0\n for (const collection of collections) {\n curCollection++\n await migrateCollection({\n collection,\n cur: curCollection,\n errors,\n locale,\n max: totalCollections,\n payload,\n })\n }\n for (const global of payload.config.globals) {\n await migrateGlobal({\n errors,\n global,\n locale,\n payload,\n })\n }\n }\n\n if (errors.length) {\n console.error(`Found ${errors.length} errors::`, JSON.stringify(errors, null, 2))\n } else {\n console.log('Migration successful - no errors')\n }\n}\n\nasync function migrateGlobal({\n errors,\n global,\n locale,\n payload,\n}: {\n errors: unknown[]\n global: GlobalConfig\n locale: null | string\n payload: Payload\n}) {\n console.log(`SlateToLexical: ${locale}: Migrating global:`, global.slug)\n\n const document = await payload.findGlobal({\n slug: global.slug,\n depth: 0,\n draft: true,\n locale: locale || undefined,\n overrideAccess: true,\n })\n\n const found = migrateDocument({\n document,\n fields: global.fields,\n payload,\n })\n\n if (found) {\n try {\n await payload.updateGlobal({\n slug: global.slug,\n data: document,\n depth: 0,\n draft: document?._status === 'draft',\n locale: locale || undefined,\n })\n // Catch it, because some errors were caused by the user previously (e.g. invalid relationships) and will throw an error now, even though they are not related to the migration\n } catch (e) {\n console.log('Error updating global', e, {\n slug: global.slug,\n })\n errors.push(e)\n }\n }\n}\n\nasync function migrateCollection({\n collection,\n cur,\n errors,\n locale,\n max,\n payload,\n}: {\n collection: CollectionConfig\n cur: number\n errors: unknown[]\n locale: null | string\n max: number\n payload: Payload\n}) {\n console.log(\n `SlateToLexical: ${locale}: Migrating collection:`,\n collection.slug,\n '(' + cur + '/' + max + ')',\n )\n\n const documentCount = (\n await payload.count({\n collection: collection.slug,\n depth: 0,\n locale: locale || undefined,\n })\n ).totalDocs\n\n let page = 1\n let migrated = 0\n\n while (migrated < documentCount) {\n const documents = await payload.find({\n collection: collection.slug,\n depth: 0,\n draft: true,\n locale: locale || undefined,\n overrideAccess: true,\n page,\n pagination: true,\n })\n\n for (const document of documents.docs) {\n migrated++\n console.log(\n `SlateToLexical: ${locale}: Migrating collection:`,\n collection.slug,\n '(' +\n cur +\n '/' +\n max +\n ') - Migrating Document: ' +\n document.id +\n ' (' +\n migrated +\n '/' +\n documentCount +\n ')',\n )\n const found = migrateDocument({\n document,\n fields: collection.fields,\n payload,\n })\n\n if (found) {\n try {\n await payload.update({\n id: document.id,\n collection: collection.slug,\n data: document,\n depth: 0,\n draft: document?._status === 'draft',\n locale: locale || undefined,\n })\n // Catch it, because some errors were caused by the user previously (e.g. invalid relationships) and will throw an error now, even though they are not related to the migration\n } catch (e) {\n errors.push(e)\n\n console.log('Error updating collection', e, {\n id: document.id,\n slug: collection.slug,\n })\n }\n }\n }\n page++\n }\n}\n\nfunction migrateDocument({\n document,\n fields,\n payload,\n}: {\n document: Record<string, unknown>\n fields: Field[]\n payload: Payload\n}): boolean {\n return !!migrateDocumentFieldsRecursively({\n data: document,\n fields,\n found: 0,\n payload,\n })\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import type { Field } from 'payload';
|
|
1
|
+
import type { Field, Payload } from 'payload';
|
|
2
2
|
type NestedRichTextFieldsArgs = {
|
|
3
3
|
data: Record<string, unknown>;
|
|
4
4
|
fields: Field[];
|
|
5
5
|
found: number;
|
|
6
|
+
payload: Payload;
|
|
6
7
|
};
|
|
7
|
-
export declare const migrateDocumentFieldsRecursively: ({ data, fields, found, }: NestedRichTextFieldsArgs) => number;
|
|
8
|
+
export declare const migrateDocumentFieldsRecursively: ({ data, fields, found, payload, }: NestedRichTextFieldsArgs) => number;
|
|
8
9
|
export {};
|
|
9
10
|
//# sourceMappingURL=migrateDocumentFieldsRecursively.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrateDocumentFieldsRecursively.d.ts","sourceRoot":"","sources":["../../../src/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"migrateDocumentFieldsRecursively.d.ts","sourceRoot":"","sources":["../../../src/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAkB,OAAO,EAAE,MAAM,SAAS,CAAA;AAY7D,KAAK,wBAAwB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAE7B,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,gCAAgC,sCAK1C,wBAAwB,KAAG,MAuF7B,CAAA"}
|
|
@@ -3,7 +3,8 @@ import { convertSlateToLexical } from '../../features/migrations/slateToLexical/
|
|
|
3
3
|
export const migrateDocumentFieldsRecursively = ({
|
|
4
4
|
data,
|
|
5
5
|
fields,
|
|
6
|
-
found
|
|
6
|
+
found,
|
|
7
|
+
payload
|
|
7
8
|
}) => {
|
|
8
9
|
for (const field of fields) {
|
|
9
10
|
if (fieldHasSubFields(field) && !fieldIsArrayType(field)) {
|
|
@@ -11,13 +12,15 @@ export const migrateDocumentFieldsRecursively = ({
|
|
|
11
12
|
found += migrateDocumentFieldsRecursively({
|
|
12
13
|
data: data[field.name],
|
|
13
14
|
fields: field.fields,
|
|
14
|
-
found
|
|
15
|
+
found,
|
|
16
|
+
payload
|
|
15
17
|
});
|
|
16
18
|
} else {
|
|
17
19
|
found += migrateDocumentFieldsRecursively({
|
|
18
20
|
data,
|
|
19
21
|
fields: field.fields,
|
|
20
|
-
found
|
|
22
|
+
found,
|
|
23
|
+
payload
|
|
21
24
|
});
|
|
22
25
|
}
|
|
23
26
|
} else if (field.type === 'tabs') {
|
|
@@ -25,30 +28,32 @@ export const migrateDocumentFieldsRecursively = ({
|
|
|
25
28
|
found += migrateDocumentFieldsRecursively({
|
|
26
29
|
data: tabHasName(tab) ? data[tab.name] : data,
|
|
27
30
|
fields: tab.fields,
|
|
28
|
-
found
|
|
31
|
+
found,
|
|
32
|
+
payload
|
|
29
33
|
});
|
|
30
34
|
});
|
|
31
35
|
} else if (Array.isArray(data[field.name])) {
|
|
32
36
|
if (field.type === 'blocks') {
|
|
33
|
-
data[field.name].forEach(
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
}) => slug === row?.blockType);
|
|
37
|
+
data[field.name].forEach(row => {
|
|
38
|
+
const blockTypeToMatch = row?.blockType;
|
|
39
|
+
const block = payload?.blocks[blockTypeToMatch] ?? (field.blockReferences ?? field.blocks).find(block => typeof block !== 'string' && block.slug === blockTypeToMatch);
|
|
37
40
|
if (block) {
|
|
38
41
|
found += migrateDocumentFieldsRecursively({
|
|
39
|
-
data:
|
|
42
|
+
data: row,
|
|
40
43
|
fields: block.fields,
|
|
41
|
-
found
|
|
44
|
+
found,
|
|
45
|
+
payload
|
|
42
46
|
});
|
|
43
47
|
}
|
|
44
48
|
});
|
|
45
49
|
}
|
|
46
50
|
if (field.type === 'array') {
|
|
47
|
-
data[field.name].forEach(
|
|
51
|
+
data[field.name].forEach(row => {
|
|
48
52
|
found += migrateDocumentFieldsRecursively({
|
|
49
|
-
data:
|
|
53
|
+
data: row,
|
|
50
54
|
fields: field.fields,
|
|
51
|
-
found
|
|
55
|
+
found,
|
|
56
|
+
payload
|
|
52
57
|
});
|
|
53
58
|
});
|
|
54
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrateDocumentFieldsRecursively.js","names":["fieldAffectsData","fieldHasSubFields","fieldIsArrayType","tabHasName","convertSlateToLexical","migrateDocumentFieldsRecursively","data","fields","found","field","name","type","tabs","forEach","tab","Array","isArray","row","
|
|
1
|
+
{"version":3,"file":"migrateDocumentFieldsRecursively.js","names":["fieldAffectsData","fieldHasSubFields","fieldIsArrayType","tabHasName","convertSlateToLexical","migrateDocumentFieldsRecursively","data","fields","found","payload","field","name","type","tabs","forEach","tab","Array","isArray","row","blockTypeToMatch","blockType","block","blocks","blockReferences","find","slug","editor","features","length","slateToLexicalFeature","editorConfig","resolvedFeatureMap","get","converters","sanitizedServerFeatureProps","slateData"],"sources":["../../../src/utilities/migrateSlateToLexical/migrateDocumentFieldsRecursively.ts"],"sourcesContent":["import type { Field, FlattenedBlock, Payload } from 'payload'\n\nimport { fieldAffectsData, fieldHasSubFields, fieldIsArrayType, tabHasName } from 'payload/shared'\n\nimport type {\n SlateNode,\n SlateNodeConverter,\n} from '../../features/migrations/slateToLexical/converter/types.js'\nimport type { LexicalRichTextAdapter } from '../../types.js'\n\nimport { convertSlateToLexical } from '../../features/migrations/slateToLexical/converter/index.js'\n\ntype NestedRichTextFieldsArgs = {\n data: Record<string, unknown>\n\n fields: Field[]\n found: number\n payload: Payload\n}\n\nexport const migrateDocumentFieldsRecursively = ({\n data,\n fields,\n found,\n payload,\n}: NestedRichTextFieldsArgs): number => {\n for (const field of fields) {\n if (fieldHasSubFields(field) && !fieldIsArrayType(field)) {\n if (fieldAffectsData(field) && typeof data[field.name] === 'object') {\n found += migrateDocumentFieldsRecursively({\n data: data[field.name] as Record<string, unknown>,\n fields: field.fields,\n found,\n payload,\n })\n } else {\n found += migrateDocumentFieldsRecursively({\n data,\n fields: field.fields,\n found,\n payload,\n })\n }\n } else if (field.type === 'tabs') {\n field.tabs.forEach((tab) => {\n found += migrateDocumentFieldsRecursively({\n data: (tabHasName(tab) ? data[tab.name] : data) as Record<string, unknown>,\n fields: tab.fields,\n found,\n payload,\n })\n })\n } else if (Array.isArray(data[field.name])) {\n if (field.type === 'blocks') {\n ;(data[field.name] as Array<Record<string, unknown>>).forEach((row) => {\n const blockTypeToMatch: string = row?.blockType as string\n const block =\n payload?.blocks[blockTypeToMatch] ??\n ((field.blockReferences ?? field.blocks).find(\n (block) => typeof block !== 'string' && block.slug === blockTypeToMatch,\n ) as FlattenedBlock | undefined)\n\n if (block) {\n found += migrateDocumentFieldsRecursively({\n data: row,\n fields: block.fields,\n found,\n payload,\n })\n }\n })\n }\n\n if (field.type === 'array') {\n ;(data[field.name] as Array<Record<string, unknown>>).forEach((row) => {\n found += migrateDocumentFieldsRecursively({\n data: row,\n fields: field.fields,\n found,\n payload,\n })\n })\n }\n }\n\n if (field.type === 'richText' && Array.isArray(data[field.name])) {\n // Slate richText\n const editor: LexicalRichTextAdapter = field.editor as LexicalRichTextAdapter\n if (editor && typeof editor === 'object') {\n if ('features' in editor && editor.features?.length) {\n // find slatetolexical feature\n const slateToLexicalFeature = editor.editorConfig.resolvedFeatureMap.get('slateToLexical')\n if (slateToLexicalFeature) {\n // DO CONVERSION\n\n const { converters } = slateToLexicalFeature.sanitizedServerFeatureProps as {\n converters?: SlateNodeConverter[]\n }\n\n data[field.name] = convertSlateToLexical({\n converters: converters!,\n slateData: data[field.name] as SlateNode[],\n })\n\n found++\n }\n }\n }\n }\n }\n\n return found\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -46,7 +46,8 @@ async function upgradeGlobal({
|
|
|
46
46
|
});
|
|
47
47
|
const found = upgradeDocument({
|
|
48
48
|
document,
|
|
49
|
-
fields: global.fields
|
|
49
|
+
fields: global.fields,
|
|
50
|
+
payload
|
|
50
51
|
});
|
|
51
52
|
if (found) {
|
|
52
53
|
await payload.updateGlobal({
|
|
@@ -86,7 +87,8 @@ async function upgradeCollection({
|
|
|
86
87
|
console.log(`Lexical Upgrade: ${locale}: Upgrading collection:`, collection.slug, '(' + cur + '/' + max + ') - Upgrading Document: ' + document.id + ' (' + upgraded + '/' + documentCount + ')');
|
|
87
88
|
const found = upgradeDocument({
|
|
88
89
|
document,
|
|
89
|
-
fields: collection.fields
|
|
90
|
+
fields: collection.fields,
|
|
91
|
+
payload
|
|
90
92
|
});
|
|
91
93
|
if (found) {
|
|
92
94
|
await payload.update({
|
|
@@ -103,12 +105,14 @@ async function upgradeCollection({
|
|
|
103
105
|
}
|
|
104
106
|
function upgradeDocument({
|
|
105
107
|
document,
|
|
106
|
-
fields
|
|
108
|
+
fields,
|
|
109
|
+
payload
|
|
107
110
|
}) {
|
|
108
111
|
return !!upgradeDocumentFieldsRecursively({
|
|
109
112
|
data: document,
|
|
110
113
|
fields,
|
|
111
|
-
found: 0
|
|
114
|
+
found: 0,
|
|
115
|
+
payload
|
|
112
116
|
});
|
|
113
117
|
}
|
|
114
118
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["upgradeDocumentFieldsRecursively","upgradeLexicalData","payload","collections","config","allLocales","localization","localeCodes","totalCollections","length","locale","curCollection","collection","upgradeCollection","cur","max","global","globals","upgradeGlobal","console","log","slug","document","findGlobal","depth","undefined","overrideAccess","found","upgradeDocument","fields","updateGlobal","data","documentCount","count","totalDocs","page","upgraded","documents","find","pagination","docs","id","update"],"sources":["../../../src/utilities/upgradeLexicalData/index.ts"],"sourcesContent":["import type { CollectionConfig, Field, GlobalConfig, Payload } from 'payload'\n\nimport { upgradeDocumentFieldsRecursively } from './upgradeDocumentFieldsRecursively.js'\n\n/**\n * This goes through every single document in your payload app and re-saves it, if it has a lexical editor.\n * This way, the data is automatically converted to the new format, and that automatic conversion gets applied to every single document in your app.\n *\n * @param payload\n */\nexport async function upgradeLexicalData({ payload }: { payload: Payload }) {\n const collections = payload.config.collections\n\n const allLocales = payload.config.localization ? payload.config.localization.localeCodes : [null]\n\n const totalCollections = collections.length\n for (const locale of allLocales) {\n let curCollection = 0\n for (const collection of collections) {\n curCollection++\n await upgradeCollection({\n collection,\n cur: curCollection,\n locale,\n max: totalCollections,\n payload,\n })\n }\n for (const global of payload.config.globals) {\n await upgradeGlobal({\n global,\n locale,\n payload,\n })\n }\n }\n}\n\nasync function upgradeGlobal({\n global,\n locale,\n payload,\n}: {\n global: GlobalConfig\n locale: null | string\n payload: Payload\n}) {\n console.log(`Lexical Upgrader: ${locale}: Upgrading global:`, global.slug)\n\n const document = await payload.findGlobal({\n slug: global.slug,\n depth: 0,\n locale: locale || undefined,\n overrideAccess: true,\n })\n\n const found = upgradeDocument({\n document,\n fields: global.fields,\n })\n\n if (found) {\n await payload.updateGlobal({\n slug: global.slug,\n data: document,\n depth: 0,\n locale: locale || undefined,\n })\n }\n}\n\nasync function upgradeCollection({\n collection,\n cur,\n locale,\n max,\n payload,\n}: {\n collection: CollectionConfig\n cur: number\n locale: null | string\n max: number\n payload: Payload\n}) {\n console.log(\n `Lexical Upgrade: ${locale}: Upgrading collection:`,\n collection.slug,\n '(' + cur + '/' + max + ')',\n )\n\n const documentCount = (\n await payload.count({\n collection: collection.slug,\n depth: 0,\n locale: locale || undefined,\n })\n ).totalDocs\n\n let page = 1\n let upgraded = 0\n\n while (upgraded < documentCount) {\n const documents = await payload.find({\n collection: collection.slug,\n depth: 0,\n locale: locale || undefined,\n overrideAccess: true,\n page,\n pagination: true,\n })\n\n for (const document of documents.docs) {\n upgraded++\n console.log(\n `Lexical Upgrade: ${locale}: Upgrading collection:`,\n collection.slug,\n '(' +\n cur +\n '/' +\n max +\n ') - Upgrading Document: ' +\n document.id +\n ' (' +\n upgraded +\n '/' +\n documentCount +\n ')',\n )\n const found = upgradeDocument({\n document,\n fields: collection.fields,\n })\n\n if (found) {\n await payload.update({\n id: document.id,\n collection: collection.slug,\n data: document,\n depth: 0,\n locale: locale || undefined,\n })\n }\n }\n page++\n }\n}\n\nfunction upgradeDocument({\n document,\n fields,\n}: {\n document: Record<string, unknown>\n fields: Field[]\n}): boolean {\n return !!upgradeDocumentFieldsRecursively({\n data: document,\n fields,\n found: 0,\n })\n}\n"],"mappings":"AAEA,SAASA,gCAAgC,QAAQ;AAEjD;;;;;;AAMA,OAAO,eAAeC,mBAAmB;EAAEC;AAAO,CAAwB;EACxE,MAAMC,WAAA,GAAcD,OAAA,CAAQE,MAAM,CAACD,WAAW;EAE9C,MAAME,UAAA,GAAaH,OAAA,CAAQE,MAAM,CAACE,YAAY,GAAGJ,OAAA,CAAQE,MAAM,CAACE,YAAY,CAACC,WAAW,GAAG,CAAC,KAAK;EAEjG,MAAMC,gBAAA,GAAmBL,WAAA,CAAYM,MAAM;EAC3C,KAAK,MAAMC,MAAA,IAAUL,UAAA,EAAY;IAC/B,IAAIM,aAAA,GAAgB;IACpB,KAAK,MAAMC,UAAA,IAAcT,WAAA,EAAa;MACpCQ,aAAA;MACA,MAAME,iBAAA,CAAkB;QACtBD,UAAA;QACAE,GAAA,EAAKH,aAAA;QACLD,MAAA;QACAK,GAAA,EAAKP,gBAAA;QACLN;MACF;IACF;IACA,KAAK,MAAMc,MAAA,IAAUd,OAAA,CAAQE,MAAM,CAACa,OAAO,EAAE;MAC3C,MAAMC,aAAA,CAAc;QAClBF,MAAA;QACAN,MAAA;QACAR;MACF;IACF;EACF;AACF;AAEA,eAAegB,cAAc;EAC3BF,MAAM;EACNN,MAAM;EACNR;AAAO,CAKR;EACCiB,OAAA,CAAQC,GAAG,CAAC,qBAAqBV,MAAA,qBAA2B,EAAEM,MAAA,CAAOK,IAAI;EAEzE,MAAMC,QAAA,GAAW,MAAMpB,OAAA,CAAQqB,UAAU,CAAC;IACxCF,IAAA,EAAML,MAAA,CAAOK,IAAI;IACjBG,KAAA,EAAO;IACPd,MAAA,EAAQA,MAAA,IAAUe,SAAA;IAClBC,cAAA,EAAgB;EAClB;EAEA,MAAMC,KAAA,GAAQC,eAAA,CAAgB;IAC5BN,QAAA;IACAO,MAAA,EAAQb,MAAA,CAAOa;
|
|
1
|
+
{"version":3,"file":"index.js","names":["upgradeDocumentFieldsRecursively","upgradeLexicalData","payload","collections","config","allLocales","localization","localeCodes","totalCollections","length","locale","curCollection","collection","upgradeCollection","cur","max","global","globals","upgradeGlobal","console","log","slug","document","findGlobal","depth","undefined","overrideAccess","found","upgradeDocument","fields","updateGlobal","data","documentCount","count","totalDocs","page","upgraded","documents","find","pagination","docs","id","update"],"sources":["../../../src/utilities/upgradeLexicalData/index.ts"],"sourcesContent":["import type { CollectionConfig, Field, GlobalConfig, Payload } from 'payload'\n\nimport { upgradeDocumentFieldsRecursively } from './upgradeDocumentFieldsRecursively.js'\n\n/**\n * This goes through every single document in your payload app and re-saves it, if it has a lexical editor.\n * This way, the data is automatically converted to the new format, and that automatic conversion gets applied to every single document in your app.\n *\n * @param payload\n */\nexport async function upgradeLexicalData({ payload }: { payload: Payload }) {\n const collections = payload.config.collections\n\n const allLocales = payload.config.localization ? payload.config.localization.localeCodes : [null]\n\n const totalCollections = collections.length\n for (const locale of allLocales) {\n let curCollection = 0\n for (const collection of collections) {\n curCollection++\n await upgradeCollection({\n collection,\n cur: curCollection,\n locale,\n max: totalCollections,\n payload,\n })\n }\n for (const global of payload.config.globals) {\n await upgradeGlobal({\n global,\n locale,\n payload,\n })\n }\n }\n}\n\nasync function upgradeGlobal({\n global,\n locale,\n payload,\n}: {\n global: GlobalConfig\n locale: null | string\n payload: Payload\n}) {\n console.log(`Lexical Upgrader: ${locale}: Upgrading global:`, global.slug)\n\n const document = await payload.findGlobal({\n slug: global.slug,\n depth: 0,\n locale: locale || undefined,\n overrideAccess: true,\n })\n\n const found = upgradeDocument({\n document,\n fields: global.fields,\n payload,\n })\n\n if (found) {\n await payload.updateGlobal({\n slug: global.slug,\n data: document,\n depth: 0,\n locale: locale || undefined,\n })\n }\n}\n\nasync function upgradeCollection({\n collection,\n cur,\n locale,\n max,\n payload,\n}: {\n collection: CollectionConfig\n cur: number\n locale: null | string\n max: number\n payload: Payload\n}) {\n console.log(\n `Lexical Upgrade: ${locale}: Upgrading collection:`,\n collection.slug,\n '(' + cur + '/' + max + ')',\n )\n\n const documentCount = (\n await payload.count({\n collection: collection.slug,\n depth: 0,\n locale: locale || undefined,\n })\n ).totalDocs\n\n let page = 1\n let upgraded = 0\n\n while (upgraded < documentCount) {\n const documents = await payload.find({\n collection: collection.slug,\n depth: 0,\n locale: locale || undefined,\n overrideAccess: true,\n page,\n pagination: true,\n })\n\n for (const document of documents.docs) {\n upgraded++\n console.log(\n `Lexical Upgrade: ${locale}: Upgrading collection:`,\n collection.slug,\n '(' +\n cur +\n '/' +\n max +\n ') - Upgrading Document: ' +\n document.id +\n ' (' +\n upgraded +\n '/' +\n documentCount +\n ')',\n )\n const found = upgradeDocument({\n document,\n fields: collection.fields,\n payload,\n })\n\n if (found) {\n await payload.update({\n id: document.id,\n collection: collection.slug,\n data: document,\n depth: 0,\n locale: locale || undefined,\n })\n }\n }\n page++\n }\n}\n\nfunction upgradeDocument({\n document,\n fields,\n payload,\n}: {\n document: Record<string, unknown>\n fields: Field[]\n payload: Payload\n}): boolean {\n return !!upgradeDocumentFieldsRecursively({\n data: document,\n fields,\n found: 0,\n payload,\n })\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import type { Field } from 'payload';
|
|
1
|
+
import type { Field, Payload } from 'payload';
|
|
2
2
|
type NestedRichTextFieldsArgs = {
|
|
3
3
|
data: Record<string, unknown>;
|
|
4
4
|
fields: Field[];
|
|
5
5
|
found: number;
|
|
6
|
+
payload: Payload;
|
|
6
7
|
};
|
|
7
|
-
export declare const upgradeDocumentFieldsRecursively: ({ data, fields, found, }: NestedRichTextFieldsArgs) => number;
|
|
8
|
+
export declare const upgradeDocumentFieldsRecursively: ({ data, fields, found, payload, }: NestedRichTextFieldsArgs) => number;
|
|
8
9
|
export {};
|
|
9
10
|
//# sourceMappingURL=upgradeDocumentFieldsRecursively.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgradeDocumentFieldsRecursively.d.ts","sourceRoot":"","sources":["../../../src/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"upgradeDocumentFieldsRecursively.d.ts","sourceRoot":"","sources":["../../../src/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAkB,OAAO,EAAE,MAAM,SAAS,CAAA;AAS7D,KAAK,wBAAwB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAE7B,MAAM,EAAE,KAAK,EAAE,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAED,eAAO,MAAM,gCAAgC,sCAK1C,wBAAwB,KAAG,MAgG7B,CAAA"}
|
|
@@ -4,7 +4,8 @@ import { getEnabledNodes } from '../../lexical/nodes/index.js';
|
|
|
4
4
|
export const upgradeDocumentFieldsRecursively = ({
|
|
5
5
|
data,
|
|
6
6
|
fields,
|
|
7
|
-
found
|
|
7
|
+
found,
|
|
8
|
+
payload
|
|
8
9
|
}) => {
|
|
9
10
|
for (const field of fields) {
|
|
10
11
|
if (fieldHasSubFields(field) && !fieldIsArrayType(field)) {
|
|
@@ -12,13 +13,15 @@ export const upgradeDocumentFieldsRecursively = ({
|
|
|
12
13
|
found += upgradeDocumentFieldsRecursively({
|
|
13
14
|
data: data[field.name],
|
|
14
15
|
fields: field.fields,
|
|
15
|
-
found
|
|
16
|
+
found,
|
|
17
|
+
payload
|
|
16
18
|
});
|
|
17
19
|
} else {
|
|
18
20
|
found += upgradeDocumentFieldsRecursively({
|
|
19
21
|
data,
|
|
20
22
|
fields: field.fields,
|
|
21
|
-
found
|
|
23
|
+
found,
|
|
24
|
+
payload
|
|
22
25
|
});
|
|
23
26
|
}
|
|
24
27
|
} else if (field.type === 'tabs') {
|
|
@@ -26,30 +29,32 @@ export const upgradeDocumentFieldsRecursively = ({
|
|
|
26
29
|
found += upgradeDocumentFieldsRecursively({
|
|
27
30
|
data: tabHasName(tab) ? data[tab.name] : data,
|
|
28
31
|
fields: tab.fields,
|
|
29
|
-
found
|
|
32
|
+
found,
|
|
33
|
+
payload
|
|
30
34
|
});
|
|
31
35
|
});
|
|
32
36
|
} else if (Array.isArray(data[field.name])) {
|
|
33
37
|
if (field.type === 'blocks') {
|
|
34
|
-
data[field.name].forEach(
|
|
35
|
-
const
|
|
36
|
-
|
|
37
|
-
}) => slug === row?.blockType);
|
|
38
|
+
data[field.name].forEach(row => {
|
|
39
|
+
const blockTypeToMatch = row?.blockType;
|
|
40
|
+
const block = payload.blocks[blockTypeToMatch] ?? (field.blockReferences ?? field.blocks).find(block => typeof block !== 'string' && block.slug === blockTypeToMatch);
|
|
38
41
|
if (block) {
|
|
39
42
|
found += upgradeDocumentFieldsRecursively({
|
|
40
|
-
data:
|
|
43
|
+
data: row,
|
|
41
44
|
fields: block.fields,
|
|
42
|
-
found
|
|
45
|
+
found,
|
|
46
|
+
payload
|
|
43
47
|
});
|
|
44
48
|
}
|
|
45
49
|
});
|
|
46
50
|
}
|
|
47
51
|
if (field.type === 'array') {
|
|
48
|
-
data[field.name].forEach(
|
|
52
|
+
data[field.name].forEach(row => {
|
|
49
53
|
found += upgradeDocumentFieldsRecursively({
|
|
50
|
-
data:
|
|
54
|
+
data: row,
|
|
51
55
|
fields: field.fields,
|
|
52
|
-
found
|
|
56
|
+
found,
|
|
57
|
+
payload
|
|
53
58
|
});
|
|
54
59
|
});
|
|
55
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upgradeDocumentFieldsRecursively.js","names":["createHeadlessEditor","fieldAffectsData","fieldHasSubFields","fieldIsArrayType","tabHasName","getEnabledNodes","upgradeDocumentFieldsRecursively","data","fields","found","field","name","type","tabs","forEach","tab","Array","isArray","row","
|
|
1
|
+
{"version":3,"file":"upgradeDocumentFieldsRecursively.js","names":["createHeadlessEditor","fieldAffectsData","fieldHasSubFields","fieldIsArrayType","tabHasName","getEnabledNodes","upgradeDocumentFieldsRecursively","data","fields","found","payload","field","name","type","tabs","forEach","tab","Array","isArray","row","blockTypeToMatch","blockType","block","blocks","blockReferences","find","slug","editor","features","length","editorState","headlessEditor","nodes","editorConfig","update","setEditorState","parseEditorState","discrete","getEditorState","toJSON"],"sources":["../../../src/utilities/upgradeLexicalData/upgradeDocumentFieldsRecursively.ts"],"sourcesContent":["import type { SerializedEditorState } from 'lexical'\nimport type { Field, FlattenedBlock, Payload } from 'payload'\n\nimport { createHeadlessEditor } from '@lexical/headless'\nimport { fieldAffectsData, fieldHasSubFields, fieldIsArrayType, tabHasName } from 'payload/shared'\n\nimport type { LexicalRichTextAdapter } from '../../types.js'\n\nimport { getEnabledNodes } from '../../lexical/nodes/index.js'\n\ntype NestedRichTextFieldsArgs = {\n data: Record<string, unknown>\n\n fields: Field[]\n found: number\n payload: Payload\n}\n\nexport const upgradeDocumentFieldsRecursively = ({\n data,\n fields,\n found,\n payload,\n}: NestedRichTextFieldsArgs): number => {\n for (const field of fields) {\n if (fieldHasSubFields(field) && !fieldIsArrayType(field)) {\n if (fieldAffectsData(field) && typeof data[field.name] === 'object') {\n found += upgradeDocumentFieldsRecursively({\n data: data[field.name] as Record<string, unknown>,\n fields: field.fields,\n found,\n payload,\n })\n } else {\n found += upgradeDocumentFieldsRecursively({\n data,\n fields: field.fields,\n found,\n payload,\n })\n }\n } else if (field.type === 'tabs') {\n field.tabs.forEach((tab) => {\n found += upgradeDocumentFieldsRecursively({\n data: (tabHasName(tab) ? data[tab.name] : data) as Record<string, unknown>,\n fields: tab.fields,\n found,\n payload,\n })\n })\n } else if (Array.isArray(data[field.name])) {\n if (field.type === 'blocks') {\n ;(data[field.name] as Record<string, unknown>[]).forEach((row) => {\n const blockTypeToMatch: string = row?.blockType as string\n\n const block =\n payload.blocks[blockTypeToMatch] ??\n ((field.blockReferences ?? field.blocks).find(\n (block) => typeof block !== 'string' && block.slug === blockTypeToMatch,\n ) as FlattenedBlock | undefined)\n\n if (block) {\n found += upgradeDocumentFieldsRecursively({\n data: row,\n fields: block.fields,\n found,\n payload,\n })\n }\n })\n }\n\n if (field.type === 'array') {\n ;(data[field.name] as Record<string, unknown>[]).forEach((row) => {\n found += upgradeDocumentFieldsRecursively({\n data: row,\n fields: field.fields,\n found,\n payload,\n })\n })\n }\n }\n\n if (\n field.type === 'richText' &&\n data[field.name] &&\n !Array.isArray(data[field.name]) &&\n 'root' in (data[field.name] as Record<string, unknown>)\n ) {\n // Lexical richText\n const editor: LexicalRichTextAdapter = field.editor as LexicalRichTextAdapter\n if (editor && typeof editor === 'object') {\n if ('features' in editor && editor.features?.length) {\n // Load lexical editor into lexical, then save it immediately\n const editorState = data[field.name] as SerializedEditorState\n\n const headlessEditor = createHeadlessEditor({\n nodes: getEnabledNodes({\n editorConfig: editor.editorConfig,\n }),\n })\n headlessEditor.update(\n () => {\n headlessEditor.setEditorState(headlessEditor.parseEditorState(editorState))\n },\n { discrete: true },\n )\n\n // get editor state\n data[field.name] = headlessEditor.getEditorState().toJSON()\n\n found++\n }\n }\n }\n }\n\n return found\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/validate/hasText.js
CHANGED
|
@@ -8,7 +8,7 @@ export function hasText(value) {
|
|
|
8
8
|
hasOnlyEmptyParagraph = true;
|
|
9
9
|
} else if (paragraphNode?.children?.length === 1) {
|
|
10
10
|
const paragraphNodeChild = paragraphNode?.children[0];
|
|
11
|
-
if (paragraphNodeChild
|
|
11
|
+
if (paragraphNodeChild?.type === 'text') {
|
|
12
12
|
if (!paragraphNodeChild?.['text']?.length) {
|
|
13
13
|
hasOnlyEmptyParagraph = true;
|
|
14
14
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hasText.js","names":["hasText","value","hasChildren","root","children","length","hasOnlyEmptyParagraph","type","paragraphNode","paragraphNodeChild"],"sources":["../../src/validate/hasText.ts"],"sourcesContent":["import type {\n SerializedEditorState,\n SerializedLexicalNode,\n SerializedParagraphNode,\n SerializedTextNode,\n} from 'lexical'\n\nexport function hasText(\n value: null | SerializedEditorState<SerializedLexicalNode> | undefined,\n): boolean {\n const hasChildren = !!value?.root?.children?.length\n\n let hasOnlyEmptyParagraph = false\n if (value?.root?.children?.length === 1) {\n if (value?.root?.children[0]?.type === 'paragraph') {\n const paragraphNode = value?.root?.children[0] as SerializedParagraphNode\n\n if (!paragraphNode?.children || paragraphNode?.children?.length === 0) {\n hasOnlyEmptyParagraph = true\n } else if (paragraphNode?.children?.length === 1) {\n const paragraphNodeChild = paragraphNode?.children[0]\n if (paragraphNodeChild
|
|
1
|
+
{"version":3,"file":"hasText.js","names":["hasText","value","hasChildren","root","children","length","hasOnlyEmptyParagraph","type","paragraphNode","paragraphNodeChild"],"sources":["../../src/validate/hasText.ts"],"sourcesContent":["import type {\n SerializedEditorState,\n SerializedLexicalNode,\n SerializedParagraphNode,\n SerializedTextNode,\n} from 'lexical'\n\nexport function hasText(\n value: null | SerializedEditorState<SerializedLexicalNode> | undefined,\n): boolean {\n const hasChildren = !!value?.root?.children?.length\n\n let hasOnlyEmptyParagraph = false\n if (value?.root?.children?.length === 1) {\n if (value?.root?.children[0]?.type === 'paragraph') {\n const paragraphNode = value?.root?.children[0] as SerializedParagraphNode\n\n if (!paragraphNode?.children || paragraphNode?.children?.length === 0) {\n hasOnlyEmptyParagraph = true\n } else if (paragraphNode?.children?.length === 1) {\n const paragraphNodeChild = paragraphNode?.children[0]\n if (paragraphNodeChild?.type === 'text') {\n if (!(paragraphNodeChild as SerializedTextNode | undefined)?.['text']?.length) {\n hasOnlyEmptyParagraph = true\n }\n }\n }\n }\n }\n\n if (!hasChildren || hasOnlyEmptyParagraph) {\n return false\n } else {\n return true\n }\n}\n"],"mappings":"AAOA,OAAO,SAASA,QACdC,KAAsE;EAEtE,MAAMC,WAAA,GAAc,CAAC,CAACD,KAAA,EAAOE,IAAA,EAAMC,QAAA,EAAUC,MAAA;EAE7C,IAAIC,qBAAA,GAAwB;EAC5B,IAAIL,KAAA,EAAOE,IAAA,EAAMC,QAAA,EAAUC,MAAA,KAAW,GAAG;IACvC,IAAIJ,KAAA,EAAOE,IAAA,EAAMC,QAAQ,CAAC,EAAE,EAAEG,IAAA,KAAS,aAAa;MAClD,MAAMC,aAAA,GAAgBP,KAAA,EAAOE,IAAA,EAAMC,QAAQ,CAAC,EAAE;MAE9C,IAAI,CAACI,aAAA,EAAeJ,QAAA,IAAYI,aAAA,EAAeJ,QAAA,EAAUC,MAAA,KAAW,GAAG;QACrEC,qBAAA,GAAwB;MAC1B,OAAO,IAAIE,aAAA,EAAeJ,QAAA,EAAUC,MAAA,KAAW,GAAG;QAChD,MAAMI,kBAAA,GAAqBD,aAAA,EAAeJ,QAAQ,CAAC,EAAE;QACrD,IAAIK,kBAAA,EAAoBF,IAAA,KAAS,QAAQ;UACvC,IAAI,CAAEE,kBAAA,GAAwD,OAAO,EAAEJ,MAAA,EAAQ;YAC7EC,qBAAA,GAAwB;UAC1B;QACF;MACF;IACF;EACF;EAEA,IAAI,CAACJ,WAAA,IAAeI,qBAAA,EAAuB;IACzC,OAAO;EACT,OAAO;IACL,OAAO;EACT;AACF","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/richtext-lexical",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.24.0-canary.05013b2",
|
|
4
4
|
"description": "The officially supported Lexical richtext adapter for Payload",
|
|
5
5
|
"homepage": "https://payloadcms.com",
|
|
6
6
|
"repository": {
|
|
@@ -339,6 +339,7 @@
|
|
|
339
339
|
"@lexical/rich-text": "0.21.0",
|
|
340
340
|
"@lexical/selection": "0.21.0",
|
|
341
341
|
"@lexical/utils": "0.21.0",
|
|
342
|
+
"@lexical/table": "0.21.0",
|
|
342
343
|
"@types/uuid": "10.0.0",
|
|
343
344
|
"acorn": "8.12.1",
|
|
344
345
|
"bson-objectid": "2.0.4",
|
|
@@ -352,8 +353,8 @@
|
|
|
352
353
|
"react-error-boundary": "4.1.2",
|
|
353
354
|
"ts-essentials": "10.0.3",
|
|
354
355
|
"uuid": "10.0.0",
|
|
355
|
-
"@payloadcms/translations": "3.
|
|
356
|
-
"@payloadcms/ui": "3.
|
|
356
|
+
"@payloadcms/translations": "3.24.0-canary.05013b2",
|
|
357
|
+
"@payloadcms/ui": "3.24.0-canary.05013b2"
|
|
357
358
|
},
|
|
358
359
|
"devDependencies": {
|
|
359
360
|
"@babel/cli": "7.26.4",
|
|
@@ -373,27 +374,16 @@
|
|
|
373
374
|
"esbuild-sass-plugin": "3.3.1",
|
|
374
375
|
"eslint-plugin-react-compiler": "19.0.0-beta-714736e-20250131",
|
|
375
376
|
"swc-plugin-transform-remove-imports": "3.1.0",
|
|
376
|
-
"
|
|
377
|
-
"
|
|
377
|
+
"@payloadcms/eslint-config": "3.9.0",
|
|
378
|
+
"payload": "3.24.0-canary.05013b2"
|
|
378
379
|
},
|
|
379
380
|
"peerDependencies": {
|
|
380
381
|
"@faceless-ui/modal": "3.0.0-beta.2",
|
|
381
382
|
"@faceless-ui/scroll-info": "2.0.0",
|
|
382
|
-
"@lexical/headless": "0.21.0",
|
|
383
|
-
"@lexical/html": "0.21.0",
|
|
384
|
-
"@lexical/link": "0.21.0",
|
|
385
|
-
"@lexical/list": "0.21.0",
|
|
386
|
-
"@lexical/mark": "0.21.0",
|
|
387
|
-
"@lexical/react": "0.21.0",
|
|
388
|
-
"@lexical/rich-text": "0.21.0",
|
|
389
|
-
"@lexical/selection": "0.21.0",
|
|
390
|
-
"@lexical/table": "0.21.0",
|
|
391
|
-
"@lexical/utils": "0.21.0",
|
|
392
|
-
"lexical": "0.21.0",
|
|
393
383
|
"react": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
|
|
394
384
|
"react-dom": "^19.0.0 || ^19.0.0-rc-65a56d0e-20241020",
|
|
395
|
-
"@payloadcms/next": "3.
|
|
396
|
-
"payload": "3.
|
|
385
|
+
"@payloadcms/next": "3.24.0-canary.05013b2",
|
|
386
|
+
"payload": "3.24.0-canary.05013b2"
|
|
397
387
|
},
|
|
398
388
|
"engines": {
|
|
399
389
|
"node": "^18.20.2 || >=20.9.0"
|