@payloadcms/ui 4.0.0-internal.21664f3 → 4.0.0-internal.2f0d313

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 (488) hide show
  1. package/dist/css/app.css +121 -0
  2. package/dist/css/forms.css +0 -6
  3. package/dist/css/spacing.css +11 -3
  4. package/dist/css/z-index.css +1 -0
  5. package/dist/elements/AddNewRelation/index.css +0 -1
  6. package/dist/elements/AppHeader/index.css +1 -3
  7. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  8. package/dist/elements/AppHeader/index.js +5 -1
  9. package/dist/elements/AppHeader/index.js.map +1 -1
  10. package/dist/elements/ArrayAction/index.d.ts +3 -0
  11. package/dist/elements/ArrayAction/index.d.ts.map +1 -1
  12. package/dist/elements/ArrayAction/index.js +83 -29
  13. package/dist/elements/ArrayAction/index.js.map +1 -1
  14. package/dist/elements/BulkUpload/AddFilesView/index.css +10 -4
  15. package/dist/elements/BulkUpload/AddFilesView/index.d.ts.map +1 -1
  16. package/dist/elements/BulkUpload/AddFilesView/index.js +71 -51
  17. package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
  18. package/dist/elements/BulkUpload/EditMany/DrawerContent.js +2 -2
  19. package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
  20. package/dist/elements/BulkUpload/FileSidebar/index.css +4 -0
  21. package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts +2 -2
  22. package/dist/elements/BulkUpload/FormsManager/createFormData.d.ts.map +1 -1
  23. package/dist/elements/BulkUpload/FormsManager/createFormData.js +4 -15
  24. package/dist/elements/BulkUpload/FormsManager/createFormData.js.map +1 -1
  25. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  26. package/dist/elements/BulkUpload/FormsManager/index.js +1 -1
  27. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  28. package/dist/elements/Button/index.css +2 -2
  29. package/dist/elements/Button/index.d.ts.map +1 -1
  30. package/dist/elements/Button/index.js +2 -0
  31. package/dist/elements/Button/index.js.map +1 -1
  32. package/dist/elements/ClipboardAction/clipboardUtilities.d.ts +8 -1
  33. package/dist/elements/ClipboardAction/clipboardUtilities.d.ts.map +1 -1
  34. package/dist/elements/ClipboardAction/clipboardUtilities.js +40 -8
  35. package/dist/elements/ClipboardAction/clipboardUtilities.js.map +1 -1
  36. package/dist/elements/ClipboardAction/clipboardUtilities.spec.js +120 -0
  37. package/dist/elements/ClipboardAction/clipboardUtilities.spec.js.map +1 -0
  38. package/dist/elements/ClipboardAction/index.d.ts.map +1 -1
  39. package/dist/elements/ClipboardAction/index.js +17 -1
  40. package/dist/elements/ClipboardAction/index.js.map +1 -1
  41. package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js +144 -0
  42. package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js.map +1 -0
  43. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts +10 -0
  44. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts.map +1 -1
  45. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js +65 -3
  46. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js.map +1 -1
  47. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js +345 -1
  48. package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js.map +1 -1
  49. package/dist/elements/ClipboardAction/types.d.ts +3 -0
  50. package/dist/elements/ClipboardAction/types.d.ts.map +1 -1
  51. package/dist/elements/ClipboardAction/types.js.map +1 -1
  52. package/dist/elements/ClipboardAction/useCanPasteClipboard.d.ts +10 -0
  53. package/dist/elements/ClipboardAction/useCanPasteClipboard.d.ts.map +1 -0
  54. package/dist/elements/ClipboardAction/useCanPasteClipboard.js +21 -0
  55. package/dist/elements/ClipboardAction/useCanPasteClipboard.js.map +1 -0
  56. package/dist/elements/CodeEditor/index.css +0 -5
  57. package/dist/elements/CommandPalette/index.css +0 -7
  58. package/dist/elements/CopyToClipboard/index.d.ts +1 -0
  59. package/dist/elements/CopyToClipboard/index.d.ts.map +1 -1
  60. package/dist/elements/CopyToClipboard/index.js +10 -8
  61. package/dist/elements/CopyToClipboard/index.js.map +1 -1
  62. package/dist/elements/CreateDocumentButton/index.d.ts.map +1 -1
  63. package/dist/elements/CreateDocumentButton/index.js +4 -1
  64. package/dist/elements/CreateDocumentButton/index.js.map +1 -1
  65. package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
  66. package/dist/elements/DatePicker/DatePicker.js +1 -0
  67. package/dist/elements/DatePicker/DatePicker.js.map +1 -1
  68. package/dist/elements/DatePicker/index.css +1 -1
  69. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  70. package/dist/elements/DeleteDocument/index.js +16 -1
  71. package/dist/elements/DeleteDocument/index.js.map +1 -1
  72. package/dist/elements/Drawer/index.css +10 -4
  73. package/dist/elements/Dropzone/index.css +10 -4
  74. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +3 -2
  75. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
  76. package/dist/elements/EditMany/DrawerContent.js +2 -2
  77. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  78. package/dist/elements/FieldSelect/reduceFieldOptions.d.ts.map +1 -1
  79. package/dist/elements/FieldSelect/reduceFieldOptions.js +3 -1
  80. package/dist/elements/FieldSelect/reduceFieldOptions.js.map +1 -1
  81. package/dist/elements/FieldSelect/reduceFieldOptions.spec.js +143 -0
  82. package/dist/elements/FieldSelect/reduceFieldOptions.spec.js.map +1 -0
  83. package/dist/elements/FileDetails/StaticFileDetails/index.css +8 -9
  84. package/dist/elements/FileManager/FilePreview/index.css +3 -3
  85. package/dist/elements/FileManager/FileToolbar/index.d.ts.map +1 -1
  86. package/dist/elements/FileManager/FileToolbar/index.js +3 -0
  87. package/dist/elements/FileManager/FileToolbar/index.js.map +1 -1
  88. package/dist/elements/FileManager/index.css +35 -52
  89. package/dist/elements/FileManager/index.d.ts +1 -1
  90. package/dist/elements/FileManager/index.d.ts.map +1 -1
  91. package/dist/elements/FileManager/index.js +385 -282
  92. package/dist/elements/FileManager/index.js.map +1 -1
  93. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.css +0 -1
  94. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts.map +1 -1
  95. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js +109 -89
  96. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -1
  97. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.d.ts.map +1 -1
  98. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js +2 -0
  99. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js.map +1 -1
  100. package/dist/elements/Hierarchy/Tree/TreeNode/index.css +0 -1
  101. package/dist/elements/IDLabel/index.css +6 -0
  102. package/dist/elements/IDLabel/index.d.ts +1 -1
  103. package/dist/elements/IDLabel/index.d.ts.map +1 -1
  104. package/dist/elements/IDLabel/index.js +16 -21
  105. package/dist/elements/IDLabel/index.js.map +1 -1
  106. package/dist/elements/InputStepper/index.css +0 -1
  107. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts +1 -7
  108. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts.map +1 -1
  109. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js +26 -32
  110. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
  111. package/dist/elements/Locked/index.css +0 -8
  112. package/dist/elements/Locked/index.d.ts.map +1 -1
  113. package/dist/elements/Locked/index.js +70 -64
  114. package/dist/elements/Locked/index.js.map +1 -1
  115. package/dist/elements/MiniCarousel/index.css +39 -37
  116. package/dist/elements/Nav/SidebarTabs/index.client.d.ts.map +1 -1
  117. package/dist/elements/Nav/SidebarTabs/index.client.js +12 -5
  118. package/dist/elements/Nav/SidebarTabs/index.client.js.map +1 -1
  119. package/dist/elements/Nav/SidebarTabs/index.css +0 -5
  120. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts +1 -0
  121. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts.map +1 -1
  122. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js +2 -1
  123. package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js.map +1 -1
  124. package/dist/elements/NavGroup/index.css +0 -1
  125. package/dist/elements/Popup/PopupButtonList/index.css +1 -1
  126. package/dist/elements/Popup/index.js +1 -1
  127. package/dist/elements/Popup/index.js.map +1 -1
  128. package/dist/elements/PreviewButton/index.d.ts +1 -2
  129. package/dist/elements/PreviewButton/index.d.ts.map +1 -1
  130. package/dist/elements/PreviewButton/index.js +11 -5
  131. package/dist/elements/PreviewButton/index.js.map +1 -1
  132. package/dist/elements/PreviewSizes/index.css +8 -9
  133. package/dist/elements/PublishButton/ScheduleDrawer/index.js +1 -1
  134. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  135. package/dist/elements/QueryPresets/QueryPresetBar/index.js +1 -3
  136. package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
  137. package/dist/elements/ReactSelect/ClearIndicator/index.css +0 -1
  138. package/dist/elements/ReactSelect/MultiValue/index.css +0 -1
  139. package/dist/elements/ReactSelect/MultiValueLabel/index.css +2 -2
  140. package/dist/elements/ReactSelect/index.css +0 -3
  141. package/dist/elements/RelationshipTable/Pagination.d.ts +0 -1
  142. package/dist/elements/RelationshipTable/Pagination.d.ts.map +1 -1
  143. package/dist/elements/RelationshipTable/Pagination.js +27 -77
  144. package/dist/elements/RelationshipTable/Pagination.js.map +1 -1
  145. package/dist/elements/RelationshipTable/index.css +0 -2
  146. package/dist/elements/RelationshipTable/index.d.ts +1 -0
  147. package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
  148. package/dist/elements/RelationshipTable/index.js +41 -5
  149. package/dist/elements/RelationshipTable/index.js.map +1 -1
  150. package/dist/elements/RenderTitle/index.css +4 -0
  151. package/dist/elements/RenderTitle/index.d.ts.map +1 -1
  152. package/dist/elements/RenderTitle/index.js +18 -13
  153. package/dist/elements/RenderTitle/index.js.map +1 -1
  154. package/dist/elements/SelectRow/index.d.ts +4 -3
  155. package/dist/elements/SelectRow/index.d.ts.map +1 -1
  156. package/dist/elements/SelectRow/index.js +10 -7
  157. package/dist/elements/SelectRow/index.js.map +1 -1
  158. package/dist/elements/SidebarToggle/index.css +0 -17
  159. package/dist/elements/SortColumn/index.d.ts.map +1 -1
  160. package/dist/elements/SortColumn/index.js +42 -38
  161. package/dist/elements/SortColumn/index.js.map +1 -1
  162. package/dist/elements/SortHeader/index.d.ts.map +1 -1
  163. package/dist/elements/SortHeader/index.js +29 -26
  164. package/dist/elements/SortHeader/index.js.map +1 -1
  165. package/dist/elements/StepNav/index.css +64 -14
  166. package/dist/elements/StepNav/index.d.ts.map +1 -1
  167. package/dist/elements/StepNav/index.js +143 -69
  168. package/dist/elements/StepNav/index.js.map +1 -1
  169. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  170. package/dist/elements/Table/DefaultCell/index.js +3 -11
  171. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  172. package/dist/elements/Table/OrderableRow.d.ts +3 -1
  173. package/dist/elements/Table/OrderableRow.d.ts.map +1 -1
  174. package/dist/elements/Table/OrderableRow.js +17 -1
  175. package/dist/elements/Table/OrderableRow.js.map +1 -1
  176. package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
  177. package/dist/elements/Table/OrderableTable.js +19 -2
  178. package/dist/elements/Table/OrderableTable.js.map +1 -1
  179. package/dist/elements/Table/index.css +1 -0
  180. package/dist/elements/TableSection/index.css +0 -1
  181. package/dist/elements/Thumbnail/index.d.ts +1 -1
  182. package/dist/elements/Thumbnail/index.d.ts.map +1 -1
  183. package/dist/elements/Thumbnail/index.js.map +1 -1
  184. package/dist/elements/TimezonePicker/index.d.ts.map +1 -1
  185. package/dist/elements/TimezonePicker/index.js +5 -1
  186. package/dist/elements/TimezonePicker/index.js.map +1 -1
  187. package/dist/elements/Tooltip/index.css +15 -34
  188. package/dist/elements/Tooltip/index.d.ts +11 -3
  189. package/dist/elements/Tooltip/index.d.ts.map +1 -1
  190. package/dist/elements/Tooltip/index.js +151 -85
  191. package/dist/elements/Tooltip/index.js.map +1 -1
  192. package/dist/elements/Upload/UploadFromURLModal/index.d.ts +1 -1
  193. package/dist/elements/Upload/UploadFromURLModal/index.d.ts.map +1 -1
  194. package/dist/elements/Upload/UploadFromURLModal/index.js.map +1 -1
  195. package/dist/elements/Upload/index.css +39 -37
  196. package/dist/elements/Upload/index.d.ts.map +1 -1
  197. package/dist/elements/Upload/index.js +37 -99
  198. package/dist/elements/Upload/index.js.map +1 -1
  199. package/dist/elements/Upload/usePasteFromClipboard.d.ts +14 -0
  200. package/dist/elements/Upload/usePasteFromClipboard.d.ts.map +1 -0
  201. package/dist/elements/Upload/usePasteFromClipboard.js +93 -0
  202. package/dist/elements/Upload/usePasteFromClipboard.js.map +1 -0
  203. package/dist/elements/Upload/useUploadFromUrl.d.ts +20 -0
  204. package/dist/elements/Upload/useUploadFromUrl.d.ts.map +1 -0
  205. package/dist/elements/Upload/useUploadFromUrl.js +201 -0
  206. package/dist/elements/Upload/useUploadFromUrl.js.map +1 -0
  207. package/dist/elements/UploadDropzoneContent/index.css +31 -0
  208. package/dist/elements/UploadDropzoneContent/index.d.ts +17 -0
  209. package/dist/elements/UploadDropzoneContent/index.d.ts.map +1 -0
  210. package/dist/elements/UploadDropzoneContent/index.js +62 -0
  211. package/dist/elements/UploadDropzoneContent/index.js.map +1 -0
  212. package/dist/elements/WhereBuilder/conditionValue.d.ts +32 -0
  213. package/dist/elements/WhereBuilder/conditionValue.d.ts.map +1 -0
  214. package/dist/elements/WhereBuilder/conditionValue.js +32 -0
  215. package/dist/elements/WhereBuilder/conditionValue.js.map +1 -0
  216. package/dist/elements/WhereBuilder/conditionValue.spec.js +65 -0
  217. package/dist/elements/WhereBuilder/conditionValue.spec.js.map +1 -0
  218. package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
  219. package/dist/elements/WhereBuilder/index.js +15 -4
  220. package/dist/elements/WhereBuilder/index.js.map +1 -1
  221. package/dist/exports/client/index.d.ts +5 -1
  222. package/dist/exports/client/index.d.ts.map +1 -1
  223. package/dist/exports/client/index.js +1 -1
  224. package/dist/exports/client/index.js.map +3 -3
  225. package/dist/fields/Array/ArrayRow.d.ts +1 -0
  226. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  227. package/dist/fields/Array/ArrayRow.js +99 -160
  228. package/dist/fields/Array/ArrayRow.js.map +1 -1
  229. package/dist/fields/Array/index.d.ts.map +1 -1
  230. package/dist/fields/Array/index.js +38 -10
  231. package/dist/fields/Array/index.js.map +1 -1
  232. package/dist/fields/Blocks/BlockRow.d.ts +1 -0
  233. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  234. package/dist/fields/Blocks/BlockRow.js +136 -195
  235. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  236. package/dist/fields/Blocks/RowActions.d.ts +3 -0
  237. package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
  238. package/dist/fields/Blocks/RowActions.js +26 -20
  239. package/dist/fields/Blocks/RowActions.js.map +1 -1
  240. package/dist/fields/Blocks/index.d.ts.map +1 -1
  241. package/dist/fields/Blocks/index.js +38 -10
  242. package/dist/fields/Blocks/index.js.map +1 -1
  243. package/dist/fields/Checkbox/Input.d.ts +2 -0
  244. package/dist/fields/Checkbox/Input.d.ts.map +1 -1
  245. package/dist/fields/Checkbox/Input.js +32 -26
  246. package/dist/fields/Checkbox/Input.js.map +1 -1
  247. package/dist/fields/Checkbox/index.css +37 -73
  248. package/dist/fields/FieldError/index.css +0 -9
  249. package/dist/fields/FieldError/index.d.ts.map +1 -1
  250. package/dist/fields/FieldError/index.js +19 -9
  251. package/dist/fields/FieldError/index.js.map +1 -1
  252. package/dist/fields/Join/index.css +9 -0
  253. package/dist/fields/Join/index.d.ts.map +1 -1
  254. package/dist/fields/Join/index.js +13 -9
  255. package/dist/fields/Join/index.js.map +1 -1
  256. package/dist/fields/RadioGroup/index.css +0 -7
  257. package/dist/fields/Relationship/Input.d.ts.map +1 -1
  258. package/dist/fields/Relationship/Input.js +32 -14
  259. package/dist/fields/Relationship/Input.js.map +1 -1
  260. package/dist/fields/Relationship/select-components/MultiValueLabel/index.css +1 -1
  261. package/dist/fields/Slug/index.css +0 -1
  262. package/dist/fields/Slug/index.d.ts.map +1 -1
  263. package/dist/fields/Slug/index.js +75 -111
  264. package/dist/fields/Slug/index.js.map +1 -1
  265. package/dist/fields/Upload/Input.d.ts.map +1 -1
  266. package/dist/fields/Upload/Input.js +26 -0
  267. package/dist/fields/Upload/Input.js.map +1 -1
  268. package/dist/fields/Upload/index.css +19 -4
  269. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  270. package/dist/forms/Form/fieldReducer.js +3 -1
  271. package/dist/forms/Form/fieldReducer.js.map +1 -1
  272. package/dist/forms/Form/index.d.ts.map +1 -1
  273. package/dist/forms/Form/index.js +12 -15
  274. package/dist/forms/Form/index.js.map +1 -1
  275. package/dist/forms/Form/types.d.ts +1 -1
  276. package/dist/forms/Form/types.d.ts.map +1 -1
  277. package/dist/forms/Form/types.js.map +1 -1
  278. package/dist/forms/RenderFields/index.css +16 -2
  279. package/dist/forms/WatchChildErrors/index.d.ts.map +1 -1
  280. package/dist/forms/WatchChildErrors/index.js +2 -2
  281. package/dist/forms/WatchChildErrors/index.js.map +1 -1
  282. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +1 -1
  283. package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
  284. package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
  285. package/dist/forms/fieldSchemasToFormState/renderField.js +1 -3
  286. package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
  287. package/dist/icons/Edit/index.d.ts +0 -1
  288. package/dist/icons/Edit/index.d.ts.map +1 -1
  289. package/dist/icons/Edit/index.js +4 -4
  290. package/dist/icons/Edit/index.js.map +1 -1
  291. package/dist/layouts/Root/index.d.ts +1 -1
  292. package/dist/layouts/Root/index.d.ts.map +1 -1
  293. package/dist/layouts/Root/index.js +8 -2
  294. package/dist/layouts/Root/index.js.map +1 -1
  295. package/dist/providers/Actions/index.d.ts +1 -0
  296. package/dist/providers/Actions/index.d.ts.map +1 -1
  297. package/dist/providers/Actions/index.js +43 -11
  298. package/dist/providers/Actions/index.js.map +1 -1
  299. package/dist/providers/Auth/AuthSessionDebug/index.css +48 -0
  300. package/dist/providers/Auth/AuthSessionDebug/index.d.ts +13 -0
  301. package/dist/providers/Auth/AuthSessionDebug/index.d.ts.map +1 -0
  302. package/dist/providers/Auth/AuthSessionDebug/index.js +93 -0
  303. package/dist/providers/Auth/AuthSessionDebug/index.js.map +1 -0
  304. package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts +21 -0
  305. package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts.map +1 -0
  306. package/dist/providers/Auth/AuthSessionDebug/utilities.js +53 -0
  307. package/dist/providers/Auth/AuthSessionDebug/utilities.js.map +1 -0
  308. package/dist/providers/Auth/authSessionRequests.d.ts +27 -0
  309. package/dist/providers/Auth/authSessionRequests.d.ts.map +1 -0
  310. package/dist/providers/Auth/authSessionRequests.js +119 -0
  311. package/dist/providers/Auth/authSessionRequests.js.map +1 -0
  312. package/dist/providers/Auth/authSessionRequests.spec.js +121 -0
  313. package/dist/providers/Auth/authSessionRequests.spec.js.map +1 -0
  314. package/dist/providers/Auth/index.d.ts +2 -56
  315. package/dist/providers/Auth/index.d.ts.map +1 -1
  316. package/dist/providers/Auth/index.js +283 -135
  317. package/dist/providers/Auth/index.js.map +1 -1
  318. package/dist/providers/Auth/sessionActivity.d.ts +23 -0
  319. package/dist/providers/Auth/sessionActivity.d.ts.map +1 -0
  320. package/dist/providers/Auth/sessionActivity.js +49 -0
  321. package/dist/providers/Auth/sessionActivity.js.map +1 -0
  322. package/dist/providers/Auth/sessionActivity.spec.js +44 -0
  323. package/dist/providers/Auth/sessionActivity.spec.js.map +1 -0
  324. package/dist/providers/Auth/sessionTiming.d.ts +11 -0
  325. package/dist/providers/Auth/sessionTiming.d.ts.map +1 -0
  326. package/dist/providers/Auth/sessionTiming.js +18 -0
  327. package/dist/providers/Auth/sessionTiming.js.map +1 -0
  328. package/dist/providers/Auth/tabSessionSync/index.d.ts +17 -0
  329. package/dist/providers/Auth/tabSessionSync/index.d.ts.map +1 -0
  330. package/dist/providers/Auth/tabSessionSync/index.js +263 -0
  331. package/dist/providers/Auth/tabSessionSync/index.js.map +1 -0
  332. package/dist/providers/Auth/tabSessionSync/index.spec.js +463 -0
  333. package/dist/providers/Auth/tabSessionSync/index.spec.js.map +1 -0
  334. package/dist/providers/Auth/tabSessionSync/types.d.ts +107 -0
  335. package/dist/providers/Auth/tabSessionSync/types.d.ts.map +1 -0
  336. package/dist/providers/Auth/tabSessionSync/types.js +6 -0
  337. package/dist/providers/Auth/tabSessionSync/types.js.map +1 -0
  338. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts +11 -0
  339. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts.map +1 -0
  340. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js +90 -0
  341. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js.map +1 -0
  342. package/dist/providers/Auth/tabSessionSync/utilities.d.ts +26 -0
  343. package/dist/providers/Auth/tabSessionSync/utilities.d.ts.map +1 -0
  344. package/dist/providers/Auth/tabSessionSync/utilities.js +159 -0
  345. package/dist/providers/Auth/tabSessionSync/utilities.js.map +1 -0
  346. package/dist/providers/Auth/types.d.ts +65 -0
  347. package/dist/providers/Auth/types.d.ts.map +1 -0
  348. package/dist/providers/Auth/types.js +2 -0
  349. package/dist/providers/Auth/types.js.map +1 -0
  350. package/dist/providers/Auth/useAuthSessionTimers.d.ts +26 -0
  351. package/dist/providers/Auth/useAuthSessionTimers.d.ts.map +1 -0
  352. package/dist/providers/Auth/useAuthSessionTimers.js +203 -0
  353. package/dist/providers/Auth/useAuthSessionTimers.js.map +1 -0
  354. package/dist/providers/Auth/useAuthSessionTimers.spec.js +311 -0
  355. package/dist/providers/Auth/useAuthSessionTimers.spec.js.map +1 -0
  356. package/dist/providers/DocumentTitle/index.d.ts +1 -0
  357. package/dist/providers/DocumentTitle/index.d.ts.map +1 -1
  358. package/dist/providers/DocumentTitle/index.js +2 -0
  359. package/dist/providers/DocumentTitle/index.js.map +1 -1
  360. package/dist/providers/Embed/index.d.ts +24 -0
  361. package/dist/providers/Embed/index.d.ts.map +1 -0
  362. package/dist/providers/Embed/index.js +105 -0
  363. package/dist/providers/Embed/index.js.map +1 -0
  364. package/dist/providers/FormErrorHandler/index.d.ts +24 -0
  365. package/dist/providers/FormErrorHandler/index.d.ts.map +1 -0
  366. package/dist/providers/FormErrorHandler/index.js +6 -0
  367. package/dist/providers/FormErrorHandler/index.js.map +1 -0
  368. package/dist/providers/Locale/index.d.ts.map +1 -1
  369. package/dist/providers/Locale/index.js +41 -36
  370. package/dist/providers/Locale/index.js.map +1 -1
  371. package/dist/providers/Root/index.d.ts +1 -0
  372. package/dist/providers/Root/index.d.ts.map +1 -1
  373. package/dist/providers/Root/index.js +37 -31
  374. package/dist/providers/Root/index.js.map +1 -1
  375. package/dist/providers/RouteTransition/ProgressBar/index.js +4 -1
  376. package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -1
  377. package/dist/providers/RouteTransition/ProgressBar/index.spec.js +44 -0
  378. package/dist/providers/RouteTransition/ProgressBar/index.spec.js.map +1 -0
  379. package/dist/providers/RouteTransition/index.d.ts +2 -0
  380. package/dist/providers/RouteTransition/index.d.ts.map +1 -1
  381. package/dist/providers/RouteTransition/index.js +42 -14
  382. package/dist/providers/RouteTransition/index.js.map +1 -1
  383. package/dist/providers/SidebarTabs/index.d.ts +3 -2
  384. package/dist/providers/SidebarTabs/index.d.ts.map +1 -1
  385. package/dist/providers/SidebarTabs/index.js.map +1 -1
  386. package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
  387. package/dist/providers/TableColumns/buildColumnState/index.js +1 -1
  388. package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
  389. package/dist/providers/TableColumns/buildColumnState/index.spec.js +40 -0
  390. package/dist/providers/TableColumns/buildColumnState/index.spec.js.map +1 -0
  391. package/dist/providers/Theme/index.d.ts +3 -0
  392. package/dist/providers/Theme/index.d.ts.map +1 -1
  393. package/dist/providers/Theme/index.js +107 -95
  394. package/dist/providers/Theme/index.js.map +1 -1
  395. package/dist/providers/UploadHandlers/index.d.ts +2 -7
  396. package/dist/providers/UploadHandlers/index.d.ts.map +1 -1
  397. package/dist/providers/UploadHandlers/index.js +102 -42
  398. package/dist/providers/UploadHandlers/index.js.map +1 -1
  399. package/dist/styles.css +13 -10
  400. package/dist/templates/Default/index.d.ts +1 -0
  401. package/dist/templates/Default/index.d.ts.map +1 -1
  402. package/dist/templates/Default/index.js +2 -0
  403. package/dist/templates/Default/index.js.map +1 -1
  404. package/dist/utilities/combineFieldLabel.d.ts.map +1 -1
  405. package/dist/utilities/combineFieldLabel.js +5 -1
  406. package/dist/utilities/combineFieldLabel.js.map +1 -1
  407. package/dist/utilities/formatMetadata.d.ts.map +1 -1
  408. package/dist/utilities/formatMetadata.js +0 -5
  409. package/dist/utilities/formatMetadata.js.map +1 -1
  410. package/dist/utilities/generateFieldID.d.ts +1 -1
  411. package/dist/utilities/generateFieldID.d.ts.map +1 -1
  412. package/dist/utilities/generateFieldID.js +2 -2
  413. package/dist/utilities/generateFieldID.js.map +1 -1
  414. package/dist/utilities/getFilesFromClipboard.d.ts +10 -0
  415. package/dist/utilities/getFilesFromClipboard.d.ts.map +1 -0
  416. package/dist/utilities/getFilesFromClipboard.js +49 -0
  417. package/dist/utilities/getFilesFromClipboard.js.map +1 -0
  418. package/dist/utilities/getRequestEmbed.d.ts +14 -0
  419. package/dist/utilities/getRequestEmbed.d.ts.map +1 -0
  420. package/dist/utilities/getRequestEmbed.js +10 -0
  421. package/dist/utilities/getRequestEmbed.js.map +1 -0
  422. package/dist/utilities/handleServerFunctions.d.ts +32 -8
  423. package/dist/utilities/handleServerFunctions.d.ts.map +1 -1
  424. package/dist/utilities/handleServerFunctions.js +17 -37
  425. package/dist/utilities/handleServerFunctions.js.map +1 -1
  426. package/dist/utilities/renderTable.d.ts.map +1 -1
  427. package/dist/utilities/renderTable.js +18 -2
  428. package/dist/utilities/renderTable.js.map +1 -1
  429. package/dist/utilities/serverFunctionRegistry.d.ts +12 -7
  430. package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
  431. package/dist/utilities/serverFunctionRegistry.js +25 -7
  432. package/dist/utilities/serverFunctionRegistry.js.map +1 -1
  433. package/dist/utilities/slugify.d.ts.map +1 -1
  434. package/dist/utilities/slugify.js +50 -6
  435. package/dist/utilities/slugify.js.map +1 -1
  436. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.d.ts.map +1 -1
  437. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +3 -2
  438. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
  439. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.d.ts.map +1 -1
  440. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js +7 -7
  441. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js.map +1 -1
  442. package/dist/views/Dashboard/Default/ModularDashboard/index.client.d.ts.map +1 -1
  443. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +104 -66
  444. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
  445. package/dist/views/Dashboard/Default/ModularDashboard/index.css +29 -144
  446. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js +4 -4
  447. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js.map +1 -1
  448. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js +10 -10
  449. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js.map +1 -1
  450. package/dist/views/Edit/index.css +61 -53
  451. package/dist/views/HierarchyList/index.css +1 -1
  452. package/dist/views/List/ListHeader/index.d.ts +1 -10
  453. package/dist/views/List/ListHeader/index.d.ts.map +1 -1
  454. package/dist/views/List/ListHeader/index.js +1 -3
  455. package/dist/views/List/ListHeader/index.js.map +1 -1
  456. package/dist/views/List/index.client.d.ts.map +1 -1
  457. package/dist/views/List/index.client.js +0 -14
  458. package/dist/views/List/index.client.js.map +1 -1
  459. package/dist/views/List/index.css +6 -1
  460. package/dist/views/List/index.d.ts.map +1 -1
  461. package/dist/views/List/index.js +4 -0
  462. package/dist/views/List/index.js.map +1 -1
  463. package/dist/views/Logout/index.d.ts.map +1 -1
  464. package/dist/views/Logout/index.js +11 -0
  465. package/dist/views/Logout/index.js.map +1 -1
  466. package/dist/views/Root/getCustomCollectionViewByRoute.d.ts.map +1 -1
  467. package/dist/views/Root/getCustomCollectionViewByRoute.js.map +1 -1
  468. package/dist/views/Root/getCustomGlobalViewByRoute.d.ts.map +1 -1
  469. package/dist/views/Root/getCustomGlobalViewByRoute.js.map +1 -1
  470. package/dist/views/Root/getCustomViewByKey.d.ts.map +1 -1
  471. package/dist/views/Root/getCustomViewByKey.js.map +1 -1
  472. package/dist/views/Root/index.d.ts +12 -1
  473. package/dist/views/Root/index.d.ts.map +1 -1
  474. package/dist/views/Root/index.js +11 -3
  475. package/dist/views/Root/index.js.map +1 -1
  476. package/dist/views/Version/generateVersionViewMetadata.js.map +1 -1
  477. package/dist/views/Versions/generateVersionsViewMetadata.js.map +1 -1
  478. package/package.json +5 -10
  479. package/dist/elements/RelationshipTable/Pagination.css +0 -39
  480. package/dist/scss/app.scss +0 -183
  481. package/dist/scss/colors.scss +0 -191
  482. package/dist/scss/custom.css +0 -1
  483. package/dist/scss/queries.scss +0 -27
  484. package/dist/scss/styles.scss +0 -9
  485. package/dist/scss/svg.scss +0 -10
  486. package/dist/scss/toastify.scss +0 -61
  487. package/dist/scss/vars.scss +0 -192
  488. package/dist/scss/z-index.scss +0 -9
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authSessionRequests.spec.js","names":["describe","expect","it","createAuthSessionRequests","authRequests","first","createDeferred","order","firstRequest","queue","push","promise","secondRequest","toEqual","Promise","resolve","all","refresh","runs","run","second","toBe","operation","isResultStaleAfterSettlement","request","isResultStale","discardPendingResults","logout","clears","logoutRequests","logOut","clearSession","isLoggingOut","toBeNull","invalidations","invalidateWhenIdle","resolvePromise","Error"],"sources":["../../../src/providers/Auth/authSessionRequests.spec.ts"],"sourcesContent":["import { describe, expect, it } from 'vitest'\n\nimport { createAuthSessionRequests } from './authSessionRequests.js'\n\ndescribe('createAuthSessionRequests', () => {\n it('should serialize auth requests in queue order', async () => {\n const authRequests = createAuthSessionRequests()\n const first = createDeferred<void>()\n const order: string[] = []\n\n const firstRequest = authRequests.queue(async () => {\n order.push('first:start')\n await first.promise\n order.push('first:end')\n })\n const secondRequest = authRequests.queue(async () => {\n order.push('second')\n })\n\n expect(order).toEqual([])\n await Promise.resolve()\n expect(order).toEqual(['first:start'])\n\n first.resolve()\n await Promise.all([firstRequest, secondRequest])\n expect(order).toEqual(['first:start', 'first:end', 'second'])\n })\n\n it('should share a refresh while session results remain current', async () => {\n const authRequests = createAuthSessionRequests()\n const refresh = createDeferred<null>()\n let runs = 0\n const run = () =>\n authRequests.refresh(async () => {\n runs += 1\n return refresh.promise\n })\n\n const first = run()\n const second = run()\n expect(first).toBe(second)\n\n refresh.resolve(null)\n await Promise.all([first, second])\n expect(runs).toBe(1)\n })\n\n it('should discard a queued result after the session changes', async () => {\n const authRequests = createAuthSessionRequests()\n const operation = createDeferred<void>()\n let isResultStaleAfterSettlement = false\n\n const request = authRequests.queue(async ({ isResultStale }) => {\n await operation.promise\n isResultStaleAfterSettlement = isResultStale()\n })\n\n await Promise.resolve()\n authRequests.discardPendingResults()\n operation.resolve()\n await request\n\n expect(isResultStaleAfterSettlement).toBe(true)\n })\n\n it('should settle a logout once and prevent refresh from committing', async () => {\n const authRequests = createAuthSessionRequests()\n const logout = createDeferred<void>()\n let clears = 0\n let logoutRequests = 0\n\n const first = authRequests.logOut({\n clearSession: () => {\n clears += 1\n authRequests.discardPendingResults()\n },\n request: async () => {\n logoutRequests += 1\n await logout.promise\n },\n })\n const second = authRequests.logOut({\n clearSession: () => {\n clears += 1\n },\n request: async () => {\n logoutRequests += 1\n },\n })\n\n expect(first).toBe(second)\n expect(authRequests.isLoggingOut()).toBe(true)\n expect(await authRequests.refresh(async () => null)).toBeNull()\n logout.resolve()\n await first\n expect({ clears, logoutRequests }).toEqual({ clears: 1, logoutRequests: 1 })\n })\n\n it('should discard a deferred invalidation after the session changes', async () => {\n const authRequests = createAuthSessionRequests()\n let invalidations = 0\n\n const first = authRequests.refresh(async ({ invalidateWhenIdle }) => {\n invalidateWhenIdle(() => {\n invalidations += 1\n })\n return null\n })\n const second = authRequests.queue(async () => {\n authRequests.discardPendingResults()\n })\n\n await Promise.all([first, second])\n expect(invalidations).toBe(0)\n })\n})\n\nfunction createDeferred<Value>(): {\n promise: Promise<Value>\n resolve: (value: Value | PromiseLike<Value>) => void\n} {\n let resolve: ((value: Value | PromiseLike<Value>) => void) | undefined\n const promise = new Promise<Value>((resolvePromise) => {\n resolve = resolvePromise\n })\n\n if (!resolve) {\n throw new Error('Expected deferred promise resolver.')\n }\n\n return { promise, resolve }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,60 +1,7 @@
1
1
  import type { AuthenticatedUser, SanitizedPermissions } from 'payload';
2
2
  import React from 'react';
3
- export type UserWithToken<T = AuthenticatedUser> = {
4
- /** seconds until expiration */
5
- exp: number;
6
- refreshedToken?: string;
7
- token?: string;
8
- user: T;
9
- };
10
- export type AuthContext<T = AuthenticatedUser> = {
11
- fetchFullUser: () => Promise<null | T>;
12
- logOut: () => Promise<boolean>;
13
- /**
14
- * These are the permissions for the current user from a global scope.
15
- *
16
- * When checking for permissions on document specific level, use the `useDocumentInfo` hook instead.
17
- *
18
- * @example
19
- *
20
- * ```tsx
21
- * import { useAuth } from 'payload/ui'
22
- *
23
- * const MyComponent: React.FC = () => {
24
- * const { permissions } = useAuth()
25
- *
26
- * if (permissions?.collections?.myCollection?.create) {
27
- * // user can create documents in 'myCollection'
28
- * }
29
- *
30
- * return null
31
- * }
32
- * ```
33
- *
34
- * with useDocumentInfo:
35
- *
36
- * ```tsx
37
- * import { useDocumentInfo } from 'payload/ui'
38
- *
39
- * const MyComponent: React.FC = () => {
40
- * const { docPermissions } = useDocumentInfo()
41
- * if (docPermissions?.create) {
42
- * // user can create this document
43
- * }
44
- * return null
45
- * } ```
46
- */
47
- permissions?: SanitizedPermissions;
48
- refreshCookie: (forceRefresh?: boolean) => void;
49
- refreshCookieAsync: () => Promise<null | T>;
50
- refreshPermissions: () => Promise<void>;
51
- setPermissions: (permissions: SanitizedPermissions) => void;
52
- setUser: (user: null | UserWithToken<T>) => void;
53
- strategy?: string;
54
- token?: string;
55
- tokenExpirationMs?: number;
56
- user?: null | T;
57
- };
3
+ import type { AuthContext } from './types.js';
4
+ export type { AuthContext, AuthSession, UserWithToken } from './types.js';
58
5
  type Props = {
59
6
  children: React.ReactNode;
60
7
  permissions?: SanitizedPermissions;
@@ -62,5 +9,4 @@ type Props = {
62
9
  };
63
10
  export declare function AuthProvider({ children, permissions: initialPermissions, user: initialUser, }: Props): React.JSX.Element;
64
11
  export declare const useAuth: <T = AuthenticatedUser>() => AuthContext<T>;
65
- export {};
66
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Auth/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAKtE,OAAO,KAA+D,MAAM,OAAO,CAAA;AAWnF,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,iBAAiB,IAAI;IACjD,+BAA+B;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,CAAC,CAAA;CACR,CAAA;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,GAAG,iBAAiB,IAAI;IAC/C,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;IACtC,MAAM,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;IAC9B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACH,WAAW,CAAC,EAAE,oBAAoB,CAAA;IAClC,aAAa,EAAE,CAAC,YAAY,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;IAC/C,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;IAC3C,kBAAkB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACvC,cAAc,EAAE,CAAC,WAAW,EAAE,oBAAoB,KAAK,IAAI,CAAA;IAC3D,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,IAAI,CAAA;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,CAAA;CAChB,CAAA;AAMD,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,WAAW,CAAC,EAAE,oBAAoB,CAAA;IAClC,IAAI,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAA;CAChC,CAAA;AAED,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,WAAW,EAAE,kBAAkB,EAC/B,IAAI,EAAE,WAAW,GAClB,EAAE,KAAK,qBAgUP;AAED,eAAO,MAAM,OAAO,GAAI,CAAC,GAAG,iBAAiB,OAAM,WAAW,CAAC,CAAC,CAAmC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/Auth/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAKtE,OAAO,KAA+D,MAAM,OAAO,CAAA;AAInF,OAAO,KAAK,EAAE,WAAW,EAA8B,MAAM,YAAY,CAAA;AAczE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAIzE,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;IACzB,WAAW,CAAC,EAAE,oBAAoB,CAAA;IAClC,IAAI,CAAC,EAAE,iBAAiB,GAAG,IAAI,CAAA;CAChC,CAAA;AAsBD,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,WAAW,EAAE,kBAAkB,EAC/B,IAAI,EAAE,WAAW,GAClB,EAAE,KAAK,qBAodP;AAED,eAAO,MAAM,OAAO,GAAI,CAAC,GAAG,iBAAiB,OAAM,WAAW,CAAC,CAAC,CAAmC,CAAA"}
@@ -11,10 +11,13 @@ import { useEffectEvent } from '../../hooks/useEffectEvent.js';
11
11
  import { useTranslation } from '../../providers/Translation/index.js';
12
12
  import { requests } from '../../utilities/api.js';
13
13
  import { useConfig } from '../Config/index.js';
14
- import { usePathname, useRouter } from '../RouterAdapter/index.js';
14
+ import { usePathname, useRouter, useSearchParams } from '../RouterAdapter/index.js';
15
15
  import { useRouteTransition } from '../RouteTransition/index.js';
16
+ import { createAuthSessionRequests } from './authSessionRequests.js';
17
+ import { TAB_SESSION_EVENT_TYPES } from './tabSessionSync/index.js';
18
+ import { useTabSessionSync } from './tabSessionSync/useTabSessionSync.js';
19
+ import { useAuthSessionTimers } from './useAuthSessionTimers.js';
16
20
  const Context = /*#__PURE__*/createContext({});
17
- const maxTimeoutMs = 2147483647;
18
21
  export function AuthProvider({
19
22
  children,
20
23
  permissions: initialPermissions,
@@ -22,6 +25,8 @@ export function AuthProvider({
22
25
  }) {
23
26
  const pathname = usePathname();
24
27
  const router = useRouter();
28
+ const searchParams = useSearchParams();
29
+ const route = `${pathname}?${searchParams.toString()}`;
25
30
  const {
26
31
  config
27
32
  } = useConfig();
@@ -30,7 +35,8 @@ export function AuthProvider({
30
35
  autoLogin,
31
36
  autoRefresh,
32
37
  routes: {
33
- inactivity: logoutInactivityRoute
38
+ inactivity: logoutInactivityRoute,
39
+ login: loginRoute
34
40
  },
35
41
  user: userSlug
36
42
  },
@@ -51,14 +57,12 @@ export function AuthProvider({
51
57
  } = useRouteTransition();
52
58
  const [user, setUserInMemory] = useState(initialUser);
53
59
  const [tokenInMemory, setTokenInMemory] = useState();
54
- const [tokenExpirationMs, setTokenExpirationMs] = useState();
60
+ const [authSession, setAuthSession] = useState();
55
61
  const [permissions, setPermissions] = useState(initialPermissions);
56
- const [forceLogoutBufferMs, setForceLogoutBufferMs] = useState(120_000);
57
62
  const [fetchedUserOnMount, setFetchedUserOnMount] = useState(false);
58
- const refreshTokenTimeoutRef = React.useRef(null);
59
- const reminderTimeoutRef = React.useRef(null);
60
- const forceLogOutTimeoutRef = React.useRef(null);
61
- const id = user?.id;
63
+ const [authRequests] = useState(createAuthSessionRequests);
64
+ const userRef = React.useRef(initialUser);
65
+ const isAuthenticated = Boolean(user);
62
66
  const redirectToInactivityRoute = useCallback(() => {
63
67
  const baseAdminRoute = formatAdminURL({
64
68
  adminRoute,
@@ -70,111 +74,221 @@ export function AuthProvider({
70
74
  })));
71
75
  closeAllModals();
72
76
  }, [router, adminRoute, logoutInactivityRoute, closeAllModals, startRouteTransition]);
73
- const revokeTokenAndExpire = useCallback(() => {
74
- setUserInMemory(null);
75
- setTokenInMemory(undefined);
76
- setTokenExpirationMs(undefined);
77
- clearTimeout(refreshTokenTimeoutRef.current);
78
- }, []);
79
- // Handler for reminder timeout - uses useEffectEvent to capture latest autoRefresh value
80
- const handleReminderTimeout = useEffectEvent(() => {
77
+ const redirectToLoginRoute = useCallback(() => {
78
+ startRouteTransition(() => router.replace(formatAdminURL({
79
+ adminRoute,
80
+ path: loginRoute
81
+ })));
82
+ closeAllModals();
83
+ }, [adminRoute, closeAllModals, loginRoute, router, startRouteTransition]);
84
+ function onSessionActivity() {
85
+ setAuthSession(currentAuthSession => {
86
+ if (!currentAuthSession || currentAuthSession.activityRecorded) {
87
+ return currentAuthSession;
88
+ }
89
+ return {
90
+ ...currentAuthSession,
91
+ activityRecorded: true
92
+ };
93
+ });
94
+ }
95
+ function onSessionActivityRefresh() {
96
+ void refreshSession({
97
+ isActivityRefresh: true
98
+ });
99
+ }
100
+ function onSessionExpiration(expirationMs) {
101
+ const collection = userRef.current?.collection;
102
+ tabSessionSync.broadcast({
103
+ type: TAB_SESSION_EVENT_TYPES.EXPIRED,
104
+ expiredTokenAt: expirationMs
105
+ });
106
+ void logOutSession({
107
+ collection
108
+ }).then(redirectToInactivityRoute);
109
+ }
110
+ function onSessionReminder() {
81
111
  if (autoRefresh) {
82
- refreshCookieEvent();
112
+ sessionTimers.scheduleRefresh();
83
113
  } else {
84
114
  openModal(stayLoggedInModalSlug);
85
115
  }
116
+ }
117
+ const sessionTimers = useAuthSessionTimers({
118
+ isAuthenticated,
119
+ onActivity: onSessionActivity,
120
+ onActivityRefresh: onSessionActivityRefresh,
121
+ onExpire: onSessionExpiration,
122
+ onReminder: onSessionReminder
86
123
  });
87
- const setNewUser = useCallback(userResponse => {
88
- clearTimeout(reminderTimeoutRef.current);
89
- clearTimeout(forceLogOutTimeoutRef.current);
90
- if (userResponse?.user) {
91
- setUserInMemory(userResponse.user);
92
- setTokenInMemory(userResponse.token ?? userResponse.refreshedToken);
93
- setTokenExpirationMs(userResponse.exp * 1000);
94
- const expiresInMs = Math.max(0, Math.min((userResponse.exp ?? 0) * 1000 - Date.now(), maxTimeoutMs));
95
- if (expiresInMs) {
96
- const nextForceLogoutBufferMs = Math.min(60_000, expiresInMs / 2);
97
- setForceLogoutBufferMs(nextForceLogoutBufferMs);
98
- reminderTimeoutRef.current = setTimeout(handleReminderTimeout, Math.max(expiresInMs - nextForceLogoutBufferMs, 0));
99
- forceLogOutTimeoutRef.current = setTimeout(() => {
100
- revokeTokenAndExpire();
101
- redirectToInactivityRoute();
102
- }, expiresInMs);
124
+ useEffect(() => {
125
+ sessionTimers.recordActivity('route');
126
+ }, [route, sessionTimers]);
127
+ const clearUserInMemory = useCallback(() => {
128
+ userRef.current = null;
129
+ setUserInMemory(null);
130
+ setTokenInMemory(undefined);
131
+ setAuthSession(undefined);
132
+ sessionTimers.clear();
133
+ }, [sessionTimers]);
134
+ const setLocalSession = useCallback(session => {
135
+ if (session?.user) {
136
+ const expirationMs_0 = typeof session.exp === 'number' && Number.isFinite(session.exp) ? session.exp * 1000 : undefined;
137
+ const nextSessionTiming = expirationMs_0 !== undefined ? sessionTimers.setExpiration(expirationMs_0) : undefined;
138
+ userRef.current = session.user;
139
+ setUserInMemory(session.user);
140
+ setTokenInMemory(session.token ?? session.refreshedToken);
141
+ if (nextSessionTiming) {
142
+ setAuthSession({
143
+ ...nextSessionTiming,
144
+ activityRecorded: false
145
+ });
103
146
  }
104
147
  } else {
105
- revokeTokenAndExpire();
148
+ clearUserInMemory();
106
149
  }
107
- }, [redirectToInactivityRoute, revokeTokenAndExpire]);
108
- const refreshCookie = useCallback(forceRefresh => {
109
- if (!id) {
110
- return;
150
+ }, [clearUserInMemory, sessionTimers]);
151
+ const setUser = useCallback(session_0 => {
152
+ authRequests.discardPendingResults();
153
+ setLocalSession(session_0);
154
+ }, [authRequests, setLocalSession]);
155
+ const tabSessionSync = useTabSessionSync({
156
+ getTokenExpirationMs: sessionTimers.getCurrentExpirationMs,
157
+ onSessionExpired: () => {
158
+ const collection_0 = userRef.current?.collection;
159
+ void logOutSession({
160
+ collection: collection_0
161
+ }).then(redirectToInactivityRoute);
162
+ },
163
+ onSessionLoggedOut: () => {
164
+ const collection_1 = userRef.current?.collection;
165
+ void logOutSession({
166
+ collection: collection_1
167
+ }).then(redirectToLoginRoute);
168
+ },
169
+ onSessionRefreshed: session_1 => {
170
+ if (!authRequests.isLoggingOut()) {
171
+ authRequests.discardPendingResults();
172
+ setLocalSession(session_1);
173
+ }
174
+ },
175
+ onTabSessionUnauthenticated: () => {
176
+ redirectToInactivityRoute();
177
+ },
178
+ reconcileSession: async options => {
179
+ const result = await fetchFullUserResult(options);
180
+ if (result.status === 'authenticated' && result.expirationMs !== undefined) {
181
+ return {
182
+ expirationMs: result.expirationMs,
183
+ status: result.status,
184
+ user: result.user
185
+ };
186
+ }
187
+ if (result.status === 'unauthenticated') {
188
+ return result;
189
+ }
190
+ return {
191
+ status: 'indeterminate'
192
+ };
111
193
  }
112
- const expiresInMs_0 = Math.max(0, (tokenExpirationMs ?? 0) - Date.now());
113
- if (forceRefresh || tokenExpirationMs && expiresInMs_0 < forceLogoutBufferMs * 2) {
114
- clearTimeout(refreshTokenTimeoutRef.current);
115
- refreshTokenTimeoutRef.current = setTimeout(async () => {
116
- try {
117
- const request = await requests.post(formatAdminURL({
118
- apiRoute,
119
- path: `/${userSlug}/refresh-token?refresh`
120
- }), {
121
- headers: {
122
- 'Accept-Language': i18n.language
123
- }
124
- });
125
- if (request.status === 200) {
126
- const json = await request.json();
127
- setNewUser(json);
128
- } else {
129
- setNewUser(null);
130
- redirectToInactivityRoute();
194
+ });
195
+ const refreshSession = useCallback(({
196
+ isActivityRefresh
197
+ }) => {
198
+ return authRequests.refresh(async ({
199
+ acceptResult,
200
+ invalidateWhenIdle,
201
+ isResultStale
202
+ }) => {
203
+ if (isResultStale()) {
204
+ return null;
205
+ }
206
+ const handledExpiration = sessionTimers.getCurrentExpirationMs();
207
+ const handledUser = userRef.current;
208
+ try {
209
+ const refreshStartedAt = Date.now();
210
+ const request = await requests.post(formatAdminURL({
211
+ apiRoute,
212
+ path: `/${userSlug}/refresh-token${isActivityRefresh ? '?refresh' : ''}`
213
+ }), {
214
+ headers: {
215
+ 'Accept-Language': i18n.language
131
216
  }
132
- } catch (e) {
133
- toast.error(e.message);
217
+ });
218
+ if (isResultStale()) {
219
+ return null;
134
220
  }
135
- }, 1000);
136
- }
137
- }, [apiRoute, i18n.language, redirectToInactivityRoute, setNewUser, tokenExpirationMs, userSlug, forceLogoutBufferMs, id]);
138
- const refreshCookieAsync = useCallback(async skipSetUser => {
139
- try {
140
- const request_0 = await requests.post(formatAdminURL({
141
- apiRoute,
142
- path: `/${userSlug}/refresh-token`
143
- }), {
144
- headers: {
145
- 'Accept-Language': i18n.language
221
+ if (request.status === 200) {
222
+ const json = await request.json();
223
+ if (!acceptResult()) {
224
+ return null;
225
+ }
226
+ setLocalSession(json);
227
+ tabSessionSync.broadcast({
228
+ type: TAB_SESSION_EVENT_TYPES.REFRESHED,
229
+ refreshStartedAt,
230
+ session: json
231
+ });
232
+ return json.user;
146
233
  }
147
- });
148
- if (request_0.status === 200) {
149
- const json_0 = await request_0.json();
150
- if (!skipSetUser) {
151
- setNewUser(json_0);
234
+ if (handledUser) {
235
+ const invalidateSession = () => {
236
+ if (handledExpiration !== undefined) {
237
+ tabSessionSync.broadcast({
238
+ type: TAB_SESSION_EVENT_TYPES.EXPIRED,
239
+ expiredTokenAt: handledExpiration
240
+ });
241
+ }
242
+ setLocalSession(null);
243
+ redirectToInactivityRoute();
244
+ };
245
+ invalidateWhenIdle(invalidateSession);
152
246
  }
153
- return json_0.user;
247
+ } catch (e) {
248
+ toast.error(`Refreshing token failed: ${e.message}`);
154
249
  }
155
- if (user) {
156
- setNewUser(null);
157
- redirectToInactivityRoute();
250
+ return null;
251
+ });
252
+ }, [apiRoute, authRequests, tabSessionSync, i18n.language, redirectToInactivityRoute, sessionTimers, setLocalSession, userSlug]);
253
+ const refreshCookieAsync = useCallback(() => refreshSession({
254
+ isActivityRefresh: false
255
+ }), [refreshSession]);
256
+ const logOutSession = useCallback(({
257
+ collection: collection_2
258
+ }) => {
259
+ return authRequests.logOut({
260
+ clearSession: () => {
261
+ authRequests.discardPendingResults();
262
+ setLocalSession(null);
263
+ },
264
+ request: async () => {
265
+ try {
266
+ if (collection_2) {
267
+ await requests.post(formatAdminURL({
268
+ apiRoute,
269
+ path: `/${collection_2}/logout`
270
+ }));
271
+ }
272
+ } catch (_) {
273
+ // Explicit logout always clears local state, even if server revocation fails.
274
+ }
158
275
  }
159
- } catch (e_0) {
160
- toast.error(`Refreshing token failed: ${e_0.message}`);
161
- }
162
- return null;
163
- }, [apiRoute, i18n.language, redirectToInactivityRoute, setNewUser, userSlug, user]);
276
+ });
277
+ }, [apiRoute, authRequests, setLocalSession]);
164
278
  const logOut = useCallback(async () => {
165
- try {
166
- if (user && user.collection) {
167
- setNewUser(null);
168
- await requests.post(formatAdminURL({
169
- apiRoute,
170
- path: `/${user.collection}/logout`
171
- }));
172
- }
173
- } catch (_) {
174
- // fail silently and log the user out in state
279
+ const logoutEvent = {
280
+ type: TAB_SESSION_EVENT_TYPES.LOGGED_OUT
281
+ };
282
+ const logoutPublication = tabSessionSync.broadcast(logoutEvent);
283
+ const collection_3 = userRef.current?.collection;
284
+ await logOutSession({
285
+ collection: collection_3
286
+ });
287
+ if (logoutPublication?.type === TAB_SESSION_EVENT_TYPES.LOGGED_OUT) {
288
+ tabSessionSync.broadcastLogoutSettlement(logoutPublication);
175
289
  }
176
290
  return true;
177
- }, [apiRoute, setNewUser, user]);
291
+ }, [tabSessionSync, logOutSession]);
178
292
  const refreshPermissions = useCallback(async ({
179
293
  locale
180
294
  } = {}) => {
@@ -184,7 +298,7 @@ export function AuthProvider({
184
298
  addQueryPrefix: true
185
299
  });
186
300
  try {
187
- const request_1 = await requests.get(formatAdminURL({
301
+ const request_0 = await requests.get(formatAdminURL({
188
302
  apiRoute,
189
303
  path: `/access${params}`
190
304
  }), {
@@ -192,42 +306,79 @@ export function AuthProvider({
192
306
  'Accept-Language': i18n.language
193
307
  }
194
308
  });
195
- if (request_1.status === 200) {
196
- const json_1 = await request_1.json();
197
- setPermissions(json_1);
309
+ if (request_0.status === 200) {
310
+ const json_0 = await request_0.json();
311
+ setPermissions(json_0);
198
312
  } else {
199
- throw new Error(`Fetching permissions failed with status code ${request_1.status}`);
313
+ throw new Error(`Fetching permissions failed with status code ${request_0.status}`);
200
314
  }
201
- } catch (e_1) {
202
- toast.error(`Refreshing permissions failed: ${e_1.message}`);
315
+ } catch (e_0) {
316
+ toast.error(`Refreshing permissions failed: ${e_0.message}`);
203
317
  }
204
318
  }, [apiRoute, i18n]);
205
- const fetchFullUser = React.useCallback(async () => {
206
- try {
207
- const request_2 = await requests.get(formatAdminURL({
208
- apiRoute,
209
- path: `/${userSlug}/me`
210
- }), {
211
- credentials: 'include',
212
- headers: {
213
- 'Accept-Language': i18n.language
319
+ const fetchFullUserResult = React.useCallback(({
320
+ isTabSessionEventStale
321
+ } = {}) => {
322
+ return authRequests.queue(async ({
323
+ acceptResult: acceptResult_0,
324
+ isResultStale: isResultStale_0
325
+ }) => {
326
+ const isResponseStale = () => isResultStale_0() || Boolean(isTabSessionEventStale?.());
327
+ if (isResponseStale()) {
328
+ return {
329
+ status: 'indeterminate'
330
+ };
331
+ }
332
+ try {
333
+ const request_1 = await requests.get(formatAdminURL({
334
+ apiRoute,
335
+ path: `/${userSlug}/me`
336
+ }), {
337
+ credentials: 'include',
338
+ headers: {
339
+ 'Accept-Language': i18n.language
340
+ }
341
+ });
342
+ if (request_1.status !== 200) {
343
+ return {
344
+ status: 'indeterminate'
345
+ };
214
346
  }
215
- });
216
- if (request_2.status === 200) {
217
- const json_2 = await request_2.json();
218
- setNewUser(json_2);
219
- return json_2?.user || null;
347
+ const json_1 = await request_1.json();
348
+ if (isResponseStale()) {
349
+ return {
350
+ status: 'indeterminate'
351
+ };
352
+ }
353
+ if (json_1?.user) {
354
+ if (!acceptResult_0()) {
355
+ return {
356
+ status: 'indeterminate'
357
+ };
358
+ }
359
+ setLocalSession(json_1);
360
+ return {
361
+ expirationMs: typeof json_1.exp === 'number' && Number.isFinite(json_1.exp) ? json_1.exp * 1000 : sessionTimers.getCurrentExpirationMs(),
362
+ status: 'authenticated',
363
+ user: json_1.user
364
+ };
365
+ }
366
+ setLocalSession(null);
367
+ return {
368
+ status: 'unauthenticated'
369
+ };
370
+ } catch (e_1) {
371
+ toast.error(`Fetching user failed: ${e_1.message}`);
220
372
  }
221
- } catch (e_2) {
222
- toast.error(`Fetching user failed: ${e_2.message}`);
223
- }
224
- return null;
225
- }, [apiRoute, userSlug, i18n.language, setNewUser]);
226
- const refreshCookieEvent = useEffectEvent(refreshCookie);
227
- useEffect(() => {
228
- // when location changes, refresh cookie
229
- refreshCookieEvent();
230
- }, [pathname]);
373
+ return {
374
+ status: 'indeterminate'
375
+ };
376
+ });
377
+ }, [apiRoute, authRequests, i18n.language, sessionTimers, setLocalSession, userSlug]);
378
+ const fetchFullUser = React.useCallback(async () => {
379
+ const result_0 = await fetchFullUserResult();
380
+ return result_0.status === 'authenticated' ? result_0.user : null;
381
+ }, [fetchFullUserResult]);
231
382
  const fetchFullUserEvent = useEffectEvent(fetchFullUser);
232
383
  useEffect(() => {
233
384
  async function fetchUserOnMount() {
@@ -242,26 +393,23 @@ export function AuthProvider({
242
393
  }
243
394
  }, [user, autoLogin]);
244
395
  useEffect(() => () => {
245
- // remove all timeouts on unmount
246
- clearTimeout(refreshTokenTimeoutRef.current);
247
- clearTimeout(reminderTimeoutRef.current);
248
- clearTimeout(forceLogOutTimeoutRef.current);
249
- }, []);
396
+ authRequests.discardPendingResults();
397
+ }, [authRequests]);
250
398
  if (!user && !fetchedUserOnMount) {
251
399
  return null;
252
400
  }
253
401
  return /*#__PURE__*/_jsx(Context, {
254
402
  value: {
403
+ authSession,
255
404
  fetchFullUser,
256
405
  logOut,
257
406
  permissions,
258
- refreshCookie,
407
+ refreshCookie: sessionTimers.scheduleRefresh,
259
408
  refreshCookieAsync,
260
409
  refreshPermissions,
261
410
  setPermissions,
262
- setUser: setNewUser,
411
+ setUser,
263
412
  token: tokenInMemory,
264
- tokenExpirationMs,
265
413
  user
266
414
  },
267
415
  children: children