@payloadcms/richtext-lexical 4.0.0-internal.d1cc1d3 → 4.0.0-internal.d21c039

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.
Files changed (177) hide show
  1. package/dist/exports/client/Field-QKAL7KMC.js +2 -0
  2. package/dist/exports/client/Field-QKAL7KMC.js.map +7 -0
  3. package/dist/exports/client/bundled.css +1 -1
  4. package/dist/exports/client/chunk-LN6VX25I.js +2 -0
  5. package/dist/exports/client/{chunk-SSMQFWCQ.js.map → chunk-LN6VX25I.js.map} +4 -4
  6. package/dist/exports/client/index.js +26 -26
  7. package/dist/exports/client/index.js.map +4 -4
  8. package/dist/features/converters/lexicalToHtml/async/converters/heading.js +1 -1
  9. package/dist/features/converters/lexicalToHtml/async/converters/heading.js.map +1 -1
  10. package/dist/features/converters/lexicalToHtml/async/converters/list.d.ts.map +1 -1
  11. package/dist/features/converters/lexicalToHtml/async/converters/list.js +4 -3
  12. package/dist/features/converters/lexicalToHtml/async/converters/list.js.map +1 -1
  13. package/dist/features/converters/lexicalToHtml/shared/findConverterForNode.d.ts.map +1 -1
  14. package/dist/features/converters/lexicalToHtml/shared/findConverterForNode.js +3 -2
  15. package/dist/features/converters/lexicalToHtml/shared/findConverterForNode.js.map +1 -1
  16. package/dist/features/converters/lexicalToHtml/sync/converters/heading.js +1 -1
  17. package/dist/features/converters/lexicalToHtml/sync/converters/heading.js.map +1 -1
  18. package/dist/features/converters/lexicalToHtml/sync/converters/list.d.ts.map +1 -1
  19. package/dist/features/converters/lexicalToHtml/sync/converters/list.js +4 -3
  20. package/dist/features/converters/lexicalToHtml/sync/converters/list.js.map +1 -1
  21. package/dist/features/converters/lexicalToJSX/converter/converters/heading.d.ts.map +1 -1
  22. package/dist/features/converters/lexicalToJSX/converter/converters/heading.js +2 -1
  23. package/dist/features/converters/lexicalToJSX/converter/converters/heading.js.map +1 -1
  24. package/dist/features/converters/lexicalToJSX/converter/converters/list.d.ts.map +1 -1
  25. package/dist/features/converters/lexicalToJSX/converter/converters/list.js +2 -1
  26. package/dist/features/converters/lexicalToJSX/converter/converters/list.js.map +1 -1
  27. package/dist/features/heading/constants.d.ts +2 -0
  28. package/dist/features/heading/constants.d.ts.map +1 -0
  29. package/dist/features/heading/constants.js +2 -0
  30. package/dist/features/heading/constants.js.map +1 -0
  31. package/dist/features/heading/server/index.d.ts.map +1 -1
  32. package/dist/features/heading/server/index.js +5 -1
  33. package/dist/features/heading/server/index.js.map +1 -1
  34. package/dist/features/heading/server/validate.d.ts +6 -0
  35. package/dist/features/heading/server/validate.d.ts.map +1 -0
  36. package/dist/features/heading/server/validate.js +15 -0
  37. package/dist/features/heading/server/validate.js.map +1 -0
  38. package/dist/features/link/server/baseFields.d.ts.map +1 -1
  39. package/dist/features/link/server/baseFields.js +4 -5
  40. package/dist/features/link/server/baseFields.js.map +1 -1
  41. package/dist/features/lists/checklist/server/index.d.ts.map +1 -1
  42. package/dist/features/lists/checklist/server/index.js +5 -2
  43. package/dist/features/lists/checklist/server/index.js.map +1 -1
  44. package/dist/features/lists/orderedList/server/index.d.ts.map +1 -1
  45. package/dist/features/lists/orderedList/server/index.js +5 -2
  46. package/dist/features/lists/orderedList/server/index.js.map +1 -1
  47. package/dist/features/lists/shared/constants.d.ts +2 -0
  48. package/dist/features/lists/shared/constants.d.ts.map +1 -0
  49. package/dist/features/lists/shared/constants.js +2 -0
  50. package/dist/features/lists/shared/constants.js.map +1 -0
  51. package/dist/features/lists/shared/validate.d.ts +5 -0
  52. package/dist/features/lists/shared/validate.d.ts.map +1 -0
  53. package/dist/features/lists/shared/validate.js +15 -0
  54. package/dist/features/lists/shared/validate.js.map +1 -0
  55. package/dist/features/lists/unorderedList/server/index.d.ts.map +1 -1
  56. package/dist/features/lists/unorderedList/server/index.js +5 -2
  57. package/dist/features/lists/unorderedList/server/index.js.map +1 -1
  58. package/dist/features/relationship/client/index.d.ts +2 -2
  59. package/dist/features/relationship/client/index.d.ts.map +1 -1
  60. package/dist/features/relationship/client/index.js.map +1 -1
  61. package/dist/features/relationship/client/plugins/index.d.ts +2 -2
  62. package/dist/features/relationship/client/plugins/index.d.ts.map +1 -1
  63. package/dist/features/relationship/client/plugins/index.js +27 -31
  64. package/dist/features/relationship/client/plugins/index.js.map +1 -1
  65. package/dist/features/relationship/client/utils/useEnabledRelationships.d.ts +2 -4
  66. package/dist/features/relationship/client/utils/useEnabledRelationships.d.ts.map +1 -1
  67. package/dist/features/relationship/client/utils/useEnabledRelationships.js +53 -20
  68. package/dist/features/relationship/client/utils/useEnabledRelationships.js.map +1 -1
  69. package/dist/features/relationship/server/graphQLPopulationPromise.d.ts +2 -2
  70. package/dist/features/relationship/server/graphQLPopulationPromise.d.ts.map +1 -1
  71. package/dist/features/relationship/server/graphQLPopulationPromise.js +2 -2
  72. package/dist/features/relationship/server/graphQLPopulationPromise.js.map +1 -1
  73. package/dist/features/relationship/server/index.d.ts +8 -1
  74. package/dist/features/relationship/server/index.d.ts.map +1 -1
  75. package/dist/features/relationship/server/index.js +28 -11
  76. package/dist/features/relationship/server/index.js.map +1 -1
  77. package/dist/features/relationship/server/schema.d.ts +2 -2
  78. package/dist/features/relationship/server/schema.d.ts.map +1 -1
  79. package/dist/features/relationship/server/schema.js +5 -10
  80. package/dist/features/relationship/server/schema.js.map +1 -1
  81. package/dist/features/relationship/shared/filterEnabledRelationshipCollections.d.ts +1 -6
  82. package/dist/features/relationship/shared/filterEnabledRelationshipCollections.d.ts.map +1 -1
  83. package/dist/features/relationship/shared/filterEnabledRelationshipCollections.js +3 -8
  84. package/dist/features/relationship/shared/filterEnabledRelationshipCollections.js.map +1 -1
  85. package/dist/features/table/client/plugins/TableActionMenuPlugin/computeSelectionCount.d.ts +8 -0
  86. package/dist/features/table/client/plugins/TableActionMenuPlugin/computeSelectionCount.d.ts.map +1 -0
  87. package/dist/features/table/client/plugins/TableActionMenuPlugin/computeSelectionCount.js +19 -0
  88. package/dist/features/table/client/plugins/TableActionMenuPlugin/computeSelectionCount.js.map +1 -0
  89. package/dist/features/table/client/plugins/TableActionMenuPlugin/index.d.ts.map +1 -1
  90. package/dist/features/table/client/plugins/TableActionMenuPlugin/index.js +16 -43
  91. package/dist/features/table/client/plugins/TableActionMenuPlugin/index.js.map +1 -1
  92. package/dist/features/toolbars/fixed/client/Toolbar/horizontalWheelScroll.d.ts +8 -0
  93. package/dist/features/toolbars/fixed/client/Toolbar/horizontalWheelScroll.d.ts.map +1 -0
  94. package/dist/features/toolbars/fixed/client/Toolbar/horizontalWheelScroll.js +80 -0
  95. package/dist/features/toolbars/fixed/client/Toolbar/horizontalWheelScroll.js.map +1 -0
  96. package/dist/features/toolbars/fixed/client/Toolbar/index.css +79 -5
  97. package/dist/features/toolbars/fixed/client/Toolbar/index.d.ts.map +1 -1
  98. package/dist/features/toolbars/fixed/client/Toolbar/index.js +4 -1
  99. package/dist/features/toolbars/fixed/client/Toolbar/index.js.map +1 -1
  100. package/dist/features/toolbars/shared/ToolbarDropdown/index.css +12 -11
  101. package/dist/features/upload/client/index.d.ts +3 -2
  102. package/dist/features/upload/client/index.d.ts.map +1 -1
  103. package/dist/features/upload/client/index.js.map +1 -1
  104. package/dist/features/upload/client/plugin/index.d.ts.map +1 -1
  105. package/dist/features/upload/client/plugin/index.js +47 -52
  106. package/dist/features/upload/client/plugin/index.js.map +1 -1
  107. package/dist/features/upload/server/graphQLPopulationPromise.d.ts +2 -2
  108. package/dist/features/upload/server/graphQLPopulationPromise.d.ts.map +1 -1
  109. package/dist/features/upload/server/graphQLPopulationPromise.js +1 -1
  110. package/dist/features/upload/server/graphQLPopulationPromise.js.map +1 -1
  111. package/dist/features/upload/server/index.d.ts +6 -2
  112. package/dist/features/upload/server/index.d.ts.map +1 -1
  113. package/dist/features/upload/server/index.js +18 -14
  114. package/dist/features/upload/server/index.js.map +1 -1
  115. package/dist/features/upload/server/schema.d.ts +2 -2
  116. package/dist/features/upload/server/schema.d.ts.map +1 -1
  117. package/dist/features/upload/server/schema.js +4 -8
  118. package/dist/features/upload/server/schema.js.map +1 -1
  119. package/dist/features/upload/server/validate.d.ts +2 -2
  120. package/dist/features/upload/server/validate.d.ts.map +1 -1
  121. package/dist/features/upload/server/validate.js +3 -0
  122. package/dist/features/upload/server/validate.js.map +1 -1
  123. package/dist/field/Diff/converters/listitem/index.d.ts.map +1 -1
  124. package/dist/field/Diff/converters/listitem/index.js +2 -1
  125. package/dist/field/Diff/converters/listitem/index.js.map +1 -1
  126. package/dist/field/Diff/index.css +19 -22
  127. package/dist/field/Diff/index.d.ts.map +1 -1
  128. package/dist/field/Diff/index.js +1 -0
  129. package/dist/field/Diff/index.js.map +1 -1
  130. package/dist/field/RenderLexical/index.d.ts +3 -1
  131. package/dist/field/RenderLexical/index.d.ts.map +1 -1
  132. package/dist/field/RenderLexical/index.js +23 -23
  133. package/dist/field/RenderLexical/index.js.map +1 -1
  134. package/dist/field/bundled.css +1 -1
  135. package/dist/field/index.css +14 -10
  136. package/dist/i18n.d.ts.map +1 -1
  137. package/dist/i18n.js +68 -0
  138. package/dist/i18n.js.map +1 -1
  139. package/dist/index.d.ts +1 -1
  140. package/dist/index.js +1 -1
  141. package/dist/index.js.map +1 -1
  142. package/dist/lexical/LexicalEditor.css +2 -2
  143. package/dist/lexical/LexicalEditor.js.map +1 -1
  144. package/dist/lexical/plugins/InsertParagraphAtEnd/index.css +16 -23
  145. package/dist/lexical/plugins/InsertParagraphAtEnd/index.d.ts.map +1 -1
  146. package/dist/lexical/plugins/InsertParagraphAtEnd/index.js +27 -14
  147. package/dist/lexical/plugins/InsertParagraphAtEnd/index.js.map +1 -1
  148. package/dist/lexical/theme/EditorTheme.css +25 -37
  149. package/dist/lexical/ui/ContentEditable.css +1 -0
  150. package/dist/lexical/ui/icons/H3/index.d.ts.map +1 -1
  151. package/dist/lexical/ui/icons/H3/index.js +13 -6
  152. package/dist/lexical/ui/icons/H3/index.js.map +1 -1
  153. package/dist/lexical/ui/icons/H4/index.d.ts.map +1 -1
  154. package/dist/lexical/ui/icons/H4/index.js +13 -6
  155. package/dist/lexical/ui/icons/H4/index.js.map +1 -1
  156. package/dist/lexical/ui/icons/H5/index.d.ts.map +1 -1
  157. package/dist/lexical/ui/icons/H5/index.js +13 -6
  158. package/dist/lexical/ui/icons/H5/index.js.map +1 -1
  159. package/dist/lexical/ui/icons/H6/index.d.ts.map +1 -1
  160. package/dist/lexical/ui/icons/H6/index.js +13 -6
  161. package/dist/lexical/ui/icons/H6/index.js.map +1 -1
  162. package/package.json +22 -22
  163. package/dist/dependencyChecker.spec.js +0 -16
  164. package/dist/dependencyChecker.spec.js.map +0 -1
  165. package/dist/exports/client/Field-IZKDIUJY.js +0 -2
  166. package/dist/exports/client/Field-IZKDIUJY.js.map +0 -7
  167. package/dist/exports/client/chunk-SSMQFWCQ.js +0 -2
  168. package/dist/features/converters/lexicalToPlaintext/convertLexicalToPlaintext.spec.js +0 -180
  169. package/dist/features/converters/lexicalToPlaintext/convertLexicalToPlaintext.spec.js.map +0 -1
  170. package/dist/features/link/markdownTransformer.spec.js +0 -195
  171. package/dist/features/link/markdownTransformer.spec.js.map +0 -1
  172. package/dist/lexical/utils/markdown/convertFromMarkdownString.spec.js +0 -88
  173. package/dist/lexical/utils/markdown/convertFromMarkdownString.spec.js.map +0 -1
  174. package/dist/lexical/utils/url.spec.js +0 -114
  175. package/dist/lexical/utils/url.spec.js.map +0 -1
  176. package/dist/utilities/jsx/jsx.spec.js +0 -178
  177. package/dist/utilities/jsx/jsx.spec.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import type { PopulationPromise } from '../../typesServer.js';
2
- import type { UploadFeatureProps } from './index.js';
2
+ import type { UploadFeatureServerProps } from './index.js';
3
3
  import type { SerializedUploadNode } from './schema.js';
4
- export declare const uploadPopulationPromiseHOC: (props?: UploadFeatureProps) => PopulationPromise<SerializedUploadNode>;
4
+ export declare const uploadPopulationPromiseHOC: (props: UploadFeatureServerProps) => PopulationPromise<SerializedUploadNode>;
5
5
  //# sourceMappingURL=graphQLPopulationPromise.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"graphQLPopulationPromise.d.ts","sourceRoot":"","sources":["../../../../src/features/upload/server/graphQLPopulationPromise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAKvD,eAAO,MAAM,0BAA0B,WAC7B,kBAAkB,KACzB,iBAAiB,CAAC,oBAAoB,CAwExC,CAAA"}
1
+ {"version":3,"file":"graphQLPopulationPromise.d.ts","sourceRoot":"","sources":["../../../../src/features/upload/server/graphQLPopulationPromise.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAC7D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAKvD,eAAO,MAAM,0BAA0B,UAC9B,wBAAwB,KAC9B,iBAAiB,CAAC,oBAAoB,CAwExC,CAAA"}
@@ -18,7 +18,7 @@ export const uploadPopulationPromiseHOC = props => {
18
18
  req,
19
19
  showHiddenFields
20
20
  }) => {
21
- if (node?.value) {
21
+ if (node?.value && props.enabledCollectionSlugs.includes(node.relationTo)) {
22
22
  const collection = req.payload.collections[node?.relationTo];
23
23
  if (collection) {
24
24
  // @ts-expect-error
@@ -1 +1 @@
1
- {"version":3,"file":"graphQLPopulationPromise.js","names":["populate","recursivelyPopulateFieldsForGraphQL","uploadPopulationPromiseHOC","props","context","currentDepth","depth","draft","editorPopulationPromises","field","fieldPromises","findMany","flattenLocales","node","overrideAccess","parentIsLocalized","populationPromises","req","showHiddenFields","value","collection","payload","collections","relationTo","id","populateDepth","maxDepth","undefined","push","collectionSlug","config","slug","data","key","collectionFieldSchema","fields","Array","isArray","length","localized","siblingDoc"],"sources":["../../../../src/features/upload/server/graphQLPopulationPromise.ts"],"sourcesContent":["import type { PopulationPromise } from '../../typesServer.js'\nimport type { UploadFeatureProps } from './index.js'\nimport type { SerializedUploadNode } from './schema.js'\n\nimport { populate } from '../../../populateGraphQL/populate.js'\nimport { recursivelyPopulateFieldsForGraphQL } from '../../../populateGraphQL/recursivelyPopulateFieldsForGraphQL.js'\n\nexport const uploadPopulationPromiseHOC = (\n props?: UploadFeatureProps,\n): PopulationPromise<SerializedUploadNode> => {\n return ({\n context,\n currentDepth,\n depth,\n draft,\n editorPopulationPromises,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n node,\n overrideAccess,\n parentIsLocalized,\n populationPromises,\n req,\n showHiddenFields,\n }) => {\n if (node?.value) {\n const collection = req.payload.collections[node?.relationTo]\n\n if (collection) {\n // @ts-expect-error\n const id = node?.value?.id || node?.value // for backwards-compatibility\n\n const populateDepth =\n props?.maxDepth !== undefined && props?.maxDepth < depth ? props?.maxDepth : depth\n\n populationPromises.push(\n populate({\n id,\n collectionSlug: collection.config.slug,\n currentDepth,\n data: node,\n depth: populateDepth,\n draft,\n key: 'value',\n overrideAccess,\n req,\n showHiddenFields,\n }),\n )\n\n const collectionFieldSchema = props?.collections?.[node?.relationTo]?.fields\n\n if (Array.isArray(collectionFieldSchema)) {\n if (!collectionFieldSchema?.length) {\n return\n }\n recursivelyPopulateFieldsForGraphQL({\n context,\n currentDepth,\n data: node.fields || {},\n depth,\n parentIsLocalized: parentIsLocalized || field.localized || false,\n\n draft,\n editorPopulationPromises,\n fieldPromises,\n fields: collectionFieldSchema,\n findMany,\n flattenLocales,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc: node.fields || {},\n })\n }\n }\n }\n }\n}\n"],"mappings":"AAIA,SAASA,QAAQ,QAAQ;AACzB,SAASC,mCAAmC,QAAQ;AAEpD,OAAO,MAAMC,0BAAA,GACXC,KAAA;EAEA,OAAO,CAAC;IACNC,OAAO;IACPC,YAAY;IACZC,KAAK;IACLC,KAAK;IACLC,wBAAwB;IACxBC,KAAK;IACLC,aAAa;IACbC,QAAQ;IACRC,cAAc;IACdC,IAAI;IACJC,cAAc;IACdC,iBAAiB;IACjBC,kBAAkB;IAClBC,GAAG;IACHC;EAAgB,CACjB;IACC,IAAIL,IAAA,EAAMM,KAAA,EAAO;MACf,MAAMC,UAAA,GAAaH,GAAA,CAAII,OAAO,CAACC,WAAW,CAACT,IAAA,EAAMU,UAAA,CAAW;MAE5D,IAAIH,UAAA,EAAY;QACd;QACA,MAAMI,EAAA,GAAKX,IAAA,EAAMM,KAAA,EAAOK,EAAA,IAAMX,IAAA,EAAMM,KAAA,CAAM;AAAA;QAE1C,MAAMM,aAAA,GACJtB,KAAA,EAAOuB,QAAA,KAAaC,SAAA,IAAaxB,KAAA,EAAOuB,QAAA,GAAWpB,KAAA,GAAQH,KAAA,EAAOuB,QAAA,GAAWpB,KAAA;QAE/EU,kBAAA,CAAmBY,IAAI,CACrB5B,QAAA,CAAS;UACPwB,EAAA;UACAK,cAAA,EAAgBT,UAAA,CAAWU,MAAM,CAACC,IAAI;UACtC1B,YAAA;UACA2B,IAAA,EAAMnB,IAAA;UACNP,KAAA,EAAOmB,aAAA;UACPlB,KAAA;UACA0B,GAAA,EAAK;UACLnB,cAAA;UACAG,GAAA;UACAC;QACF;QAGF,MAAMgB,qBAAA,GAAwB/B,KAAA,EAAOmB,WAAA,GAAcT,IAAA,EAAMU,UAAA,CAAW,EAAEY,MAAA;QAEtE,IAAIC,KAAA,CAAMC,OAAO,CAACH,qBAAA,GAAwB;UACxC,IAAI,CAACA,qBAAA,EAAuBI,MAAA,EAAQ;YAClC;UACF;UACArC,mCAAA,CAAoC;YAClCG,OAAA;YACAC,YAAA;YACA2B,IAAA,EAAMnB,IAAA,CAAKsB,MAAM,IAAI,CAAC;YACtB7B,KAAA;YACAS,iBAAA,EAAmBA,iBAAA,IAAqBN,KAAA,CAAM8B,SAAS,IAAI;YAE3DhC,KAAA;YACAC,wBAAA;YACAE,aAAA;YACAyB,MAAA,EAAQD,qBAAA;YACRvB,QAAA;YACAC,cAAA;YACAE,cAAA;YACAE,kBAAA;YACAC,GAAA;YACAC,gBAAA;YACAsB,UAAA,EAAY3B,IAAA,CAAKsB,MAAM,IAAI,CAAC;UAC9B;QACF;MACF;IACF;EACF;AACF","ignoreList":[]}
1
+ {"version":3,"file":"graphQLPopulationPromise.js","names":["populate","recursivelyPopulateFieldsForGraphQL","uploadPopulationPromiseHOC","props","context","currentDepth","depth","draft","editorPopulationPromises","field","fieldPromises","findMany","flattenLocales","node","overrideAccess","parentIsLocalized","populationPromises","req","showHiddenFields","value","enabledCollectionSlugs","includes","relationTo","collection","payload","collections","id","populateDepth","maxDepth","undefined","push","collectionSlug","config","slug","data","key","collectionFieldSchema","fields","Array","isArray","length","localized","siblingDoc"],"sources":["../../../../src/features/upload/server/graphQLPopulationPromise.ts"],"sourcesContent":["import type { PopulationPromise } from '../../typesServer.js'\nimport type { UploadFeatureServerProps } from './index.js'\nimport type { SerializedUploadNode } from './schema.js'\n\nimport { populate } from '../../../populateGraphQL/populate.js'\nimport { recursivelyPopulateFieldsForGraphQL } from '../../../populateGraphQL/recursivelyPopulateFieldsForGraphQL.js'\n\nexport const uploadPopulationPromiseHOC = (\n props: UploadFeatureServerProps,\n): PopulationPromise<SerializedUploadNode> => {\n return ({\n context,\n currentDepth,\n depth,\n draft,\n editorPopulationPromises,\n field,\n fieldPromises,\n findMany,\n flattenLocales,\n node,\n overrideAccess,\n parentIsLocalized,\n populationPromises,\n req,\n showHiddenFields,\n }) => {\n if (node?.value && props.enabledCollectionSlugs.includes(node.relationTo)) {\n const collection = req.payload.collections[node?.relationTo]\n\n if (collection) {\n // @ts-expect-error\n const id = node?.value?.id || node?.value // for backwards-compatibility\n\n const populateDepth =\n props?.maxDepth !== undefined && props?.maxDepth < depth ? props?.maxDepth : depth\n\n populationPromises.push(\n populate({\n id,\n collectionSlug: collection.config.slug,\n currentDepth,\n data: node,\n depth: populateDepth,\n draft,\n key: 'value',\n overrideAccess,\n req,\n showHiddenFields,\n }),\n )\n\n const collectionFieldSchema = props?.collections?.[node?.relationTo]?.fields\n\n if (Array.isArray(collectionFieldSchema)) {\n if (!collectionFieldSchema?.length) {\n return\n }\n recursivelyPopulateFieldsForGraphQL({\n context,\n currentDepth,\n data: node.fields || {},\n depth,\n parentIsLocalized: parentIsLocalized || field.localized || false,\n\n draft,\n editorPopulationPromises,\n fieldPromises,\n fields: collectionFieldSchema,\n findMany,\n flattenLocales,\n overrideAccess,\n populationPromises,\n req,\n showHiddenFields,\n siblingDoc: node.fields || {},\n })\n }\n }\n }\n }\n}\n"],"mappings":"AAIA,SAASA,QAAQ,QAAQ;AACzB,SAASC,mCAAmC,QAAQ;AAEpD,OAAO,MAAMC,0BAAA,GACXC,KAAA;EAEA,OAAO,CAAC;IACNC,OAAO;IACPC,YAAY;IACZC,KAAK;IACLC,KAAK;IACLC,wBAAwB;IACxBC,KAAK;IACLC,aAAa;IACbC,QAAQ;IACRC,cAAc;IACdC,IAAI;IACJC,cAAc;IACdC,iBAAiB;IACjBC,kBAAkB;IAClBC,GAAG;IACHC;EAAgB,CACjB;IACC,IAAIL,IAAA,EAAMM,KAAA,IAAShB,KAAA,CAAMiB,sBAAsB,CAACC,QAAQ,CAACR,IAAA,CAAKS,UAAU,GAAG;MACzE,MAAMC,UAAA,GAAaN,GAAA,CAAIO,OAAO,CAACC,WAAW,CAACZ,IAAA,EAAMS,UAAA,CAAW;MAE5D,IAAIC,UAAA,EAAY;QACd;QACA,MAAMG,EAAA,GAAKb,IAAA,EAAMM,KAAA,EAAOO,EAAA,IAAMb,IAAA,EAAMM,KAAA,CAAM;AAAA;QAE1C,MAAMQ,aAAA,GACJxB,KAAA,EAAOyB,QAAA,KAAaC,SAAA,IAAa1B,KAAA,EAAOyB,QAAA,GAAWtB,KAAA,GAAQH,KAAA,EAAOyB,QAAA,GAAWtB,KAAA;QAE/EU,kBAAA,CAAmBc,IAAI,CACrB9B,QAAA,CAAS;UACP0B,EAAA;UACAK,cAAA,EAAgBR,UAAA,CAAWS,MAAM,CAACC,IAAI;UACtC5B,YAAA;UACA6B,IAAA,EAAMrB,IAAA;UACNP,KAAA,EAAOqB,aAAA;UACPpB,KAAA;UACA4B,GAAA,EAAK;UACLrB,cAAA;UACAG,GAAA;UACAC;QACF;QAGF,MAAMkB,qBAAA,GAAwBjC,KAAA,EAAOsB,WAAA,GAAcZ,IAAA,EAAMS,UAAA,CAAW,EAAEe,MAAA;QAEtE,IAAIC,KAAA,CAAMC,OAAO,CAACH,qBAAA,GAAwB;UACxC,IAAI,CAACA,qBAAA,EAAuBI,MAAA,EAAQ;YAClC;UACF;UACAvC,mCAAA,CAAoC;YAClCG,OAAA;YACAC,YAAA;YACA6B,IAAA,EAAMrB,IAAA,CAAKwB,MAAM,IAAI,CAAC;YACtB/B,KAAA;YACAS,iBAAA,EAAmBA,iBAAA,IAAqBN,KAAA,CAAMgC,SAAS,IAAI;YAE3DlC,KAAA;YACAC,wBAAA;YACAE,aAAA;YACA2B,MAAA,EAAQD,qBAAA;YACRzB,QAAA;YACAC,cAAA;YACAE,cAAA;YACAE,kBAAA;YACAC,GAAA;YACAC,gBAAA;YACAwB,UAAA,EAAY7B,IAAA,CAAKwB,MAAM,IAAI,CAAC;UAC9B;QACF;MACF;IACF;EACF;AACF","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import type { Field, UploadCollectionSlug } from 'payload';
1
+ import type { CollectionSlug, Field, UploadCollectionSlug } from 'payload';
2
2
  import type { UploadFeaturePropsClient } from '../client/index.js';
3
3
  export type { Internal_UploadData, SerializedUploadNode, UploadData, UploadDataImproved, } from './schema.js';
4
4
  export type ExclusiveUploadFeatureProps = {
@@ -30,5 +30,9 @@ export type UploadFeatureProps = {
30
30
  */
31
31
  maxDepth?: number;
32
32
  } & ExclusiveUploadFeatureProps;
33
- export declare const UploadFeature: import("../../typesServer.js").FeatureProviderProviderServer<UploadFeatureProps, UploadFeatureProps, UploadFeaturePropsClient>;
33
+ export type UploadFeatureServerProps = {
34
+ /** Collection policy resolved during feature initialization. */
35
+ enabledCollectionSlugs: CollectionSlug[];
36
+ } & UploadFeatureProps;
37
+ export declare const UploadFeature: import("../../typesServer.js").FeatureProviderProviderServer<UploadFeatureProps, UploadFeatureServerProps, UploadFeaturePropsClient>;
34
38
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/upload/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,KAAK,EAAkB,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAIlF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAYlE,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,UAAU,EACV,kBAAkB,GACnB,MAAM,aAAa,CAAA;AAEpB,MAAM,MAAM,2BAA2B,GACnC;IACE;;;QAGI;IACJ,mBAAmB,CAAC,EAAE,oBAAoB,EAAE,CAAA;IAG5C,kBAAkB,CAAC,EAAE,KAAK,CAAA;CAC3B,GACD;IAEE,mBAAmB,CAAC,EAAE,KAAK,CAAA;IAE3B;;;QAGI;IACJ,kBAAkB,CAAC,EAAE,oBAAoB,EAAE,CAAA;CAC5C,CAAA;AAEL,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,CAAC,EAAE;QACZ,CAAC,UAAU,EAAE,oBAAoB,GAAG;YAClC,MAAM,EAAE,KAAK,EAAE,CAAA;SAChB,CAAA;KACF,CAAA;IACD;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,GAAG,2BAA2B,CAAA;AAE/B,eAAO,MAAM,aAAa,gIA0JxB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/features/upload/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAU,KAAK,EAAkB,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAIlG,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAA;AAalE,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,UAAU,EACV,kBAAkB,GACnB,MAAM,aAAa,CAAA;AAEpB,MAAM,MAAM,2BAA2B,GACnC;IACE;;;QAGI;IACJ,mBAAmB,CAAC,EAAE,oBAAoB,EAAE,CAAA;IAG5C,kBAAkB,CAAC,EAAE,KAAK,CAAA;CAC3B,GACD;IAEE,mBAAmB,CAAC,EAAE,KAAK,CAAA;IAE3B;;;QAGI;IACJ,kBAAkB,CAAC,EAAE,oBAAoB,EAAE,CAAA;CAC5C,CAAA;AAEL,MAAM,MAAM,kBAAkB,GAAG;IAC/B,WAAW,CAAC,EAAE;QACZ,CAAC,UAAU,EAAE,oBAAoB,GAAG;YAClC,MAAM,EAAE,KAAK,EAAE,CAAA;SAChB,CAAA;KACF,CAAA;IACD;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,GAAG,2BAA2B,CAAA;AAE/B,MAAM,MAAM,wBAAwB,GAAG;IACrC,gEAAgE;IAChE,sBAAsB,EAAE,cAAc,EAAE,CAAA;CACzC,GAAG,kBAAkB,CAAA;AAEtB,eAAO,MAAM,aAAa,sIA6JxB,CAAA"}
@@ -1,6 +1,7 @@
1
1
  import { sanitizeFields } from 'payload';
2
2
  import { populate } from '../../../populateGraphQL/populate.js';
3
3
  import { createServerFeature } from '../../../utilities/createServerFeature.js';
4
+ import { filterEnabledRelationshipCollections } from '../../relationship/shared/filterEnabledRelationshipCollections.js';
4
5
  import { createNode } from '../../typeUtilities.js';
5
6
  import { uploadPopulationPromiseHOC } from './graphQLPopulationPromise.js';
6
7
  import { i18n } from './i18n.js';
@@ -13,22 +14,22 @@ export const UploadFeature = createServerFeature({
13
14
  config: _config,
14
15
  isRoot,
15
16
  parentIsLocalized,
16
- props
17
+ props: unsanitizedProps
17
18
  }) => {
18
- if (!props) {
19
- props = {
20
- collections: {}
21
- };
22
- }
19
+ const props = {
20
+ ...unsanitizedProps,
21
+ collections: unsanitizedProps?.collections ?? {},
22
+ enabledCollectionSlugs: filterEnabledRelationshipCollections(_config.collections, {
23
+ ...unsanitizedProps,
24
+ uploads: true
25
+ }).map(({
26
+ slug
27
+ }) => slug)
28
+ };
23
29
  const clientProps = {
24
- collections: {}
30
+ collections: {},
31
+ enabledCollectionSlugs: props.enabledCollectionSlugs
25
32
  };
26
- if (props.disabledCollections) {
27
- clientProps.disabledCollections = props.disabledCollections;
28
- }
29
- if (props.enabledCollections) {
30
- clientProps.enabledCollections = props.enabledCollections;
31
- }
32
33
  if (props.collections) {
33
34
  for (const collection in props.collections) {
34
35
  clientProps.collections[collection] = {
@@ -84,6 +85,9 @@ export const UploadFeature = createServerFeature({
84
85
  }
85
86
  return allSubFields;
86
87
  }
88
+ if (!props.enabledCollectionSlugs.includes(node.relationTo)) {
89
+ return null;
90
+ }
87
91
  const collection = req ? req.payload.collections[node?.relationTo] : null;
88
92
  if (collection) {
89
93
  const collectionFieldSchema = props?.collections?.[node?.relationTo]?.fields;
@@ -114,7 +118,7 @@ export const UploadFeature = createServerFeature({
114
118
  req,
115
119
  showHiddenFields
116
120
  }) => {
117
- if (!node?.value) {
121
+ if (!node?.value || !props.enabledCollectionSlugs.includes(node.relationTo)) {
118
122
  return node;
119
123
  }
120
124
  const collection = req.payload.collections[node?.relationTo];
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["sanitizeFields","populate","createServerFeature","createNode","uploadPopulationPromiseHOC","i18n","PAYLOAD_UPLOAD","UploadServerNode","createUploadNodeJSONSchema","uploadValidation","UploadFeature","feature","config","_config","isRoot","parentIsLocalized","props","collections","clientProps","disabledCollections","enabledCollections","collection","hasExtraFields","fields","length","validRelationships","map","c","slug","collectionKey","requireFieldLevelRichTextEditor","ClientFeature","clientFeatureProps","generateSchemaMap","schemaMap","Map","set","markdownTransformers","nodes","getSubFields","node","req","allSubFields","collectionFields","concat","payload","relationTo","collectionFieldSchema","Array","isArray","getSubFieldsData","graphQLPopulationPromises","hooks","afterRead","currentDepth","depth","draft","overrideAccess","populateArg","populationPromises","showHiddenFields","value","id","populateDepth","maxDepth","undefined","push","collectionSlug","data","key","select","defaultPopulate","jsonSchema","validations","sanitizedServerFeatureProps"],"sources":["../../../../src/features/upload/server/index.ts"],"sourcesContent":["import type { Config, Field, FieldSchemaMap, UploadCollectionSlug } from 'payload'\n\nimport { sanitizeFields } from 'payload'\n\nimport type { UploadFeaturePropsClient } from '../client/index.js'\n\nimport { populate } from '../../../populateGraphQL/populate.js'\nimport { createServerFeature } from '../../../utilities/createServerFeature.js'\nimport { createNode } from '../../typeUtilities.js'\nimport { uploadPopulationPromiseHOC } from './graphQLPopulationPromise.js'\nimport { i18n } from './i18n.js'\nimport { PAYLOAD_UPLOAD } from './markdownTransformer.js'\nimport { UploadServerNode } from './nodes/UploadNode.js'\nimport { createUploadNodeJSONSchema } from './schema.js'\nimport { uploadValidation } from './validate.js'\n\nexport type {\n Internal_UploadData,\n SerializedUploadNode,\n UploadData,\n UploadDataImproved,\n} from './schema.js'\n\nexport type ExclusiveUploadFeatureProps =\n | {\n /**\n * The collections that should be disabled. Overrides the `enableRichTextRelationship` property in the collection config.\n * When this property is set, `enabledCollections` will not be available.\n **/\n disabledCollections?: UploadCollectionSlug[]\n\n // Ensures that enabledCollections is not available when disabledCollections is set\n enabledCollections?: never\n }\n | {\n // Ensures that disabledCollections is not available when enabledCollections is set\n disabledCollections?: never\n\n /**\n * The collections that should be enabled. Overrides the `enableRichTextRelationship` property in the collection config\n * When this property is set, `disabledCollections` will not be available.\n **/\n enabledCollections?: UploadCollectionSlug[]\n }\n\nexport type UploadFeatureProps = {\n collections?: {\n [collection: UploadCollectionSlug]: {\n fields: Field[]\n }\n }\n /**\n * Sets a maximum population depth for this upload (not the fields for this upload), regardless of the remaining depth when the respective field is reached.\n * This behaves exactly like the maxDepth properties of relationship and upload fields.\n *\n * {@link https://payloadcms.com/docs/getting-started/concepts#field-level-max-depth}\n */\n maxDepth?: number\n} & ExclusiveUploadFeatureProps\n\nexport const UploadFeature = createServerFeature<\n UploadFeatureProps,\n UploadFeatureProps,\n UploadFeaturePropsClient\n>({\n feature: ({ config: _config, isRoot, parentIsLocalized, props }) => {\n if (!props) {\n props = { collections: {} }\n }\n\n const clientProps: UploadFeaturePropsClient = {\n collections: {},\n }\n if (props.disabledCollections) {\n clientProps.disabledCollections = props.disabledCollections\n }\n if (props.enabledCollections) {\n clientProps.enabledCollections = props.enabledCollections\n }\n\n if (props.collections) {\n for (const collection in props.collections) {\n clientProps.collections[collection] = {\n hasExtraFields: props.collections[collection]!.fields.length >= 1,\n }\n }\n }\n\n const validRelationships = _config.collections.map((c) => c.slug) || []\n\n for (const collectionKey in props.collections) {\n const collection = props.collections[collectionKey]!\n if (collection.fields?.length) {\n collection.fields = sanitizeFields({\n config: _config as unknown as Config,\n fields: collection.fields,\n parentIsLocalized,\n requireFieldLevelRichTextEditor: isRoot,\n validRelationships,\n })\n }\n }\n\n return {\n ClientFeature: '@payloadcms/richtext-lexical/client#UploadFeatureClient',\n clientFeatureProps: clientProps,\n generateSchemaMap: ({ props }) => {\n if (!props?.collections) {\n return null\n }\n\n const schemaMap: FieldSchemaMap = new Map()\n\n for (const collectionKey in props.collections) {\n const collection = props.collections[collectionKey]!\n if (collection.fields?.length) {\n schemaMap.set(collectionKey, {\n fields: collection.fields,\n })\n }\n }\n\n return schemaMap\n },\n i18n,\n markdownTransformers: [PAYLOAD_UPLOAD],\n nodes: [\n createNode({\n getSubFields: ({ node, req }) => {\n if (!node) {\n let allSubFields: Field[] = []\n for (const collection in props?.collections) {\n const collectionFields = props.collections[collection]!.fields\n allSubFields = allSubFields.concat(collectionFields)\n }\n return allSubFields\n }\n const collection = req ? req.payload.collections[node?.relationTo] : null\n\n if (collection) {\n const collectionFieldSchema = props?.collections?.[node?.relationTo]?.fields\n\n if (Array.isArray(collectionFieldSchema)) {\n if (!collectionFieldSchema?.length) {\n return null\n }\n return collectionFieldSchema\n }\n }\n return null\n },\n getSubFieldsData: ({ node }) => {\n return node?.fields\n },\n graphQLPopulationPromises: [uploadPopulationPromiseHOC(props)],\n hooks: {\n afterRead: [\n ({\n currentDepth,\n depth,\n draft,\n node,\n overrideAccess,\n populateArg,\n populationPromises,\n req,\n showHiddenFields,\n }) => {\n if (!node?.value) {\n return node\n }\n const collection = req.payload.collections[node?.relationTo]\n\n if (!collection) {\n return node\n }\n const id =\n typeof node?.value === 'object' && node.value !== null && 'id' in node.value\n ? node.value.id\n : node?.value // for backwards-compatibility\n\n const populateDepth =\n props?.maxDepth !== undefined && props?.maxDepth < depth ? props?.maxDepth : depth\n\n populationPromises.push(\n populate({\n id,\n collectionSlug: collection.config.slug,\n currentDepth,\n data: node,\n depth: populateDepth,\n draft,\n key: 'value',\n overrideAccess,\n req,\n select:\n populateArg?.[collection.config.slug] ?? collection.config.defaultPopulate,\n showHiddenFields,\n }),\n )\n\n return node\n },\n ],\n },\n jsonSchema: createUploadNodeJSONSchema(props),\n node: UploadServerNode,\n validations: [uploadValidation(props)],\n }),\n ],\n sanitizedServerFeatureProps: props,\n }\n },\n key: 'upload',\n})\n"],"mappings":"AAEA,SAASA,cAAc,QAAQ;AAI/B,SAASC,QAAQ,QAAQ;AACzB,SAASC,mBAAmB,QAAQ;AACpC,SAASC,UAAU,QAAQ;AAC3B,SAASC,0BAA0B,QAAQ;AAC3C,SAASC,IAAI,QAAQ;AACrB,SAASC,cAAc,QAAQ;AAC/B,SAASC,gBAAgB,QAAQ;AACjC,SAASC,0BAA0B,QAAQ;AAC3C,SAASC,gBAAgB,QAAQ;AA8CjC,OAAO,MAAMC,aAAA,GAAgBR,mBAAA,CAI3B;EACAS,OAAA,EAASA,CAAC;IAAEC,MAAA,EAAQC,OAAO;IAAEC,MAAM;IAAEC,iBAAiB;IAAEC;EAAK,CAAE;IAC7D,IAAI,CAACA,KAAA,EAAO;MACVA,KAAA,GAAQ;QAAEC,WAAA,EAAa,CAAC;MAAE;IAC5B;IAEA,MAAMC,WAAA,GAAwC;MAC5CD,WAAA,EAAa,CAAC;IAChB;IACA,IAAID,KAAA,CAAMG,mBAAmB,EAAE;MAC7BD,WAAA,CAAYC,mBAAmB,GAAGH,KAAA,CAAMG,mBAAmB;IAC7D;IACA,IAAIH,KAAA,CAAMI,kBAAkB,EAAE;MAC5BF,WAAA,CAAYE,kBAAkB,GAAGJ,KAAA,CAAMI,kBAAkB;IAC3D;IAEA,IAAIJ,KAAA,CAAMC,WAAW,EAAE;MACrB,KAAK,MAAMI,UAAA,IAAcL,KAAA,CAAMC,WAAW,EAAE;QAC1CC,WAAA,CAAYD,WAAW,CAACI,UAAA,CAAW,GAAG;UACpCC,cAAA,EAAgBN,KAAA,CAAMC,WAAW,CAACI,UAAA,CAAW,CAAEE,MAAM,CAACC,MAAM,IAAI;QAClE;MACF;IACF;IAEA,MAAMC,kBAAA,GAAqBZ,OAAA,CAAQI,WAAW,CAACS,GAAG,CAAEC,CAAA,IAAMA,CAAA,CAAEC,IAAI,KAAK,EAAE;IAEvE,KAAK,MAAMC,aAAA,IAAiBb,KAAA,CAAMC,WAAW,EAAE;MAC7C,MAAMI,UAAA,GAAaL,KAAA,CAAMC,WAAW,CAACY,aAAA,CAAc;MACnD,IAAIR,UAAA,CAAWE,MAAM,EAAEC,MAAA,EAAQ;QAC7BH,UAAA,CAAWE,MAAM,GAAGvB,cAAA,CAAe;UACjCY,MAAA,EAAQC,OAAA;UACRU,MAAA,EAAQF,UAAA,CAAWE,MAAM;UACzBR,iBAAA;UACAe,+BAAA,EAAiChB,MAAA;UACjCW;QACF;MACF;IACF;IAEA,OAAO;MACLM,aAAA,EAAe;MACfC,kBAAA,EAAoBd,WAAA;MACpBe,iBAAA,EAAmBA,CAAC;QAAEjB;MAAK,CAAE;QAC3B,IAAI,CAACA,KAAA,EAAOC,WAAA,EAAa;UACvB,OAAO;QACT;QAEA,MAAMiB,SAAA,GAA4B,IAAIC,GAAA;QAEtC,KAAK,MAAMN,aAAA,IAAiBb,KAAA,CAAMC,WAAW,EAAE;UAC7C,MAAMI,UAAA,GAAaL,KAAA,CAAMC,WAAW,CAACY,aAAA,CAAc;UACnD,IAAIR,UAAA,CAAWE,MAAM,EAAEC,MAAA,EAAQ;YAC7BU,SAAA,CAAUE,GAAG,CAACP,aAAA,EAAe;cAC3BN,MAAA,EAAQF,UAAA,CAAWE;YACrB;UACF;QACF;QAEA,OAAOW,SAAA;MACT;MACA7B,IAAA;MACAgC,oBAAA,EAAsB,CAAC/B,cAAA,CAAe;MACtCgC,KAAA,EAAO,CACLnC,UAAA,CAAW;QACToC,YAAA,EAAcA,CAAC;UAAEC,IAAI;UAAEC;QAAG,CAAE;UAC1B,IAAI,CAACD,IAAA,EAAM;YACT,IAAIE,YAAA,GAAwB,EAAE;YAC9B,KAAK,MAAMrB,UAAA,IAAcL,KAAA,EAAOC,WAAA,EAAa;cAC3C,MAAM0B,gBAAA,GAAmB3B,KAAA,CAAMC,WAAW,CAACI,UAAA,CAAW,CAAEE,MAAM;cAC9DmB,YAAA,GAAeA,YAAA,CAAaE,MAAM,CAACD,gBAAA;YACrC;YACA,OAAOD,YAAA;UACT;UACA,MAAMrB,UAAA,GAAaoB,GAAA,GAAMA,GAAA,CAAII,OAAO,CAAC5B,WAAW,CAACuB,IAAA,EAAMM,UAAA,CAAW,GAAG;UAErE,IAAIzB,UAAA,EAAY;YACd,MAAM0B,qBAAA,GAAwB/B,KAAA,EAAOC,WAAA,GAAcuB,IAAA,EAAMM,UAAA,CAAW,EAAEvB,MAAA;YAEtE,IAAIyB,KAAA,CAAMC,OAAO,CAACF,qBAAA,GAAwB;cACxC,IAAI,CAACA,qBAAA,EAAuBvB,MAAA,EAAQ;gBAClC,OAAO;cACT;cACA,OAAOuB,qBAAA;YACT;UACF;UACA,OAAO;QACT;QACAG,gBAAA,EAAkBA,CAAC;UAAEV;QAAI,CAAE;UACzB,OAAOA,IAAA,EAAMjB,MAAA;QACf;QACA4B,yBAAA,EAA2B,CAAC/C,0BAAA,CAA2BY,KAAA,EAAO;QAC9DoC,KAAA,EAAO;UACLC,SAAA,EAAW,CACT,CAAC;YACCC,YAAY;YACZC,KAAK;YACLC,KAAK;YACLhB,IAAI;YACJiB,cAAc;YACdC,WAAW;YACXC,kBAAkB;YAClBlB,GAAG;YACHmB;UAAgB,CACjB;YACC,IAAI,CAACpB,IAAA,EAAMqB,KAAA,EAAO;cAChB,OAAOrB,IAAA;YACT;YACA,MAAMnB,UAAA,GAAaoB,GAAA,CAAII,OAAO,CAAC5B,WAAW,CAACuB,IAAA,EAAMM,UAAA,CAAW;YAE5D,IAAI,CAACzB,UAAA,EAAY;cACf,OAAOmB,IAAA;YACT;YACA,MAAMsB,EAAA,GACJ,OAAOtB,IAAA,EAAMqB,KAAA,KAAU,YAAYrB,IAAA,CAAKqB,KAAK,KAAK,QAAQ,QAAQrB,IAAA,CAAKqB,KAAK,GACxErB,IAAA,CAAKqB,KAAK,CAACC,EAAE,GACbtB,IAAA,EAAMqB,KAAA,CAAM;AAAA;YAElB,MAAME,aAAA,GACJ/C,KAAA,EAAOgD,QAAA,KAAaC,SAAA,IAAajD,KAAA,EAAOgD,QAAA,GAAWT,KAAA,GAAQvC,KAAA,EAAOgD,QAAA,GAAWT,KAAA;YAE/EI,kBAAA,CAAmBO,IAAI,CACrBjE,QAAA,CAAS;cACP6D,EAAA;cACAK,cAAA,EAAgB9C,UAAA,CAAWT,MAAM,CAACgB,IAAI;cACtC0B,YAAA;cACAc,IAAA,EAAM5B,IAAA;cACNe,KAAA,EAAOQ,aAAA;cACPP,KAAA;cACAa,GAAA,EAAK;cACLZ,cAAA;cACAhB,GAAA;cACA6B,MAAA,EACEZ,WAAA,GAAcrC,UAAA,CAAWT,MAAM,CAACgB,IAAI,CAAC,IAAIP,UAAA,CAAWT,MAAM,CAAC2D,eAAe;cAC5EX;YACF;YAGF,OAAOpB,IAAA;UACT;QAEJ;QACAgC,UAAA,EAAYhE,0BAAA,CAA2BQ,KAAA;QACvCwB,IAAA,EAAMjC,gBAAA;QACNkE,WAAA,EAAa,CAAChE,gBAAA,CAAiBO,KAAA;MACjC,GACD;MACD0D,2BAAA,EAA6B1D;IAC/B;EACF;EACAqD,GAAA,EAAK;AACP","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["sanitizeFields","populate","createServerFeature","filterEnabledRelationshipCollections","createNode","uploadPopulationPromiseHOC","i18n","PAYLOAD_UPLOAD","UploadServerNode","createUploadNodeJSONSchema","uploadValidation","UploadFeature","feature","config","_config","isRoot","parentIsLocalized","props","unsanitizedProps","collections","enabledCollectionSlugs","uploads","map","slug","clientProps","collection","hasExtraFields","fields","length","validRelationships","c","collectionKey","requireFieldLevelRichTextEditor","ClientFeature","clientFeatureProps","generateSchemaMap","schemaMap","Map","set","markdownTransformers","nodes","getSubFields","node","req","allSubFields","collectionFields","concat","includes","relationTo","payload","collectionFieldSchema","Array","isArray","getSubFieldsData","graphQLPopulationPromises","hooks","afterRead","currentDepth","depth","draft","overrideAccess","populateArg","populationPromises","showHiddenFields","value","id","populateDepth","maxDepth","undefined","push","collectionSlug","data","key","select","defaultPopulate","jsonSchema","validations","sanitizedServerFeatureProps"],"sources":["../../../../src/features/upload/server/index.ts"],"sourcesContent":["import type { CollectionSlug, Config, Field, FieldSchemaMap, UploadCollectionSlug } from 'payload'\n\nimport { sanitizeFields } from 'payload'\n\nimport type { UploadFeaturePropsClient } from '../client/index.js'\n\nimport { populate } from '../../../populateGraphQL/populate.js'\nimport { createServerFeature } from '../../../utilities/createServerFeature.js'\nimport { filterEnabledRelationshipCollections } from '../../relationship/shared/filterEnabledRelationshipCollections.js'\nimport { createNode } from '../../typeUtilities.js'\nimport { uploadPopulationPromiseHOC } from './graphQLPopulationPromise.js'\nimport { i18n } from './i18n.js'\nimport { PAYLOAD_UPLOAD } from './markdownTransformer.js'\nimport { UploadServerNode } from './nodes/UploadNode.js'\nimport { createUploadNodeJSONSchema } from './schema.js'\nimport { uploadValidation } from './validate.js'\n\nexport type {\n Internal_UploadData,\n SerializedUploadNode,\n UploadData,\n UploadDataImproved,\n} from './schema.js'\n\nexport type ExclusiveUploadFeatureProps =\n | {\n /**\n * The collections that should be disabled. Overrides the `enableRichTextRelationship` property in the collection config.\n * When this property is set, `enabledCollections` will not be available.\n **/\n disabledCollections?: UploadCollectionSlug[]\n\n // Ensures that enabledCollections is not available when disabledCollections is set\n enabledCollections?: never\n }\n | {\n // Ensures that disabledCollections is not available when enabledCollections is set\n disabledCollections?: never\n\n /**\n * The collections that should be enabled. Overrides the `enableRichTextRelationship` property in the collection config\n * When this property is set, `disabledCollections` will not be available.\n **/\n enabledCollections?: UploadCollectionSlug[]\n }\n\nexport type UploadFeatureProps = {\n collections?: {\n [collection: UploadCollectionSlug]: {\n fields: Field[]\n }\n }\n /**\n * Sets a maximum population depth for this upload (not the fields for this upload), regardless of the remaining depth when the respective field is reached.\n * This behaves exactly like the maxDepth properties of relationship and upload fields.\n *\n * {@link https://payloadcms.com/docs/getting-started/concepts#field-level-max-depth}\n */\n maxDepth?: number\n} & ExclusiveUploadFeatureProps\n\nexport type UploadFeatureServerProps = {\n /** Collection policy resolved during feature initialization. */\n enabledCollectionSlugs: CollectionSlug[]\n} & UploadFeatureProps\n\nexport const UploadFeature = createServerFeature<\n UploadFeatureProps,\n UploadFeatureServerProps,\n UploadFeaturePropsClient\n>({\n feature: ({ config: _config, isRoot, parentIsLocalized, props: unsanitizedProps }) => {\n const props: UploadFeatureServerProps = {\n ...unsanitizedProps,\n collections: unsanitizedProps?.collections ?? {},\n enabledCollectionSlugs: filterEnabledRelationshipCollections(_config.collections, {\n ...unsanitizedProps,\n uploads: true,\n }).map(({ slug }) => slug),\n }\n\n const clientProps: UploadFeaturePropsClient = {\n collections: {},\n enabledCollectionSlugs: props.enabledCollectionSlugs,\n }\n\n if (props.collections) {\n for (const collection in props.collections) {\n clientProps.collections[collection] = {\n hasExtraFields: props.collections[collection]!.fields.length >= 1,\n }\n }\n }\n\n const validRelationships = _config.collections.map((c) => c.slug) || []\n\n for (const collectionKey in props.collections) {\n const collection = props.collections[collectionKey]!\n if (collection.fields?.length) {\n collection.fields = sanitizeFields({\n config: _config as unknown as Config,\n fields: collection.fields,\n parentIsLocalized,\n requireFieldLevelRichTextEditor: isRoot,\n validRelationships,\n })\n }\n }\n\n return {\n ClientFeature: '@payloadcms/richtext-lexical/client#UploadFeatureClient',\n clientFeatureProps: clientProps,\n generateSchemaMap: ({ props }) => {\n if (!props?.collections) {\n return null\n }\n\n const schemaMap: FieldSchemaMap = new Map()\n\n for (const collectionKey in props.collections) {\n const collection = props.collections[collectionKey]!\n if (collection.fields?.length) {\n schemaMap.set(collectionKey, {\n fields: collection.fields,\n })\n }\n }\n\n return schemaMap\n },\n i18n,\n markdownTransformers: [PAYLOAD_UPLOAD],\n nodes: [\n createNode({\n getSubFields: ({ node, req }) => {\n if (!node) {\n let allSubFields: Field[] = []\n for (const collection in props?.collections) {\n const collectionFields = props.collections[collection]!.fields\n allSubFields = allSubFields.concat(collectionFields)\n }\n return allSubFields\n }\n if (!props.enabledCollectionSlugs.includes(node.relationTo)) {\n return null\n }\n const collection = req ? req.payload.collections[node?.relationTo] : null\n\n if (collection) {\n const collectionFieldSchema = props?.collections?.[node?.relationTo]?.fields\n\n if (Array.isArray(collectionFieldSchema)) {\n if (!collectionFieldSchema?.length) {\n return null\n }\n return collectionFieldSchema\n }\n }\n return null\n },\n getSubFieldsData: ({ node }) => {\n return node?.fields\n },\n graphQLPopulationPromises: [uploadPopulationPromiseHOC(props)],\n hooks: {\n afterRead: [\n ({\n currentDepth,\n depth,\n draft,\n node,\n overrideAccess,\n populateArg,\n populationPromises,\n req,\n showHiddenFields,\n }) => {\n if (!node?.value || !props.enabledCollectionSlugs.includes(node.relationTo)) {\n return node\n }\n const collection = req.payload.collections[node?.relationTo]\n\n if (!collection) {\n return node\n }\n const id =\n typeof node?.value === 'object' && node.value !== null && 'id' in node.value\n ? node.value.id\n : node?.value // for backwards-compatibility\n\n const populateDepth =\n props?.maxDepth !== undefined && props?.maxDepth < depth ? props?.maxDepth : depth\n\n populationPromises.push(\n populate({\n id,\n collectionSlug: collection.config.slug,\n currentDepth,\n data: node,\n depth: populateDepth,\n draft,\n key: 'value',\n overrideAccess,\n req,\n select:\n populateArg?.[collection.config.slug] ?? collection.config.defaultPopulate,\n showHiddenFields,\n }),\n )\n\n return node\n },\n ],\n },\n jsonSchema: createUploadNodeJSONSchema(props),\n node: UploadServerNode,\n validations: [uploadValidation(props)],\n }),\n ],\n sanitizedServerFeatureProps: props,\n }\n },\n key: 'upload',\n})\n"],"mappings":"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","ignoreList":[]}
@@ -1,7 +1,7 @@
1
1
  import type { DataFromCollectionSlug, IDTypeForCollectionSlug, JsonObject, TypedUploadCollection, UploadCollectionSlug } from 'payload';
2
2
  import type { LexicalElementFormat } from '../../../types/nodeTypes.js';
3
3
  import type { JSONSchemaFn } from '../../typesServer.js';
4
- import type { UploadFeatureProps } from './index.js';
4
+ import type { UploadFeatureServerProps } from './index.js';
5
5
  export type UploadData<TFields extends JsonObject = JsonObject> = {
6
6
  [TCollectionSlug in UploadCollectionSlug]: {
7
7
  fields: TFields;
@@ -48,5 +48,5 @@ export type SerializedUploadNode<TSlugs extends UploadCollectionSlug = UploadCol
48
48
  type: 'upload';
49
49
  version: number;
50
50
  };
51
- export declare const createUploadNodeJSONSchema: (props: undefined | UploadFeatureProps) => JSONSchemaFn;
51
+ export declare const createUploadNodeJSONSchema: (props: UploadFeatureServerProps) => JSONSchemaFn;
52
52
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/features/upload/server/schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACvB,UAAU,EACV,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,SAAS,CAAA;AAKhB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAKpD,MAAM,MAAM,UAAU,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,IAAI;KAC/D,eAAe,IAAI,oBAAoB,GAAG;QACzC,MAAM,EAAE,OAAO,CAAA;QACf,6DAA6D;QAC7D,EAAE,EAAE,MAAM,CAAA;QACV,UAAU,EAAE,eAAe,CAAA;QAC3B,6DAA6D;QAC7D,KAAK,EAAE,sBAAsB,CAAC,eAAe,CAAC,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAA;KAC1F;CACF,CAAC,oBAAoB,CAAC,CAAA;AAEvB,sDAAsD;AACtD,MAAM,MAAM,mBAAmB,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,IAAI;IACzE,OAAO,CAAC,EAAE;QACR,2BAA2B;QAC3B,MAAM,EAAE,MAAM,CAAA;QACd,sCAAsC;QACtC,GAAG,EAAE,MAAM,CAAA;KACZ,CAAA;CACF,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;AAEvB;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,IAAI;KACvE,eAAe,IAAI,oBAAoB,GAAG;QACzC,MAAM,EAAE,OAAO,CAAA;QACf,EAAE,EAAE,MAAM,CAAA;QACV,UAAU,EAAE,eAAe,CAAA;QAC3B,KAAK,EAAE,uBAAuB,CAAC,eAAe,CAAC,GAAG,qBAAqB,CAAC,eAAe,CAAC,CAAA;KACzF;CACF,CAAC,oBAAoB,CAAC,CAAA;AAEvB,MAAM,MAAM,oBAAoB,CAC9B,MAAM,SAAS,oBAAoB,GAAG,oBAAoB,EAC1D,OAAO,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,IAChC;KACD,KAAK,IAAI,MAAM,GAAG;QACjB,UAAU,EAAE,KAAK,CAAA;QACjB,KAAK,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAA;KACtE;CACF,CAAC,MAAM,CAAC,GAAG;IACV,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,oBAAoB,CAAA;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,QAAQ,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAiCD,eAAO,MAAM,0BAA0B,UAC7B,SAAS,GAAG,kBAAkB,KAAG,YA0GxC,CAAA"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../../src/features/upload/server/schema.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,sBAAsB,EACtB,uBAAuB,EACvB,UAAU,EACV,qBAAqB,EACrB,oBAAoB,EACrB,MAAM,SAAS,CAAA;AAKhB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAI1D,MAAM,MAAM,UAAU,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,IAAI;KAC/D,eAAe,IAAI,oBAAoB,GAAG;QACzC,MAAM,EAAE,OAAO,CAAA;QACf,6DAA6D;QAC7D,EAAE,EAAE,MAAM,CAAA;QACV,UAAU,EAAE,eAAe,CAAA;QAC3B,6DAA6D;QAC7D,KAAK,EAAE,sBAAsB,CAAC,eAAe,CAAC,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAA;KAC1F;CACF,CAAC,oBAAoB,CAAC,CAAA;AAEvB,sDAAsD;AACtD,MAAM,MAAM,mBAAmB,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,IAAI;IACzE,OAAO,CAAC,EAAE;QACR,2BAA2B;QAC3B,MAAM,EAAE,MAAM,CAAA;QACd,sCAAsC;QACtC,GAAG,EAAE,MAAM,CAAA;KACZ,CAAA;CACF,GAAG,UAAU,CAAC,OAAO,CAAC,CAAA;AAEvB;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,CAAC,OAAO,SAAS,UAAU,GAAG,UAAU,IAAI;KACvE,eAAe,IAAI,oBAAoB,GAAG;QACzC,MAAM,EAAE,OAAO,CAAA;QACf,EAAE,EAAE,MAAM,CAAA;QACV,UAAU,EAAE,eAAe,CAAA;QAC3B,KAAK,EAAE,uBAAuB,CAAC,eAAe,CAAC,GAAG,qBAAqB,CAAC,eAAe,CAAC,CAAA;KACzF;CACF,CAAC,oBAAoB,CAAC,CAAA;AAEvB,MAAM,MAAM,oBAAoB,CAC9B,MAAM,SAAS,oBAAoB,GAAG,oBAAoB,EAC1D,OAAO,GAAG;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,IAChC;KACD,KAAK,IAAI,MAAM,GAAG;QACjB,UAAU,EAAE,KAAK,CAAA;QACjB,KAAK,EAAE,sBAAsB,CAAC,KAAK,CAAC,GAAG,uBAAuB,CAAC,KAAK,CAAC,CAAA;KACtE;CACF,CAAC,MAAM,CAAC,GAAG;IACV,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,oBAAoB,CAAA;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,QAAQ,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAiCD,eAAO,MAAM,0BAA0B,UAC7B,wBAAwB,KAAG,YAmGlC,CAAA"}
@@ -1,7 +1,6 @@
1
1
  import { createHash } from 'crypto';
2
2
  import { fieldsToJSONSchema, flattenAllFields } from 'payload';
3
3
  import { formatSchema, versionSchema } from '../../../types/jsonSchemaHelpers.js';
4
- import { filterEnabledRelationshipCollections } from '../../relationship/shared/filterEnabledRelationshipCollections.js';
5
4
  /** MUST stay byte-for-byte in sync with the runtime `SerializedUploadNode` declared above. */
6
5
  const SERIALIZED_UPLOAD_NODE_TS = `export type SerializedUploadNode<TSlugs extends keyof Config['collections'], TFields = { [k: string]: unknown }> = {
7
6
  type: 'upload';
@@ -39,11 +38,9 @@ export const createUploadNodeJSONSchema = props => ({
39
38
  }) => {
40
39
  const isInput = variant === 'input';
41
40
  typeStringDefinitions.add(isInput ? SERIALIZED_UPLOAD_NODE_INPUT_TS : SERIALIZED_UPLOAD_NODE_TS);
42
- const enabledCollections = config?.collections ? filterEnabledRelationshipCollections(config.collections, {
43
- disabledCollections: props?.disabledCollections,
44
- enabledCollections: props?.enabledCollections,
45
- uploads: true
46
- }) : [];
41
+ const {
42
+ enabledCollectionSlugs
43
+ } = props;
47
44
  // Configured extra fields are registered as their own interface and referenced here, so the
48
45
  // generated TypeScript keeps them - the node-level `tsType` would otherwise erase `fields` to
49
46
  // `{ [k: string]: unknown }`. Mirrors how LinkFeature handles custom link fields.
@@ -52,8 +49,7 @@ export const createUploadNodeJSONSchema = props => ({
52
49
  // generated union correctly pairs each `relationTo` with its own fields type. A single
53
50
  // `SerializedUploadNode<'a' | 'b', AFields | BFields>` would lose that pairing.
54
51
  const perCollectionTsTypes = [];
55
- const collectionVariants = enabledCollections.map(collection => {
56
- const slug = collection.slug;
52
+ const collectionVariants = enabledCollectionSlugs.map(slug => {
57
53
  const idType = collectionIDFieldTypes[slug] ?? 'string';
58
54
  const extraFields = props?.collections?.[slug]?.fields ?? [];
59
55
  const flattenedExtra = flattenAllFields({
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","names":["createHash","fieldsToJSONSchema","flattenAllFields","formatSchema","versionSchema","filterEnabledRelationshipCollections","SERIALIZED_UPLOAD_NODE_TS","SERIALIZED_UPLOAD_NODE_INPUT_TS","hashUploadFields","schema","update","JSON","stringify","digest","slice","toUpperCase","createUploadNodeJSONSchema","props","collectionIDFieldTypes","config","i18n","interfaceNameDefinitions","typeStringDefinitions","variant","isInput","add","enabledCollections","collections","disabledCollections","uploads","perCollectionTsTypes","collectionVariants","map","collection","slug","idType","extraFields","fields","flattenedExtra","extraFieldsSchema","length","properties","required","fieldsSchema","type","additionalProperties","fieldsTypeName","set","$ref","uploadTsName","push","id","const","format","relationTo","value","description","oneOf","version","baseSchema","tsType","join"],"sources":["../../../../src/features/upload/server/schema.ts"],"sourcesContent":["import type { JSONSchema4 } from 'json-schema'\nimport type {\n DataFromCollectionSlug,\n IDTypeForCollectionSlug,\n JsonObject,\n TypedUploadCollection,\n UploadCollectionSlug,\n} from 'payload'\n\nimport { createHash } from 'crypto'\nimport { fieldsToJSONSchema, flattenAllFields } from 'payload'\n\nimport type { LexicalElementFormat } from '../../../types/nodeTypes.js'\nimport type { JSONSchemaFn } from '../../typesServer.js'\nimport type { UploadFeatureProps } from './index.js'\n\nimport { formatSchema, versionSchema } from '../../../types/jsonSchemaHelpers.js'\nimport { filterEnabledRelationshipCollections } from '../../relationship/shared/filterEnabledRelationshipCollections.js'\n\nexport type UploadData<TFields extends JsonObject = JsonObject> = {\n [TCollectionSlug in UploadCollectionSlug]: {\n fields: TFields\n /** ID of this upload node — NOT the linked document's ID. */\n id: string\n relationTo: TCollectionSlug\n /** Either the document ID or the full populated document. */\n value: DataFromCollectionSlug<TCollectionSlug> | IDTypeForCollectionSlug<TCollectionSlug>\n }\n}[UploadCollectionSlug]\n\n/** @internal Adds a pending state to `UploadData`. */\nexport type Internal_UploadData<TFields extends JsonObject = JsonObject> = {\n pending?: {\n /** Bulk upload form ID. */\n formID: string\n /** `src` of the image DOM element. */\n src: string\n }\n} & UploadData<TFields>\n\n/**\n * More precise variant of {@link UploadData}. Replaces `UploadData` in v4.\n * @internal\n * @todo Replace UploadData with UploadDataImproved in 4.0\n */\nexport type UploadDataImproved<TFields extends JsonObject = JsonObject> = {\n [TCollectionSlug in UploadCollectionSlug]: {\n fields: TFields\n id: string\n relationTo: TCollectionSlug\n value: IDTypeForCollectionSlug<TCollectionSlug> | TypedUploadCollection[TCollectionSlug]\n }\n}[UploadCollectionSlug]\n\nexport type SerializedUploadNode<\n TSlugs extends UploadCollectionSlug = UploadCollectionSlug,\n TFields = { [k: string]: unknown },\n> = {\n [TSlug in TSlugs]: {\n relationTo: TSlug\n value: DataFromCollectionSlug<TSlug> | IDTypeForCollectionSlug<TSlug>\n }\n}[TSlugs] & {\n fields: TFields\n format: LexicalElementFormat\n id: string\n type: 'upload'\n version: number\n}\n\n/** MUST stay byte-for-byte in sync with the runtime `SerializedUploadNode` declared above. */\nconst SERIALIZED_UPLOAD_NODE_TS = `export type SerializedUploadNode<TSlugs extends keyof Config['collections'], TFields = { [k: string]: unknown }> = {\n type: 'upload';\n format: LexicalElementFormat;\n id: string;\n version: number;\n fields: TFields;\n} & {\n [TSlug in TSlugs]: {\n relationTo: TSlug;\n value: Config['collections'][TSlug]['id'] | Config['collections'][TSlug];\n };\n}[TSlugs];`\n\n/** Input variant of `SerializedUploadNode`: `value` is ID-only (you only ever write an ID). */\nconst SERIALIZED_UPLOAD_NODE_INPUT_TS = `export type SerializedUploadNodeInput<TSlugs extends keyof Config['collections'], TFields = { [k: string]: unknown }> = {\n type: 'upload';\n format: LexicalElementFormat;\n id: string;\n version: number;\n fields: TFields;\n} & {\n [TSlug in TSlugs]: {\n relationTo: TSlug;\n value: Config['collections'][TSlug]['id'];\n };\n}[TSlugs];`\n\nconst hashUploadFields = (schema: JSONSchema4): string =>\n createHash('sha256').update(JSON.stringify(schema)).digest('hex').slice(0, 8).toUpperCase()\n\nexport const createUploadNodeJSONSchema =\n (props: undefined | UploadFeatureProps): JSONSchemaFn =>\n ({\n collectionIDFieldTypes,\n config,\n i18n,\n interfaceNameDefinitions,\n typeStringDefinitions,\n variant,\n }) => {\n const isInput = variant === 'input'\n typeStringDefinitions.add(isInput ? SERIALIZED_UPLOAD_NODE_INPUT_TS : SERIALIZED_UPLOAD_NODE_TS)\n const enabledCollections = config?.collections\n ? filterEnabledRelationshipCollections(config.collections, {\n disabledCollections: props?.disabledCollections,\n enabledCollections: props?.enabledCollections,\n uploads: true,\n })\n : []\n\n // Configured extra fields are registered as their own interface and referenced here, so the\n // generated TypeScript keeps them - the node-level `tsType` would otherwise erase `fields` to\n // `{ [k: string]: unknown }`. Mirrors how LinkFeature handles custom link fields.\n //\n // Each collection gets its own `SerializedUploadNode<'slug', Fields>` instantiation so the\n // generated union correctly pairs each `relationTo` with its own fields type. A single\n // `SerializedUploadNode<'a' | 'b', AFields | BFields>` would lose that pairing.\n const perCollectionTsTypes: string[] = []\n const collectionVariants: JSONSchema4[] = enabledCollections.map((collection) => {\n const slug = collection.slug\n const idType: 'number' | 'string' = collectionIDFieldTypes[slug] ?? 'string'\n const extraFields = props?.collections?.[slug]?.fields ?? []\n const flattenedExtra = flattenAllFields({ fields: extraFields })\n const extraFieldsSchema =\n flattenedExtra.length > 0 && config\n ? fieldsToJSONSchema({\n collectionIDFieldTypes,\n config,\n fields: flattenedExtra,\n i18n,\n interfaceNameDefinitions,\n typeStringDefinitions,\n variant,\n })\n : { properties: {}, required: [] }\n\n let fieldsSchema: JSONSchema4 = {\n type: 'object',\n additionalProperties: false,\n properties: extraFieldsSchema.properties,\n required: extraFieldsSchema.required,\n }\n let fieldsTypeName: string | undefined\n if (flattenedExtra.length > 0) {\n fieldsTypeName = `LexicalUploadFields_${hashUploadFields(fieldsSchema)}`\n interfaceNameDefinitions.set(fieldsTypeName, fieldsSchema)\n fieldsSchema = { $ref: `#/$defs/${fieldsTypeName}` }\n }\n\n const uploadTsName = isInput ? 'SerializedUploadNodeInput' : 'SerializedUploadNode'\n perCollectionTsTypes.push(\n fieldsTypeName\n ? `${uploadTsName}<'${slug}', ${fieldsTypeName}>`\n : `${uploadTsName}<'${slug}'>`,\n )\n\n return {\n type: 'object',\n additionalProperties: false,\n properties: {\n id: { type: 'string' },\n type: { type: 'string', const: 'upload' },\n fields: fieldsSchema,\n format: formatSchema,\n relationTo: { type: 'string', const: slug },\n value: isInput\n ? { type: idType, description: 'The uploaded file ID.' }\n : {\n description:\n 'The uploaded file by ID (string or number). Populated to the full upload document when read at depth > 0.',\n oneOf: [{ type: idType }, { $ref: `#/$defs/${slug}` }],\n },\n version: versionSchema,\n },\n required: ['fields', 'format', 'id', 'relationTo', 'type', 'value', 'version'],\n }\n })\n\n let schema: JSONSchema4\n if (collectionVariants.length === 0) {\n // Fallback when no enabled upload collections.\n schema = {\n type: 'object',\n additionalProperties: true,\n properties: {\n type: { type: 'string', const: 'upload' },\n version: versionSchema,\n },\n required: ['type', 'version'],\n }\n } else {\n const baseSchema: JSONSchema4 =\n collectionVariants.length === 1 ? collectionVariants[0]! : { oneOf: collectionVariants }\n schema = { ...baseSchema, tsType: perCollectionTsTypes.join(' | ') }\n }\n\n return schema\n }\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"schema.js","names":["createHash","fieldsToJSONSchema","flattenAllFields","formatSchema","versionSchema","SERIALIZED_UPLOAD_NODE_TS","SERIALIZED_UPLOAD_NODE_INPUT_TS","hashUploadFields","schema","update","JSON","stringify","digest","slice","toUpperCase","createUploadNodeJSONSchema","props","collectionIDFieldTypes","config","i18n","interfaceNameDefinitions","typeStringDefinitions","variant","isInput","add","enabledCollectionSlugs","perCollectionTsTypes","collectionVariants","map","slug","idType","extraFields","collections","fields","flattenedExtra","extraFieldsSchema","length","properties","required","fieldsSchema","type","additionalProperties","fieldsTypeName","set","$ref","uploadTsName","push","id","const","format","relationTo","value","description","oneOf","version","baseSchema","tsType","join"],"sources":["../../../../src/features/upload/server/schema.ts"],"sourcesContent":["import type { JSONSchema4 } from 'json-schema'\nimport type {\n DataFromCollectionSlug,\n IDTypeForCollectionSlug,\n JsonObject,\n TypedUploadCollection,\n UploadCollectionSlug,\n} from 'payload'\n\nimport { createHash } from 'crypto'\nimport { fieldsToJSONSchema, flattenAllFields } from 'payload'\n\nimport type { LexicalElementFormat } from '../../../types/nodeTypes.js'\nimport type { JSONSchemaFn } from '../../typesServer.js'\nimport type { UploadFeatureServerProps } from './index.js'\n\nimport { formatSchema, versionSchema } from '../../../types/jsonSchemaHelpers.js'\n\nexport type UploadData<TFields extends JsonObject = JsonObject> = {\n [TCollectionSlug in UploadCollectionSlug]: {\n fields: TFields\n /** ID of this upload node — NOT the linked document's ID. */\n id: string\n relationTo: TCollectionSlug\n /** Either the document ID or the full populated document. */\n value: DataFromCollectionSlug<TCollectionSlug> | IDTypeForCollectionSlug<TCollectionSlug>\n }\n}[UploadCollectionSlug]\n\n/** @internal Adds a pending state to `UploadData`. */\nexport type Internal_UploadData<TFields extends JsonObject = JsonObject> = {\n pending?: {\n /** Bulk upload form ID. */\n formID: string\n /** `src` of the image DOM element. */\n src: string\n }\n} & UploadData<TFields>\n\n/**\n * More precise variant of {@link UploadData}. Replaces `UploadData` in v4.\n * @internal\n * @todo Replace UploadData with UploadDataImproved in 4.0\n */\nexport type UploadDataImproved<TFields extends JsonObject = JsonObject> = {\n [TCollectionSlug in UploadCollectionSlug]: {\n fields: TFields\n id: string\n relationTo: TCollectionSlug\n value: IDTypeForCollectionSlug<TCollectionSlug> | TypedUploadCollection[TCollectionSlug]\n }\n}[UploadCollectionSlug]\n\nexport type SerializedUploadNode<\n TSlugs extends UploadCollectionSlug = UploadCollectionSlug,\n TFields = { [k: string]: unknown },\n> = {\n [TSlug in TSlugs]: {\n relationTo: TSlug\n value: DataFromCollectionSlug<TSlug> | IDTypeForCollectionSlug<TSlug>\n }\n}[TSlugs] & {\n fields: TFields\n format: LexicalElementFormat\n id: string\n type: 'upload'\n version: number\n}\n\n/** MUST stay byte-for-byte in sync with the runtime `SerializedUploadNode` declared above. */\nconst SERIALIZED_UPLOAD_NODE_TS = `export type SerializedUploadNode<TSlugs extends keyof Config['collections'], TFields = { [k: string]: unknown }> = {\n type: 'upload';\n format: LexicalElementFormat;\n id: string;\n version: number;\n fields: TFields;\n} & {\n [TSlug in TSlugs]: {\n relationTo: TSlug;\n value: Config['collections'][TSlug]['id'] | Config['collections'][TSlug];\n };\n}[TSlugs];`\n\n/** Input variant of `SerializedUploadNode`: `value` is ID-only (you only ever write an ID). */\nconst SERIALIZED_UPLOAD_NODE_INPUT_TS = `export type SerializedUploadNodeInput<TSlugs extends keyof Config['collections'], TFields = { [k: string]: unknown }> = {\n type: 'upload';\n format: LexicalElementFormat;\n id: string;\n version: number;\n fields: TFields;\n} & {\n [TSlug in TSlugs]: {\n relationTo: TSlug;\n value: Config['collections'][TSlug]['id'];\n };\n}[TSlugs];`\n\nconst hashUploadFields = (schema: JSONSchema4): string =>\n createHash('sha256').update(JSON.stringify(schema)).digest('hex').slice(0, 8).toUpperCase()\n\nexport const createUploadNodeJSONSchema =\n (props: UploadFeatureServerProps): JSONSchemaFn =>\n ({\n collectionIDFieldTypes,\n config,\n i18n,\n interfaceNameDefinitions,\n typeStringDefinitions,\n variant,\n }) => {\n const isInput = variant === 'input'\n typeStringDefinitions.add(isInput ? SERIALIZED_UPLOAD_NODE_INPUT_TS : SERIALIZED_UPLOAD_NODE_TS)\n const { enabledCollectionSlugs } = props\n\n // Configured extra fields are registered as their own interface and referenced here, so the\n // generated TypeScript keeps them - the node-level `tsType` would otherwise erase `fields` to\n // `{ [k: string]: unknown }`. Mirrors how LinkFeature handles custom link fields.\n //\n // Each collection gets its own `SerializedUploadNode<'slug', Fields>` instantiation so the\n // generated union correctly pairs each `relationTo` with its own fields type. A single\n // `SerializedUploadNode<'a' | 'b', AFields | BFields>` would lose that pairing.\n const perCollectionTsTypes: string[] = []\n const collectionVariants: JSONSchema4[] = enabledCollectionSlugs.map((slug) => {\n const idType: 'number' | 'string' = collectionIDFieldTypes[slug] ?? 'string'\n const extraFields = props?.collections?.[slug]?.fields ?? []\n const flattenedExtra = flattenAllFields({ fields: extraFields })\n const extraFieldsSchema =\n flattenedExtra.length > 0 && config\n ? fieldsToJSONSchema({\n collectionIDFieldTypes,\n config,\n fields: flattenedExtra,\n i18n,\n interfaceNameDefinitions,\n typeStringDefinitions,\n variant,\n })\n : { properties: {}, required: [] }\n\n let fieldsSchema: JSONSchema4 = {\n type: 'object',\n additionalProperties: false,\n properties: extraFieldsSchema.properties,\n required: extraFieldsSchema.required,\n }\n let fieldsTypeName: string | undefined\n if (flattenedExtra.length > 0) {\n fieldsTypeName = `LexicalUploadFields_${hashUploadFields(fieldsSchema)}`\n interfaceNameDefinitions.set(fieldsTypeName, fieldsSchema)\n fieldsSchema = { $ref: `#/$defs/${fieldsTypeName}` }\n }\n\n const uploadTsName = isInput ? 'SerializedUploadNodeInput' : 'SerializedUploadNode'\n perCollectionTsTypes.push(\n fieldsTypeName\n ? `${uploadTsName}<'${slug}', ${fieldsTypeName}>`\n : `${uploadTsName}<'${slug}'>`,\n )\n\n return {\n type: 'object',\n additionalProperties: false,\n properties: {\n id: { type: 'string' },\n type: { type: 'string', const: 'upload' },\n fields: fieldsSchema,\n format: formatSchema,\n relationTo: { type: 'string', const: slug },\n value: isInput\n ? { type: idType, description: 'The uploaded file ID.' }\n : {\n description:\n 'The uploaded file by ID (string or number). Populated to the full upload document when read at depth > 0.',\n oneOf: [{ type: idType }, { $ref: `#/$defs/${slug}` }],\n },\n version: versionSchema,\n },\n required: ['fields', 'format', 'id', 'relationTo', 'type', 'value', 'version'],\n }\n })\n\n let schema: JSONSchema4\n if (collectionVariants.length === 0) {\n // Fallback when no enabled upload collections.\n schema = {\n type: 'object',\n additionalProperties: true,\n properties: {\n type: { type: 'string', const: 'upload' },\n version: versionSchema,\n },\n required: ['type', 'version'],\n }\n } else {\n const baseSchema: JSONSchema4 =\n collectionVariants.length === 1 ? collectionVariants[0]! : { oneOf: collectionVariants }\n schema = { ...baseSchema, tsType: perCollectionTsTypes.join(' | ') }\n }\n\n return schema\n }\n"],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import type { NodeValidation } from '../../typesServer.js';
2
- import type { UploadFeatureProps } from './index.js';
2
+ import type { UploadFeatureServerProps } from './index.js';
3
3
  import type { SerializedUploadNode } from './schema.js';
4
- export declare const uploadValidation: (props: UploadFeatureProps) => NodeValidation<SerializedUploadNode>;
4
+ export declare const uploadValidation: (props: UploadFeatureServerProps) => NodeValidation<SerializedUploadNode>;
5
5
  //# sourceMappingURL=validate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../../src/features/upload/server/validate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AACpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAEvD,eAAO,MAAM,gBAAgB,UACpB,kBAAkB,KACxB,cAAc,CAAC,oBAAoB,CAqErC,CAAA"}
1
+ {"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../../../src/features/upload/server/validate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAC1D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAEvD,eAAO,MAAM,gBAAgB,UACpB,wBAAwB,KAC9B,cAAc,CAAC,oBAAoB,CAyErC,CAAA"}
@@ -17,6 +17,9 @@ export const uploadValidation = props => {
17
17
  }
18
18
  }
19
19
  }) => {
20
+ if (!props.enabledCollectionSlugs.includes(node.relationTo)) {
21
+ return t('validation:invalidSelection');
22
+ }
20
23
  const idType = payload.collections[node.relationTo]?.customIDType || payload.db.defaultIDType;
21
24
  // @ts-expect-error - Fix in Payload v4
22
25
  const nodeID = node?.value?.id || node?.value // for backwards-compatibility
@@ -1 +1 @@
1
- {"version":3,"file":"validate.js","names":["fieldSchemasToFormState","isValidID","uploadValidation","props","node","validation","options","id","data","operation","preferences","req","payload","t","idType","collections","relationTo","customIDType","db","defaultIDType","nodeID","value","Object","keys","length","collection","fields","result","collectionSlug","documentData","fieldSchemaMap","undefined","initialBlockData","permissions","renderAllFields","schemaPath","errorPathsSet","Set","fieldKey","fieldState","errorPaths","errorPath","add","Array","from","join"],"sources":["../../../../src/features/upload/server/validate.ts"],"sourcesContent":["import { fieldSchemasToFormState } from '@payloadcms/ui/forms/fieldSchemasToFormState'\nimport { isValidID } from 'payload'\n\nimport type { NodeValidation } from '../../typesServer.js'\nimport type { UploadFeatureProps } from './index.js'\nimport type { SerializedUploadNode } from './schema.js'\n\nexport const uploadValidation = (\n props: UploadFeatureProps,\n): NodeValidation<SerializedUploadNode> => {\n return async ({\n node,\n validation: {\n options: {\n id,\n data,\n operation,\n preferences,\n req,\n req: { payload, t },\n },\n },\n }) => {\n const idType = payload.collections[node.relationTo]?.customIDType || payload.db.defaultIDType\n // @ts-expect-error - Fix in Payload v4\n const nodeID = node?.value?.id || node?.value // for backwards-compatibility\n\n if (!isValidID(nodeID, idType)) {\n return t('validation:validUploadID')\n }\n\n if (!props?.collections) {\n return true\n }\n\n if (Object.keys(props?.collections).length === 0) {\n return true\n }\n\n const collection = props?.collections[node.relationTo]\n\n if (!collection?.fields?.length) {\n return true\n }\n\n const result = await fieldSchemasToFormState({\n id,\n collectionSlug: node.relationTo,\n data: node?.fields ?? {},\n documentData: data,\n fields: collection.fields,\n fieldSchemaMap: undefined,\n initialBlockData: node?.fields ?? {},\n operation: operation === 'create' || operation === 'update' ? operation : 'update',\n permissions: {},\n preferences,\n renderAllFields: false,\n req,\n schemaPath: '',\n })\n\n const errorPathsSet = new Set<string>()\n for (const fieldKey in result) {\n const fieldState = result[fieldKey]\n if (fieldState?.errorPaths?.length) {\n for (const errorPath of fieldState.errorPaths) {\n errorPathsSet.add(errorPath)\n }\n }\n }\n const errorPaths = Array.from(errorPathsSet)\n\n if (errorPaths.length) {\n return 'The following fields are invalid: ' + errorPaths.join(', ')\n }\n\n return true\n }\n}\n"],"mappings":"AAAA,SAASA,uBAAuB,QAAQ;AACxC,SAASC,SAAS,QAAQ;AAM1B,OAAO,MAAMC,gBAAA,GACXC,KAAA;EAEA,OAAO,OAAO;IACZC,IAAI;IACJC,UAAA,EAAY;MACVC,OAAA,EAAS;QACPC,EAAE;QACFC,IAAI;QACJC,SAAS;QACTC,WAAW;QACXC,GAAG;QACHA,GAAA,EAAK;UAAEC,OAAO;UAAEC;QAAC;MAAE;IACpB;EACF,CACF;IACC,MAAMC,MAAA,GAASF,OAAA,CAAQG,WAAW,CAACX,IAAA,CAAKY,UAAU,CAAC,EAAEC,YAAA,IAAgBL,OAAA,CAAQM,EAAE,CAACC,aAAa;IAC7F;IACA,MAAMC,MAAA,GAAShB,IAAA,EAAMiB,KAAA,EAAOd,EAAA,IAAMH,IAAA,EAAMiB,KAAA,CAAM;AAAA;IAE9C,IAAI,CAACpB,SAAA,CAAUmB,MAAA,EAAQN,MAAA,GAAS;MAC9B,OAAOD,CAAA,CAAE;IACX;IAEA,IAAI,CAACV,KAAA,EAAOY,WAAA,EAAa;MACvB,OAAO;IACT;IAEA,IAAIO,MAAA,CAAOC,IAAI,CAACpB,KAAA,EAAOY,WAAA,EAAaS,MAAM,KAAK,GAAG;MAChD,OAAO;IACT;IAEA,MAAMC,UAAA,GAAatB,KAAA,EAAOY,WAAW,CAACX,IAAA,CAAKY,UAAU,CAAC;IAEtD,IAAI,CAACS,UAAA,EAAYC,MAAA,EAAQF,MAAA,EAAQ;MAC/B,OAAO;IACT;IAEA,MAAMG,MAAA,GAAS,MAAM3B,uBAAA,CAAwB;MAC3CO,EAAA;MACAqB,cAAA,EAAgBxB,IAAA,CAAKY,UAAU;MAC/BR,IAAA,EAAMJ,IAAA,EAAMsB,MAAA,IAAU,CAAC;MACvBG,YAAA,EAAcrB,IAAA;MACdkB,MAAA,EAAQD,UAAA,CAAWC,MAAM;MACzBI,cAAA,EAAgBC,SAAA;MAChBC,gBAAA,EAAkB5B,IAAA,EAAMsB,MAAA,IAAU,CAAC;MACnCjB,SAAA,EAAWA,SAAA,KAAc,YAAYA,SAAA,KAAc,WAAWA,SAAA,GAAY;MAC1EwB,WAAA,EAAa,CAAC;MACdvB,WAAA;MACAwB,eAAA,EAAiB;MACjBvB,GAAA;MACAwB,UAAA,EAAY;IACd;IAEA,MAAMC,aAAA,GAAgB,IAAIC,GAAA;IAC1B,KAAK,MAAMC,QAAA,IAAYX,MAAA,EAAQ;MAC7B,MAAMY,UAAA,GAAaZ,MAAM,CAACW,QAAA,CAAS;MACnC,IAAIC,UAAA,EAAYC,UAAA,EAAYhB,MAAA,EAAQ;QAClC,KAAK,MAAMiB,SAAA,IAAaF,UAAA,CAAWC,UAAU,EAAE;UAC7CJ,aAAA,CAAcM,GAAG,CAACD,SAAA;QACpB;MACF;IACF;IACA,MAAMD,UAAA,GAAaG,KAAA,CAAMC,IAAI,CAACR,aAAA;IAE9B,IAAII,UAAA,CAAWhB,MAAM,EAAE;MACrB,OAAO,uCAAuCgB,UAAA,CAAWK,IAAI,CAAC;IAChE;IAEA,OAAO;EACT;AACF","ignoreList":[]}
1
+ {"version":3,"file":"validate.js","names":["fieldSchemasToFormState","isValidID","uploadValidation","props","node","validation","options","id","data","operation","preferences","req","payload","t","enabledCollectionSlugs","includes","relationTo","idType","collections","customIDType","db","defaultIDType","nodeID","value","Object","keys","length","collection","fields","result","collectionSlug","documentData","fieldSchemaMap","undefined","initialBlockData","permissions","renderAllFields","schemaPath","errorPathsSet","Set","fieldKey","fieldState","errorPaths","errorPath","add","Array","from","join"],"sources":["../../../../src/features/upload/server/validate.ts"],"sourcesContent":["import { fieldSchemasToFormState } from '@payloadcms/ui/forms/fieldSchemasToFormState'\nimport { isValidID } from 'payload'\n\nimport type { NodeValidation } from '../../typesServer.js'\nimport type { UploadFeatureServerProps } from './index.js'\nimport type { SerializedUploadNode } from './schema.js'\n\nexport const uploadValidation = (\n props: UploadFeatureServerProps,\n): NodeValidation<SerializedUploadNode> => {\n return async ({\n node,\n validation: {\n options: {\n id,\n data,\n operation,\n preferences,\n req,\n req: { payload, t },\n },\n },\n }) => {\n if (!props.enabledCollectionSlugs.includes(node.relationTo)) {\n return t('validation:invalidSelection')\n }\n\n const idType = payload.collections[node.relationTo]?.customIDType || payload.db.defaultIDType\n // @ts-expect-error - Fix in Payload v4\n const nodeID = node?.value?.id || node?.value // for backwards-compatibility\n\n if (!isValidID(nodeID, idType)) {\n return t('validation:validUploadID')\n }\n\n if (!props?.collections) {\n return true\n }\n\n if (Object.keys(props?.collections).length === 0) {\n return true\n }\n\n const collection = props?.collections[node.relationTo]\n\n if (!collection?.fields?.length) {\n return true\n }\n\n const result = await fieldSchemasToFormState({\n id,\n collectionSlug: node.relationTo,\n data: node?.fields ?? {},\n documentData: data,\n fields: collection.fields,\n fieldSchemaMap: undefined,\n initialBlockData: node?.fields ?? {},\n operation: operation === 'create' || operation === 'update' ? operation : 'update',\n permissions: {},\n preferences,\n renderAllFields: false,\n req,\n schemaPath: '',\n })\n\n const errorPathsSet = new Set<string>()\n for (const fieldKey in result) {\n const fieldState = result[fieldKey]\n if (fieldState?.errorPaths?.length) {\n for (const errorPath of fieldState.errorPaths) {\n errorPathsSet.add(errorPath)\n }\n }\n }\n const errorPaths = Array.from(errorPathsSet)\n\n if (errorPaths.length) {\n return 'The following fields are invalid: ' + errorPaths.join(', ')\n }\n\n return true\n }\n}\n"],"mappings":"AAAA,SAASA,uBAAuB,QAAQ;AACxC,SAASC,SAAS,QAAQ;AAM1B,OAAO,MAAMC,gBAAA,GACXC,KAAA;EAEA,OAAO,OAAO;IACZC,IAAI;IACJC,UAAA,EAAY;MACVC,OAAA,EAAS;QACPC,EAAE;QACFC,IAAI;QACJC,SAAS;QACTC,WAAW;QACXC,GAAG;QACHA,GAAA,EAAK;UAAEC,OAAO;UAAEC;QAAC;MAAE;IACpB;EACF,CACF;IACC,IAAI,CAACV,KAAA,CAAMW,sBAAsB,CAACC,QAAQ,CAACX,IAAA,CAAKY,UAAU,GAAG;MAC3D,OAAOH,CAAA,CAAE;IACX;IAEA,MAAMI,MAAA,GAASL,OAAA,CAAQM,WAAW,CAACd,IAAA,CAAKY,UAAU,CAAC,EAAEG,YAAA,IAAgBP,OAAA,CAAQQ,EAAE,CAACC,aAAa;IAC7F;IACA,MAAMC,MAAA,GAASlB,IAAA,EAAMmB,KAAA,EAAOhB,EAAA,IAAMH,IAAA,EAAMmB,KAAA,CAAM;AAAA;IAE9C,IAAI,CAACtB,SAAA,CAAUqB,MAAA,EAAQL,MAAA,GAAS;MAC9B,OAAOJ,CAAA,CAAE;IACX;IAEA,IAAI,CAACV,KAAA,EAAOe,WAAA,EAAa;MACvB,OAAO;IACT;IAEA,IAAIM,MAAA,CAAOC,IAAI,CAACtB,KAAA,EAAOe,WAAA,EAAaQ,MAAM,KAAK,GAAG;MAChD,OAAO;IACT;IAEA,MAAMC,UAAA,GAAaxB,KAAA,EAAOe,WAAW,CAACd,IAAA,CAAKY,UAAU,CAAC;IAEtD,IAAI,CAACW,UAAA,EAAYC,MAAA,EAAQF,MAAA,EAAQ;MAC/B,OAAO;IACT;IAEA,MAAMG,MAAA,GAAS,MAAM7B,uBAAA,CAAwB;MAC3CO,EAAA;MACAuB,cAAA,EAAgB1B,IAAA,CAAKY,UAAU;MAC/BR,IAAA,EAAMJ,IAAA,EAAMwB,MAAA,IAAU,CAAC;MACvBG,YAAA,EAAcvB,IAAA;MACdoB,MAAA,EAAQD,UAAA,CAAWC,MAAM;MACzBI,cAAA,EAAgBC,SAAA;MAChBC,gBAAA,EAAkB9B,IAAA,EAAMwB,MAAA,IAAU,CAAC;MACnCnB,SAAA,EAAWA,SAAA,KAAc,YAAYA,SAAA,KAAc,WAAWA,SAAA,GAAY;MAC1E0B,WAAA,EAAa,CAAC;MACdzB,WAAA;MACA0B,eAAA,EAAiB;MACjBzB,GAAA;MACA0B,UAAA,EAAY;IACd;IAEA,MAAMC,aAAA,GAAgB,IAAIC,GAAA;IAC1B,KAAK,MAAMC,QAAA,IAAYX,MAAA,EAAQ;MAC7B,MAAMY,UAAA,GAAaZ,MAAM,CAACW,QAAA,CAAS;MACnC,IAAIC,UAAA,EAAYC,UAAA,EAAYhB,MAAA,EAAQ;QAClC,KAAK,MAAMiB,SAAA,IAAaF,UAAA,CAAWC,UAAU,EAAE;UAC7CJ,aAAA,CAAcM,GAAG,CAACD,SAAA;QACpB;MACF;IACF;IACA,MAAMD,UAAA,GAAaG,KAAA,CAAMC,IAAI,CAACR,aAAA;IAE9B,IAAII,UAAA,CAAWhB,MAAM,EAAE;MACrB,OAAO,uCAAuCgB,UAAA,CAAWK,IAAI,CAAC;IAChE;IAEA,OAAO;EACT;AACF","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/Diff/converters/listitem/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8DAA8D,CAAA;AACvG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AAE5E,OAAO,aAAa,CAAA;AAEpB,eAAO,MAAM,8BAA8B,EAAE,mBAAmB,CAAC,sBAAsB,CA+DtF,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/field/Diff/converters/listitem/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8DAA8D,CAAA;AACvG,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AAE5E,OAAO,aAAa,CAAA;AAEpB,eAAO,MAAM,8BAA8B,EAAE,mBAAmB,CAAC,sBAAsB,CA+DtF,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { CheckIcon } from '@payloadcms/ui/rsc';
3
+ import escapeHTML from 'escape-html';
3
4
  import './index.css';
4
5
  export const ListItemDiffHTMLConverterAsync = {
5
6
  listitem: async ({
@@ -57,7 +58,7 @@ export const ListItemDiffHTMLConverterAsync = {
57
58
  return `<li
58
59
  class="${hasSubLists ? 'nestedListItem' : ''}"
59
60
  style="${hasSubLists ? `list-style-type: none;${providedCSSString}` : providedCSSString}"
60
- value="${node.value}"
61
+ value="${escapeHTML(String(node.value))}"
61
62
  data-enable-match="true"
62
63
  >${children}</li>`;
63
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["CheckIcon","ListItemDiffHTMLConverterAsync","listitem","node","nodesToHTML","parent","providedCSSString","hasSubLists","children","some","child","type","nodes","join","listType","ReactDOMServer","default","JSX","_jsx","checked","className","role","tabIndex","value","dangerouslySetInnerHTML","__html","_jsxs","html","renderToStaticMarkup","styleIndex","indexOf","classIndex","classEndIndex","substring","classNameWithStyle","htmlWithStyle","replace"],"sources":["../../../../../src/field/Diff/converters/listitem/index.tsx"],"sourcesContent":["import { CheckIcon } from '@payloadcms/ui/rsc'\n\nimport type { HTMLConvertersAsync } from '../../../../features/converters/lexicalToHtml/async/types.js'\nimport type { SerializedListItemNode } from '../../../../types/nodeTypes.js'\n\nimport './index.css'\n\nexport const ListItemDiffHTMLConverterAsync: HTMLConvertersAsync<SerializedListItemNode> = {\n listitem: async ({ node, nodesToHTML, parent, providedCSSString }) => {\n const hasSubLists = node.children.some((child) => child.type === 'list')\n\n const children = (\n await nodesToHTML({\n nodes: node.children,\n })\n ).join('')\n\n if ('listType' in parent && parent?.listType === 'check') {\n const ReactDOMServer = (await import('react-dom/server')).default\n\n const JSX = (\n <li\n aria-checked={node.checked ? true : false}\n className={`checkboxItem ${node.checked ? 'checkboxItem--checked' : 'checkboxItem--unchecked'}${\n hasSubLists ? ' checkboxItem--nested' : ''\n }`}\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-to-interactive-role\n role=\"checkbox\"\n tabIndex={-1}\n value={node.value}\n >\n {hasSubLists ? (\n // When sublists exist, just render them safely as HTML\n <div dangerouslySetInnerHTML={{ __html: children }} />\n ) : (\n // Otherwise, show our custom styled checkbox\n <div className=\"checkboxItem__wrapper\">\n <div\n className=\"checkboxItem__icon\"\n data-checked={node.checked}\n data-enable-match=\"true\"\n >\n {node.checked && <CheckIcon />}\n </div>\n <span className=\"checkboxItem__label\">{children}</span>\n </div>\n )}\n </li>\n )\n\n const html = ReactDOMServer.renderToStaticMarkup(JSX)\n\n // Add style=\"list-style-type: none;${providedCSSString}\" to html\n const styleIndex = html.indexOf('class=\"list-item-checkbox')\n const classIndex = html.indexOf('class=\"list-item-checkbox', styleIndex)\n const classEndIndex = html.indexOf('\"', classIndex + 6)\n const className = html.substring(classIndex, classEndIndex)\n const classNameWithStyle = `${className} style=\"list-style-type: none;${providedCSSString}\"`\n const htmlWithStyle = html.replace(className, classNameWithStyle)\n\n return htmlWithStyle\n } else {\n return `<li\n class=\"${hasSubLists ? 'nestedListItem' : ''}\"\n style=\"${hasSubLists ? `list-style-type: none;${providedCSSString}` : providedCSSString}\"\n value=\"${node.value}\"\n data-enable-match=\"true\"\n >${children}</li>`\n }\n },\n}\n"],"mappings":";AAAA,SAASA,SAAS,QAAQ;AAK1B,OAAO;AAEP,OAAO,MAAMC,8BAAA,GAA8E;EACzFC,QAAA,EAAU,MAAAA,CAAO;IAAEC,IAAI;IAAEC,WAAW;IAAEC,MAAM;IAAEC;EAAiB,CAAE;IAC/D,MAAMC,WAAA,GAAcJ,IAAA,CAAKK,QAAQ,CAACC,IAAI,CAAEC,KAAA,IAAUA,KAAA,CAAMC,IAAI,KAAK;IAEjE,MAAMH,QAAA,GAAW,CACf,MAAMJ,WAAA,CAAY;MAChBQ,KAAA,EAAOT,IAAA,CAAKK;IACd,EAAC,EACDK,IAAI,CAAC;IAEP,IAAI,cAAcR,MAAA,IAAUA,MAAA,EAAQS,QAAA,KAAa,SAAS;MACxD,MAAMC,cAAA,GAAiB,CAAC,MAAM,MAAM,CAAC,mBAAkB,EAAGC,OAAO;MAEjE,MAAMC,GAAA,gBACJC,IAAA,CAAC;QACC,gBAAcf,IAAA,CAAKgB,OAAO,GAAG,OAAO;QACpCC,SAAA,EAAW,gBAAgBjB,IAAA,CAAKgB,OAAO,GAAG,0BAA0B,4BAClEZ,WAAA,GAAc,0BAA0B,IACxC;QACF;QACAc,IAAA,EAAK;QACLC,QAAA,EAAU,CAAC;QACXC,KAAA,EAAOpB,IAAA,CAAKoB,KAAK;kBAEhBhB,WAAA;QACC;;QACAW,IAAA,CAAC;UAAIM,uBAAA,EAAyB;YAAEC,MAAA,EAAQjB;UAAS;;QAEjD;;QACAkB,KAAA,CAAC;UAAIN,SAAA,EAAU;kCACbF,IAAA,CAAC;YACCE,SAAA,EAAU;YACV,gBAAcjB,IAAA,CAAKgB,OAAO;YAC1B,qBAAkB;sBAEjBhB,IAAA,CAAKgB,OAAO,iBAAID,IAAA,CAAClB,SAAA;2BAEpBkB,IAAA,CAAC;YAAKE,SAAA,EAAU;sBAAuBZ;;;;MAM/C,MAAMmB,IAAA,GAAOZ,cAAA,CAAea,oBAAoB,CAACX,GAAA;MAEjD;MACA,MAAMY,UAAA,GAAaF,IAAA,CAAKG,OAAO,CAAC;MAChC,MAAMC,UAAA,GAAaJ,IAAA,CAAKG,OAAO,CAAC,6BAA6BD,UAAA;MAC7D,MAAMG,aAAA,GAAgBL,IAAA,CAAKG,OAAO,CAAC,KAAKC,UAAA,GAAa;MACrD,MAAMX,SAAA,GAAYO,IAAA,CAAKM,SAAS,CAACF,UAAA,EAAYC,aAAA;MAC7C,MAAME,kBAAA,GAAqB,GAAGd,SAAA,iCAA0Cd,iBAAA,GAAoB;MAC5F,MAAM6B,aAAA,GAAgBR,IAAA,CAAKS,OAAO,CAAChB,SAAA,EAAWc,kBAAA;MAE9C,OAAOC,aAAA;IACT,OAAO;MACL,OAAO;mBACM5B,WAAA,GAAc,mBAAmB;mBACjCA,WAAA,GAAc,yBAAyBD,iBAAA,EAAmB,GAAGA,iBAAA;mBAC7DH,IAAA,CAAKoB,KAAK;;WAElBf,QAAA,OAAe;IACtB;EACF;AACF","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["CheckIcon","escapeHTML","ListItemDiffHTMLConverterAsync","listitem","node","nodesToHTML","parent","providedCSSString","hasSubLists","children","some","child","type","nodes","join","listType","ReactDOMServer","default","JSX","_jsx","checked","className","role","tabIndex","value","dangerouslySetInnerHTML","__html","_jsxs","html","renderToStaticMarkup","styleIndex","indexOf","classIndex","classEndIndex","substring","classNameWithStyle","htmlWithStyle","replace","String"],"sources":["../../../../../src/field/Diff/converters/listitem/index.tsx"],"sourcesContent":["import { CheckIcon } from '@payloadcms/ui/rsc'\nimport escapeHTML from 'escape-html'\n\nimport type { HTMLConvertersAsync } from '../../../../features/converters/lexicalToHtml/async/types.js'\nimport type { SerializedListItemNode } from '../../../../types/nodeTypes.js'\n\nimport './index.css'\n\nexport const ListItemDiffHTMLConverterAsync: HTMLConvertersAsync<SerializedListItemNode> = {\n listitem: async ({ node, nodesToHTML, parent, providedCSSString }) => {\n const hasSubLists = node.children.some((child) => child.type === 'list')\n\n const children = (\n await nodesToHTML({\n nodes: node.children,\n })\n ).join('')\n\n if ('listType' in parent && parent?.listType === 'check') {\n const ReactDOMServer = (await import('react-dom/server')).default\n\n const JSX = (\n <li\n aria-checked={node.checked ? true : false}\n className={`checkboxItem ${node.checked ? 'checkboxItem--checked' : 'checkboxItem--unchecked'}${\n hasSubLists ? ' checkboxItem--nested' : ''\n }`}\n // eslint-disable-next-line jsx-a11y/no-noninteractive-element-to-interactive-role\n role=\"checkbox\"\n tabIndex={-1}\n value={node.value}\n >\n {hasSubLists ? (\n // When sublists exist, just render them safely as HTML\n <div dangerouslySetInnerHTML={{ __html: children }} />\n ) : (\n // Otherwise, show our custom styled checkbox\n <div className=\"checkboxItem__wrapper\">\n <div\n className=\"checkboxItem__icon\"\n data-checked={node.checked}\n data-enable-match=\"true\"\n >\n {node.checked && <CheckIcon />}\n </div>\n <span className=\"checkboxItem__label\">{children}</span>\n </div>\n )}\n </li>\n )\n\n const html = ReactDOMServer.renderToStaticMarkup(JSX)\n\n // Add style=\"list-style-type: none;${providedCSSString}\" to html\n const styleIndex = html.indexOf('class=\"list-item-checkbox')\n const classIndex = html.indexOf('class=\"list-item-checkbox', styleIndex)\n const classEndIndex = html.indexOf('\"', classIndex + 6)\n const className = html.substring(classIndex, classEndIndex)\n const classNameWithStyle = `${className} style=\"list-style-type: none;${providedCSSString}\"`\n const htmlWithStyle = html.replace(className, classNameWithStyle)\n\n return htmlWithStyle\n } else {\n return `<li\n class=\"${hasSubLists ? 'nestedListItem' : ''}\"\n style=\"${hasSubLists ? `list-style-type: none;${providedCSSString}` : providedCSSString}\"\n value=\"${escapeHTML(String(node.value))}\"\n data-enable-match=\"true\"\n >${children}</li>`\n }\n },\n}\n"],"mappings":";AAAA,SAASA,SAAS,QAAQ;AAC1B,OAAOC,UAAA,MAAgB;AAKvB,OAAO;AAEP,OAAO,MAAMC,8BAAA,GAA8E;EACzFC,QAAA,EAAU,MAAAA,CAAO;IAAEC,IAAI;IAAEC,WAAW;IAAEC,MAAM;IAAEC;EAAiB,CAAE;IAC/D,MAAMC,WAAA,GAAcJ,IAAA,CAAKK,QAAQ,CAACC,IAAI,CAAEC,KAAA,IAAUA,KAAA,CAAMC,IAAI,KAAK;IAEjE,MAAMH,QAAA,GAAW,CACf,MAAMJ,WAAA,CAAY;MAChBQ,KAAA,EAAOT,IAAA,CAAKK;IACd,EAAC,EACDK,IAAI,CAAC;IAEP,IAAI,cAAcR,MAAA,IAAUA,MAAA,EAAQS,QAAA,KAAa,SAAS;MACxD,MAAMC,cAAA,GAAiB,CAAC,MAAM,MAAM,CAAC,mBAAkB,EAAGC,OAAO;MAEjE,MAAMC,GAAA,gBACJC,IAAA,CAAC;QACC,gBAAcf,IAAA,CAAKgB,OAAO,GAAG,OAAO;QACpCC,SAAA,EAAW,gBAAgBjB,IAAA,CAAKgB,OAAO,GAAG,0BAA0B,4BAClEZ,WAAA,GAAc,0BAA0B,IACxC;QACF;QACAc,IAAA,EAAK;QACLC,QAAA,EAAU,CAAC;QACXC,KAAA,EAAOpB,IAAA,CAAKoB,KAAK;kBAEhBhB,WAAA;QACC;;QACAW,IAAA,CAAC;UAAIM,uBAAA,EAAyB;YAAEC,MAAA,EAAQjB;UAAS;;QAEjD;;QACAkB,KAAA,CAAC;UAAIN,SAAA,EAAU;kCACbF,IAAA,CAAC;YACCE,SAAA,EAAU;YACV,gBAAcjB,IAAA,CAAKgB,OAAO;YAC1B,qBAAkB;sBAEjBhB,IAAA,CAAKgB,OAAO,iBAAID,IAAA,CAACnB,SAAA;2BAEpBmB,IAAA,CAAC;YAAKE,SAAA,EAAU;sBAAuBZ;;;;MAM/C,MAAMmB,IAAA,GAAOZ,cAAA,CAAea,oBAAoB,CAACX,GAAA;MAEjD;MACA,MAAMY,UAAA,GAAaF,IAAA,CAAKG,OAAO,CAAC;MAChC,MAAMC,UAAA,GAAaJ,IAAA,CAAKG,OAAO,CAAC,6BAA6BD,UAAA;MAC7D,MAAMG,aAAA,GAAgBL,IAAA,CAAKG,OAAO,CAAC,KAAKC,UAAA,GAAa;MACrD,MAAMX,SAAA,GAAYO,IAAA,CAAKM,SAAS,CAACF,UAAA,EAAYC,aAAA;MAC7C,MAAME,kBAAA,GAAqB,GAAGd,SAAA,iCAA0Cd,iBAAA,GAAoB;MAC5F,MAAM6B,aAAA,GAAgBR,IAAA,CAAKS,OAAO,CAAChB,SAAA,EAAWc,kBAAA;MAE9C,OAAOC,aAAA;IACT,OAAO;MACL,OAAO;mBACM5B,WAAA,GAAc,mBAAmB;mBACjCA,WAAA,GAAc,yBAAyBD,iBAAA,EAAmB,GAAGA,iBAAA;mBAC7DN,UAAA,CAAWqC,MAAA,CAAOlC,IAAA,CAAKoB,KAAK;;WAEpCf,QAAA,OAAe;IACtB;EACF;AACF","ignoreList":[]}
@@ -1,17 +1,17 @@
1
1
  @layer payload-default {
2
2
  .lexical-diff .field-diff-content {
3
3
  .html-diff {
4
- font-family: var(--text-body-large-font-family);
5
- font-size: var(--text-body-large-font-size);
6
- font-weight: var(--text-body-large-font-weight);
7
- line-height: var(--text-body-large-line-height);
8
- letter-spacing: -0.0325px;
4
+ font-family: var(--text-body-medium-font-family);
5
+ font-size: var(--text-body-medium-font-size);
6
+ font-weight: var(--text-body-medium-font-weight);
7
+ line-height: var(--text-body-medium-line-height);
8
+ letter-spacing: var(--text-body-medium-letter-spacing);
9
9
  }
10
10
 
11
11
  blockquote {
12
- font-size: var(--text-body-large-font-size);
13
- line-height: 1.5;
14
- letter-spacing: normal;
12
+ font-size: var(--text-body-medium-font-size);
13
+ line-height: var(--text-body-medium-line-height);
14
+ letter-spacing: var(--text-body-medium-letter-spacing);
15
15
  margin-inline: var(--spacer-1);
16
16
  padding-inline-start: var(--spacer-2-5);
17
17
  padding-block: var(--spacer-1);
@@ -40,32 +40,26 @@
40
40
  h6 {
41
41
  font-weight: 550;
42
42
  line-height: 1.2;
43
+ letter-spacing: -0.017em;
43
44
  }
44
45
 
45
46
  h1 {
46
- font-size: 2rem;
47
- letter-spacing: -0.544px;
47
+ font-size: 1.5rem;
48
48
  }
49
49
  h2 {
50
- font-size: 1.5rem;
51
- line-height: 2rem;
52
- letter-spacing: var(--text-heading-large-letter-spacing);
50
+ font-size: 1.25rem;
53
51
  }
54
52
  h3 {
55
- font-size: 1.25rem;
56
- letter-spacing: -0.34px;
53
+ font-size: 1.125rem;
57
54
  }
58
55
  h4 {
59
56
  font-size: 1rem;
60
- letter-spacing: -0.272px;
61
57
  }
62
58
  h5 {
63
- font-size: 0.8125rem;
64
- letter-spacing: -0.221px;
59
+ font-size: 0.875rem;
65
60
  }
66
61
  h6 {
67
- font-size: 0.6875rem;
68
- letter-spacing: -0.187px;
62
+ font-size: 0.75rem;
69
63
  }
70
64
 
71
65
  > .html-diff > :first-child {
@@ -119,8 +113,11 @@
119
113
  }
120
114
 
121
115
  li {
122
- font-family: var(--text-body-large-font-family);
123
- font-size: var(--text-body-large-font-size);
116
+ font-family: var(--text-body-medium-font-family);
117
+ font-size: var(--text-body-medium-font-size);
118
+ font-weight: var(--text-body-medium-font-weight);
119
+ line-height: var(--text-body-medium-line-height);
120
+ letter-spacing: var(--text-body-medium-letter-spacing);
124
121
  margin-block: 0 var(--spacer-1);
125
122
  margin-inline-start: var(--spacer-4);
126
123
  position: relative;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/field/Diff/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,SAAS,CAAA;AAI/D,OAAO,aAAa,CAAA;AACpB,OAAO,gBAAgB,CAAA;AAqBvB,eAAO,MAAM,oBAAoB,EAAE,gCAiGlC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/field/Diff/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,SAAS,CAAA;AAI/D,OAAO,aAAa,CAAA;AACpB,OAAO,gBAAgB,CAAA;AAqBvB,eAAO,MAAM,oBAAoB,EAAE,gCAkGlC,CAAA"}
@@ -78,6 +78,7 @@ export const LexicalDiffComponent = async args => {
78
78
  const payloadPopulateFn = await getPayloadPopulateFn({
79
79
  currentDepth: 0,
80
80
  depth: 1,
81
+ overrideAccess: false,
81
82
  req
82
83
  });
83
84
  const fromHTML = await convertLexicalToHTMLAsync({
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["FieldDiffContainer","getHTMLDiffComponents","formatAdminURL","React","convertLexicalToHTMLAsync","getPayloadPopulateFn","LinkDiffHTMLConverterAsync","ListItemDiffHTMLConverterAsync","RelationshipDiffHTMLConverterAsync","UnknownDiffHTMLConverterAsync","UploadDiffHTMLConverterAsync","baseClass","LexicalDiffComponent","args","comparisonValue","valueFrom","field","i18n","locale","nestingLevel","req","versionValue","valueTo","internalDocToHref","linkNode","populate","fields","doc","relationTo","value","docId","id","collectionSlug","adminRoute","payload","config","routes","admin","path","serverURL","converters","defaultConverters","payloadPopulateFn","currentDepth","depth","fromHTML","data","disableContainer","toHTML","From","To","length","_jsx","className","label"],"sources":["../../../src/field/Diff/index.tsx"],"sourcesContent":["import type { SerializedEditorState } from 'lexical'\nimport type { RichTextFieldDiffServerComponent } from 'payload'\n\nimport { FieldDiffContainer, getHTMLDiffComponents } from '@payloadcms/ui/rsc'\n\nimport './index.css'\nimport '../bundled.css'\n\nimport { formatAdminURL } from 'payload/shared'\nimport React from 'react'\n\nimport type {\n HTMLConvertersFunctionAsync,\n HTMLPopulateFn,\n} from '../../features/converters/lexicalToHtml/async/types.js'\nimport type { SerializedLinkNode } from '../../types/nodeTypes.js'\n\nimport { convertLexicalToHTMLAsync } from '../../features/converters/lexicalToHtml/async/index.js'\nimport { getPayloadPopulateFn } from '../../features/converters/utilities/payloadPopulateFn.js'\nimport { LinkDiffHTMLConverterAsync } from './converters/link.js'\nimport { ListItemDiffHTMLConverterAsync } from './converters/listitem/index.js'\nimport { RelationshipDiffHTMLConverterAsync } from './converters/relationship/index.js'\nimport { UnknownDiffHTMLConverterAsync } from './converters/unknown/index.js'\nimport { UploadDiffHTMLConverterAsync } from './converters/upload/index.js'\n\nconst baseClass = 'lexical-diff'\n\nexport const LexicalDiffComponent: RichTextFieldDiffServerComponent = async (args) => {\n const {\n comparisonValue: valueFrom,\n field,\n i18n,\n locale,\n nestingLevel,\n req,\n versionValue: valueTo,\n } = args\n\n const internalDocToHref = async ({\n linkNode,\n populate,\n }: {\n linkNode: SerializedLinkNode\n populate?: HTMLPopulateFn\n }) => {\n if (!linkNode.fields.doc) {\n return '#'\n }\n\n const { relationTo, value } = linkNode.fields.doc\n\n let docId: number | string\n\n if (typeof value === 'object' && value !== null) {\n docId = value.id\n } else if (populate && typeof value !== 'object') {\n const doc = await populate({\n id: value,\n collectionSlug: relationTo,\n })\n\n if (!doc || !doc.id) {\n return '#'\n }\n\n docId = doc.id\n } else {\n docId = value\n }\n\n return formatAdminURL({\n adminRoute: req.payload.config.routes.admin,\n path: `/collections/${relationTo}/${docId}`,\n serverURL: req.payload.config.serverURL,\n })\n }\n\n const converters: HTMLConvertersFunctionAsync = ({ defaultConverters }) => ({\n ...defaultConverters,\n ...LinkDiffHTMLConverterAsync({ internalDocToHref }),\n ...ListItemDiffHTMLConverterAsync,\n ...UploadDiffHTMLConverterAsync({ i18n, req }),\n ...RelationshipDiffHTMLConverterAsync({ i18n, req }),\n ...UnknownDiffHTMLConverterAsync({ i18n, req }),\n })\n\n const payloadPopulateFn = await getPayloadPopulateFn({\n currentDepth: 0,\n depth: 1,\n req,\n })\n const fromHTML = await convertLexicalToHTMLAsync({\n converters,\n data: valueFrom as SerializedEditorState,\n disableContainer: true,\n populate: payloadPopulateFn,\n })\n\n const toHTML = await convertLexicalToHTMLAsync({\n converters,\n data: valueTo as SerializedEditorState,\n disableContainer: true,\n populate: payloadPopulateFn,\n })\n\n const { From, To } = getHTMLDiffComponents({\n // Ensure empty paragraph is displayed for empty rich text fields - otherwise, toHTML may be displayed in the wrong column\n fromHTML: fromHTML?.length ? fromHTML : '<p></p>',\n toHTML: toHTML?.length ? toHTML : '<p></p>',\n })\n\n return (\n <FieldDiffContainer\n className={baseClass}\n From={From}\n i18n={i18n}\n label={{\n label: field.label,\n locale,\n }}\n nestingLevel={nestingLevel}\n To={To}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["FieldDiffContainer","getHTMLDiffComponents","formatAdminURL","React","convertLexicalToHTMLAsync","getPayloadPopulateFn","LinkDiffHTMLConverterAsync","ListItemDiffHTMLConverterAsync","RelationshipDiffHTMLConverterAsync","UnknownDiffHTMLConverterAsync","UploadDiffHTMLConverterAsync","baseClass","LexicalDiffComponent","args","comparisonValue","valueFrom","field","i18n","locale","nestingLevel","req","versionValue","valueTo","internalDocToHref","linkNode","populate","fields","doc","relationTo","value","docId","id","collectionSlug","adminRoute","payload","config","routes","admin","path","serverURL","converters","defaultConverters","payloadPopulateFn","currentDepth","depth","overrideAccess","fromHTML","data","disableContainer","toHTML","From","To","length","_jsx","className","label"],"sources":["../../../src/field/Diff/index.tsx"],"sourcesContent":["import type { SerializedEditorState } from 'lexical'\nimport type { RichTextFieldDiffServerComponent } from 'payload'\n\nimport { FieldDiffContainer, getHTMLDiffComponents } from '@payloadcms/ui/rsc'\n\nimport './index.css'\nimport '../bundled.css'\n\nimport { formatAdminURL } from 'payload/shared'\nimport React from 'react'\n\nimport type {\n HTMLConvertersFunctionAsync,\n HTMLPopulateFn,\n} from '../../features/converters/lexicalToHtml/async/types.js'\nimport type { SerializedLinkNode } from '../../types/nodeTypes.js'\n\nimport { convertLexicalToHTMLAsync } from '../../features/converters/lexicalToHtml/async/index.js'\nimport { getPayloadPopulateFn } from '../../features/converters/utilities/payloadPopulateFn.js'\nimport { LinkDiffHTMLConverterAsync } from './converters/link.js'\nimport { ListItemDiffHTMLConverterAsync } from './converters/listitem/index.js'\nimport { RelationshipDiffHTMLConverterAsync } from './converters/relationship/index.js'\nimport { UnknownDiffHTMLConverterAsync } from './converters/unknown/index.js'\nimport { UploadDiffHTMLConverterAsync } from './converters/upload/index.js'\n\nconst baseClass = 'lexical-diff'\n\nexport const LexicalDiffComponent: RichTextFieldDiffServerComponent = async (args) => {\n const {\n comparisonValue: valueFrom,\n field,\n i18n,\n locale,\n nestingLevel,\n req,\n versionValue: valueTo,\n } = args\n\n const internalDocToHref = async ({\n linkNode,\n populate,\n }: {\n linkNode: SerializedLinkNode\n populate?: HTMLPopulateFn\n }) => {\n if (!linkNode.fields.doc) {\n return '#'\n }\n\n const { relationTo, value } = linkNode.fields.doc\n\n let docId: number | string\n\n if (typeof value === 'object' && value !== null) {\n docId = value.id\n } else if (populate && typeof value !== 'object') {\n const doc = await populate({\n id: value,\n collectionSlug: relationTo,\n })\n\n if (!doc || !doc.id) {\n return '#'\n }\n\n docId = doc.id\n } else {\n docId = value\n }\n\n return formatAdminURL({\n adminRoute: req.payload.config.routes.admin,\n path: `/collections/${relationTo}/${docId}`,\n serverURL: req.payload.config.serverURL,\n })\n }\n\n const converters: HTMLConvertersFunctionAsync = ({ defaultConverters }) => ({\n ...defaultConverters,\n ...LinkDiffHTMLConverterAsync({ internalDocToHref }),\n ...ListItemDiffHTMLConverterAsync,\n ...UploadDiffHTMLConverterAsync({ i18n, req }),\n ...RelationshipDiffHTMLConverterAsync({ i18n, req }),\n ...UnknownDiffHTMLConverterAsync({ i18n, req }),\n })\n\n const payloadPopulateFn = await getPayloadPopulateFn({\n currentDepth: 0,\n depth: 1,\n overrideAccess: false,\n req,\n })\n const fromHTML = await convertLexicalToHTMLAsync({\n converters,\n data: valueFrom as SerializedEditorState,\n disableContainer: true,\n populate: payloadPopulateFn,\n })\n\n const toHTML = await convertLexicalToHTMLAsync({\n converters,\n data: valueTo as SerializedEditorState,\n disableContainer: true,\n populate: payloadPopulateFn,\n })\n\n const { From, To } = getHTMLDiffComponents({\n // Ensure empty paragraph is displayed for empty rich text fields - otherwise, toHTML may be displayed in the wrong column\n fromHTML: fromHTML?.length ? fromHTML : '<p></p>',\n toHTML: toHTML?.length ? toHTML : '<p></p>',\n })\n\n return (\n <FieldDiffContainer\n className={baseClass}\n From={From}\n i18n={i18n}\n label={{\n label: field.label,\n locale,\n }}\n nestingLevel={nestingLevel}\n To={To}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -14,11 +14,13 @@ export declare const RenderLexical: React.FC<
14
14
  * If neither is passed, it will rely on the parent form to manage the value.
15
15
  */
16
16
  {
17
+ /** @deprecated Use `name` and `label` instead. */
18
+ field?: Partial<LexicalRichTextField>;
17
19
  /**
18
20
  * Override the loading state while the field component is being fetched and rendered.
19
21
  */
20
22
  Loading?: React.ReactElement;
21
23
  setValue?: FieldType<DefaultTypedEditorState | undefined>['setValue'];
22
24
  value?: FieldType<DefaultTypedEditorState | undefined>['value'];
23
- } & RenderFieldServerFnArgs<LexicalRichTextField>>;
25
+ } & Omit<RenderFieldServerFnArgs, 'hidden'>>;
24
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/field/RenderLexical/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,uBAAuB,EAK7B,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAyC,MAAM,OAAO,CAAA;AAE7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAEvE;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE;AAClC;;;GAGG;AACH;IACE;;OAEG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,YAAY,CAAA;IAE5B,QAAQ,CAAC,EAAE,SAAS,CAAC,uBAAuB,GAAG,SAAS,CAAC,CAAC,UAAU,CAAC,CAAA;IACrE,KAAK,CAAC,EAAE,SAAS,CAAC,uBAAuB,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAA;CAChE,GAAG,uBAAuB,CAAC,oBAAoB,CAAC,CA4FlD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/field/RenderLexical/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,SAAS,EACd,KAAK,uBAAuB,EAK7B,MAAM,gBAAgB,CAAA;AACvB,OAAO,KAAyC,MAAM,OAAO,CAAA;AAE7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAChE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAEvE;;;;;GAKG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE;AAClC;;;GAGG;AACH;IACE,kDAAkD;IAClD,KAAK,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAA;IACrC;;OAEG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,YAAY,CAAA;IAE5B,QAAQ,CAAC,EAAE,SAAS,CAAC,uBAAuB,GAAG,SAAS,CAAC,CAAC,UAAU,CAAC,CAAA;IACrE,KAAK,CAAC,EAAE,SAAS,CAAC,uBAAuB,GAAG,SAAS,CAAC,CAAC,OAAO,CAAC,CAAA;CAChE,GAAG,IAAI,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CA0F5C,CAAA"}