@payloadcms/ui 3.69.0-internal.2883df2 → 3.69.0

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 (216) hide show
  1. package/dist/elements/AddNewRelation/index.js +1 -1
  2. package/dist/elements/AddNewRelation/index.js.map +1 -1
  3. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  4. package/dist/elements/AppHeader/index.js +2 -1
  5. package/dist/elements/AppHeader/index.js.map +1 -1
  6. package/dist/elements/AppHeader/index.scss +0 -1
  7. package/dist/elements/Autosave/index.d.ts.map +1 -1
  8. package/dist/elements/Autosave/index.js +20 -5
  9. package/dist/elements/Autosave/index.js.map +1 -1
  10. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  11. package/dist/elements/BulkUpload/FormsManager/index.js +10 -6
  12. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  13. package/dist/elements/CopyLocaleData/index.d.ts.map +1 -1
  14. package/dist/elements/CopyLocaleData/index.js +36 -39
  15. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  16. package/dist/elements/DefaultListViewTabs/index.d.ts.map +1 -1
  17. package/dist/elements/DefaultListViewTabs/index.js +1 -2
  18. package/dist/elements/DefaultListViewTabs/index.js.map +1 -1
  19. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  20. package/dist/elements/DeleteDocument/index.js +8 -5
  21. package/dist/elements/DeleteDocument/index.js.map +1 -1
  22. package/dist/elements/DeleteMany/index.d.ts.map +1 -1
  23. package/dist/elements/DeleteMany/index.js +19 -16
  24. package/dist/elements/DeleteMany/index.js.map +1 -1
  25. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  26. package/dist/elements/DocumentControls/index.js.map +1 -1
  27. package/dist/elements/DuplicateDocument/index.d.ts.map +1 -1
  28. package/dist/elements/DuplicateDocument/index.js +6 -3
  29. package/dist/elements/DuplicateDocument/index.js.map +1 -1
  30. package/dist/elements/EditMany/DrawerContent.d.ts.map +1 -1
  31. package/dist/elements/EditMany/DrawerContent.js +14 -6
  32. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  33. package/dist/elements/FolderView/Cell/index.client.d.ts.map +1 -1
  34. package/dist/elements/FolderView/Cell/index.client.js +9 -2
  35. package/dist/elements/FolderView/Cell/index.client.js.map +1 -1
  36. package/dist/elements/FolderView/CurrentFolderActions/index.d.ts.map +1 -1
  37. package/dist/elements/FolderView/CurrentFolderActions/index.js +7 -4
  38. package/dist/elements/FolderView/CurrentFolderActions/index.js.map +1 -1
  39. package/dist/elements/FolderView/MoveDocToFolder/index.d.ts +1 -1
  40. package/dist/elements/FolderView/MoveDocToFolder/index.d.ts.map +1 -1
  41. package/dist/elements/FolderView/MoveDocToFolder/index.js +5 -1
  42. package/dist/elements/FolderView/MoveDocToFolder/index.js.map +1 -1
  43. package/dist/elements/ItemsDrawer/ItemSearch/index.d.ts +8 -0
  44. package/dist/elements/ItemsDrawer/ItemSearch/index.d.ts.map +1 -0
  45. package/dist/elements/ItemsDrawer/ItemSearch/index.js +56 -0
  46. package/dist/elements/ItemsDrawer/ItemSearch/index.js.map +1 -0
  47. package/dist/elements/ItemsDrawer/ItemSearch/index.scss +38 -0
  48. package/dist/elements/ItemsDrawer/index.d.ts +15 -0
  49. package/dist/elements/ItemsDrawer/index.d.ts.map +1 -0
  50. package/dist/elements/ItemsDrawer/index.js +195 -0
  51. package/dist/elements/ItemsDrawer/index.js.map +1 -0
  52. package/dist/elements/ItemsDrawer/index.scss +102 -0
  53. package/dist/elements/Link/index.d.ts.map +1 -1
  54. package/dist/elements/Link/index.js +5 -3
  55. package/dist/elements/Link/index.js.map +1 -1
  56. package/dist/elements/ListControls/index.d.ts.map +1 -1
  57. package/dist/elements/ListControls/index.js +6 -4
  58. package/dist/elements/ListControls/index.js.map +1 -1
  59. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.d.ts.map +1 -1
  60. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +9 -2
  61. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
  62. package/dist/elements/PermanentlyDeleteButton/index.d.ts.map +1 -1
  63. package/dist/elements/PermanentlyDeleteButton/index.js +21 -15
  64. package/dist/elements/PermanentlyDeleteButton/index.js.map +1 -1
  65. package/dist/elements/Popup/PopupButtonList/index.scss +1 -0
  66. package/dist/elements/Popup/PopupTrigger/index.d.ts +1 -1
  67. package/dist/elements/Popup/PopupTrigger/index.d.ts.map +1 -1
  68. package/dist/elements/Popup/PopupTrigger/index.js +24 -92
  69. package/dist/elements/Popup/PopupTrigger/index.js.map +1 -1
  70. package/dist/elements/Popup/index.d.ts +32 -1
  71. package/dist/elements/Popup/index.d.ts.map +1 -1
  72. package/dist/elements/Popup/index.js +249 -122
  73. package/dist/elements/Popup/index.js.map +1 -1
  74. package/dist/elements/Popup/index.scss +49 -231
  75. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
  76. package/dist/elements/PublishButton/ScheduleDrawer/index.js +6 -2
  77. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  78. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  79. package/dist/elements/PublishButton/index.js +17 -5
  80. package/dist/elements/PublishButton/index.js.map +1 -1
  81. package/dist/elements/PublishMany/DrawerContent.d.ts.map +1 -1
  82. package/dist/elements/PublishMany/DrawerContent.js +8 -5
  83. package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
  84. package/dist/elements/QueryPresets/QueryPresetBar/index.d.ts.map +1 -1
  85. package/dist/elements/QueryPresets/QueryPresetBar/index.js +11 -4
  86. package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
  87. package/dist/elements/RestoreButton/index.d.ts.map +1 -1
  88. package/dist/elements/RestoreButton/index.js +21 -15
  89. package/dist/elements/RestoreButton/index.js.map +1 -1
  90. package/dist/elements/RestoreMany/index.d.ts.map +1 -1
  91. package/dist/elements/RestoreMany/index.js +17 -14
  92. package/dist/elements/RestoreMany/index.js.map +1 -1
  93. package/dist/elements/SaveDraftButton/index.d.ts.map +1 -1
  94. package/dist/elements/SaveDraftButton/index.js +11 -5
  95. package/dist/elements/SaveDraftButton/index.js.map +1 -1
  96. package/dist/elements/Status/index.d.ts.map +1 -1
  97. package/dist/elements/Status/index.js +11 -5
  98. package/dist/elements/Status/index.js.map +1 -1
  99. package/dist/elements/StepNav/context.d.ts.map +1 -1
  100. package/dist/elements/StepNav/context.js +9 -1
  101. package/dist/elements/StepNav/context.js.map +1 -1
  102. package/dist/elements/StepNav/index.scss +0 -1
  103. package/dist/elements/Table/DefaultCell/fields/Relationship/index.d.ts.map +1 -1
  104. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js +39 -41
  105. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
  106. package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
  107. package/dist/elements/Table/OrderableTable.js +5 -1
  108. package/dist/elements/Table/OrderableTable.js.map +1 -1
  109. package/dist/elements/Table/RelationshipProvider/index.d.ts.map +1 -1
  110. package/dist/elements/Table/RelationshipProvider/index.js +25 -24
  111. package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
  112. package/dist/elements/UnpublishMany/DrawerContent.d.ts.map +1 -1
  113. package/dist/elements/UnpublishMany/DrawerContent.js +8 -5
  114. package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
  115. package/dist/elements/Upload/index.d.ts.map +1 -1
  116. package/dist/elements/Upload/index.js +7 -5
  117. package/dist/elements/Upload/index.js.map +1 -1
  118. package/dist/elements/WhereBuilder/Condition/Relationship/index.d.ts.map +1 -1
  119. package/dist/elements/WhereBuilder/Condition/Relationship/index.js +14 -8
  120. package/dist/elements/WhereBuilder/Condition/Relationship/index.js.map +1 -1
  121. package/dist/exports/client/index.d.ts +1 -0
  122. package/dist/exports/client/index.d.ts.map +1 -1
  123. package/dist/exports/client/index.js +24 -24
  124. package/dist/exports/client/index.js.map +4 -4
  125. package/dist/exports/rsc/index.d.ts +1 -0
  126. package/dist/exports/rsc/index.d.ts.map +1 -1
  127. package/dist/exports/rsc/index.js +1 -0
  128. package/dist/exports/rsc/index.js.map +1 -1
  129. package/dist/exports/shared/index.d.ts +3 -0
  130. package/dist/exports/shared/index.d.ts.map +1 -1
  131. package/dist/exports/shared/index.js +2 -2
  132. package/dist/exports/shared/index.js.map +4 -4
  133. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  134. package/dist/fields/Relationship/Input.js +12 -5
  135. package/dist/fields/Relationship/Input.js.map +1 -1
  136. package/dist/fields/Upload/Input.d.ts.map +1 -1
  137. package/dist/fields/Upload/Input.js +7 -3
  138. package/dist/fields/Upload/Input.js.map +1 -1
  139. package/dist/forms/fieldSchemasToFormState/fieldSchemasToFormState.spec.js +8 -1
  140. package/dist/forms/fieldSchemasToFormState/fieldSchemasToFormState.spec.js.map +1 -1
  141. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.d.ts.map +1 -1
  142. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js +2 -2
  143. package/dist/forms/fieldSchemasToFormState/serverFunctions/renderFieldServerFn.js.map +1 -1
  144. package/dist/providers/Auth/index.d.ts.map +1 -1
  145. package/dist/providers/Auth/index.js +31 -13
  146. package/dist/providers/Auth/index.js.map +1 -1
  147. package/dist/providers/DocumentInfo/index.d.ts +1 -1
  148. package/dist/providers/DocumentInfo/index.d.ts.map +1 -1
  149. package/dist/providers/DocumentInfo/index.js +16 -15
  150. package/dist/providers/DocumentInfo/index.js.map +1 -1
  151. package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts +1 -2
  152. package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts.map +1 -1
  153. package/dist/providers/DocumentInfo/useGetDocPermissions.js +16 -6
  154. package/dist/providers/DocumentInfo/useGetDocPermissions.js.map +1 -1
  155. package/dist/providers/Folders/index.d.ts.map +1 -1
  156. package/dist/providers/Folders/index.js +12 -8
  157. package/dist/providers/Folders/index.js.map +1 -1
  158. package/dist/providers/Locale/index.d.ts.map +1 -1
  159. package/dist/providers/Locale/index.js +45 -34
  160. package/dist/providers/Locale/index.js.map +1 -1
  161. package/dist/providers/Preferences/index.d.ts.map +1 -1
  162. package/dist/providers/Preferences/index.js +16 -7
  163. package/dist/providers/Preferences/index.js.map +1 -1
  164. package/dist/providers/RouteTransition/index.d.ts.map +1 -1
  165. package/dist/providers/RouteTransition/index.js +6 -1
  166. package/dist/providers/RouteTransition/index.js.map +1 -1
  167. package/dist/scss/app.scss +14 -1
  168. package/dist/styles.css +1 -1
  169. package/dist/utilities/buildFormState.js +2 -2
  170. package/dist/utilities/buildFormState.js.map +1 -1
  171. package/dist/utilities/getGlobalData.d.ts +11 -0
  172. package/dist/utilities/getGlobalData.d.ts.map +1 -0
  173. package/dist/utilities/getGlobalData.js +49 -0
  174. package/dist/utilities/getGlobalData.js.map +1 -0
  175. package/dist/utilities/getNavGroups.d.ts +5 -0
  176. package/dist/utilities/getNavGroups.d.ts.map +1 -0
  177. package/dist/utilities/getNavGroups.js +22 -0
  178. package/dist/utilities/getNavGroups.js.map +1 -0
  179. package/dist/utilities/getVisibleEntities.d.ts +5 -0
  180. package/dist/utilities/getVisibleEntities.d.ts.map +1 -0
  181. package/dist/utilities/getVisibleEntities.js +31 -0
  182. package/dist/utilities/getVisibleEntities.js.map +1 -0
  183. package/dist/utilities/groupNavItems.d.ts +3 -0
  184. package/dist/utilities/groupNavItems.d.ts.map +1 -1
  185. package/dist/utilities/groupNavItems.js +3 -0
  186. package/dist/utilities/groupNavItems.js.map +1 -1
  187. package/dist/utilities/handleBackToDashboard.d.ts +2 -1
  188. package/dist/utilities/handleBackToDashboard.d.ts.map +1 -1
  189. package/dist/utilities/handleBackToDashboard.js +4 -2
  190. package/dist/utilities/handleBackToDashboard.js.map +1 -1
  191. package/dist/utilities/handleGoBack.d.ts +2 -1
  192. package/dist/utilities/handleGoBack.d.ts.map +1 -1
  193. package/dist/utilities/handleGoBack.js +2 -1
  194. package/dist/utilities/handleGoBack.js.map +1 -1
  195. package/dist/utilities/normalizeRelationshipValue.spec.js +1 -1
  196. package/dist/utilities/normalizeRelationshipValue.spec.js.map +1 -1
  197. package/dist/views/CollectionFolder/index.js +1 -1
  198. package/dist/views/CollectionFolder/index.js.map +1 -1
  199. package/dist/views/Edit/Auth/index.d.ts.map +1 -1
  200. package/dist/views/Edit/Auth/index.js +22 -21
  201. package/dist/views/Edit/Auth/index.js.map +1 -1
  202. package/dist/views/Edit/SetDocumentStepNav/index.d.ts.map +1 -1
  203. package/dist/views/Edit/SetDocumentStepNav/index.js +26 -6
  204. package/dist/views/Edit/SetDocumentStepNav/index.js.map +1 -1
  205. package/dist/views/Edit/index.d.ts.map +1 -1
  206. package/dist/views/Edit/index.js +7 -4
  207. package/dist/views/Edit/index.js.map +1 -1
  208. package/dist/views/List/index.d.ts.map +1 -1
  209. package/dist/views/List/index.js +3 -2
  210. package/dist/views/List/index.js.map +1 -1
  211. package/dist/widgets/CollectionCards/index.d.ts +5 -0
  212. package/dist/widgets/CollectionCards/index.d.ts.map +1 -0
  213. package/dist/widgets/CollectionCards/index.js +135 -0
  214. package/dist/widgets/CollectionCards/index.js.map +1 -0
  215. package/dist/widgets/CollectionCards/index.scss +70 -0
  216. package/package.json +5 -5
@@ -1,4 +1,4 @@
1
- import { canAccessAdmin, formatErrors } from 'payload';
1
+ import { canAccessAdmin, formatErrors, UnauthorizedError } from 'payload';
2
2
  import { getSelectMode, reduceFieldsToValues } from 'payload/shared';
3
3
  import { fieldSchemasToFormState } from '../forms/fieldSchemasToFormState/index.js';
4
4
  import { renderField } from '../forms/fieldSchemasToFormState/renderField.js';
@@ -29,7 +29,7 @@ export const buildFormStateHandler = async args => {
29
29
  };
30
30
  }
31
31
  if (err.message === 'Unauthorized') {
32
- throw new Error('Unauthorized');
32
+ throw new UnauthorizedError();
33
33
  }
34
34
  return formatErrors(err);
35
35
  }
@@ -1 +1 @@
1
- {"version":3,"file":"buildFormState.js","names":["canAccessAdmin","formatErrors","getSelectMode","reduceFieldsToValues","fieldSchemasToFormState","renderField","getClientConfig","getClientSchemaMap","getSchemaMap","handleFormStateLocking","handleLivePreview","handlePreview","buildFormStateHandler","args","req","res","buildFormState","err","payload","logger","error","msg","message","Error","id","idFromArgs","collectionSlug","data","incomingData","docPermissions","docPreferences","documentFormState","formState","globalSlug","initialBlockData","initialBlockFormState","mockRSCs","operation","readOnly","renderAllFields","i18n","config","returnLivePreviewURL","returnLockStatus","returnPreviewURL","schemaPath","select","skipClientConfigAuth","skipValidation","updateLastEdited","selectMode","undefined","schemaMap","clientSchemaMap","importMap","user","fieldOrEntityConfig","get","fields","length","type","documentData","blockData","Array","isArray","formStateResult","clientFieldSchemaMap","fieldSchemaMap","permissions","preferences","previousFormState","renderFieldFn","collections","upload","file","lockedStateResult","lockedState","state","livePreviewURL","previewURL"],"sources":["../../src/utilities/buildFormState.ts"],"sourcesContent":["import type {\n BuildFormStateArgs,\n ClientConfig,\n ClientUser,\n ErrorResult,\n FormState,\n ServerFunction,\n} from 'payload'\n\nimport { canAccessAdmin, formatErrors } from 'payload'\nimport { getSelectMode, reduceFieldsToValues } from 'payload/shared'\n\nimport { fieldSchemasToFormState } from '../forms/fieldSchemasToFormState/index.js'\nimport { renderField } from '../forms/fieldSchemasToFormState/renderField.js'\nimport { getClientConfig } from './getClientConfig.js'\nimport { getClientSchemaMap } from './getClientSchemaMap.js'\nimport { getSchemaMap } from './getSchemaMap.js'\nimport { handleFormStateLocking } from './handleFormStateLocking.js'\nimport { handleLivePreview } from './handleLivePreview.js'\nimport { handlePreview } from './handlePreview.js'\n\nexport type LockedState = {\n isLocked: boolean\n lastEditedAt: string\n user: ClientUser | number | string\n}\n\ntype BuildFormStateSuccessResult = {\n clientConfig?: ClientConfig\n errors?: never\n indexPath?: string\n livePreviewURL?: string\n lockedState?: LockedState\n previewURL?: string\n state: FormState\n}\n\ntype BuildFormStateErrorResult = {\n livePreviewURL?: never\n lockedState?: never\n previewURL?: never\n state?: never\n} & (\n | {\n message: string\n }\n | ErrorResult\n)\n\nexport type BuildFormStateResult = BuildFormStateErrorResult | BuildFormStateSuccessResult\n\nexport const buildFormStateHandler: ServerFunction<\n BuildFormStateArgs,\n Promise<BuildFormStateResult>\n> = async (args) => {\n const { req } = args\n\n try {\n await canAccessAdmin({ req })\n const res = await buildFormState(args)\n\n return res\n } catch (err) {\n req.payload.logger.error({ err, msg: `There was an error building form state` })\n\n if (err.message === 'Could not find field schema for given path') {\n return {\n message: err.message,\n }\n }\n\n if (err.message === 'Unauthorized') {\n throw new Error('Unauthorized')\n }\n\n return formatErrors(err)\n }\n}\n\nexport const buildFormState = async (\n args: BuildFormStateArgs,\n): Promise<BuildFormStateSuccessResult> => {\n const {\n id: idFromArgs,\n collectionSlug,\n data: incomingData,\n docPermissions,\n docPreferences,\n documentFormState,\n formState,\n globalSlug,\n initialBlockData,\n initialBlockFormState,\n mockRSCs,\n operation,\n readOnly,\n renderAllFields,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n },\n returnLivePreviewURL,\n returnLockStatus,\n returnPreviewURL,\n schemaPath = collectionSlug || globalSlug,\n select,\n skipClientConfigAuth,\n skipValidation,\n updateLastEdited,\n } = args\n\n const selectMode = select ? getSelectMode(select) : undefined\n\n if (!collectionSlug && !globalSlug) {\n throw new Error('Either collectionSlug or globalSlug must be provided')\n }\n\n const schemaMap = getSchemaMap({\n collectionSlug,\n config,\n globalSlug,\n i18n,\n })\n\n const clientSchemaMap = getClientSchemaMap({\n collectionSlug,\n config: getClientConfig({\n config,\n i18n,\n importMap: req.payload.importMap,\n user: skipClientConfigAuth ? true : req.user,\n }),\n globalSlug,\n i18n,\n payload,\n schemaMap,\n })\n\n const id = collectionSlug ? idFromArgs : undefined\n const fieldOrEntityConfig = schemaMap.get(schemaPath)\n\n if (!fieldOrEntityConfig) {\n throw new Error(`Could not find \"${schemaPath}\" in the fieldSchemaMap`)\n }\n\n if (\n (!('fields' in fieldOrEntityConfig) ||\n !fieldOrEntityConfig.fields ||\n !fieldOrEntityConfig.fields.length) &&\n 'type' in fieldOrEntityConfig &&\n fieldOrEntityConfig.type !== 'blocks'\n ) {\n throw new Error(\n `The field found in fieldSchemaMap for \"${schemaPath}\" does not contain any subfields.`,\n )\n }\n\n // If there is form state but no data, deduce data from that form state, e.g. on initial load\n // Otherwise, use the incoming data as the source of truth, e.g. on subsequent saves\n const data = incomingData || reduceFieldsToValues(formState, true)\n\n let documentData = undefined\n\n if (documentFormState) {\n documentData = reduceFieldsToValues(documentFormState, true)\n }\n\n let blockData = initialBlockData\n\n if (initialBlockFormState) {\n blockData = reduceFieldsToValues(initialBlockFormState, true)\n }\n\n /**\n * When building state for sub schemas we need to adjust:\n * - `fields`\n * - `parentSchemaPath`\n * - `parentPath`\n *\n * Type assertion is fine because we wrap sub schemas in an array\n * so we can safely map over them within `fieldSchemasToFormState`\n */\n const fields = Array.isArray(fieldOrEntityConfig)\n ? fieldOrEntityConfig\n : 'fields' in fieldOrEntityConfig\n ? fieldOrEntityConfig.fields\n : [fieldOrEntityConfig]\n\n // Ensure data.id is present during form state requests, where the data\n // is passed from the client as an argument, without the ID\n if (!data.id && id) {\n data.id = id\n }\n\n const formStateResult = await fieldSchemasToFormState({\n id,\n clientFieldSchemaMap: clientSchemaMap,\n collectionSlug,\n data,\n documentData,\n fields,\n fieldSchemaMap: schemaMap,\n initialBlockData: blockData,\n mockRSCs,\n operation,\n permissions: docPermissions?.fields || {},\n preferences: docPreferences || { fields: {} },\n previousFormState: formState,\n readOnly,\n renderAllFields,\n renderFieldFn: renderField,\n req,\n schemaPath,\n select,\n selectMode,\n skipValidation,\n })\n\n // Maintain form state of auth / upload fields\n if (collectionSlug && formState) {\n if (payload.collections[collectionSlug]?.config?.upload && formState.file) {\n formStateResult.file = formState.file\n }\n }\n\n let lockedStateResult\n\n if (returnLockStatus) {\n lockedStateResult = await handleFormStateLocking({\n id,\n collectionSlug,\n globalSlug,\n req,\n updateLastEdited,\n })\n }\n\n const res: BuildFormStateSuccessResult = {\n lockedState: lockedStateResult,\n state: formStateResult,\n }\n\n if (returnLivePreviewURL) {\n const { livePreviewURL } = await handleLivePreview({\n collectionSlug,\n config,\n data,\n globalSlug,\n req,\n })\n\n // Important: only set this when not undefined,\n // Otherwise it will travel through the network as `$undefined`\n if (livePreviewURL) {\n res.livePreviewURL = livePreviewURL\n }\n }\n\n if (returnPreviewURL) {\n const { previewURL } = await handlePreview({\n collectionSlug,\n config,\n data,\n globalSlug,\n req,\n })\n\n // Important: only set this when not undefined,\n // Otherwise it will travel through the network as `$undefined`\n if (previewURL) {\n res.previewURL = previewURL\n }\n }\n\n return res\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"buildFormState.js","names":["canAccessAdmin","formatErrors","UnauthorizedError","getSelectMode","reduceFieldsToValues","fieldSchemasToFormState","renderField","getClientConfig","getClientSchemaMap","getSchemaMap","handleFormStateLocking","handleLivePreview","handlePreview","buildFormStateHandler","args","req","res","buildFormState","err","payload","logger","error","msg","message","id","idFromArgs","collectionSlug","data","incomingData","docPermissions","docPreferences","documentFormState","formState","globalSlug","initialBlockData","initialBlockFormState","mockRSCs","operation","readOnly","renderAllFields","i18n","config","returnLivePreviewURL","returnLockStatus","returnPreviewURL","schemaPath","select","skipClientConfigAuth","skipValidation","updateLastEdited","selectMode","undefined","Error","schemaMap","clientSchemaMap","importMap","user","fieldOrEntityConfig","get","fields","length","type","documentData","blockData","Array","isArray","formStateResult","clientFieldSchemaMap","fieldSchemaMap","permissions","preferences","previousFormState","renderFieldFn","collections","upload","file","lockedStateResult","lockedState","state","livePreviewURL","previewURL"],"sources":["../../src/utilities/buildFormState.ts"],"sourcesContent":["import type {\n BuildFormStateArgs,\n ClientConfig,\n ClientUser,\n ErrorResult,\n FormState,\n ServerFunction,\n} from 'payload'\n\nimport { canAccessAdmin, formatErrors, UnauthorizedError } from 'payload'\nimport { getSelectMode, reduceFieldsToValues } from 'payload/shared'\n\nimport { fieldSchemasToFormState } from '../forms/fieldSchemasToFormState/index.js'\nimport { renderField } from '../forms/fieldSchemasToFormState/renderField.js'\nimport { getClientConfig } from './getClientConfig.js'\nimport { getClientSchemaMap } from './getClientSchemaMap.js'\nimport { getSchemaMap } from './getSchemaMap.js'\nimport { handleFormStateLocking } from './handleFormStateLocking.js'\nimport { handleLivePreview } from './handleLivePreview.js'\nimport { handlePreview } from './handlePreview.js'\n\nexport type LockedState = {\n isLocked: boolean\n lastEditedAt: string\n user: ClientUser | number | string\n}\n\ntype BuildFormStateSuccessResult = {\n clientConfig?: ClientConfig\n errors?: never\n indexPath?: string\n livePreviewURL?: string\n lockedState?: LockedState\n previewURL?: string\n state: FormState\n}\n\ntype BuildFormStateErrorResult = {\n livePreviewURL?: never\n lockedState?: never\n previewURL?: never\n state?: never\n} & (\n | {\n message: string\n }\n | ErrorResult\n)\n\nexport type BuildFormStateResult = BuildFormStateErrorResult | BuildFormStateSuccessResult\n\nexport const buildFormStateHandler: ServerFunction<\n BuildFormStateArgs,\n Promise<BuildFormStateResult>\n> = async (args) => {\n const { req } = args\n\n try {\n await canAccessAdmin({ req })\n const res = await buildFormState(args)\n\n return res\n } catch (err) {\n req.payload.logger.error({ err, msg: `There was an error building form state` })\n\n if (err.message === 'Could not find field schema for given path') {\n return {\n message: err.message,\n }\n }\n\n if (err.message === 'Unauthorized') {\n throw new UnauthorizedError()\n }\n\n return formatErrors(err)\n }\n}\n\nexport const buildFormState = async (\n args: BuildFormStateArgs,\n): Promise<BuildFormStateSuccessResult> => {\n const {\n id: idFromArgs,\n collectionSlug,\n data: incomingData,\n docPermissions,\n docPreferences,\n documentFormState,\n formState,\n globalSlug,\n initialBlockData,\n initialBlockFormState,\n mockRSCs,\n operation,\n readOnly,\n renderAllFields,\n req,\n req: {\n i18n,\n payload,\n payload: { config },\n },\n returnLivePreviewURL,\n returnLockStatus,\n returnPreviewURL,\n schemaPath = collectionSlug || globalSlug,\n select,\n skipClientConfigAuth,\n skipValidation,\n updateLastEdited,\n } = args\n\n const selectMode = select ? getSelectMode(select) : undefined\n\n if (!collectionSlug && !globalSlug) {\n throw new Error('Either collectionSlug or globalSlug must be provided')\n }\n\n const schemaMap = getSchemaMap({\n collectionSlug,\n config,\n globalSlug,\n i18n,\n })\n\n const clientSchemaMap = getClientSchemaMap({\n collectionSlug,\n config: getClientConfig({\n config,\n i18n,\n importMap: req.payload.importMap,\n user: skipClientConfigAuth ? true : req.user,\n }),\n globalSlug,\n i18n,\n payload,\n schemaMap,\n })\n\n const id = collectionSlug ? idFromArgs : undefined\n const fieldOrEntityConfig = schemaMap.get(schemaPath)\n\n if (!fieldOrEntityConfig) {\n throw new Error(`Could not find \"${schemaPath}\" in the fieldSchemaMap`)\n }\n\n if (\n (!('fields' in fieldOrEntityConfig) ||\n !fieldOrEntityConfig.fields ||\n !fieldOrEntityConfig.fields.length) &&\n 'type' in fieldOrEntityConfig &&\n fieldOrEntityConfig.type !== 'blocks'\n ) {\n throw new Error(\n `The field found in fieldSchemaMap for \"${schemaPath}\" does not contain any subfields.`,\n )\n }\n\n // If there is form state but no data, deduce data from that form state, e.g. on initial load\n // Otherwise, use the incoming data as the source of truth, e.g. on subsequent saves\n const data = incomingData || reduceFieldsToValues(formState, true)\n\n let documentData = undefined\n\n if (documentFormState) {\n documentData = reduceFieldsToValues(documentFormState, true)\n }\n\n let blockData = initialBlockData\n\n if (initialBlockFormState) {\n blockData = reduceFieldsToValues(initialBlockFormState, true)\n }\n\n /**\n * When building state for sub schemas we need to adjust:\n * - `fields`\n * - `parentSchemaPath`\n * - `parentPath`\n *\n * Type assertion is fine because we wrap sub schemas in an array\n * so we can safely map over them within `fieldSchemasToFormState`\n */\n const fields = Array.isArray(fieldOrEntityConfig)\n ? fieldOrEntityConfig\n : 'fields' in fieldOrEntityConfig\n ? fieldOrEntityConfig.fields\n : [fieldOrEntityConfig]\n\n // Ensure data.id is present during form state requests, where the data\n // is passed from the client as an argument, without the ID\n if (!data.id && id) {\n data.id = id\n }\n\n const formStateResult = await fieldSchemasToFormState({\n id,\n clientFieldSchemaMap: clientSchemaMap,\n collectionSlug,\n data,\n documentData,\n fields,\n fieldSchemaMap: schemaMap,\n initialBlockData: blockData,\n mockRSCs,\n operation,\n permissions: docPermissions?.fields || {},\n preferences: docPreferences || { fields: {} },\n previousFormState: formState,\n readOnly,\n renderAllFields,\n renderFieldFn: renderField,\n req,\n schemaPath,\n select,\n selectMode,\n skipValidation,\n })\n\n // Maintain form state of auth / upload fields\n if (collectionSlug && formState) {\n if (payload.collections[collectionSlug]?.config?.upload && formState.file) {\n formStateResult.file = formState.file\n }\n }\n\n let lockedStateResult\n\n if (returnLockStatus) {\n lockedStateResult = await handleFormStateLocking({\n id,\n collectionSlug,\n globalSlug,\n req,\n updateLastEdited,\n })\n }\n\n const res: BuildFormStateSuccessResult = {\n lockedState: lockedStateResult,\n state: formStateResult,\n }\n\n if (returnLivePreviewURL) {\n const { livePreviewURL } = await handleLivePreview({\n collectionSlug,\n config,\n data,\n globalSlug,\n req,\n })\n\n // Important: only set this when not undefined,\n // Otherwise it will travel through the network as `$undefined`\n if (livePreviewURL) {\n res.livePreviewURL = livePreviewURL\n }\n }\n\n if (returnPreviewURL) {\n const { previewURL } = await handlePreview({\n collectionSlug,\n config,\n data,\n globalSlug,\n req,\n })\n\n // Important: only set this when not undefined,\n // Otherwise it will travel through the network as `$undefined`\n if (previewURL) {\n res.previewURL = previewURL\n }\n }\n\n return res\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ import type { ClientUser, PayloadRequest } from 'payload';
2
+ export declare function getGlobalData(req: PayloadRequest): Promise<{
3
+ data: {
4
+ _isLocked: boolean;
5
+ _lastEditedAt: string;
6
+ _userEditing: ClientUser | number | string;
7
+ };
8
+ lockDuration?: number;
9
+ slug: string;
10
+ }[]>;
11
+ //# sourceMappingURL=getGlobalData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getGlobalData.d.ts","sourceRoot":"","sources":["../../src/utilities/getGlobalData.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAa,MAAM,SAAS,CAAA;AAIpE,wBAAsB,aAAa,CAAC,GAAG,EAAE,cAAc;UAU7C;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,UAAU,GAAG,MAAM,GAAG,MAAM,CAAA;KAAE;mBAChF,MAAM;UACf,MAAM;KA4Cf"}
@@ -0,0 +1,49 @@
1
+ const globalLockDurationDefault = 300;
2
+ export async function getGlobalData(req) {
3
+ const {
4
+ payload: {
5
+ config
6
+ },
7
+ payload
8
+ } = req;
9
+ // Query locked global documents only if there are globals in the config
10
+ // This type is repeated from DashboardViewServerPropsOnly['globalData'].
11
+ // I thought about moving it to a payload to share it, but we're already
12
+ // exporting all the views props from the next package.
13
+ let globalData = [];
14
+ if (config.globals.length > 0) {
15
+ const lockedDocuments = await payload.find({
16
+ collection: 'payload-locked-documents',
17
+ depth: 1,
18
+ overrideAccess: false,
19
+ pagination: false,
20
+ req,
21
+ select: {
22
+ globalSlug: true,
23
+ updatedAt: true,
24
+ user: true
25
+ },
26
+ where: {
27
+ globalSlug: {
28
+ exists: true
29
+ }
30
+ }
31
+ });
32
+ // Map over globals to include `lockDuration` and lock data for each global slug
33
+ globalData = config.globals.map(global => {
34
+ const lockDuration = typeof global.lockDocuments === 'object' ? global.lockDocuments.duration : globalLockDurationDefault;
35
+ const lockedDoc = lockedDocuments.docs.find(doc => doc.globalSlug === global.slug);
36
+ return {
37
+ slug: global.slug,
38
+ data: {
39
+ _isLocked: !!lockedDoc,
40
+ _lastEditedAt: lockedDoc?.updatedAt ?? null,
41
+ _userEditing: lockedDoc?.user?.value ?? null
42
+ },
43
+ lockDuration
44
+ };
45
+ });
46
+ }
47
+ return globalData;
48
+ }
49
+ //# sourceMappingURL=getGlobalData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getGlobalData.js","names":["globalLockDurationDefault","getGlobalData","req","payload","config","globalData","globals","length","lockedDocuments","find","collection","depth","overrideAccess","pagination","select","globalSlug","updatedAt","user","where","exists","map","global","lockDuration","lockDocuments","duration","lockedDoc","docs","doc","slug","data","_isLocked","_lastEditedAt","_userEditing","value"],"sources":["../../src/utilities/getGlobalData.ts"],"sourcesContent":["import type { ClientUser, PayloadRequest, TypedUser } from 'payload'\n\nconst globalLockDurationDefault = 300\n\nexport async function getGlobalData(req: PayloadRequest) {\n const {\n payload: { config },\n payload,\n } = req\n // Query locked global documents only if there are globals in the config\n // This type is repeated from DashboardViewServerPropsOnly['globalData'].\n // I thought about moving it to a payload to share it, but we're already\n // exporting all the views props from the next package.\n let globalData: Array<{\n data: { _isLocked: boolean; _lastEditedAt: string; _userEditing: ClientUser | number | string }\n lockDuration?: number\n slug: string\n }> = []\n\n if (config.globals.length > 0) {\n const lockedDocuments = await payload.find({\n collection: 'payload-locked-documents',\n depth: 1,\n overrideAccess: false,\n pagination: false,\n req,\n select: {\n globalSlug: true,\n updatedAt: true,\n user: true,\n },\n where: {\n globalSlug: {\n exists: true,\n },\n },\n })\n\n // Map over globals to include `lockDuration` and lock data for each global slug\n globalData = config.globals.map((global) => {\n const lockDuration =\n typeof global.lockDocuments === 'object'\n ? global.lockDocuments.duration\n : globalLockDurationDefault\n\n const lockedDoc = lockedDocuments.docs.find((doc) => doc.globalSlug === global.slug)\n\n return {\n slug: global.slug,\n data: {\n _isLocked: !!lockedDoc,\n _lastEditedAt: (lockedDoc?.updatedAt as string) ?? null,\n _userEditing: (lockedDoc?.user as { value?: TypedUser })?.value ?? null!,\n },\n lockDuration,\n }\n })\n }\n\n return globalData\n}\n"],"mappings":"AAEA,MAAMA,yBAAA,GAA4B;AAElC,OAAO,eAAeC,cAAcC,GAAmB;EACrD,MAAM;IACJC,OAAA,EAAS;MAAEC;IAAM,CAAE;IACnBD;EAAO,CACR,GAAGD,GAAA;EACJ;EACA;EACA;EACA;EACA,IAAIG,UAAA,GAIC,EAAE;EAEP,IAAID,MAAA,CAAOE,OAAO,CAACC,MAAM,GAAG,GAAG;IAC7B,MAAMC,eAAA,GAAkB,MAAML,OAAA,CAAQM,IAAI,CAAC;MACzCC,UAAA,EAAY;MACZC,KAAA,EAAO;MACPC,cAAA,EAAgB;MAChBC,UAAA,EAAY;MACZX,GAAA;MACAY,MAAA,EAAQ;QACNC,UAAA,EAAY;QACZC,SAAA,EAAW;QACXC,IAAA,EAAM;MACR;MACAC,KAAA,EAAO;QACLH,UAAA,EAAY;UACVI,MAAA,EAAQ;QACV;MACF;IACF;IAEA;IACAd,UAAA,GAAaD,MAAA,CAAOE,OAAO,CAACc,GAAG,CAAEC,MAAA;MAC/B,MAAMC,YAAA,GACJ,OAAOD,MAAA,CAAOE,aAAa,KAAK,WAC5BF,MAAA,CAAOE,aAAa,CAACC,QAAQ,GAC7BxB,yBAAA;MAEN,MAAMyB,SAAA,GAAYjB,eAAA,CAAgBkB,IAAI,CAACjB,IAAI,CAAEkB,GAAA,IAAQA,GAAA,CAAIZ,UAAU,KAAKM,MAAA,CAAOO,IAAI;MAEnF,OAAO;QACLA,IAAA,EAAMP,MAAA,CAAOO,IAAI;QACjBC,IAAA,EAAM;UACJC,SAAA,EAAW,CAAC,CAACL,SAAA;UACbM,aAAA,EAAeN,SAAC,EAAWT,SAAA,IAAwB;UACnDgB,YAAA,EAAcP,SAAC,EAAWR,IAAA,EAAgCgB,KAAA,IAAS;QACrE;QACAX;MACF;IACF;EACF;EAEA,OAAOjB,UAAA;AACT","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ import type { SanitizedConfig, SanitizedPermissions, VisibleEntities } from 'payload';
2
+ import { type I18nClient } from '@payloadcms/translations';
3
+ /** @internal */
4
+ export declare function getNavGroups(permissions: SanitizedPermissions, visibleEntities: VisibleEntities, config: SanitizedConfig, i18n: I18nClient): import("./groupNavItems.js").NavGroupType[];
5
+ //# sourceMappingURL=getNavGroups.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getNavGroups.d.ts","sourceRoot":"","sources":["../../src/utilities/getNavGroups.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAErF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAK1D,gBAAgB;AAChB,wBAAgB,YAAY,CAC1B,WAAW,EAAE,oBAAoB,EACjC,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,UAAU,+CAqCjB"}
@@ -0,0 +1,22 @@
1
+ import { EntityType } from './groupNavItems.js';
2
+ import { groupNavItems } from './groupNavItems.js';
3
+ /** @internal */
4
+ export function getNavGroups(permissions, visibleEntities, config, i18n) {
5
+ const collections = config.collections.filter(collection => permissions?.collections?.[collection.slug]?.read && visibleEntities.collections.includes(collection.slug));
6
+ const globals = config.globals.filter(global => permissions?.globals?.[global.slug]?.read && visibleEntities.globals.includes(global.slug));
7
+ const navGroups = groupNavItems([...(collections.map(collection => {
8
+ const entityToGroup = {
9
+ type: EntityType.collection,
10
+ entity: collection
11
+ };
12
+ return entityToGroup;
13
+ }) ?? []), ...(globals.map(global => {
14
+ const entityToGroup = {
15
+ type: EntityType.global,
16
+ entity: global
17
+ };
18
+ return entityToGroup;
19
+ }) ?? [])], permissions, i18n);
20
+ return navGroups;
21
+ }
22
+ //# sourceMappingURL=getNavGroups.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getNavGroups.js","names":["EntityType","groupNavItems","getNavGroups","permissions","visibleEntities","config","i18n","collections","filter","collection","slug","read","includes","globals","global","navGroups","map","entityToGroup","type","entity"],"sources":["../../src/utilities/getNavGroups.ts"],"sourcesContent":["import type { SanitizedConfig, SanitizedPermissions, VisibleEntities } from 'payload'\n\nimport { type I18nClient } from '@payloadcms/translations'\n\nimport { EntityType } from './groupNavItems.js'\nimport { type EntityToGroup, groupNavItems } from './groupNavItems.js'\n\n/** @internal */\nexport function getNavGroups(\n permissions: SanitizedPermissions,\n visibleEntities: VisibleEntities,\n config: SanitizedConfig,\n i18n: I18nClient,\n) {\n const collections = config.collections.filter(\n (collection) =>\n permissions?.collections?.[collection.slug]?.read &&\n visibleEntities.collections.includes(collection.slug),\n )\n\n const globals = config.globals.filter(\n (global) =>\n permissions?.globals?.[global.slug]?.read && visibleEntities.globals.includes(global.slug),\n )\n\n const navGroups = groupNavItems(\n [\n ...(collections.map((collection) => {\n const entityToGroup: EntityToGroup = {\n type: EntityType.collection,\n entity: collection,\n }\n\n return entityToGroup\n }) ?? []),\n ...(globals.map((global) => {\n const entityToGroup: EntityToGroup = {\n type: EntityType.global,\n entity: global,\n }\n\n return entityToGroup\n }) ?? []),\n ],\n permissions,\n i18n,\n )\n\n return navGroups\n}\n"],"mappings":"AAIA,SAASA,UAAU,QAAQ;AAC3B,SAA6BC,aAAa,QAAQ;AAElD;AACA,OAAO,SAASC,aACdC,WAAiC,EACjCC,eAAgC,EAChCC,MAAuB,EACvBC,IAAgB;EAEhB,MAAMC,WAAA,GAAcF,MAAA,CAAOE,WAAW,CAACC,MAAM,CAC1CC,UAAA,IACCN,WAAA,EAAaI,WAAA,GAAcE,UAAA,CAAWC,IAAI,CAAC,EAAEC,IAAA,IAC7CP,eAAA,CAAgBG,WAAW,CAACK,QAAQ,CAACH,UAAA,CAAWC,IAAI;EAGxD,MAAMG,OAAA,GAAUR,MAAA,CAAOQ,OAAO,CAACL,MAAM,CAClCM,MAAA,IACCX,WAAA,EAAaU,OAAA,GAAUC,MAAA,CAAOJ,IAAI,CAAC,EAAEC,IAAA,IAAQP,eAAA,CAAgBS,OAAO,CAACD,QAAQ,CAACE,MAAA,CAAOJ,IAAI;EAG7F,MAAMK,SAAA,GAAYd,aAAA,CAChB,C,IACMM,WAAA,CAAYS,GAAG,CAAEP,UAAA;IACnB,MAAMQ,aAAA,GAA+B;MACnCC,IAAA,EAAMlB,UAAA,CAAWS,UAAU;MAC3BU,MAAA,EAAQV;IACV;IAEA,OAAOQ,aAAA;EACT,MAAM,EAAE,G,IACJJ,OAAA,CAAQG,GAAG,CAAEF,MAAA;IACf,MAAMG,aAAA,GAA+B;MACnCC,IAAA,EAAMlB,UAAA,CAAWc,MAAM;MACvBK,MAAA,EAAQL;IACV;IAEA,OAAOG,aAAA;EACT,MAAM,EAAE,EACT,EACDd,WAAA,EACAG,IAAA;EAGF,OAAOS,SAAA;AACT","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ import type { PayloadRequest, VisibleEntities } from 'payload';
2
+ export declare function getVisibleEntities({ req }: {
3
+ req: PayloadRequest;
4
+ }): VisibleEntities;
5
+ //# sourceMappingURL=getVisibleEntities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getVisibleEntities.d.ts","sourceRoot":"","sources":["../../src/utilities/getVisibleEntities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAe9D,wBAAgB,kBAAkB,CAAC,EAAE,GAAG,EAAE,EAAE;IAAE,GAAG,EAAE,cAAc,CAAA;CAAE,GAAG,eAAe,CASpF"}
@@ -0,0 +1,31 @@
1
+ function isHidden(hidden, user) {
2
+ if (typeof hidden === 'function') {
3
+ try {
4
+ return hidden({
5
+ user
6
+ });
7
+ } catch {
8
+ return true;
9
+ }
10
+ }
11
+ return !!hidden;
12
+ }
13
+ export function getVisibleEntities({
14
+ req
15
+ }) {
16
+ return {
17
+ collections: req.payload.config.collections.map(({
18
+ slug,
19
+ admin: {
20
+ hidden
21
+ }
22
+ }) => !isHidden(hidden, req.user) ? slug : null).filter(Boolean),
23
+ globals: req.payload.config.globals.map(({
24
+ slug,
25
+ admin: {
26
+ hidden
27
+ }
28
+ }) => !isHidden(hidden, req.user) ? slug : null).filter(Boolean)
29
+ };
30
+ }
31
+ //# sourceMappingURL=getVisibleEntities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getVisibleEntities.js","names":["isHidden","hidden","user","getVisibleEntities","req","collections","payload","config","map","slug","admin","filter","Boolean","globals"],"sources":["../../src/utilities/getVisibleEntities.ts"],"sourcesContent":["import type { PayloadRequest, VisibleEntities } from 'payload'\n\ntype Hidden = ((args: { user: unknown }) => boolean) | boolean\n\nfunction isHidden(hidden: Hidden | undefined, user: unknown): boolean {\n if (typeof hidden === 'function') {\n try {\n return hidden({ user })\n } catch {\n return true\n }\n }\n return !!hidden\n}\n\nexport function getVisibleEntities({ req }: { req: PayloadRequest }): VisibleEntities {\n return {\n collections: req.payload.config.collections\n .map(({ slug, admin: { hidden } }) => (!isHidden(hidden, req.user) ? slug : null))\n .filter(Boolean),\n globals: req.payload.config.globals\n .map(({ slug, admin: { hidden } }) => (!isHidden(hidden, req.user) ? slug : null))\n .filter(Boolean),\n }\n}\n"],"mappings":"AAIA,SAASA,SAASC,MAA0B,EAAEC,IAAa;EACzD,IAAI,OAAOD,MAAA,KAAW,YAAY;IAChC,IAAI;MACF,OAAOA,MAAA,CAAO;QAAEC;MAAK;IACvB,EAAE,MAAM;MACN,OAAO;IACT;EACF;EACA,OAAO,CAAC,CAACD,MAAA;AACX;AAEA,OAAO,SAASE,mBAAmB;EAAEC;AAAG,CAA2B;EACjE,OAAO;IACLC,WAAA,EAAaD,GAAA,CAAIE,OAAO,CAACC,MAAM,CAACF,WAAW,CACxCG,GAAG,CAAC,CAAC;MAAEC,IAAI;MAAEC,KAAA,EAAO;QAAET;MAAM;IAAE,CAAE,KAAM,CAACD,QAAA,CAASC,MAAA,EAAQG,GAAA,CAAIF,IAAI,IAAIO,IAAA,GAAO,MAC3EE,MAAM,CAACC,OAAA;IACVC,OAAA,EAAST,GAAA,CAAIE,OAAO,CAACC,MAAM,CAACM,OAAO,CAChCL,GAAG,CAAC,CAAC;MAAEC,IAAI;MAAEC,KAAA,EAAO;QAAET;MAAM;IAAE,CAAE,KAAM,CAACD,QAAA,CAASC,MAAA,EAAQG,GAAA,CAAIF,IAAI,IAAIO,IAAA,GAAO,MAC3EE,MAAM,CAACC,OAAA;EACZ;AACF","ignoreList":[]}
@@ -1,5 +1,8 @@
1
1
  import type { I18nClient } from '@payloadcms/translations';
2
2
  import type { SanitizedCollectionConfig, SanitizedGlobalConfig, SanitizedPermissions, StaticLabel } from 'payload';
3
+ /**
4
+ * @deprecated Import from `payload` instead
5
+ */
3
6
  export declare enum EntityType {
4
7
  collection = "collections",
5
8
  global = "globals"
@@ -1 +1 @@
1
- {"version":3,"file":"groupNavItems.d.ts","sourceRoot":"","sources":["../../src/utilities/groupNavItems.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EACV,yBAAyB,EACzB,qBAAqB,EACrB,oBAAoB,EACpB,WAAW,EACZ,MAAM,SAAS,CAAA;AAIhB,oBAAY,UAAU;IACpB,UAAU,gBAAgB;IAC1B,MAAM,YAAY;CACnB;AAED,MAAM,MAAM,aAAa,GACrB;IACE,MAAM,EAAE,yBAAyB,CAAA;IACjC,IAAI,EAAE,UAAU,CAAC,UAAU,CAAA;CAC5B,GACD;IACE,MAAM,EAAE,qBAAqB,CAAA;IAC7B,IAAI,EAAE,UAAU,CAAC,MAAM,CAAA;CACxB,CAAA;AAEL,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE;QACR,KAAK,EAAE,WAAW,CAAA;QAClB,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,UAAU,CAAA;KACjB,EAAE,CAAA;IACH,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,aAAa,EAAE,EACzB,WAAW,EAAE,oBAAoB,EACjC,IAAI,EAAE,UAAU,GACf,YAAY,EAAE,CAiEhB"}
1
+ {"version":3,"file":"groupNavItems.d.ts","sourceRoot":"","sources":["../../src/utilities/groupNavItems.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EACV,yBAAyB,EACzB,qBAAqB,EACrB,oBAAoB,EACpB,WAAW,EACZ,MAAM,SAAS,CAAA;AAIhB;;GAEG;AACH,oBAAY,UAAU;IACpB,UAAU,gBAAgB;IAC1B,MAAM,YAAY;CACnB;AAED,MAAM,MAAM,aAAa,GACrB;IACE,MAAM,EAAE,yBAAyB,CAAA;IACjC,IAAI,EAAE,UAAU,CAAC,UAAU,CAAA;CAC5B,GACD;IACE,MAAM,EAAE,qBAAqB,CAAA;IAC7B,IAAI,EAAE,UAAU,CAAC,MAAM,CAAA;CACxB,CAAA;AAEL,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE;QACR,KAAK,EAAE,WAAW,CAAA;QAClB,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,UAAU,CAAA;KACjB,EAAE,CAAA;IACH,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,aAAa,EAAE,EACzB,WAAW,EAAE,oBAAoB,EACjC,IAAI,EAAE,UAAU,GACf,YAAY,EAAE,CAiEhB"}
@@ -1,4 +1,7 @@
1
1
  import { getTranslation } from '@payloadcms/translations';
2
+ /**
3
+ * @deprecated Import from `payload` instead
4
+ */
2
5
  export var EntityType = /*#__PURE__*/function (EntityType) {
3
6
  EntityType["collection"] = "collections";
4
7
  EntityType["global"] = "globals";
@@ -1 +1 @@
1
- {"version":3,"file":"groupNavItems.js","names":["getTranslation","EntityType","groupNavItems","entities","permissions","i18n","result","reduce","groups","entityToGroup","entity","admin","group","type","toLowerCase","slug","read","translatedGroup","labelOrFunction","labels","plural","label","t","existingGroup","find","matchedGroup","push","defaultGroup","filter","length"],"sources":["../../src/utilities/groupNavItems.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type {\n SanitizedCollectionConfig,\n SanitizedGlobalConfig,\n SanitizedPermissions,\n StaticLabel,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\n\nexport enum EntityType {\n collection = 'collections',\n global = 'globals',\n}\n\nexport type EntityToGroup =\n | {\n entity: SanitizedCollectionConfig\n type: EntityType.collection\n }\n | {\n entity: SanitizedGlobalConfig\n type: EntityType.global\n }\n\nexport type NavGroupType = {\n entities: {\n label: StaticLabel\n slug: string\n type: EntityType\n }[]\n label: string\n}\n\nexport function groupNavItems(\n entities: EntityToGroup[],\n permissions: SanitizedPermissions,\n i18n: I18nClient,\n): NavGroupType[] {\n const result = entities.reduce(\n (groups, entityToGroup) => {\n // Skip entities where admin.group is explicitly false\n if (entityToGroup.entity?.admin?.group === false) {\n return groups\n }\n\n if (permissions?.[entityToGroup.type.toLowerCase()]?.[entityToGroup.entity.slug]?.read) {\n const translatedGroup = getTranslation(entityToGroup.entity.admin.group, i18n)\n\n const labelOrFunction =\n 'labels' in entityToGroup.entity\n ? entityToGroup.entity.labels.plural\n : entityToGroup.entity.label\n\n const label =\n typeof labelOrFunction === 'function'\n ? labelOrFunction({ i18n, t: i18n.t })\n : labelOrFunction\n\n if (entityToGroup.entity.admin.group) {\n const existingGroup = groups.find(\n (group) => getTranslation(group.label, i18n) === translatedGroup,\n ) as NavGroupType\n\n let matchedGroup: NavGroupType = existingGroup\n\n if (!existingGroup) {\n matchedGroup = { entities: [], label: translatedGroup }\n groups.push(matchedGroup)\n }\n\n matchedGroup.entities.push({\n slug: entityToGroup.entity.slug,\n type: entityToGroup.type,\n label,\n })\n } else {\n const defaultGroup = groups.find((group) => {\n return getTranslation(group.label, i18n) === i18n.t(`general:${entityToGroup.type}`)\n }) as NavGroupType\n defaultGroup.entities.push({\n slug: entityToGroup.entity.slug,\n type: entityToGroup.type,\n label,\n })\n }\n }\n\n return groups\n },\n [\n {\n entities: [],\n label: i18n.t('general:collections'),\n },\n {\n entities: [],\n label: i18n.t('general:globals'),\n },\n ],\n )\n\n return result.filter((group) => group.entities.length > 0)\n}\n"],"mappings":"AAQA,SAASA,cAAc,QAAQ;AAE/B,OAAO,IAAAC,UAAK,0BAAAA,UAAA;;;SAAAA,UAAA;;AAwBZ,OAAO,SAASC,cACdC,QAAyB,EACzBC,WAAiC,EACjCC,IAAgB;EAEhB,MAAMC,MAAA,GAASH,QAAA,CAASI,MAAM,CAC5B,CAACC,MAAA,EAAQC,aAAA;IACP;IACA,IAAIA,aAAA,CAAcC,MAAM,EAAEC,KAAA,EAAOC,KAAA,KAAU,OAAO;MAChD,OAAOJ,MAAA;IACT;IAEA,IAAIJ,WAAA,GAAcK,aAAA,CAAcI,IAAI,CAACC,WAAW,GAAG,GAAGL,aAAA,CAAcC,MAAM,CAACK,IAAI,CAAC,EAAEC,IAAA,EAAM;MACtF,MAAMC,eAAA,GAAkBjB,cAAA,CAAeS,aAAA,CAAcC,MAAM,CAACC,KAAK,CAACC,KAAK,EAAEP,IAAA;MAEzE,MAAMa,eAAA,GACJ,YAAYT,aAAA,CAAcC,MAAM,GAC5BD,aAAA,CAAcC,MAAM,CAACS,MAAM,CAACC,MAAM,GAClCX,aAAA,CAAcC,MAAM,CAACW,KAAK;MAEhC,MAAMA,KAAA,GACJ,OAAOH,eAAA,KAAoB,aACvBA,eAAA,CAAgB;QAAEb,IAAA;QAAMiB,CAAA,EAAGjB,IAAA,CAAKiB;MAAE,KAClCJ,eAAA;MAEN,IAAIT,aAAA,CAAcC,MAAM,CAACC,KAAK,CAACC,KAAK,EAAE;QACpC,MAAMW,aAAA,GAAgBf,MAAA,CAAOgB,IAAI,CAC9BZ,KAAA,IAAUZ,cAAA,CAAeY,KAAA,CAAMS,KAAK,EAAEhB,IAAA,MAAUY,eAAA;QAGnD,IAAIQ,YAAA,GAA6BF,aAAA;QAEjC,IAAI,CAACA,aAAA,EAAe;UAClBE,YAAA,GAAe;YAAEtB,QAAA,EAAU,EAAE;YAAEkB,KAAA,EAAOJ;UAAgB;UACtDT,MAAA,CAAOkB,IAAI,CAACD,YAAA;QACd;QAEAA,YAAA,CAAatB,QAAQ,CAACuB,IAAI,CAAC;UACzBX,IAAA,EAAMN,aAAA,CAAcC,MAAM,CAACK,IAAI;UAC/BF,IAAA,EAAMJ,aAAA,CAAcI,IAAI;UACxBQ;QACF;MACF,OAAO;QACL,MAAMM,YAAA,GAAenB,MAAA,CAAOgB,IAAI,CAAEZ,KAAA;UAChC,OAAOZ,cAAA,CAAeY,KAAA,CAAMS,KAAK,EAAEhB,IAAA,MAAUA,IAAA,CAAKiB,CAAC,CAAC,WAAWb,aAAA,CAAcI,IAAI,EAAE;QACrF;QACAc,YAAA,CAAaxB,QAAQ,CAACuB,IAAI,CAAC;UACzBX,IAAA,EAAMN,aAAA,CAAcC,MAAM,CAACK,IAAI;UAC/BF,IAAA,EAAMJ,aAAA,CAAcI,IAAI;UACxBQ;QACF;MACF;IACF;IAEA,OAAOb,MAAA;EACT,GACA,CACE;IACEL,QAAA,EAAU,EAAE;IACZkB,KAAA,EAAOhB,IAAA,CAAKiB,CAAC,CAAC;EAChB,GACA;IACEnB,QAAA,EAAU,EAAE;IACZkB,KAAA,EAAOhB,IAAA,CAAKiB,CAAC,CAAC;EAChB,EACD;EAGH,OAAOhB,MAAA,CAAOsB,MAAM,CAAEhB,KAAA,IAAUA,KAAA,CAAMT,QAAQ,CAAC0B,MAAM,GAAG;AAC1D","ignoreList":[]}
1
+ {"version":3,"file":"groupNavItems.js","names":["getTranslation","EntityType","groupNavItems","entities","permissions","i18n","result","reduce","groups","entityToGroup","entity","admin","group","type","toLowerCase","slug","read","translatedGroup","labelOrFunction","labels","plural","label","t","existingGroup","find","matchedGroup","push","defaultGroup","filter","length"],"sources":["../../src/utilities/groupNavItems.ts"],"sourcesContent":["import type { I18nClient } from '@payloadcms/translations'\nimport type {\n SanitizedCollectionConfig,\n SanitizedGlobalConfig,\n SanitizedPermissions,\n StaticLabel,\n} from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\n\n/**\n * @deprecated Import from `payload` instead\n */\nexport enum EntityType {\n collection = 'collections',\n global = 'globals',\n}\n\nexport type EntityToGroup =\n | {\n entity: SanitizedCollectionConfig\n type: EntityType.collection\n }\n | {\n entity: SanitizedGlobalConfig\n type: EntityType.global\n }\n\nexport type NavGroupType = {\n entities: {\n label: StaticLabel\n slug: string\n type: EntityType\n }[]\n label: string\n}\n\nexport function groupNavItems(\n entities: EntityToGroup[],\n permissions: SanitizedPermissions,\n i18n: I18nClient,\n): NavGroupType[] {\n const result = entities.reduce(\n (groups, entityToGroup) => {\n // Skip entities where admin.group is explicitly false\n if (entityToGroup.entity?.admin?.group === false) {\n return groups\n }\n\n if (permissions?.[entityToGroup.type.toLowerCase()]?.[entityToGroup.entity.slug]?.read) {\n const translatedGroup = getTranslation(entityToGroup.entity.admin.group, i18n)\n\n const labelOrFunction =\n 'labels' in entityToGroup.entity\n ? entityToGroup.entity.labels.plural\n : entityToGroup.entity.label\n\n const label =\n typeof labelOrFunction === 'function'\n ? labelOrFunction({ i18n, t: i18n.t })\n : labelOrFunction\n\n if (entityToGroup.entity.admin.group) {\n const existingGroup = groups.find(\n (group) => getTranslation(group.label, i18n) === translatedGroup,\n ) as NavGroupType\n\n let matchedGroup: NavGroupType = existingGroup\n\n if (!existingGroup) {\n matchedGroup = { entities: [], label: translatedGroup }\n groups.push(matchedGroup)\n }\n\n matchedGroup.entities.push({\n slug: entityToGroup.entity.slug,\n type: entityToGroup.type,\n label,\n })\n } else {\n const defaultGroup = groups.find((group) => {\n return getTranslation(group.label, i18n) === i18n.t(`general:${entityToGroup.type}`)\n }) as NavGroupType\n defaultGroup.entities.push({\n slug: entityToGroup.entity.slug,\n type: entityToGroup.type,\n label,\n })\n }\n }\n\n return groups\n },\n [\n {\n entities: [],\n label: i18n.t('general:collections'),\n },\n {\n entities: [],\n label: i18n.t('general:globals'),\n },\n ],\n )\n\n return result.filter((group) => group.entities.length > 0)\n}\n"],"mappings":"AAQA,SAASA,cAAc,QAAQ;AAE/B;;;AAGA,OAAO,IAAAC,UAAK,0BAAAA,UAAA;;;SAAAA,UAAA;;AAwBZ,OAAO,SAASC,cACdC,QAAyB,EACzBC,WAAiC,EACjCC,IAAgB;EAEhB,MAAMC,MAAA,GAASH,QAAA,CAASI,MAAM,CAC5B,CAACC,MAAA,EAAQC,aAAA;IACP;IACA,IAAIA,aAAA,CAAcC,MAAM,EAAEC,KAAA,EAAOC,KAAA,KAAU,OAAO;MAChD,OAAOJ,MAAA;IACT;IAEA,IAAIJ,WAAA,GAAcK,aAAA,CAAcI,IAAI,CAACC,WAAW,GAAG,GAAGL,aAAA,CAAcC,MAAM,CAACK,IAAI,CAAC,EAAEC,IAAA,EAAM;MACtF,MAAMC,eAAA,GAAkBjB,cAAA,CAAeS,aAAA,CAAcC,MAAM,CAACC,KAAK,CAACC,KAAK,EAAEP,IAAA;MAEzE,MAAMa,eAAA,GACJ,YAAYT,aAAA,CAAcC,MAAM,GAC5BD,aAAA,CAAcC,MAAM,CAACS,MAAM,CAACC,MAAM,GAClCX,aAAA,CAAcC,MAAM,CAACW,KAAK;MAEhC,MAAMA,KAAA,GACJ,OAAOH,eAAA,KAAoB,aACvBA,eAAA,CAAgB;QAAEb,IAAA;QAAMiB,CAAA,EAAGjB,IAAA,CAAKiB;MAAE,KAClCJ,eAAA;MAEN,IAAIT,aAAA,CAAcC,MAAM,CAACC,KAAK,CAACC,KAAK,EAAE;QACpC,MAAMW,aAAA,GAAgBf,MAAA,CAAOgB,IAAI,CAC9BZ,KAAA,IAAUZ,cAAA,CAAeY,KAAA,CAAMS,KAAK,EAAEhB,IAAA,MAAUY,eAAA;QAGnD,IAAIQ,YAAA,GAA6BF,aAAA;QAEjC,IAAI,CAACA,aAAA,EAAe;UAClBE,YAAA,GAAe;YAAEtB,QAAA,EAAU,EAAE;YAAEkB,KAAA,EAAOJ;UAAgB;UACtDT,MAAA,CAAOkB,IAAI,CAACD,YAAA;QACd;QAEAA,YAAA,CAAatB,QAAQ,CAACuB,IAAI,CAAC;UACzBX,IAAA,EAAMN,aAAA,CAAcC,MAAM,CAACK,IAAI;UAC/BF,IAAA,EAAMJ,aAAA,CAAcI,IAAI;UACxBQ;QACF;MACF,OAAO;QACL,MAAMM,YAAA,GAAenB,MAAA,CAAOgB,IAAI,CAAEZ,KAAA;UAChC,OAAOZ,cAAA,CAAeY,KAAA,CAAMS,KAAK,EAAEhB,IAAA,MAAUA,IAAA,CAAKiB,CAAC,CAAC,WAAWb,aAAA,CAAcI,IAAI,EAAE;QACrF;QACAc,YAAA,CAAaxB,QAAQ,CAACuB,IAAI,CAAC;UACzBX,IAAA,EAAMN,aAAA,CAAcC,MAAM,CAACK,IAAI;UAC/BF,IAAA,EAAMJ,aAAA,CAAcI,IAAI;UACxBQ;QACF;MACF;IACF;IAEA,OAAOb,MAAA;EACT,GACA,CACE;IACEL,QAAA,EAAU,EAAE;IACZkB,KAAA,EAAOhB,IAAA,CAAKiB,CAAC,CAAC;EAChB,GACA;IACEnB,QAAA,EAAU,EAAE;IACZkB,KAAA,EAAOhB,IAAA,CAAKiB,CAAC,CAAC;EAChB,EACD;EAGH,OAAOhB,MAAA,CAAOsB,MAAM,CAAEhB,KAAA,IAAUA,KAAA,CAAMT,QAAQ,CAAC0B,MAAM,GAAG;AAC1D","ignoreList":[]}
@@ -2,7 +2,8 @@ import type { AppRouterInstance } from 'next/dist/shared/lib/app-router-context.
2
2
  type BackToDashboardProps = {
3
3
  adminRoute: string;
4
4
  router: AppRouterInstance;
5
+ serverURL?: string;
5
6
  };
6
- export declare const handleBackToDashboard: ({ adminRoute, router }: BackToDashboardProps) => void;
7
+ export declare const handleBackToDashboard: ({ adminRoute, router, serverURL }: BackToDashboardProps) => void;
7
8
  export {};
8
9
  //# sourceMappingURL=handleBackToDashboard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"handleBackToDashboard.d.ts","sourceRoot":"","sources":["../../src/utilities/handleBackToDashboard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2DAA2D,CAAA;AAIlG,KAAK,oBAAoB,GAAG;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,iBAAiB,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,qBAAqB,2BAA4B,oBAAoB,SAMjF,CAAA"}
1
+ {"version":3,"file":"handleBackToDashboard.d.ts","sourceRoot":"","sources":["../../src/utilities/handleBackToDashboard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2DAA2D,CAAA;AAIlG,KAAK,oBAAoB,GAAG;IAC1B,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,iBAAiB,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,qBAAqB,sCAAuC,oBAAoB,SAO5F,CAAA"}
@@ -1,11 +1,13 @@
1
1
  import { formatAdminURL } from 'payload/shared';
2
2
  export const handleBackToDashboard = ({
3
3
  adminRoute,
4
- router
4
+ router,
5
+ serverURL
5
6
  }) => {
6
7
  const redirectRoute = formatAdminURL({
7
8
  adminRoute,
8
- path: '/'
9
+ path: '',
10
+ serverURL
9
11
  });
10
12
  router.push(redirectRoute);
11
13
  };
@@ -1 +1 @@
1
- {"version":3,"file":"handleBackToDashboard.js","names":["formatAdminURL","handleBackToDashboard","adminRoute","router","redirectRoute","path","push"],"sources":["../../src/utilities/handleBackToDashboard.tsx"],"sourcesContent":["import type { AppRouterInstance } from 'next/dist/shared/lib/app-router-context.shared-runtime.js'\n\nimport { formatAdminURL } from 'payload/shared'\n\ntype BackToDashboardProps = {\n adminRoute: string\n router: AppRouterInstance\n}\n\nexport const handleBackToDashboard = ({ adminRoute, router }: BackToDashboardProps) => {\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: '/',\n })\n router.push(redirectRoute)\n}\n"],"mappings":"AAEA,SAASA,cAAc,QAAQ;AAO/B,OAAO,MAAMC,qBAAA,GAAwBA,CAAC;EAAEC,UAAU;EAAEC;AAAM,CAAwB;EAChF,MAAMC,aAAA,GAAgBJ,cAAA,CAAe;IACnCE,UAAA;IACAG,IAAA,EAAM;EACR;EACAF,MAAA,CAAOG,IAAI,CAACF,aAAA;AACd","ignoreList":[]}
1
+ {"version":3,"file":"handleBackToDashboard.js","names":["formatAdminURL","handleBackToDashboard","adminRoute","router","serverURL","redirectRoute","path","push"],"sources":["../../src/utilities/handleBackToDashboard.tsx"],"sourcesContent":["import type { AppRouterInstance } from 'next/dist/shared/lib/app-router-context.shared-runtime.js'\n\nimport { formatAdminURL } from 'payload/shared'\n\ntype BackToDashboardProps = {\n adminRoute: string\n router: AppRouterInstance\n serverURL?: string\n}\n\nexport const handleBackToDashboard = ({ adminRoute, router, serverURL }: BackToDashboardProps) => {\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: '',\n serverURL,\n })\n router.push(redirectRoute)\n}\n"],"mappings":"AAEA,SAASA,cAAc,QAAQ;AAQ/B,OAAO,MAAMC,qBAAA,GAAwBA,CAAC;EAAEC,UAAU;EAAEC,MAAM;EAAEC;AAAS,CAAwB;EAC3F,MAAMC,aAAA,GAAgBL,cAAA,CAAe;IACnCE,UAAA;IACAI,IAAA,EAAM;IACNF;EACF;EACAD,MAAA,CAAOI,IAAI,CAACF,aAAA;AACd","ignoreList":[]}
@@ -3,7 +3,8 @@ type GoBackProps = {
3
3
  adminRoute: string;
4
4
  collectionSlug: string;
5
5
  router: AppRouterInstance;
6
+ serverURL?: string;
6
7
  };
7
- export declare const handleGoBack: ({ adminRoute, collectionSlug, router }: GoBackProps) => void;
8
+ export declare const handleGoBack: ({ adminRoute, collectionSlug, router, serverURL }: GoBackProps) => void;
8
9
  export {};
9
10
  //# sourceMappingURL=handleGoBack.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"handleGoBack.d.ts","sourceRoot":"","sources":["../../src/utilities/handleGoBack.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2DAA2D,CAAA;AAIlG,KAAK,WAAW,GAAG;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,iBAAiB,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,YAAY,2CAA4C,WAAW,SAM/E,CAAA"}
1
+ {"version":3,"file":"handleGoBack.d.ts","sourceRoot":"","sources":["../../src/utilities/handleGoBack.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2DAA2D,CAAA;AAIlG,KAAK,WAAW,GAAG;IACjB,UAAU,EAAE,MAAM,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,iBAAiB,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,YAAY,sDAAuD,WAAW,SAM1F,CAAA"}
@@ -2,7 +2,8 @@ import { formatAdminURL } from 'payload/shared';
2
2
  export const handleGoBack = ({
3
3
  adminRoute,
4
4
  collectionSlug,
5
- router
5
+ router,
6
+ serverURL
6
7
  }) => {
7
8
  const redirectRoute = formatAdminURL({
8
9
  adminRoute,
@@ -1 +1 @@
1
- {"version":3,"file":"handleGoBack.js","names":["formatAdminURL","handleGoBack","adminRoute","collectionSlug","router","redirectRoute","path","push"],"sources":["../../src/utilities/handleGoBack.tsx"],"sourcesContent":["import type { AppRouterInstance } from 'next/dist/shared/lib/app-router-context.shared-runtime.js'\n\nimport { formatAdminURL } from 'payload/shared'\n\ntype GoBackProps = {\n adminRoute: string\n collectionSlug: string\n router: AppRouterInstance\n}\n\nexport const handleGoBack = ({ adminRoute, collectionSlug, router }: GoBackProps) => {\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: collectionSlug ? `/collections/${collectionSlug}` : '/',\n })\n router.push(redirectRoute)\n}\n"],"mappings":"AAEA,SAASA,cAAc,QAAQ;AAQ/B,OAAO,MAAMC,YAAA,GAAeA,CAAC;EAAEC,UAAU;EAAEC,cAAc;EAAEC;AAAM,CAAe;EAC9E,MAAMC,aAAA,GAAgBL,cAAA,CAAe;IACnCE,UAAA;IACAI,IAAA,EAAMH,cAAA,GAAiB,gBAAgBA,cAAA,EAAgB,GAAG;EAC5D;EACAC,MAAA,CAAOG,IAAI,CAACF,aAAA;AACd","ignoreList":[]}
1
+ {"version":3,"file":"handleGoBack.js","names":["formatAdminURL","handleGoBack","adminRoute","collectionSlug","router","serverURL","redirectRoute","path","push"],"sources":["../../src/utilities/handleGoBack.tsx"],"sourcesContent":["import type { AppRouterInstance } from 'next/dist/shared/lib/app-router-context.shared-runtime.js'\n\nimport { formatAdminURL } from 'payload/shared'\n\ntype GoBackProps = {\n adminRoute: string\n collectionSlug: string\n router: AppRouterInstance\n serverURL?: string\n}\n\nexport const handleGoBack = ({ adminRoute, collectionSlug, router, serverURL }: GoBackProps) => {\n const redirectRoute = formatAdminURL({\n adminRoute,\n path: collectionSlug ? `/collections/${collectionSlug}` : '/',\n })\n router.push(redirectRoute)\n}\n"],"mappings":"AAEA,SAASA,cAAc,QAAQ;AAS/B,OAAO,MAAMC,YAAA,GAAeA,CAAC;EAAEC,UAAU;EAAEC,cAAc;EAAEC,MAAM;EAAEC;AAAS,CAAe;EACzF,MAAMC,aAAA,GAAgBN,cAAA,CAAe;IACnCE,UAAA;IACAK,IAAA,EAAMJ,cAAA,GAAiB,gBAAgBA,cAAA,EAAgB,GAAG;EAC5D;EACAC,MAAA,CAAOI,IAAI,CAACF,aAAA;AACd","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { describe, expect, it } from '@jest/globals';
1
+ import { describe, it, expect } from 'vitest';
2
2
  import { normalizeRelationshipValue } from './normalizeRelationshipValue.js';
3
3
  describe('normalizeRelationshipValue', () => {
4
4
  describe('Monomorphic relationships (string relationTo)', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"normalizeRelationshipValue.spec.js","names":["describe","expect","it","normalizeRelationshipValue","relationTo","result","toBe","value","id","name","email","toBeNull","undefined","toBeUndefined","toEqual","title","author","createdAt","values","results","map","v","filename","mimeType","filesize","url","publishedDate","simpleValue","complexValue","result2"],"sources":["../../src/utilities/normalizeRelationshipValue.spec.ts"],"sourcesContent":["import { describe, expect, it } from '@jest/globals'\n\nimport { normalizeRelationshipValue } from './normalizeRelationshipValue.js'\n\ndescribe('normalizeRelationshipValue', () => {\n describe('Monomorphic relationships (string relationTo)', () => {\n const relationTo = 'users'\n\n it('should return simple string ID as-is', () => {\n const result = normalizeRelationshipValue('user123', relationTo)\n expect(result).toBe('user123')\n })\n\n it('should return simple number ID as-is', () => {\n const result = normalizeRelationshipValue(123, relationTo)\n expect(result).toBe(123)\n })\n\n it('should extract ID from object with relationTo and value', () => {\n const value = { relationTo: 'users', value: 'user456' }\n const result = normalizeRelationshipValue(value, relationTo)\n expect(result).toBe('user456')\n })\n\n it('should extract ID from nested value structure', () => {\n const value = {\n relationTo: 'users',\n value: {\n value: 'user789',\n },\n }\n const result = normalizeRelationshipValue(value, relationTo)\n expect(result).toBe('user789')\n })\n\n it('should extract ID from deeply nested value structure', () => {\n const value = {\n relationTo: 'users',\n value: {\n value: {\n value: 'user999',\n },\n },\n }\n const result = normalizeRelationshipValue(value, relationTo)\n expect(result).toBe('user999')\n })\n\n it('should extract ID from populated document', () => {\n const value = {\n relationTo: 'users',\n value: {\n id: 'user111',\n name: 'John Doe',\n email: 'john@example.com',\n },\n }\n const result = normalizeRelationshipValue(value, relationTo)\n expect(result).toBe('user111')\n })\n\n it('should extract ID from populated document without relationTo wrapper', () => {\n const value = {\n id: 'user222',\n name: 'Jane Doe',\n email: 'jane@example.com',\n }\n const result = normalizeRelationshipValue(value, relationTo)\n expect(result).toBe('user222')\n })\n\n it('should handle null values', () => {\n const result = normalizeRelationshipValue(null, relationTo)\n expect(result).toBeNull()\n })\n\n it('should handle undefined values', () => {\n const result = normalizeRelationshipValue(undefined, relationTo)\n expect(result).toBeUndefined()\n })\n\n it('should handle empty object', () => {\n const result = normalizeRelationshipValue({}, relationTo)\n expect(result).toEqual({})\n })\n })\n\n describe('Polymorphic relationships (array relationTo)', () => {\n const relationTo = ['users', 'posts', 'pages']\n\n it('should return simple string ID as-is', () => {\n const result = normalizeRelationshipValue('user123', relationTo)\n expect(result).toBe('user123')\n })\n\n it('should return simple number ID as-is', () => {\n const result = normalizeRelationshipValue(456, relationTo)\n expect(result).toBe(456)\n })\n\n it('should preserve relationTo structure with string value', () => {\n const value = { relationTo: 'users', value: 'user789' }\n const result = normalizeRelationshipValue(value, relationTo)\n expect(result).toEqual({ relationTo: 'users', value: 'user789' })\n })\n\n it('should preserve relationTo structure with number value', () => {\n const value = { relationTo: 'posts', value: 123 }\n const result = normalizeRelationshipValue(value, relationTo)\n expect(result).toEqual({ relationTo: 'posts', value: 123 })\n })\n\n it('should extract ID from nested value structure', () => {\n const value = {\n relationTo: 'posts',\n value: {\n value: 'post456',\n },\n }\n const result = normalizeRelationshipValue(value, relationTo)\n expect(result).toEqual({ relationTo: 'posts', value: 'post456' })\n })\n\n it('should extract ID from deeply nested value structure', () => {\n const value = {\n relationTo: 'pages',\n value: {\n value: {\n value: 'page789',\n },\n },\n }\n const result = normalizeRelationshipValue(value, relationTo)\n expect(result).toEqual({ relationTo: 'pages', value: 'page789' })\n })\n\n it('should extract ID from populated document', () => {\n const value = {\n relationTo: 'users',\n value: {\n id: 'user999',\n name: 'John Smith',\n email: 'john.smith@example.com',\n },\n }\n const result = normalizeRelationshipValue(value, relationTo)\n expect(result).toEqual({ relationTo: 'users', value: 'user999' })\n })\n\n it('should extract ID from complex populated document', () => {\n const value = {\n relationTo: 'posts',\n value: {\n id: 'post123',\n title: 'My Post',\n author: {\n id: 'author456',\n name: 'Author Name',\n },\n createdAt: '2023-01-01T00:00:00.000Z',\n },\n }\n const result = normalizeRelationshipValue(value, relationTo)\n expect(result).toEqual({ relationTo: 'posts', value: 'post123' })\n })\n\n it('should handle different relationTo values', () => {\n const values = [\n { relationTo: 'users', value: 'user1' },\n { relationTo: 'posts', value: 'post2' },\n { relationTo: 'pages', value: 'page3' },\n ]\n\n const results = values.map((v) => normalizeRelationshipValue(v, relationTo))\n\n expect(results).toEqual([\n { relationTo: 'users', value: 'user1' },\n { relationTo: 'posts', value: 'post2' },\n { relationTo: 'pages', value: 'page3' },\n ])\n })\n\n it('should handle null values', () => {\n const result = normalizeRelationshipValue(null, relationTo)\n expect(result).toBeNull()\n })\n\n it('should handle undefined values', () => {\n const result = normalizeRelationshipValue(undefined, relationTo)\n expect(result).toBeUndefined()\n })\n\n it('should extract ID from populated document without relationTo wrapper', () => {\n const value = {\n id: 'doc123',\n title: 'Document Title',\n }\n const result = normalizeRelationshipValue(value, relationTo)\n expect(result).toBe('doc123')\n })\n })\n\n describe('Edge cases', () => {\n it('should handle object with only value property (no relationTo)', () => {\n const value = { value: 'someValue' }\n const result = normalizeRelationshipValue(value, 'users')\n // Since there's no 'id' field and no relationTo, it should return the value as-is\n expect(result).toEqual({ value: 'someValue' })\n })\n\n it('should handle object with relationTo but no value', () => {\n const value = { relationTo: 'users' }\n const result = normalizeRelationshipValue(value, ['users', 'posts'])\n expect(result).toEqual({ relationTo: 'users' })\n })\n\n it('should handle empty array relationTo', () => {\n const result = normalizeRelationshipValue('user123', [])\n expect(result).toBe('user123')\n })\n\n it('should handle single-item array relationTo as polymorphic', () => {\n const value = { relationTo: 'users', value: 'user123' }\n const result = normalizeRelationshipValue(value, ['users'])\n expect(result).toEqual({ relationTo: 'users', value: 'user123' })\n })\n\n it('should handle numeric IDs in populated documents', () => {\n const value = {\n relationTo: 'users',\n value: {\n id: 12345,\n name: 'User with numeric ID',\n },\n }\n const result = normalizeRelationshipValue(value, ['users', 'posts'])\n expect(result).toEqual({ relationTo: 'users', value: 12345 })\n })\n\n it('should handle nested null values', () => {\n const value = {\n relationTo: 'users',\n value: null,\n }\n const result = normalizeRelationshipValue(value, 'users')\n expect(result).toBeNull()\n })\n\n it('should handle zero as a valid ID', () => {\n const result = normalizeRelationshipValue(0, 'users')\n expect(result).toBe(0)\n })\n\n it('should handle empty string as a valid ID', () => {\n const result = normalizeRelationshipValue('', 'users')\n expect(result).toBe('')\n })\n\n it('should handle false as a value', () => {\n const result = normalizeRelationshipValue(false, 'users')\n expect(result).toBe(false)\n })\n\n it('should handle array values (return as-is)', () => {\n const result = normalizeRelationshipValue(['user1', 'user2'], 'users')\n expect(result).toEqual(['user1', 'user2'])\n })\n })\n\n describe('Real-world scenarios', () => {\n it('should normalize upload field value for monomorphic upload', () => {\n // Upload field with populated media document\n const value = {\n id: 'media123',\n filename: 'image.jpg',\n mimeType: 'image/jpeg',\n filesize: 12345,\n url: '/media/image.jpg',\n }\n const result = normalizeRelationshipValue(value, 'media')\n expect(result).toBe('media123')\n })\n\n it('should normalize upload field value for polymorphic upload', () => {\n // Upload field with relationTo structure\n const value = {\n relationTo: 'images',\n value: {\n id: 'image456',\n filename: 'photo.png',\n url: '/media/photo.png',\n },\n }\n const result = normalizeRelationshipValue(value, ['images', 'videos'])\n expect(result).toEqual({ relationTo: 'images', value: 'image456' })\n })\n\n it('should normalize form submission data', () => {\n // Data coming from form with populated relationship\n const value = {\n relationTo: 'posts',\n value: {\n id: 'post789',\n title: 'Blog Post Title',\n author: { id: 'author123', name: 'Author' },\n publishedDate: '2023-12-01',\n },\n }\n const result = normalizeRelationshipValue(value, ['posts', 'pages'])\n expect(result).toEqual({ relationTo: 'posts', value: 'post789' })\n })\n\n it('should normalize API response with nested relationships', () => {\n // Complex nested structure from API\n const value = {\n relationTo: 'categories',\n value: {\n value: {\n id: 'cat123',\n name: 'Category Name',\n },\n },\n }\n const result = normalizeRelationshipValue(value, ['categories', 'tags'])\n expect(result).toEqual({ relationTo: 'categories', value: 'cat123' })\n })\n\n it('should handle table cell data normalization', () => {\n // Cell data from table that might be just an ID\n const simpleValue = 'user123'\n const result = normalizeRelationshipValue(simpleValue, 'users')\n expect(result).toBe('user123')\n\n // Cell data with full structure\n const complexValue = {\n relationTo: 'users',\n value: {\n id: 'user456',\n name: 'John Doe',\n },\n }\n const result2 = normalizeRelationshipValue(complexValue, ['users', 'admins'])\n expect(result2).toEqual({ relationTo: 'users', value: 'user456' })\n })\n })\n})\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"normalizeRelationshipValue.spec.js","names":["describe","it","expect","normalizeRelationshipValue","relationTo","result","toBe","value","id","name","email","toBeNull","undefined","toBeUndefined","toEqual","title","author","createdAt","values","results","map","v","filename","mimeType","filesize","url","publishedDate","simpleValue","complexValue","result2"],"sources":["../../src/utilities/normalizeRelationshipValue.spec.ts"],"sourcesContent":["import { describe, it, expect } from 'vitest'\nimport { normalizeRelationshipValue } from './normalizeRelationshipValue.js'\n\ndescribe('normalizeRelationshipValue', () => {\n describe('Monomorphic relationships (string relationTo)', () => {\n const relationTo = 'users'\n\n it('should return simple string ID as-is', () => {\n const result = normalizeRelationshipValue('user123', relationTo)\n expect(result).toBe('user123')\n })\n\n it('should return simple number ID as-is', () => {\n const result = normalizeRelationshipValue(123, relationTo)\n expect(result).toBe(123)\n })\n\n it('should extract ID from object with relationTo and value', () => {\n const value = { relationTo: 'users', value: 'user456' }\n const result = normalizeRelationshipValue(value, relationTo)\n expect(result).toBe('user456')\n })\n\n it('should extract ID from nested value structure', () => {\n const value = {\n relationTo: 'users',\n value: {\n value: 'user789',\n },\n }\n const result = normalizeRelationshipValue(value, relationTo)\n expect(result).toBe('user789')\n })\n\n it('should extract ID from deeply nested value structure', () => {\n const value = {\n relationTo: 'users',\n value: {\n value: {\n value: 'user999',\n },\n },\n }\n const result = normalizeRelationshipValue(value, relationTo)\n expect(result).toBe('user999')\n })\n\n it('should extract ID from populated document', () => {\n const value = {\n relationTo: 'users',\n value: {\n id: 'user111',\n name: 'John Doe',\n email: 'john@example.com',\n },\n }\n const result = normalizeRelationshipValue(value, relationTo)\n expect(result).toBe('user111')\n })\n\n it('should extract ID from populated document without relationTo wrapper', () => {\n const value = {\n id: 'user222',\n name: 'Jane Doe',\n email: 'jane@example.com',\n }\n const result = normalizeRelationshipValue(value, relationTo)\n expect(result).toBe('user222')\n })\n\n it('should handle null values', () => {\n const result = normalizeRelationshipValue(null, relationTo)\n expect(result).toBeNull()\n })\n\n it('should handle undefined values', () => {\n const result = normalizeRelationshipValue(undefined, relationTo)\n expect(result).toBeUndefined()\n })\n\n it('should handle empty object', () => {\n const result = normalizeRelationshipValue({}, relationTo)\n expect(result).toEqual({})\n })\n })\n\n describe('Polymorphic relationships (array relationTo)', () => {\n const relationTo = ['users', 'posts', 'pages']\n\n it('should return simple string ID as-is', () => {\n const result = normalizeRelationshipValue('user123', relationTo)\n expect(result).toBe('user123')\n })\n\n it('should return simple number ID as-is', () => {\n const result = normalizeRelationshipValue(456, relationTo)\n expect(result).toBe(456)\n })\n\n it('should preserve relationTo structure with string value', () => {\n const value = { relationTo: 'users', value: 'user789' }\n const result = normalizeRelationshipValue(value, relationTo)\n expect(result).toEqual({ relationTo: 'users', value: 'user789' })\n })\n\n it('should preserve relationTo structure with number value', () => {\n const value = { relationTo: 'posts', value: 123 }\n const result = normalizeRelationshipValue(value, relationTo)\n expect(result).toEqual({ relationTo: 'posts', value: 123 })\n })\n\n it('should extract ID from nested value structure', () => {\n const value = {\n relationTo: 'posts',\n value: {\n value: 'post456',\n },\n }\n const result = normalizeRelationshipValue(value, relationTo)\n expect(result).toEqual({ relationTo: 'posts', value: 'post456' })\n })\n\n it('should extract ID from deeply nested value structure', () => {\n const value = {\n relationTo: 'pages',\n value: {\n value: {\n value: 'page789',\n },\n },\n }\n const result = normalizeRelationshipValue(value, relationTo)\n expect(result).toEqual({ relationTo: 'pages', value: 'page789' })\n })\n\n it('should extract ID from populated document', () => {\n const value = {\n relationTo: 'users',\n value: {\n id: 'user999',\n name: 'John Smith',\n email: 'john.smith@example.com',\n },\n }\n const result = normalizeRelationshipValue(value, relationTo)\n expect(result).toEqual({ relationTo: 'users', value: 'user999' })\n })\n\n it('should extract ID from complex populated document', () => {\n const value = {\n relationTo: 'posts',\n value: {\n id: 'post123',\n title: 'My Post',\n author: {\n id: 'author456',\n name: 'Author Name',\n },\n createdAt: '2023-01-01T00:00:00.000Z',\n },\n }\n const result = normalizeRelationshipValue(value, relationTo)\n expect(result).toEqual({ relationTo: 'posts', value: 'post123' })\n })\n\n it('should handle different relationTo values', () => {\n const values = [\n { relationTo: 'users', value: 'user1' },\n { relationTo: 'posts', value: 'post2' },\n { relationTo: 'pages', value: 'page3' },\n ]\n\n const results = values.map((v) => normalizeRelationshipValue(v, relationTo))\n\n expect(results).toEqual([\n { relationTo: 'users', value: 'user1' },\n { relationTo: 'posts', value: 'post2' },\n { relationTo: 'pages', value: 'page3' },\n ])\n })\n\n it('should handle null values', () => {\n const result = normalizeRelationshipValue(null, relationTo)\n expect(result).toBeNull()\n })\n\n it('should handle undefined values', () => {\n const result = normalizeRelationshipValue(undefined, relationTo)\n expect(result).toBeUndefined()\n })\n\n it('should extract ID from populated document without relationTo wrapper', () => {\n const value = {\n id: 'doc123',\n title: 'Document Title',\n }\n const result = normalizeRelationshipValue(value, relationTo)\n expect(result).toBe('doc123')\n })\n })\n\n describe('Edge cases', () => {\n it('should handle object with only value property (no relationTo)', () => {\n const value = { value: 'someValue' }\n const result = normalizeRelationshipValue(value, 'users')\n // Since there's no 'id' field and no relationTo, it should return the value as-is\n expect(result).toEqual({ value: 'someValue' })\n })\n\n it('should handle object with relationTo but no value', () => {\n const value = { relationTo: 'users' }\n const result = normalizeRelationshipValue(value, ['users', 'posts'])\n expect(result).toEqual({ relationTo: 'users' })\n })\n\n it('should handle empty array relationTo', () => {\n const result = normalizeRelationshipValue('user123', [])\n expect(result).toBe('user123')\n })\n\n it('should handle single-item array relationTo as polymorphic', () => {\n const value = { relationTo: 'users', value: 'user123' }\n const result = normalizeRelationshipValue(value, ['users'])\n expect(result).toEqual({ relationTo: 'users', value: 'user123' })\n })\n\n it('should handle numeric IDs in populated documents', () => {\n const value = {\n relationTo: 'users',\n value: {\n id: 12345,\n name: 'User with numeric ID',\n },\n }\n const result = normalizeRelationshipValue(value, ['users', 'posts'])\n expect(result).toEqual({ relationTo: 'users', value: 12345 })\n })\n\n it('should handle nested null values', () => {\n const value = {\n relationTo: 'users',\n value: null,\n }\n const result = normalizeRelationshipValue(value, 'users')\n expect(result).toBeNull()\n })\n\n it('should handle zero as a valid ID', () => {\n const result = normalizeRelationshipValue(0, 'users')\n expect(result).toBe(0)\n })\n\n it('should handle empty string as a valid ID', () => {\n const result = normalizeRelationshipValue('', 'users')\n expect(result).toBe('')\n })\n\n it('should handle false as a value', () => {\n const result = normalizeRelationshipValue(false, 'users')\n expect(result).toBe(false)\n })\n\n it('should handle array values (return as-is)', () => {\n const result = normalizeRelationshipValue(['user1', 'user2'], 'users')\n expect(result).toEqual(['user1', 'user2'])\n })\n })\n\n describe('Real-world scenarios', () => {\n it('should normalize upload field value for monomorphic upload', () => {\n // Upload field with populated media document\n const value = {\n id: 'media123',\n filename: 'image.jpg',\n mimeType: 'image/jpeg',\n filesize: 12345,\n url: '/media/image.jpg',\n }\n const result = normalizeRelationshipValue(value, 'media')\n expect(result).toBe('media123')\n })\n\n it('should normalize upload field value for polymorphic upload', () => {\n // Upload field with relationTo structure\n const value = {\n relationTo: 'images',\n value: {\n id: 'image456',\n filename: 'photo.png',\n url: '/media/photo.png',\n },\n }\n const result = normalizeRelationshipValue(value, ['images', 'videos'])\n expect(result).toEqual({ relationTo: 'images', value: 'image456' })\n })\n\n it('should normalize form submission data', () => {\n // Data coming from form with populated relationship\n const value = {\n relationTo: 'posts',\n value: {\n id: 'post789',\n title: 'Blog Post Title',\n author: { id: 'author123', name: 'Author' },\n publishedDate: '2023-12-01',\n },\n }\n const result = normalizeRelationshipValue(value, ['posts', 'pages'])\n expect(result).toEqual({ relationTo: 'posts', value: 'post789' })\n })\n\n it('should normalize API response with nested relationships', () => {\n // Complex nested structure from API\n const value = {\n relationTo: 'categories',\n value: {\n value: {\n id: 'cat123',\n name: 'Category Name',\n },\n },\n }\n const result = normalizeRelationshipValue(value, ['categories', 'tags'])\n expect(result).toEqual({ relationTo: 'categories', value: 'cat123' })\n })\n\n it('should handle table cell data normalization', () => {\n // Cell data from table that might be just an ID\n const simpleValue = 'user123'\n const result = normalizeRelationshipValue(simpleValue, 'users')\n expect(result).toBe('user123')\n\n // Cell data with full structure\n const complexValue = {\n relationTo: 'users',\n value: {\n id: 'user456',\n name: 'John Doe',\n },\n }\n const result2 = normalizeRelationshipValue(complexValue, ['users', 'admins'])\n expect(result2).toEqual({ relationTo: 'users', value: 'user456' })\n })\n })\n})\n"],"mappings":"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","ignoreList":[]}
@@ -204,7 +204,7 @@ function CollectionFolderViewInContext(props) {
204
204
  }, crumb.id)
205
205
  }))]);
206
206
  }
207
- }, [breadcrumbs, collectionSlug, config.folders, config.routes.admin, drawerDepth, i18n, labels?.plural, router, setStepNav, startRouteTransition]);
207
+ }, [breadcrumbs, collectionSlug, config.folders, config.routes.admin, config.serverURL, drawerDepth, i18n, labels?.plural, router, setStepNav, startRouteTransition]);
208
208
  const totalDocsAndSubfolders = documents.length + subfolders.length;
209
209
  let t2;
210
210
  if ($[4] !== refineFolderData) {