@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 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","appendUploadSelectFields","qs","React","createContext","use","useCallback","useEffect","useReducer","useRef","useDebounce","useConfig","useLocale","useTranslation","reducer","Context","RelationshipProvider","t0","$","children","t1","Symbol","for","documents","dispatchDocuments","debouncedDocuments","config","t2","collections","routes","t3","serverURL","api","i18n","code","locale","prevLocale","t4","t5","reloadAll","undefined","Object","entries","forEach","t6","slug","docs","idsToLoad","t7","id","value","push","length","url","params","URLSearchParams","select","append","collection","find","admin","enableListViewSelectAPI","fieldToSelect","useAsTitle","upload","collectionConfig","idsToString","map","_temp","join","query","toString","stringify","result","fetch","credentials","headers","language","ok","json","type","relationTo","loadRelationshipDocs","current","relationships","getRelationships","t8","_jsx","useListRelationships","id_0","String"],"sources":["../../../../src/elements/Table/RelationshipProvider/index.tsx"],"sourcesContent":["'use client'\nimport type { SelectType, TypeWithID } from 'payload'\n\nimport { appendUploadSelectFields } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { createContext, use, useCallback, useEffect, useReducer, useRef } from 'react'\n\nimport { useDebounce } from '../../../hooks/useDebounce.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { reducer } from './reducer.js'\n\n// documents are first set to null when requested\n// set to false when no doc is returned\n// or set to the document returned\nexport type Documents = {\n [slug: string]: {\n [id: number | string]: false | null | TypeWithID\n }\n}\n\ntype ListRelationshipContext = {\n documents: Documents\n getRelationships: (\n docs: {\n relationTo: string\n value: number | string\n }[],\n ) => void\n}\n\nconst Context = createContext({} as ListRelationshipContext)\n\nexport const RelationshipProvider: React.FC<{ readonly children?: React.ReactNode }> = ({\n children,\n}) => {\n const [documents, dispatchDocuments] = useReducer(reducer, {})\n const debouncedDocuments = useDebounce(documents, 100)\n\n const {\n config: {\n collections,\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const { i18n } = useTranslation()\n const { code: locale } = useLocale()\n const prevLocale = useRef(locale)\n\n const loadRelationshipDocs = useCallback(\n (reloadAll = false) => {\n Object.entries(debouncedDocuments).forEach(async ([slug, docs]) => {\n const idsToLoad: (number | string)[] = []\n\n Object.entries(docs).forEach(([id, value]) => {\n if (value === null || reloadAll) {\n idsToLoad.push(id)\n }\n })\n\n if (idsToLoad.length > 0) {\n const url = `${serverURL}${api}/${slug}`\n\n const params = new URLSearchParams()\n const select: SelectType = {}\n\n params.append('depth', '0')\n params.append('limit', '250')\n\n const collection = collections.find((c) => c.slug === slug)\n if (collection.admin.enableListViewSelectAPI) {\n const fieldToSelect = collection.admin.useAsTitle ?? 'id'\n select[fieldToSelect] = true\n\n if (collection.upload) {\n appendUploadSelectFields({ collectionConfig: collection, select })\n }\n }\n\n if (locale) {\n params.append('locale', locale)\n }\n\n const idsToString = idsToLoad.map((id) => String(id))\n params.append('where[id][in]', idsToString.join(','))\n\n const query = `?${params.toString()}&${qs.stringify({ select })}`\n\n const result = await fetch(`${url}${query}`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (result.ok) {\n const json = await result.json()\n if (json.docs) {\n dispatchDocuments({\n type: 'ADD_LOADED',\n docs: json.docs,\n idsToLoad,\n relationTo: slug,\n })\n }\n } else {\n dispatchDocuments({ type: 'ADD_LOADED', docs: [], idsToLoad, relationTo: slug })\n }\n }\n })\n },\n [debouncedDocuments, serverURL, api, i18n, locale, collections],\n )\n\n useEffect(() => {\n void loadRelationshipDocs(locale && prevLocale.current !== locale)\n prevLocale.current = locale\n }, [locale, loadRelationshipDocs])\n\n const getRelationships = useCallback(\n (relationships: { relationTo: string; value: number | string }[]) => {\n dispatchDocuments({ type: 'REQUEST', docs: relationships })\n },\n [],\n )\n\n return <Context value={{ documents, getRelationships }}>{children}</Context>\n}\n\nexport const useListRelationships = (): ListRelationshipContext => use(Context)\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","appendUploadSelectFields","formatAdminURL","qs","React","createContext","use","useCallback","useEffect","useReducer","useRef","useDebounce","useConfig","useLocale","useTranslation","reducer","Context","RelationshipProvider","t0","$","children","t1","Symbol","for","documents","dispatchDocuments","debouncedDocuments","config","t2","collections","routes","t3","api","i18n","code","locale","prevLocale","t4","t5","reloadAll","undefined","Object","entries","forEach","t6","slug","docs","idsToLoad","t7","id","value","push","length","url","apiRoute","path","params","URLSearchParams","select","append","collection","find","admin","enableListViewSelectAPI","fieldToSelect","useAsTitle","upload","collectionConfig","idsToString","map","_temp","join","query","toString","stringify","result","fetch","credentials","headers","language","ok","json","type","relationTo","loadRelationshipDocs","current","relationships","getRelationships","t8","_jsx","useListRelationships","id_0","String"],"sources":["../../../../src/elements/Table/RelationshipProvider/index.tsx"],"sourcesContent":["'use client'\nimport type { SelectType, TypeWithID } from 'payload'\n\nimport { appendUploadSelectFields, formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { createContext, use, useCallback, useEffect, useReducer, useRef } from 'react'\n\nimport { useDebounce } from '../../../hooks/useDebounce.js'\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useLocale } from '../../../providers/Locale/index.js'\nimport { useTranslation } from '../../../providers/Translation/index.js'\nimport { reducer } from './reducer.js'\n\n// documents are first set to null when requested\n// set to false when no doc is returned\n// or set to the document returned\nexport type Documents = {\n [slug: string]: {\n [id: number | string]: false | null | TypeWithID\n }\n}\n\ntype ListRelationshipContext = {\n documents: Documents\n getRelationships: (\n docs: {\n relationTo: string\n value: number | string\n }[],\n ) => void\n}\n\nconst Context = createContext({} as ListRelationshipContext)\n\nexport const RelationshipProvider: React.FC<{ readonly children?: React.ReactNode }> = ({\n children,\n}) => {\n const [documents, dispatchDocuments] = useReducer(reducer, {})\n const debouncedDocuments = useDebounce(documents, 100)\n\n const {\n config: {\n collections,\n routes: { api },\n },\n } = useConfig()\n\n const { i18n } = useTranslation()\n const { code: locale } = useLocale()\n const prevLocale = useRef(locale)\n\n const loadRelationshipDocs = useCallback(\n (reloadAll = false) => {\n Object.entries(debouncedDocuments).forEach(async ([slug, docs]) => {\n const idsToLoad: (number | string)[] = []\n\n Object.entries(docs).forEach(([id, value]) => {\n if (value === null || reloadAll) {\n idsToLoad.push(id)\n }\n })\n\n if (idsToLoad.length > 0) {\n const url = formatAdminURL({ apiRoute: api, path: `/${slug}` })\n\n const params = new URLSearchParams()\n const select: SelectType = {}\n\n params.append('depth', '0')\n params.append('limit', '250')\n\n const collection = collections.find((c) => c.slug === slug)\n if (collection.admin.enableListViewSelectAPI) {\n const fieldToSelect = collection.admin.useAsTitle ?? 'id'\n select[fieldToSelect] = true\n\n if (collection.upload) {\n appendUploadSelectFields({ collectionConfig: collection, select })\n }\n }\n\n if (locale) {\n params.append('locale', locale)\n }\n\n const idsToString = idsToLoad.map((id) => String(id))\n params.append('where[id][in]', idsToString.join(','))\n\n const query = `?${params.toString()}&${qs.stringify({ select })}`\n\n const result = await fetch(`${url}${query}`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (result.ok) {\n const json = await result.json()\n if (json.docs) {\n dispatchDocuments({\n type: 'ADD_LOADED',\n docs: json.docs,\n idsToLoad,\n relationTo: slug,\n })\n }\n } else {\n dispatchDocuments({ type: 'ADD_LOADED', docs: [], idsToLoad, relationTo: slug })\n }\n }\n })\n },\n [debouncedDocuments, api, i18n, locale, collections],\n )\n\n useEffect(() => {\n void loadRelationshipDocs(locale && prevLocale.current !== locale)\n prevLocale.current = locale\n }, [locale, loadRelationshipDocs])\n\n const getRelationships = useCallback(\n (relationships: { relationTo: string; value: number | string }[]) => {\n dispatchDocuments({ type: 'REQUEST', docs: relationships })\n },\n [],\n )\n\n return <Context value={{ documents, getRelationships }}>{children}</Context>\n}\n\nexport const useListRelationships = (): ListRelationshipContext => use(Context)\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,SAASC,wBAAwB,EAAEC,cAAc,QAAQ;AACzD,YAAYC,EAAA,MAAQ;AACpB,OAAOC,KAAA,IAASC,aAAa,EAAEC,GAAG,EAAEC,WAAW,EAAEC,SAAS,EAAEC,UAAU,EAAEC,MAAM,QAAQ;AAEtF,SAASC,WAAW,QAAQ;AAC5B,SAASC,SAAS,QAAQ;AAC1B,SAASC,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAC/B,SAASC,OAAO,QAAQ;AAqBxB,MAAMC,OAAA,gBAAUX,aAAA,CAAc,CAAC;AAE/B,OAAO,MAAMY,oBAAA,GAA0EC,EAAA;EAAA,MAAAC,CAAA,GAAAnB,EAAA;EAAC;IAAAoB;EAAA,IAAAF,EAEvF;EAAA,IAAAG,EAAA;EAAA,IAAAF,CAAA,QAAAG,MAAA,CAAAC,GAAA;IAC4DF,EAAA;IAACF,CAAA,MAAAE,EAAA;EAAA;IAAAA,EAAA,GAAAF,CAAA;EAAA;EAA5D,OAAAK,SAAA,EAAAC,iBAAA,IAAuChB,UAAA,CAAAM,OAAA,EAAoBM,EAAC;EAC5D,MAAAK,kBAAA,GAA2Bf,WAAA,CAAYa,SAAA,KAAW;EAElD;IAAAG,MAAA,EAAAC;EAAA,IAKIhB,SAAA;EAJM;IAAAiB,WAAA;IAAAC,MAAA,EAAAC;EAAA,IAAAH,EAGP;EADS;IAAAI;EAAA,IAAAD,EAAO;EAInB;IAAAE;EAAA,IAAiBnB,cAAA;EACjB;IAAAoB,IAAA,EAAAC;EAAA,IAAyBtB,SAAA;EACzB,MAAAuB,UAAA,GAAmB1B,MAAA,CAAOyB,MAAA;EAAA,IAAAE,EAAA;EAAA,IAAAlB,CAAA,QAAAa,GAAA,IAAAb,CAAA,QAAAU,WAAA,IAAAV,CAAA,QAAAO,kBAAA,IAAAP,CAAA,QAAAc,IAAA,IAAAd,CAAA,QAAAgB,MAAA;IAGxBE,EAAA,GAAAC,EAAA;MAAC,MAAAC,SAAA,GAAAD,EAAiB,KAAAE,SAAA,WAAjBF,EAAiB;MAChBG,MAAA,CAAAC,OAAA,CAAehB,kBAAA,EAAAiB,OAAA,OAAAC,EAAA;QAAmC,OAAAC,IAAA,EAAAC,IAAA,IAAAF,EAAY;QAC5D,MAAAG,SAAA;QAEAN,MAAA,CAAAC,OAAA,CAAeI,IAAA,EAAAH,OAAA,CAAAK,EAAA;UAAe,OAAAC,EAAA,EAAAC,KAAA,IAAAF,EAAW;UAAA,IACnCE,KAAA,SAAU,IAAQX,SAAA;YACpBQ,SAAA,CAAAI,IAAA,CAAeF,EAAA;UAAA;QAAA,CAEnB;QAAA,IAEIF,SAAA,CAAAK,MAAA,IAAmB;UACrB,MAAAC,GAAA,GAAYnD,cAAA;YAAAoD,QAAA,EAA2BtB,GAAA;YAAAuB,IAAA,EAAW,IAAIV,IAAA;UAAM,CAAC;UAE7D,MAAAW,MAAA,OAAAC,eAAA;UACA,MAAAC,MAAA;UAEAF,MAAA,CAAAG,MAAA,CAAc,SAAS;UACvBH,MAAA,CAAAG,MAAA,CAAc,SAAS;UAEvB,MAAAC,UAAA,GAAmB/B,WAAA,CAAAgC,IAAA,CAAA9D,CAAA,IAAwBA,CAAA,CAAA8C,IAAA,KAAWA,IAAA;UAAA,IAClDe,UAAA,CAAAE,KAAA,CAAAC,uBAAA;YACF,MAAAC,aAAA,GAAsBJ,UAAA,CAAAE,KAAA,CAAAG,UAAA,IAA+B;YACrDP,MAAM,CAACM,aAAA;YAAA,IAEHJ,UAAA,CAAAM,MAAA;cACFjE,wBAAA;gBAAAkE,gBAAA,EAA6CP,UAAA;gBAAAF;cAAA,CAAmB;YAAA;UAAA;UAAA,IAIhEvB,MAAA;YACFqB,MAAA,CAAAG,MAAA,CAAc,UAAUxB,MAAA;UAAA;UAG1B,MAAAiC,WAAA,GAAoBrB,SAAA,CAAAsB,GAAA,CAAAC,KAA6B;UACjDd,MAAA,CAAAG,MAAA,CAAc,iBAAiBS,WAAA,CAAAG,IAAA,CAAiB;UAEhD,MAAAC,KAAA,GAAc,IAAIhB,MAAA,CAAAiB,QAAA,CAAe,KAAMtE,EAAA,CAAAuE,SAAA;YAAAhB;UAAA,CAAsB,GAAI;UAEjE,MAAAiB,MAAA,SAAqBC,KAAA,CAAM,GAAGvB,GAAA,GAAMmB,KAAA,EAAO;YAAAK,WAAA,EAC5B;YAAAC,OAAA;cAAA,mBAEQ7C,IAAA,CAAA8C;YAAA;UAAA,CAEvB;UAAA,IAEIJ,MAAA,CAAAK,EAAA;YACF,MAAAC,IAAA,SAAmBN,MAAA,CAAAM,IAAA,CAAW;YAAA,IAC1BA,IAAA,CAAAnC,IAAA;cACFrB,iBAAA;gBAAAyD,IAAA,EACQ;gBAAApC,IAAA,EACAmC,IAAA,CAAAnC,IAAA;gBAAAC,SAAA;gBAAAoC,UAAA,EAEMtC;cAAA,CACd;YAAA;UAAA;YAGFpB,iBAAA;cAAAyD,IAAA,EAA0B;cAAApC,IAAA;cAAAC,SAAA;cAAAoC,UAAA,EAA+CtC;YAAA,CAAK;UAAA;QAAA;MAAA,CAGpF;IAAA;IACF1B,CAAA,MAAAa,GAAA;IAAAb,CAAA,MAAAU,WAAA;IAAAV,CAAA,MAAAO,kBAAA;IAAAP,CAAA,MAAAc,IAAA;IAAAd,CAAA,MAAAgB,MAAA;IAAAhB,CAAA,MAAAkB,EAAA;EAAA;IAAAA,EAAA,GAAAlB,CAAA;EAAA;EA7DF,MAAAiE,oBAAA,GAA6B/C,EA8DyB;EAAA,IAAAC,EAAA;EAAA,IAAAM,EAAA;EAAA,IAAAzB,CAAA,QAAAiE,oBAAA,IAAAjE,CAAA,QAAAgB,MAAA;IAG5CG,EAAA,GAAAA,CAAA;MACH8C,oBAAA,CAAqBjD,MAAA,IAAUC,UAAA,CAAAiD,OAAA,KAAuBlD,MAAA;MAC3DC,UAAA,CAAAiD,OAAA,GAAqBlD,MAAA;IAAA;IACpBS,EAAA,IAACT,MAAA,EAAQiD,oBAAA;IAAqBjE,CAAA,MAAAiE,oBAAA;IAAAjE,CAAA,MAAAgB,MAAA;IAAAhB,CAAA,MAAAmB,EAAA;IAAAnB,CAAA,OAAAyB,EAAA;EAAA;IAAAN,EAAA,GAAAnB,CAAA;IAAAyB,EAAA,GAAAzB,CAAA;EAAA;EAHjCX,SAAA,CAAU8B,EAGV,EAAGM,EAA8B;EAAA,IAAAI,EAAA;EAAA,IAAA7B,CAAA,SAAAG,MAAA,CAAAC,GAAA;IAG/ByB,EAAA,GAAAsC,aAAA;MACE7D,iBAAA;QAAAyD,IAAA,EAA0B;QAAApC,IAAA,EAAiBwC;MAAA,CAAc;IAAA;IAC3DnE,CAAA,OAAA6B,EAAA;EAAA;IAAAA,EAAA,GAAA7B,CAAA;EAAA;EAHF,MAAAoE,gBAAA,GAAyBvC,EAIrB;EAAA,IAAAwC,EAAA;EAAA,IAAArE,CAAA,SAAAC,QAAA,IAAAD,CAAA,SAAAK,SAAA;IAGGgE,EAAA,GAAAC,IAAA,CAAAzE,OAAA;MAAAkC,KAAA;QAAA1B,SAAA;QAAA+D;MAAA;MAAAnE;IAAA,C;;;;;;;SAAAoE,E;CACT;AAEA,OAAO,MAAME,oBAAA,GAAuBA,CAAA,KAA+BpF,GAAA,CAAIU,OAAA;AAjGgB,SAAAsD,MAAAqB,IAAA;EAAA,OAmDnCC,MAAA,CAAO3C,IAAA;AAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"DrawerContent.d.ts","sourceRoot":"","sources":["../../../src/elements/UnpublishMany/DrawerContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAMpC,OAAO,KAAsB,MAAM,OAAO,CAAA;AAG1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAUpD,KAAK,+BAA+B,GAAG;IACrC,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,kBAAkB,CAAA;AAEtB,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,+BAA+B,qBA0JhF"}
1
+ {"version":3,"file":"DrawerContent.d.ts","sourceRoot":"","sources":["../../../src/elements/UnpublishMany/DrawerContent.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAMpC,OAAO,KAAsB,MAAM,OAAO,CAAA;AAG1C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAUpD,KAAK,+BAA+B,GAAG;IACrC,UAAU,EAAE,MAAM,CAAA;IAClB,GAAG,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,EAAE,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,SAAS,EAAE,OAAO,CAAA;IAClB,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,GAAG,kBAAkB,CAAA;AAEtB,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,+BAA+B,qBA4JhF"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { getTranslation } from '@payloadcms/translations';
3
3
  import { useRouter, useSearchParams } from 'next/navigation.js';
4
- import { combineWhereConstraints, mergeListSearchAndWhere } from 'payload/shared';
4
+ import { combineWhereConstraints, formatAdminURL, mergeListSearchAndWhere } from 'payload/shared';
5
5
  import * as qs from 'qs-esm';
6
6
  import React, { useCallback } from 'react';
7
7
  import { toast } from 'sonner';
@@ -32,8 +32,7 @@ export function UnpublishManyDrawerContent(props) {
32
32
  config: {
33
33
  routes: {
34
34
  api
35
- },
36
- serverURL
35
+ }
37
36
  }
38
37
  } = useConfig();
39
38
  const {
@@ -84,7 +83,11 @@ export function UnpublishManyDrawerContent(props) {
84
83
  });
85
84
  }, [collection, searchParams, selectAll, ids, locale, where]);
86
85
  const handleUnpublish = useCallback(async () => {
87
- await requests.patch(`${serverURL}${api}/${slug}${queryString}`, {
86
+ const url = formatAdminURL({
87
+ apiRoute: api,
88
+ path: `/${slug}${queryString}`
89
+ });
90
+ await requests.patch(url, {
88
91
  body: JSON.stringify({
89
92
  _status: 'draft'
90
93
  }),
@@ -129,7 +132,7 @@ export function UnpublishManyDrawerContent(props) {
129
132
  return addDefaultError();
130
133
  }
131
134
  });
132
- }, [serverURL, api, slug, queryString, i18n, plural, singular, t, router, searchParams, selectAll, clearRouteCache, addDefaultError, onSuccess]);
135
+ }, [api, slug, queryString, i18n, plural, singular, t, router, searchParams, selectAll, clearRouteCache, addDefaultError, onSuccess]);
133
136
  return /*#__PURE__*/_jsx(ConfirmationModal, {
134
137
  body: t('version:aboutToUnpublishSelection', {
135
138
  label: getTranslation(plural, i18n)
@@ -1 +1 @@
1
- {"version":3,"file":"DrawerContent.js","names":["getTranslation","useRouter","useSearchParams","combineWhereConstraints","mergeListSearchAndWhere","qs","React","useCallback","toast","useConfig","useLocale","useRouteCache","useTranslation","requests","parseSearchParams","ConfirmationModal","UnpublishManyDrawerContent","props","collection","slug","labels","plural","singular","drawerSlug","ids","onSuccess","selectAll","where","config","routes","api","serverURL","code","locale","i18n","t","searchParams","router","clearRouteCache","addDefaultError","error","queryString","useMemo","whereConstraints","_status","not_equals","push","queryWithSearch","collectionConfig","search","get","id","in","stringify","select","addQueryPrefix","handleUnpublish","patch","body","JSON","headers","language","then","res","json","deletedDocs","docs","length","successLabel","status","success","count","label","errors","message","description","map","join","replace","page","undefined","forEach","_err","_jsx","confirmingLabel","heading","modalSlug","onConfirm"],"sources":["../../../src/elements/UnpublishMany/DrawerContent.tsx"],"sourcesContent":["import type { Where } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { combineWhereConstraints, mergeListSearchAndWhere } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport type { UnpublishManyProps } from './index.js'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\n\ntype UnpublishManyDrawerContentProps = {\n drawerSlug: string\n ids: (number | string)[]\n onSuccess?: () => void\n selectAll: boolean\n where?: Where\n} & UnpublishManyProps\n\nexport function UnpublishManyDrawerContent(props: UnpublishManyDrawerContentProps) {\n const {\n collection,\n collection: { slug, labels: { plural, singular } } = {},\n drawerSlug,\n ids,\n onSuccess,\n selectAll,\n where,\n } = props\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n const searchParams = useSearchParams()\n const router = useRouter()\n const { clearRouteCache } = useRouteCache()\n const addDefaultError = useCallback(() => {\n toast.error(t('error:unknown'))\n }, [t])\n\n const queryString = React.useMemo((): string => {\n const whereConstraints: Where[] = [\n {\n _status: {\n not_equals: 'draft',\n },\n },\n ]\n\n if (where) {\n whereConstraints.push(where)\n }\n\n const queryWithSearch = mergeListSearchAndWhere({\n collectionConfig: collection,\n search: searchParams.get('search'),\n })\n\n if (queryWithSearch) {\n whereConstraints.push(queryWithSearch)\n }\n\n if (!selectAll) {\n // If we're not selecting all, we need to select specific docs\n whereConstraints.push({\n id: {\n in: ids || [],\n },\n })\n }\n\n return qs.stringify(\n {\n locale,\n select: {},\n where: combineWhereConstraints(whereConstraints),\n },\n { addQueryPrefix: true },\n )\n }, [collection, searchParams, selectAll, ids, locale, where])\n\n const handleUnpublish = useCallback(async () => {\n await requests\n .patch(`${serverURL}${api}/${slug}${queryString}`, {\n body: JSON.stringify({\n _status: 'draft',\n }),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n .then(async (res) => {\n try {\n const json = await res.json()\n\n const deletedDocs = json?.docs.length || 0\n const successLabel = deletedDocs > 1 ? plural : singular\n\n if (res.status < 400 || deletedDocs > 0) {\n toast.success(\n t('general:updatedCountSuccessfully', {\n count: deletedDocs,\n label: getTranslation(successLabel, i18n),\n }),\n )\n\n if (json?.errors.length > 0) {\n toast.error(json.message, {\n description: json.errors.map((error) => error.message).join('\\n'),\n })\n }\n\n router.replace(\n qs.stringify(\n {\n ...parseSearchParams(searchParams),\n page: selectAll ? '1' : undefined,\n },\n { addQueryPrefix: true },\n ),\n )\n\n clearRouteCache()\n\n if (typeof onSuccess === 'function') {\n onSuccess()\n }\n\n return null\n }\n\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n addDefaultError()\n }\n return false\n } catch (_err) {\n return addDefaultError()\n }\n })\n }, [\n serverURL,\n api,\n slug,\n queryString,\n i18n,\n plural,\n singular,\n t,\n router,\n searchParams,\n selectAll,\n clearRouteCache,\n addDefaultError,\n onSuccess,\n ])\n\n return (\n <ConfirmationModal\n body={t('version:aboutToUnpublishSelection', { label: getTranslation(plural, i18n) })}\n confirmingLabel={t('version:unpublishing')}\n heading={t('version:confirmUnpublish')}\n modalSlug={drawerSlug}\n onConfirm={handleUnpublish}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"DrawerContent.js","names":["getTranslation","useRouter","useSearchParams","combineWhereConstraints","formatAdminURL","mergeListSearchAndWhere","qs","React","useCallback","toast","useConfig","useLocale","useRouteCache","useTranslation","requests","parseSearchParams","ConfirmationModal","UnpublishManyDrawerContent","props","collection","slug","labels","plural","singular","drawerSlug","ids","onSuccess","selectAll","where","config","routes","api","code","locale","i18n","t","searchParams","router","clearRouteCache","addDefaultError","error","queryString","useMemo","whereConstraints","_status","not_equals","push","queryWithSearch","collectionConfig","search","get","id","in","stringify","select","addQueryPrefix","handleUnpublish","url","apiRoute","path","patch","body","JSON","headers","language","then","res","json","deletedDocs","docs","length","successLabel","status","success","count","label","errors","message","description","map","join","replace","page","undefined","forEach","_err","_jsx","confirmingLabel","heading","modalSlug","onConfirm"],"sources":["../../../src/elements/UnpublishMany/DrawerContent.tsx"],"sourcesContent":["import type { Where } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { useRouter, useSearchParams } from 'next/navigation.js'\nimport { combineWhereConstraints, formatAdminURL, mergeListSearchAndWhere } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback } from 'react'\nimport { toast } from 'sonner'\n\nimport type { UnpublishManyProps } from './index.js'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useLocale } from '../../providers/Locale/index.js'\nimport { useRouteCache } from '../../providers/RouteCache/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { requests } from '../../utilities/api.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { ConfirmationModal } from '../ConfirmationModal/index.js'\n\ntype UnpublishManyDrawerContentProps = {\n drawerSlug: string\n ids: (number | string)[]\n onSuccess?: () => void\n selectAll: boolean\n where?: Where\n} & UnpublishManyProps\n\nexport function UnpublishManyDrawerContent(props: UnpublishManyDrawerContentProps) {\n const {\n collection,\n collection: { slug, labels: { plural, singular } } = {},\n drawerSlug,\n ids,\n onSuccess,\n selectAll,\n where,\n } = props\n\n const {\n config: {\n routes: { api },\n },\n } = useConfig()\n const { code: locale } = useLocale()\n const { i18n, t } = useTranslation()\n const searchParams = useSearchParams()\n const router = useRouter()\n const { clearRouteCache } = useRouteCache()\n const addDefaultError = useCallback(() => {\n toast.error(t('error:unknown'))\n }, [t])\n\n const queryString = React.useMemo((): string => {\n const whereConstraints: Where[] = [\n {\n _status: {\n not_equals: 'draft',\n },\n },\n ]\n\n if (where) {\n whereConstraints.push(where)\n }\n\n const queryWithSearch = mergeListSearchAndWhere({\n collectionConfig: collection,\n search: searchParams.get('search'),\n })\n\n if (queryWithSearch) {\n whereConstraints.push(queryWithSearch)\n }\n\n if (!selectAll) {\n // If we're not selecting all, we need to select specific docs\n whereConstraints.push({\n id: {\n in: ids || [],\n },\n })\n }\n\n return qs.stringify(\n {\n locale,\n select: {},\n where: combineWhereConstraints(whereConstraints),\n },\n { addQueryPrefix: true },\n )\n }, [collection, searchParams, selectAll, ids, locale, where])\n\n const handleUnpublish = useCallback(async () => {\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${slug}${queryString}`,\n })\n await requests\n .patch(url, {\n body: JSON.stringify({\n _status: 'draft',\n }),\n headers: {\n 'Accept-Language': i18n.language,\n 'Content-Type': 'application/json',\n },\n })\n .then(async (res) => {\n try {\n const json = await res.json()\n\n const deletedDocs = json?.docs.length || 0\n const successLabel = deletedDocs > 1 ? plural : singular\n\n if (res.status < 400 || deletedDocs > 0) {\n toast.success(\n t('general:updatedCountSuccessfully', {\n count: deletedDocs,\n label: getTranslation(successLabel, i18n),\n }),\n )\n\n if (json?.errors.length > 0) {\n toast.error(json.message, {\n description: json.errors.map((error) => error.message).join('\\n'),\n })\n }\n\n router.replace(\n qs.stringify(\n {\n ...parseSearchParams(searchParams),\n page: selectAll ? '1' : undefined,\n },\n { addQueryPrefix: true },\n ),\n )\n\n clearRouteCache()\n\n if (typeof onSuccess === 'function') {\n onSuccess()\n }\n\n return null\n }\n\n if (json.errors) {\n json.errors.forEach((error) => toast.error(error.message))\n } else {\n addDefaultError()\n }\n return false\n } catch (_err) {\n return addDefaultError()\n }\n })\n }, [\n api,\n slug,\n queryString,\n i18n,\n plural,\n singular,\n t,\n router,\n searchParams,\n selectAll,\n clearRouteCache,\n addDefaultError,\n onSuccess,\n ])\n\n return (\n <ConfirmationModal\n body={t('version:aboutToUnpublishSelection', { label: getTranslation(plural, i18n) })}\n confirmingLabel={t('version:unpublishing')}\n heading={t('version:confirmUnpublish')}\n modalSlug={drawerSlug}\n onConfirm={handleUnpublish}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Upload/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAIhF,OAAO,KAA6D,MAAM,OAAO,CAAA;AAiBjF,OAAO,cAAc,CAAA;AAMrB,eAAO,MAAM,cAAc,gBAAgB,CAAA;AAC3C,eAAO,MAAM,eAAe,kBAAkB,CAAA;AAc9C,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;IACnC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAA;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,aAAa,wEAKvB,iBAAiB,sBAkDnB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAA;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,IAAI,CAAA;IACzC,QAAQ,CAAC,YAAY,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAA;IAC1D,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1C,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAYxC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IACtC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAA;IACxD,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;CACnC,GAAG,WAAW,CAAA;AAEf,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAua9C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Upload/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,yBAAyB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAIhF,OAAO,KAA6D,MAAM,OAAO,CAAA;AAiBjF,OAAO,cAAc,CAAA;AAMrB,eAAO,MAAM,cAAc,gBAAgB,CAAA;AAC3C,eAAO,MAAM,eAAe,kBAAkB,CAAA;AAc9C,KAAK,iBAAiB,GAAG;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAA;IACnC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAA;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,aAAa,wEAKvB,iBAAiB,sBAkDnB,CAAA;AAED,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,EAAE,CAAA;IAC1C,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAA;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,IAAI,CAAA;IACzC,QAAQ,CAAC,YAAY,EAAE,yBAAyB,CAAC,QAAQ,CAAC,CAAA;IAC1D,QAAQ,CAAC,cAAc,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1C,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAYxC,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAA;IACtC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,CAAA;IACxD,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;CACnC,GAAG,WAAW,CAAA;AAEf,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CA0a9C,CAAA"}
@@ -3,7 +3,7 @@
3
3
  import { c as _c } from "react/compiler-runtime";
4
4
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
5
  import { useModal } from '@faceless-ui/modal';
6
- import { isImage } from 'payload/shared';
6
+ import { formatAdminURL, isImage } from 'payload/shared';
7
7
  import React, { Fragment, useCallback, useEffect, useRef, useState } from 'react';
8
8
  import { toast } from 'sonner';
9
9
  import { FieldError } from '../../fields/FieldError/index.js';
@@ -153,8 +153,7 @@ export const Upload_v4 = props => {
153
153
  config: {
154
154
  routes: {
155
155
  api
156
- },
157
- serverURL
156
+ }
158
157
  }
159
158
  } = useConfig();
160
159
  const {
@@ -276,7 +275,10 @@ export const Upload_v4 = props => {
276
275
  // Attempt server-side fetch if client-side fetch fails and useServerSideFetch is true
277
276
  try {
278
277
  const pasteURL = `/${collectionSlug}/paste-url${id ? `/${id}?` : '?'}src=${encodeURIComponent(fileUrl)}`;
279
- const serverResponse = await fetch(`${serverURL}${api}${pasteURL}`);
278
+ const serverResponse = await fetch(formatAdminURL({
279
+ apiRoute: api,
280
+ path: pasteURL
281
+ }));
280
282
  if (!serverResponse.ok) {
281
283
  throw new Error(`Fetch failed with status: ${serverResponse.status}`);
282
284
  }
@@ -293,7 +295,7 @@ export const Upload_v4 = props => {
293
295
  toast.error('The provided URL is not allowed.');
294
296
  setUploadStatus('failed');
295
297
  }
296
- }, [api, collectionSlug, fileUrl, handleFileChange, id, serverURL, setUploadStatus, uploadConfig, uploadControlFileName, useServerSideFetch]);
298
+ }, [api, collectionSlug, fileUrl, handleFileChange, id, setUploadStatus, uploadConfig, uploadControlFileName, useServerSideFetch]);
297
299
  useEffect(() => {
298
300
  if (initialState?.file?.value instanceof File) {
299
301
  setFileSrc(URL.createObjectURL(initialState.file.value));
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useModal","isImage","React","Fragment","useCallback","useEffect","useRef","useState","toast","FieldError","fieldBaseClass","useForm","useFormProcessing","useField","useConfig","useDocumentInfo","EditDepthProvider","useTranslation","UploadControlsProvider","useUploadControls","useUploadEdits","Button","Drawer","Dropzone","EditUpload","FileDetails","PreviewSizes","Thumbnail","baseClass","editDrawerSlug","sizePreviewSlug","validate","value","undefined","name","UploadActions","t0","$","customActions","enableAdjustments","enablePreviewSizes","mimeType","t","openModal","t1","t2","Symbol","for","bb0","fileTypeIsAdjustable","length","_jsxs","className","children","_jsx","buttonStyle","margin","onClick","size","map","_temp","Upload","props","resetUploadEdits","updateUploadEdits","uploadEdits","Upload_v4","collectionSlug","initialState","onChange","uploadConfig","UploadControls","setUploadControlFile","setUploadControlFileName","setUploadControlFileUrl","uploadControlFile","uploadControlFileName","uploadControlFileUrl","config","routes","api","serverURL","setModified","id","data","docPermissions","setUploadStatus","isFormSubmitting","errorMessage","setValue","showError","path","fileSrc","setFileSrc","removedFile","setRemovedFile","filename","setFilename","showUrlInput","setShowUrlInput","fileUrl","setFileUrl","urlInputRef","inputRef","useServerSideFetch","pasteURL","allowList","handleFileChange","file","isNewFile","File","URL","createObjectURL","renameFile","fileToChange","newName","newFile","type","lastModified","handleFileNameChange","e","updatedFileName","target","handleFileSelection","files","fileToUpload","handleFileRemoval","onEditsSave","args","handleUrlSubmit","clientResponse","fetch","ok","Error","status","blob","fileName","decodeURIComponent","split","pop","_clientError","error","encodeURIComponent","serverResponse","_serverError","current","canRemoveUpload","update","hasImageSizes","imageSizes","hasResizeOptions","Boolean","resizeOptions","focalPointEnabled","focalPoint","crop","showCrop","showFocalPoint","acceptMimeTypes","mimeTypes","join","imageCacheTag","cacheTags","updatedAt","handleControlFileUrl","handleControlFile","filter","message","customUploadActions","doc","handleRemove","hideRemoveFile","hideFileInputOnCreate","click","accept","hidden","ref","title","icon","iconStyle","round","tooltip","Header","slug","url","initialCrop","initialFocalPoint","x","focalX","y","focalY","onSave","hoverTitle","label","CustomAction","i"],"sources":["../../../src/elements/Upload/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState, SanitizedCollectionConfig, UploadEdits } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { isImage } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { fieldBaseClass } from '../../fields/shared/index.js'\nimport { useForm, useFormProcessing } from '../../forms/Form/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { EditDepthProvider } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { UploadControlsProvider, useUploadControls } from '../../providers/UploadControls/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { Button } from '../Button/index.js'\nimport { Drawer } from '../Drawer/index.js'\nimport { Dropzone } from '../Dropzone/index.js'\nimport { EditUpload } from '../EditUpload/index.js'\nimport './index.scss'\nimport { FileDetails } from '../FileDetails/index.js'\nimport { PreviewSizes } from '../PreviewSizes/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\n\nconst baseClass = 'file-field'\nexport const editDrawerSlug = 'edit-upload'\nexport const sizePreviewSlug = 'preview-sizes'\n\nconst validate = (value) => {\n if (!value && value !== undefined) {\n return 'A file is required.'\n }\n\n if (value && (!value.name || value.name === '')) {\n return 'A file name is required.'\n }\n\n return true\n}\n\ntype UploadActionsArgs = {\n readonly customActions?: React.ReactNode[]\n readonly enableAdjustments: boolean\n readonly enablePreviewSizes: boolean\n readonly mimeType: string\n}\n\nexport const UploadActions = ({\n customActions,\n enableAdjustments,\n enablePreviewSizes,\n mimeType,\n}: UploadActionsArgs) => {\n const { t } = useTranslation()\n const { openModal } = useModal()\n\n const fileTypeIsAdjustable =\n isImage(mimeType) && mimeType !== 'image/svg+xml' && mimeType !== 'image/jxl'\n\n if (!fileTypeIsAdjustable && (!customActions || customActions.length === 0)) {\n return null\n }\n\n return (\n <div className={`${baseClass}__upload-actions`}>\n {fileTypeIsAdjustable && (\n <React.Fragment>\n {enablePreviewSizes && (\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__previewSizes`}\n margin={false}\n onClick={() => {\n openModal(sizePreviewSlug)\n }}\n size=\"small\"\n >\n {t('upload:previewSizes')}\n </Button>\n )}\n {enableAdjustments && (\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__edit`}\n margin={false}\n onClick={() => {\n openModal(editDrawerSlug)\n }}\n size=\"small\"\n >\n {t('upload:editImage')}\n </Button>\n )}\n </React.Fragment>\n )}\n\n {customActions &&\n customActions.map((CustomAction, i) => {\n return <React.Fragment key={i}>{CustomAction}</React.Fragment>\n })}\n </div>\n )\n}\n\nexport type UploadProps = {\n readonly collectionSlug: string\n readonly customActions?: React.ReactNode[]\n readonly initialState?: FormState\n readonly onChange?: (file?: File) => void\n readonly uploadConfig: SanitizedCollectionConfig['upload']\n readonly UploadControls?: React.ReactNode\n}\n\nexport const Upload: React.FC<UploadProps> = (props) => {\n const { resetUploadEdits, updateUploadEdits, uploadEdits } = useUploadEdits()\n return (\n <UploadControlsProvider>\n <Upload_v4\n {...props}\n resetUploadEdits={resetUploadEdits}\n updateUploadEdits={updateUploadEdits}\n uploadEdits={uploadEdits}\n />\n </UploadControlsProvider>\n )\n}\n\nexport type UploadProps_v4 = {\n readonly resetUploadEdits?: () => void\n readonly updateUploadEdits?: (args: UploadEdits) => void\n readonly uploadEdits?: UploadEdits\n} & UploadProps\n\nexport const Upload_v4: React.FC<UploadProps_v4> = (props) => {\n const {\n collectionSlug,\n customActions,\n initialState,\n onChange,\n resetUploadEdits,\n updateUploadEdits,\n uploadConfig,\n UploadControls,\n uploadEdits,\n } = props\n\n const {\n setUploadControlFile,\n setUploadControlFileName,\n setUploadControlFileUrl,\n uploadControlFile,\n uploadControlFileName,\n uploadControlFileUrl,\n } = useUploadControls()\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n } = useConfig()\n\n const { t } = useTranslation()\n const { setModified } = useForm()\n const { id, data, docPermissions, setUploadStatus } = useDocumentInfo()\n const isFormSubmitting = useFormProcessing()\n const { errorMessage, setValue, showError, value } = useField<File>({\n path: 'file',\n validate,\n })\n\n const [fileSrc, setFileSrc] = useState<null | string>(null)\n const [removedFile, setRemovedFile] = useState(false)\n const [filename, setFilename] = useState<string>(value?.name || '')\n const [showUrlInput, setShowUrlInput] = useState(false)\n const [fileUrl, setFileUrl] = useState<string>('')\n\n const urlInputRef = useRef<HTMLInputElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n\n const useServerSideFetch =\n typeof uploadConfig?.pasteURL === 'object' && uploadConfig.pasteURL.allowList?.length > 0\n\n const handleFileChange = useCallback(\n ({ file, isNewFile = true }: { file: File | null; isNewFile?: boolean }) => {\n if (isNewFile && file instanceof File) {\n setFileSrc(URL.createObjectURL(file))\n }\n\n setValue(file)\n setShowUrlInput(false)\n setUploadControlFileUrl('')\n setUploadControlFileName(null)\n setUploadControlFile(null)\n\n if (typeof onChange === 'function') {\n onChange(file)\n }\n },\n [onChange, setValue, setUploadControlFile, setUploadControlFileName, setUploadControlFileUrl],\n )\n\n const renameFile = (fileToChange: File, newName: string): File => {\n // Creating a new File object with updated properties\n const newFile = new File([fileToChange], newName, {\n type: fileToChange.type,\n lastModified: fileToChange.lastModified,\n })\n return newFile\n }\n\n const handleFileNameChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const updatedFileName = e.target.value\n\n if (value) {\n handleFileChange({ file: renameFile(value, updatedFileName), isNewFile: false })\n setFilename(updatedFileName)\n }\n },\n [handleFileChange, value],\n )\n\n const handleFileSelection = useCallback(\n (files: FileList) => {\n const fileToUpload = files?.[0]\n handleFileChange({ file: fileToUpload })\n },\n [handleFileChange],\n )\n\n const handleFileRemoval = useCallback(() => {\n setRemovedFile(true)\n handleFileChange({ file: null })\n setFileSrc('')\n setFileUrl('')\n resetUploadEdits()\n setShowUrlInput(false)\n setUploadControlFileUrl('')\n setUploadControlFileName(null)\n setUploadControlFile(null)\n }, [\n handleFileChange,\n resetUploadEdits,\n setUploadControlFile,\n setUploadControlFileName,\n setUploadControlFileUrl,\n ])\n\n const onEditsSave = useCallback(\n (args: UploadEdits) => {\n setModified(true)\n updateUploadEdits(args)\n },\n [setModified, updateUploadEdits],\n )\n\n const handleUrlSubmit = useCallback(async () => {\n if (!fileUrl || uploadConfig?.pasteURL === false) {\n return\n }\n\n setUploadStatus('uploading')\n try {\n // Attempt client-side fetch\n const clientResponse = await fetch(fileUrl)\n\n if (!clientResponse.ok) {\n throw new Error(`Fetch failed with status: ${clientResponse.status}`)\n }\n\n const blob = await clientResponse.blob()\n const fileName = uploadControlFileName || decodeURIComponent(fileUrl.split('/').pop() || '')\n const file = new File([blob], fileName, { type: blob.type })\n\n handleFileChange({ file })\n setUploadStatus('idle')\n return // Exit if client-side fetch succeeds\n } catch (_clientError) {\n if (!useServerSideFetch) {\n // If server-side fetch is not enabled, show client-side error\n toast.error('Failed to fetch the file.')\n setUploadStatus('failed')\n return\n }\n }\n\n // Attempt server-side fetch if client-side fetch fails and useServerSideFetch is true\n try {\n const pasteURL = `/${collectionSlug}/paste-url${id ? `/${id}?` : '?'}src=${encodeURIComponent(fileUrl)}`\n const serverResponse = await fetch(`${serverURL}${api}${pasteURL}`)\n\n if (!serverResponse.ok) {\n throw new Error(`Fetch failed with status: ${serverResponse.status}`)\n }\n\n const blob = await serverResponse.blob()\n const fileName = decodeURIComponent(fileUrl.split('/').pop() || '')\n const file = new File([blob], fileName, { type: blob.type })\n\n handleFileChange({ file })\n setUploadStatus('idle')\n } catch (_serverError) {\n toast.error('The provided URL is not allowed.')\n setUploadStatus('failed')\n }\n }, [\n api,\n collectionSlug,\n fileUrl,\n handleFileChange,\n id,\n serverURL,\n setUploadStatus,\n uploadConfig,\n uploadControlFileName,\n useServerSideFetch,\n ])\n\n useEffect(() => {\n if (initialState?.file?.value instanceof File) {\n setFileSrc(URL.createObjectURL(initialState.file.value))\n setRemovedFile(false)\n }\n }, [initialState])\n\n useEffect(() => {\n if (showUrlInput && urlInputRef.current) {\n // urlInputRef.current.focus() // Focus on the remote-url input field when showUrlInput is true\n }\n }, [showUrlInput])\n\n useEffect(() => {\n if (isFormSubmitting) {\n setRemovedFile(false)\n }\n }, [isFormSubmitting])\n\n const canRemoveUpload = docPermissions?.update\n\n const hasImageSizes = uploadConfig?.imageSizes?.length > 0\n const hasResizeOptions = Boolean(uploadConfig?.resizeOptions)\n // Explicity check if set to true, default is undefined\n const focalPointEnabled = uploadConfig?.focalPoint === true\n\n const { crop: showCrop = true, focalPoint = true } = uploadConfig\n\n const showFocalPoint = focalPoint && (hasImageSizes || hasResizeOptions || focalPointEnabled)\n\n const acceptMimeTypes = uploadConfig.mimeTypes?.join(', ')\n\n const imageCacheTag = uploadConfig?.cacheTags && data?.updatedAt\n\n useEffect(() => {\n const handleControlFileUrl = async () => {\n if (uploadControlFileUrl) {\n setFileUrl(uploadControlFileUrl)\n await handleUrlSubmit()\n }\n }\n\n void handleControlFileUrl()\n }, [uploadControlFileUrl, handleUrlSubmit])\n\n useEffect(() => {\n const handleControlFile = () => {\n if (uploadControlFile) {\n handleFileChange({ file: uploadControlFile })\n }\n }\n\n void handleControlFile()\n }, [uploadControlFile, handleFileChange])\n\n return (\n <div className={[fieldBaseClass, baseClass].filter(Boolean).join(' ')}>\n <FieldError message={errorMessage} showError={showError} />\n {data && data.filename && !removedFile && (\n <FileDetails\n collectionSlug={collectionSlug}\n customUploadActions={customActions}\n doc={data}\n enableAdjustments={showCrop || showFocalPoint}\n handleRemove={canRemoveUpload ? handleFileRemoval : undefined}\n hasImageSizes={hasImageSizes}\n hideRemoveFile={uploadConfig.hideRemoveFile}\n imageCacheTag={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n )}\n {((!uploadConfig.hideFileInputOnCreate && !data?.filename) || removedFile) && (\n <div className={`${baseClass}__upload`}>\n {!value && !showUrlInput && (\n <Dropzone onChange={handleFileSelection}>\n <div className={`${baseClass}__dropzoneContent`}>\n <div className={`${baseClass}__dropzoneButtons`}>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n if (inputRef.current) {\n inputRef.current.click()\n }\n }}\n size=\"small\"\n >\n {t('upload:selectFile')}\n </Button>\n <input\n accept={acceptMimeTypes}\n aria-hidden=\"true\"\n className={`${baseClass}__hidden-input`}\n hidden\n onChange={(e) => {\n if (e.target.files && e.target.files.length > 0) {\n handleFileSelection(e.target.files)\n }\n }}\n ref={inputRef}\n type=\"file\"\n />\n {uploadConfig?.pasteURL !== false && (\n <Fragment>\n <span className={`${baseClass}__orText`}>{t('general:or')}</span>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n setShowUrlInput(true)\n setUploadControlFileUrl('')\n setUploadControlFile(null)\n setUploadControlFileName(null)\n }}\n size=\"small\"\n >\n {t('upload:pasteURL')}\n </Button>\n </Fragment>\n )}\n\n {UploadControls ? UploadControls : null}\n </div>\n <p className={`${baseClass}__dragAndDropText`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n </div>\n </Dropzone>\n )}\n {showUrlInput && (\n <React.Fragment>\n <div className={`${baseClass}__remote-file-wrap`}>\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n className={`${baseClass}__remote-file`}\n onChange={(e) => {\n setFileUrl(e.target.value)\n }}\n ref={urlInputRef}\n title={fileUrl}\n type=\"text\"\n value={fileUrl}\n />\n <div className={`${baseClass}__add-file-wrap`}>\n <button\n className={`${baseClass}__add-file`}\n onClick={() => {\n void handleUrlSubmit()\n }}\n type=\"button\"\n >\n {t('upload:addFile')}\n </button>\n </div>\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={() => {\n setShowUrlInput(false)\n setUploadControlFileUrl('')\n setUploadControlFile(null)\n setUploadControlFileName(null)\n }}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n {value && fileSrc && (\n <React.Fragment>\n <div className={`${baseClass}__thumbnail-wrap`}>\n <Thumbnail\n collectionSlug={collectionSlug}\n fileSrc={isImage(value.type) ? fileSrc : null}\n />\n </div>\n <div className={`${baseClass}__file-adjustments`}>\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n className={`${baseClass}__filename`}\n onChange={handleFileNameChange}\n title={filename || value.name}\n type=\"text\"\n value={filename || value.name}\n />\n <UploadActions\n customActions={customActions}\n enableAdjustments={showCrop || showFocalPoint}\n enablePreviewSizes={hasImageSizes && data?.filename && !removedFile}\n mimeType={value.type}\n />\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={handleFileRemoval}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n </div>\n )}\n {(value || data?.filename) && (\n <EditDepthProvider>\n <Drawer Header={null} slug={editDrawerSlug}>\n <EditUpload\n fileName={value?.name || data?.filename}\n fileSrc={data?.url || fileSrc}\n imageCacheTag={imageCacheTag}\n initialCrop={uploadEdits?.crop ?? undefined}\n initialFocalPoint={{\n x: uploadEdits?.focalPoint?.x || data?.focalX || 50,\n y: uploadEdits?.focalPoint?.y || data?.focalY || 50,\n }}\n onSave={onEditsSave}\n showCrop={showCrop}\n showFocalPoint={showFocalPoint}\n />\n </Drawer>\n </EditDepthProvider>\n )}\n {data && hasImageSizes && (\n <Drawer\n className={`${baseClass}__previewDrawer`}\n hoverTitle\n slug={sizePreviewSlug}\n title={t('upload:sizesFor', { label: data.filename })}\n >\n <PreviewSizes doc={data} imageCacheTag={imageCacheTag} uploadConfig={uploadConfig} />\n </Drawer>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useModal","formatAdminURL","isImage","React","Fragment","useCallback","useEffect","useRef","useState","toast","FieldError","fieldBaseClass","useForm","useFormProcessing","useField","useConfig","useDocumentInfo","EditDepthProvider","useTranslation","UploadControlsProvider","useUploadControls","useUploadEdits","Button","Drawer","Dropzone","EditUpload","FileDetails","PreviewSizes","Thumbnail","baseClass","editDrawerSlug","sizePreviewSlug","validate","value","undefined","name","UploadActions","t0","$","customActions","enableAdjustments","enablePreviewSizes","mimeType","t","openModal","t1","t2","Symbol","for","bb0","fileTypeIsAdjustable","length","_jsxs","className","children","_jsx","buttonStyle","margin","onClick","size","map","_temp","Upload","props","resetUploadEdits","updateUploadEdits","uploadEdits","Upload_v4","collectionSlug","initialState","onChange","uploadConfig","UploadControls","setUploadControlFile","setUploadControlFileName","setUploadControlFileUrl","uploadControlFile","uploadControlFileName","uploadControlFileUrl","config","routes","api","setModified","id","data","docPermissions","setUploadStatus","isFormSubmitting","errorMessage","setValue","showError","path","fileSrc","setFileSrc","removedFile","setRemovedFile","filename","setFilename","showUrlInput","setShowUrlInput","fileUrl","setFileUrl","urlInputRef","inputRef","useServerSideFetch","pasteURL","allowList","handleFileChange","file","isNewFile","File","URL","createObjectURL","renameFile","fileToChange","newName","newFile","type","lastModified","handleFileNameChange","e","updatedFileName","target","handleFileSelection","files","fileToUpload","handleFileRemoval","onEditsSave","args","handleUrlSubmit","clientResponse","fetch","ok","Error","status","blob","fileName","decodeURIComponent","split","pop","_clientError","error","encodeURIComponent","serverResponse","apiRoute","_serverError","current","canRemoveUpload","update","hasImageSizes","imageSizes","hasResizeOptions","Boolean","resizeOptions","focalPointEnabled","focalPoint","crop","showCrop","showFocalPoint","acceptMimeTypes","mimeTypes","join","imageCacheTag","cacheTags","updatedAt","handleControlFileUrl","handleControlFile","filter","message","customUploadActions","doc","handleRemove","hideRemoveFile","hideFileInputOnCreate","click","accept","hidden","ref","title","icon","iconStyle","round","tooltip","Header","slug","url","initialCrop","initialFocalPoint","x","focalX","y","focalY","onSave","hoverTitle","label","CustomAction","i"],"sources":["../../../src/elements/Upload/index.tsx"],"sourcesContent":["'use client'\nimport type { FormState, SanitizedCollectionConfig, UploadEdits } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { formatAdminURL, isImage } from 'payload/shared'\nimport React, { Fragment, useCallback, useEffect, useRef, useState } from 'react'\nimport { toast } from 'sonner'\n\nimport { FieldError } from '../../fields/FieldError/index.js'\nimport { fieldBaseClass } from '../../fields/shared/index.js'\nimport { useForm, useFormProcessing } from '../../forms/Form/index.js'\nimport { useField } from '../../forms/useField/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useDocumentInfo } from '../../providers/DocumentInfo/index.js'\nimport { EditDepthProvider } from '../../providers/EditDepth/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { UploadControlsProvider, useUploadControls } from '../../providers/UploadControls/index.js'\nimport { useUploadEdits } from '../../providers/UploadEdits/index.js'\nimport { Button } from '../Button/index.js'\nimport { Drawer } from '../Drawer/index.js'\nimport { Dropzone } from '../Dropzone/index.js'\nimport { EditUpload } from '../EditUpload/index.js'\nimport './index.scss'\nimport { FileDetails } from '../FileDetails/index.js'\nimport { PreviewSizes } from '../PreviewSizes/index.js'\nimport { Thumbnail } from '../Thumbnail/index.js'\n\nconst baseClass = 'file-field'\nexport const editDrawerSlug = 'edit-upload'\nexport const sizePreviewSlug = 'preview-sizes'\n\nconst validate = (value) => {\n if (!value && value !== undefined) {\n return 'A file is required.'\n }\n\n if (value && (!value.name || value.name === '')) {\n return 'A file name is required.'\n }\n\n return true\n}\n\ntype UploadActionsArgs = {\n readonly customActions?: React.ReactNode[]\n readonly enableAdjustments: boolean\n readonly enablePreviewSizes: boolean\n readonly mimeType: string\n}\n\nexport const UploadActions = ({\n customActions,\n enableAdjustments,\n enablePreviewSizes,\n mimeType,\n}: UploadActionsArgs) => {\n const { t } = useTranslation()\n const { openModal } = useModal()\n\n const fileTypeIsAdjustable =\n isImage(mimeType) && mimeType !== 'image/svg+xml' && mimeType !== 'image/jxl'\n\n if (!fileTypeIsAdjustable && (!customActions || customActions.length === 0)) {\n return null\n }\n\n return (\n <div className={`${baseClass}__upload-actions`}>\n {fileTypeIsAdjustable && (\n <React.Fragment>\n {enablePreviewSizes && (\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__previewSizes`}\n margin={false}\n onClick={() => {\n openModal(sizePreviewSlug)\n }}\n size=\"small\"\n >\n {t('upload:previewSizes')}\n </Button>\n )}\n {enableAdjustments && (\n <Button\n buttonStyle=\"pill\"\n className={`${baseClass}__edit`}\n margin={false}\n onClick={() => {\n openModal(editDrawerSlug)\n }}\n size=\"small\"\n >\n {t('upload:editImage')}\n </Button>\n )}\n </React.Fragment>\n )}\n\n {customActions &&\n customActions.map((CustomAction, i) => {\n return <React.Fragment key={i}>{CustomAction}</React.Fragment>\n })}\n </div>\n )\n}\n\nexport type UploadProps = {\n readonly collectionSlug: string\n readonly customActions?: React.ReactNode[]\n readonly initialState?: FormState\n readonly onChange?: (file?: File) => void\n readonly uploadConfig: SanitizedCollectionConfig['upload']\n readonly UploadControls?: React.ReactNode\n}\n\nexport const Upload: React.FC<UploadProps> = (props) => {\n const { resetUploadEdits, updateUploadEdits, uploadEdits } = useUploadEdits()\n return (\n <UploadControlsProvider>\n <Upload_v4\n {...props}\n resetUploadEdits={resetUploadEdits}\n updateUploadEdits={updateUploadEdits}\n uploadEdits={uploadEdits}\n />\n </UploadControlsProvider>\n )\n}\n\nexport type UploadProps_v4 = {\n readonly resetUploadEdits?: () => void\n readonly updateUploadEdits?: (args: UploadEdits) => void\n readonly uploadEdits?: UploadEdits\n} & UploadProps\n\nexport const Upload_v4: React.FC<UploadProps_v4> = (props) => {\n const {\n collectionSlug,\n customActions,\n initialState,\n onChange,\n resetUploadEdits,\n updateUploadEdits,\n uploadConfig,\n UploadControls,\n uploadEdits,\n } = props\n\n const {\n setUploadControlFile,\n setUploadControlFileName,\n setUploadControlFileUrl,\n uploadControlFile,\n uploadControlFileName,\n uploadControlFileUrl,\n } = useUploadControls()\n\n const {\n config: {\n routes: { api },\n },\n } = useConfig()\n\n const { t } = useTranslation()\n const { setModified } = useForm()\n const { id, data, docPermissions, setUploadStatus } = useDocumentInfo()\n const isFormSubmitting = useFormProcessing()\n const { errorMessage, setValue, showError, value } = useField<File>({\n path: 'file',\n validate,\n })\n\n const [fileSrc, setFileSrc] = useState<null | string>(null)\n const [removedFile, setRemovedFile] = useState(false)\n const [filename, setFilename] = useState<string>(value?.name || '')\n const [showUrlInput, setShowUrlInput] = useState(false)\n const [fileUrl, setFileUrl] = useState<string>('')\n\n const urlInputRef = useRef<HTMLInputElement>(null)\n const inputRef = useRef<HTMLInputElement>(null)\n\n const useServerSideFetch =\n typeof uploadConfig?.pasteURL === 'object' && uploadConfig.pasteURL.allowList?.length > 0\n\n const handleFileChange = useCallback(\n ({ file, isNewFile = true }: { file: File | null; isNewFile?: boolean }) => {\n if (isNewFile && file instanceof File) {\n setFileSrc(URL.createObjectURL(file))\n }\n\n setValue(file)\n setShowUrlInput(false)\n setUploadControlFileUrl('')\n setUploadControlFileName(null)\n setUploadControlFile(null)\n\n if (typeof onChange === 'function') {\n onChange(file)\n }\n },\n [onChange, setValue, setUploadControlFile, setUploadControlFileName, setUploadControlFileUrl],\n )\n\n const renameFile = (fileToChange: File, newName: string): File => {\n // Creating a new File object with updated properties\n const newFile = new File([fileToChange], newName, {\n type: fileToChange.type,\n lastModified: fileToChange.lastModified,\n })\n return newFile\n }\n\n const handleFileNameChange = React.useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const updatedFileName = e.target.value\n\n if (value) {\n handleFileChange({ file: renameFile(value, updatedFileName), isNewFile: false })\n setFilename(updatedFileName)\n }\n },\n [handleFileChange, value],\n )\n\n const handleFileSelection = useCallback(\n (files: FileList) => {\n const fileToUpload = files?.[0]\n handleFileChange({ file: fileToUpload })\n },\n [handleFileChange],\n )\n\n const handleFileRemoval = useCallback(() => {\n setRemovedFile(true)\n handleFileChange({ file: null })\n setFileSrc('')\n setFileUrl('')\n resetUploadEdits()\n setShowUrlInput(false)\n setUploadControlFileUrl('')\n setUploadControlFileName(null)\n setUploadControlFile(null)\n }, [\n handleFileChange,\n resetUploadEdits,\n setUploadControlFile,\n setUploadControlFileName,\n setUploadControlFileUrl,\n ])\n\n const onEditsSave = useCallback(\n (args: UploadEdits) => {\n setModified(true)\n updateUploadEdits(args)\n },\n [setModified, updateUploadEdits],\n )\n\n const handleUrlSubmit = useCallback(async () => {\n if (!fileUrl || uploadConfig?.pasteURL === false) {\n return\n }\n\n setUploadStatus('uploading')\n try {\n // Attempt client-side fetch\n const clientResponse = await fetch(fileUrl)\n\n if (!clientResponse.ok) {\n throw new Error(`Fetch failed with status: ${clientResponse.status}`)\n }\n\n const blob = await clientResponse.blob()\n const fileName = uploadControlFileName || decodeURIComponent(fileUrl.split('/').pop() || '')\n const file = new File([blob], fileName, { type: blob.type })\n\n handleFileChange({ file })\n setUploadStatus('idle')\n return // Exit if client-side fetch succeeds\n } catch (_clientError) {\n if (!useServerSideFetch) {\n // If server-side fetch is not enabled, show client-side error\n toast.error('Failed to fetch the file.')\n setUploadStatus('failed')\n return\n }\n }\n\n // Attempt server-side fetch if client-side fetch fails and useServerSideFetch is true\n try {\n const pasteURL: `/${string}` = `/${collectionSlug}/paste-url${id ? `/${id}?` : '?'}src=${encodeURIComponent(fileUrl)}`\n const serverResponse = await fetch(\n formatAdminURL({\n apiRoute: api,\n path: pasteURL,\n }),\n )\n\n if (!serverResponse.ok) {\n throw new Error(`Fetch failed with status: ${serverResponse.status}`)\n }\n\n const blob = await serverResponse.blob()\n const fileName = decodeURIComponent(fileUrl.split('/').pop() || '')\n const file = new File([blob], fileName, { type: blob.type })\n\n handleFileChange({ file })\n setUploadStatus('idle')\n } catch (_serverError) {\n toast.error('The provided URL is not allowed.')\n setUploadStatus('failed')\n }\n }, [\n api,\n collectionSlug,\n fileUrl,\n handleFileChange,\n id,\n setUploadStatus,\n uploadConfig,\n uploadControlFileName,\n useServerSideFetch,\n ])\n\n useEffect(() => {\n if (initialState?.file?.value instanceof File) {\n setFileSrc(URL.createObjectURL(initialState.file.value))\n setRemovedFile(false)\n }\n }, [initialState])\n\n useEffect(() => {\n if (showUrlInput && urlInputRef.current) {\n // urlInputRef.current.focus() // Focus on the remote-url input field when showUrlInput is true\n }\n }, [showUrlInput])\n\n useEffect(() => {\n if (isFormSubmitting) {\n setRemovedFile(false)\n }\n }, [isFormSubmitting])\n\n const canRemoveUpload = docPermissions?.update\n\n const hasImageSizes = uploadConfig?.imageSizes?.length > 0\n const hasResizeOptions = Boolean(uploadConfig?.resizeOptions)\n // Explicity check if set to true, default is undefined\n const focalPointEnabled = uploadConfig?.focalPoint === true\n\n const { crop: showCrop = true, focalPoint = true } = uploadConfig\n\n const showFocalPoint = focalPoint && (hasImageSizes || hasResizeOptions || focalPointEnabled)\n\n const acceptMimeTypes = uploadConfig.mimeTypes?.join(', ')\n\n const imageCacheTag = uploadConfig?.cacheTags && data?.updatedAt\n\n useEffect(() => {\n const handleControlFileUrl = async () => {\n if (uploadControlFileUrl) {\n setFileUrl(uploadControlFileUrl)\n await handleUrlSubmit()\n }\n }\n\n void handleControlFileUrl()\n }, [uploadControlFileUrl, handleUrlSubmit])\n\n useEffect(() => {\n const handleControlFile = () => {\n if (uploadControlFile) {\n handleFileChange({ file: uploadControlFile })\n }\n }\n\n void handleControlFile()\n }, [uploadControlFile, handleFileChange])\n\n return (\n <div className={[fieldBaseClass, baseClass].filter(Boolean).join(' ')}>\n <FieldError message={errorMessage} showError={showError} />\n {data && data.filename && !removedFile && (\n <FileDetails\n collectionSlug={collectionSlug}\n customUploadActions={customActions}\n doc={data}\n enableAdjustments={showCrop || showFocalPoint}\n handleRemove={canRemoveUpload ? handleFileRemoval : undefined}\n hasImageSizes={hasImageSizes}\n hideRemoveFile={uploadConfig.hideRemoveFile}\n imageCacheTag={imageCacheTag}\n uploadConfig={uploadConfig}\n />\n )}\n {((!uploadConfig.hideFileInputOnCreate && !data?.filename) || removedFile) && (\n <div className={`${baseClass}__upload`}>\n {!value && !showUrlInput && (\n <Dropzone onChange={handleFileSelection}>\n <div className={`${baseClass}__dropzoneContent`}>\n <div className={`${baseClass}__dropzoneButtons`}>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n if (inputRef.current) {\n inputRef.current.click()\n }\n }}\n size=\"small\"\n >\n {t('upload:selectFile')}\n </Button>\n <input\n accept={acceptMimeTypes}\n aria-hidden=\"true\"\n className={`${baseClass}__hidden-input`}\n hidden\n onChange={(e) => {\n if (e.target.files && e.target.files.length > 0) {\n handleFileSelection(e.target.files)\n }\n }}\n ref={inputRef}\n type=\"file\"\n />\n {uploadConfig?.pasteURL !== false && (\n <Fragment>\n <span className={`${baseClass}__orText`}>{t('general:or')}</span>\n <Button\n buttonStyle=\"pill\"\n onClick={() => {\n setShowUrlInput(true)\n setUploadControlFileUrl('')\n setUploadControlFile(null)\n setUploadControlFileName(null)\n }}\n size=\"small\"\n >\n {t('upload:pasteURL')}\n </Button>\n </Fragment>\n )}\n\n {UploadControls ? UploadControls : null}\n </div>\n <p className={`${baseClass}__dragAndDropText`}>\n {t('general:or')} {t('upload:dragAndDrop')}\n </p>\n </div>\n </Dropzone>\n )}\n {showUrlInput && (\n <React.Fragment>\n <div className={`${baseClass}__remote-file-wrap`}>\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n className={`${baseClass}__remote-file`}\n onChange={(e) => {\n setFileUrl(e.target.value)\n }}\n ref={urlInputRef}\n title={fileUrl}\n type=\"text\"\n value={fileUrl}\n />\n <div className={`${baseClass}__add-file-wrap`}>\n <button\n className={`${baseClass}__add-file`}\n onClick={() => {\n void handleUrlSubmit()\n }}\n type=\"button\"\n >\n {t('upload:addFile')}\n </button>\n </div>\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={() => {\n setShowUrlInput(false)\n setUploadControlFileUrl('')\n setUploadControlFile(null)\n setUploadControlFileName(null)\n }}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n {value && fileSrc && (\n <React.Fragment>\n <div className={`${baseClass}__thumbnail-wrap`}>\n <Thumbnail\n collectionSlug={collectionSlug}\n fileSrc={isImage(value.type) ? fileSrc : null}\n />\n </div>\n <div className={`${baseClass}__file-adjustments`}>\n {/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}\n <input\n className={`${baseClass}__filename`}\n onChange={handleFileNameChange}\n title={filename || value.name}\n type=\"text\"\n value={filename || value.name}\n />\n <UploadActions\n customActions={customActions}\n enableAdjustments={showCrop || showFocalPoint}\n enablePreviewSizes={hasImageSizes && data?.filename && !removedFile}\n mimeType={value.type}\n />\n </div>\n <Button\n buttonStyle=\"icon-label\"\n className={`${baseClass}__remove`}\n icon=\"x\"\n iconStyle=\"with-border\"\n onClick={handleFileRemoval}\n round\n tooltip={t('general:cancel')}\n />\n </React.Fragment>\n )}\n </div>\n )}\n {(value || data?.filename) && (\n <EditDepthProvider>\n <Drawer Header={null} slug={editDrawerSlug}>\n <EditUpload\n fileName={value?.name || data?.filename}\n fileSrc={data?.url || fileSrc}\n imageCacheTag={imageCacheTag}\n initialCrop={uploadEdits?.crop ?? undefined}\n initialFocalPoint={{\n x: uploadEdits?.focalPoint?.x || data?.focalX || 50,\n y: uploadEdits?.focalPoint?.y || data?.focalY || 50,\n }}\n onSave={onEditsSave}\n showCrop={showCrop}\n showFocalPoint={showFocalPoint}\n />\n </Drawer>\n </EditDepthProvider>\n )}\n {data && hasImageSizes && (\n <Drawer\n className={`${baseClass}__previewDrawer`}\n hoverTitle\n slug={sizePreviewSlug}\n title={t('upload:sizesFor', { label: data.filename })}\n >\n <PreviewSizes doc={data} imageCacheTag={imageCacheTag} uploadConfig={uploadConfig} />\n </Drawer>\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/WhereBuilder/Condition/Relationship/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAuD,MAAM,OAAO,CAAA;AAG3E,OAAO,KAAK,EAAE,uBAAuB,IAAI,KAAK,EAAqB,MAAM,YAAY,CAAA;AASrF,OAAO,cAAc,CAAA;AAMrB,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAmZ9C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/elements/WhereBuilder/Condition/Relationship/index.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAuD,MAAM,OAAO,CAAA;AAG3E,OAAO,KAAK,EAAE,uBAAuB,IAAI,KAAK,EAAqB,MAAM,YAAY,CAAA;AAQrF,OAAO,cAAc,CAAA;AAOrB,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAwZ9C,CAAA"}
@@ -1,6 +1,7 @@
1
1
  'use client';
2
2
 
3
3
  import { jsx as _jsx } from "react/jsx-runtime";
4
+ import { formatAdminURL } from 'payload/shared';
4
5
  import * as qs from 'qs-esm';
5
6
  import React, { useCallback, useEffect, useReducer, useState } from 'react';
6
7
  import { useDebounce } from '../../../../hooks/useDebounce.js';
@@ -9,8 +10,8 @@ import { useConfig } from '../../../../providers/Config/index.js';
9
10
  import { useLocale } from '../../../../providers/Locale/index.js';
10
11
  import { useTranslation } from '../../../../providers/Translation/index.js';
11
12
  import { ReactSelect } from '../../../ReactSelect/index.js';
12
- import optionsReducer from './optionsReducer.js';
13
13
  import './index.scss';
14
+ import optionsReducer from './optionsReducer.js';
14
15
  const baseClass = 'condition-value-relationship';
15
16
  const maxResultsPerRequest = 10;
16
17
  export const RelationshipFilter = props => {
@@ -31,8 +32,7 @@ export const RelationshipFilter = props => {
31
32
  config: {
32
33
  routes: {
33
34
  api
34
- },
35
- serverURL
35
+ }
36
36
  },
37
37
  getEntityConfig
38
38
  } = useConfig();
@@ -99,9 +99,12 @@ export const RelationshipFilter = props => {
99
99
  });
100
100
  }
101
101
  try {
102
- const response = await fetch(`${serverURL}${api}/${relationSlug}${qs.stringify(query, {
103
- addQueryPrefix: true
104
- })}`, {
102
+ const response = await fetch(formatAdminURL({
103
+ apiRoute: api,
104
+ path: `/${relationSlug}${qs.stringify(query, {
105
+ addQueryPrefix: true
106
+ })}`
107
+ }), {
105
108
  credentials: 'include',
106
109
  headers: {
107
110
  'Accept-Language': i18n.language
@@ -207,7 +210,10 @@ export const RelationshipFilter = props => {
207
210
  }, [i18n, relationTo, search]);
208
211
  const addOptionByID = useCallback(async (id, relation_2) => {
209
212
  if (!errorLoading && id !== 'null' && id && relation_2) {
210
- const response_0 = await fetch(`${serverURL}${api}/${relation_2}/${id}?depth=0`, {
213
+ const response_0 = await fetch(formatAdminURL({
214
+ apiRoute: api,
215
+ path: `/${relation_2}/${id}?depth=0`
216
+ }), {
211
217
  credentials: 'include',
212
218
  headers: {
213
219
  'Accept-Language': i18n.language
@@ -225,7 +231,7 @@ export const RelationshipFilter = props => {
225
231
  }));
226
232
  }
227
233
  }
228
- }, [i18n, addOptions, api, errorLoading, serverURL, t]);
234
+ }, [i18n, addOptions, api, errorLoading, t]);
229
235
  /**
230
236
  * When `relationTo` changes externally, reset the options and reload them from scratch
231
237
  * The `loadOptions` dependency is a useEffectEvent which has no dependencies of its own
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["qs","React","useCallback","useEffect","useReducer","useState","useDebounce","useEffectEvent","useConfig","useLocale","useTranslation","ReactSelect","optionsReducer","baseClass","maxResultsPerRequest","RelationshipFilter","props","disabled","field","admin","hasMany","relationTo","filterOptions","onChange","value","placeholder","undefined","isSortable","config","routes","api","serverURL","getEntityConfig","hasMultipleRelations","Array","isArray","options","dispatchOptions","search","setSearch","debouncedSearch","errorLoading","setErrorLoading","hasLoadedFirstOptions","setHasLoadedFirstOptions","i18n","t","locale","relationSlugs","loadedRelationships","useRef","Map","map","relation","hasLoadedAll","nextPage","addOptions","data","collection","collectionSlug","type","loadOptions","abortController","relationSlug","loadedRelationship","current","get","fieldToSearch","useAsTitle","where","and","query","depth","limit","code","page","select","push","like","response","fetch","stringify","addQueryPrefix","credentials","headers","language","signal","ok","json","docs","length","set","e","aborted","console","error","handleScrollToBottom","relationshipToLoad","entries","next","AbortController","findOptionsByValue","val","matchedOption","forEach","opt","some","subOpt","find","valueWithRelation","handleInputChange","input","required","addOptionByID","id","relations","abortControllers","controller","abort","_err","matchedOptions","option","i","classes","filter","Boolean","join","valueToRender","_jsx","className","isMulti","selected","onInputChange","onMenuScrollToBottom"],"sources":["../../../../../src/elements/WhereBuilder/Condition/Relationship/index.tsx"],"sourcesContent":["'use client'\nimport type { PaginatedDocs, Where } from 'payload'\n\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useReducer, useState } from 'react'\n\nimport type { Option } from '../../../ReactSelect/types.js'\nimport type { RelationshipFilterProps as Props, ValueWithRelation } from './types.js'\n\nimport { useDebounce } from '../../../../hooks/useDebounce.js'\nimport { useEffectEvent } from '../../../../hooks/useEffectEvent.js'\nimport { useConfig } from '../../../../providers/Config/index.js'\nimport { useLocale } from '../../../../providers/Locale/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { ReactSelect } from '../../../ReactSelect/index.js'\nimport optionsReducer from './optionsReducer.js'\nimport './index.scss'\n\nconst baseClass = 'condition-value-relationship'\n\nconst maxResultsPerRequest = 10\n\nexport const RelationshipFilter: React.FC<Props> = (props) => {\n const {\n disabled,\n field: { admin = {}, hasMany, relationTo },\n filterOptions,\n onChange,\n value,\n } = props\n\n const placeholder = 'placeholder' in admin ? admin?.placeholder : undefined\n const isSortable = admin?.isSortable\n\n const {\n config: {\n routes: { api },\n serverURL,\n },\n getEntityConfig,\n } = useConfig()\n\n const hasMultipleRelations = Array.isArray(relationTo)\n const [options, dispatchOptions] = useReducer(optionsReducer, [])\n const [search, setSearch] = useState('')\n const debouncedSearch = useDebounce(search, 300)\n const [errorLoading, setErrorLoading] = useState('')\n const [hasLoadedFirstOptions, setHasLoadedFirstOptions] = useState(false)\n const { i18n, t } = useTranslation()\n const locale = useLocale()\n\n const relationSlugs = hasMultipleRelations ? relationTo : [relationTo]\n\n const loadedRelationships = React.useRef<\n Map<\n string,\n {\n hasLoadedAll: boolean\n nextPage: number\n }\n >\n >(\n new Map(\n relationSlugs.map((relation) => [\n relation,\n {\n hasLoadedAll: false,\n nextPage: 1,\n },\n ]),\n ),\n )\n\n const addOptions = useCallback(\n (data, relation) => {\n const collection = getEntityConfig({ collectionSlug: relation })\n dispatchOptions({ type: 'ADD', collection, data, hasMultipleRelations, i18n, relation })\n },\n [hasMultipleRelations, i18n, getEntityConfig],\n )\n\n const loadOptions = useEffectEvent(\n async ({\n abortController,\n relationSlug,\n }: {\n abortController: AbortController\n relationSlug: string\n }) => {\n const loadedRelationship = loadedRelationships.current.get(relationSlug)\n\n if (relationSlug && !loadedRelationship.hasLoadedAll) {\n const collection = getEntityConfig({\n collectionSlug: relationSlug,\n })\n\n const fieldToSearch = collection?.admin?.useAsTitle || 'id'\n\n const where: Where = {\n and: [],\n }\n\n const query = {\n depth: 0,\n limit: maxResultsPerRequest,\n locale: locale.code,\n page: loadedRelationship.nextPage,\n select: {\n [fieldToSearch]: true,\n },\n where,\n }\n\n if (filterOptions && filterOptions?.[relationSlug]) {\n query.where.and.push(filterOptions[relationSlug])\n }\n\n if (debouncedSearch) {\n query.where.and.push({\n [fieldToSearch]: {\n like: debouncedSearch,\n },\n })\n }\n\n try {\n const response = await fetch(\n `${serverURL}${api}/${relationSlug}${qs.stringify(query, { addQueryPrefix: true })}`,\n {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n signal: abortController.signal,\n },\n )\n\n if (response.ok) {\n const data: PaginatedDocs = await response.json()\n if (data.docs.length > 0) {\n addOptions(data, relationSlug)\n\n if (data.nextPage) {\n loadedRelationships.current.set(relationSlug, {\n hasLoadedAll: false,\n nextPage: data.nextPage,\n })\n } else {\n loadedRelationships.current.set(relationSlug, {\n hasLoadedAll: true,\n nextPage: null,\n })\n }\n }\n } else {\n setErrorLoading(t('error:unspecific'))\n }\n } catch (e) {\n if (!abortController.signal.aborted) {\n console.error(e) // eslint-disable-line no-console\n }\n }\n }\n\n setHasLoadedFirstOptions(true)\n },\n )\n\n const handleScrollToBottom = React.useCallback(() => {\n const relationshipToLoad = loadedRelationships.current.entries().next().value\n\n if (relationshipToLoad[0] && !relationshipToLoad[1].hasLoadedAll) {\n const abortController = new AbortController()\n\n void loadOptions({\n abortController,\n relationSlug: relationshipToLoad[0],\n })\n }\n }, [])\n\n const findOptionsByValue = useCallback((): Option | Option[] => {\n if (value) {\n if (hasMany) {\n if (Array.isArray(value)) {\n return value.map((val) => {\n if (hasMultipleRelations) {\n let matchedOption: Option\n\n options.forEach((opt) => {\n if (opt.options) {\n opt.options.some((subOpt) => {\n if (subOpt?.value == val.value) {\n matchedOption = subOpt\n return true\n }\n\n return false\n })\n }\n })\n\n return matchedOption\n }\n\n return options.find((opt) => opt.value == val)\n })\n }\n\n return undefined\n }\n\n if (hasMultipleRelations) {\n let matchedOption: Option\n\n const valueWithRelation = value as ValueWithRelation\n\n options.forEach((opt) => {\n if (opt?.options) {\n opt.options.some((subOpt) => {\n if (subOpt?.value == valueWithRelation.value) {\n matchedOption = subOpt\n return true\n }\n return false\n })\n }\n })\n\n return matchedOption\n }\n\n return options.find((opt) => opt.value == value)\n }\n\n return undefined\n }, [hasMany, hasMultipleRelations, value, options])\n\n const handleInputChange = useCallback(\n (input: string) => {\n if (input !== search) {\n dispatchOptions({ type: 'CLEAR', i18n, required: false })\n\n const relationSlugs = Array.isArray(relationTo) ? relationTo : [relationTo]\n\n loadedRelationships.current = new Map(\n relationSlugs.map((relation) => [\n relation,\n {\n hasLoadedAll: false,\n nextPage: 1,\n },\n ]),\n )\n\n setSearch(input)\n }\n },\n [i18n, relationTo, search],\n )\n\n const addOptionByID = useCallback(\n async (id, relation) => {\n if (!errorLoading && id !== 'null' && id && relation) {\n const response = await fetch(`${serverURL}${api}/${relation}/${id}?depth=0`, {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n })\n\n if (response.ok) {\n const data = await response.json()\n addOptions({ docs: [data] }, relation)\n } else {\n // eslint-disable-next-line no-console\n console.error(t('error:loadingDocument', { id }))\n }\n }\n },\n [i18n, addOptions, api, errorLoading, serverURL, t],\n )\n\n /**\n * When `relationTo` changes externally, reset the options and reload them from scratch\n * The `loadOptions` dependency is a useEffectEvent which has no dependencies of its own\n * This means we can safely depend on it without it triggering this effect to run\n * This is useful because this effect should _only_ run when `relationTo` changes\n */\n useEffect(() => {\n const relations = Array.isArray(relationTo) ? relationTo : [relationTo]\n\n loadedRelationships.current = new Map(\n relations.map((relation) => [\n relation,\n {\n hasLoadedAll: false,\n nextPage: 1,\n },\n ]),\n )\n\n dispatchOptions({ type: 'CLEAR', i18n, required: false })\n setHasLoadedFirstOptions(false)\n\n const abortControllers: AbortController[] = []\n\n relations.forEach((relation) => {\n const abortController = new AbortController()\n\n void loadOptions({\n abortController,\n relationSlug: relation,\n })\n\n abortControllers.push(abortController)\n })\n\n return () => {\n abortControllers.forEach((controller) => {\n if (controller.signal) {\n try {\n controller.abort()\n } catch (_err) {\n // swallow error\n }\n }\n })\n }\n }, [i18n, relationTo, debouncedSearch, filterOptions])\n\n /**\n * Load any other options that might exist in the value that were not loaded already\n */\n useEffect(() => {\n if (value && hasLoadedFirstOptions) {\n if (hasMany) {\n const matchedOptions = findOptionsByValue()\n\n ;((matchedOptions as Option[]) || []).forEach((option, i) => {\n if (!option) {\n if (hasMultipleRelations) {\n void addOptionByID(value[i].value, value[i].relationTo)\n } else {\n void addOptionByID(value[i], relationTo)\n }\n }\n })\n } else {\n const matchedOption = findOptionsByValue()\n\n if (!matchedOption) {\n if (hasMultipleRelations) {\n const valueWithRelation = value as ValueWithRelation\n void addOptionByID(valueWithRelation.value, valueWithRelation.relationTo)\n } else {\n void addOptionByID(value, relationTo)\n }\n }\n }\n }\n }, [\n addOptionByID,\n findOptionsByValue,\n hasMany,\n hasMultipleRelations,\n relationTo,\n value,\n hasLoadedFirstOptions,\n ])\n\n const classes = ['field-type', baseClass, errorLoading && 'error-loading']\n .filter(Boolean)\n .join(' ')\n\n const valueToRender = (findOptionsByValue() || value) as Option\n\n return (\n <div className={classes}>\n {errorLoading ? (\n <div className={`${baseClass}__error-loading`}>{errorLoading}</div>\n ) : (\n <ReactSelect\n disabled={disabled}\n isMulti={hasMany}\n isSortable={isSortable}\n onChange={(selected) => {\n if (!selected) {\n onChange(null)\n return\n }\n\n if (hasMany && Array.isArray(selected)) {\n onChange(\n selected\n ? selected.map((option) => {\n if (hasMultipleRelations) {\n return {\n relationTo: option?.relationTo,\n value: option?.value,\n }\n }\n\n return option?.value\n })\n : null,\n )\n } else if (hasMultipleRelations && !Array.isArray(selected)) {\n onChange({\n relationTo: selected?.relationTo,\n value: selected?.value,\n })\n } else if (!Array.isArray(selected)) {\n onChange(selected?.value)\n }\n }}\n onInputChange={handleInputChange}\n onMenuScrollToBottom={handleScrollToBottom}\n options={options}\n placeholder={placeholder}\n value={valueToRender}\n />\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["formatAdminURL","qs","React","useCallback","useEffect","useReducer","useState","useDebounce","useEffectEvent","useConfig","useLocale","useTranslation","ReactSelect","optionsReducer","baseClass","maxResultsPerRequest","RelationshipFilter","props","disabled","field","admin","hasMany","relationTo","filterOptions","onChange","value","placeholder","undefined","isSortable","config","routes","api","getEntityConfig","hasMultipleRelations","Array","isArray","options","dispatchOptions","search","setSearch","debouncedSearch","errorLoading","setErrorLoading","hasLoadedFirstOptions","setHasLoadedFirstOptions","i18n","t","locale","relationSlugs","loadedRelationships","useRef","Map","map","relation","hasLoadedAll","nextPage","addOptions","data","collection","collectionSlug","type","loadOptions","abortController","relationSlug","loadedRelationship","current","get","fieldToSearch","useAsTitle","where","and","query","depth","limit","code","page","select","push","like","response","fetch","apiRoute","path","stringify","addQueryPrefix","credentials","headers","language","signal","ok","json","docs","length","set","e","aborted","console","error","handleScrollToBottom","relationshipToLoad","entries","next","AbortController","findOptionsByValue","val","matchedOption","forEach","opt","some","subOpt","find","valueWithRelation","handleInputChange","input","required","addOptionByID","id","relations","abortControllers","controller","abort","_err","matchedOptions","option","i","classes","filter","Boolean","join","valueToRender","_jsx","className","isMulti","selected","onInputChange","onMenuScrollToBottom"],"sources":["../../../../../src/elements/WhereBuilder/Condition/Relationship/index.tsx"],"sourcesContent":["'use client'\nimport type { PaginatedDocs, Where } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useReducer, useState } from 'react'\n\nimport type { Option } from '../../../ReactSelect/types.js'\nimport type { RelationshipFilterProps as Props, ValueWithRelation } from './types.js'\n\nimport { useDebounce } from '../../../../hooks/useDebounce.js'\nimport { useEffectEvent } from '../../../../hooks/useEffectEvent.js'\nimport { useConfig } from '../../../../providers/Config/index.js'\nimport { useLocale } from '../../../../providers/Locale/index.js'\nimport { useTranslation } from '../../../../providers/Translation/index.js'\nimport { ReactSelect } from '../../../ReactSelect/index.js'\nimport './index.scss'\nimport optionsReducer from './optionsReducer.js'\n\nconst baseClass = 'condition-value-relationship'\n\nconst maxResultsPerRequest = 10\n\nexport const RelationshipFilter: React.FC<Props> = (props) => {\n const {\n disabled,\n field: { admin = {}, hasMany, relationTo },\n filterOptions,\n onChange,\n value,\n } = props\n\n const placeholder = 'placeholder' in admin ? admin?.placeholder : undefined\n const isSortable = admin?.isSortable\n\n const {\n config: {\n routes: { api },\n },\n getEntityConfig,\n } = useConfig()\n\n const hasMultipleRelations = Array.isArray(relationTo)\n const [options, dispatchOptions] = useReducer(optionsReducer, [])\n const [search, setSearch] = useState('')\n const debouncedSearch = useDebounce(search, 300)\n const [errorLoading, setErrorLoading] = useState('')\n const [hasLoadedFirstOptions, setHasLoadedFirstOptions] = useState(false)\n const { i18n, t } = useTranslation()\n const locale = useLocale()\n\n const relationSlugs = hasMultipleRelations ? relationTo : [relationTo]\n\n const loadedRelationships = React.useRef<\n Map<\n string,\n {\n hasLoadedAll: boolean\n nextPage: number\n }\n >\n >(\n new Map(\n relationSlugs.map((relation) => [\n relation,\n {\n hasLoadedAll: false,\n nextPage: 1,\n },\n ]),\n ),\n )\n\n const addOptions = useCallback(\n (data, relation) => {\n const collection = getEntityConfig({ collectionSlug: relation })\n dispatchOptions({ type: 'ADD', collection, data, hasMultipleRelations, i18n, relation })\n },\n [hasMultipleRelations, i18n, getEntityConfig],\n )\n\n const loadOptions = useEffectEvent(\n async ({\n abortController,\n relationSlug,\n }: {\n abortController: AbortController\n relationSlug: string\n }) => {\n const loadedRelationship = loadedRelationships.current.get(relationSlug)\n\n if (relationSlug && !loadedRelationship.hasLoadedAll) {\n const collection = getEntityConfig({\n collectionSlug: relationSlug,\n })\n\n const fieldToSearch = collection?.admin?.useAsTitle || 'id'\n\n const where: Where = {\n and: [],\n }\n\n const query = {\n depth: 0,\n limit: maxResultsPerRequest,\n locale: locale.code,\n page: loadedRelationship.nextPage,\n select: {\n [fieldToSearch]: true,\n },\n where,\n }\n\n if (filterOptions && filterOptions?.[relationSlug]) {\n query.where.and.push(filterOptions[relationSlug])\n }\n\n if (debouncedSearch) {\n query.where.and.push({\n [fieldToSearch]: {\n like: debouncedSearch,\n },\n })\n }\n\n try {\n const response = await fetch(\n formatAdminURL({\n apiRoute: api,\n path: `/${relationSlug}${qs.stringify(query, { addQueryPrefix: true })}`,\n }),\n {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n signal: abortController.signal,\n },\n )\n\n if (response.ok) {\n const data: PaginatedDocs = await response.json()\n if (data.docs.length > 0) {\n addOptions(data, relationSlug)\n\n if (data.nextPage) {\n loadedRelationships.current.set(relationSlug, {\n hasLoadedAll: false,\n nextPage: data.nextPage,\n })\n } else {\n loadedRelationships.current.set(relationSlug, {\n hasLoadedAll: true,\n nextPage: null,\n })\n }\n }\n } else {\n setErrorLoading(t('error:unspecific'))\n }\n } catch (e) {\n if (!abortController.signal.aborted) {\n console.error(e) // eslint-disable-line no-console\n }\n }\n }\n\n setHasLoadedFirstOptions(true)\n },\n )\n\n const handleScrollToBottom = React.useCallback(() => {\n const relationshipToLoad = loadedRelationships.current.entries().next().value\n\n if (relationshipToLoad[0] && !relationshipToLoad[1].hasLoadedAll) {\n const abortController = new AbortController()\n\n void loadOptions({\n abortController,\n relationSlug: relationshipToLoad[0],\n })\n }\n }, [])\n\n const findOptionsByValue = useCallback((): Option | Option[] => {\n if (value) {\n if (hasMany) {\n if (Array.isArray(value)) {\n return value.map((val) => {\n if (hasMultipleRelations) {\n let matchedOption: Option\n\n options.forEach((opt) => {\n if (opt.options) {\n opt.options.some((subOpt) => {\n if (subOpt?.value == val.value) {\n matchedOption = subOpt\n return true\n }\n\n return false\n })\n }\n })\n\n return matchedOption\n }\n\n return options.find((opt) => opt.value == val)\n })\n }\n\n return undefined\n }\n\n if (hasMultipleRelations) {\n let matchedOption: Option\n\n const valueWithRelation = value as ValueWithRelation\n\n options.forEach((opt) => {\n if (opt?.options) {\n opt.options.some((subOpt) => {\n if (subOpt?.value == valueWithRelation.value) {\n matchedOption = subOpt\n return true\n }\n return false\n })\n }\n })\n\n return matchedOption\n }\n\n return options.find((opt) => opt.value == value)\n }\n\n return undefined\n }, [hasMany, hasMultipleRelations, value, options])\n\n const handleInputChange = useCallback(\n (input: string) => {\n if (input !== search) {\n dispatchOptions({ type: 'CLEAR', i18n, required: false })\n\n const relationSlugs = Array.isArray(relationTo) ? relationTo : [relationTo]\n\n loadedRelationships.current = new Map(\n relationSlugs.map((relation) => [\n relation,\n {\n hasLoadedAll: false,\n nextPage: 1,\n },\n ]),\n )\n\n setSearch(input)\n }\n },\n [i18n, relationTo, search],\n )\n\n const addOptionByID = useCallback(\n async (id, relation) => {\n if (!errorLoading && id !== 'null' && id && relation) {\n const response = await fetch(\n formatAdminURL({ apiRoute: api, path: `/${relation}/${id}?depth=0` }),\n {\n credentials: 'include',\n headers: {\n 'Accept-Language': i18n.language,\n },\n },\n )\n\n if (response.ok) {\n const data = await response.json()\n addOptions({ docs: [data] }, relation)\n } else {\n // eslint-disable-next-line no-console\n console.error(t('error:loadingDocument', { id }))\n }\n }\n },\n [i18n, addOptions, api, errorLoading, t],\n )\n\n /**\n * When `relationTo` changes externally, reset the options and reload them from scratch\n * The `loadOptions` dependency is a useEffectEvent which has no dependencies of its own\n * This means we can safely depend on it without it triggering this effect to run\n * This is useful because this effect should _only_ run when `relationTo` changes\n */\n useEffect(() => {\n const relations = Array.isArray(relationTo) ? relationTo : [relationTo]\n\n loadedRelationships.current = new Map(\n relations.map((relation) => [\n relation,\n {\n hasLoadedAll: false,\n nextPage: 1,\n },\n ]),\n )\n\n dispatchOptions({ type: 'CLEAR', i18n, required: false })\n setHasLoadedFirstOptions(false)\n\n const abortControllers: AbortController[] = []\n\n relations.forEach((relation) => {\n const abortController = new AbortController()\n\n void loadOptions({\n abortController,\n relationSlug: relation,\n })\n\n abortControllers.push(abortController)\n })\n\n return () => {\n abortControllers.forEach((controller) => {\n if (controller.signal) {\n try {\n controller.abort()\n } catch (_err) {\n // swallow error\n }\n }\n })\n }\n }, [i18n, relationTo, debouncedSearch, filterOptions])\n\n /**\n * Load any other options that might exist in the value that were not loaded already\n */\n useEffect(() => {\n if (value && hasLoadedFirstOptions) {\n if (hasMany) {\n const matchedOptions = findOptionsByValue()\n\n ;((matchedOptions as Option[]) || []).forEach((option, i) => {\n if (!option) {\n if (hasMultipleRelations) {\n void addOptionByID(value[i].value, value[i].relationTo)\n } else {\n void addOptionByID(value[i], relationTo)\n }\n }\n })\n } else {\n const matchedOption = findOptionsByValue()\n\n if (!matchedOption) {\n if (hasMultipleRelations) {\n const valueWithRelation = value as ValueWithRelation\n void addOptionByID(valueWithRelation.value, valueWithRelation.relationTo)\n } else {\n void addOptionByID(value, relationTo)\n }\n }\n }\n }\n }, [\n addOptionByID,\n findOptionsByValue,\n hasMany,\n hasMultipleRelations,\n relationTo,\n value,\n hasLoadedFirstOptions,\n ])\n\n const classes = ['field-type', baseClass, errorLoading && 'error-loading']\n .filter(Boolean)\n .join(' ')\n\n const valueToRender = (findOptionsByValue() || value) as Option\n\n return (\n <div className={classes}>\n {errorLoading ? (\n <div className={`${baseClass}__error-loading`}>{errorLoading}</div>\n ) : (\n <ReactSelect\n disabled={disabled}\n isMulti={hasMany}\n isSortable={isSortable}\n onChange={(selected) => {\n if (!selected) {\n onChange(null)\n return\n }\n\n if (hasMany && Array.isArray(selected)) {\n onChange(\n selected\n ? selected.map((option) => {\n if (hasMultipleRelations) {\n return {\n relationTo: option?.relationTo,\n value: option?.value,\n }\n }\n\n return option?.value\n })\n : null,\n )\n } else if (hasMultipleRelations && !Array.isArray(selected)) {\n onChange({\n relationTo: selected?.relationTo,\n value: selected?.value,\n })\n } else if (!Array.isArray(selected)) {\n onChange(selected?.value)\n }\n }}\n onInputChange={handleInputChange}\n onMenuScrollToBottom={handleScrollToBottom}\n options={options}\n placeholder={placeholder}\n value={valueToRender}\n />\n )}\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -138,6 +138,7 @@ export { MoveDocToFolder, MoveDocToFolderButton, } from '../../elements/FolderVi
138
138
  export { BlocksDrawer } from '../../fields/Blocks/BlocksDrawer/index.js';
139
139
  export { BlockSelector } from '../../fields/Blocks/BlockSelector/index.js';
140
140
  export { SectionTitle } from '../../fields/Blocks/SectionTitle/index.js';
141
+ export { ItemsDrawer } from '../../elements/ItemsDrawer/index.js';
141
142
  export { HiddenField } from '../../fields/Hidden/index.js';
142
143
  export { ArrayField } from '../../fields/Array/index.js';
143
144
  export { BlocksField } from '../../fields/Blocks/index.js';