@payloadcms/ui 4.0.0-internal.d927017 → 4.0.0-internal.dee5eab

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 (415) hide show
  1. package/dist/css/z-index.css +9 -0
  2. package/dist/elements/AnimateHeight/usePatchAnimateHeight.d.ts.map +1 -1
  3. package/dist/elements/ArrayAction/index.d.ts +2 -0
  4. package/dist/elements/ArrayAction/index.d.ts.map +1 -1
  5. package/dist/elements/ArrayAction/index.js +65 -24
  6. package/dist/elements/ArrayAction/index.js.map +1 -1
  7. package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts +2 -2
  8. package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts.map +1 -1
  9. package/dist/elements/BulkUpload/FormsManager/createFormData.js +4 -15
  10. package/dist/elements/BulkUpload/FormsManager/createFormData.js.map +1 -1
  11. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  12. package/dist/elements/BulkUpload/FormsManager/index.js +1 -1
  13. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  14. package/dist/elements/Button/index.d.ts.map +1 -1
  15. package/dist/elements/ClipboardAction/ClipboardActionLabel.d.ts.map +1 -1
  16. package/dist/elements/ClipboardAction/clipboardUtilities.d.ts +8 -1
  17. package/dist/elements/ClipboardAction/clipboardUtilities.d.ts.map +1 -1
  18. package/dist/elements/ClipboardAction/clipboardUtilities.js +40 -8
  19. package/dist/elements/ClipboardAction/clipboardUtilities.js.map +1 -1
  20. package/dist/elements/ClipboardAction/clipboardUtilities.spec.js +120 -0
  21. package/dist/elements/ClipboardAction/clipboardUtilities.spec.js.map +1 -0
  22. package/dist/elements/ClipboardAction/index.d.ts.map +1 -1
  23. package/dist/elements/ClipboardAction/index.js +17 -1
  24. package/dist/elements/ClipboardAction/index.js.map +1 -1
  25. package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js +144 -0
  26. package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js.map +1 -0
  27. package/dist/elements/ClipboardAction/types.d.ts +3 -0
  28. package/dist/elements/ClipboardAction/types.d.ts.map +1 -1
  29. package/dist/elements/ClipboardAction/types.js.map +1 -1
  30. package/dist/elements/ClipboardAction/useCanPasteClipboard.d.ts +10 -0
  31. package/dist/elements/ClipboardAction/useCanPasteClipboard.d.ts.map +1 -0
  32. package/dist/elements/ClipboardAction/useCanPasteClipboard.js +21 -0
  33. package/dist/elements/ClipboardAction/useCanPasteClipboard.js.map +1 -0
  34. package/dist/elements/CodeEditor/CodeEditor.d.ts.map +1 -1
  35. package/dist/elements/CodeEditor/index.css +5 -0
  36. package/dist/elements/CommandPalette/index.js +1 -1
  37. package/dist/elements/CommandPalette/index.js.map +1 -1
  38. package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
  39. package/dist/elements/DatePicker/getFormattedLocale.d.ts.map +1 -1
  40. package/dist/elements/DefaultListViewTabs/index.js.map +1 -1
  41. package/dist/elements/Dialog/DialogTitle/index.d.ts.map +1 -1
  42. package/dist/elements/DocumentControls/index.d.ts +2 -2
  43. package/dist/elements/DocumentControls/index.d.ts.map +1 -1
  44. package/dist/elements/DocumentControls/index.js.map +1 -1
  45. package/dist/elements/DocumentDrawer/DrawerHeader/index.d.ts +2 -2
  46. package/dist/elements/DocumentDrawer/DrawerHeader/index.d.ts.map +1 -1
  47. package/dist/elements/DocumentDrawer/DrawerHeader/index.js.map +1 -1
  48. package/dist/elements/DocumentHeader/Tabs/tabs/index.d.ts.map +1 -1
  49. package/dist/elements/DocumentLocked/index.d.ts +2 -2
  50. package/dist/elements/DocumentLocked/index.d.ts.map +1 -1
  51. package/dist/elements/DocumentLocked/index.js.map +1 -1
  52. package/dist/elements/DraggableSortable/useDraggableSortable/index.d.ts.map +1 -1
  53. package/dist/elements/Drawer/index.d.ts.map +1 -1
  54. package/dist/elements/Drawer/index.js +1 -0
  55. package/dist/elements/Drawer/index.js.map +1 -1
  56. package/dist/elements/Drawer/useDrawerSlug.d.ts.map +1 -1
  57. package/dist/elements/DrawerActionHeader/index.d.ts.map +1 -1
  58. package/dist/elements/EditMany/DrawerContent.js +1 -1
  59. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  60. package/dist/elements/FieldSelect/reduceFieldOptions.d.ts.map +1 -1
  61. package/dist/elements/FileManager/index.d.ts +1 -1
  62. package/dist/elements/FileManager/index.d.ts.map +1 -1
  63. package/dist/elements/FileManager/index.js.map +1 -1
  64. package/dist/elements/HTMLDiff/diff/index.d.ts.map +1 -1
  65. package/dist/elements/HTMLDiff/index.d.ts.map +1 -1
  66. package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +1 -1
  67. package/dist/elements/Hierarchy/Modal/index.d.ts.map +1 -1
  68. package/dist/elements/Hierarchy/Modal/useHierarchyModal.d.ts.map +1 -1
  69. package/dist/elements/Hierarchy/Search/useHierarchySearch.d.ts.map +1 -1
  70. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -1
  71. package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts +1 -1
  72. package/dist/elements/Hierarchy/Tree/TreeFocusContext.d.ts.map +1 -1
  73. package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts.map +1 -1
  74. package/dist/elements/Hierarchy/Tree/useChildren.d.ts.map +1 -1
  75. package/dist/elements/LeaveWithoutSaving/index.d.ts.map +1 -1
  76. package/dist/elements/LeaveWithoutSaving/usePreventLeave.d.ts.map +1 -1
  77. package/dist/elements/Link/index.d.ts.map +1 -1
  78. package/dist/elements/Link/index.js +4 -5
  79. package/dist/elements/Link/index.js.map +1 -1
  80. package/dist/elements/ListDrawer/index.d.ts.map +1 -1
  81. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +1 -1
  82. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
  83. package/dist/elements/LoadingOverlay/reducer.d.ts.map +1 -1
  84. package/dist/elements/Localizer/index.js.map +1 -1
  85. package/dist/elements/Locked/index.d.ts +2 -2
  86. package/dist/elements/Locked/index.d.ts.map +1 -1
  87. package/dist/elements/Locked/index.js.map +1 -1
  88. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingColumns.d.ts.map +1 -1
  89. package/dist/elements/PublishButton/ScheduleDrawer/buildUpcomingScheduleWhere.d.ts.map +1 -1
  90. package/dist/elements/PublishMany/DrawerContent.js +1 -1
  91. package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
  92. package/dist/elements/ReactSelect/DefaultMenuPortal.d.ts +7 -0
  93. package/dist/elements/ReactSelect/DefaultMenuPortal.d.ts.map +1 -0
  94. package/dist/elements/ReactSelect/DefaultMenuPortal.js +120 -0
  95. package/dist/elements/ReactSelect/DefaultMenuPortal.js.map +1 -0
  96. package/dist/elements/ReactSelect/getCaptureMenuScroll.d.ts.map +1 -1
  97. package/dist/elements/ReactSelect/getMenuListStyles.d.ts +1 -1
  98. package/dist/elements/ReactSelect/getMenuListStyles.d.ts.map +1 -1
  99. package/dist/elements/ReactSelect/getMenuListStyles.js +13 -5
  100. package/dist/elements/ReactSelect/getMenuListStyles.js.map +1 -1
  101. package/dist/elements/ReactSelect/getMenuStyles.d.ts +10 -0
  102. package/dist/elements/ReactSelect/getMenuStyles.d.ts.map +1 -0
  103. package/dist/elements/ReactSelect/getMenuStyles.js +21 -0
  104. package/dist/elements/ReactSelect/getMenuStyles.js.map +1 -0
  105. package/dist/elements/ReactSelect/index.css +8 -1
  106. package/dist/elements/ReactSelect/index.d.ts.map +1 -1
  107. package/dist/elements/ReactSelect/index.js +24 -101
  108. package/dist/elements/ReactSelect/index.js.map +1 -1
  109. package/dist/elements/ReactSelect/types.d.ts +1 -2
  110. package/dist/elements/ReactSelect/types.d.ts.map +1 -1
  111. package/dist/elements/ReactSelect/types.js.map +1 -1
  112. package/dist/elements/RelationshipTable/AddNewButton.d.ts +2 -2
  113. package/dist/elements/RelationshipTable/AddNewButton.d.ts.map +1 -1
  114. package/dist/elements/RelationshipTable/index.css +0 -2
  115. package/dist/elements/RestoreMany/index.js +1 -1
  116. package/dist/elements/RestoreMany/index.js.map +1 -1
  117. package/dist/elements/SelectAll/index.css +3 -1
  118. package/dist/elements/SelectRow/index.d.ts +2 -2
  119. package/dist/elements/SelectRow/index.d.ts.map +1 -1
  120. package/dist/elements/SelectRow/index.js.map +1 -1
  121. package/dist/elements/Table/DefaultCell/fields/index.d.ts +1 -1
  122. package/dist/elements/Table/DefaultCell/fields/index.d.ts.map +1 -1
  123. package/dist/elements/Table/OrderableRow.d.ts.map +1 -1
  124. package/dist/elements/Table/OrderableRowDragPreview.d.ts.map +1 -1
  125. package/dist/elements/Table/index.css +7 -0
  126. package/dist/elements/Tabs/index.d.ts.map +1 -1
  127. package/dist/elements/Thumbnail/createThumbnail.d.ts.map +1 -1
  128. package/dist/elements/Thumbnail/index.d.ts +1 -1
  129. package/dist/elements/Thumbnail/index.d.ts.map +1 -1
  130. package/dist/elements/Thumbnail/index.js.map +1 -1
  131. package/dist/elements/TimezonePicker/index.d.ts.map +1 -1
  132. package/dist/elements/TimezonePicker/index.js +5 -1
  133. package/dist/elements/TimezonePicker/index.js.map +1 -1
  134. package/dist/elements/UnpublishMany/DrawerContent.js +1 -1
  135. package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
  136. package/dist/elements/Upload/index.d.ts.map +1 -1
  137. package/dist/elements/UserMenu/SubMenuHeader/index.d.ts.map +1 -1
  138. package/dist/elements/UserMenu/SubMenuHeader/index.js +8 -9
  139. package/dist/elements/UserMenu/SubMenuHeader/index.js.map +1 -1
  140. package/dist/elements/UserMenu/index.css +26 -1
  141. package/dist/elements/WhereBuilder/Condition/Relationship/optionsReducer.d.ts.map +1 -1
  142. package/dist/elements/WhereBuilder/Condition/Select/formatOptions.d.ts.map +1 -1
  143. package/dist/elements/WhereBuilder/Condition/validOperators.d.ts.map +1 -1
  144. package/dist/elements/WhereBuilder/field-types.d.ts.map +1 -1
  145. package/dist/exports/layouts.d.ts +1 -0
  146. package/dist/exports/layouts.d.ts.map +1 -1
  147. package/dist/exports/layouts.js +1 -0
  148. package/dist/exports/layouts.js.map +1 -1
  149. package/dist/exports/shared/index.d.ts +1 -0
  150. package/dist/exports/shared/index.d.ts.map +1 -1
  151. package/dist/exports/shared/index.js +2 -2
  152. package/dist/exports/shared/index.js.map +4 -4
  153. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  154. package/dist/fields/Array/ArrayRow.js +97 -160
  155. package/dist/fields/Array/ArrayRow.js.map +1 -1
  156. package/dist/fields/Array/index.d.ts +1 -1
  157. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  158. package/dist/fields/Blocks/BlockRow.js +134 -195
  159. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  160. package/dist/fields/Blocks/RowActions.d.ts +2 -0
  161. package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
  162. package/dist/fields/Blocks/RowActions.js +23 -20
  163. package/dist/fields/Blocks/RowActions.js.map +1 -1
  164. package/dist/fields/Blocks/index.d.ts +1 -1
  165. package/dist/fields/Checkbox/index.d.ts +1 -1
  166. package/dist/fields/Code/index.css +1 -1
  167. package/dist/fields/Code/index.d.ts +2 -2
  168. package/dist/fields/Collapsible/index.d.ts +1 -1
  169. package/dist/fields/DateTime/index.d.ts +1 -1
  170. package/dist/fields/Email/index.d.ts +1 -1
  171. package/dist/fields/Group/index.d.ts +2 -2
  172. package/dist/fields/JSON/index.d.ts +1 -1
  173. package/dist/fields/Join/index.d.ts +1 -1
  174. package/dist/fields/Number/index.d.ts +1 -1
  175. package/dist/fields/Point/index.d.ts +1 -1
  176. package/dist/fields/Relationship/findOptionsByValue.d.ts.map +1 -1
  177. package/dist/fields/Relationship/index.d.ts +1 -1
  178. package/dist/fields/Relationship/optionsReducer.d.ts.map +1 -1
  179. package/dist/fields/Row/index.d.ts +1 -1
  180. package/dist/fields/Select/index.d.ts +1 -1
  181. package/dist/fields/Select/index.d.ts.map +1 -1
  182. package/dist/fields/Tabs/index.d.ts +1 -1
  183. package/dist/fields/Text/index.d.ts +1 -1
  184. package/dist/fields/Textarea/index.d.ts +1 -1
  185. package/dist/fields/mergeFieldStyles.d.ts +1 -1
  186. package/dist/fields/mergeFieldStyles.d.ts.map +1 -1
  187. package/dist/forms/Form/context.d.ts.map +1 -1
  188. package/dist/forms/Form/createNestedClientFieldPath.d.ts.map +1 -1
  189. package/dist/forms/Form/errorMessages.d.ts.map +1 -1
  190. package/dist/forms/Form/index.d.ts.map +1 -1
  191. package/dist/forms/Form/index.js +3 -14
  192. package/dist/forms/Form/index.js.map +1 -1
  193. package/dist/forms/Form/mergeServerFormState.d.ts.map +1 -1
  194. package/dist/forms/Form/reduceToSerializableFields.d.ts.map +1 -1
  195. package/dist/forms/Form/rowHelpers.d.ts.map +1 -1
  196. package/dist/forms/Form/rows.d.ts.map +1 -1
  197. package/dist/forms/RenderFields/RenderField.d.ts +1 -1
  198. package/dist/forms/RenderFields/index.css +16 -2
  199. package/dist/forms/WatchChildErrors/buildPathSegments.d.ts.map +1 -1
  200. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
  201. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/index.d.ts.map +1 -1
  202. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/iterateFields.d.ts.map +1 -1
  203. package/dist/forms/fieldSchemasToFormState/calculateDefaultValues/promise.d.ts.map +1 -1
  204. package/dist/forms/fieldSchemasToFormState/index.d.ts.map +1 -1
  205. package/dist/forms/fieldSchemasToFormState/iterateFields.d.ts.map +1 -1
  206. package/dist/forms/useField/index.d.ts.map +1 -1
  207. package/dist/forms/withCondition/index.d.ts +1 -1
  208. package/dist/forms/withCondition/index.d.ts.map +1 -1
  209. package/dist/hooks/useDebouncedCallback.d.ts.map +1 -1
  210. package/dist/hooks/useDelay.d.ts.map +1 -1
  211. package/dist/hooks/useElementHeightVariable.d.ts.map +1 -1
  212. package/dist/hooks/useHotkey.d.ts.map +1 -1
  213. package/dist/hooks/useIntersect.d.ts.map +1 -1
  214. package/dist/hooks/usePopupWindow.d.ts +1 -1
  215. package/dist/hooks/usePopupWindow.d.ts.map +1 -1
  216. package/dist/hooks/useRelatedCollections.d.ts.map +1 -1
  217. package/dist/hooks/useResize.d.ts.map +1 -1
  218. package/dist/hooks/useUseAsTitle.d.ts.map +1 -1
  219. package/dist/layouts/Root/index.d.ts.map +1 -1
  220. package/dist/layouts/Root/index.js +4 -2
  221. package/dist/layouts/Root/index.js.map +1 -1
  222. package/dist/layouts/Root/viewport.d.ts +1 -0
  223. package/dist/layouts/Root/viewport.d.ts.map +1 -1
  224. package/dist/layouts/Root/viewport.js +4 -1
  225. package/dist/layouts/Root/viewport.js.map +1 -1
  226. package/dist/providers/Auth/index.d.ts +6 -6
  227. package/dist/providers/Auth/index.d.ts.map +1 -1
  228. package/dist/providers/Auth/index.js.map +1 -1
  229. package/dist/providers/ClientFunction/index.d.ts.map +1 -1
  230. package/dist/providers/DocumentInfo/index.js.map +1 -1
  231. package/dist/providers/DocumentInfo/types.d.ts +5 -5
  232. package/dist/providers/DocumentInfo/types.d.ts.map +1 -1
  233. package/dist/providers/DocumentInfo/types.js.map +1 -1
  234. package/dist/providers/DocumentInfo/useGetDocPermissions.d.ts.map +1 -1
  235. package/dist/providers/Hierarchy/index.js +1 -1
  236. package/dist/providers/Hierarchy/index.js.map +1 -1
  237. package/dist/providers/ListQuery/index.d.ts.map +1 -1
  238. package/dist/providers/ListQuery/index.js +8 -1
  239. package/dist/providers/ListQuery/index.js.map +1 -1
  240. package/dist/providers/ListQuery/mergeQuery.d.ts.map +1 -1
  241. package/dist/providers/ListQuery/sanitizeQuery.d.ts.map +1 -1
  242. package/dist/providers/LivePreview/sizeReducer.d.ts +1 -1
  243. package/dist/providers/LivePreview/sizeReducer.d.ts.map +1 -1
  244. package/dist/providers/RouteTransition/ProgressBar/index.d.ts.map +1 -1
  245. package/dist/providers/RouteTransition/ProgressBar/index.js +30 -18
  246. package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -1
  247. package/dist/providers/RouteTransition/index.d.ts +1 -1
  248. package/dist/providers/RouteTransition/index.d.ts.map +1 -1
  249. package/dist/providers/RouteTransition/index.js +2 -2
  250. package/dist/providers/RouteTransition/index.js.map +1 -1
  251. package/dist/providers/TableColumns/buildColumnState/filterFields.d.ts.map +1 -1
  252. package/dist/providers/TableColumns/buildColumnState/filterFieldsWithPermissions.d.ts.map +1 -1
  253. package/dist/providers/TableColumns/buildColumnState/findValueFromPath.d.ts.map +1 -1
  254. package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
  255. package/dist/providers/TableColumns/getInitialColumns.d.ts +1 -1
  256. package/dist/providers/TableColumns/getInitialColumns.d.ts.map +1 -1
  257. package/dist/providers/Theme/index.d.ts +2 -2
  258. package/dist/providers/Theme/index.d.ts.map +1 -1
  259. package/dist/providers/Theme/index.js +2 -1
  260. package/dist/providers/Theme/index.js.map +1 -1
  261. package/dist/providers/Theme/shared.d.ts +3 -0
  262. package/dist/providers/Theme/shared.d.ts.map +1 -0
  263. package/dist/providers/Theme/shared.js +2 -0
  264. package/dist/providers/Theme/shared.js.map +1 -0
  265. package/dist/providers/UploadEdits/index.d.ts.map +1 -1
  266. package/dist/providers/UploadHandlers/index.d.ts +2 -7
  267. package/dist/providers/UploadHandlers/index.d.ts.map +1 -1
  268. package/dist/providers/UploadHandlers/index.js +102 -42
  269. package/dist/providers/UploadHandlers/index.js.map +1 -1
  270. package/dist/styles.css +11 -1
  271. package/dist/utilities/api.d.ts.map +1 -1
  272. package/dist/utilities/buildClientFieldSchemaMap/index.d.ts.map +1 -1
  273. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.d.ts.map +1 -1
  274. package/dist/utilities/buildFieldSchemaMap/index.d.ts.map +1 -1
  275. package/dist/utilities/buildFieldSchemaMap/traverseFields.d.ts.map +1 -1
  276. package/dist/utilities/buildFormState.d.ts +2 -2
  277. package/dist/utilities/buildFormState.d.ts.map +1 -1
  278. package/dist/utilities/buildFormState.js.map +1 -1
  279. package/dist/utilities/checkDependencies.d.ts.map +1 -1
  280. package/dist/utilities/combineFieldLabel.d.ts.map +1 -1
  281. package/dist/utilities/copyDataFromLocale.d.ts.map +1 -1
  282. package/dist/utilities/filterOutUploadFields.d.ts.map +1 -1
  283. package/dist/utilities/findLocaleFromCode.d.ts.map +1 -1
  284. package/dist/utilities/formatAbsoluteURL.d.ts.map +1 -1
  285. package/dist/utilities/formatDocTitle/formatDateTitle.d.ts.map +1 -1
  286. package/dist/utilities/formatDocTitle/formatRelationshipTitle.d.ts.map +1 -1
  287. package/dist/utilities/formatDocTitle/index.d.ts +1 -1
  288. package/dist/utilities/formatDocTitle/index.d.ts.map +1 -1
  289. package/dist/utilities/formatFields.d.ts.map +1 -1
  290. package/dist/utilities/formatMetadata.d.ts.map +1 -1
  291. package/dist/utilities/generateFieldID.d.ts.map +1 -1
  292. package/dist/utilities/getColumns.d.ts.map +1 -1
  293. package/dist/utilities/getDisplayedFieldValue.d.ts.map +1 -1
  294. package/dist/utilities/getDocPreferences.d.ts.map +1 -1
  295. package/dist/utilities/getDocumentData.d.ts.map +1 -1
  296. package/dist/utilities/getDocumentPermissions.d.ts.map +1 -1
  297. package/dist/utilities/getGlobalData.d.ts +2 -2
  298. package/dist/utilities/getGlobalData.d.ts.map +1 -1
  299. package/dist/utilities/getGlobalData.js.map +1 -1
  300. package/dist/utilities/getHasScheduledPublish.d.ts.map +1 -1
  301. package/dist/utilities/getIsLocked.d.ts.map +1 -1
  302. package/dist/utilities/getLanguageDir.d.ts +12 -0
  303. package/dist/utilities/getLanguageDir.d.ts.map +1 -0
  304. package/dist/utilities/getLanguageDir.js +12 -0
  305. package/dist/utilities/getLanguageDir.js.map +1 -0
  306. package/dist/utilities/getOffsetTop.d.ts.map +1 -1
  307. package/dist/utilities/getRequestHighContrast.d.ts.map +1 -1
  308. package/dist/utilities/getRequestLanguage.d.ts.map +1 -1
  309. package/dist/utilities/getRequestTheme.d.ts +1 -1
  310. package/dist/utilities/getRequestTheme.d.ts.map +1 -1
  311. package/dist/utilities/getRequestTheme.js +1 -1
  312. package/dist/utilities/getRequestTheme.js.map +1 -1
  313. package/dist/utilities/getRouteWithoutAdmin.d.ts.map +1 -1
  314. package/dist/utilities/getSupportedMonacoLocale.d.ts.map +1 -1
  315. package/dist/utilities/getVersions.d.ts.map +1 -1
  316. package/dist/utilities/handleAuthRedirect.d.ts.map +1 -1
  317. package/dist/utilities/handleBackToDashboard.d.ts.map +1 -1
  318. package/dist/utilities/handleBackToDashboard.js +1 -1
  319. package/dist/utilities/handleBackToDashboard.js.map +1 -1
  320. package/dist/utilities/handleFormStateLocking.d.ts.map +1 -1
  321. package/dist/utilities/handleGoBack.d.ts.map +1 -1
  322. package/dist/utilities/handleGoBack.js +1 -1
  323. package/dist/utilities/handleGoBack.js.map +1 -1
  324. package/dist/utilities/handleLivePreview.d.ts.map +1 -1
  325. package/dist/utilities/handlePreview.d.ts.map +1 -1
  326. package/dist/utilities/handleServerFunctions.d.ts.map +1 -1
  327. package/dist/utilities/handleStaleDataCheck.d.ts.map +1 -1
  328. package/dist/utilities/handleTakeOver.d.ts +5 -5
  329. package/dist/utilities/handleTakeOver.d.ts.map +1 -1
  330. package/dist/utilities/handleTakeOver.js.map +1 -1
  331. package/dist/utilities/hasOptionLabelJSXElement.d.ts.map +1 -1
  332. package/dist/utilities/hasSavePermission.d.ts.map +1 -1
  333. package/dist/utilities/initReq.d.ts.map +1 -1
  334. package/dist/utilities/isClientUserObject.d.ts +2 -2
  335. package/dist/utilities/isClientUserObject.d.ts.map +1 -1
  336. package/dist/utilities/isClientUserObject.js.map +1 -1
  337. package/dist/utilities/isCustomAdminView.d.ts.map +1 -1
  338. package/dist/utilities/isEditing.d.ts.map +1 -1
  339. package/dist/utilities/isPathMatchingRoute.d.ts.map +1 -1
  340. package/dist/utilities/isPublicAdminRoute.d.ts.map +1 -1
  341. package/dist/utilities/isURLAllowed.d.ts.map +1 -1
  342. package/dist/utilities/recentlyViewed.d.ts.map +1 -1
  343. package/dist/utilities/reduceFieldsToOptions.d.ts.map +1 -1
  344. package/dist/utilities/reduceFieldsToValuesWithValidation.d.ts.map +1 -1
  345. package/dist/utilities/renderTable.d.ts +2 -2
  346. package/dist/utilities/renderTable.d.ts.map +1 -1
  347. package/dist/utilities/resolveFilterOptions.d.ts +1 -1
  348. package/dist/utilities/resolveFilterOptions.d.ts.map +1 -1
  349. package/dist/utilities/sanitizeFilterOptionsQuery.d.ts.map +1 -1
  350. package/dist/utilities/scrollToID.d.ts.map +1 -1
  351. package/dist/utilities/selectiveCache.d.ts.map +1 -1
  352. package/dist/utilities/setsAreEqual.d.ts.map +1 -1
  353. package/dist/utilities/traverseForLocalizedFields.d.ts.map +1 -1
  354. package/dist/utilities/upsertPreferences.d.ts.map +1 -1
  355. package/dist/views/CollectionTrash/generateCollectionTrashMetadata.d.ts.map +1 -1
  356. package/dist/views/Dashboard/Default/index.d.ts +2 -2
  357. package/dist/views/Dashboard/Default/index.d.ts.map +1 -1
  358. package/dist/views/Dashboard/Default/index.js.map +1 -1
  359. package/dist/views/Document/getCustomDocumentViewByKey.d.ts +1 -1
  360. package/dist/views/Document/getCustomDocumentViewByKey.d.ts.map +1 -1
  361. package/dist/views/Document/getCustomViewByRoute.d.ts +1 -1
  362. package/dist/views/Document/getCustomViewByRoute.d.ts.map +1 -1
  363. package/dist/views/Document/getDocumentView.d.ts.map +1 -1
  364. package/dist/views/Document/getMetaBySegment.d.ts.map +1 -1
  365. package/dist/views/Document/index.d.ts +1 -1
  366. package/dist/views/Document/index.d.ts.map +1 -1
  367. package/dist/views/Document/recordRecentlyViewed.d.ts.map +1 -1
  368. package/dist/views/Edit/index.d.ts.map +1 -1
  369. package/dist/views/Edit/index.js.map +1 -1
  370. package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts +2 -2
  371. package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts.map +1 -1
  372. package/dist/views/HierarchyList/HierarchyTable/SlotTable.js.map +1 -1
  373. package/dist/views/HierarchyList/HierarchyTable/types.d.ts +2 -2
  374. package/dist/views/HierarchyList/HierarchyTable/types.d.ts.map +1 -1
  375. package/dist/views/HierarchyList/HierarchyTable/types.js.map +1 -1
  376. package/dist/views/List/ListSelection/index.js.map +1 -1
  377. package/dist/views/List/createSerializableValue.d.ts.map +1 -1
  378. package/dist/views/List/extractRelationshipDisplayValue.d.ts.map +1 -1
  379. package/dist/views/List/extractValueOrRelationshipID.d.ts.map +1 -1
  380. package/dist/views/List/generateListViewMetadata.d.ts.map +1 -1
  381. package/dist/views/List/handleGroupBy.d.ts.map +1 -1
  382. package/dist/views/List/handleHierarchy.d.ts +1 -1
  383. package/dist/views/List/handleHierarchy.d.ts.map +1 -1
  384. package/dist/views/List/index.d.ts.map +1 -1
  385. package/dist/views/List/renderListViewSlots.d.ts.map +1 -1
  386. package/dist/views/List/resolveAllFilterOptions.d.ts.map +1 -1
  387. package/dist/views/List/transformColumnsToSelect.d.ts.map +1 -1
  388. package/dist/views/NotFound/page.d.ts.map +1 -1
  389. package/dist/views/ResetPassword/ResetPasswordForm/index.js.map +1 -1
  390. package/dist/views/Root/generateCustomViewMetadata.d.ts.map +1 -1
  391. package/dist/views/Root/generatePageMetadata.d.ts.map +1 -1
  392. package/dist/views/Root/getCustomCollectionViewByRoute.d.ts +1 -1
  393. package/dist/views/Root/getCustomCollectionViewByRoute.d.ts.map +1 -1
  394. package/dist/views/Root/getCustomGlobalViewByRoute.d.ts +1 -1
  395. package/dist/views/Root/getCustomGlobalViewByRoute.d.ts.map +1 -1
  396. package/dist/views/Root/getCustomViewByKey.d.ts.map +1 -1
  397. package/dist/views/Root/getCustomViewByRoute.d.ts.map +1 -1
  398. package/dist/views/Root/getRouteData.d.ts.map +1 -1
  399. package/dist/views/Root/index.d.ts.map +1 -1
  400. package/dist/views/Unauthorized/index.d.ts.map +1 -1
  401. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.d.ts.map +1 -1
  402. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.d.ts.map +1 -1
  403. package/dist/views/Version/RenderFieldsToDiff/fields/Relationship/generateLabelFromValue.d.ts.map +1 -1
  404. package/dist/views/Version/RenderFieldsToDiff/index.d.ts.map +1 -1
  405. package/dist/views/Version/SelectComparison/VersionDrawer/index.d.ts.map +1 -1
  406. package/dist/views/Versions/buildColumns.d.ts +1 -1
  407. package/dist/views/Versions/buildColumns.d.ts.map +1 -1
  408. package/dist/views/Versions/fetchVersions.d.ts +4 -4
  409. package/dist/views/Versions/fetchVersions.d.ts.map +1 -1
  410. package/dist/widgets/CollectionCards/getCollectionCardsData.d.ts +2 -2
  411. package/dist/widgets/CollectionCards/getCollectionCardsData.d.ts.map +1 -1
  412. package/dist/widgets/CollectionCards/getCollectionCardsData.js.map +1 -1
  413. package/dist/widgets/CollectionCards/index.client.js.map +1 -1
  414. package/dist/widgets/WidgetCard/index.css +1 -1
  415. package/package.json +6 -5
@@ -1 +1 @@
1
- {"version":3,"file":"useGetDocPermissions.d.ts","sourceRoot":"","sources":["../../../src/providers/DocumentInfo/useGetDocPermissions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAIvF,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAE9D,eAAO,MAAM,oBAAoB,GAAI,uIAWlC;IACD,GAAG,EAAE,MAAM,CAAA;IACX,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,GAAG,CAAA;IACT,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,oBAAoB,CAAA;IACjC,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,4BAA4B,CAAC,CAAC,CAAA;IACrF,uBAAuB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;IACtE,oBAAoB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;CACpE,KAAG,iBAuGD,CAAA"}
1
+ {"version":3,"file":"useGetDocPermissions.d.ts","sourceRoot":"","sources":["../../../src/providers/DocumentInfo/useGetDocPermissions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAIvF,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,MAAM,MAAM,iBAAiB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAE9D,eAAO,MAAM,oBAAoB,0IAW9B;IACD,GAAG,EAAE,MAAM,CAAA;IACX,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,GAAG,CAAA;IACT,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,oBAAoB,CAAA;IACjC,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,4BAA4B,CAAC,CAAC,CAAA;IACrF,uBAAuB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;IACtE,oBAAoB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAA;CACpE,KAAG,iBAuGD,CAAA"}
@@ -194,7 +194,7 @@ export const HierarchyProvider = ({
194
194
  adminRoute,
195
195
  path: `/collections/${collectionSlug}${id_1 !== null ? `?${queryParam}=${id_1}` : ''}`
196
196
  });
197
- router.push(url);
197
+ void router.push(url);
198
198
  router.refresh();
199
199
  }, [adminRoute, collectionSlug, parentFieldName, router]);
200
200
  const loadMoreChildren = useCallback(async parentId_0 => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["DEFAULT_HIERARCHY_TREE_LIMIT","formatAdminURL","PREFERENCE_KEYS","qs","React","createContext","use","useCallback","useState","useDebouncedCallback","useConfig","usePreferences","useRouter","HierarchyContext","undefined","HierarchyProvider","children","setPreference","router","config","routes","admin","adminRoute","api","serverURL","baseFilter","setBaseFilter","collectionSlug","setCollectionSlug","parent","setParent","parentFieldName","setParentFieldName","treeLimit","setTreeLimit","typeFieldName","setTypeFieldName","useAsTitle","setUseAsTitle","allowedCollections","setAllowedCollections","treeCache","setTreeCache","Map","expandedNodesByCollection","setExpandedNodesByCollection","selectedFiltersByCollection","setSelectedFiltersByCollection","isLoadingMore","setIsLoadingMore","loadingNodeId","setLoadingNodeId","treeRefreshKeys","setTreeRefreshKeys","getNodeChildren","parentId","cache","get","docs","filter","doc","docParentId","String","hydrate","data","newAllowedCollections","newBaseFilter","slug","expandedNodes","newExpandedNodes","newParent","newParentFieldName","selectedFilters","newSelectedFilters","treeData","newTreeLimit","newTypeFieldName","newUseAsTitle","prev","newCache","existingEntry","set","existingDocIds","Set","map","id","newDocs","has","loadedParents","length","newMap","existingExpanded","mergedExpanded","savePreferencesDebounced","preferenceKey","HIERARCHY_TREE","currentExpanded","currentFilters","Array","from","expanded","filters","toggleNodeForCollection","newExpanded","delete","add","toggleNode","getExpandedNodesForCollection","getTreeDataForCollection","setSelectedFilters","selectParent","queryParam","url","path","push","refresh","loadMoreChildren","parentKey","parentMeta","hasMore","currentChildren","nextPage","Math","floor","where","or","exists","equals","queryString","stringify","limit","page","sort","addQueryPrefix","apiRoute","response","fetch","credentials","ok","Error","json","uniqueNewDocs","hasNextPage","totalDocs","reset","refreshTree","next","value","_jsx","useHierarchy","context"],"sources":["../../../src/providers/Hierarchy/index.tsx"],"sourcesContent":["'use client'\n\nimport type { TypeWithID, Where } from 'payload'\n\nimport { DEFAULT_HIERARCHY_TREE_LIMIT, formatAdminURL, PREFERENCE_KEYS } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { createContext, use, useCallback, useState } from 'react'\n\nimport type {\n AllowedCollection,\n HierarchyContextValue,\n HierarchyDocument,\n HierarchyHydrateData,\n HierarchyProviderProps,\n HierarchyTreeCacheEntry,\n} from './types.js'\n\nimport { useDebouncedCallback } from '../../hooks/useDebouncedCallback.js'\nimport { useConfig } from '../Config/index.js'\nimport { usePreferences } from '../Preferences/index.js'\nimport { useRouter } from '../RouterAdapter/index.js'\n\nconst HierarchyContext = createContext<HierarchyContextValue | undefined>(undefined)\n\nexport const HierarchyProvider: React.FC<HierarchyProviderProps> = ({ children }) => {\n const { setPreference } = usePreferences()\n const router = useRouter()\n const {\n config: {\n routes: { admin: adminRoute, api },\n serverURL,\n },\n } = useConfig()\n\n const [baseFilter, setBaseFilter] = useState<null | Where>(null)\n const [collectionSlug, setCollectionSlug] = useState<null | string>(null)\n const [parent, setParent] = useState<null | (Record<string, unknown> & TypeWithID)>(null)\n const [parentFieldName, setParentFieldName] = useState<string>('')\n const [treeLimit, setTreeLimit] = useState<number>(DEFAULT_HIERARCHY_TREE_LIMIT)\n const [typeFieldName, setTypeFieldName] = useState<null | string>(null)\n const [useAsTitle, setUseAsTitle] = useState<null | string>(null)\n const [allowedCollections, setAllowedCollections] = useState<AllowedCollection[] | null>(null)\n\n const [treeCache, setTreeCache] = useState<Map<string, HierarchyTreeCacheEntry>>(() => new Map())\n const [expandedNodesByCollection, setExpandedNodesByCollection] = useState<\n Map<string, Set<number | string>>\n >(() => new Map())\n const [selectedFiltersByCollection, setSelectedFiltersByCollection] = useState<\n Map<string, string[]>\n >(() => new Map())\n const [isLoadingMore, setIsLoadingMore] = useState<boolean>(false)\n const [loadingNodeId, setLoadingNodeId] = useState<null | number | string>(null)\n const [treeRefreshKeys, setTreeRefreshKeys] = useState<Map<string, number>>(() => new Map())\n\n const getNodeChildren = useCallback(\n (parentId: null | number | string): HierarchyDocument[] => {\n if (!collectionSlug) {\n return []\n }\n\n const cache = treeCache.get(collectionSlug)\n if (!cache) {\n return []\n }\n\n return cache.docs.filter((doc) => {\n const docParentId = doc[parentFieldName]\n if (parentId === null) {\n return docParentId === null || docParentId === undefined\n }\n return docParentId !== null && String(docParentId) === String(parentId)\n })\n },\n [collectionSlug, parentFieldName, treeCache],\n )\n\n const hydrate = useCallback((data: HierarchyHydrateData) => {\n const {\n allowedCollections: newAllowedCollections,\n baseFilter: newBaseFilter,\n collectionSlug: slug,\n expandedNodes: newExpandedNodes,\n parent: newParent,\n parentFieldName: newParentFieldName,\n selectedFilters: newSelectedFilters,\n treeData,\n treeLimit: newTreeLimit,\n typeFieldName: newTypeFieldName,\n useAsTitle: newUseAsTitle,\n } = data\n\n setCollectionSlug(slug)\n\n if (newBaseFilter !== undefined) {\n setBaseFilter(newBaseFilter ?? null)\n }\n\n if (newAllowedCollections) {\n setAllowedCollections(newAllowedCollections)\n }\n\n if (newParentFieldName) {\n setParentFieldName(newParentFieldName)\n }\n\n if (newTreeLimit !== undefined) {\n setTreeLimit(newTreeLimit)\n }\n\n if (newTypeFieldName !== undefined) {\n setTypeFieldName(newTypeFieldName)\n }\n\n if (newParent !== undefined) {\n setParent(newParent)\n }\n\n if (newUseAsTitle !== undefined) {\n setUseAsTitle(newUseAsTitle)\n }\n\n if (treeData) {\n setTreeCache((prev) => {\n const newCache = new Map(prev)\n const existingEntry = newCache.get(slug)\n\n // If baseFilter is provided, replace cache entirely (tenant changed)\n // Otherwise merge to support incremental loading\n if (newBaseFilter !== undefined || !existingEntry) {\n newCache.set(slug, { ...treeData, baseFilter: newBaseFilter ?? null })\n } else {\n const existingDocIds = new Set(existingEntry.docs.map((doc) => doc.id))\n const newDocs = treeData.docs.filter((doc) => !existingDocIds.has(doc.id))\n\n newCache.set(slug, {\n baseFilter: existingEntry.baseFilter,\n docs: [...existingEntry.docs, ...newDocs],\n loadedParents: {\n ...existingEntry.loadedParents,\n ...treeData.loadedParents,\n },\n })\n }\n\n return newCache\n })\n }\n\n if (newExpandedNodes && newExpandedNodes.length > 0) {\n setExpandedNodesByCollection((prev) => {\n const newMap = new Map(prev)\n const existingExpanded = newMap.get(slug) || new Set()\n const mergedExpanded = new Set([...existingExpanded, ...newExpandedNodes])\n newMap.set(slug, mergedExpanded)\n return newMap\n })\n }\n\n if (newSelectedFilters) {\n setSelectedFiltersByCollection((prev) => {\n const newMap = new Map(prev)\n newMap.set(slug, newSelectedFilters)\n return newMap\n })\n }\n }, [])\n\n const savePreferencesDebounced = useDebouncedCallback(\n async (slug: string, data: { expanded?: Set<number | string>; filters?: string[] }) => {\n const preferenceKey = `${PREFERENCE_KEYS.HIERARCHY_TREE}-${slug}`\n const currentExpanded = expandedNodesByCollection.get(slug) || new Set()\n const currentFilters = selectedFiltersByCollection.get(slug) || []\n\n await setPreference(preferenceKey, {\n expandedNodes: Array.from(data.expanded ?? currentExpanded),\n selectedFilters: data.filters ?? currentFilters,\n })\n },\n 500,\n )\n\n const toggleNodeForCollection = useCallback(\n (slug: string, id: number | string) => {\n setExpandedNodesByCollection((prev) => {\n const newMap = new Map(prev)\n const currentExpanded = newMap.get(slug) || new Set()\n const newExpanded = new Set(currentExpanded)\n\n if (newExpanded.has(id)) {\n newExpanded.delete(id)\n } else {\n newExpanded.add(id)\n }\n\n newMap.set(slug, newExpanded)\n savePreferencesDebounced(slug, { expanded: newExpanded })\n return newMap\n })\n },\n [savePreferencesDebounced],\n )\n\n const toggleNode = useCallback(\n (id: number | string) => {\n if (!collectionSlug) {\n return\n }\n toggleNodeForCollection(collectionSlug, id)\n },\n [collectionSlug, toggleNodeForCollection],\n )\n\n const getExpandedNodesForCollection = useCallback(\n (slug: string): Set<number | string> => {\n return expandedNodesByCollection.get(slug) || new Set()\n },\n [expandedNodesByCollection],\n )\n\n const getTreeDataForCollection = useCallback(\n (slug: string) => {\n return treeCache.get(slug) || null\n },\n [treeCache],\n )\n\n const setSelectedFilters = useCallback(\n (filters: string[]) => {\n if (!collectionSlug) {\n return\n }\n\n setSelectedFiltersByCollection((prev) => {\n const newMap = new Map(prev)\n newMap.set(collectionSlug, filters)\n savePreferencesDebounced(collectionSlug, { filters })\n return newMap\n })\n },\n [collectionSlug, savePreferencesDebounced],\n )\n\n const selectParent = useCallback(\n (id: null | number | string) => {\n if (!collectionSlug) {\n return\n }\n\n const queryParam = parentFieldName || 'parent'\n const url = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}${id !== null ? `?${queryParam}=${id}` : ''}`,\n })\n router.push(url)\n router.refresh()\n },\n [adminRoute, collectionSlug, parentFieldName, router],\n )\n\n const loadMoreChildren = useCallback(\n async (parentId: null | number | string): Promise<void> => {\n if (!collectionSlug || isLoadingMore) {\n return\n }\n\n const cache = treeCache.get(collectionSlug)\n if (!cache) {\n return\n }\n\n const parentKey = parentId === null ? 'root' : String(parentId)\n const parentMeta = cache.loadedParents[parentKey]\n if (!parentMeta || !parentMeta.hasMore) {\n return\n }\n\n setIsLoadingMore(true)\n setLoadingNodeId(parentId)\n\n try {\n const currentChildren = cache.docs.filter((doc) => {\n const docParentId = doc[parentFieldName]\n if (parentId === null) {\n return docParentId === null || docParentId === undefined\n }\n return docParentId !== null && String(docParentId) === String(parentId)\n })\n\n const nextPage = Math.floor(currentChildren.length / treeLimit) + 1\n\n const where =\n parentId === null\n ? {\n or: [\n { [parentFieldName]: { exists: false } },\n { [parentFieldName]: { equals: null } },\n ],\n }\n : { [parentFieldName]: { equals: parentId } }\n\n const queryString = qs.stringify(\n { limit: treeLimit, page: nextPage, sort: useAsTitle ?? 'id', where },\n { addQueryPrefix: true },\n )\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}${queryString}`,\n serverURL,\n })\n const response = await fetch(url, {\n credentials: 'include',\n })\n\n if (!response.ok) {\n throw new Error('Failed to fetch more children')\n }\n\n const data = await response.json()\n const newDocs = data.docs || []\n\n setTreeCache((prev) => {\n const newCache = new Map(prev)\n const existingEntry = newCache.get(collectionSlug)\n\n if (existingEntry) {\n const existingDocIds = new Set(existingEntry.docs.map((doc) => doc.id))\n const uniqueNewDocs = newDocs.filter((doc) => !existingDocIds.has(doc.id))\n\n newCache.set(collectionSlug, {\n docs: [...existingEntry.docs, ...uniqueNewDocs],\n loadedParents: {\n ...existingEntry.loadedParents,\n [parentKey]: {\n hasMore: data.hasNextPage || false,\n totalDocs: data.totalDocs || 0,\n },\n },\n })\n }\n\n return newCache\n })\n } catch {\n // Failed to load more children - silently fail\n } finally {\n setIsLoadingMore(false)\n setLoadingNodeId(null)\n }\n },\n [\n api,\n collectionSlug,\n isLoadingMore,\n parentFieldName,\n serverURL,\n treeCache,\n treeLimit,\n useAsTitle,\n ],\n )\n\n const reset = useCallback(() => {\n setBaseFilter(null)\n setCollectionSlug(null)\n setParent(null)\n setParentFieldName('')\n setTreeLimit(DEFAULT_HIERARCHY_TREE_LIMIT)\n setTypeFieldName(null)\n setUseAsTitle(null)\n setTreeCache(new Map())\n setExpandedNodesByCollection(new Map())\n setSelectedFiltersByCollection(new Map())\n setIsLoadingMore(false)\n setLoadingNodeId(null)\n }, [])\n\n const refreshTree = useCallback((slug: string) => {\n setTreeCache((prev) => {\n const next = new Map(prev)\n next.delete(slug)\n return next\n })\n setTreeRefreshKeys((prev) => {\n const next = new Map(prev)\n next.set(slug, (next.get(slug) ?? 0) + 1)\n return next\n })\n }, [])\n\n const expandedNodes =\n collectionSlug && expandedNodesByCollection.has(collectionSlug)\n ? expandedNodesByCollection.get(collectionSlug)\n : new Set<number | string>()\n\n const selectedFilters =\n collectionSlug && selectedFiltersByCollection.has(collectionSlug)\n ? selectedFiltersByCollection.get(collectionSlug)\n : []\n\n const value: HierarchyContextValue = {\n allowedCollections,\n baseFilter,\n collectionSlug,\n expandedNodes,\n getExpandedNodesForCollection,\n getNodeChildren,\n getTreeDataForCollection,\n hydrate,\n isLoadingMore,\n loadingNodeId,\n loadMoreChildren,\n parent,\n parentFieldName,\n refreshTree,\n reset,\n selectedFilters,\n selectParent,\n setSelectedFilters,\n toggleNode,\n toggleNodeForCollection,\n treeLimit,\n treeRefreshKeys,\n typeFieldName,\n useAsTitle,\n }\n\n return <HierarchyContext value={value}>{children}</HierarchyContext>\n}\n\nexport const useHierarchy = (): HierarchyContextValue => {\n const context = use(HierarchyContext)\n if (!context) {\n throw new Error('useHierarchy must be used within HierarchyProvider')\n }\n return context\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["DEFAULT_HIERARCHY_TREE_LIMIT","formatAdminURL","PREFERENCE_KEYS","qs","React","createContext","use","useCallback","useState","useDebouncedCallback","useConfig","usePreferences","useRouter","HierarchyContext","undefined","HierarchyProvider","children","setPreference","router","config","routes","admin","adminRoute","api","serverURL","baseFilter","setBaseFilter","collectionSlug","setCollectionSlug","parent","setParent","parentFieldName","setParentFieldName","treeLimit","setTreeLimit","typeFieldName","setTypeFieldName","useAsTitle","setUseAsTitle","allowedCollections","setAllowedCollections","treeCache","setTreeCache","Map","expandedNodesByCollection","setExpandedNodesByCollection","selectedFiltersByCollection","setSelectedFiltersByCollection","isLoadingMore","setIsLoadingMore","loadingNodeId","setLoadingNodeId","treeRefreshKeys","setTreeRefreshKeys","getNodeChildren","parentId","cache","get","docs","filter","doc","docParentId","String","hydrate","data","newAllowedCollections","newBaseFilter","slug","expandedNodes","newExpandedNodes","newParent","newParentFieldName","selectedFilters","newSelectedFilters","treeData","newTreeLimit","newTypeFieldName","newUseAsTitle","prev","newCache","existingEntry","set","existingDocIds","Set","map","id","newDocs","has","loadedParents","length","newMap","existingExpanded","mergedExpanded","savePreferencesDebounced","preferenceKey","HIERARCHY_TREE","currentExpanded","currentFilters","Array","from","expanded","filters","toggleNodeForCollection","newExpanded","delete","add","toggleNode","getExpandedNodesForCollection","getTreeDataForCollection","setSelectedFilters","selectParent","queryParam","url","path","push","refresh","loadMoreChildren","parentKey","parentMeta","hasMore","currentChildren","nextPage","Math","floor","where","or","exists","equals","queryString","stringify","limit","page","sort","addQueryPrefix","apiRoute","response","fetch","credentials","ok","Error","json","uniqueNewDocs","hasNextPage","totalDocs","reset","refreshTree","next","value","_jsx","useHierarchy","context"],"sources":["../../../src/providers/Hierarchy/index.tsx"],"sourcesContent":["'use client'\n\nimport type { TypeWithID, Where } from 'payload'\n\nimport { DEFAULT_HIERARCHY_TREE_LIMIT, formatAdminURL, PREFERENCE_KEYS } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { createContext, use, useCallback, useState } from 'react'\n\nimport type {\n AllowedCollection,\n HierarchyContextValue,\n HierarchyDocument,\n HierarchyHydrateData,\n HierarchyProviderProps,\n HierarchyTreeCacheEntry,\n} from './types.js'\n\nimport { useDebouncedCallback } from '../../hooks/useDebouncedCallback.js'\nimport { useConfig } from '../Config/index.js'\nimport { usePreferences } from '../Preferences/index.js'\nimport { useRouter } from '../RouterAdapter/index.js'\n\nconst HierarchyContext = createContext<HierarchyContextValue | undefined>(undefined)\n\nexport const HierarchyProvider: React.FC<HierarchyProviderProps> = ({ children }) => {\n const { setPreference } = usePreferences()\n const router = useRouter()\n const {\n config: {\n routes: { admin: adminRoute, api },\n serverURL,\n },\n } = useConfig()\n\n const [baseFilter, setBaseFilter] = useState<null | Where>(null)\n const [collectionSlug, setCollectionSlug] = useState<null | string>(null)\n const [parent, setParent] = useState<null | (Record<string, unknown> & TypeWithID)>(null)\n const [parentFieldName, setParentFieldName] = useState<string>('')\n const [treeLimit, setTreeLimit] = useState<number>(DEFAULT_HIERARCHY_TREE_LIMIT)\n const [typeFieldName, setTypeFieldName] = useState<null | string>(null)\n const [useAsTitle, setUseAsTitle] = useState<null | string>(null)\n const [allowedCollections, setAllowedCollections] = useState<AllowedCollection[] | null>(null)\n\n const [treeCache, setTreeCache] = useState<Map<string, HierarchyTreeCacheEntry>>(() => new Map())\n const [expandedNodesByCollection, setExpandedNodesByCollection] = useState<\n Map<string, Set<number | string>>\n >(() => new Map())\n const [selectedFiltersByCollection, setSelectedFiltersByCollection] = useState<\n Map<string, string[]>\n >(() => new Map())\n const [isLoadingMore, setIsLoadingMore] = useState<boolean>(false)\n const [loadingNodeId, setLoadingNodeId] = useState<null | number | string>(null)\n const [treeRefreshKeys, setTreeRefreshKeys] = useState<Map<string, number>>(() => new Map())\n\n const getNodeChildren = useCallback(\n (parentId: null | number | string): HierarchyDocument[] => {\n if (!collectionSlug) {\n return []\n }\n\n const cache = treeCache.get(collectionSlug)\n if (!cache) {\n return []\n }\n\n return cache.docs.filter((doc) => {\n const docParentId = doc[parentFieldName]\n if (parentId === null) {\n return docParentId === null || docParentId === undefined\n }\n return docParentId !== null && String(docParentId) === String(parentId)\n })\n },\n [collectionSlug, parentFieldName, treeCache],\n )\n\n const hydrate = useCallback((data: HierarchyHydrateData) => {\n const {\n allowedCollections: newAllowedCollections,\n baseFilter: newBaseFilter,\n collectionSlug: slug,\n expandedNodes: newExpandedNodes,\n parent: newParent,\n parentFieldName: newParentFieldName,\n selectedFilters: newSelectedFilters,\n treeData,\n treeLimit: newTreeLimit,\n typeFieldName: newTypeFieldName,\n useAsTitle: newUseAsTitle,\n } = data\n\n setCollectionSlug(slug)\n\n if (newBaseFilter !== undefined) {\n setBaseFilter(newBaseFilter ?? null)\n }\n\n if (newAllowedCollections) {\n setAllowedCollections(newAllowedCollections)\n }\n\n if (newParentFieldName) {\n setParentFieldName(newParentFieldName)\n }\n\n if (newTreeLimit !== undefined) {\n setTreeLimit(newTreeLimit)\n }\n\n if (newTypeFieldName !== undefined) {\n setTypeFieldName(newTypeFieldName)\n }\n\n if (newParent !== undefined) {\n setParent(newParent)\n }\n\n if (newUseAsTitle !== undefined) {\n setUseAsTitle(newUseAsTitle)\n }\n\n if (treeData) {\n setTreeCache((prev) => {\n const newCache = new Map(prev)\n const existingEntry = newCache.get(slug)\n\n // If baseFilter is provided, replace cache entirely (tenant changed)\n // Otherwise merge to support incremental loading\n if (newBaseFilter !== undefined || !existingEntry) {\n newCache.set(slug, { ...treeData, baseFilter: newBaseFilter ?? null })\n } else {\n const existingDocIds = new Set(existingEntry.docs.map((doc) => doc.id))\n const newDocs = treeData.docs.filter((doc) => !existingDocIds.has(doc.id))\n\n newCache.set(slug, {\n baseFilter: existingEntry.baseFilter,\n docs: [...existingEntry.docs, ...newDocs],\n loadedParents: {\n ...existingEntry.loadedParents,\n ...treeData.loadedParents,\n },\n })\n }\n\n return newCache\n })\n }\n\n if (newExpandedNodes && newExpandedNodes.length > 0) {\n setExpandedNodesByCollection((prev) => {\n const newMap = new Map(prev)\n const existingExpanded = newMap.get(slug) || new Set()\n const mergedExpanded = new Set([...existingExpanded, ...newExpandedNodes])\n newMap.set(slug, mergedExpanded)\n return newMap\n })\n }\n\n if (newSelectedFilters) {\n setSelectedFiltersByCollection((prev) => {\n const newMap = new Map(prev)\n newMap.set(slug, newSelectedFilters)\n return newMap\n })\n }\n }, [])\n\n const savePreferencesDebounced = useDebouncedCallback(\n async (slug: string, data: { expanded?: Set<number | string>; filters?: string[] }) => {\n const preferenceKey = `${PREFERENCE_KEYS.HIERARCHY_TREE}-${slug}`\n const currentExpanded = expandedNodesByCollection.get(slug) || new Set()\n const currentFilters = selectedFiltersByCollection.get(slug) || []\n\n await setPreference(preferenceKey, {\n expandedNodes: Array.from(data.expanded ?? currentExpanded),\n selectedFilters: data.filters ?? currentFilters,\n })\n },\n 500,\n )\n\n const toggleNodeForCollection = useCallback(\n (slug: string, id: number | string) => {\n setExpandedNodesByCollection((prev) => {\n const newMap = new Map(prev)\n const currentExpanded = newMap.get(slug) || new Set()\n const newExpanded = new Set(currentExpanded)\n\n if (newExpanded.has(id)) {\n newExpanded.delete(id)\n } else {\n newExpanded.add(id)\n }\n\n newMap.set(slug, newExpanded)\n savePreferencesDebounced(slug, { expanded: newExpanded })\n return newMap\n })\n },\n [savePreferencesDebounced],\n )\n\n const toggleNode = useCallback(\n (id: number | string) => {\n if (!collectionSlug) {\n return\n }\n toggleNodeForCollection(collectionSlug, id)\n },\n [collectionSlug, toggleNodeForCollection],\n )\n\n const getExpandedNodesForCollection = useCallback(\n (slug: string): Set<number | string> => {\n return expandedNodesByCollection.get(slug) || new Set()\n },\n [expandedNodesByCollection],\n )\n\n const getTreeDataForCollection = useCallback(\n (slug: string) => {\n return treeCache.get(slug) || null\n },\n [treeCache],\n )\n\n const setSelectedFilters = useCallback(\n (filters: string[]) => {\n if (!collectionSlug) {\n return\n }\n\n setSelectedFiltersByCollection((prev) => {\n const newMap = new Map(prev)\n newMap.set(collectionSlug, filters)\n savePreferencesDebounced(collectionSlug, { filters })\n return newMap\n })\n },\n [collectionSlug, savePreferencesDebounced],\n )\n\n const selectParent = useCallback(\n (id: null | number | string) => {\n if (!collectionSlug) {\n return\n }\n\n const queryParam = parentFieldName || 'parent'\n const url = formatAdminURL({\n adminRoute,\n path: `/collections/${collectionSlug}${id !== null ? `?${queryParam}=${id}` : ''}`,\n })\n void router.push(url)\n router.refresh()\n },\n [adminRoute, collectionSlug, parentFieldName, router],\n )\n\n const loadMoreChildren = useCallback(\n async (parentId: null | number | string): Promise<void> => {\n if (!collectionSlug || isLoadingMore) {\n return\n }\n\n const cache = treeCache.get(collectionSlug)\n if (!cache) {\n return\n }\n\n const parentKey = parentId === null ? 'root' : String(parentId)\n const parentMeta = cache.loadedParents[parentKey]\n if (!parentMeta || !parentMeta.hasMore) {\n return\n }\n\n setIsLoadingMore(true)\n setLoadingNodeId(parentId)\n\n try {\n const currentChildren = cache.docs.filter((doc) => {\n const docParentId = doc[parentFieldName]\n if (parentId === null) {\n return docParentId === null || docParentId === undefined\n }\n return docParentId !== null && String(docParentId) === String(parentId)\n })\n\n const nextPage = Math.floor(currentChildren.length / treeLimit) + 1\n\n const where =\n parentId === null\n ? {\n or: [\n { [parentFieldName]: { exists: false } },\n { [parentFieldName]: { equals: null } },\n ],\n }\n : { [parentFieldName]: { equals: parentId } }\n\n const queryString = qs.stringify(\n { limit: treeLimit, page: nextPage, sort: useAsTitle ?? 'id', where },\n { addQueryPrefix: true },\n )\n const url = formatAdminURL({\n apiRoute: api,\n path: `/${collectionSlug}${queryString}`,\n serverURL,\n })\n const response = await fetch(url, {\n credentials: 'include',\n })\n\n if (!response.ok) {\n throw new Error('Failed to fetch more children')\n }\n\n const data = await response.json()\n const newDocs = data.docs || []\n\n setTreeCache((prev) => {\n const newCache = new Map(prev)\n const existingEntry = newCache.get(collectionSlug)\n\n if (existingEntry) {\n const existingDocIds = new Set(existingEntry.docs.map((doc) => doc.id))\n const uniqueNewDocs = newDocs.filter((doc) => !existingDocIds.has(doc.id))\n\n newCache.set(collectionSlug, {\n docs: [...existingEntry.docs, ...uniqueNewDocs],\n loadedParents: {\n ...existingEntry.loadedParents,\n [parentKey]: {\n hasMore: data.hasNextPage || false,\n totalDocs: data.totalDocs || 0,\n },\n },\n })\n }\n\n return newCache\n })\n } catch {\n // Failed to load more children - silently fail\n } finally {\n setIsLoadingMore(false)\n setLoadingNodeId(null)\n }\n },\n [\n api,\n collectionSlug,\n isLoadingMore,\n parentFieldName,\n serverURL,\n treeCache,\n treeLimit,\n useAsTitle,\n ],\n )\n\n const reset = useCallback(() => {\n setBaseFilter(null)\n setCollectionSlug(null)\n setParent(null)\n setParentFieldName('')\n setTreeLimit(DEFAULT_HIERARCHY_TREE_LIMIT)\n setTypeFieldName(null)\n setUseAsTitle(null)\n setTreeCache(new Map())\n setExpandedNodesByCollection(new Map())\n setSelectedFiltersByCollection(new Map())\n setIsLoadingMore(false)\n setLoadingNodeId(null)\n }, [])\n\n const refreshTree = useCallback((slug: string) => {\n setTreeCache((prev) => {\n const next = new Map(prev)\n next.delete(slug)\n return next\n })\n setTreeRefreshKeys((prev) => {\n const next = new Map(prev)\n next.set(slug, (next.get(slug) ?? 0) + 1)\n return next\n })\n }, [])\n\n const expandedNodes =\n collectionSlug && expandedNodesByCollection.has(collectionSlug)\n ? expandedNodesByCollection.get(collectionSlug)\n : new Set<number | string>()\n\n const selectedFilters =\n collectionSlug && selectedFiltersByCollection.has(collectionSlug)\n ? selectedFiltersByCollection.get(collectionSlug)\n : []\n\n const value: HierarchyContextValue = {\n allowedCollections,\n baseFilter,\n collectionSlug,\n expandedNodes,\n getExpandedNodesForCollection,\n getNodeChildren,\n getTreeDataForCollection,\n hydrate,\n isLoadingMore,\n loadingNodeId,\n loadMoreChildren,\n parent,\n parentFieldName,\n refreshTree,\n reset,\n selectedFilters,\n selectParent,\n setSelectedFilters,\n toggleNode,\n toggleNodeForCollection,\n treeLimit,\n treeRefreshKeys,\n typeFieldName,\n useAsTitle,\n }\n\n return <HierarchyContext value={value}>{children}</HierarchyContext>\n}\n\nexport const useHierarchy = (): HierarchyContextValue => {\n const context = use(HierarchyContext)\n if (!context) {\n throw new Error('useHierarchy must be used within HierarchyProvider')\n }\n return context\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/ListQuery/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA4D,MAAM,OAAO,CAAA;AAEhF,OAAO,KAAK,EAAqB,cAAc,EAAE,MAAM,YAAY,CAAA;AAWnE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAgMtD,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/ListQuery/index.tsx"],"names":[],"mappings":"AAIA,OAAO,KAA4D,MAAM,OAAO,CAAA;AAEhF,OAAO,KAAK,EAAqB,cAAc,EAAE,MAAM,YAAY,CAAA;AAWnE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,eAAO,MAAM,iBAAiB,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAuMtD,CAAA"}
@@ -120,7 +120,14 @@ export const ListQueryProvider = ({
120
120
  if (window.location.search !== search_1) {
121
121
  setQuery(newQuery_0);
122
122
  // Important: do not use router.replace here to avoid re-rendering.
123
- window.history.replaceState(null, '', search_1);
123
+ // Go through the adapter's replaceState so routers that observe history
124
+ // mutations (e.g. TanStack) don't re-run their loader and double-load the
125
+ // view. Falls back to the native call for adapters that don't implement it.
126
+ if (router.replaceState) {
127
+ router.replaceState(search_1);
128
+ } else {
129
+ window.history.replaceState(null, '', search_1);
130
+ }
124
131
  }
125
132
  });
126
133
  // If `query` is updated externally, update the local state
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["transformWhereQuery","validateWhereQuery","qs","React","useCallback","useEffect","useMemo","useRef","useState","useListDrawerContext","useEffectEvent","useRouteTransition","parseSearchParams","useRouter","useSearchParams","ListQueryContext","ListQueryModifiedContext","mergeQuery","sanitizeQuery","useListQuery","ListQueryProvider","children","collectionSlug","data","modifySearchParams","onQueryChange","onQueryChangeFromProps","orderableFieldName","query","queryFromProps","router","rawSearchParams","startRouteTransition","modified","setModified","contextRef","current","onQueryChangeFromContext","queryFromURL","setQuery","limit","sort","refineListData","incomingQuery","newQuery","defaults","search","stringify","columns","JSON","queryByGroup","window","location","replace","scroll","handlePageChange","arg","page","handlePerPageChange","handleSearchChange","undefined","handleSortChange","handleWhereChange","where","syncPropsToURL","history","replaceState","hasActiveFilters","normalizedWhere","or","some","orGroup","and","andGroup","field","Object","keys","operatorObj","operator","Boolean","_jsx","value","defaultLimit","isGroupingBy","groupBy"],"sources":["../../../src/providers/ListQuery/index.tsx"],"sourcesContent":["'use client'\nimport { type ListQuery, type Where } from 'payload'\nimport { transformWhereQuery, validateWhereQuery } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { IListQueryContext, ListQueryProps } from './types.js'\n\nimport { useListDrawerContext } from '../../elements/ListDrawer/Provider.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { useRouter, useSearchParams } from '../RouterAdapter/index.js'\nimport { ListQueryContext, ListQueryModifiedContext } from './context.js'\nimport { mergeQuery } from './mergeQuery.js'\nimport { sanitizeQuery } from './sanitizeQuery.js'\n\nexport { useListQuery } from './context.js'\n\nexport const ListQueryProvider: React.FC<ListQueryProps> = ({\n children,\n collectionSlug,\n data,\n modifySearchParams,\n onQueryChange: onQueryChangeFromProps,\n orderableFieldName,\n query: queryFromProps,\n}) => {\n // TODO: Investigate if this is still needed\n 'use no memo'\n\n const router = useRouter()\n const rawSearchParams = useSearchParams()\n const { startRouteTransition } = useRouteTransition()\n const [modified, setModified] = useState(false)\n const contextRef = useRef({} as IListQueryContext)\n contextRef.current.modified = modified\n\n const { onQueryChange: onQueryChangeFromContext } = useListDrawerContext()\n const onQueryChange = onQueryChangeFromContext || onQueryChangeFromProps\n\n const queryFromURL = useMemo<ListQuery>(\n () => sanitizeQuery(parseSearchParams(rawSearchParams)),\n [rawSearchParams],\n )\n\n const [query, setQuery] = useState<ListQuery>(() => {\n if (modifySearchParams) {\n return queryFromURL\n } else {\n return {\n limit: queryFromProps.limit,\n sort: queryFromProps.sort,\n }\n }\n })\n\n const refineListData = useCallback(\n // eslint-disable-next-line @typescript-eslint/require-await\n async (incomingQuery: ListQuery, modified?: boolean) => {\n setModified(modified ?? true)\n\n const newQuery = mergeQuery(query, incomingQuery, {\n defaults: {\n limit: queryFromProps.limit,\n sort: queryFromProps.sort,\n },\n })\n\n if (modifySearchParams) {\n const search = `?${qs.stringify({\n ...newQuery,\n columns: JSON.stringify(newQuery.columns),\n queryByGroup: JSON.stringify(newQuery.queryByGroup),\n })}`\n if (window.location.search !== search) {\n startRouteTransition(() => router.replace(search, { scroll: false }))\n }\n } else if (typeof onQueryChange === 'function') {\n onQueryChange(newQuery)\n }\n\n setQuery(newQuery)\n },\n [\n query,\n queryFromProps.limit,\n queryFromProps.sort,\n modifySearchParams,\n onQueryChange,\n startRouteTransition,\n router,\n ],\n )\n\n const handlePageChange = useCallback(\n async (arg: number) => {\n await refineListData({ page: arg })\n },\n [refineListData],\n )\n\n const handlePerPageChange = React.useCallback(\n async (arg: number) => {\n await refineListData({ limit: arg, page: 1 })\n },\n [refineListData],\n )\n\n const handleSearchChange = useCallback(\n async (arg: string) => {\n const search = arg === '' ? undefined : arg\n await refineListData({ search })\n },\n [refineListData],\n )\n\n const handleSortChange = useCallback(\n async (sort: string) => {\n await refineListData({ sort })\n },\n [refineListData],\n )\n\n const handleWhereChange = useCallback(\n async (where: Where) => {\n await refineListData({ where })\n },\n [refineListData],\n )\n\n /**\n * The server component may pass props to this client component, e.g. from\n * fetching the query from preferences.\n * This effect is responsible for syncing the props back to the URL, without\n * triggering a re-render.\n */\n const syncPropsToURL = useEffectEvent(() => {\n const newQuery = sanitizeQuery({ ...(query || {}), ...(queryFromProps || {}) })\n\n const search = `?${qs.stringify({\n ...newQuery,\n columns: JSON.stringify(newQuery.columns),\n queryByGroup: JSON.stringify(newQuery.queryByGroup),\n })}`\n\n if (window.location.search !== search) {\n setQuery(newQuery)\n // Important: do not use router.replace here to avoid re-rendering.\n window.history.replaceState(null, '', search)\n }\n })\n\n // If `query` is updated externally, update the local state\n // E.g. when HMR runs, these properties may be different\n useEffect(() => {\n if (modifySearchParams && queryFromProps) {\n syncPropsToURL()\n }\n }, [modifySearchParams, queryFromProps])\n\n const hasActiveFilters = useMemo(() => {\n if (!query?.where) {\n return false\n }\n\n // Normalize flat/invalid where queries (e.g. `{ title: { equals } }`) into the\n // `or/and` structure so they are detected the same way the WhereBuilder reads them.\n const normalizedWhere = validateWhereQuery(query.where)\n ? query.where\n : transformWhereQuery(query.where)\n\n return (normalizedWhere.or ?? []).some((orGroup) =>\n (orGroup.and ?? []).some((andGroup) => {\n const field = Object.keys(andGroup)[0]\n if (!field) {\n return false\n }\n const operatorObj = andGroup[field]\n if (!operatorObj || typeof operatorObj !== 'object') {\n return false\n }\n const operator = Object.keys(operatorObj)[0]\n return Boolean(operator) && (operatorObj as Record<string, unknown>)[operator] !== undefined\n }),\n )\n }, [query?.where])\n\n return (\n <ListQueryContext\n value={{\n collectionSlug,\n data,\n defaultLimit: data?.limit,\n handlePageChange,\n handlePerPageChange,\n handleSearchChange,\n handleSortChange,\n handleWhereChange,\n hasActiveFilters,\n isGroupingBy: Boolean(query?.groupBy),\n orderableFieldName,\n query,\n refineListData,\n setModified,\n ...contextRef.current,\n }}\n >\n <ListQueryModifiedContext value={modified}>{children}</ListQueryModifiedContext>\n </ListQueryContext>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["transformWhereQuery","validateWhereQuery","qs","React","useCallback","useEffect","useMemo","useRef","useState","useListDrawerContext","useEffectEvent","useRouteTransition","parseSearchParams","useRouter","useSearchParams","ListQueryContext","ListQueryModifiedContext","mergeQuery","sanitizeQuery","useListQuery","ListQueryProvider","children","collectionSlug","data","modifySearchParams","onQueryChange","onQueryChangeFromProps","orderableFieldName","query","queryFromProps","router","rawSearchParams","startRouteTransition","modified","setModified","contextRef","current","onQueryChangeFromContext","queryFromURL","setQuery","limit","sort","refineListData","incomingQuery","newQuery","defaults","search","stringify","columns","JSON","queryByGroup","window","location","replace","scroll","handlePageChange","arg","page","handlePerPageChange","handleSearchChange","undefined","handleSortChange","handleWhereChange","where","syncPropsToURL","replaceState","history","hasActiveFilters","normalizedWhere","or","some","orGroup","and","andGroup","field","Object","keys","operatorObj","operator","Boolean","_jsx","value","defaultLimit","isGroupingBy","groupBy"],"sources":["../../../src/providers/ListQuery/index.tsx"],"sourcesContent":["'use client'\nimport { type ListQuery, type Where } from 'payload'\nimport { transformWhereQuery, validateWhereQuery } from 'payload/shared'\nimport * as qs from 'qs-esm'\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react'\n\nimport type { IListQueryContext, ListQueryProps } from './types.js'\n\nimport { useListDrawerContext } from '../../elements/ListDrawer/Provider.js'\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useRouteTransition } from '../../providers/RouteTransition/index.js'\nimport { parseSearchParams } from '../../utilities/parseSearchParams.js'\nimport { useRouter, useSearchParams } from '../RouterAdapter/index.js'\nimport { ListQueryContext, ListQueryModifiedContext } from './context.js'\nimport { mergeQuery } from './mergeQuery.js'\nimport { sanitizeQuery } from './sanitizeQuery.js'\n\nexport { useListQuery } from './context.js'\n\nexport const ListQueryProvider: React.FC<ListQueryProps> = ({\n children,\n collectionSlug,\n data,\n modifySearchParams,\n onQueryChange: onQueryChangeFromProps,\n orderableFieldName,\n query: queryFromProps,\n}) => {\n // TODO: Investigate if this is still needed\n 'use no memo'\n\n const router = useRouter()\n const rawSearchParams = useSearchParams()\n const { startRouteTransition } = useRouteTransition()\n const [modified, setModified] = useState(false)\n const contextRef = useRef({} as IListQueryContext)\n contextRef.current.modified = modified\n\n const { onQueryChange: onQueryChangeFromContext } = useListDrawerContext()\n const onQueryChange = onQueryChangeFromContext || onQueryChangeFromProps\n\n const queryFromURL = useMemo<ListQuery>(\n () => sanitizeQuery(parseSearchParams(rawSearchParams)),\n [rawSearchParams],\n )\n\n const [query, setQuery] = useState<ListQuery>(() => {\n if (modifySearchParams) {\n return queryFromURL\n } else {\n return {\n limit: queryFromProps.limit,\n sort: queryFromProps.sort,\n }\n }\n })\n\n const refineListData = useCallback(\n // eslint-disable-next-line @typescript-eslint/require-await\n async (incomingQuery: ListQuery, modified?: boolean) => {\n setModified(modified ?? true)\n\n const newQuery = mergeQuery(query, incomingQuery, {\n defaults: {\n limit: queryFromProps.limit,\n sort: queryFromProps.sort,\n },\n })\n\n if (modifySearchParams) {\n const search = `?${qs.stringify({\n ...newQuery,\n columns: JSON.stringify(newQuery.columns),\n queryByGroup: JSON.stringify(newQuery.queryByGroup),\n })}`\n if (window.location.search !== search) {\n startRouteTransition(() => router.replace(search, { scroll: false }))\n }\n } else if (typeof onQueryChange === 'function') {\n onQueryChange(newQuery)\n }\n\n setQuery(newQuery)\n },\n [\n query,\n queryFromProps.limit,\n queryFromProps.sort,\n modifySearchParams,\n onQueryChange,\n startRouteTransition,\n router,\n ],\n )\n\n const handlePageChange = useCallback(\n async (arg: number) => {\n await refineListData({ page: arg })\n },\n [refineListData],\n )\n\n const handlePerPageChange = React.useCallback(\n async (arg: number) => {\n await refineListData({ limit: arg, page: 1 })\n },\n [refineListData],\n )\n\n const handleSearchChange = useCallback(\n async (arg: string) => {\n const search = arg === '' ? undefined : arg\n await refineListData({ search })\n },\n [refineListData],\n )\n\n const handleSortChange = useCallback(\n async (sort: string) => {\n await refineListData({ sort })\n },\n [refineListData],\n )\n\n const handleWhereChange = useCallback(\n async (where: Where) => {\n await refineListData({ where })\n },\n [refineListData],\n )\n\n /**\n * The server component may pass props to this client component, e.g. from\n * fetching the query from preferences.\n * This effect is responsible for syncing the props back to the URL, without\n * triggering a re-render.\n */\n const syncPropsToURL = useEffectEvent(() => {\n const newQuery = sanitizeQuery({ ...(query || {}), ...(queryFromProps || {}) })\n\n const search = `?${qs.stringify({\n ...newQuery,\n columns: JSON.stringify(newQuery.columns),\n queryByGroup: JSON.stringify(newQuery.queryByGroup),\n })}`\n\n if (window.location.search !== search) {\n setQuery(newQuery)\n // Important: do not use router.replace here to avoid re-rendering.\n // Go through the adapter's replaceState so routers that observe history\n // mutations (e.g. TanStack) don't re-run their loader and double-load the\n // view. Falls back to the native call for adapters that don't implement it.\n if (router.replaceState) {\n router.replaceState(search)\n } else {\n window.history.replaceState(null, '', search)\n }\n }\n })\n\n // If `query` is updated externally, update the local state\n // E.g. when HMR runs, these properties may be different\n useEffect(() => {\n if (modifySearchParams && queryFromProps) {\n syncPropsToURL()\n }\n }, [modifySearchParams, queryFromProps])\n\n const hasActiveFilters = useMemo(() => {\n if (!query?.where) {\n return false\n }\n\n // Normalize flat/invalid where queries (e.g. `{ title: { equals } }`) into the\n // `or/and` structure so they are detected the same way the WhereBuilder reads them.\n const normalizedWhere = validateWhereQuery(query.where)\n ? query.where\n : transformWhereQuery(query.where)\n\n return (normalizedWhere.or ?? []).some((orGroup) =>\n (orGroup.and ?? []).some((andGroup) => {\n const field = Object.keys(andGroup)[0]\n if (!field) {\n return false\n }\n const operatorObj = andGroup[field]\n if (!operatorObj || typeof operatorObj !== 'object') {\n return false\n }\n const operator = Object.keys(operatorObj)[0]\n return Boolean(operator) && (operatorObj as Record<string, unknown>)[operator] !== undefined\n }),\n )\n }, [query?.where])\n\n return (\n <ListQueryContext\n value={{\n collectionSlug,\n data,\n defaultLimit: data?.limit,\n handlePageChange,\n handlePerPageChange,\n handleSearchChange,\n handleSortChange,\n handleWhereChange,\n hasActiveFilters,\n isGroupingBy: Boolean(query?.groupBy),\n orderableFieldName,\n query,\n refineListData,\n setModified,\n ...contextRef.current,\n }}\n >\n <ListQueryModifiedContext value={modified}>{children}</ListQueryModifiedContext>\n </ListQueryContext>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"mergeQuery.d.ts","sourceRoot":"","sources":["../../../src/providers/ListQuery/mergeQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,eAAO,MAAM,UAAU,GACrB,cAAc,SAAS,EACvB,UAAU,SAAS,EACnB,UAAU;IACR,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB,KACA,SAwDF,CAAA"}
1
+ {"version":3,"file":"mergeQuery.d.ts","sourceRoot":"","sources":["../../../src/providers/ListQuery/mergeQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,eAAO,MAAM,UAAU,iBACP,SAAS,YACb,SAAS,YACT;IACR,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB,KACA,SAwDF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"sanitizeQuery.d.ts","sourceRoot":"","sources":["../../../src/providers/ListQuery/sanitizeQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAS,MAAM,SAAS,CAAA;AAE/C;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,YAAY,SAAS,KAAG,SAmCrD,CAAA"}
1
+ {"version":3,"file":"sanitizeQuery.d.ts","sourceRoot":"","sources":["../../../src/providers/ListQuery/sanitizeQuery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAS,MAAM,SAAS,CAAA;AAE/C;;;;GAIG;AACH,eAAO,MAAM,aAAa,eAAgB,SAAS,KAAG,SAmCrD,CAAA"}
@@ -13,8 +13,8 @@ export type SizeReducerAction = {
13
13
  };
14
14
  };
15
15
  export declare const sizeReducer: (state: SizeReducerState, action: SizeReducerAction) => {
16
- height: number;
17
16
  width: number;
17
+ height: number;
18
18
  };
19
19
  export {};
20
20
  //# sourceMappingURL=sizeReducer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sizeReducer.d.ts","sourceRoot":"","sources":["../../../src/providers/LivePreview/sizeReducer.ts"],"names":[],"mappings":"AAWA,KAAK,gBAAgB,GAAG;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,iBAAiB,GACzB;IACE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;CACd,GACD;IACE,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE;QACL,MAAM,EAAE,MAAM,CAAA;QACd,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;CACF,CAAA;AAEL,eAAO,MAAM,WAAW,GAAI,OAAO,gBAAgB,EAAE,QAAQ,iBAAiB;;WAhBrE,MAAM;CAyBd,CAAA"}
1
+ {"version":3,"file":"sizeReducer.d.ts","sourceRoot":"","sources":["../../../src/providers/LivePreview/sizeReducer.ts"],"names":[],"mappings":"AAWA,KAAK,gBAAgB,GAAG;IACtB,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,iBAAiB,GACzB;IACE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAA;IACxB,KAAK,EAAE,MAAM,CAAA;CACd,GACD;IACE,IAAI,EAAE,OAAO,CAAA;IACb,KAAK,EAAE;QACL,MAAM,EAAE,MAAM,CAAA;QACd,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;CACF,CAAA;AAEL,eAAO,MAAM,WAAW,UAAW,gBAAgB,UAAU,iBAAiB;WAhBrE,MAAM;;CAyBd,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/providers/RouteTransition/ProgressBar/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAGhD,OAAO,aAAa,CAAA;AAMpB;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,WAAW,yBA4DvB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/providers/RouteTransition/ProgressBar/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAA4B,MAAM,OAAO,CAAA;AAGhD,OAAO,aAAa,CAAA;AAYpB;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,WAAW,yBAyEvB,CAAA"}
@@ -7,7 +7,13 @@ import { useRouteTransition } from '../index.js';
7
7
  import './index.css';
8
8
  const transitionDuration = 200;
9
9
  const baseClass = 'progress-bar';
10
- const initialDelay = 150;
10
+ // Minimum time the bar stays on screen once a navigation starts. Guarantees a
11
+ // visible sweep even for near-instant client navigations (e.g. TanStack routing
12
+ // to already-loaded data), which would otherwise finish before the bar appeared.
13
+ const minVisibleDuration = 400;
14
+ // Progress shown the moment the bar appears, so there is always something
15
+ // visible before `transitionProgress` begins advancing.
16
+ const initialProgress = 0.1;
11
17
  /**
12
18
  * Renders a progress bar that shows the progress of a route transition.
13
19
  * Place this at the root of your application, inside of the `RouteTransitionProvider`.
@@ -28,32 +34,35 @@ export const ProgressBar = () => {
28
34
  transitionProgress
29
35
  } = useRouteTransition();
30
36
  const [progressToShow, setProgressToShow] = React.useState(null);
31
- const shouldDelayProgress = useRef(true);
37
+ const shownAtRef = useRef(null);
32
38
  let t0;
33
39
  let t1;
34
40
  if ($[0] !== isTransitioning || $[1] !== transitionProgress) {
35
41
  t0 = () => {
36
- let clearTimerID;
37
- let delayTimerID;
42
+ let completeTimerID;
43
+ let hideTimerID;
38
44
  if (isTransitioning) {
39
- if (shouldDelayProgress.current) {
40
- delayTimerID = setTimeout(() => {
41
- setProgressToShow(transitionProgress);
42
- shouldDelayProgress.current = false;
43
- }, initialDelay);
44
- } else {
45
- setProgressToShow(transitionProgress);
45
+ if (shownAtRef.current === null) {
46
+ shownAtRef.current = performance.now();
46
47
  }
48
+ setProgressToShow(Math.max(transitionProgress, initialProgress));
47
49
  } else {
48
- shouldDelayProgress.current = true;
49
- setProgressToShow(1);
50
- clearTimerID = setTimeout(() => {
51
- setProgressToShow(null);
52
- }, transitionDuration * 2);
50
+ if (shownAtRef.current !== null) {
51
+ const elapsed = performance.now() - shownAtRef.current;
52
+ const remaining = Math.max(0, minVisibleDuration - elapsed);
53
+ shownAtRef.current = null;
54
+ setProgressToShow(_temp);
55
+ completeTimerID = setTimeout(() => {
56
+ setProgressToShow(1);
57
+ hideTimerID = setTimeout(() => {
58
+ setProgressToShow(null);
59
+ }, transitionDuration * 2);
60
+ }, remaining);
61
+ }
53
62
  }
54
63
  return () => {
55
- clearTimeout(clearTimerID);
56
- clearTimeout(delayTimerID);
64
+ clearTimeout(completeTimerID);
65
+ clearTimeout(hideTimerID);
57
66
  };
58
67
  };
59
68
  t1 = [isTransitioning, transitionProgress];
@@ -101,4 +110,7 @@ export const ProgressBar = () => {
101
110
  }
102
111
  return null;
103
112
  };
113
+ function _temp(prev) {
114
+ return Math.max(prev ?? 0, initialProgress);
115
+ }
104
116
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","useEffect","useRef","useRouteTransition","transitionDuration","baseClass","initialDelay","ProgressBar","$","isTransitioning","transitionProgress","progressToShow","setProgressToShow","useState","shouldDelayProgress","t0","t1","clearTimerID","delayTimerID","current","clearTimeout","t2","t3","filter","Boolean","t4","join","t5","_jsx","className","style","children","width"],"sources":["../../../../src/providers/RouteTransition/ProgressBar/index.tsx"],"sourcesContent":["'use client'\nimport React, { useEffect, useRef } from 'react'\n\nimport { useRouteTransition } from '../index.js'\nimport './index.css'\n\nconst transitionDuration = 200\nconst baseClass = 'progress-bar'\nconst initialDelay = 150\n\n/**\n * Renders a progress bar that shows the progress of a route transition.\n * Place this at the root of your application, inside of the `RouteTransitionProvider`.\n * When a transition is triggered, the progress bar will show the progress of that transition and exit when the transition is complete.\n * @returns A progress bar that shows the progress of a route transition\n * @example\n * import { RouteTransitionProvider, ProgressBar, Link } from '@payloadcms/ui'\n * const App = () => (\n * <RouteTransitionProvider>\n * <ProgressBar />\n * <Link href=\"/somewhere\">Go Somewhere</Link>\n * </RouteTransitionProvider>\n */\nexport const ProgressBar = () => {\n const { isTransitioning, transitionProgress } = useRouteTransition()\n const [progressToShow, setProgressToShow] = React.useState<null | number>(null)\n const shouldDelayProgress = useRef(true)\n\n useEffect(() => {\n let clearTimerID: NodeJS.Timeout\n let delayTimerID: NodeJS.Timeout\n\n if (isTransitioning) {\n if (shouldDelayProgress.current) {\n delayTimerID = setTimeout(() => {\n setProgressToShow(transitionProgress)\n shouldDelayProgress.current = false\n }, initialDelay)\n } else {\n setProgressToShow(transitionProgress)\n }\n } else {\n shouldDelayProgress.current = true\n\n // Fast forward to 100% when the transition is complete\n // Then fade out the progress bar directly after\n setProgressToShow(1)\n\n // Wait for CSS transition to finish before hiding the progress bar\n // This includes both the fast-forward to 100% and the subsequent fade-out\n clearTimerID = setTimeout(() => {\n setProgressToShow(null)\n }, transitionDuration * 2)\n }\n\n return () => {\n clearTimeout(clearTimerID)\n clearTimeout(delayTimerID)\n }\n }, [isTransitioning, transitionProgress])\n\n if (typeof progressToShow === 'number') {\n return (\n <div\n className={[baseClass, progressToShow === 1 && `${baseClass}--fade-out`]\n .filter(Boolean)\n .join(' ')}\n style={{\n // @ts-expect-error - TS doesn't like custom CSS properties\n '--transition-duration': `${transitionDuration}ms`,\n }}\n >\n <div\n className={`${baseClass}__progress`}\n style={{\n width: `${(progressToShow || 0) * 100}%`,\n }}\n />\n </div>\n )\n }\n\n return null\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,OAAOC,KAAA,IAASC,SAAS,EAAEC,MAAM,QAAQ;AAEzC,SAASC,kBAAkB,QAAQ;AACnC,OAAO;AAEP,MAAMC,kBAAA,GAAqB;AAC3B,MAAMC,SAAA,GAAY;AAClB,MAAMC,YAAA,GAAe;AAErB;;;;;;;;;;;;;AAaA,OAAO,MAAMC,WAAA,GAAcA,CAAA;EAAA,MAAAC,CAAA,GAAAT,EAAA;EACzB;IAAAU,eAAA;IAAAC;EAAA,IAAgDP,kBAAA;EAChD,OAAAQ,cAAA,EAAAC,iBAAA,IAA4CZ,KAAA,CAAAa,QAAA,KAA8B;EAC1E,MAAAC,mBAAA,GAA4BZ,MAAA,KAAO;EAAA,IAAAa,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAR,CAAA,QAAAC,eAAA,IAAAD,CAAA,QAAAE,kBAAA;IAEzBK,EAAA,GAAAA,CAAA;MACJE,GAAA,CAAAA,YAAA;MACAC,GAAA,CAAAA,YAAA;MAAA,IAEAT,eAAA;QAAA,IACEK,mBAAA,CAAAK,OAAA;UACFD,YAAA,CAAAA,CAAA,CAAeA,aAAA,CAAAA,EAAA,CAAAA;YACbN,iBAAA,CAAkBF,kBAAA;YAClBI,mBAAA,CAAAK,OAAA;UAAA,GAAAb,YACC;QAHH;UAKAM,iBAAA,CAAkBF,kBAAA;QAAA;MAAA;QAGpBI,mBAAA,CAAAK,OAAA;QAIAP,iBAAA,EAAkB;QAIlBK,YAAA,CAAAA,CAAA,CAAeA,aAAA,CAAAA,EAAA,CAAAA;UACbL,iBAAA,KAAkB;QAAA,GACjBR,kBAAA,IAAqB;MAFxB;MAAA;QAMAgB,YAAA,CAAaH,YAAA;QACbG,YAAA,CAAaF,YAAA;MAAA;IAAA;IAEdF,EAAA,IAACP,eAAA,EAAiBC,kBAAA;IAAmBF,CAAA,MAAAC,eAAA;IAAAD,CAAA,MAAAE,kBAAA;IAAAF,CAAA,MAAAO,EAAA;IAAAP,CAAA,MAAAQ,EAAA;EAAA;IAAAD,EAAA,GAAAP,CAAA;IAAAQ,EAAA,GAAAR,CAAA;EAAA;EA/BxCP,SAAA,CAAUc,EA+BV,EAAGC,EAAqC;EAAA,IAEpC,OAAOL,cAAA,KAAmB;IAGD,MAAAU,EAAA,GAAAV,cAAA,MAAmB,IAAK,GAAAN,SAAA,YAAwB;IAAA,IAAAiB,EAAA;IAAA,IAAAd,CAAA,QAAAa,EAAA;MAA5DC,EAAA,IAAAjB,SAAA,EAAYgB,EAAgD,EAAAE,MAAA,CAAAC,OAC7D;MAAAhB,CAAA,MAAAa,EAAA;MAAAb,CAAA,MAAAc,EAAA;IAAA;MAAAA,EAAA,GAAAd,CAAA;IAAA;IADC,MAAAiB,EAAA,GAAAH,EACD,CAAAI,IAAA,CACF;IAAA,IAAAC,EAAA;IAAA,IAAAnB,CAAA,QAAAG,cAAA,IAAAH,CAAA,QAAAiB,EAAA;MAHVE,EAAA,GAAAC,IAAA,CAAC;QAAAC,SAAA,EACYJ,EAEH;QAAAK,KAAA;UAAA,yBAGmB,GAAA1B,kBAAA;QAAyB;QAAA2B,QAAA,EAGpDH,IAAA,CAAC;UAAAC,SAAA,EACY,GAAAxB,SAAA,YAAwB;UAAAyB,KAAA;YAAAE,KAAA,EAE1B,GAAG,CAACrB,cAAA,KAAkB,OAAK;UAAM;QAAA,C;;;;;;;;WAZ9CgB,E;;;CAoBN","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","useEffect","useRef","useRouteTransition","transitionDuration","baseClass","minVisibleDuration","initialProgress","ProgressBar","$","isTransitioning","transitionProgress","progressToShow","setProgressToShow","useState","shownAtRef","t0","t1","completeTimerID","hideTimerID","current","performance","now","Math","max","elapsed","remaining","_temp","clearTimeout","t2","t3","filter","Boolean","t4","join","t5","_jsx","className","style","children","width","prev"],"sources":["../../../../src/providers/RouteTransition/ProgressBar/index.tsx"],"sourcesContent":["'use client'\nimport React, { useEffect, useRef } from 'react'\n\nimport { useRouteTransition } from '../index.js'\nimport './index.css'\n\nconst transitionDuration = 200\nconst baseClass = 'progress-bar'\n// Minimum time the bar stays on screen once a navigation starts. Guarantees a\n// visible sweep even for near-instant client navigations (e.g. TanStack routing\n// to already-loaded data), which would otherwise finish before the bar appeared.\nconst minVisibleDuration = 400\n// Progress shown the moment the bar appears, so there is always something\n// visible before `transitionProgress` begins advancing.\nconst initialProgress = 0.1\n\n/**\n * Renders a progress bar that shows the progress of a route transition.\n * Place this at the root of your application, inside of the `RouteTransitionProvider`.\n * When a transition is triggered, the progress bar will show the progress of that transition and exit when the transition is complete.\n * @returns A progress bar that shows the progress of a route transition\n * @example\n * import { RouteTransitionProvider, ProgressBar, Link } from '@payloadcms/ui'\n * const App = () => (\n * <RouteTransitionProvider>\n * <ProgressBar />\n * <Link href=\"/somewhere\">Go Somewhere</Link>\n * </RouteTransitionProvider>\n */\nexport const ProgressBar = () => {\n const { isTransitioning, transitionProgress } = useRouteTransition()\n const [progressToShow, setProgressToShow] = React.useState<null | number>(null)\n const shownAtRef = useRef<null | number>(null)\n\n useEffect(() => {\n let completeTimerID: NodeJS.Timeout\n let hideTimerID: NodeJS.Timeout\n\n if (isTransitioning) {\n // Show the bar immediately and remember when, so we can keep it on screen\n // for at least `minVisibleDuration` no matter how fast the navigation is.\n if (shownAtRef.current === null) {\n shownAtRef.current = performance.now()\n }\n\n setProgressToShow(Math.max(transitionProgress, initialProgress))\n } else if (shownAtRef.current !== null) {\n // A navigation just finished (the guard skips the initial mount, where no\n // navigation was ever in progress). Keep the bar visible for the rest of\n // `minVisibleDuration`, then fast-forward to 100% and fade out.\n const elapsed = performance.now() - shownAtRef.current\n const remaining = Math.max(0, minVisibleDuration - elapsed)\n\n shownAtRef.current = null\n\n // Force a visible value here, at normal priority. For fast client\n // navigations (e.g. TanStack routing that settles in a single round-trip)\n // the growing render above — driven by the optimistic `isTransitioning`\n // flag — is discarded before it paints, so the bar would otherwise only\n // flash to 100% at the tail. Setting it now guarantees the bar is on\n // screen for the whole `remaining` window before completing.\n setProgressToShow((prev) => Math.max(prev ?? 0, initialProgress))\n\n completeTimerID = setTimeout(() => {\n setProgressToShow(1)\n\n // Wait for the CSS transition to finish before hiding the progress bar.\n // This covers both the fast-forward to 100% and the subsequent fade-out.\n hideTimerID = setTimeout(() => {\n setProgressToShow(null)\n }, transitionDuration * 2)\n }, remaining)\n }\n\n return () => {\n clearTimeout(completeTimerID)\n clearTimeout(hideTimerID)\n }\n }, [isTransitioning, transitionProgress])\n\n if (typeof progressToShow === 'number') {\n return (\n <div\n className={[baseClass, progressToShow === 1 && `${baseClass}--fade-out`]\n .filter(Boolean)\n .join(' ')}\n style={{\n // @ts-expect-error - TS doesn't like custom CSS properties\n '--transition-duration': `${transitionDuration}ms`,\n }}\n >\n <div\n className={`${baseClass}__progress`}\n style={{\n width: `${(progressToShow || 0) * 100}%`,\n }}\n />\n </div>\n )\n }\n\n return null\n}\n"],"mappings":"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","ignoreList":[]}
@@ -19,7 +19,7 @@ export declare const RouteTransitionProvider: React.FC<RouteTransitionProps>;
19
19
  type RouteTransitionProps = {
20
20
  children: React.ReactNode;
21
21
  };
22
- type StartRouteTransition = (callback?: () => void) => void;
22
+ type StartRouteTransition = (callback?: () => Promise<void> | void) => void;
23
23
  type RouteTransitionContextValue = {
24
24
  isTransitioning: boolean;
25
25
  startRouteTransition: StartRouteTransition;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/RouteTransition/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAyE,MAAM,OAAO,CAAA;AAE7F;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA6DlE,CAAA;AAED,KAAK,oBAAoB,GAAG;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CAAA;AAED,KAAK,oBAAoB,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAA;AAE3D,KAAK,2BAA2B,GAAG;IACjC,eAAe,EAAE,OAAO,CAAA;IACxB,oBAAoB,EAAE,oBAAoB,CAAA;IAC1C,kBAAkB,EAAE,MAAM,CAAA;CAC3B,CAAA;AAaD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,kBAAkB,mCAA0C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/RouteTransition/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAyE,MAAM,OAAO,CAAA;AAE7F;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CAmElE,CAAA;AAED,KAAK,oBAAoB,GAAG;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAC1B,CAAA;AAED,KAAK,oBAAoB,GAAG,CAAC,QAAQ,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,KAAK,IAAI,CAAA;AAE3E,KAAK,2BAA2B,GAAG;IACjC,eAAe,EAAE,OAAO,CAAA;IACxB,oBAAoB,EAAE,oBAAoB,CAAA;IAC1C,kBAAkB,EAAE,MAAM,CAAA;CAC3B,CAAA;AAaD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,kBAAkB,mCAA0C,CAAA"}
@@ -71,7 +71,7 @@ export const RouteTransitionProvider = t0 => {
71
71
  startTransition(() => {
72
72
  setIsTransitioning(true);
73
73
  if (typeof callback === "function") {
74
- callback();
74
+ return callback();
75
75
  }
76
76
  });
77
77
  };
@@ -106,7 +106,7 @@ const RouteTransitionContext = /*#__PURE__*/React.createContext({
106
106
  // Default implementation: just call the callback directly (no transition animation)
107
107
  startRouteTransition: callback => {
108
108
  if (typeof callback === 'function') {
109
- callback();
109
+ void callback();
110
110
  }
111
111
  },
112
112
  transitionProgress: 0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","startTransition","useCallback","useEffect","useOptimistic","useRef","RouteTransitionProvider","t0","$","children","isTransitioning","setIsTransitioning","transitionProgress","setTransitionProgress","useState","transitionProgressRef","timerID","t1","Symbol","for","current","setInterval","newProgress","Math","random","pow","log","initiateProgress","t2","t3","clearInterval","t4","callback","startRouteTransition","t5","_jsx","RouteTransitionContext","value","createContext","useRouteTransition","use"],"sources":["../../../src/providers/RouteTransition/index.tsx"],"sourcesContent":["'use client'\nimport React, { startTransition, useCallback, useEffect, useOptimistic, useRef } from 'react'\n\n/**\n * Route transitions are useful in showing immediate visual feedback to the user when navigating between pages. This is especially useful on slow networks when navigating to data heavy or process intensive pages.\n * To use route transitions, place the `RouteTransitionProvider` at the root of your application, outside of the `ProgressBar` component.\n * To trigger a route transition, use the `Link` component from `@payloadcms/ui`,\n * or wrap a callback function with the `startRouteTransition` method.\n * To gain access to the `RouteTransitionContext`, call the `useRouteTransition` hook in your component.\n * @returns A context provider with methods and state for transitioning between routes, including `isTransitioning`, `startRouteTransition`, and `transitionProgress`.\n * @example\n * import { RouteTransitionProvider, ProgressBar, Link } from '@payloadcms/ui'\n * const App = () => (\n * <RouteTransitionProvider>\n * <ProgressBar />\n * <Link href=\"/somewhere\">Go Somewhere</Link>\n * </RouteTransitionProvider>\n * )\n */\nexport const RouteTransitionProvider: React.FC<RouteTransitionProps> = ({ children }) => {\n const [isTransitioning, setIsTransitioning] = useOptimistic(false)\n const [transitionProgress, setTransitionProgress] = React.useState<number>(0)\n\n const transitionProgressRef = useRef(transitionProgress)\n\n const timerID = useRef(null)\n\n const initiateProgress = useCallback(() => {\n timerID.current = setInterval(() => {\n // randomly update progress using an exponential curve\n // cap the progress to ensure it never fully reaches completion\n // accelerate quickly then decelerate slowly\n const maxProgress = 0.93\n const jumpFactor = 0.2 // lower to reduce jumps in progress\n const growthFactor = 0.75 // adjust to control acceleration\n const slowdownFactor = 0.75 // adjust to control deceleration\n\n const newProgress =\n transitionProgressRef.current +\n (maxProgress - transitionProgressRef.current) *\n Math.random() *\n jumpFactor *\n Math.pow(Math.log(1 + (1 - transitionProgressRef.current) * growthFactor), slowdownFactor)\n\n setTransitionProgress(newProgress)\n transitionProgressRef.current = newProgress\n }, 250) // every n ms, update progress\n }, [])\n\n useEffect(() => {\n setTransitionProgress(0)\n transitionProgressRef.current = 0\n\n if (isTransitioning) {\n initiateProgress()\n } else {\n if (timerID.current) {\n clearInterval(timerID.current)\n }\n }\n }, [isTransitioning, initiateProgress])\n\n const startRouteTransition: StartRouteTransition = useCallback(\n (callback?: () => void) => {\n startTransition(() => {\n setIsTransitioning(true)\n\n if (typeof callback === 'function') {\n callback()\n }\n })\n },\n [setIsTransitioning],\n )\n\n return (\n <RouteTransitionContext value={{ isTransitioning, startRouteTransition, transitionProgress }}>\n {children}\n </RouteTransitionContext>\n )\n}\n\ntype RouteTransitionProps = {\n children: React.ReactNode\n}\n\ntype StartRouteTransition = (callback?: () => void) => void\n\ntype RouteTransitionContextValue = {\n isTransitioning: boolean\n startRouteTransition: StartRouteTransition\n transitionProgress: number\n}\n\nconst RouteTransitionContext = React.createContext<RouteTransitionContextValue>({\n isTransitioning: false,\n // Default implementation: just call the callback directly (no transition animation)\n startRouteTransition: (callback) => {\n if (typeof callback === 'function') {\n callback()\n }\n },\n transitionProgress: 0,\n})\n\n/**\n * Use this hook to access the `RouteTransitionContext` provided by the `RouteTransitionProvider`.\n * To start a transition, fire the `startRouteTransition` method with a provided callback to run while the transition takes place.\n * @returns The `RouteTransitionContext` needed for transitioning between routes, including `isTransitioning`, `startRouteTransition`, and `transitionProgress`.\n * @example\n * 'use client'\n * import React, { useCallback } from 'react'\n * import { useTransition, useRouter } from '@payloadcms/ui'\n *\n * const MyComponent: React.FC = () => {\n * const router = useRouter()\n * const { startRouteTransition } = useRouteTransition()\n *\n * const redirectSomewhere = useCallback(() => {\n * startRouteTransition(() => router.push('/somewhere'))\n * }, [startRouteTransition, router])\n *\n * // ...\n * }\n */\nexport const useRouteTransition = () => React.use(RouteTransitionContext)\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","startTransition","useCallback","useEffect","useOptimistic","useRef","RouteTransitionProvider","t0","$","children","isTransitioning","setIsTransitioning","transitionProgress","setTransitionProgress","useState","transitionProgressRef","timerID","t1","Symbol","for","current","setInterval","newProgress","Math","random","pow","log","initiateProgress","t2","t3","clearInterval","t4","callback","startRouteTransition","t5","_jsx","RouteTransitionContext","value","createContext","useRouteTransition","use"],"sources":["../../../src/providers/RouteTransition/index.tsx"],"sourcesContent":["'use client'\nimport React, { startTransition, useCallback, useEffect, useOptimistic, useRef } from 'react'\n\n/**\n * Route transitions are useful in showing immediate visual feedback to the user when navigating between pages. This is especially useful on slow networks when navigating to data heavy or process intensive pages.\n * To use route transitions, place the `RouteTransitionProvider` at the root of your application, outside of the `ProgressBar` component.\n * To trigger a route transition, use the `Link` component from `@payloadcms/ui`,\n * or wrap a callback function with the `startRouteTransition` method.\n * To gain access to the `RouteTransitionContext`, call the `useRouteTransition` hook in your component.\n * @returns A context provider with methods and state for transitioning between routes, including `isTransitioning`, `startRouteTransition`, and `transitionProgress`.\n * @example\n * import { RouteTransitionProvider, ProgressBar, Link } from '@payloadcms/ui'\n * const App = () => (\n * <RouteTransitionProvider>\n * <ProgressBar />\n * <Link href=\"/somewhere\">Go Somewhere</Link>\n * </RouteTransitionProvider>\n * )\n */\nexport const RouteTransitionProvider: React.FC<RouteTransitionProps> = ({ children }) => {\n const [isTransitioning, setIsTransitioning] = useOptimistic(false)\n const [transitionProgress, setTransitionProgress] = React.useState<number>(0)\n\n const transitionProgressRef = useRef(transitionProgress)\n\n const timerID = useRef(null)\n\n const initiateProgress = useCallback(() => {\n timerID.current = setInterval(() => {\n // randomly update progress using an exponential curve\n // cap the progress to ensure it never fully reaches completion\n // accelerate quickly then decelerate slowly\n const maxProgress = 0.93\n const jumpFactor = 0.2 // lower to reduce jumps in progress\n const growthFactor = 0.75 // adjust to control acceleration\n const slowdownFactor = 0.75 // adjust to control deceleration\n\n const newProgress =\n transitionProgressRef.current +\n (maxProgress - transitionProgressRef.current) *\n Math.random() *\n jumpFactor *\n Math.pow(Math.log(1 + (1 - transitionProgressRef.current) * growthFactor), slowdownFactor)\n\n setTransitionProgress(newProgress)\n transitionProgressRef.current = newProgress\n }, 250) // every n ms, update progress\n }, [])\n\n useEffect(() => {\n setTransitionProgress(0)\n transitionProgressRef.current = 0\n\n if (isTransitioning) {\n initiateProgress()\n } else {\n if (timerID.current) {\n clearInterval(timerID.current)\n }\n }\n }, [isTransitioning, initiateProgress])\n\n const startRouteTransition: StartRouteTransition = useCallback(\n (callback?: () => Promise<void> | void) => {\n startTransition(() => {\n setIsTransitioning(true)\n\n // Return the callback's result so an async navigation (a returned\n // promise) keeps the transition — and the optimistic `isTransitioning`\n // flag — pending until navigation settles, making the progress bar\n // track the full navigation. Routers that integrate with React\n // transitions (Next.js) return `void` here, preserving the classic\n // synchronous behavior.\n if (typeof callback === 'function') {\n return callback()\n }\n })\n },\n [setIsTransitioning],\n )\n\n return (\n <RouteTransitionContext value={{ isTransitioning, startRouteTransition, transitionProgress }}>\n {children}\n </RouteTransitionContext>\n )\n}\n\ntype RouteTransitionProps = {\n children: React.ReactNode\n}\n\ntype StartRouteTransition = (callback?: () => Promise<void> | void) => void\n\ntype RouteTransitionContextValue = {\n isTransitioning: boolean\n startRouteTransition: StartRouteTransition\n transitionProgress: number\n}\n\nconst RouteTransitionContext = React.createContext<RouteTransitionContextValue>({\n isTransitioning: false,\n // Default implementation: just call the callback directly (no transition animation)\n startRouteTransition: (callback) => {\n if (typeof callback === 'function') {\n void callback()\n }\n },\n transitionProgress: 0,\n})\n\n/**\n * Use this hook to access the `RouteTransitionContext` provided by the `RouteTransitionProvider`.\n * To start a transition, fire the `startRouteTransition` method with a provided callback to run while the transition takes place.\n * @returns The `RouteTransitionContext` needed for transitioning between routes, including `isTransitioning`, `startRouteTransition`, and `transitionProgress`.\n * @example\n * 'use client'\n * import React, { useCallback } from 'react'\n * import { useTransition, useRouter } from '@payloadcms/ui'\n *\n * const MyComponent: React.FC = () => {\n * const router = useRouter()\n * const { startRouteTransition } = useRouteTransition()\n *\n * const redirectSomewhere = useCallback(() => {\n * startRouteTransition(() => router.push('/somewhere'))\n * }, [startRouteTransition, router])\n *\n * // ...\n * }\n */\nexport const useRouteTransition = () => React.use(RouteTransitionContext)\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"filterFields.d.ts","sourceRoot":"","sources":["../../../../src/providers/TableColumns/buildColumnState/filterFields.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAIjD;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,WAAW,GAAG,KAAK,EAAE,gBAAgB,CAAC,EAAE,KAAG,CAAC,EAqClF,CAAA"}
1
+ {"version":3,"file":"filterFields.d.ts","sourceRoot":"","sources":["../../../../src/providers/TableColumns/buildColumnState/filterFields.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAIjD;;;GAGG;AACH,eAAO,MAAM,YAAY,GAAI,CAAC,SAAS,WAAW,GAAG,KAAK,kBAAkB,CAAC,EAAE,KAAG,CAAC,EAqClF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"filterFieldsWithPermissions.d.ts","sourceRoot":"","sources":["../../../../src/providers/TableColumns/buildColumnState/filterFieldsWithPermissions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,KAAK,EACL,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,SAAS,CAAA;AAahB,eAAO,MAAM,2BAA2B,GAAI,CAAC,SAAS,WAAW,GAAG,KAAK,GAAG,WAAW,EAAE,+BAGtF;IACD,gBAAgB,CAAC,EAAE,yBAAyB,GAAG,0BAA0B,CAAA;IACzE,MAAM,EAAE,CAAC,WAAW,GAAG,KAAK,CAAC,EAAE,CAAA;CAChC,KAAG,CAAC,EAgEJ,CAAA"}
1
+ {"version":3,"file":"filterFieldsWithPermissions.d.ts","sourceRoot":"","sources":["../../../../src/providers/TableColumns/buildColumnState/filterFieldsWithPermissions.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,KAAK,EACL,yBAAyB,EACzB,0BAA0B,EAC3B,MAAM,SAAS,CAAA;AAahB,eAAO,MAAM,2BAA2B,GAAI,CAAC,SAAS,WAAW,GAAG,KAAK,GAAG,WAAW,iCAGpF;IACD,gBAAgB,CAAC,EAAE,yBAAyB,GAAG,0BAA0B,CAAA;IACzE,MAAM,EAAE,CAAC,WAAW,GAAG,KAAK,CAAC,EAAE,CAAA;CAChC,KAAG,CAAC,EAgEJ,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"findValueFromPath.d.ts","sourceRoot":"","sources":["../../../../src/providers/TableColumns/buildColumnState/findValueFromPath.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,GAAI,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,MAAM,KAAG,GAE1E,CAAA"}
1
+ {"version":3,"file":"findValueFromPath.d.ts","sourceRoot":"","sources":["../../../../src/providers/TableColumns/buildColumnState/findValueFromPath.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,eAAO,MAAM,iBAAiB,QAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,MAAM,KAAG,GAE1E,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/providers/TableColumns/buildColumnState/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAEV,WAAW,EACX,qBAAqB,EACrB,cAAc,EACd,MAAM,EACN,yBAAyB,EACzB,QAAQ,EACR,KAAK,EACL,aAAa,EACb,OAAO,EACP,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAG1B,SAAS,EACV,MAAM,SAAS,CAAA;AAUhB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAA;AAY5E,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,YAAY,EAAE,WAAW,EAAE,CAAA;IAC3B,OAAO,CAAC,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAA;IAC1C,eAAe,EAAE,yBAAyB,CAAC,iBAAiB,CAAC,CAAA;IAC7D,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,mBAAmB,EAAE,OAAO,CAAA;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,gBAAgB,CAAC,EAAE,0BAA0B,CAAA;IAC7C,IAAI,EAAE,UAAU,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,YAAY,EAAE,KAAK,EAAE,CAAA;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IAC1C,UAAU,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAA;IAC5D,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB,GAAG,CACA;IACE,cAAc,EAAE,cAAc,CAAA;IAC9B,QAAQ,EAAE,aAAa,CAAA;IACvB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CAC5B,GACD;IACE,cAAc,CAAC,EAAE,SAAS,CAAA;IAC1B,QAAQ,EAAE,aAAa,CAAA;IACvB,IAAI,EAAE;QACJ,UAAU,EAAE,cAAc,CAAA;QAC1B,KAAK,EAAE,QAAQ,CAAA;KAChB,EAAE,CAAA;CACJ,CACJ,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,MAAM,oBAAoB,KAAG,MAAM,EA+NnE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/providers/TableColumns/buildColumnState/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,KAAK,EAEV,WAAW,EACX,qBAAqB,EACrB,cAAc,EACd,MAAM,EACN,yBAAyB,EACzB,QAAQ,EACR,KAAK,EACL,aAAa,EACb,OAAO,EACP,cAAc,EACd,yBAAyB,EACzB,0BAA0B,EAG1B,SAAS,EACV,MAAM,SAAS,CAAA;AAUhB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAA;AAY5E,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,YAAY,EAAE,WAAW,EAAE,CAAA;IAC3B,OAAO,CAAC,EAAE,qBAAqB,CAAC,SAAS,CAAC,CAAA;IAC1C,eAAe,EAAE,yBAAyB,CAAC,iBAAiB,CAAC,CAAA;IAC7D,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,mBAAmB,EAAE,OAAO,CAAA;IAC5B,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,gBAAgB,CAAC,EAAE,0BAA0B,CAAA;IAC7C,IAAI,EAAE,UAAU,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,GAAG,CAAC,EAAE,cAAc,CAAA;IACpB,YAAY,EAAE,KAAK,EAAE,CAAA;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAA;IAC1C,UAAU,EAAE,yBAAyB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,CAAA;IAC5D,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB,GAAG,CACA;IACE,cAAc,EAAE,cAAc,CAAA;IAC9B,QAAQ,EAAE,aAAa,CAAA;IACvB,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;CAC5B,GACD;IACE,cAAc,CAAC,EAAE,SAAS,CAAA;IAC1B,QAAQ,EAAE,aAAa,CAAA;IACvB,IAAI,EAAE;QACJ,UAAU,EAAE,cAAc,CAAA;QAC1B,KAAK,EAAE,QAAQ,CAAA;KAChB,EAAE,CAAA;CACJ,CACJ,CAAA;AAED,eAAO,MAAM,gBAAgB,SAAU,oBAAoB,KAAG,MAAM,EA+NnE,CAAA"}
@@ -4,5 +4,5 @@ import type { ClientField, CollectionConfig, CollectionPreferences, Field } from
4
4
  * 1. If `defaultColumns` is set in the collection config, use those columns
5
5
  * 2. Otherwise take `useAtTitle, if set, and the next 3 fields that are not hidden or disabled
6
6
  */
7
- export declare const getInitialColumns: <T extends ClientField[] | Field[]>(fields: T, useAsTitle: CollectionConfig["admin"]["useAsTitle"], defaultColumns: CollectionConfig["admin"]["defaultColumns"]) => CollectionPreferences["columns"];
7
+ export declare const getInitialColumns: <T extends ClientField[] | Field[]>(fields: T, useAsTitle: CollectionConfig['admin']['useAsTitle'], defaultColumns: CollectionConfig['admin']['defaultColumns']) => CollectionPreferences['columns'];
8
8
  //# sourceMappingURL=getInitialColumns.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getInitialColumns.d.ts","sourceRoot":"","sources":["../../../src/providers/TableColumns/getInitialColumns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAiC1F;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,WAAW,EAAE,GAAG,KAAK,EAAE,EACjE,QAAQ,CAAC,EACT,YAAY,gBAAgB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,EACnD,gBAAgB,gBAAgB,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,KAC1D,qBAAqB,CAAC,SAAS,CAoBjC,CAAA"}
1
+ {"version":3,"file":"getInitialColumns.d.ts","sourceRoot":"","sources":["../../../src/providers/TableColumns/getInitialColumns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAiC1F;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAI,CAAC,SAAS,WAAW,EAAE,GAAG,KAAK,EAAE,UACzD,CAAC,cACG,gBAAgB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,kBACnC,gBAAgB,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,KAC1D,qBAAqB,CAAC,SAAS,CAoBjC,CAAA"}
@@ -1,5 +1,6 @@
1
1
  import React from 'react';
2
- export type Theme = 'dark' | 'light';
2
+ import { defaultTheme, type Theme } from './shared.js';
3
+ export { defaultTheme, type Theme };
3
4
  export type ThemeContext = {
4
5
  autoMode: boolean;
5
6
  highContrastMode: boolean;
@@ -11,7 +12,6 @@ export type ThemeContext = {
11
12
  }) => void;
12
13
  theme: Theme;
13
14
  };
14
- export declare const defaultTheme: Theme;
15
15
  /**
16
16
  * Provides theme context to its children.
17
17
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Theme/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAA+D,MAAM,OAAO,CAAA;AAInF,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,OAAO,CAAA;AAEpC,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,OAAO,CAAA;IACjB,gBAAgB,EAAE,OAAO,CAAA;IACzB,mBAAmB,EAAE,CAAC,cAAc,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAA;IACtF,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAA;IACzE,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AA4DD,eAAO,MAAM,YAAY,EAAE,KAAe,CAAA;AAE1C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC;IACnC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAgGA,CAAA;AAED,eAAO,MAAM,QAAQ,QAAO,YAA8C,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Theme/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAA+D,MAAM,OAAO,CAAA;AAGnF,OAAO,EAAE,YAAY,EAAE,KAAK,KAAK,EAAE,MAAM,aAAa,CAAA;AAEtD,OAAO,EAAE,YAAY,EAAE,KAAK,KAAK,EAAE,CAAA;AAEnC,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE,OAAO,CAAA;IACjB,gBAAgB,EAAE,OAAO,CAAA;IACzB,mBAAmB,EAAE,CAAC,cAAc,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAA;IACtF,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI,CAAA;IACzE,KAAK,EAAE,KAAK,CAAA;CACb,CAAA;AA4DD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC;IACnC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC1B,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAgGA,CAAA;AAED,eAAO,MAAM,QAAQ,QAAO,YAA8C,CAAA"}
@@ -4,6 +4,8 @@ import { c as _c } from "react/compiler-runtime";
4
4
  import { jsx as _jsx } from "react/jsx-runtime";
5
5
  import React, { createContext, use, useCallback, useEffect, useState } from 'react';
6
6
  import { useConfig } from '../Config/index.js';
7
+ import { defaultTheme } from './shared.js';
8
+ export { defaultTheme };
7
9
  const initialContext = {
8
10
  autoMode: true,
9
11
  highContrastMode: false,
@@ -37,7 +39,6 @@ const detectHighContrastMode = cookieKey => {
37
39
  }
38
40
  return isHighContrast;
39
41
  };
40
- export const defaultTheme = 'light';
41
42
  /**
42
43
  * Provides theme context to its children.
43
44
  *