@payloadcms/ui 4.0.0-beta.3 → 4.0.0-beta.5

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 (809) hide show
  1. package/dist/css/app.css +2 -2
  2. package/dist/css/colors.css +65 -0
  3. package/dist/elements/APIKeyInput/index.js +22 -23
  4. package/dist/elements/APIKeyInput/index.js.map +1 -1
  5. package/dist/elements/AddNewRelation/index.js +17 -19
  6. package/dist/elements/AddNewRelation/index.js.map +1 -1
  7. package/dist/elements/ArrayAction/index.js +39 -30
  8. package/dist/elements/ArrayAction/index.js.map +1 -1
  9. package/dist/elements/Autosave/index.js +234 -142
  10. package/dist/elements/Autosave/index.js.map +1 -1
  11. package/dist/elements/BulkUpload/ActionsBar/index.js.map +1 -1
  12. package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
  13. package/dist/elements/BulkUpload/AddingFilesView/index.js.map +1 -1
  14. package/dist/elements/BulkUpload/DiscardWithoutSaving/index.js.map +1 -1
  15. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  16. package/dist/elements/BulkUpload/EditMany/index.js +29 -21
  17. package/dist/elements/BulkUpload/EditMany/index.js.map +1 -1
  18. package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
  19. package/dist/elements/BulkUpload/index.js +63 -23
  20. package/dist/elements/BulkUpload/index.js.map +1 -1
  21. package/dist/elements/BulkUpload/useUploadCollectionOptions.js.map +1 -1
  22. package/dist/elements/Button/index.css +3 -3
  23. package/dist/elements/Button/index.d.ts.map +1 -1
  24. package/dist/elements/Button/index.js +2 -1
  25. package/dist/elements/Button/index.js.map +1 -1
  26. package/dist/elements/Button/types.d.ts +1 -0
  27. package/dist/elements/Button/types.d.ts.map +1 -1
  28. package/dist/elements/Button/types.js.map +1 -1
  29. package/dist/elements/CardGrid/index.css +0 -1
  30. package/dist/elements/Chip/index.js.map +1 -1
  31. package/dist/elements/ClipboardAction/ClipboardActionLabel.js.map +1 -1
  32. package/dist/elements/ClipboardAction/index.js +213 -88
  33. package/dist/elements/ClipboardAction/index.js.map +1 -1
  34. package/dist/elements/CloseModalOnRouteChange/index.js.map +1 -1
  35. package/dist/elements/CodeEditor/CodeEditor.d.ts.map +1 -1
  36. package/dist/elements/CodeEditor/CodeEditor.js +95 -56
  37. package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
  38. package/dist/elements/CollapseAllToggle/index.js +47 -32
  39. package/dist/elements/CollapseAllToggle/index.js.map +1 -1
  40. package/dist/elements/Collapsible/index.css +15 -4
  41. package/dist/elements/Collapsible/index.d.ts.map +1 -1
  42. package/dist/elements/Collapsible/index.js +46 -38
  43. package/dist/elements/Collapsible/index.js.map +1 -1
  44. package/dist/elements/Collapsible/provider.js +37 -14
  45. package/dist/elements/Collapsible/provider.js.map +1 -1
  46. package/dist/elements/ColumnSelection/Popup.css +4 -0
  47. package/dist/elements/ColumnSelection/Popup.js +10 -2
  48. package/dist/elements/ColumnSelection/Popup.js.map +1 -1
  49. package/dist/elements/ColumnSelection/index.js.map +1 -1
  50. package/dist/elements/CommandPalette/index.css +8 -0
  51. package/dist/elements/ConfirmationModal/index.d.ts +3 -0
  52. package/dist/elements/ConfirmationModal/index.d.ts.map +1 -1
  53. package/dist/elements/ConfirmationModal/index.js +2 -0
  54. package/dist/elements/ConfirmationModal/index.js.map +1 -1
  55. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  56. package/dist/elements/CopyToClipboard/index.js.map +1 -1
  57. package/dist/elements/CreateDocumentButton/index.js +45 -43
  58. package/dist/elements/CreateDocumentButton/index.js.map +1 -1
  59. package/dist/elements/DatePicker/index.css +5 -0
  60. package/dist/elements/DatePicker/useDatePickerKeyboard.js.map +1 -1
  61. package/dist/elements/DefaultListViewTabs/index.css +4 -0
  62. package/dist/elements/DefaultListViewTabs/index.js +47 -37
  63. package/dist/elements/DefaultListViewTabs/index.js.map +1 -1
  64. package/dist/elements/DelayedSpinner/index.js.map +1 -1
  65. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  66. package/dist/elements/DeleteDocument/index.js +1 -3
  67. package/dist/elements/DeleteDocument/index.js.map +1 -1
  68. package/dist/elements/Dialog/DialogCancel/index.js.map +1 -1
  69. package/dist/elements/Dialog/DialogConfirm/index.js.map +1 -1
  70. package/dist/elements/Dialog/DialogHeader/index.js.map +1 -1
  71. package/dist/elements/Dialog/DialogModal/index.js.map +1 -1
  72. package/dist/elements/DocumentCard/index.d.ts +2 -0
  73. package/dist/elements/DocumentCard/index.d.ts.map +1 -1
  74. package/dist/elements/DocumentCard/index.js +2 -0
  75. package/dist/elements/DocumentCard/index.js.map +1 -1
  76. package/dist/elements/DocumentControls/index.js +1 -1
  77. package/dist/elements/DocumentControls/index.js.map +1 -1
  78. package/dist/elements/DocumentDrawer/index.js.map +1 -1
  79. package/dist/elements/DocumentFields/index.js +125 -64
  80. package/dist/elements/DocumentFields/index.js.map +1 -1
  81. package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js.map +1 -1
  82. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.d.ts.map +1 -1
  83. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js +80 -34
  84. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js.map +1 -1
  85. package/dist/elements/DocumentHeader/Tabs/Tab/index.css +4 -0
  86. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js.map +1 -1
  87. package/dist/elements/DocumentLocked/index.d.ts.map +1 -1
  88. package/dist/elements/DocumentLocked/index.js +1 -0
  89. package/dist/elements/DocumentLocked/index.js.map +1 -1
  90. package/dist/elements/DocumentStaleData/index.js.map +1 -1
  91. package/dist/elements/DocumentTakeOver/index.js.map +1 -1
  92. package/dist/elements/DraggableSortable/DragOverlayPreview/index.js +2 -0
  93. package/dist/elements/DraggableSortable/DragOverlayPreview/index.js.map +1 -1
  94. package/dist/elements/DraggableSortable/DraggableSortableItem/index.d.ts.map +1 -1
  95. package/dist/elements/DraggableSortable/DraggableSortableItem/index.js +10 -7
  96. package/dist/elements/DraggableSortable/DraggableSortableItem/index.js.map +1 -1
  97. package/dist/elements/DraggableSortable/DraggableSortableItem/types.d.ts +2 -0
  98. package/dist/elements/DraggableSortable/DraggableSortableItem/types.d.ts.map +1 -1
  99. package/dist/elements/DraggableSortable/DraggableSortableItem/types.js.map +1 -1
  100. package/dist/elements/DraggableSortable/index.d.ts.map +1 -1
  101. package/dist/elements/DraggableSortable/index.js +104 -170
  102. package/dist/elements/DraggableSortable/index.js.map +1 -1
  103. package/dist/elements/DraggableSortable/types.d.ts +1 -0
  104. package/dist/elements/DraggableSortable/types.d.ts.map +1 -1
  105. package/dist/elements/DraggableSortable/types.js.map +1 -1
  106. package/dist/elements/DraggableSortable/useDraggableSortable/index.js.map +1 -1
  107. package/dist/elements/DraggableSortable/useRowAccessibility.d.ts +14 -0
  108. package/dist/elements/DraggableSortable/useRowAccessibility.d.ts.map +1 -0
  109. package/dist/elements/DraggableSortable/useRowAccessibility.js +99 -0
  110. package/dist/elements/DraggableSortable/useRowAccessibility.js.map +1 -0
  111. package/dist/elements/Drawer/index.js +138 -81
  112. package/dist/elements/Drawer/index.js.map +1 -1
  113. package/dist/elements/Drawer/useDrawerSlug.js.map +1 -1
  114. package/dist/elements/DrawerActionHeader/index.js.map +1 -1
  115. package/dist/elements/DrawerHeader/index.js.map +1 -1
  116. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +177 -62
  117. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
  118. package/dist/elements/EditMany/DrawerContent.js +1 -1
  119. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  120. package/dist/elements/EditMany/index.js.map +1 -1
  121. package/dist/elements/FieldDiffContainer/index.d.ts.map +1 -1
  122. package/dist/elements/FieldDiffContainer/index.js +7 -1
  123. package/dist/elements/FieldDiffContainer/index.js.map +1 -1
  124. package/dist/elements/FieldDiffLabel/index.d.ts +1 -0
  125. package/dist/elements/FieldDiffLabel/index.d.ts.map +1 -1
  126. package/dist/elements/FieldDiffLabel/index.js +2 -0
  127. package/dist/elements/FieldDiffLabel/index.js.map +1 -1
  128. package/dist/elements/FieldSelect/index.js +23 -14
  129. package/dist/elements/FieldSelect/index.js.map +1 -1
  130. package/dist/elements/FileDetails/DraggableFileDetails/index.js.map +1 -1
  131. package/dist/elements/FileDetails/FileMeta/index.js.map +1 -1
  132. package/dist/elements/FileManager/FilePreview/index.js.map +1 -1
  133. package/dist/elements/FileManager/index.js.map +1 -1
  134. package/dist/elements/FullscreenModal/index.js.map +1 -1
  135. package/dist/elements/GenerateConfirmation/index.js +21 -21
  136. package/dist/elements/GenerateConfirmation/index.js.map +1 -1
  137. package/dist/elements/GroupBy/Popup.js.map +1 -1
  138. package/dist/elements/GroupBy/index.js +120 -66
  139. package/dist/elements/GroupBy/index.js.map +1 -1
  140. package/dist/elements/HTMLDiff/colors.css +7 -0
  141. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js.map +1 -1
  142. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js +51 -42
  143. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js.map +1 -1
  144. package/dist/elements/Hierarchy/DocHeaderButton/index.js +1 -1
  145. package/dist/elements/Hierarchy/DocHeaderButton/index.js.map +1 -1
  146. package/dist/elements/Hierarchy/EditButton/index.js.map +1 -1
  147. package/dist/elements/Hierarchy/HydrateProvider/index.js.map +1 -1
  148. package/dist/elements/Hierarchy/Modal/Footer/index.js.map +1 -1
  149. package/dist/elements/Hierarchy/Search/HierarchySearchResultItem.js +25 -18
  150. package/dist/elements/Hierarchy/Search/HierarchySearchResultItem.js.map +1 -1
  151. package/dist/elements/Hierarchy/Search/HierarchySearchResults.js.map +1 -1
  152. package/dist/elements/Hierarchy/Search/index.js.map +1 -1
  153. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -1
  154. package/dist/elements/Hierarchy/Tree/TreeFocusContext.js.map +1 -1
  155. package/dist/elements/Hierarchy/Tree/index.d.ts.map +1 -1
  156. package/dist/elements/Hierarchy/Tree/index.js +10 -5
  157. package/dist/elements/Hierarchy/Tree/index.js.map +1 -1
  158. package/dist/elements/HierarchyTypeField/index.d.ts.map +1 -1
  159. package/dist/elements/HierarchyTypeField/index.js.map +1 -1
  160. package/dist/elements/HydrateAuthProvider/index.js.map +1 -1
  161. package/dist/elements/HydratePreferences/index.js.map +1 -1
  162. package/dist/elements/IDLabel/index.js.map +1 -1
  163. package/dist/elements/InputStepper/index.js.map +1 -1
  164. package/dist/elements/ItemsDrawer/ItemSearch/index.js.map +1 -1
  165. package/dist/elements/ItemsDrawer/index.js +186 -105
  166. package/dist/elements/ItemsDrawer/index.js.map +1 -1
  167. package/dist/elements/LLMInstructionsDescription/index.js.map +1 -1
  168. package/dist/elements/LLMInstructionsMenuItem/index.js.map +1 -1
  169. package/dist/elements/LayoutToggle/index.js.map +1 -1
  170. package/dist/elements/LeaveWithoutSaving/index.js.map +1 -1
  171. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js +1 -1
  172. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js.map +1 -1
  173. package/dist/elements/Link/index.js +1 -1
  174. package/dist/elements/Link/index.js.map +1 -1
  175. package/dist/elements/ListColumnSelectionButton/index.js.map +1 -1
  176. package/dist/elements/ListControls/index.js.map +1 -1
  177. package/dist/elements/ListDrawer/DrawerContent.js +1 -1
  178. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  179. package/dist/elements/ListDrawer/Provider.d.ts +3 -2
  180. package/dist/elements/ListDrawer/Provider.d.ts.map +1 -1
  181. package/dist/elements/ListDrawer/Provider.js.map +1 -1
  182. package/dist/elements/ListDrawer/index.js.map +1 -1
  183. package/dist/elements/ListGroupByButton/index.js.map +1 -1
  184. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js.map +1 -1
  185. package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerConfirmSelectionButton.js.map +1 -1
  186. package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerCreateNewDocButton.js.map +1 -1
  187. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
  188. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocButton.js +11 -12
  189. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocButton.js.map +1 -1
  190. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +1 -1
  191. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
  192. package/dist/elements/ListSelection/index.js.map +1 -1
  193. package/dist/elements/ListWhereBuilder/index.js.map +1 -1
  194. package/dist/elements/LivePreview/DeviceContainer/index.js.map +1 -1
  195. package/dist/elements/LivePreview/Toolbar/Controls/index.js.map +1 -1
  196. package/dist/elements/LivePreview/Toolbar/SizeInput/index.js.map +1 -1
  197. package/dist/elements/LivePreview/Toolbar/index.js.map +1 -1
  198. package/dist/elements/LivePreview/ToolbarArea/index.js.map +1 -1
  199. package/dist/elements/LivePreview/Window/index.d.ts.map +1 -1
  200. package/dist/elements/LivePreview/Window/index.js +6 -1
  201. package/dist/elements/LivePreview/Window/index.js.map +1 -1
  202. package/dist/elements/LoadMoreRow/index.js.map +1 -1
  203. package/dist/elements/Loading/index.js +62 -18
  204. package/dist/elements/Loading/index.js.map +1 -1
  205. package/dist/elements/LoadingOverlay/index.js +93 -49
  206. package/dist/elements/LoadingOverlay/index.js.map +1 -1
  207. package/dist/elements/Localizer/index.js +133 -108
  208. package/dist/elements/Localizer/index.js.map +1 -1
  209. package/dist/elements/Locked/index.js +54 -37
  210. package/dist/elements/Locked/index.js.map +1 -1
  211. package/dist/elements/Logout/index.js.map +1 -1
  212. package/dist/elements/MiniCarousel/index.js +102 -38
  213. package/dist/elements/MiniCarousel/index.js.map +1 -1
  214. package/dist/elements/Modal/index.d.ts.map +1 -1
  215. package/dist/elements/Modal/index.js +13 -1
  216. package/dist/elements/Modal/index.js.map +1 -1
  217. package/dist/elements/Nav/NavSidebarToggle/index.js.map +1 -1
  218. package/dist/elements/Nav/NavWrapper/index.js +13 -14
  219. package/dist/elements/Nav/NavWrapper/index.js.map +1 -1
  220. package/dist/elements/Nav/SettingsMenuButton/index.js.map +1 -1
  221. package/dist/elements/Nav/SidebarTabs/TabError/index.js.map +1 -1
  222. package/dist/elements/Nav/SidebarTabs/index.client.d.ts.map +1 -1
  223. package/dist/elements/Nav/SidebarTabs/index.client.js +31 -20
  224. package/dist/elements/Nav/SidebarTabs/index.client.js.map +1 -1
  225. package/dist/elements/Nav/index.client.js.map +1 -1
  226. package/dist/elements/Nav/index.css +5 -0
  227. package/dist/elements/NavGroup/index.css +27 -3
  228. package/dist/elements/NavGroup/index.js +31 -38
  229. package/dist/elements/NavGroup/index.js.map +1 -1
  230. package/dist/elements/NoListResults/index.css +1 -0
  231. package/dist/elements/NoListResults/index.js +1 -1
  232. package/dist/elements/NoListResults/index.js.map +1 -1
  233. package/dist/elements/PageControls/GroupByPageControls.js.map +1 -1
  234. package/dist/elements/PageControls/index.js.map +1 -1
  235. package/dist/elements/Pagination/ClickableArrow/index.js +10 -11
  236. package/dist/elements/Pagination/ClickableArrow/index.js.map +1 -1
  237. package/dist/elements/Pagination/SimplePagination/index.js.map +1 -1
  238. package/dist/elements/Pagination/index.js +36 -37
  239. package/dist/elements/Pagination/index.js.map +1 -1
  240. package/dist/elements/PerPage/index.js.map +1 -1
  241. package/dist/elements/Pill/index.js.map +1 -1
  242. package/dist/elements/Popup/SubmenuScope.d.ts +3 -5
  243. package/dist/elements/Popup/SubmenuScope.d.ts.map +1 -1
  244. package/dist/elements/Popup/SubmenuScope.js +10 -54
  245. package/dist/elements/Popup/SubmenuScope.js.map +1 -1
  246. package/dist/elements/Popup/index.css +15 -0
  247. package/dist/elements/Popup/index.d.ts.map +1 -1
  248. package/dist/elements/Popup/index.js +88 -33
  249. package/dist/elements/Popup/index.js.map +1 -1
  250. package/dist/elements/Popup/useSubmenuPointerIntent.d.ts +16 -4
  251. package/dist/elements/Popup/useSubmenuPointerIntent.d.ts.map +1 -1
  252. package/dist/elements/Popup/useSubmenuPointerIntent.js +68 -27
  253. package/dist/elements/Popup/useSubmenuPointerIntent.js.map +1 -1
  254. package/dist/elements/PreviewButton/index.js.map +1 -1
  255. package/dist/elements/PreviewSizes/index.js +141 -70
  256. package/dist/elements/PreviewSizes/index.js.map +1 -1
  257. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
  258. package/dist/elements/PublishButton/ScheduleDrawer/index.js +16 -8
  259. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  260. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  261. package/dist/elements/PublishButton/index.js +1 -0
  262. package/dist/elements/PublishButton/index.js.map +1 -1
  263. package/dist/elements/PublishMany/DrawerContent.js +1 -1
  264. package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
  265. package/dist/elements/PublishMany/index.js +32 -24
  266. package/dist/elements/PublishMany/index.js.map +1 -1
  267. package/dist/elements/QueryPresets/fields/ColumnsField/index.js +194 -100
  268. package/dist/elements/QueryPresets/fields/ColumnsField/index.js.map +1 -1
  269. package/dist/elements/QueryPresets/fields/GroupByField/index.js +78 -29
  270. package/dist/elements/QueryPresets/fields/GroupByField/index.js.map +1 -1
  271. package/dist/elements/QueryPresets/fields/Heading/index.js.map +1 -1
  272. package/dist/elements/QueryPresets/fields/WhereField/index.js.map +1 -1
  273. package/dist/elements/ReactSelect/ClearIndicator/index.js.map +1 -1
  274. package/dist/elements/ReactSelect/DefaultMenuPortal.d.ts.map +1 -1
  275. package/dist/elements/ReactSelect/DefaultMenuPortal.js.map +1 -1
  276. package/dist/elements/ReactSelect/MultiValue/index.js +19 -9
  277. package/dist/elements/ReactSelect/MultiValue/index.js.map +1 -1
  278. package/dist/elements/ReactSelect/MultiValueLabel/index.js.map +1 -1
  279. package/dist/elements/ReactSelect/MultiValueRemove/index.js +38 -29
  280. package/dist/elements/ReactSelect/MultiValueRemove/index.js.map +1 -1
  281. package/dist/elements/ReactSelect/ValueContainer/index.js.map +1 -1
  282. package/dist/elements/ReactSelect/index.css +4 -0
  283. package/dist/elements/RelationshipTable/Pagination.js.map +1 -1
  284. package/dist/elements/RelationshipTable/cells/DrawerLink/index.js.map +1 -1
  285. package/dist/elements/RelationshipTable/index.js +1 -1
  286. package/dist/elements/RelationshipTable/index.js.map +1 -1
  287. package/dist/elements/RenderIfInViewport/index.js.map +1 -1
  288. package/dist/elements/RenderTitle/index.js.map +1 -1
  289. package/dist/elements/RestoreMany/index.js +1 -1
  290. package/dist/elements/RestoreMany/index.js.map +1 -1
  291. package/dist/elements/SchedulePublishButton/index.js +111 -39
  292. package/dist/elements/SchedulePublishButton/index.js.map +1 -1
  293. package/dist/elements/Search/SearchInput/index.js.map +1 -1
  294. package/dist/elements/SegmentedControl/index.js.map +1 -1
  295. package/dist/elements/SelectAll/index.js.map +1 -1
  296. package/dist/elements/SelectRow/index.js +31 -21
  297. package/dist/elements/SelectRow/index.js.map +1 -1
  298. package/dist/elements/ShimmerEffect/index.js.map +1 -1
  299. package/dist/elements/SidebarToggle/index.js.map +1 -1
  300. package/dist/elements/SkipToContent/index.js.map +1 -1
  301. package/dist/elements/SortHeader/index.js.map +1 -1
  302. package/dist/elements/SortRow/index.js.map +1 -1
  303. package/dist/elements/Spinner/index.js.map +1 -1
  304. package/dist/elements/StayLoggedIn/index.js.map +1 -1
  305. package/dist/elements/StepNav/SetStepNav.js.map +1 -1
  306. package/dist/elements/StepNav/context.js.map +1 -1
  307. package/dist/elements/Switch/index.css +2 -2
  308. package/dist/elements/Switch/index.js.map +1 -1
  309. package/dist/elements/Table/DefaultCell/fields/Array/index.js +28 -9
  310. package/dist/elements/Table/DefaultCell/fields/Array/index.js.map +1 -1
  311. package/dist/elements/Table/DefaultCell/fields/Blocks/index.js +80 -27
  312. package/dist/elements/Table/DefaultCell/fields/Blocks/index.js.map +1 -1
  313. package/dist/elements/Table/DefaultCell/fields/Checkbox/index.js +9 -10
  314. package/dist/elements/Table/DefaultCell/fields/Checkbox/index.js.map +1 -1
  315. package/dist/elements/Table/DefaultCell/fields/Date/index.js.map +1 -1
  316. package/dist/elements/Table/DefaultCell/fields/JSON/index.d.ts.map +1 -1
  317. package/dist/elements/Table/DefaultCell/fields/JSON/index.js +21 -32
  318. package/dist/elements/Table/DefaultCell/fields/JSON/index.js.map +1 -1
  319. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
  320. package/dist/elements/Table/DefaultCell/fields/Select/index.js.map +1 -1
  321. package/dist/elements/Table/DefaultCell/fields/Status/index.js.map +1 -1
  322. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  323. package/dist/elements/Table/GridNavigation/useGridNavigation.js.map +1 -1
  324. package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
  325. package/dist/elements/Table/TableIdentity.js +32 -16
  326. package/dist/elements/Table/TableIdentity.js.map +1 -1
  327. package/dist/elements/Table/useAriaSort.js.map +1 -1
  328. package/dist/elements/Thumbnail/index.js +133 -53
  329. package/dist/elements/Thumbnail/index.js.map +1 -1
  330. package/dist/elements/ThumbnailCard/index.js.map +1 -1
  331. package/dist/elements/TimezonePicker/index.d.ts.map +1 -1
  332. package/dist/elements/TimezonePicker/index.js +113 -54
  333. package/dist/elements/TimezonePicker/index.js.map +1 -1
  334. package/dist/elements/Toasts/fieldErrors.js.map +1 -1
  335. package/dist/elements/Tooltip/index.js.map +1 -1
  336. package/dist/elements/Translation/index.js +1 -1
  337. package/dist/elements/Translation/index.js.map +1 -1
  338. package/dist/elements/TrashBanner/index.js.map +1 -1
  339. package/dist/elements/UnpublishMany/DrawerContent.js +1 -1
  340. package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
  341. package/dist/elements/UnpublishMany/index.js +32 -24
  342. package/dist/elements/UnpublishMany/index.js.map +1 -1
  343. package/dist/elements/Upload/UploadFromURLModal/index.js.map +1 -1
  344. package/dist/elements/Upload/index.js.map +1 -1
  345. package/dist/elements/Upload/usePasteFromClipboard.js.map +1 -1
  346. package/dist/elements/Upload/useUploadFromUrl.js.map +1 -1
  347. package/dist/elements/UserMenu/LanguageMenu/index.js.map +1 -1
  348. package/dist/elements/UserMenu/SettingsMenu/index.js.map +1 -1
  349. package/dist/elements/UserMenu/ThemeMenu/index.js.map +1 -1
  350. package/dist/elements/UserMenu/index.d.ts.map +1 -1
  351. package/dist/elements/UserMenu/index.js +2 -1
  352. package/dist/elements/UserMenu/index.js.map +1 -1
  353. package/dist/elements/ViewDescription/index.js.map +1 -1
  354. package/dist/elements/WhereBuilder/Condition/Date/index.js.map +1 -1
  355. package/dist/elements/WhereBuilder/Condition/Number/index.js.map +1 -1
  356. package/dist/elements/WhereBuilder/Condition/Select/index.js.map +1 -1
  357. package/dist/elements/WhereBuilder/Condition/Text/index.js.map +1 -1
  358. package/dist/elements/WhereBuilder/Condition/index.d.ts.map +1 -1
  359. package/dist/elements/WhereBuilder/Condition/index.js +1 -0
  360. package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
  361. package/dist/exports/client/{CodeEditor-I6PL55BF.js → CodeEditor-23ZGBN6S.js} +2 -2
  362. package/dist/exports/client/{DatePicker-RFCB5VGD.js → DatePicker-AZBZPMY6.js} +2 -2
  363. package/dist/exports/client/chunk-EXVR6BZK.js +27 -0
  364. package/dist/exports/client/chunk-EXVR6BZK.js.map +7 -0
  365. package/dist/exports/client/{chunk-AVJIZPR3.js → chunk-SMBFG6XU.js} +1 -1
  366. package/dist/exports/client/{chunk-AVJIZPR3.js.map → chunk-SMBFG6XU.js.map} +1 -1
  367. package/dist/exports/client/{chunk-O2RR6XEH.js → chunk-ZP2PB6M4.js} +2 -2
  368. package/dist/exports/client/{chunk-O2RR6XEH.js.map → chunk-ZP2PB6M4.js.map} +1 -1
  369. package/dist/exports/client/index.d.ts +2 -2
  370. package/dist/exports/client/index.d.ts.map +1 -1
  371. package/dist/exports/client/index.js +27 -27
  372. package/dist/exports/client/index.js.map +4 -4
  373. package/dist/exports/rsc/index.d.ts +1 -1
  374. package/dist/exports/rsc/index.d.ts.map +1 -1
  375. package/dist/exports/rsc/index.js +1 -1
  376. package/dist/exports/rsc/index.js.map +1 -1
  377. package/dist/exports/shared/index.js.map +2 -2
  378. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  379. package/dist/fields/Array/ArrayRow.js +207 -99
  380. package/dist/fields/Array/ArrayRow.js.map +1 -1
  381. package/dist/fields/Array/index.d.ts.map +1 -1
  382. package/dist/fields/Array/index.js +521 -308
  383. package/dist/fields/Array/index.js.map +1 -1
  384. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  385. package/dist/fields/Blocks/BlockRow.js +224 -136
  386. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  387. package/dist/fields/Blocks/BlockSelector/BlockSearch/index.js.map +1 -1
  388. package/dist/fields/Blocks/BlockSelector/index.js +114 -74
  389. package/dist/fields/Blocks/BlockSelector/index.js.map +1 -1
  390. package/dist/fields/Blocks/BlocksDrawer/index.js.map +1 -1
  391. package/dist/fields/Blocks/RowActions.js +75 -55
  392. package/dist/fields/Blocks/RowActions.js.map +1 -1
  393. package/dist/fields/Blocks/SectionTitle/index.css +4 -0
  394. package/dist/fields/Blocks/SectionTitle/index.js.map +1 -1
  395. package/dist/fields/Blocks/index.d.ts.map +1 -1
  396. package/dist/fields/Blocks/index.js +1 -0
  397. package/dist/fields/Blocks/index.js.map +1 -1
  398. package/dist/fields/Checkbox/index.css +3 -3
  399. package/dist/fields/Checkbox/index.js.map +1 -1
  400. package/dist/fields/Code/index.d.ts.map +1 -1
  401. package/dist/fields/Code/index.js +3 -2
  402. package/dist/fields/Code/index.js.map +1 -1
  403. package/dist/fields/Collapsible/index.js +114 -73
  404. package/dist/fields/Collapsible/index.js.map +1 -1
  405. package/dist/fields/ConfirmPassword/index.js.map +1 -1
  406. package/dist/fields/DateTime/index.js +215 -121
  407. package/dist/fields/DateTime/index.js.map +1 -1
  408. package/dist/fields/Email/index.d.ts.map +1 -1
  409. package/dist/fields/Email/index.js.map +1 -1
  410. package/dist/fields/FieldDescription/index.js +29 -21
  411. package/dist/fields/FieldDescription/index.js.map +1 -1
  412. package/dist/fields/FieldError/index.js.map +1 -1
  413. package/dist/fields/FieldLabel/index.js.map +1 -1
  414. package/dist/fields/Group/index.js +75 -46
  415. package/dist/fields/Group/index.js.map +1 -1
  416. package/dist/fields/Hidden/index.js +23 -15
  417. package/dist/fields/Hidden/index.js.map +1 -1
  418. package/dist/fields/JSON/index.d.ts.map +1 -1
  419. package/dist/fields/JSON/index.js +3 -2
  420. package/dist/fields/JSON/index.js.map +1 -1
  421. package/dist/fields/Number/Input.js.map +1 -1
  422. package/dist/fields/Number/index.d.ts.map +1 -1
  423. package/dist/fields/Number/index.js.map +1 -1
  424. package/dist/fields/Password/index.d.ts.map +1 -1
  425. package/dist/fields/Password/index.js.map +1 -1
  426. package/dist/fields/Password/input.js +46 -27
  427. package/dist/fields/Password/input.js.map +1 -1
  428. package/dist/fields/RadioGroup/Radio/index.js +35 -35
  429. package/dist/fields/RadioGroup/Radio/index.js.map +1 -1
  430. package/dist/fields/RadioGroup/index.d.ts.map +1 -1
  431. package/dist/fields/RadioGroup/index.js.map +1 -1
  432. package/dist/fields/Relationship/Input.js +14 -14
  433. package/dist/fields/Relationship/Input.js.map +1 -1
  434. package/dist/fields/Relationship/index.js +216 -111
  435. package/dist/fields/Relationship/index.js.map +1 -1
  436. package/dist/fields/Relationship/select-components/MultiValueLabel/index.js.map +1 -1
  437. package/dist/fields/Relationship/select-components/SingleValue/index.js +9 -11
  438. package/dist/fields/Relationship/select-components/SingleValue/index.js.map +1 -1
  439. package/dist/fields/Select/Input.js +26 -10
  440. package/dist/fields/Select/Input.js.map +1 -1
  441. package/dist/fields/Select/index.d.ts.map +1 -1
  442. package/dist/fields/Select/index.js +158 -77
  443. package/dist/fields/Select/index.js.map +1 -1
  444. package/dist/fields/Tabs/Tab/index.js.map +1 -1
  445. package/dist/fields/Tabs/index.css +11 -15
  446. package/dist/fields/Tabs/index.js +120 -112
  447. package/dist/fields/Tabs/index.js.map +1 -1
  448. package/dist/fields/Text/Input.d.ts.map +1 -1
  449. package/dist/fields/Text/Input.js +2 -2
  450. package/dist/fields/Text/Input.js.map +1 -1
  451. package/dist/fields/Text/index.js +172 -95
  452. package/dist/fields/Text/index.js.map +1 -1
  453. package/dist/fields/Text/types.d.ts +2 -1
  454. package/dist/fields/Text/types.d.ts.map +1 -1
  455. package/dist/fields/Text/types.js.map +1 -1
  456. package/dist/fields/Textarea/Input.js +58 -28
  457. package/dist/fields/Textarea/Input.js.map +1 -1
  458. package/dist/fields/Textarea/index.js +97 -55
  459. package/dist/fields/Textarea/index.js.map +1 -1
  460. package/dist/fields/Upload/HasMany/index.js.map +1 -1
  461. package/dist/fields/Upload/Input.d.ts.map +1 -1
  462. package/dist/fields/Upload/Input.js +16 -7
  463. package/dist/fields/Upload/Input.js.map +1 -1
  464. package/dist/fields/Upload/RelationshipContent/index.js.map +1 -1
  465. package/dist/fields/Upload/index.css +9 -0
  466. package/dist/fields/Upload/index.js +101 -63
  467. package/dist/fields/Upload/index.js.map +1 -1
  468. package/dist/fields/shared/useRowFocus.js.map +1 -1
  469. package/dist/forms/Form/context.js.map +1 -1
  470. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  471. package/dist/forms/Form/fieldReducer.js.map +1 -1
  472. package/dist/forms/Form/index.d.ts.map +1 -1
  473. package/dist/forms/Form/index.js +27 -8
  474. package/dist/forms/Form/index.js.map +1 -1
  475. package/dist/forms/Form/types.d.ts +1 -1
  476. package/dist/forms/Form/types.d.ts.map +1 -1
  477. package/dist/forms/Form/types.js.map +1 -1
  478. package/dist/forms/NullifyField/index.js.map +1 -1
  479. package/dist/forms/RenderFields/RenderField.js.map +1 -1
  480. package/dist/forms/RenderFields/context.js +3 -2
  481. package/dist/forms/RenderFields/context.js.map +1 -1
  482. package/dist/forms/RenderFields/index.js.map +1 -1
  483. package/dist/forms/RowLabel/Context/index.d.ts.map +1 -1
  484. package/dist/forms/RowLabel/Context/index.js +58 -18
  485. package/dist/forms/RowLabel/Context/index.js.map +1 -1
  486. package/dist/forms/Submit/index.js +12 -13
  487. package/dist/forms/Submit/index.js.map +1 -1
  488. package/dist/forms/WatchChildErrors/index.js.map +1 -1
  489. package/dist/forms/useField/index.js +1 -1
  490. package/dist/forms/useField/index.js.map +1 -1
  491. package/dist/forms/withCondition/WatchCondition.js.map +1 -1
  492. package/dist/graphics/Account/Gravatar/index.js +32 -17
  493. package/dist/graphics/Account/Gravatar/index.js.map +1 -1
  494. package/dist/graphics/Account/index.js +27 -18
  495. package/dist/graphics/Account/index.js.map +1 -1
  496. package/dist/hooks/useControllableState.js.map +1 -1
  497. package/dist/hooks/useDebounce.js.map +1 -1
  498. package/dist/hooks/useDebouncedCallback.js.map +1 -1
  499. package/dist/hooks/useDebouncedEffect.js.map +1 -1
  500. package/dist/hooks/useDelay.js.map +1 -1
  501. package/dist/hooks/useDelayedRender.js.map +1 -1
  502. package/dist/hooks/useElementHeightVariable.js.map +1 -1
  503. package/dist/hooks/useHotkey.js.map +1 -1
  504. package/dist/hooks/useIntersect.js.map +1 -1
  505. package/dist/hooks/usePayloadAPI.js.map +1 -1
  506. package/dist/hooks/usePointerSafeArea.d.ts +29 -0
  507. package/dist/hooks/usePointerSafeArea.d.ts.map +1 -0
  508. package/dist/hooks/usePointerSafeArea.js +232 -0
  509. package/dist/hooks/usePointerSafeArea.js.map +1 -0
  510. package/dist/hooks/usePopupWindow.js.map +1 -1
  511. package/dist/hooks/useRelatedCollections.js.map +1 -1
  512. package/dist/hooks/useResize.js.map +1 -1
  513. package/dist/hooks/useThrottledEffect.d.ts.map +1 -1
  514. package/dist/hooks/useThrottledEffect.js +21 -24
  515. package/dist/hooks/useThrottledEffect.js.map +1 -1
  516. package/dist/hooks/useUseAsTitle.js.map +1 -1
  517. package/dist/layouts/Root/RootProviders.d.ts.map +1 -1
  518. package/dist/layouts/Root/RootProviders.js +31 -28
  519. package/dist/layouts/Root/RootProviders.js.map +1 -1
  520. package/dist/providers/Actions/index.js.map +1 -1
  521. package/dist/providers/Auth/AuthSessionDebug/index.js.map +1 -1
  522. package/dist/providers/Auth/index.js +2 -2
  523. package/dist/providers/Auth/index.js.map +1 -1
  524. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js.map +1 -1
  525. package/dist/providers/ClientFunction/index.js.map +1 -1
  526. package/dist/providers/Config/index.js +65 -32
  527. package/dist/providers/Config/index.js.map +1 -1
  528. package/dist/providers/DocumentEvents/index.js.map +1 -1
  529. package/dist/providers/EditDepth/index.js.map +1 -1
  530. package/dist/providers/Embed/index.js.map +1 -1
  531. package/dist/providers/EntityVisibility/index.js.map +1 -1
  532. package/dist/providers/ListQuery/index.d.ts.map +1 -1
  533. package/dist/providers/ListQuery/index.js +5 -5
  534. package/dist/providers/ListQuery/index.js.map +1 -1
  535. package/dist/providers/ListQuery/mergeQuery.d.ts.map +1 -1
  536. package/dist/providers/ListQuery/mergeQuery.js.map +1 -1
  537. package/dist/providers/ListQuery/sanitizeQuery.js.map +1 -1
  538. package/dist/providers/ListQuery/types.d.ts +6 -1
  539. package/dist/providers/ListQuery/types.d.ts.map +1 -1
  540. package/dist/providers/ListQuery/types.js.map +1 -1
  541. package/dist/providers/ModalAccessibility/index.js.map +1 -1
  542. package/dist/providers/ModalFocus/index.d.ts +15 -0
  543. package/dist/providers/ModalFocus/index.d.ts.map +1 -0
  544. package/dist/providers/ModalFocus/index.js +70 -0
  545. package/dist/providers/ModalFocus/index.js.map +1 -0
  546. package/dist/providers/RouteCache/index.js.map +1 -1
  547. package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -1
  548. package/dist/providers/RouteTransition/index.d.ts +3 -2
  549. package/dist/providers/RouteTransition/index.d.ts.map +1 -1
  550. package/dist/providers/RouteTransition/index.js +78 -105
  551. package/dist/providers/RouteTransition/index.js.map +1 -1
  552. package/dist/providers/RouterAdapter/index.js.map +1 -1
  553. package/dist/providers/TableColumns/RenderDefaultCell/index.js.map +1 -1
  554. package/dist/providers/TableColumns/index.d.ts.map +1 -1
  555. package/dist/providers/TableColumns/index.js +18 -35
  556. package/dist/providers/TableColumns/index.js.map +1 -1
  557. package/dist/providers/Theme/index.js.map +1 -1
  558. package/dist/providers/ToastContainer/index.js.map +1 -1
  559. package/dist/providers/Translation/index.js.map +1 -1
  560. package/dist/providers/UploadControls/index.js.map +1 -1
  561. package/dist/providers/UploadEdits/index.js.map +1 -1
  562. package/dist/providers/UploadHandlers/index.js.map +1 -1
  563. package/dist/styles.css +66 -1
  564. package/dist/templates/Default/Wrapper/index.js.map +1 -1
  565. package/dist/utilities/formatDocTitle/formatLexicalDocTitle.js.map +1 -1
  566. package/dist/utilities/groupNavItems.js.map +1 -1
  567. package/dist/utilities/hasSavePermission.js.map +1 -1
  568. package/dist/utilities/serverFunctionRegistry.js +2 -2
  569. package/dist/utilities/serverFunctionRegistry.js.map +1 -1
  570. package/dist/views/API/LocaleSelector/index.js.map +1 -1
  571. package/dist/views/API/index.client.d.ts.map +1 -1
  572. package/dist/views/API/index.client.js +1 -0
  573. package/dist/views/API/index.client.js.map +1 -1
  574. package/dist/views/Account/ResetPreferences/index.js +17 -17
  575. package/dist/views/Account/ResetPreferences/index.js.map +1 -1
  576. package/dist/views/Account/Settings/LanguageSelector.js.map +1 -1
  577. package/dist/views/Account/ToggleHighContrast/index.js.map +1 -1
  578. package/dist/views/Account/ToggleTheme/index.js +106 -27
  579. package/dist/views/Account/ToggleTheme/index.js.map +1 -1
  580. package/dist/views/Account/index.client.js.map +1 -1
  581. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
  582. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js.map +1 -1
  583. package/dist/views/Dashboard/Default/ModularDashboard/index.client.d.ts.map +1 -1
  584. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +373 -151
  585. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
  586. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js.map +1 -1
  587. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.d.ts.map +1 -1
  588. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js +2 -1
  589. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js.map +1 -1
  590. package/dist/views/Dashboard/Default/ModularDashboard/utils/localeUtils.js.map +1 -1
  591. package/dist/views/Document/generateEditViewMetadata.js.map +1 -1
  592. package/dist/views/Document/index.js +1 -1
  593. package/dist/views/Document/index.js.map +1 -1
  594. package/dist/views/Document/renderDocumentSlots.js.map +1 -1
  595. package/dist/views/Edit/Auth/APIKeyGenerationModal.js.map +1 -1
  596. package/dist/views/Edit/Auth/index.d.ts.map +1 -1
  597. package/dist/views/Edit/Auth/index.js +13 -11
  598. package/dist/views/Edit/Auth/index.js.map +1 -1
  599. package/dist/views/Edit/SetDocumentStepNav/index.js.map +1 -1
  600. package/dist/views/Edit/SetDocumentTitle/index.js.map +1 -1
  601. package/dist/views/Edit/index.d.ts.map +1 -1
  602. package/dist/views/Edit/index.js +27 -16
  603. package/dist/views/Edit/index.js.map +1 -1
  604. package/dist/views/ForgotPassword/ForgotPasswordForm/index.d.ts.map +1 -1
  605. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +45 -41
  606. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -1
  607. package/dist/views/HierarchyList/DocumentListSelection/index.js.map +1 -1
  608. package/dist/views/HierarchyList/HierarchyListHeader/index.js.map +1 -1
  609. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js.map +1 -1
  610. package/dist/views/HierarchyList/HierarchyTable/DateCell.js +8 -9
  611. package/dist/views/HierarchyList/HierarchyTable/DateCell.js.map +1 -1
  612. package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.js.map +1 -1
  613. package/dist/views/HierarchyList/TypeFilter/index.js.map +1 -1
  614. package/dist/views/HierarchyList/index.js +2 -2
  615. package/dist/views/HierarchyList/index.js.map +1 -1
  616. package/dist/views/List/DocumentGrid/index.js.map +1 -1
  617. package/dist/views/List/GroupedDocumentGrid/index.js.map +1 -1
  618. package/dist/views/List/ListSelection/index.js.map +1 -1
  619. package/dist/views/Login/LoginField/index.js.map +1 -1
  620. package/dist/views/Login/LoginForm/index.js.map +1 -1
  621. package/dist/views/Logout/LogoutClient.js.map +1 -1
  622. package/dist/views/Logout/index.js.map +1 -1
  623. package/dist/views/NotFound/index.client.js.map +1 -1
  624. package/dist/views/ResetPassword/ResetPasswordForm/index.js.map +1 -1
  625. package/dist/views/Verify/index.client.js.map +1 -1
  626. package/dist/views/Version/Default/SetStepNav.js.map +1 -1
  627. package/dist/views/Version/Default/index.js +321 -181
  628. package/dist/views/Version/Default/index.js.map +1 -1
  629. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js.map +1 -1
  630. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.js.map +1 -1
  631. package/dist/views/Version/RenderFieldsToDiff/fields/Checkbox/index.js +9 -11
  632. package/dist/views/Version/RenderFieldsToDiff/fields/Checkbox/index.js.map +1 -1
  633. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js.map +1 -1
  634. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js +41 -29
  635. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js.map +1 -1
  636. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js.map +1 -1
  637. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
  638. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js +19 -19
  639. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -1
  640. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
  641. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
  642. package/dist/views/Version/Restore/index.d.ts.map +1 -1
  643. package/dist/views/Version/Restore/index.js +176 -77
  644. package/dist/views/Version/Restore/index.js.map +1 -1
  645. package/dist/views/Version/SelectComparison/VersionDrawer/CreatedAtCell.js.map +1 -1
  646. package/dist/views/Version/SelectComparison/VersionDrawer/index.js.map +1 -1
  647. package/dist/views/Version/SelectComparison/index.js +113 -33
  648. package/dist/views/Version/SelectComparison/index.js.map +1 -1
  649. package/dist/views/Version/SelectLocales/index.js.map +1 -1
  650. package/dist/views/Version/index.js.map +1 -1
  651. package/dist/views/Versions/VersionPillLabel/VersionPillLabel.js.map +1 -1
  652. package/dist/views/Versions/cells/AutosaveCell/index.js.map +1 -1
  653. package/dist/views/Versions/cells/CreatedAt/index.js.map +1 -1
  654. package/dist/views/Versions/cells/VersionDrawerCreatedAtCell/index.js.map +1 -1
  655. package/dist/views/Versions/index.client.js +9 -11
  656. package/dist/views/Versions/index.client.js.map +1 -1
  657. package/dist/views/Versions/index.js +2 -2
  658. package/dist/views/Versions/index.js.map +1 -1
  659. package/dist/widgets/Activity/Tabs/PinnedDocuments/PinDocumentPicker/index.css +28 -0
  660. package/dist/widgets/Activity/Tabs/PinnedDocuments/PinDocumentPicker/index.d.ts +16 -0
  661. package/dist/widgets/Activity/Tabs/PinnedDocuments/PinDocumentPicker/index.d.ts.map +1 -0
  662. package/dist/widgets/Activity/Tabs/PinnedDocuments/PinDocumentPicker/index.js +98 -0
  663. package/dist/widgets/Activity/Tabs/PinnedDocuments/PinDocumentPicker/index.js.map +1 -0
  664. package/dist/widgets/Activity/Tabs/PinnedDocuments/index.css +70 -0
  665. package/dist/widgets/Activity/Tabs/PinnedDocuments/index.d.ts +13 -0
  666. package/dist/widgets/Activity/Tabs/PinnedDocuments/index.d.ts.map +1 -0
  667. package/dist/widgets/Activity/Tabs/PinnedDocuments/index.js +81 -0
  668. package/dist/widgets/Activity/Tabs/PinnedDocuments/index.js.map +1 -0
  669. package/dist/widgets/{RecentlyViewed/pinnedPreferences.d.ts → Activity/Tabs/PinnedDocuments/preferences.d.ts} +6 -9
  670. package/dist/widgets/Activity/Tabs/PinnedDocuments/preferences.d.ts.map +1 -0
  671. package/dist/widgets/{RecentlyViewed/pinnedPreferences.js → Activity/Tabs/PinnedDocuments/preferences.js} +3 -22
  672. package/dist/widgets/Activity/Tabs/PinnedDocuments/preferences.js.map +1 -0
  673. package/dist/widgets/Activity/Tabs/PinnedDocuments/usePinnedDocuments.d.ts +39 -0
  674. package/dist/widgets/Activity/Tabs/PinnedDocuments/usePinnedDocuments.d.ts.map +1 -0
  675. package/dist/widgets/Activity/Tabs/PinnedDocuments/usePinnedDocuments.js +83 -0
  676. package/dist/widgets/Activity/Tabs/PinnedDocuments/usePinnedDocuments.js.map +1 -0
  677. package/dist/widgets/Activity/Tabs/RecentDocuments/index.d.ts +9 -0
  678. package/dist/widgets/Activity/Tabs/RecentDocuments/index.d.ts.map +1 -0
  679. package/dist/widgets/Activity/Tabs/RecentDocuments/index.js +23 -0
  680. package/dist/widgets/Activity/Tabs/RecentDocuments/index.js.map +1 -0
  681. package/dist/widgets/Activity/components/DocumentList/index.css +61 -0
  682. package/dist/widgets/Activity/components/DocumentList/index.d.ts +15 -0
  683. package/dist/widgets/Activity/components/DocumentList/index.d.ts.map +1 -0
  684. package/dist/widgets/Activity/components/DocumentList/index.js +56 -0
  685. package/dist/widgets/Activity/components/DocumentList/index.js.map +1 -0
  686. package/dist/widgets/Activity/components/EmptyState/index.css +47 -0
  687. package/dist/widgets/Activity/components/EmptyState/index.d.ts +12 -0
  688. package/dist/widgets/Activity/components/EmptyState/index.d.ts.map +1 -0
  689. package/dist/widgets/Activity/components/EmptyState/index.js +37 -0
  690. package/dist/widgets/Activity/components/EmptyState/index.js.map +1 -0
  691. package/dist/widgets/Activity/components/Pagination/index.css +42 -0
  692. package/dist/widgets/Activity/components/Pagination/index.d.ts +20 -0
  693. package/dist/widgets/Activity/components/Pagination/index.d.ts.map +1 -0
  694. package/dist/widgets/Activity/components/Pagination/index.js +125 -0
  695. package/dist/widgets/Activity/components/Pagination/index.js.map +1 -0
  696. package/dist/widgets/Activity/components/StatusPill/index.css +24 -0
  697. package/dist/widgets/Activity/components/StatusPill/index.d.ts +8 -0
  698. package/dist/widgets/Activity/components/StatusPill/index.d.ts.map +1 -0
  699. package/dist/widgets/Activity/components/StatusPill/index.js +18 -0
  700. package/dist/widgets/Activity/components/StatusPill/index.js.map +1 -0
  701. package/dist/widgets/Activity/index.client.d.ts +15 -0
  702. package/dist/widgets/Activity/index.client.d.ts.map +1 -0
  703. package/dist/widgets/Activity/index.client.js +186 -0
  704. package/dist/widgets/Activity/index.client.js.map +1 -0
  705. package/dist/widgets/Activity/index.css +320 -0
  706. package/dist/widgets/Activity/index.d.ts +13 -0
  707. package/dist/widgets/Activity/index.d.ts.map +1 -0
  708. package/dist/widgets/Activity/index.js +100 -0
  709. package/dist/widgets/Activity/index.js.map +1 -0
  710. package/dist/widgets/{RecentlyViewed/index.client.d.ts → Activity/types.d.ts} +5 -13
  711. package/dist/widgets/Activity/types.d.ts.map +1 -0
  712. package/dist/widgets/Activity/types.js +2 -0
  713. package/dist/widgets/Activity/types.js.map +1 -0
  714. package/dist/widgets/Activity/utils/cache.d.ts +33 -0
  715. package/dist/widgets/Activity/utils/cache.d.ts.map +1 -0
  716. package/dist/widgets/Activity/utils/cache.js +72 -0
  717. package/dist/widgets/Activity/utils/cache.js.map +1 -0
  718. package/dist/widgets/Activity/utils/constants.d.ts +5 -0
  719. package/dist/widgets/Activity/utils/constants.d.ts.map +1 -0
  720. package/dist/widgets/Activity/utils/constants.js +4 -0
  721. package/dist/widgets/Activity/utils/constants.js.map +1 -0
  722. package/dist/widgets/Activity/utils/documents.d.ts +11 -0
  723. package/dist/widgets/Activity/utils/documents.d.ts.map +1 -0
  724. package/dist/widgets/Activity/utils/documents.js +38 -0
  725. package/dist/widgets/Activity/utils/documents.js.map +1 -0
  726. package/dist/widgets/Activity/utils/getActivityWidgetDocs.d.ts +20 -0
  727. package/dist/widgets/Activity/utils/getActivityWidgetDocs.d.ts.map +1 -0
  728. package/dist/widgets/{RecentlyViewed/getDocuments.js → Activity/utils/getActivityWidgetDocs.js} +18 -19
  729. package/dist/widgets/Activity/utils/getActivityWidgetDocs.js.map +1 -0
  730. package/dist/widgets/Activity/utils/state.d.ts +44 -0
  731. package/dist/widgets/Activity/utils/state.d.ts.map +1 -0
  732. package/dist/widgets/Activity/utils/state.js +80 -0
  733. package/dist/widgets/Activity/utils/state.js.map +1 -0
  734. package/dist/widgets/Activity/utils/useActivityDocuments.d.ts +35 -0
  735. package/dist/widgets/Activity/utils/useActivityDocuments.d.ts.map +1 -0
  736. package/dist/widgets/Activity/utils/useActivityDocuments.js +141 -0
  737. package/dist/widgets/Activity/utils/useActivityDocuments.js.map +1 -0
  738. package/dist/widgets/Activity/utils/usePageSize.d.ts +11 -0
  739. package/dist/widgets/Activity/utils/usePageSize.d.ts.map +1 -0
  740. package/dist/widgets/Activity/utils/usePageSize.js +35 -0
  741. package/dist/widgets/Activity/utils/usePageSize.js.map +1 -0
  742. package/dist/widgets/CollectionCards/index.client.d.ts +3 -0
  743. package/dist/widgets/CollectionCards/index.client.d.ts.map +1 -1
  744. package/dist/widgets/CollectionCards/index.client.js +3 -0
  745. package/dist/widgets/CollectionCards/index.client.js.map +1 -1
  746. package/dist/widgets/CollectionCards/index.d.ts +3 -0
  747. package/dist/widgets/CollectionCards/index.d.ts.map +1 -1
  748. package/dist/widgets/CollectionCards/index.js +3 -0
  749. package/dist/widgets/CollectionCards/index.js.map +1 -1
  750. package/dist/widgets/CollectionQuery/SortField/index.d.ts +3 -0
  751. package/dist/widgets/CollectionQuery/SortField/index.d.ts.map +1 -1
  752. package/dist/widgets/CollectionQuery/SortField/index.js +181 -73
  753. package/dist/widgets/CollectionQuery/SortField/index.js.map +1 -1
  754. package/dist/widgets/CollectionQuery/index.d.ts +3 -0
  755. package/dist/widgets/CollectionQuery/index.d.ts.map +1 -1
  756. package/dist/widgets/CollectionQuery/index.js +3 -0
  757. package/dist/widgets/CollectionQuery/index.js.map +1 -1
  758. package/dist/widgets/UploadDropzone/CollectionsField/index.d.ts +3 -0
  759. package/dist/widgets/UploadDropzone/CollectionsField/index.d.ts.map +1 -1
  760. package/dist/widgets/UploadDropzone/CollectionsField/index.js +65 -14
  761. package/dist/widgets/UploadDropzone/CollectionsField/index.js.map +1 -1
  762. package/dist/widgets/UploadDropzone/index.client.d.ts +3 -0
  763. package/dist/widgets/UploadDropzone/index.client.d.ts.map +1 -1
  764. package/dist/widgets/UploadDropzone/index.client.js +3 -0
  765. package/dist/widgets/UploadDropzone/index.client.js.map +1 -1
  766. package/dist/widgets/UploadDropzone/index.d.ts +3 -0
  767. package/dist/widgets/UploadDropzone/index.d.ts.map +1 -1
  768. package/dist/widgets/UploadDropzone/index.js +3 -0
  769. package/dist/widgets/UploadDropzone/index.js.map +1 -1
  770. package/dist/widgets/Welcome/index.d.ts +3 -0
  771. package/dist/widgets/Welcome/index.d.ts.map +1 -1
  772. package/dist/widgets/Welcome/index.js +3 -0
  773. package/dist/widgets/Welcome/index.js.map +1 -1
  774. package/dist/widgets/WidgetCard/index.css +0 -20
  775. package/dist/widgets/{RecentlyViewed/CollectionsField → shared/CollectionFilter}/index.css +2 -2
  776. package/dist/widgets/{RecentlyViewed/CollectionsField → shared/CollectionFilter}/index.d.ts +3 -1
  777. package/dist/widgets/shared/CollectionFilter/index.d.ts.map +1 -0
  778. package/dist/widgets/shared/CollectionFilter/index.js +170 -0
  779. package/dist/widgets/shared/CollectionFilter/index.js.map +1 -0
  780. package/package.json +10 -12
  781. package/dist/exports/client/chunk-R7M6BG75.js +0 -27
  782. package/dist/exports/client/chunk-R7M6BG75.js.map +0 -7
  783. package/dist/widgets/RecentlyViewed/CollectionsField/index.d.ts.map +0 -1
  784. package/dist/widgets/RecentlyViewed/CollectionsField/index.js +0 -102
  785. package/dist/widgets/RecentlyViewed/CollectionsField/index.js.map +0 -1
  786. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.css +0 -41
  787. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.d.ts +0 -19
  788. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.d.ts.map +0 -1
  789. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.js +0 -121
  790. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.js.map +0 -1
  791. package/dist/widgets/RecentlyViewed/getDocuments.d.ts +0 -20
  792. package/dist/widgets/RecentlyViewed/getDocuments.d.ts.map +0 -1
  793. package/dist/widgets/RecentlyViewed/getDocuments.js.map +0 -1
  794. package/dist/widgets/RecentlyViewed/index.client.d.ts.map +0 -1
  795. package/dist/widgets/RecentlyViewed/index.client.js +0 -409
  796. package/dist/widgets/RecentlyViewed/index.client.js.map +0 -1
  797. package/dist/widgets/RecentlyViewed/index.css +0 -352
  798. package/dist/widgets/RecentlyViewed/index.d.ts +0 -10
  799. package/dist/widgets/RecentlyViewed/index.d.ts.map +0 -1
  800. package/dist/widgets/RecentlyViewed/index.js +0 -47
  801. package/dist/widgets/RecentlyViewed/index.js.map +0 -1
  802. package/dist/widgets/RecentlyViewed/pinnedPreferences.d.ts.map +0 -1
  803. package/dist/widgets/RecentlyViewed/pinnedPreferences.js.map +0 -1
  804. package/dist/widgets/RecentlyViewed/recents.d.ts +0 -8
  805. package/dist/widgets/RecentlyViewed/recents.d.ts.map +0 -1
  806. package/dist/widgets/RecentlyViewed/recents.js +0 -19
  807. package/dist/widgets/RecentlyViewed/recents.js.map +0 -1
  808. /package/dist/exports/client/{CodeEditor-I6PL55BF.js.map → CodeEditor-23ZGBN6S.js.map} +0 -0
  809. /package/dist/exports/client/{DatePicker-RFCB5VGD.js.map → DatePicker-AZBZPMY6.js.map} +0 -0
@@ -1,6 +1,5 @@
1
1
  'use client';
2
2
 
3
- import { c as _c } from "react/compiler-runtime";
4
3
  import { jsx as _jsx } from "react/jsx-runtime";
5
4
  import React, { startTransition, useCallback, useEffect, useOptimistic, useRef } from 'react';
6
5
  /**
@@ -19,117 +18,97 @@ import React, { startTransition, useCallback, useEffect, useOptimistic, useRef }
19
18
  * </RouteTransitionProvider>
20
19
  * )
21
20
  */
22
- export const RouteTransitionProvider = t0 => {
23
- const $ = _c(12);
24
- const {
25
- children
26
- } = t0;
21
+ export const RouteTransitionProvider = ({
22
+ children
23
+ }) => {
27
24
  const [isOptimisticallyTransitioning, setIsOptimisticallyTransitioning] = useOptimistic(false);
28
25
  const [activeRouteTransitionHolds, setActiveRouteTransitionHolds] = React.useState(0);
26
+ const routeTransitionHolds = useRef(new Set());
29
27
  const [transitionProgress, setTransitionProgress] = React.useState(0);
30
28
  const isTransitioning = isOptimisticallyTransitioning || activeRouteTransitionHolds > 0;
31
29
  const transitionProgressRef = useRef(transitionProgress);
32
30
  const timerID = useRef(null);
33
- let t1;
34
- if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
35
- t1 = () => {
36
- timerID.current = setInterval(() => {
37
- const newProgress = transitionProgressRef.current + (0.93 - transitionProgressRef.current) * Math.random() * 0.2 * Math.pow(Math.log(1 + (1 - transitionProgressRef.current) * 0.75), 0.75);
38
- setTransitionProgress(newProgress);
39
- transitionProgressRef.current = newProgress;
40
- }, 250);
41
- };
42
- $[0] = t1;
43
- } else {
44
- t1 = $[0];
45
- }
46
- const initiateProgress = t1;
47
- let t2;
48
- let t3;
49
- if ($[1] !== isTransitioning) {
50
- t2 = () => {
51
- setTransitionProgress(0);
52
- transitionProgressRef.current = 0;
53
- if (isTransitioning) {
54
- initiateProgress();
55
- } else {
56
- if (timerID.current) {
57
- clearInterval(timerID.current);
58
- }
31
+ const initiateProgress = useCallback(() => {
32
+ timerID.current = setInterval(() => {
33
+ // randomly update progress using an exponential curve
34
+ // cap the progress to ensure it never fully reaches completion
35
+ // accelerate quickly then decelerate slowly
36
+ const maxProgress = 0.93;
37
+ const jumpFactor = 0.2 // lower to reduce jumps in progress
38
+ ;
39
+ const growthFactor = 0.75 // adjust to control acceleration
40
+ ;
41
+ const slowdownFactor = 0.75 // adjust to control deceleration
42
+ ;
43
+ const newProgress = transitionProgressRef.current + (maxProgress - transitionProgressRef.current) * Math.random() * jumpFactor * Math.pow(Math.log(1 + (1 - transitionProgressRef.current) * growthFactor), slowdownFactor);
44
+ setTransitionProgress(newProgress);
45
+ transitionProgressRef.current = newProgress;
46
+ }, 250); // every n ms, update progress
47
+ }, []);
48
+ useEffect(() => {
49
+ setTransitionProgress(0);
50
+ transitionProgressRef.current = 0;
51
+ if (isTransitioning) {
52
+ initiateProgress();
53
+ } else {
54
+ if (timerID.current) {
55
+ clearInterval(timerID.current);
59
56
  }
57
+ }
58
+ }, [isTransitioning, initiateProgress]);
59
+ const waitForHoldsToRelease = useCallback(async () => {
60
+ while (routeTransitionHolds.current.size > 0) {
61
+ await Promise.all(routeTransitionHolds.current);
62
+ }
63
+ }, []);
64
+ const startRouteTransition = useCallback(callback => {
65
+ const runAction = async () => {
66
+ setIsOptimisticallyTransitioning(true);
67
+ await callback?.();
68
+ await waitForHoldsToRelease();
60
69
  };
61
- t3 = [isTransitioning, initiateProgress];
62
- $[1] = isTransitioning;
63
- $[2] = t2;
64
- $[3] = t3;
65
- } else {
66
- t2 = $[2];
67
- t3 = $[3];
68
- }
69
- useEffect(t2, t3);
70
- let t4;
71
- if ($[4] !== setIsOptimisticallyTransitioning) {
72
- t4 = callback => {
73
- startTransition(() => {
74
- setIsOptimisticallyTransitioning(true);
75
- if (typeof callback === "function") {
76
- callback();
77
- }
78
- });
79
- };
80
- $[4] = setIsOptimisticallyTransitioning;
81
- $[5] = t4;
82
- } else {
83
- t4 = $[5];
84
- }
85
- const startRouteTransition = t4;
86
- let t5;
87
- if ($[6] === Symbol.for("react.memo_cache_sentinel")) {
88
- t5 = () => {
89
- let hasReleased = false;
90
- setActiveRouteTransitionHolds(_temp);
91
- return () => {
92
- if (hasReleased) {
93
- return;
94
- }
95
- hasReleased = true;
96
- setActiveRouteTransitionHolds(_temp2);
97
- };
98
- };
99
- $[6] = t5;
100
- } else {
101
- t5 = $[6];
102
- }
103
- const holdRouteTransition = t5;
104
- let t6;
105
- if ($[7] !== children || $[8] !== isTransitioning || $[9] !== startRouteTransition || $[10] !== transitionProgress) {
106
- t6 = _jsx(RouteTransitionContext, {
107
- value: {
108
- holdRouteTransition,
109
- isTransitioning,
110
- startRouteTransition,
111
- transitionProgress
112
- },
113
- children
70
+ // React runs the scope synchronously but does not return its promise.
71
+ let action = Promise.resolve();
72
+ startTransition(() => {
73
+ action = runAction();
74
+ return action;
114
75
  });
115
- $[7] = children;
116
- $[8] = isTransitioning;
117
- $[9] = startRouteTransition;
118
- $[10] = transitionProgress;
119
- $[11] = t6;
120
- } else {
121
- t6 = $[11];
122
- }
123
- return t6;
76
+ return action;
77
+ }, [setIsOptimisticallyTransitioning, waitForHoldsToRelease]);
78
+ const holdRouteTransition = useCallback(() => {
79
+ let hasReleased = false;
80
+ let resolveHold;
81
+ const hold = new Promise(resolve => {
82
+ resolveHold = resolve;
83
+ });
84
+ routeTransitionHolds.current.add(hold);
85
+ setActiveRouteTransitionHolds(count => count + 1);
86
+ return () => {
87
+ if (hasReleased) {
88
+ return;
89
+ }
90
+ hasReleased = true;
91
+ routeTransitionHolds.current.delete(hold);
92
+ resolveHold();
93
+ setActiveRouteTransitionHolds(count_0 => Math.max(0, count_0 - 1));
94
+ };
95
+ }, []);
96
+ return /*#__PURE__*/_jsx(RouteTransitionContext, {
97
+ value: {
98
+ holdRouteTransition,
99
+ isTransitioning,
100
+ startRouteTransition,
101
+ transitionProgress
102
+ },
103
+ children: children
104
+ });
124
105
  };
125
106
  const RouteTransitionContext = /*#__PURE__*/React.createContext({
126
107
  holdRouteTransition: () => () => undefined,
127
108
  isTransitioning: false,
128
109
  // Default implementation: just call the callback directly (no transition animation)
129
- startRouteTransition: callback => {
130
- if (typeof callback === 'function') {
131
- callback();
132
- }
110
+ startRouteTransition: async callback => {
111
+ await callback?.();
133
112
  },
134
113
  transitionProgress: 0
135
114
  });
@@ -147,17 +126,11 @@ const RouteTransitionContext = /*#__PURE__*/React.createContext({
147
126
  * const { startRouteTransition } = useRouteTransition()
148
127
  *
149
128
  * const redirectSomewhere = useCallback(() => {
150
- * startRouteTransition(() => router.push('/somewhere'))
129
+ * void startRouteTransition(() => router.push('/somewhere'))
151
130
  * }, [startRouteTransition, router])
152
131
  *
153
132
  * // ...
154
133
  * }
155
134
  */
156
135
  export const useRouteTransition = () => React.use(RouteTransitionContext);
157
- function _temp(count) {
158
- return count + 1;
159
- }
160
- function _temp2(count_0) {
161
- return Math.max(0, count_0 - 1);
162
- }
163
136
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","startTransition","useCallback","useEffect","useOptimistic","useRef","RouteTransitionProvider","t0","$","children","isOptimisticallyTransitioning","setIsOptimisticallyTransitioning","activeRouteTransitionHolds","setActiveRouteTransitionHolds","useState","transitionProgress","setTransitionProgress","isTransitioning","transitionProgressRef","timerID","t1","Symbol","for","current","setInterval","newProgress","Math","random","pow","log","initiateProgress","t2","t3","clearInterval","t4","callback","startRouteTransition","t5","hasReleased","_temp","_temp2","holdRouteTransition","t6","_jsx","RouteTransitionContext","value","createContext","undefined","useRouteTransition","use","count","count_0","max"],"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 [isOptimisticallyTransitioning, setIsOptimisticallyTransitioning] = useOptimistic(false)\n const [activeRouteTransitionHolds, setActiveRouteTransitionHolds] = React.useState(0)\n const [transitionProgress, setTransitionProgress] = React.useState<number>(0)\n const isTransitioning = isOptimisticallyTransitioning || activeRouteTransitionHolds > 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 setIsOptimisticallyTransitioning(true)\n\n if (typeof callback === 'function') {\n callback()\n }\n })\n },\n [setIsOptimisticallyTransitioning],\n )\n\n const holdRouteTransition = useCallback(() => {\n let hasReleased = false\n\n setActiveRouteTransitionHolds((count) => count + 1)\n\n return () => {\n if (hasReleased) {\n return\n }\n\n hasReleased = true\n setActiveRouteTransitionHolds((count) => Math.max(0, count - 1))\n }\n }, [])\n\n return (\n <RouteTransitionContext\n value={{\n holdRouteTransition,\n isTransitioning,\n startRouteTransition,\n transitionProgress,\n }}\n >\n {children}\n </RouteTransitionContext>\n )\n}\n\ntype RouteTransitionProps = {\n children: React.ReactNode\n}\n\ntype StartRouteTransition = (callback?: () => void) => void\n\ntype RouteTransitionContextValue = {\n /** Keeps the transition active until the returned release function is called. */\n holdRouteTransition: () => () => void\n isTransitioning: boolean\n startRouteTransition: StartRouteTransition\n transitionProgress: number\n}\n\nconst RouteTransitionContext = React.createContext<RouteTransitionContextValue>({\n holdRouteTransition: () => () => undefined,\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":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,OAAOC,KAAA,IAASC,eAAe,EAAEC,WAAW,EAAEC,SAAS,EAAEC,aAAa,EAAEC,MAAM,QAAQ;AAEtF;;;;;;;;;;;;;;;;AAgBA,OAAO,MAAMC,uBAAA,GAA0DC,EAAA;EAAA,MAAAC,CAAA,GAAAT,EAAA;EAAC;IAAAU;EAAA,IAAAF,EAAY;EAClF,OAAAG,6BAAA,EAAAC,gCAAA,IAA0EP,aAAA,MAAc;EACxF,OAAAQ,0BAAA,EAAAC,6BAAA,IAAoEb,KAAA,CAAAc,QAAA,EAAe;EACnF,OAAAC,kBAAA,EAAAC,qBAAA,IAAoDhB,KAAA,CAAAc,QAAA,EAAuB;EAC3E,MAAAG,eAAA,GAAwBP,6BAAA,IAAiCE,0BAAA,IAA6B;EAEtF,MAAAM,qBAAA,GAA8Bb,MAAA,CAAOU,kBAAA;EAErC,MAAAI,OAAA,GAAgBd,MAAA,KAAO;EAAA,IAAAe,EAAA;EAAA,IAAAZ,CAAA,QAAAa,MAAA,CAAAC,GAAA;IAEcF,EAAA,GAAAA,CAAA;MACnCD,OAAA,CAAAI,OAAA,GAAkBC,WAAA;QAShB,MAAAC,WAAA,GACEP,qBAAA,CAAAK,OAAA,GACA,CAAC,OAAcL,qBAAA,CAAAK,OAA6B,IAC1CG,IAAA,CAAAC,MAAA,CAAW,OACX,GACAD,IAAA,CAAAE,GAAA,CAASF,IAAA,CAAAG,GAAA,CAAS,IAAI,CAAC,IAAIX,qBAAA,CAAAK,OAA6B,QAAI,OAAe;QAE/EP,qBAAA,CAAsBS,WAAA;QACtBP,qBAAA,CAAAK,OAAA,GAAgCE,WAAA;MAAA,MAC/B;IAAA;IACLjB,CAAA,MAAAY,EAAA;EAAA;IAAAA,EAAA,GAAAZ,CAAA;EAAA;EApBA,MAAAsB,gBAAA,GAAyBV,EAoBpB;EAAA,IAAAW,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAxB,CAAA,QAAAS,eAAA;IAEKc,EAAA,GAAAA,CAAA;MACRf,qBAAA,EAAsB;MACtBE,qBAAA,CAAAK,OAAA;MAAA,IAEIN,eAAA;QACFa,gBAAA;MAAA;QAAA,IAEIX,OAAA,CAAAI,OAAA;UACFU,aAAA,CAAcd,OAAA,CAAAI,OAAe;QAAA;MAAA;IAAA;IAGhCS,EAAA,IAACf,eAAA,EAAiBa,gBAAA;IAAiBtB,CAAA,MAAAS,eAAA;IAAAT,CAAA,MAAAuB,EAAA;IAAAvB,CAAA,MAAAwB,EAAA;EAAA;IAAAD,EAAA,GAAAvB,CAAA;IAAAwB,EAAA,GAAAxB,CAAA;EAAA;EAXtCL,SAAA,CAAU4B,EAWV,EAAGC,EAAmC;EAAA,IAAAE,EAAA;EAAA,IAAA1B,CAAA,QAAAG,gCAAA;IAGpCuB,EAAA,GAAAC,QAAA;MACElC,eAAA;QACEU,gCAAA,KAAiC;QAAA,IAE7B,OAAOwB,QAAA,KAAa;UACtBA,QAAA;QAAA;MAAA,CAEJ;IAAA;IACF3B,CAAA,MAAAG,gCAAA;IAAAH,CAAA,MAAA0B,EAAA;EAAA;IAAAA,EAAA,GAAA1B,CAAA;EAAA;EATF,MAAA4B,oBAAA,GAAmDF,EAUf;EAAA,IAAAG,EAAA;EAAA,IAAA7B,CAAA,QAAAa,MAAA,CAAAC,GAAA;IAGIe,EAAA,GAAAA,CAAA;MACtC,IAAAC,WAAA;MAEAzB,6BAAA,CAAA0B,KAAiD;MAAA;QAAA,IAG3CD,WAAA;UAAA;QAAA;QAIJA,WAAA,CAAAA,CAAA,CAAAA,IAAA;QACAzB,6BAAA,CAAA2B,MAA6D;MAAA;IAAA;IAEjEhC,CAAA,MAAA6B,EAAA;EAAA;IAAAA,EAAA,GAAA7B,CAAA;EAAA;EAbA,MAAAiC,mBAAA,GAA4BJ,EAavB;EAAA,IAAAK,EAAA;EAAA,IAAAlC,CAAA,QAAAC,QAAA,IAAAD,CAAA,QAAAS,eAAA,IAAAT,CAAA,QAAA4B,oBAAA,IAAA5B,CAAA,SAAAO,kBAAA;IAGH2B,EAAA,GAAAC,IAAA,CAAAC,sBAAA;MAAAC,KAAA;QAAAJ,mBAAA;QAAAxB,eAAA;QAAAmB,oBAAA;QAAArB;MAAA;MAAAN;IAAA,C;;;;;;;;;SAAAiC,E;CAWJ;AAgBA,MAAME,sBAAA,gBAAyB5C,KAAA,CAAM8C,aAAa,CAA8B;EAC9EL,mBAAA,EAAqBA,CAAA,KAAM,MAAMM,SAAA;EACjC9B,eAAA,EAAiB;EACjB;EACAmB,oBAAA,EAAuBD,QAAA;IACrB,IAAI,OAAOA,QAAA,KAAa,YAAY;MAClCA,QAAA;IACF;EACF;EACApB,kBAAA,EAAoB;AACtB;AAEA;;;;;;;;;;;;;;;;;;;;AAoBA,OAAO,MAAMiC,kBAAA,GAAqBA,CAAA,KAAMhD,KAAA,CAAMiD,GAAG,CAACL,sBAAA;AArIqB,SAAAL,MAAAW,KAAA;EAAA,OA6D1BA,KAAA,IAAQ;AAAA;AA7DkB,SAAAV,OAAAW,OAAA;EAAA,OAqExBzB,IAAA,CAAA0B,GAAA,IAAYF,OAAA,IAAQ;AAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","startTransition","useCallback","useEffect","useOptimistic","useRef","RouteTransitionProvider","children","isOptimisticallyTransitioning","setIsOptimisticallyTransitioning","activeRouteTransitionHolds","setActiveRouteTransitionHolds","useState","routeTransitionHolds","Set","transitionProgress","setTransitionProgress","isTransitioning","transitionProgressRef","timerID","initiateProgress","current","setInterval","maxProgress","jumpFactor","growthFactor","slowdownFactor","newProgress","Math","random","pow","log","clearInterval","waitForHoldsToRelease","size","Promise","all","startRouteTransition","callback","runAction","action","resolve","holdRouteTransition","hasReleased","resolveHold","hold","add","count","delete","max","_jsx","RouteTransitionContext","value","createContext","undefined","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 [isOptimisticallyTransitioning, setIsOptimisticallyTransitioning] = useOptimistic(false)\n const [activeRouteTransitionHolds, setActiveRouteTransitionHolds] = React.useState(0)\n const routeTransitionHolds = useRef(new Set<Promise<void>>())\n const [transitionProgress, setTransitionProgress] = React.useState<number>(0)\n const isTransitioning = isOptimisticallyTransitioning || activeRouteTransitionHolds > 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 waitForHoldsToRelease = useCallback(async () => {\n while (routeTransitionHolds.current.size > 0) {\n await Promise.all(routeTransitionHolds.current)\n }\n }, [])\n\n const startRouteTransition: StartRouteTransition = useCallback(\n (callback?: () => unknown) => {\n const runAction = async () => {\n setIsOptimisticallyTransitioning(true)\n\n await callback?.()\n await waitForHoldsToRelease()\n }\n\n // React runs the scope synchronously but does not return its promise.\n let action = Promise.resolve()\n\n startTransition(() => {\n action = runAction()\n return action\n })\n\n return action\n },\n [setIsOptimisticallyTransitioning, waitForHoldsToRelease],\n )\n\n const holdRouteTransition = useCallback(() => {\n let hasReleased = false\n let resolveHold: () => void\n const hold = new Promise<void>((resolve) => {\n resolveHold = resolve\n })\n\n routeTransitionHolds.current.add(hold)\n setActiveRouteTransitionHolds((count) => count + 1)\n\n return () => {\n if (hasReleased) {\n return\n }\n\n hasReleased = true\n routeTransitionHolds.current.delete(hold)\n resolveHold()\n setActiveRouteTransitionHolds((count) => Math.max(0, count - 1))\n }\n }, [])\n\n return (\n <RouteTransitionContext\n value={{\n holdRouteTransition,\n isTransitioning,\n startRouteTransition,\n transitionProgress,\n }}\n >\n {children}\n </RouteTransitionContext>\n )\n}\n\ntype RouteTransitionProps = {\n children: React.ReactNode\n}\n\ntype StartRouteTransition = (callback?: () => unknown) => Promise<void>\n\ntype RouteTransitionContextValue = {\n /** Keeps the transition active until the returned release function is called. */\n holdRouteTransition: () => () => void\n isTransitioning: boolean\n /** Resolves after the callback and active route transition holds complete. */\n startRouteTransition: StartRouteTransition\n transitionProgress: number\n}\n\nconst RouteTransitionContext = React.createContext<RouteTransitionContextValue>({\n holdRouteTransition: () => () => undefined,\n isTransitioning: false,\n // Default implementation: just call the callback directly (no transition animation)\n startRouteTransition: async (callback) => {\n await callback?.()\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 * void 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":"index.js","names":["React","createContext","use","RouterAdapterContext","useRouterAdapterContext","ctx","Error","useRouter","router","usePathname","pathname","useSearchParams","searchParams","useParams","params","PayloadLink","ref","props","Link","LinkComponent","_jsx"],"sources":["../../../src/providers/RouterAdapter/index.tsx"],"sourcesContent":["'use client'\nimport type { LinkAdapterProps, RouterAdapterRouter } from 'payload'\n\nimport React, { createContext, use } from 'react'\n\nexport type RouterAdapterContextValue = {\n Link: React.ComponentType<LinkAdapterProps>\n params: Record<string, string | string[]>\n pathname: string\n router: RouterAdapterRouter\n searchParams: URLSearchParams\n}\n\n/**\n * The RouterAdapter context. Framework adapters populate this by rendering a\n * provider component that calls framework-specific hooks (e.g. next/navigation)\n * and passes the values here. This avoids calling dynamic hooks from props,\n * which would violate React compiler rules.\n */\nexport const RouterAdapterContext = createContext<null | RouterAdapterContextValue>(null)\n\nfunction useRouterAdapterContext(): RouterAdapterContextValue {\n const ctx = use(RouterAdapterContext)\n if (!ctx) {\n throw new Error(\n 'useRouter/usePathname/useSearchParams/useParams must be used within a RouterAdapterProvider',\n )\n }\n return ctx\n}\n\nexport function useRouter(): RouterAdapterRouter {\n return useRouterAdapterContext().router\n}\n\nexport function usePathname(): string {\n return useRouterAdapterContext().pathname\n}\n\nexport function useSearchParams(): URLSearchParams {\n return useRouterAdapterContext().searchParams\n}\n\nexport function useParams(): Record<string, string | string[]> {\n return useRouterAdapterContext().params\n}\n\nexport const PayloadLink: React.FC<{ ref?: React.Ref<HTMLAnchorElement> } & LinkAdapterProps> = ({\n ref,\n ...props\n}: { ref?: React.RefObject<HTMLAnchorElement | null> } & LinkAdapterProps) => {\n const { Link: LinkComponent } = useRouterAdapterContext()\n return <LinkComponent {...props} ref={ref} />\n}\n\nexport type { LinkAdapterProps, RouterAdapterRouter }\n"],"mappings":"AAAA;;;AAGA,OAAOA,KAAA,IAASC,aAAa,EAAEC,GAAG,QAAQ;AAU1C;;;;;;AAMA,OAAO,MAAMC,oBAAA,gBAAuBF,aAAA,CAAgD;AAEpF,SAASG,wBAAA;EACP,MAAMC,GAAA,GAAMH,GAAA,CAAIC,oBAAA;EAChB,IAAI,CAACE,GAAA,EAAK;IACR,MAAM,IAAIC,KAAA,CACR;EAEJ;EACA,OAAOD,GAAA;AACT;AAEA,OAAO,SAAAE,UAAA;EAAA,OACEH,uBAAA,GAAAI,MAAA;AAAA;AAGT,OAAO,SAAAC,YAAA;EAAA,OACEL,uBAAA,GAAAM,QAAA;AAAA;AAGT,OAAO,SAAAC,gBAAA;EAAA,OACEP,uBAAA,GAAAQ,YAAA;AAAA;AAGT,OAAO,SAAAC,UAAA;EAAA,OACET,uBAAA,GAAAU,MAAA;AAAA;AAGT,OAAO,MAAMC,WAAA,GAAmFA,CAAC;EAC/FC,GAAG;EACH,GAAGC;AAAA,CACoE;EACvE,MAAM;IAAEC,IAAA,EAAMC;EAAa,CAAE,GAAGf,uBAAA;EAChC,oBAAOgB,IAAA,CAACD,aAAA;IAAe,GAAGF,KAAK;IAAED,GAAA,EAAKA;;AACxC","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","createContext","use","RouterAdapterContext","useRouterAdapterContext","ctx","Error","useRouter","router","usePathname","pathname","useSearchParams","searchParams","useParams","params","PayloadLink","ref","props","Link","LinkComponent","_jsx"],"sources":["../../../src/providers/RouterAdapter/index.tsx"],"sourcesContent":["'use client'\nimport type { LinkAdapterProps, RouterAdapterRouter } from 'payload'\n\nimport React, { createContext, use } from 'react'\n\nexport type RouterAdapterContextValue = {\n Link: React.ComponentType<LinkAdapterProps>\n params: Record<string, string | string[]>\n pathname: string\n router: RouterAdapterRouter\n searchParams: URLSearchParams\n}\n\n/**\n * The RouterAdapter context. Framework adapters populate this by rendering a\n * provider component that calls framework-specific hooks (e.g. next/navigation)\n * and passes the values here. This avoids calling dynamic hooks from props,\n * which would violate React compiler rules.\n */\nexport const RouterAdapterContext = createContext<null | RouterAdapterContextValue>(null)\n\nfunction useRouterAdapterContext(): RouterAdapterContextValue {\n const ctx = use(RouterAdapterContext)\n if (!ctx) {\n throw new Error(\n 'useRouter/usePathname/useSearchParams/useParams must be used within a RouterAdapterProvider',\n )\n }\n return ctx\n}\n\nexport function useRouter(): RouterAdapterRouter {\n return useRouterAdapterContext().router\n}\n\nexport function usePathname(): string {\n return useRouterAdapterContext().pathname\n}\n\nexport function useSearchParams(): URLSearchParams {\n return useRouterAdapterContext().searchParams\n}\n\nexport function useParams(): Record<string, string | string[]> {\n return useRouterAdapterContext().params\n}\n\nexport const PayloadLink: React.FC<{ ref?: React.Ref<HTMLAnchorElement> } & LinkAdapterProps> = ({\n ref,\n ...props\n}: { ref?: React.RefObject<HTMLAnchorElement | null> } & LinkAdapterProps) => {\n const { Link: LinkComponent } = useRouterAdapterContext()\n return <LinkComponent {...props} ref={ref} />\n}\n\nexport type { LinkAdapterProps, RouterAdapterRouter }\n"],"mappings":"AAAA;;;AAGA,OAAOA,KAAA,IAASC,aAAa,EAAEC,GAAG,QAAQ;AAU1C;;;;;;AAMA,OAAO,MAAMC,oBAAA,gBAAuBF,aAAA,CAAgD;AAEpF,SAASG,wBAAA;EACP,MAAMC,GAAA,GAAMH,GAAA,CAAIC,oBAAA;EAChB,IAAI,CAACE,GAAA,EAAK;IACR,MAAM,IAAIC,KAAA,CACR;EAEJ;EACA,OAAOD,GAAA;AACT;AAEA,OAAO,SAAAE,UAAA;EAAA,OACEH,uBAAA,GAAAI,MAAgC;AAAA;AAGzC,OAAO,SAAAC,YAAA;EAAA,OACEL,uBAAA,GAAAM,QAAkC;AAAA;AAG3C,OAAO,SAAAC,gBAAA;EAAA,OACEP,uBAAA,GAAAQ,YAAsC;AAAA;AAG/C,OAAO,SAAAC,UAAA;EAAA,OACET,uBAAA,GAAAU,MAAgC;AAAA;AAGzC,OAAO,MAAMC,WAAA,GAAmFA,CAAC;EAC/FC,GAAG;EACH,GAAGC;AAAA,CACoE;EACvE,MAAM;IAAEC,IAAA,EAAMC;EAAa,CAAE,GAAGf,uBAAA;EAChC,oBAAOgB,IAAA,CAACD,aAAA;IAAe,GAAGF,KAAK;IAAED,GAAA,EAAKA;;AACxC","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","useListDrawerContext","DefaultCell","useTableColumns","baseClass","CellPropsContext","createContext","useCellProps","use","RenderDefaultCell","t0","$","clientProps","columnIndex","isLinkedColumn","drawerSlug","onSelect","LinkedCellOverride","t1","propsToPass","link","className","t2","t3","collectionSlug","rowColl","rowData","doc","onClick","_jsx","value","children"],"sources":["../../../../src/providers/TableColumns/RenderDefaultCell/index.tsx"],"sourcesContent":["'use client'\nimport type { DefaultCellComponentProps } from 'payload'\n\nimport React from 'react'\n\nimport { useListDrawerContext } from '../../../elements/ListDrawer/Provider.js'\nimport { DefaultCell } from '../../../elements/Table/DefaultCell/index.js'\nimport { useTableColumns } from '../../../providers/TableColumns/index.js'\nimport './index.css'\n\nconst baseClass = 'default-cell'\n\nconst CellPropsContext = React.createContext<DefaultCellComponentProps | null>(null)\n\nexport const useCellProps = (): DefaultCellComponentProps | null => React.use(CellPropsContext)\n\nexport const RenderDefaultCell: React.FC<{\n clientProps: DefaultCellComponentProps\n columnIndex: number\n enableRowSelections?: boolean\n isLinkedColumn?: boolean\n}> = ({ clientProps, columnIndex, isLinkedColumn }) => {\n const { drawerSlug, onSelect } = useListDrawerContext()\n const { LinkedCellOverride } = useTableColumns()\n\n const propsToPass: DefaultCellComponentProps = {\n ...clientProps,\n columnIndex,\n }\n\n if (isLinkedColumn && drawerSlug && clientProps.link !== false) {\n propsToPass.className = `${baseClass}__first-cell`\n propsToPass.link = false\n propsToPass.onClick = ({ collectionSlug: rowColl, rowData }) => {\n if (typeof onSelect === 'function') {\n onSelect({\n collectionSlug: rowColl,\n doc: rowData,\n })\n }\n }\n }\n\n return (\n <CellPropsContext value={propsToPass}>\n {isLinkedColumn && LinkedCellOverride ? LinkedCellOverride : <DefaultCell {...propsToPass} />}\n </CellPropsContext>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,OAAOC,KAAA,MAAW;AAElB,SAASC,oBAAoB,QAAQ;AACrC,SAASC,WAAW,QAAQ;AAC5B,SAASC,eAAe,QAAQ;AAChC,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,MAAMC,gBAAA,gBAAmBL,KAAA,CAAMM,aAAa,CAAmC;AAE/E,OAAO,MAAMC,YAAA,GAAeA,CAAA,KAAwCP,KAAA,CAAMQ,GAAG,CAACH,gBAAA;AAE9E,OAAO,MAAMI,iBAAA,GAKRC,EAAA;EAAA,MAAAC,CAAA,GAAAZ,EAAA;EAAC;IAAAa,WAAA;IAAAC,WAAA;IAAAC;EAAA,IAAAJ,EAA4C;EAChD;IAAAK,UAAA;IAAAC;EAAA,IAAiCf,oBAAA;EACjC;IAAAgB;EAAA,IAA+Bd,eAAA;EAAA,IAAAe,EAAA;EAAA,IAAAP,CAAA,QAAAM,kBAAA,IAAAN,CAAA,QAAAC,WAAA,IAAAD,CAAA,QAAAE,WAAA,IAAAF,CAAA,QAAAI,UAAA,IAAAJ,CAAA,QAAAG,cAAA,IAAAH,CAAA,QAAAK,QAAA;IAE/B,MAAAG,WAAA;MAAA,GACKP,WAAW;MAAAC;IAAA;IAEhB,IAEIC,cAAA,IAAkBC,UAAA,IAAcH,WAAA,CAAAQ,IAAA,UAAqB;MACvDD,WAAA,CAAAE,SAAA,GAAwB,GAAAjB,SAAA,cAA0B;MAClDe,WAAA,CAAAC,IAAA;MAAA,IAAAE,EAAA;MAAA,IAAAX,CAAA,QAAAK,QAAA;QACsBM,EAAA,GAAAC,EAAA;UAAC;YAAAC,cAAA,EAAAC,OAAA;YAAAC;UAAA,IAAAH,EAAoC;UAAA,IACrD,OAAOP,QAAA,KAAa;YACtBA,QAAA;cAAAQ,cAAA,EACkBC,OAAA;cAAAE,GAAA,EACXD;YAAA,CACP;UAAA;QAAA;QAEJf,CAAA,MAAAK,QAAA;QAAAL,CAAA,MAAAW,EAAA;MAAA;QAAAA,EAAA,GAAAX,CAAA;MAAA;MAPAQ,WAAA,CAAAS,OAAA,GAAsBN,EAOtB;IAAA;IAIAJ,EAAA,GAAAW,IAAA,CAAAxB,gBAAA;MAAAyB,KAAA,EAAyBX,WAAA;MAAAY,QAAA,EACtBjB,cAAA,IAAkBG,kBAAA,GAAqBA,kBAAA,GAAqBY,IAAA,CAAA3B,WAAA;QAAA,GAAiBiB;MAAW,C;;;;;;;;;;;;SAD3FD,E;CAIJ","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","useListDrawerContext","DefaultCell","useTableColumns","baseClass","CellPropsContext","createContext","useCellProps","use","RenderDefaultCell","t0","$","clientProps","columnIndex","isLinkedColumn","drawerSlug","onSelect","LinkedCellOverride","t1","propsToPass","link","className","t2","t3","collectionSlug","rowColl","rowData","doc","onClick","_jsx","value","children"],"sources":["../../../../src/providers/TableColumns/RenderDefaultCell/index.tsx"],"sourcesContent":["'use client'\nimport type { DefaultCellComponentProps } from 'payload'\n\nimport React from 'react'\n\nimport { useListDrawerContext } from '../../../elements/ListDrawer/Provider.js'\nimport { DefaultCell } from '../../../elements/Table/DefaultCell/index.js'\nimport { useTableColumns } from '../../../providers/TableColumns/index.js'\nimport './index.css'\n\nconst baseClass = 'default-cell'\n\nconst CellPropsContext = React.createContext<DefaultCellComponentProps | null>(null)\n\nexport const useCellProps = (): DefaultCellComponentProps | null => React.use(CellPropsContext)\n\nexport const RenderDefaultCell: React.FC<{\n clientProps: DefaultCellComponentProps\n columnIndex: number\n enableRowSelections?: boolean\n isLinkedColumn?: boolean\n}> = ({ clientProps, columnIndex, isLinkedColumn }) => {\n const { drawerSlug, onSelect } = useListDrawerContext()\n const { LinkedCellOverride } = useTableColumns()\n\n const propsToPass: DefaultCellComponentProps = {\n ...clientProps,\n columnIndex,\n }\n\n if (isLinkedColumn && drawerSlug && clientProps.link !== false) {\n propsToPass.className = `${baseClass}__first-cell`\n propsToPass.link = false\n propsToPass.onClick = ({ collectionSlug: rowColl, rowData }) => {\n if (typeof onSelect === 'function') {\n onSelect({\n collectionSlug: rowColl,\n doc: rowData,\n })\n }\n }\n }\n\n return (\n <CellPropsContext value={propsToPass}>\n {isLinkedColumn && LinkedCellOverride ? LinkedCellOverride : <DefaultCell {...propsToPass} />}\n </CellPropsContext>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,OAAOC,KAAA,MAAW;AAElB,SAASC,oBAAoB,QAAQ;AACrC,SAASC,WAAW,QAAQ;AAC5B,SAASC,eAAe,QAAQ;AAChC,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,MAAMC,gBAAA,gBAAmBL,KAAA,CAAMM,aAAa,CAAmC;AAE/E,OAAO,MAAMC,YAAA,GAAeA,CAAA,KAAwCP,KAAA,CAAMQ,GAAG,CAACH,gBAAA;AAE9E,OAAO,MAAMI,iBAAA,GAKRC,EAAA;EAAA,MAAAC,CAAA,GAAAZ,EAAA;EAAC;IAAAa,WAAA;IAAAC,WAAA;IAAAC;EAAA,IAAAJ,EAA4C;EAChD;IAAAK,UAAA;IAAAC;EAAA,IAAiCf,oBAAA;EACjC;IAAAgB;EAAA,IAA+Bd,eAAA;EAAA,IAAAe,EAAA;EAAA,IAAAP,CAAA,QAAAM,kBAAA,IAAAN,CAAA,QAAAC,WAAA,IAAAD,CAAA,QAAAE,WAAA,IAAAF,CAAA,QAAAI,UAAA,IAAAJ,CAAA,QAAAG,cAAA,IAAAH,CAAA,QAAAK,QAAA;IAE/B,MAAAG,WAAA,GAA+C;MAAA,GAC1CP,WAAW;MAAAC;IAEhB;IAEA,IAAIC,cAAkB,IAAlBC,UAAqD,IAArBH,WAAA,CAAAQ,IAAgB,KAAK;MACvDD,WAAA,CAAAE,SAAA,GAAwB,GAAGjB,SAAA,cAAN;MACrBe,WAAA,CAAAC,IAAA,GAAmB,KAAH;MAAA,IAAAE,EAAA;MAAA,IAAAX,CAAA,QAAAK,QAAA;QACMM,EAAA,GAAAC,EAAA;UAAC;YAAAC,cAAA,EAAAC,OAAA;YAAAC;UAAA,IAAAH,EAAoC;UACzD,IAAI,OAAOP,QAAA,KAAa;YACtBA,QAAA,CAAS;cAAAQ,cAAA,EACSC,OAAA;cAAAE,GAAA,EACXD;YACP;UAAA;QACF,CACF;QAAAf,CAAA,MAAAK,QAAA;QAAAL,CAAA,MAAAW,EAAA;MAAA;QAAAA,EAAA,GAAAX,CAAA;MAAA;MAPAQ,WAAA,CAAAS,OAAA,GAAsBN,EAAH;IAAA;IAWnBJ,EAAA,GAAAW,IAAA,CAACxB,gBAAA;MAAAyB,KAAA,EAAwBX,WAAA;MAAAY,QAAA,EACtBjB,cAAkB,IAAlBG,kB,GAAAA,kB,GAA4DY,IAAA,CAAC3B,WAAA;QAAA,GAAgBiB;;;;;;;;;;;;;SADhFD,E;CAIJ","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/TableColumns/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA0D,MAAM,OAAO,CAAA;AAE9E,OAAO,KAAK,EAAiB,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAM1E,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAiIpE,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/TableColumns/index.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAElD,OAAO,KAAK,EAAiB,yBAAyB,EAAE,MAAM,YAAY,CAAA;AAO1E,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C,eAAO,MAAM,oBAAoB,EAAE,KAAK,CAAC,EAAE,CAAC,yBAAyB,CAuGpE,CAAA"}
@@ -2,9 +2,10 @@
2
2
 
3
3
  import { jsx as _jsx } from "react/jsx-runtime";
4
4
  import { transformColumnsToSearchParams } from 'payload/shared';
5
- import React, { startTransition, useCallback, useEffect, useRef } from 'react';
5
+ import React, { useCallback, useRef } from 'react';
6
6
  import { useConfig } from '../../providers/Config/index.js';
7
7
  import { useListQuery } from '../../providers/ListQuery/index.js';
8
+ import { useRouteTransition } from '../RouteTransition/index.js';
8
9
  import { TableColumnContext } from './context.js';
9
10
  export { useTableColumns } from './context.js';
10
11
  export const TableColumnsProvider = ({
@@ -20,6 +21,9 @@ export const TableColumnsProvider = ({
20
21
  query: currentQuery,
21
22
  refineListData
22
23
  } = useListQuery();
24
+ const {
25
+ startRouteTransition
26
+ } = useRouteTransition();
23
27
  const {
24
28
  admin: {
25
29
  defaultColumns
@@ -27,19 +31,16 @@ export const TableColumnsProvider = ({
27
31
  } = getEntityConfig({
28
32
  collectionSlug
29
33
  });
30
- const [columnState, setOptimisticColumnState] = React.useOptimistic(columnStateFromProps, (state, action) => action);
31
- // Sync optimistic state when props change (e.g., after preset reset)
32
- const prevPropsRef = useRef(columnStateFromProps);
33
- useEffect(() => {
34
- if (columnStateFromProps !== prevPropsRef.current) {
35
- prevPropsRef.current = columnStateFromProps;
36
- // Force optimistic state to sync with new props by triggering a transition
37
- startTransition(() => {
38
- setOptimisticColumnState(columnStateFromProps);
39
- });
40
- }
41
- }, [columnStateFromProps, setOptimisticColumnState]);
34
+ const [columnState, setOptimisticColumnState] = React.useOptimistic(columnStateFromProps);
42
35
  const contextRef = useRef({});
36
+ const setColumns = useCallback(async newColumns => {
37
+ await startRouteTransition(async () => {
38
+ setOptimisticColumnState(newColumns);
39
+ await refineListData({
40
+ columns: transformColumnsToSearchParams(newColumns)
41
+ });
42
+ });
43
+ }, [refineListData, setOptimisticColumnState, startRouteTransition]);
43
44
  const toggleColumn = useCallback(async column => {
44
45
  const currentColumns = columnState || [];
45
46
  const columnIndex = currentColumns.findIndex(col => col.accessor === column);
@@ -56,13 +57,8 @@ export const TableColumnsProvider = ({
56
57
  }
57
58
  return col_0;
58
59
  });
59
- startTransition(() => {
60
- setOptimisticColumnState(newColumnState);
61
- });
62
- await refineListData({
63
- columns: transformColumnsToSearchParams(newColumnState)
64
- });
65
- }, [refineListData, columnState, setOptimisticColumnState]);
60
+ await setColumns(newColumnState);
61
+ }, [columnState, setColumns]);
66
62
  const moveColumn = useCallback(async args => {
67
63
  const {
68
64
  fromIndex,
@@ -71,13 +67,8 @@ export const TableColumnsProvider = ({
71
67
  const newColumnState_0 = [...(columnState || [])];
72
68
  const [columnToMove] = newColumnState_0.splice(fromIndex, 1);
73
69
  newColumnState_0.splice(toIndex, 0, columnToMove);
74
- startTransition(() => {
75
- setOptimisticColumnState(newColumnState_0);
76
- });
77
- await refineListData({
78
- columns: transformColumnsToSearchParams(newColumnState_0)
79
- });
80
- }, [columnState, refineListData, setOptimisticColumnState]);
70
+ await setColumns(newColumnState_0);
71
+ }, [columnState, setColumns]);
81
72
  const setActiveColumns = useCallback(async columns => {
82
73
  const newColumnState_1 = currentQuery.columns;
83
74
  columns.forEach(colName => {
@@ -96,14 +87,6 @@ export const TableColumnsProvider = ({
96
87
  columns: defaultColumns || []
97
88
  });
98
89
  }, [defaultColumns, refineListData]);
99
- const setColumns = useCallback(async newColumns => {
100
- startTransition(() => {
101
- setOptimisticColumnState(newColumns);
102
- });
103
- await refineListData({
104
- columns: transformColumnsToSearchParams(newColumns)
105
- });
106
- }, [refineListData, setOptimisticColumnState]);
107
90
  return /*#__PURE__*/_jsx(TableColumnContext, {
108
91
  value: {
109
92
  columns: columnState,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["transformColumnsToSearchParams","React","startTransition","useCallback","useEffect","useRef","useConfig","useListQuery","TableColumnContext","useTableColumns","TableColumnsProvider","children","collectionSlug","columnState","columnStateFromProps","LinkedCellOverride","getEntityConfig","query","currentQuery","refineListData","admin","defaultColumns","setOptimisticColumnState","useOptimistic","state","action","prevPropsRef","current","contextRef","toggleColumn","column","currentColumns","columnIndex","findIndex","col","accessor","newColumnState","map","active","columns","moveColumn","args","fromIndex","toIndex","columnToMove","splice","setActiveColumns","forEach","colName","colIndex","c","undefined","slice","resetColumnsState","setColumns","newColumns","_jsx","value"],"sources":["../../../src/providers/TableColumns/index.tsx"],"sourcesContent":["'use client'\nimport { type Column } from 'payload'\nimport { transformColumnsToSearchParams } from 'payload/shared'\nimport React, { startTransition, useCallback, useEffect, useRef } from 'react'\n\nimport type { ITableColumns, TableColumnsProviderProps } from './types.js'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { TableColumnContext } from './context.js'\n\nexport { useTableColumns } from './context.js'\n\nexport const TableColumnsProvider: React.FC<TableColumnsProviderProps> = ({\n children,\n collectionSlug,\n columnState: columnStateFromProps,\n LinkedCellOverride,\n}) => {\n const { getEntityConfig } = useConfig()\n const { query: currentQuery, refineListData } = useListQuery()\n\n const { admin: { defaultColumns } = {} } = getEntityConfig({\n collectionSlug,\n })\n\n const [columnState, setOptimisticColumnState] = React.useOptimistic(\n columnStateFromProps,\n (state, action: Column[]) => action,\n )\n\n // Sync optimistic state when props change (e.g., after preset reset)\n const prevPropsRef = useRef(columnStateFromProps)\n useEffect(() => {\n if (columnStateFromProps !== prevPropsRef.current) {\n prevPropsRef.current = columnStateFromProps\n // Force optimistic state to sync with new props by triggering a transition\n startTransition(() => {\n setOptimisticColumnState(columnStateFromProps)\n })\n }\n }, [columnStateFromProps, setOptimisticColumnState])\n\n const contextRef = useRef({} as ITableColumns)\n\n const toggleColumn = useCallback(\n async (column: string) => {\n const currentColumns = columnState || []\n const columnIndex = currentColumns.findIndex((col) => col.accessor === column)\n\n if (columnIndex === -1) {\n return\n }\n\n // Toggle the column's active state in place, preserving its position\n const newColumnState = currentColumns.map((col) => {\n if (col.accessor === column) {\n return { ...col, active: !col.active }\n }\n return col\n })\n\n startTransition(() => {\n setOptimisticColumnState(newColumnState)\n })\n\n await refineListData({\n columns: transformColumnsToSearchParams(newColumnState),\n })\n },\n [refineListData, columnState, setOptimisticColumnState],\n )\n\n const moveColumn = useCallback(\n async (args: { fromIndex: number; toIndex: number }) => {\n const { fromIndex, toIndex } = args\n const newColumnState = [...(columnState || [])]\n const [columnToMove] = newColumnState.splice(fromIndex, 1)\n newColumnState.splice(toIndex, 0, columnToMove)\n\n startTransition(() => {\n setOptimisticColumnState(newColumnState)\n })\n\n await refineListData({\n columns: transformColumnsToSearchParams(newColumnState),\n })\n },\n [columnState, refineListData, setOptimisticColumnState],\n )\n\n const setActiveColumns = useCallback(\n async (columns: string[]) => {\n const newColumnState = currentQuery.columns\n\n columns.forEach((colName) => {\n const colIndex = newColumnState.findIndex((c) => colName === c)\n\n // ensure the name does not begin with a `-` which denotes an inactive column\n if (colIndex !== undefined && newColumnState[colIndex][0] === '-') {\n newColumnState[colIndex] = colName.slice(1)\n }\n })\n\n await refineListData({ columns: newColumnState })\n },\n [currentQuery, refineListData],\n )\n\n const resetColumnsState = React.useCallback(async () => {\n await refineListData({ columns: defaultColumns || [] })\n }, [defaultColumns, refineListData])\n\n const setColumns = useCallback(\n async (newColumns: Column[]) => {\n startTransition(() => {\n setOptimisticColumnState(newColumns)\n })\n\n await refineListData({\n columns: transformColumnsToSearchParams(newColumns),\n })\n },\n [refineListData, setOptimisticColumnState],\n )\n\n return (\n <TableColumnContext\n value={{\n columns: columnState,\n LinkedCellOverride,\n moveColumn,\n resetColumnsState,\n setActiveColumns,\n setColumns,\n toggleColumn,\n ...contextRef.current,\n }}\n >\n {children}\n </TableColumnContext>\n )\n}\n"],"mappings":"AAAA;;;AAEA,SAASA,8BAA8B,QAAQ;AAC/C,OAAOC,KAAA,IAASC,eAAe,EAAEC,WAAW,EAAEC,SAAS,EAAEC,MAAM,QAAQ;AAIvE,SAASC,SAAS,QAAQ;AAC1B,SAASC,YAAY,QAAQ;AAC7B,SAASC,kBAAkB,QAAQ;AAEnC,SAASC,eAAe,QAAQ;AAEhC,OAAO,MAAMC,oBAAA,GAA4DA,CAAC;EACxEC,QAAQ;EACRC,cAAc;EACdC,WAAA,EAAaC,oBAAoB;EACjCC;AAAkB,CACnB;EACC,MAAM;IAAEC;EAAe,CAAE,GAAGV,SAAA;EAC5B,MAAM;IAAEW,KAAA,EAAOC,YAAY;IAAEC;EAAc,CAAE,GAAGZ,YAAA;EAEhD,MAAM;IAAEa,KAAA,EAAO;MAAEC;IAAc,CAAE,GAAG,CAAC;EAAC,CAAE,GAAGL,eAAA,CAAgB;IACzDJ;EACF;EAEA,MAAM,CAACC,WAAA,EAAaS,wBAAA,CAAyB,GAAGrB,KAAA,CAAMsB,aAAa,CACjET,oBAAA,EACA,CAACU,KAAA,EAAOC,MAAA,KAAqBA,MAAA;EAG/B;EACA,MAAMC,YAAA,GAAerB,MAAA,CAAOS,oBAAA;EAC5BV,SAAA,CAAU;IACR,IAAIU,oBAAA,KAAyBY,YAAA,CAAaC,OAAO,EAAE;MACjDD,YAAA,CAAaC,OAAO,GAAGb,oBAAA;MACvB;MACAZ,eAAA,CAAgB;QACdoB,wBAAA,CAAyBR,oBAAA;MAC3B;IACF;EACF,GAAG,CAACA,oBAAA,EAAsBQ,wBAAA,CAAyB;EAEnD,MAAMM,UAAA,GAAavB,MAAA,CAAO,CAAC;EAE3B,MAAMwB,YAAA,GAAe1B,WAAA,CACnB,MAAO2B,MAAA;IACL,MAAMC,cAAA,GAAiBlB,WAAA,IAAe,EAAE;IACxC,MAAMmB,WAAA,GAAcD,cAAA,CAAeE,SAAS,CAAEC,GAAA,IAAQA,GAAA,CAAIC,QAAQ,KAAKL,MAAA;IAEvE,IAAIE,WAAA,KAAgB,CAAC,GAAG;MACtB;IACF;IAEA;IACA,MAAMI,cAAA,GAAiBL,cAAA,CAAeM,GAAG,CAAEH,KAAA;MACzC,IAAIA,KAAA,CAAIC,QAAQ,KAAKL,MAAA,EAAQ;QAC3B,OAAO;UAAE,GAAGI,KAAG;UAAEI,MAAA,EAAQ,CAACJ,KAAA,CAAII;QAAO;MACvC;MACA,OAAOJ,KAAA;IACT;IAEAhC,eAAA,CAAgB;MACdoB,wBAAA,CAAyBc,cAAA;IAC3B;IAEA,MAAMjB,cAAA,CAAe;MACnBoB,OAAA,EAASvC,8BAAA,CAA+BoC,cAAA;IAC1C;EACF,GACA,CAACjB,cAAA,EAAgBN,WAAA,EAAaS,wBAAA,CAAyB;EAGzD,MAAMkB,UAAA,GAAarC,WAAA,CACjB,MAAOsC,IAAA;IACL,MAAM;MAAEC,SAAS;MAAEC;IAAO,CAAE,GAAGF,IAAA;IAC/B,MAAML,gBAAA,GAAiB,C,IAAKvB,WAAA,IAAe,EAAE,EAAE;IAC/C,MAAM,CAAC+B,YAAA,CAAa,GAAGR,gBAAA,CAAeS,MAAM,CAACH,SAAA,EAAW;IACxDN,gBAAA,CAAeS,MAAM,CAACF,OAAA,EAAS,GAAGC,YAAA;IAElC1C,eAAA,CAAgB;MACdoB,wBAAA,CAAyBc,gBAAA;IAC3B;IAEA,MAAMjB,cAAA,CAAe;MACnBoB,OAAA,EAASvC,8BAAA,CAA+BoC,gBAAA;IAC1C;EACF,GACA,CAACvB,WAAA,EAAaM,cAAA,EAAgBG,wBAAA,CAAyB;EAGzD,MAAMwB,gBAAA,GAAmB3C,WAAA,CACvB,MAAOoC,OAAA;IACL,MAAMH,gBAAA,GAAiBlB,YAAA,CAAaqB,OAAO;IAE3CA,OAAA,CAAQQ,OAAO,CAAEC,OAAA;MACf,MAAMC,QAAA,GAAWb,gBAAA,CAAeH,SAAS,CAAEiB,CAAA,IAAMF,OAAA,KAAYE,CAAA;MAE7D;MACA,IAAID,QAAA,KAAaE,SAAA,IAAaf,gBAAc,CAACa,QAAA,CAAS,CAAC,EAAE,KAAK,KAAK;QACjEb,gBAAc,CAACa,QAAA,CAAS,GAAGD,OAAA,CAAQI,KAAK,CAAC;MAC3C;IACF;IAEA,MAAMjC,cAAA,CAAe;MAAEoB,OAAA,EAASH;IAAe;EACjD,GACA,CAAClB,YAAA,EAAcC,cAAA,CAAe;EAGhC,MAAMkC,iBAAA,GAAoBpD,KAAA,CAAME,WAAW,CAAC;IAC1C,MAAMgB,cAAA,CAAe;MAAEoB,OAAA,EAASlB,cAAA,IAAkB;IAAG;EACvD,GAAG,CAACA,cAAA,EAAgBF,cAAA,CAAe;EAEnC,MAAMmC,UAAA,GAAanD,WAAA,CACjB,MAAOoD,UAAA;IACLrD,eAAA,CAAgB;MACdoB,wBAAA,CAAyBiC,UAAA;IAC3B;IAEA,MAAMpC,cAAA,CAAe;MACnBoB,OAAA,EAASvC,8BAAA,CAA+BuD,UAAA;IAC1C;EACF,GACA,CAACpC,cAAA,EAAgBG,wBAAA,CAAyB;EAG5C,oBACEkC,IAAA,CAAChD,kBAAA;IACCiD,KAAA,EAAO;MACLlB,OAAA,EAAS1B,WAAA;MACTE,kBAAA;MACAyB,UAAA;MACAa,iBAAA;MACAP,gBAAA;MACAQ,UAAA;MACAzB,YAAA;MACA,GAAGD,UAAA,CAAWD;IAChB;cAEChB;;AAGP","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["transformColumnsToSearchParams","React","useCallback","useRef","useConfig","useListQuery","useRouteTransition","TableColumnContext","useTableColumns","TableColumnsProvider","children","collectionSlug","columnState","columnStateFromProps","LinkedCellOverride","getEntityConfig","query","currentQuery","refineListData","startRouteTransition","admin","defaultColumns","setOptimisticColumnState","useOptimistic","contextRef","setColumns","newColumns","columns","toggleColumn","column","currentColumns","columnIndex","findIndex","col","accessor","newColumnState","map","active","moveColumn","args","fromIndex","toIndex","columnToMove","splice","setActiveColumns","forEach","colName","colIndex","c","undefined","slice","resetColumnsState","_jsx","value","current"],"sources":["../../../src/providers/TableColumns/index.tsx"],"sourcesContent":["'use client'\nimport { type Column } from 'payload'\nimport { transformColumnsToSearchParams } from 'payload/shared'\nimport React, { useCallback, useRef } from 'react'\n\nimport type { ITableColumns, TableColumnsProviderProps } from './types.js'\n\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useListQuery } from '../../providers/ListQuery/index.js'\nimport { useRouteTransition } from '../RouteTransition/index.js'\nimport { TableColumnContext } from './context.js'\n\nexport { useTableColumns } from './context.js'\n\nexport const TableColumnsProvider: React.FC<TableColumnsProviderProps> = ({\n children,\n collectionSlug,\n columnState: columnStateFromProps,\n LinkedCellOverride,\n}) => {\n const { getEntityConfig } = useConfig()\n const { query: currentQuery, refineListData } = useListQuery()\n const { startRouteTransition } = useRouteTransition()\n\n const { admin: { defaultColumns } = {} } = getEntityConfig({\n collectionSlug,\n })\n\n const [columnState, setOptimisticColumnState] = React.useOptimistic(columnStateFromProps)\n\n const contextRef = useRef({} as ITableColumns)\n\n const setColumns = useCallback(\n async (newColumns: Column[]) => {\n await startRouteTransition(async () => {\n setOptimisticColumnState(newColumns)\n\n await refineListData({\n columns: transformColumnsToSearchParams(newColumns),\n })\n })\n },\n [refineListData, setOptimisticColumnState, startRouteTransition],\n )\n\n const toggleColumn = useCallback(\n async (column: string) => {\n const currentColumns = columnState || []\n const columnIndex = currentColumns.findIndex((col) => col.accessor === column)\n\n if (columnIndex === -1) {\n return\n }\n\n // Toggle the column's active state in place, preserving its position\n const newColumnState = currentColumns.map((col) => {\n if (col.accessor === column) {\n return { ...col, active: !col.active }\n }\n return col\n })\n\n await setColumns(newColumnState)\n },\n [columnState, setColumns],\n )\n\n const moveColumn = useCallback(\n async (args: { fromIndex: number; toIndex: number }) => {\n const { fromIndex, toIndex } = args\n const newColumnState = [...(columnState || [])]\n const [columnToMove] = newColumnState.splice(fromIndex, 1)\n newColumnState.splice(toIndex, 0, columnToMove)\n\n await setColumns(newColumnState)\n },\n [columnState, setColumns],\n )\n\n const setActiveColumns = useCallback(\n async (columns: string[]) => {\n const newColumnState = currentQuery.columns\n\n columns.forEach((colName) => {\n const colIndex = newColumnState.findIndex((c) => colName === c)\n\n // ensure the name does not begin with a `-` which denotes an inactive column\n if (colIndex !== undefined && newColumnState[colIndex][0] === '-') {\n newColumnState[colIndex] = colName.slice(1)\n }\n })\n\n await refineListData({ columns: newColumnState })\n },\n [currentQuery, refineListData],\n )\n\n const resetColumnsState = React.useCallback(async () => {\n await refineListData({ columns: defaultColumns || [] })\n }, [defaultColumns, refineListData])\n\n return (\n <TableColumnContext\n value={{\n columns: columnState,\n LinkedCellOverride,\n moveColumn,\n resetColumnsState,\n setActiveColumns,\n setColumns,\n toggleColumn,\n ...contextRef.current,\n }}\n >\n {children}\n </TableColumnContext>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","createContext","use","useCallback","useEffect","useState","useConfig","useSearchParams","defaultTheme","initialContext","autoMode","highContrastMode","setHighContrastMode","setTheme","theme","Context","undefined","setCookie","cname","cvalue","exdays","d","Date","setTime","getTime","expires","toUTCString","document","cookie","detectTheme","cookieKey","fromCookie","window","split","find","row","startsWith","matchMedia","matches","documentElement","setAttribute","isAutoMode","detectHighContrastMode","isHighContrast","removeAttribute","isValidThemeParam","value","ThemeProvider","t0","$","children","initialHighContrastMode","themeOverride","outerContext","isScoped","config","preselectedTheme","admin","themeCookieKey","cookiePrefix","contrastCookieKey","themeParam","get","toLowerCase","setThemeState","setAutoMode","setHighContrastModeState","t1","themeToSet","options","scoped","resolvedTheme","t2","options_0","String","t3","t4","t5","t6","t7","detectedTheme","t8","t9","t10","t11","t12","_jsx","useTheme"],"sources":["../../../src/providers/Theme/index.tsx"],"sourcesContent":["'use client'\nimport React, { createContext, use, useCallback, useEffect, useState } from 'react'\n\nimport { useConfig } from '../Config/index.js'\nimport { useSearchParams } from '../RouterAdapter/index.js'\nimport { defaultTheme, type Theme } from './shared.js'\n\nexport { defaultTheme, type Theme }\n\nexport type ThemeContext = {\n autoMode: boolean\n highContrastMode: boolean\n setHighContrastMode: (isHighContrast: boolean, options?: { scoped?: boolean }) => void\n setTheme: (theme: 'auto' | Theme, options?: { scoped?: boolean }) => void\n theme: Theme\n}\n\nconst initialContext: ThemeContext = {\n autoMode: true,\n highContrastMode: false,\n setHighContrastMode: () => null,\n setTheme: () => null,\n theme: 'light',\n}\n\nconst Context = createContext<ThemeContext | undefined>(undefined)\n\nfunction setCookie(cname: string, cvalue: string, exdays: number) {\n const d = new Date()\n d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000)\n const expires = 'expires=' + d.toUTCString()\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/'\n}\n\nconst detectTheme = (cookieKey: string): { isAutoMode: boolean; theme: Theme } => {\n const fromCookie = window.document.cookie\n .split('; ')\n .find((row) => row.startsWith(`${cookieKey}=`))\n ?.split('=')[1]\n\n const theme: Theme =\n fromCookie === 'light' || fromCookie === 'dark'\n ? fromCookie\n : window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light'\n\n document.documentElement.setAttribute('data-theme', theme)\n\n return { isAutoMode: fromCookie !== 'light' && fromCookie !== 'dark', theme }\n}\n\nconst detectHighContrastMode = (cookieKey: string): boolean => {\n const fromCookie =\n window.document.cookie\n .split('; ')\n .find((row) => row.startsWith(`${cookieKey}=`))\n ?.split('=')[1] ?? null\n\n const isHighContrast =\n fromCookie === 'true'\n ? true\n : fromCookie === 'false'\n ? false\n : !!(window.matchMedia && window.matchMedia('(prefers-contrast: more)').matches)\n\n if (isHighContrast) {\n document.documentElement.setAttribute('data-enhanced-contrast', '')\n } else {\n document.documentElement.removeAttribute('data-enhanced-contrast')\n }\n\n return isHighContrast\n}\n\nconst isValidThemeParam = (value: null | string): value is 'auto' | Theme =>\n value === 'auto' || value === 'light' || value === 'dark'\n\n/**\n * Provides theme context to its children.\n *\n * At the root (no parent ThemeProvider): reads/writes cookies, responds to\n * OS preference, owns setTheme and setHighContrastMode.\n *\n * When nested inside another ThemeProvider (e.g. inside a Popup): acts as a\n * scoped visual the `theme` prop sets the local theme, but setThemeoverride\n * and setHighContrastMode bubble up through each level to the root provider so\n * mutations always affect the global user preference.\n *\n * The ThemeProvider also reads the `?theme=light|dark|auto` query parameter and\n * persists it to the theme cookie using the same mechanism as manual theme selection.\n */\nexport const ThemeProvider: React.FC<{\n children?: React.ReactNode\n highContrastMode?: boolean\n theme?: Theme\n}> = ({ children, highContrastMode: initialHighContrastMode, theme: themeOverride }) => {\n const outerContext = use(Context)\n const isScoped = outerContext !== undefined\n\n const { config } = useConfig()\n const preselectedTheme = config.admin.theme\n const themeCookieKey = `${config.cookiePrefix || 'payload'}-theme`\n const contrastCookieKey = `${config.cookiePrefix || 'payload'}-high-contrast-mode`\n\n const themeParam = useSearchParams().get('theme')?.toLowerCase()\n\n const [theme, setThemeState] = useState<Theme>(themeOverride ?? defaultTheme)\n const [autoMode, setAutoMode] = useState<boolean>(!isScoped)\n const [highContrastMode, setHighContrastModeState] = useState<boolean>(\n isScoped ? (outerContext.highContrastMode ?? false) : (initialHighContrastMode ?? false),\n )\n\n // Setters bubble up to the root provider by default. Pass { scoped: true }\n // to update only the local (scoped) theme without affecting global state.\n const setTheme = useCallback(\n (themeToSet: 'auto' | Theme, options?: { scoped?: boolean }) => {\n if (isScoped && !options?.scoped) {\n outerContext.setTheme(themeToSet, options)\n return\n }\n const resolvedTheme: Theme =\n themeToSet === 'auto'\n ? window.matchMedia?.('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light'\n : themeToSet\n\n setThemeState(resolvedTheme)\n setAutoMode(themeToSet === 'auto')\n\n if (!isScoped) {\n setCookie(themeCookieKey, themeToSet, themeToSet === 'auto' ? -1 : 365)\n document.documentElement.setAttribute('data-theme', resolvedTheme)\n }\n },\n [isScoped, outerContext, themeCookieKey],\n )\n\n const setHighContrastMode = useCallback(\n (isHighContrast: boolean, options?: { scoped?: boolean }) => {\n if (isScoped && !options?.scoped) {\n outerContext.setHighContrastMode(isHighContrast, options)\n return\n }\n setHighContrastModeState(isHighContrast)\n if (!isScoped) {\n setCookie(contrastCookieKey, String(isHighContrast), 365)\n if (isHighContrast) {\n document.documentElement.setAttribute('data-enhanced-contrast', '')\n } else {\n document.documentElement.removeAttribute('data-enhanced-contrast')\n }\n }\n },\n [isScoped, outerContext, contrastCookieKey],\n )\n\n // Keep highContrastMode in sync with the outer provider when scoped.\n useEffect(() => {\n if (isScoped) {\n setHighContrastModeState(outerContext.highContrastMode)\n }\n }, [isScoped, outerContext?.highContrastMode])\n\n // Resolve the root theme: a valid `?theme` param wins (applied via setTheme so\n // it persists to the theme cookie exactly like a manual selection; otherwise\n // fall back to the cookie or OS preference.\n useEffect(() => {\n if (isScoped || preselectedTheme !== 'all') {\n return\n }\n if (isValidThemeParam(themeParam)) {\n setTheme(themeParam)\n return\n }\n const { isAutoMode, theme: detectedTheme } = detectTheme(themeCookieKey)\n setThemeState(detectedTheme)\n setAutoMode(isAutoMode)\n }, [isScoped, preselectedTheme, themeCookieKey, themeParam, setTheme])\n\n useEffect(() => {\n if (isScoped) {\n return\n }\n setHighContrastModeState(detectHighContrastMode(contrastCookieKey))\n }, [isScoped, contrastCookieKey])\n\n return (\n <Context\n value={{\n autoMode: isScoped ? outerContext.autoMode : autoMode,\n highContrastMode,\n setHighContrastMode,\n setTheme,\n theme: isScoped ? outerContext.theme : theme,\n }}\n >\n {children}\n </Context>\n )\n}\n\nexport const useTheme = (): ThemeContext => use(Context) ?? initialContext\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,OAAOC,KAAA,IAASC,aAAa,EAAEC,GAAG,EAAEC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ;AAE5E,SAASC,SAAS,QAAQ;AAC1B,SAASC,eAAe,QAAQ;AAChC,SAASC,YAAY,QAAoB;AAEzC,SAASA,YAAY;AAUrB,MAAMC,cAAA,GAA+B;EACnCC,QAAA,EAAU;EACVC,gBAAA,EAAkB;EAClBC,mBAAA,EAAqBA,CAAA,KAAM;EAC3BC,QAAA,EAAUA,CAAA,KAAM;EAChBC,KAAA,EAAO;AACT;AAEA,MAAMC,OAAA,gBAAUd,aAAA,CAAwCe,SAAA;AAExD,SAASC,UAAUC,KAAa,EAAEC,MAAc,EAAEC,MAAc;EAC9D,MAAMC,CAAA,GAAI,IAAIC,IAAA;EACdD,CAAA,CAAEE,OAAO,CAACF,CAAA,CAAEG,OAAO,KAAKJ,MAAA,GAAS,KAAK,KAAK,KAAK;EAChD,MAAMK,OAAA,GAAU,aAAaJ,CAAA,CAAEK,WAAW;EAC1CC,QAAA,CAASC,MAAM,GAAGV,KAAA,GAAQ,MAAMC,MAAA,GAAS,MAAMM,OAAA,GAAU;AAC3D;AAEA,MAAMI,WAAA,GAAeC,SAAA;EACnB,MAAMC,UAAA,GAAaC,MAAA,CAAOL,QAAQ,CAACC,MAAM,CACtCK,KAAK,CAAC,MACNC,IAAI,CAAEC,GAAA,IAAQA,GAAA,CAAIC,UAAU,CAAC,GAAGN,SAAA,GAAY,IAC3CG,KAAA,CAAM,IAAI,CAAC,EAAE;EAEjB,MAAMnB,KAAA,GACJiB,UAAA,KAAe,WAAWA,UAAA,KAAe,SACrCA,UAAA,GACAC,MAAA,CAAOK,UAAU,IAAIL,MAAA,CAAOK,UAAU,CAAC,gCAAgCC,OAAO,GAC5E,SACA;EAERX,QAAA,CAASY,eAAe,CAACC,YAAY,CAAC,cAAc1B,KAAA;EAEpD,OAAO;IAAE2B,UAAA,EAAYV,UAAA,KAAe,WAAWA,UAAA,KAAe;IAAQjB;EAAM;AAC9E;AAEA,MAAM4B,sBAAA,GAA0BZ,SAAA;EAC9B,MAAMC,UAAA,GACJC,MAAA,CAAOL,QAAQ,CAACC,MAAM,CACnBK,KAAK,CAAC,MACNC,IAAI,CAAEC,GAAA,IAAQA,GAAA,CAAIC,UAAU,CAAC,GAAGN,SAAA,GAAY,IAC3CG,KAAA,CAAM,IAAI,CAAC,EAAE,IAAI;EAEvB,MAAMU,cAAA,GACJZ,UAAA,KAAe,SACX,OACAA,UAAA,KAAe,UACb,QACA,CAAC,EAAEC,MAAA,CAAOK,UAAU,IAAIL,MAAA,CAAOK,UAAU,CAAC,4BAA4BC,OAAO,CAAD;EAEpF,IAAIK,cAAA,EAAgB;IAClBhB,QAAA,CAASY,eAAe,CAACC,YAAY,CAAC,0BAA0B;EAClE,OAAO;IACLb,QAAA,CAASY,eAAe,CAACK,eAAe,CAAC;EAC3C;EAEA,OAAOD,cAAA;AACT;AAEA,MAAME,iBAAA,GAAqBC,KAAA,IACzBA,KAAA,KAAU,UAAUA,KAAA,KAAU,WAAWA,KAAA,KAAU;AAErD;;;;;;;;;;;;;;AAcA,OAAO,MAAMC,aAAA,GAIRC,EAAA;EAAA,MAAAC,CAAA,GAAAlD,EAAA;EAAC;IAAAmD,QAAA;IAAAvC,gBAAA,EAAAwC,uBAAA;IAAArC,KAAA,EAAAsC;EAAA,IAAAJ,EAA6E;EACjF,MAAAK,YAAA,GAAqBnD,GAAA,CAAAa,OAAI;EACzB,MAAAuC,QAAA,GAAiBD,YAAA,KAAArC,SAAiB;EAElC;IAAAuC;EAAA,IAAmBjD,SAAA;EACnB,MAAAkD,gBAAA,GAAyBD,MAAA,CAAAE,KAAA,CAAA3C,KAAA;EACzB,MAAA4C,cAAA,GAAuB,GAAGH,MAAA,CAAAI,YAAA,IAAuB,iBAAiB;EAClE,MAAAC,iBAAA,GAA0B,GAAGL,MAAA,CAAAI,YAAA,IAAuB,8BAA8B;EAElF,MAAAE,UAAA,GAAmBtD,eAAA,GAAAuD,GAAA,CAAsB,UAAAC,WAAA;EAEzC,OAAAjD,KAAA,EAAAkD,aAAA,IAA+B3D,QAAA,CAAgB+C,aAAA,IAAA5C,YAAiB;EAChE,OAAAE,QAAA,EAAAuD,WAAA,IAAgC5D,QAAA,EAAmBiD,QAAA;EACnD,OAAA3C,gBAAA,EAAAuD,wBAAA,IAAqD7D,QAAA,CACnDiD,QAAA,GAAYD,YAAA,CAAA1C,gBAAA,SAAiC,GAAUwC,uBAAA,SAA2B;EAAA,IAAAgB,EAAA;EAAA,IAAAlB,CAAA,QAAAK,QAAA,IAAAL,CAAA,QAAAI,YAAA,IAAAJ,CAAA,QAAAS,cAAA;IAMlFS,EAAA,GAAAA,CAAAC,UAAA,EAAAC,OAAA;MAAA,IACMf,QAAA,KAAae,OAAA,EAAAC,MAAS;QACxBjB,YAAA,CAAAxC,QAAA,CAAsBuD,UAAA,EAAYC,OAAA;QAAA;MAAA;MAGpC,MAAAE,aAAA,GACEH,UAAA,KAAe,SACXpC,MAAA,CAAAK,UAAA,GAAoB,gCAAAC,OAAA,GAClB,SACA,UACF8B,UAAA;MAENJ,aAAA,CAAcO,aAAA;MACdN,WAAA,CAAYG,UAAA,KAAe;MAAA,KAEtBd,QAAA;QACHrC,SAAA,CAAUyC,cAAA,EAAgBU,UAAA,EAAYA,UAAA,KAAe,iBAAc;QACnEzC,QAAA,CAAAY,eAAA,CAAAC,YAAA,CAAsC,cAAc+B,aAAA;MAAA;IAAA;IAExDtB,CAAA,MAAAK,QAAA;IAAAL,CAAA,MAAAI,YAAA;IAAAJ,CAAA,MAAAS,cAAA;IAAAT,CAAA,MAAAkB,EAAA;EAAA;IAAAA,EAAA,GAAAlB,CAAA;EAAA;EApBF,MAAApC,QAAA,GAAiBsD,EAqByB;EAAA,IAAAK,EAAA;EAAA,IAAAvB,CAAA,QAAAW,iBAAA,IAAAX,CAAA,QAAAK,QAAA,IAAAL,CAAA,QAAAI,YAAA;IAIxCmB,EAAA,GAAAA,CAAA7B,cAAA,EAAA8B,SAAA;MAAA,IACMnB,QAAA,KAAae,SAAA,EAAAC,MAAS;QACxBjB,YAAA,CAAAzC,mBAAA,CAAiC+B,cAAA,EAAgB0B,SAAA;QAAA;MAAA;MAGnDH,wBAAA,CAAyBvB,cAAA;MAAA,KACpBW,QAAA;QACHrC,SAAA,CAAU2C,iBAAA,EAAmBc,MAAA,CAAO/B,cAAA,MAAiB;QAAA,IACjDA,cAAA;UACFhB,QAAA,CAAAY,eAAA,CAAAC,YAAA,CAAsC,0BAA0B;QAAA;UAEhEb,QAAA,CAAAY,eAAA,CAAAK,eAAA,CAAyC;QAAA;MAAA;IAAA;IAG/CK,CAAA,MAAAW,iBAAA;IAAAX,CAAA,MAAAK,QAAA;IAAAL,CAAA,MAAAI,YAAA;IAAAJ,CAAA,MAAAuB,EAAA;EAAA;IAAAA,EAAA,GAAAvB,CAAA;EAAA;EAfF,MAAArC,mBAAA,GAA4B4D,EAgBiB;EAAA,IAAAG,EAAA;EAAA,IAAA1B,CAAA,QAAAK,QAAA,IAAAL,CAAA,QAAAI,YAAA;IAInCsB,EAAA,GAAAA,CAAA;MAAA,IACJrB,QAAA;QACFY,wBAAA,CAAyBb,YAAA,CAAA1C,gBAA6B;MAAA;IAAA;IAE1DsC,CAAA,MAAAK,QAAA;IAAAL,CAAA,MAAAI,YAAA;IAAAJ,CAAA,OAAA0B,EAAA;EAAA;IAAAA,EAAA,GAAA1B,CAAA;EAAA;EAAc,MAAA2B,EAAA,GAAAvB,YAAA,EAAA1C,gBAAA;EAAc,IAAAkE,EAAA;EAAA,IAAA5B,CAAA,SAAAK,QAAA,IAAAL,CAAA,SAAA2B,EAAA;IAAzBC,EAAA,IAACvB,QAAA,EAAUsB,EAAc;IAAiB3B,CAAA,OAAAK,QAAA;IAAAL,CAAA,OAAA2B,EAAA;IAAA3B,CAAA,OAAA4B,EAAA;EAAA;IAAAA,EAAA,GAAA5B,CAAA;EAAA;EAJ7C7C,SAAA,CAAUuE,EAIV,EAAGE,EAA0C;EAAA,IAAAC,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAA9B,CAAA,SAAAK,QAAA,IAAAL,CAAA,SAAAO,gBAAA,IAAAP,CAAA,SAAApC,QAAA,IAAAoC,CAAA,SAAAS,cAAA,IAAAT,CAAA,SAAAY,UAAA;IAKnCiB,EAAA,GAAAA,CAAA;MAAA,IACJxB,QAAA,IAAYE,gBAAA,KAAqB;QAAA;MAAA;MAAA,IAGjCX,iBAAA,CAAkBgB,UAAA;QACpBhD,QAAA,CAASgD,UAAA;QAAA;MAAA;MAGX;QAAApB,UAAA;QAAA3B,KAAA,EAAAkE;MAAA,IAA6CnD,WAAA,CAAY6B,cAAA;MACzDM,aAAA,CAAcgB,aAAA;MACdf,WAAA,CAAYxB,UAAA;IAAA;IACXsC,EAAA,IAACzB,QAAA,EAAUE,gBAAA,EAAkBE,cAAA,EAAgBG,UAAA,EAAYhD,QAAA;IAASoC,CAAA,OAAAK,QAAA;IAAAL,CAAA,OAAAO,gBAAA;IAAAP,CAAA,OAAApC,QAAA;IAAAoC,CAAA,OAAAS,cAAA;IAAAT,CAAA,OAAAY,UAAA;IAAAZ,CAAA,OAAA6B,EAAA;IAAA7B,CAAA,OAAA8B,EAAA;EAAA;IAAAD,EAAA,GAAA7B,CAAA;IAAA8B,EAAA,GAAA9B,CAAA;EAAA;EAXrE7C,SAAA,CAAU0E,EAWV,EAAGC,EAAkE;EAAA,IAAAE,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAjC,CAAA,SAAAW,iBAAA,IAAAX,CAAA,SAAAK,QAAA;IAE3D2B,EAAA,GAAAA,CAAA;MAAA,IACJ3B,QAAA;QAAA;MAAA;MAGJY,wBAAA,CAAyBxB,sBAAA,CAAuBkB,iBAAA;IAAA;IAC/CsB,EAAA,IAAC5B,QAAA,EAAUM,iBAAA;IAAkBX,CAAA,OAAAW,iBAAA;IAAAX,CAAA,OAAAK,QAAA;IAAAL,CAAA,OAAAgC,EAAA;IAAAhC,CAAA,OAAAiC,EAAA;EAAA;IAAAD,EAAA,GAAAhC,CAAA;IAAAiC,EAAA,GAAAjC,CAAA;EAAA;EALhC7C,SAAA,CAAU6E,EAKV,EAAGC,EAA6B;EAKhB,MAAAC,GAAA,GAAA7B,QAAA,GAAWD,YAAA,CAAA3C,QAAA,GAAwBA,QAAA;EAItC,MAAA0E,GAAA,GAAA9B,QAAA,GAAWD,YAAA,CAAAvC,KAAA,GAAqBA,KAAA;EAAA,IAAAuE,GAAA;EAAA,IAAApC,CAAA,SAAAC,QAAA,IAAAD,CAAA,SAAAtC,gBAAA,IAAAsC,CAAA,SAAArC,mBAAA,IAAAqC,CAAA,SAAApC,QAAA,IAAAoC,CAAA,SAAAkC,GAAA,IAAAlC,CAAA,SAAAmC,GAAA;IAN3CC,GAAA,GAAAC,IAAA,CAAAvE,OAAA;MAAA+B,KAAA;QAAApC,QAAA,EAEcyE,GAAmC;QAAAxE,gBAAA;QAAAC,mBAAA;QAAAC,QAAA;QAAAC,KAAA,EAItCsE;MAAgC;MAAAlC;IAAA,C;;;;;;;;;;;SAN3CmC,G;CAYJ;AAEA,OAAO,MAAME,QAAA,GAAWA,CAAA,KAAoBrF,GAAA,CAAIa,OAAA,KAAYN,cAAA","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","createContext","use","useCallback","useEffect","useState","useConfig","useSearchParams","defaultTheme","initialContext","autoMode","highContrastMode","setHighContrastMode","setTheme","theme","Context","undefined","setCookie","cname","cvalue","exdays","d","Date","setTime","getTime","expires","toUTCString","document","cookie","detectTheme","cookieKey","fromCookie","window","split","find","row","startsWith","matchMedia","matches","documentElement","setAttribute","isAutoMode","detectHighContrastMode","isHighContrast","removeAttribute","isValidThemeParam","value","ThemeProvider","t0","$","children","initialHighContrastMode","themeOverride","outerContext","isScoped","config","preselectedTheme","admin","themeCookieKey","cookiePrefix","contrastCookieKey","themeParam","get","toLowerCase","setThemeState","setAutoMode","setHighContrastModeState","t1","themeToSet","options","scoped","resolvedTheme","t2","options_0","String","t3","t4","t5","t6","t7","detectedTheme","t8","t9","t10","t11","t12","_jsx","useTheme"],"sources":["../../../src/providers/Theme/index.tsx"],"sourcesContent":["'use client'\nimport React, { createContext, use, useCallback, useEffect, useState } from 'react'\n\nimport { useConfig } from '../Config/index.js'\nimport { useSearchParams } from '../RouterAdapter/index.js'\nimport { defaultTheme, type Theme } from './shared.js'\n\nexport { defaultTheme, type Theme }\n\nexport type ThemeContext = {\n autoMode: boolean\n highContrastMode: boolean\n setHighContrastMode: (isHighContrast: boolean, options?: { scoped?: boolean }) => void\n setTheme: (theme: 'auto' | Theme, options?: { scoped?: boolean }) => void\n theme: Theme\n}\n\nconst initialContext: ThemeContext = {\n autoMode: true,\n highContrastMode: false,\n setHighContrastMode: () => null,\n setTheme: () => null,\n theme: 'light',\n}\n\nconst Context = createContext<ThemeContext | undefined>(undefined)\n\nfunction setCookie(cname: string, cvalue: string, exdays: number) {\n const d = new Date()\n d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000)\n const expires = 'expires=' + d.toUTCString()\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/'\n}\n\nconst detectTheme = (cookieKey: string): { isAutoMode: boolean; theme: Theme } => {\n const fromCookie = window.document.cookie\n .split('; ')\n .find((row) => row.startsWith(`${cookieKey}=`))\n ?.split('=')[1]\n\n const theme: Theme =\n fromCookie === 'light' || fromCookie === 'dark'\n ? fromCookie\n : window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light'\n\n document.documentElement.setAttribute('data-theme', theme)\n\n return { isAutoMode: fromCookie !== 'light' && fromCookie !== 'dark', theme }\n}\n\nconst detectHighContrastMode = (cookieKey: string): boolean => {\n const fromCookie =\n window.document.cookie\n .split('; ')\n .find((row) => row.startsWith(`${cookieKey}=`))\n ?.split('=')[1] ?? null\n\n const isHighContrast =\n fromCookie === 'true'\n ? true\n : fromCookie === 'false'\n ? false\n : !!(window.matchMedia && window.matchMedia('(prefers-contrast: more)').matches)\n\n if (isHighContrast) {\n document.documentElement.setAttribute('data-enhanced-contrast', '')\n } else {\n document.documentElement.removeAttribute('data-enhanced-contrast')\n }\n\n return isHighContrast\n}\n\nconst isValidThemeParam = (value: null | string): value is 'auto' | Theme =>\n value === 'auto' || value === 'light' || value === 'dark'\n\n/**\n * Provides theme context to its children.\n *\n * At the root (no parent ThemeProvider): reads/writes cookies, responds to\n * OS preference, owns setTheme and setHighContrastMode.\n *\n * When nested inside another ThemeProvider (e.g. inside a Popup): acts as a\n * scoped visual the `theme` prop sets the local theme, but setThemeoverride\n * and setHighContrastMode bubble up through each level to the root provider so\n * mutations always affect the global user preference.\n *\n * The ThemeProvider also reads the `?theme=light|dark|auto` query parameter and\n * persists it to the theme cookie using the same mechanism as manual theme selection.\n */\nexport const ThemeProvider: React.FC<{\n children?: React.ReactNode\n highContrastMode?: boolean\n theme?: Theme\n}> = ({ children, highContrastMode: initialHighContrastMode, theme: themeOverride }) => {\n const outerContext = use(Context)\n const isScoped = outerContext !== undefined\n\n const { config } = useConfig()\n const preselectedTheme = config.admin.theme\n const themeCookieKey = `${config.cookiePrefix || 'payload'}-theme`\n const contrastCookieKey = `${config.cookiePrefix || 'payload'}-high-contrast-mode`\n\n const themeParam = useSearchParams().get('theme')?.toLowerCase()\n\n const [theme, setThemeState] = useState<Theme>(themeOverride ?? defaultTheme)\n const [autoMode, setAutoMode] = useState<boolean>(!isScoped)\n const [highContrastMode, setHighContrastModeState] = useState<boolean>(\n isScoped ? (outerContext.highContrastMode ?? false) : (initialHighContrastMode ?? false),\n )\n\n // Setters bubble up to the root provider by default. Pass { scoped: true }\n // to update only the local (scoped) theme without affecting global state.\n const setTheme = useCallback(\n (themeToSet: 'auto' | Theme, options?: { scoped?: boolean }) => {\n if (isScoped && !options?.scoped) {\n outerContext.setTheme(themeToSet, options)\n return\n }\n const resolvedTheme: Theme =\n themeToSet === 'auto'\n ? window.matchMedia?.('(prefers-color-scheme: dark)').matches\n ? 'dark'\n : 'light'\n : themeToSet\n\n setThemeState(resolvedTheme)\n setAutoMode(themeToSet === 'auto')\n\n if (!isScoped) {\n setCookie(themeCookieKey, themeToSet, themeToSet === 'auto' ? -1 : 365)\n document.documentElement.setAttribute('data-theme', resolvedTheme)\n }\n },\n [isScoped, outerContext, themeCookieKey],\n )\n\n const setHighContrastMode = useCallback(\n (isHighContrast: boolean, options?: { scoped?: boolean }) => {\n if (isScoped && !options?.scoped) {\n outerContext.setHighContrastMode(isHighContrast, options)\n return\n }\n setHighContrastModeState(isHighContrast)\n if (!isScoped) {\n setCookie(contrastCookieKey, String(isHighContrast), 365)\n if (isHighContrast) {\n document.documentElement.setAttribute('data-enhanced-contrast', '')\n } else {\n document.documentElement.removeAttribute('data-enhanced-contrast')\n }\n }\n },\n [isScoped, outerContext, contrastCookieKey],\n )\n\n // Keep highContrastMode in sync with the outer provider when scoped.\n useEffect(() => {\n if (isScoped) {\n setHighContrastModeState(outerContext.highContrastMode)\n }\n }, [isScoped, outerContext?.highContrastMode])\n\n // Resolve the root theme: a valid `?theme` param wins (applied via setTheme so\n // it persists to the theme cookie exactly like a manual selection; otherwise\n // fall back to the cookie or OS preference.\n useEffect(() => {\n if (isScoped || preselectedTheme !== 'all') {\n return\n }\n if (isValidThemeParam(themeParam)) {\n setTheme(themeParam)\n return\n }\n const { isAutoMode, theme: detectedTheme } = detectTheme(themeCookieKey)\n setThemeState(detectedTheme)\n setAutoMode(isAutoMode)\n }, [isScoped, preselectedTheme, themeCookieKey, themeParam, setTheme])\n\n useEffect(() => {\n if (isScoped) {\n return\n }\n setHighContrastModeState(detectHighContrastMode(contrastCookieKey))\n }, [isScoped, contrastCookieKey])\n\n return (\n <Context\n value={{\n autoMode: isScoped ? outerContext.autoMode : autoMode,\n highContrastMode,\n setHighContrastMode,\n setTheme,\n theme: isScoped ? outerContext.theme : theme,\n }}\n >\n {children}\n </Context>\n )\n}\n\nexport const useTheme = (): ThemeContext => use(Context) ?? initialContext\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","useModal","React","useCallback","useLayoutEffect","useState","createPortal","Toaster","CheckIcon","InfoIcon","WarningIcon","XIcon","getActiveModal","ToastContainer","t0","$","config","admin","t1","toast","t2","undefined","duration","expand","limit","position","modalState","portalContainer","setPortalContainer","setCloseIconRef","_temp","t3","t4","Symbol","for","container","document","createElement","body","appendChild","remove","t5","t6","updateContainer","activeModal","destination","parentElement","observer","MutationObserver","observe","attributeFilter","attributes","childList","subtree","disconnect","_jsx","className","closeButton","dir","gap","icons","close","ref","style","display","children","size","info","success","offset","bottom","right","width","theme","toastOptions","classNames","content","error","icon","title","warning","unstyled","visibleToasts","element","closest","setAttribute"],"sources":["../../../src/providers/ToastContainer/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useCallback, useLayoutEffect, useState } from 'react'\nimport { createPortal } from 'react-dom'\nimport { Toaster } from 'sonner'\n\nimport { CheckIcon } from '../../icons/Check/index.js'\nimport { InfoIcon } from '../../icons/Info/index.js'\nimport { WarningIcon } from '../../icons/Warning/index.js'\nimport { XIcon } from '../../icons/X/index.js'\nimport { getActiveModal } from '../../utilities/getActiveModal.js'\nimport './index.css'\n\nexport const ToastContainer: React.FC<{\n config: ClientConfig\n}> = ({ config }) => {\n const { admin: { toast: { duration, expand, limit, position } = {} } = {} } = config\n\n const { modalState } = useModal()\n const [portalContainer, setPortalContainer] = useState<HTMLDivElement | null>(null)\n const setCloseIconRef = useCallback((element: HTMLSpanElement | null) => {\n element?.closest('[data-close-button]')?.setAttribute('aria-live', 'off')\n }, [])\n\n useLayoutEffect(() => {\n const container = document.createElement('div')\n\n document.body.appendChild(container)\n setPortalContainer(container)\n return () => container.remove()\n }, [])\n\n useLayoutEffect(() => {\n if (!portalContainer) {\n return\n }\n const updateContainer = () => {\n const activeModal = getActiveModal({ modalState })\n const destination = activeModal ?? document.body\n\n // Move the portal host, preserving Sonner's mounted state and pending notifications.\n if (portalContainer.parentElement !== destination) {\n destination.appendChild(portalContainer)\n }\n }\n\n updateContainer()\n const observer = new MutationObserver(updateContainer)\n\n observer.observe(document.body, {\n attributeFilter: ['open'],\n attributes: true,\n childList: true,\n subtree: true,\n })\n return () => observer.disconnect()\n }, [modalState, portalContainer])\n\n if (!portalContainer) {\n return null\n }\n\n return createPortal(\n <Toaster\n className=\"payload-toast-container\"\n closeButton\n // @ts-expect-error - Sonner's `dir` prop is typed as `Direction`, but passing \"undefined\" opts out of RTL/LTR handling\n dir=\"undefined\"\n duration={duration ?? 6000}\n expand={expand ?? false}\n gap={8}\n icons={{\n close: (\n <span aria-hidden=\"true\" ref={setCloseIconRef} style={{ display: 'contents' }}>\n <XIcon size={24} />\n </span>\n ),\n error: <WarningIcon />,\n info: <InfoIcon />,\n success: <CheckIcon size={24} />,\n warning: <WarningIcon />,\n }}\n offset={{\n bottom: 'var(--spacer-6)',\n right: 'var(--spacer-6)',\n }}\n position={position ?? 'bottom-right'}\n style={{\n width: '280px',\n }}\n theme=\"dark\"\n toastOptions={{\n classNames: {\n closeButton: 'payload-toast-close-button',\n content: 'toast-content',\n error: 'toast-error',\n icon: 'toast-icon',\n info: 'toast-info',\n success: 'toast-success',\n title: 'toast-title',\n toast: 'payload-toast-item',\n warning: 'toast-warning',\n },\n unstyled: true,\n }}\n visibleToasts={limit ?? 5}\n />,\n portalContainer,\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","useModal","React","useCallback","useLayoutEffect","useState","createPortal","Toaster","CheckIcon","InfoIcon","WarningIcon","XIcon","getActiveModal","ToastContainer","t0","$","config","admin","t1","toast","t2","undefined","duration","expand","limit","position","modalState","portalContainer","setPortalContainer","setCloseIconRef","_temp","t3","t4","Symbol","for","container","document","createElement","body","appendChild","remove","t5","t6","updateContainer","activeModal","destination","parentElement","observer","MutationObserver","observe","attributeFilter","attributes","childList","subtree","disconnect","_jsx","className","closeButton","dir","gap","icons","close","ref","style","display","children","size","info","success","offset","bottom","right","width","theme","toastOptions","classNames","content","error","icon","title","warning","unstyled","visibleToasts","element","closest","setAttribute"],"sources":["../../../src/providers/ToastContainer/index.tsx"],"sourcesContent":["'use client'\nimport type { ClientConfig } from 'payload'\n\nimport { useModal } from '@faceless-ui/modal'\nimport React, { useCallback, useLayoutEffect, useState } from 'react'\nimport { createPortal } from 'react-dom'\nimport { Toaster } from 'sonner'\n\nimport { CheckIcon } from '../../icons/Check/index.js'\nimport { InfoIcon } from '../../icons/Info/index.js'\nimport { WarningIcon } from '../../icons/Warning/index.js'\nimport { XIcon } from '../../icons/X/index.js'\nimport { getActiveModal } from '../../utilities/getActiveModal.js'\nimport './index.css'\n\nexport const ToastContainer: React.FC<{\n config: ClientConfig\n}> = ({ config }) => {\n const { admin: { toast: { duration, expand, limit, position } = {} } = {} } = config\n\n const { modalState } = useModal()\n const [portalContainer, setPortalContainer] = useState<HTMLDivElement | null>(null)\n const setCloseIconRef = useCallback((element: HTMLSpanElement | null) => {\n element?.closest('[data-close-button]')?.setAttribute('aria-live', 'off')\n }, [])\n\n useLayoutEffect(() => {\n const container = document.createElement('div')\n\n document.body.appendChild(container)\n setPortalContainer(container)\n return () => container.remove()\n }, [])\n\n useLayoutEffect(() => {\n if (!portalContainer) {\n return\n }\n const updateContainer = () => {\n const activeModal = getActiveModal({ modalState })\n const destination = activeModal ?? document.body\n\n // Move the portal host, preserving Sonner's mounted state and pending notifications.\n if (portalContainer.parentElement !== destination) {\n destination.appendChild(portalContainer)\n }\n }\n\n updateContainer()\n const observer = new MutationObserver(updateContainer)\n\n observer.observe(document.body, {\n attributeFilter: ['open'],\n attributes: true,\n childList: true,\n subtree: true,\n })\n return () => observer.disconnect()\n }, [modalState, portalContainer])\n\n if (!portalContainer) {\n return null\n }\n\n return createPortal(\n <Toaster\n className=\"payload-toast-container\"\n closeButton\n // @ts-expect-error - Sonner's `dir` prop is typed as `Direction`, but passing \"undefined\" opts out of RTL/LTR handling\n dir=\"undefined\"\n duration={duration ?? 6000}\n expand={expand ?? false}\n gap={8}\n icons={{\n close: (\n <span aria-hidden=\"true\" ref={setCloseIconRef} style={{ display: 'contents' }}>\n <XIcon size={24} />\n </span>\n ),\n error: <WarningIcon />,\n info: <InfoIcon />,\n success: <CheckIcon size={24} />,\n warning: <WarningIcon />,\n }}\n offset={{\n bottom: 'var(--spacer-6)',\n right: 'var(--spacer-6)',\n }}\n position={position ?? 'bottom-right'}\n style={{\n width: '280px',\n }}\n theme=\"dark\"\n toastOptions={{\n classNames: {\n closeButton: 'payload-toast-close-button',\n content: 'toast-content',\n error: 'toast-error',\n icon: 'toast-icon',\n info: 'toast-info',\n success: 'toast-success',\n title: 'toast-title',\n toast: 'payload-toast-item',\n warning: 'toast-warning',\n },\n unstyled: true,\n }}\n visibleToasts={limit ?? 5}\n />,\n portalContainer,\n )\n}\n"],"mappings":"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","ignoreList":[]}