@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 +1 @@
1
- {"version":3,"file":"useElementHeightVariable.js","names":["c","_c","useEffect","useElementHeightVariable","t0","$","cssVar","isEnabled","t1","ref","undefined","t2","t3","el","current","observer","ResizeObserver","document","documentElement","style","setProperty","offsetHeight","observe","disconnect","removeProperty"],"sources":["../../src/hooks/useElementHeightVariable.ts"],"sourcesContent":["'use client'\n\nimport type { RefObject } from 'react'\n\nimport { useEffect } from 'react'\n\n/**\n * Observes an element and publishes its rendered height to a CSS custom property on the document\n * root (e.g. `--app-header-height`), so layout that depends on that height can be expressed in CSS.\n * The property is removed on unmount.\n *\n * Used by `AppHeader`, `DocumentControls` and `DocumentHeaderRoot` to expose their heights for\n * sticky offsets and the upload view's scroll-driven sizing.\n */\nexport const useElementHeightVariable = ({\n cssVar,\n isEnabled = true,\n ref,\n}: {\n cssVar: string\n isEnabled?: boolean\n ref: RefObject<HTMLElement | null>\n}): void => {\n useEffect(() => {\n if (!isEnabled) {\n return\n }\n\n const el = ref.current\n if (!el) {\n return\n }\n\n const observer = new ResizeObserver(() => {\n document.documentElement.style.setProperty(cssVar, `${el.offsetHeight}px`)\n })\n observer.observe(el)\n\n return () => {\n observer.disconnect()\n document.documentElement.style.removeProperty(cssVar)\n }\n }, [cssVar, isEnabled, ref])\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAIA,SAASC,SAAS,QAAQ;AAE1B;;;;;;;;AAQA,OAAO,MAAMC,wBAAA,GAA2BC,EAAA;EAAA,MAAAC,CAAA,GAAAJ,EAAA;EAAC;IAAAK,MAAA;IAAAC,SAAA,EAAAC,EAAA;IAAAC;EAAA,IAAAL,EAQxC;EANC,MAAAG,SAAA,GAAAC,EAAgB,KAAAE,SAAA,UAAhBF,EAAgB;EAAA,IAAAG,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAP,CAAA,QAAAC,MAAA,IAAAD,CAAA,QAAAE,SAAA,IAAAF,CAAA,QAAAI,GAAA;IAONE,EAAA,GAAAA,CAAA;MAAA,KACHJ,SAAA;QAAA;MAAA;MAIL,MAAAM,EAAA,GAAWJ,GAAA,CAAAK,OAAA;MAAW,KACjBD,EAAA;QAAA;MAAA;MAIL,MAAAE,QAAA,OAAAC,cAAA;QACEC,QAAA,CAAAC,eAAA,CAAAC,KAAA,CAAAC,WAAA,CAA2Cd,MAAA,EAAQ,GAAGO,EAAA,CAAAQ,YAAA,IAAmB;MAAA;MAE3EN,QAAA,CAAAO,OAAA,CAAiBT,EAAA;MAAA;QAGfE,QAAA,CAAAQ,UAAA,CAAmB;QACnBN,QAAA,CAAAC,eAAA,CAAAC,KAAA,CAAAK,cAAA,CAA8ClB,MAAA;MAAA;IAAA;IAE/CM,EAAA,IAACN,MAAA,EAAQC,SAAA,EAAWE,GAAA;IAAIJ,CAAA,MAAAC,MAAA;IAAAD,CAAA,MAAAE,SAAA;IAAAF,CAAA,MAAAI,GAAA;IAAAJ,CAAA,MAAAM,EAAA;IAAAN,CAAA,MAAAO,EAAA;EAAA;IAAAD,EAAA,GAAAN,CAAA;IAAAO,EAAA,GAAAP,CAAA;EAAA;EAnB3BH,SAAA,CAAUS,EAmBV,EAAGC,EAAwB;AAAA,CAC7B","ignoreList":[]}
1
+ {"version":3,"file":"useElementHeightVariable.js","names":["c","_c","useEffect","useElementHeightVariable","t0","$","cssVar","isEnabled","t1","ref","undefined","t2","t3","el","current","observer","ResizeObserver","document","documentElement","style","setProperty","offsetHeight","observe","disconnect","removeProperty"],"sources":["../../src/hooks/useElementHeightVariable.ts"],"sourcesContent":["'use client'\n\nimport type { RefObject } from 'react'\n\nimport { useEffect } from 'react'\n\n/**\n * Observes an element and publishes its rendered height to a CSS custom property on the document\n * root (e.g. `--app-header-height`), so layout that depends on that height can be expressed in CSS.\n * The property is removed on unmount.\n *\n * Used by `AppHeader`, `DocumentControls` and `DocumentHeaderRoot` to expose their heights for\n * sticky offsets and the upload view's scroll-driven sizing.\n */\nexport const useElementHeightVariable = ({\n cssVar,\n isEnabled = true,\n ref,\n}: {\n cssVar: string\n isEnabled?: boolean\n ref: RefObject<HTMLElement | null>\n}): void => {\n useEffect(() => {\n if (!isEnabled) {\n return\n }\n\n const el = ref.current\n if (!el) {\n return\n }\n\n const observer = new ResizeObserver(() => {\n document.documentElement.style.setProperty(cssVar, `${el.offsetHeight}px`)\n })\n observer.observe(el)\n\n return () => {\n observer.disconnect()\n document.documentElement.style.removeProperty(cssVar)\n }\n }, [cssVar, isEnabled, ref])\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAIA,SAASC,SAAS,QAAQ;AAE1B;;;;;;;;AAQA,OAAO,MAAMC,wBAAA,GAA2BC,EAAA;EAAA,MAAAC,CAAA,GAAAJ,EAAA;EAAC;IAAAK,MAAA;IAAAC,SAAA,EAAAC,EAAA;IAAAC;EAAA,IAAAL,EAQxC;EANC,MAAAG,SAAA,GAAAC,EAAgB,KAAhBE,SAAgB,GAAhB,IAAgB,GAAhBF,EAAgB;EAAA,IAAAG,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAP,CAAA,QAAAC,MAAA,IAAAD,CAAA,QAAAE,SAAA,IAAAF,CAAA,QAAAI,GAAA;IAONE,EAAA,GAAAA,CAAA;MACR,IAAI,CAACJ,SAAA;QAAA;MAAA;MAIL,MAAAM,EAAA,GAAWJ,GAAA,CAAAK,OAAW;MACtB,IAAI,CAACD,EAAA;QAAA;MAAA;MAIL,MAAAE,QAAA,GAAiB,IAAIC,cAAA,CAAe;QAClCC,QAAA,CAAAC,eAAwB,CAAAC,KAAM,CAAAC,WAAY,CAACd,MAAA,EAAQ,GAAGO,EAAA,CAAAQ,YAAe,IAAI;MAAA,CAC3E;MACAN,QAAA,CAAAO,OAAgB,CAACT,EAAA;MAAA,OAEV;QACLE,QAAA,CAAAQ,UAAmB;QACnBN,QAAA,CAAAC,eAAwB,CAAAC,KAAM,CAAAK,cAAe,CAAClB,MAAA;MAAA,CAChD;IAAA,CACF;IAAGM,EAAA,IAACN,MAAA,EAAQC,SAAA,EAAWE,GAAA,CAAI;IAAAJ,CAAA,MAAAC,MAAA;IAAAD,CAAA,MAAAE,SAAA;IAAAF,CAAA,MAAAI,GAAA;IAAAJ,CAAA,MAAAM,EAAA;IAAAN,CAAA,MAAAO,EAAA;EAAA;IAAAD,EAAA,GAAAN,CAAA;IAAAO,EAAA,GAAAP,CAAA;EAAA;EAnB3BH,SAAA,CAAUS,EAmBV,EAAGC,EAAwB;AAAA,CAC7B","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"useHotkey.js","names":["c","_c","useModal","setsAreEqual","useCallback","useEffect","pressedKeys","Map","map","altleft","altright","controlleft","controlright","ctrlleft","ctrlright","escape","metaleft","metaright","osleft","osright","shiftleft","shiftright","stripKey","key","toLowerCase","trim","replace","pushToKeys","code","forEach","time","pressedKey","delete","set","Date","now","removeFromKeys","clear","useHotkey","options","func","$","cmdCtrlKey","editDepth","keyCodes","modalState","t0","event","e","detail","undefined","_temp","hasCmd","window","navigator","userAgent","includes","pressedWithoutModifier","keys","filter","_temp2","Set","has","ctrlKey","maxEditDepth","Object","key_1","isOpen","length","keydown","keyup","_temp3","t1","t2","document","addEventListener","removeEventListener","key_0","e_0"],"sources":["../../src/hooks/useHotkey.ts"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { setsAreEqual } from 'payload/shared'\nimport { useCallback, useEffect } from 'react'\n\n// Required to be outside of hook, else debounce would be necessary\n// and then one could not prevent the default behaviour.\n\n// It maps the pressed keys with the time they were pressed, in order to implement a maximum time\n// for the user to press the next key in the sequence\n\n// This is necessary to prevent a bug where the keyup event, which unsets the key as pressed\n// is not fired when the window is not focused.\n// When the user then comes back to the window, the key is still registered as pressed, even though it's not.\nconst pressedKeys = new Map<string, number>([])\n\nconst map = {\n altleft: 'alt',\n altright: 'alt',\n controlleft: 'ctrl',\n controlright: 'ctrl',\n ctrlleft: 'ctrl',\n ctrlright: 'ctrl',\n escape: 'esc',\n metaleft: 'meta',\n metaright: 'meta',\n osleft: 'meta',\n osright: 'meta',\n shiftleft: 'shift',\n shiftright: 'shift',\n}\n\nconst stripKey = (key: string) => {\n return (map[key.toLowerCase()] || key).trim().toLowerCase().replace('key', '')\n}\n\nconst pushToKeys = (code: string) => {\n const key = stripKey(code)\n\n // There is a weird bug with macos that if the keys are not cleared they remain in the\n // pressed keys set.\n if (key === 'meta') {\n pressedKeys.forEach(\n (time, pressedKey) => pressedKey !== 'meta' && pressedKeys.delete(pressedKey),\n )\n }\n\n pressedKeys.set(key, Date.now())\n}\n\nconst removeFromKeys = (code: string) => {\n const key = stripKey(code)\n // There is a weird bug with macos that if the keys are not cleared they remain in the\n // pressed keys set.\n if (key === 'meta') {\n pressedKeys.clear()\n }\n pressedKeys.delete(key)\n}\n\n/**\n * Hook function to work with hotkeys.\n * @param param0.keyCode {string[]} The keys to listen for (`Event.code` without `'Key'` and lowercased)\n * @param param0.cmdCtrlKey {boolean} Whether Ctrl on windows or Cmd on mac must be pressed\n * @param param0.editDepth {boolean} This ensures that the hotkey is only triggered for the most top-level drawer in case there are nested drawers\n * @param func The callback function\n */\nexport const useHotkey = (\n options: {\n cmdCtrlKey: boolean\n editDepth: number\n keyCodes: string[]\n },\n func: (e: KeyboardEvent) => void,\n): void => {\n const { cmdCtrlKey, editDepth, keyCodes } = options\n\n const { modalState } = useModal()\n\n const keydown = useCallback(\n (event: CustomEvent | KeyboardEvent) => {\n const e: KeyboardEvent = event.detail?.key ? event.detail : event\n if (e.key === undefined) {\n // Autofill events, or other synthetic events, can be ignored\n return\n }\n\n // Filter out pressed keys which have been pressed > 3 seconds ago\n pressedKeys.forEach((time, key) => {\n if (Date.now() - time > 3000) {\n pressedKeys.delete(key)\n }\n })\n\n if (e.code) {\n pushToKeys(e.code)\n }\n\n // Check for Mac and iPad\n const hasCmd = window.navigator.userAgent.includes('Mac OS X')\n const pressedWithoutModifier = [...pressedKeys.keys()].filter(\n (key) => !['alt', 'ctrl', 'meta', 'shift'].includes(key),\n )\n\n // Check whether arrays contain the same values (regardless of number of occurrences)\n if (\n setsAreEqual(new Set(pressedWithoutModifier), new Set(keyCodes)) &&\n (!cmdCtrlKey || (hasCmd && pressedKeys.has('meta')) || (!hasCmd && e.ctrlKey))\n ) {\n // get the maximum edit depth by counting the number of open drawers. modalState is and object which contains the state of all drawers.\n const maxEditDepth =\n Object.keys(modalState).filter((key) => modalState[key]?.isOpen)?.length + 1 || 1\n\n if (maxEditDepth !== editDepth) {\n // We only want to execute the hotkey from the most top-level drawer / edit depth.\n return\n }\n // execute the function associated with the maximum edit depth\n func(e)\n }\n },\n [keyCodes, cmdCtrlKey, editDepth, modalState, func],\n )\n\n const keyup = useCallback((e: KeyboardEvent) => {\n if (e.code) {\n removeFromKeys(e.code)\n }\n }, [])\n\n useEffect(() => {\n document.addEventListener('keydown', keydown, false)\n document.addEventListener('bypassKeyDown', keydown, false) // this is called if the keydown event's propagation is stopped by react-select\n document.addEventListener('keyup', keyup, false)\n\n return () => {\n document.removeEventListener('keydown', keydown)\n document.removeEventListener('bypassKeyDown', keydown)\n document.removeEventListener('keyup', keyup)\n }\n }, [keydown, keyup])\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"useHotkey.js","names":["c","_c","useModal","setsAreEqual","useCallback","useEffect","pressedKeys","Map","map","altleft","altright","controlleft","controlright","ctrlleft","ctrlright","escape","metaleft","metaright","osleft","osright","shiftleft","shiftright","stripKey","key","toLowerCase","trim","replace","pushToKeys","code","forEach","time","pressedKey","delete","set","Date","now","removeFromKeys","clear","useHotkey","options","func","$","cmdCtrlKey","editDepth","keyCodes","modalState","t0","event","e","detail","undefined","_temp","hasCmd","window","navigator","userAgent","includes","pressedWithoutModifier","keys","filter","_temp2","Set","has","ctrlKey","maxEditDepth","Object","key_1","isOpen","length","keydown","keyup","_temp3","t1","t2","document","addEventListener","removeEventListener","key_0","e_0"],"sources":["../../src/hooks/useHotkey.ts"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { setsAreEqual } from 'payload/shared'\nimport { useCallback, useEffect } from 'react'\n\n// Required to be outside of hook, else debounce would be necessary\n// and then one could not prevent the default behaviour.\n\n// It maps the pressed keys with the time they were pressed, in order to implement a maximum time\n// for the user to press the next key in the sequence\n\n// This is necessary to prevent a bug where the keyup event, which unsets the key as pressed\n// is not fired when the window is not focused.\n// When the user then comes back to the window, the key is still registered as pressed, even though it's not.\nconst pressedKeys = new Map<string, number>([])\n\nconst map = {\n altleft: 'alt',\n altright: 'alt',\n controlleft: 'ctrl',\n controlright: 'ctrl',\n ctrlleft: 'ctrl',\n ctrlright: 'ctrl',\n escape: 'esc',\n metaleft: 'meta',\n metaright: 'meta',\n osleft: 'meta',\n osright: 'meta',\n shiftleft: 'shift',\n shiftright: 'shift',\n}\n\nconst stripKey = (key: string) => {\n return (map[key.toLowerCase()] || key).trim().toLowerCase().replace('key', '')\n}\n\nconst pushToKeys = (code: string) => {\n const key = stripKey(code)\n\n // There is a weird bug with macos that if the keys are not cleared they remain in the\n // pressed keys set.\n if (key === 'meta') {\n pressedKeys.forEach(\n (time, pressedKey) => pressedKey !== 'meta' && pressedKeys.delete(pressedKey),\n )\n }\n\n pressedKeys.set(key, Date.now())\n}\n\nconst removeFromKeys = (code: string) => {\n const key = stripKey(code)\n // There is a weird bug with macos that if the keys are not cleared they remain in the\n // pressed keys set.\n if (key === 'meta') {\n pressedKeys.clear()\n }\n pressedKeys.delete(key)\n}\n\n/**\n * Hook function to work with hotkeys.\n * @param param0.keyCode {string[]} The keys to listen for (`Event.code` without `'Key'` and lowercased)\n * @param param0.cmdCtrlKey {boolean} Whether Ctrl on windows or Cmd on mac must be pressed\n * @param param0.editDepth {boolean} This ensures that the hotkey is only triggered for the most top-level drawer in case there are nested drawers\n * @param func The callback function\n */\nexport const useHotkey = (\n options: {\n cmdCtrlKey: boolean\n editDepth: number\n keyCodes: string[]\n },\n func: (e: KeyboardEvent) => void,\n): void => {\n const { cmdCtrlKey, editDepth, keyCodes } = options\n\n const { modalState } = useModal()\n\n const keydown = useCallback(\n (event: CustomEvent | KeyboardEvent) => {\n const e: KeyboardEvent = event.detail?.key ? event.detail : event\n if (e.key === undefined) {\n // Autofill events, or other synthetic events, can be ignored\n return\n }\n\n // Filter out pressed keys which have been pressed > 3 seconds ago\n pressedKeys.forEach((time, key) => {\n if (Date.now() - time > 3000) {\n pressedKeys.delete(key)\n }\n })\n\n if (e.code) {\n pushToKeys(e.code)\n }\n\n // Check for Mac and iPad\n const hasCmd = window.navigator.userAgent.includes('Mac OS X')\n const pressedWithoutModifier = [...pressedKeys.keys()].filter(\n (key) => !['alt', 'ctrl', 'meta', 'shift'].includes(key),\n )\n\n // Check whether arrays contain the same values (regardless of number of occurrences)\n if (\n setsAreEqual(new Set(pressedWithoutModifier), new Set(keyCodes)) &&\n (!cmdCtrlKey || (hasCmd && pressedKeys.has('meta')) || (!hasCmd && e.ctrlKey))\n ) {\n // get the maximum edit depth by counting the number of open drawers. modalState is and object which contains the state of all drawers.\n const maxEditDepth =\n Object.keys(modalState).filter((key) => modalState[key]?.isOpen)?.length + 1 || 1\n\n if (maxEditDepth !== editDepth) {\n // We only want to execute the hotkey from the most top-level drawer / edit depth.\n return\n }\n // execute the function associated with the maximum edit depth\n func(e)\n }\n },\n [keyCodes, cmdCtrlKey, editDepth, modalState, func],\n )\n\n const keyup = useCallback((e: KeyboardEvent) => {\n if (e.code) {\n removeFromKeys(e.code)\n }\n }, [])\n\n useEffect(() => {\n document.addEventListener('keydown', keydown, false)\n document.addEventListener('bypassKeyDown', keydown, false) // this is called if the keydown event's propagation is stopped by react-select\n document.addEventListener('keyup', keyup, false)\n\n return () => {\n document.removeEventListener('keydown', keydown)\n document.removeEventListener('bypassKeyDown', keydown)\n document.removeEventListener('keyup', keyup)\n }\n }, [keydown, keyup])\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"useIntersect.js","names":["c","_c","useEffect","useRef","useState","useIntersect","t0","disable","$","root","t1","rootMargin","t2","threshold","t3","undefined","entry","updateEntry","node","setNode","observer","window","IntersectionObserver","t4","ent","t5","t6","current","currentObserver","disconnect","observe","t7"],"sources":["../../src/hooks/useIntersect.ts"],"sourcesContent":["'use client'\n\nimport type React from 'react'\n\nimport { useEffect, useRef, useState } from 'react'\n\ntype Intersect = [\n setNode: React.Dispatch<HTMLElement>,\n entry: IntersectionObserverEntry,\n node: HTMLElement,\n]\n\nexport const useIntersect = (\n { root = null, rootMargin = '0px', threshold = 0 } = {},\n disable?: boolean,\n): Intersect => {\n const [entry, updateEntry] = useState<IntersectionObserverEntry>()\n const [node, setNode] = useState(null)\n\n const observer = useRef(\n typeof window !== 'undefined' && 'IntersectionObserver' in window && !disable\n ? new window.IntersectionObserver(([ent]) => updateEntry(ent), {\n root,\n rootMargin,\n threshold,\n })\n : null,\n )\n\n useEffect(() => {\n if (disable) {\n return\n }\n const { current: currentObserver } = observer\n currentObserver.disconnect()\n\n if (node) {\n currentObserver.observe(node)\n }\n\n return () => currentObserver.disconnect()\n }, [node, disable])\n\n return [setNode, entry, node]\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAIA,SAASC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAQ5C,OAAO,MAAMC,YAAA,GAAeA,CAAAC,EAAA,EAAAC,OAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EAC1B;IAAAQ,IAAA,EAAAC,EAAA;IAAAC,UAAA,EAAAC,EAAA;IAAAC,SAAA,EAAAC;EAAA,IAAAR,EAAuD,KAAAS,SAAA,QAAvDT,EAAuD;EAArD,MAAAG,IAAA,GAAAC,EAAW,KAAAK,SAAA,UAAXL,EAAW;EAAE,MAAAC,UAAA,GAAAC,EAAkB,KAAAG,SAAA,GAAL,KAAK,GAAlBH,EAAkB;EAAE,MAAAC,SAAA,GAAAC,EAAa,KAAAC,SAAA,OAAbD,EAAa;EAGhD,OAAAE,KAAA,EAAAC,WAAA,IAA6Bb,QAAA;EAC7B,OAAAc,IAAA,EAAAC,OAAA,IAAwBf,QAAA,KAAS;EAEjC,MAAAgB,QAAA,GAAiBjB,MAAA,CACf,OAAAkB,MAAA,KAAkB,eAAe,0BAAAA,MAA0B,KAAWd,OAAA,OAAAc,MAAA,CAAAC,oBAAA,CAAAC,EAAA;IACjC,OAAAC,GAAA,IAAAD,EAAK;IAAA,OAAKN,WAAA,CAAYO,GAAA;EAAA;IAAAf,IAAA;IAAAE,UAAA;IAAAE;EAAA,SAKvD;EAAA,IAAAY,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAlB,CAAA,QAAAD,OAAA,IAAAC,CAAA,QAAAU,IAAA;IAGIO,EAAA,GAAAA,CAAA;MAAA,IACJlB,OAAA;QAAA;MAAA;MAGJ;QAAAoB,OAAA,EAAAC;MAAA,IAAqCR,QAAA;MACrCQ,eAAA,CAAAC,UAAA,CAA0B;MAAA,IAEtBX,IAAA;QACFU,eAAA,CAAAE,OAAA,CAAwBZ,IAAA;MAAA;MAAA,aAGbU,eAAA,CAAAC,UAAA,CAA0B;IAAA;IACtCH,EAAA,IAACR,IAAA,EAAMX,OAAA;IAAQC,CAAA,MAAAD,OAAA;IAAAC,CAAA,MAAAU,IAAA;IAAAV,CAAA,MAAAiB,EAAA;IAAAjB,CAAA,MAAAkB,EAAA;EAAA;IAAAD,EAAA,GAAAjB,CAAA;IAAAkB,EAAA,GAAAlB,CAAA;EAAA;EAZlBN,SAAA,CAAUuB,EAYV,EAAGC,EAAe;EAAA,IAAAK,EAAA;EAAA,IAAAvB,CAAA,QAAAQ,KAAA,IAAAR,CAAA,QAAAU,IAAA,IAAAV,CAAA,QAAAW,OAAA;IAEXY,EAAA,IAACZ,OAAA,EAASH,KAAA,EAAOE,IAAA;IAAKV,CAAA,MAAAQ,KAAA;IAAAR,CAAA,MAAAU,IAAA;IAAAV,CAAA,MAAAW,OAAA;IAAAX,CAAA,MAAAuB,EAAA;EAAA;IAAAA,EAAA,GAAAvB,CAAA;EAAA;EAAA,OAAtBuB,EAAsB;AAAA,CAC/B","ignoreList":[]}
1
+ {"version":3,"file":"useIntersect.js","names":["c","_c","useEffect","useRef","useState","useIntersect","t0","disable","$","root","t1","rootMargin","t2","threshold","t3","undefined","entry","updateEntry","node","setNode","observer","window","IntersectionObserver","t4","ent","t5","t6","current","currentObserver","disconnect","observe","t7"],"sources":["../../src/hooks/useIntersect.ts"],"sourcesContent":["'use client'\n\nimport type React from 'react'\n\nimport { useEffect, useRef, useState } from 'react'\n\ntype Intersect = [\n setNode: React.Dispatch<HTMLElement>,\n entry: IntersectionObserverEntry,\n node: HTMLElement,\n]\n\nexport const useIntersect = (\n { root = null, rootMargin = '0px', threshold = 0 } = {},\n disable?: boolean,\n): Intersect => {\n const [entry, updateEntry] = useState<IntersectionObserverEntry>()\n const [node, setNode] = useState(null)\n\n const observer = useRef(\n typeof window !== 'undefined' && 'IntersectionObserver' in window && !disable\n ? new window.IntersectionObserver(([ent]) => updateEntry(ent), {\n root,\n rootMargin,\n threshold,\n })\n : null,\n )\n\n useEffect(() => {\n if (disable) {\n return\n }\n const { current: currentObserver } = observer\n currentObserver.disconnect()\n\n if (node) {\n currentObserver.observe(node)\n }\n\n return () => currentObserver.disconnect()\n }, [node, disable])\n\n return [setNode, entry, node]\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAIA,SAASC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAQ5C,OAAO,MAAMC,YAAA,GAAeA,CAAAC,EAAA,EAAAC,OAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EAC1B;IAAAQ,IAAA,EAAAC,EAAA;IAAAC,UAAA,EAAAC,EAAA;IAAAC,SAAA,EAAAC;EAAA,IAAAR,EAAuD,KAAvDS,SAAuD,GAAvD,CAAsD,CAAC,GAAvDT,EAAuD;EAArD,MAAAG,IAAA,GAAAC,EAAW,KAAXK,SAAW,GAAX,IAAW,GAAXL,EAAW;EAAE,MAAAC,UAAA,GAAAC,EAAkB,KAAlBG,SAAkB,GAAlB,KAAkB,GAAlBH,EAAkB;EAAE,MAAAC,SAAA,GAAAC,EAAa,KAAbC,SAAa,GAAb,CAAa,GAAbD,EAAa;EAGhD,OAAAE,KAAA,EAAAC,WAAA,IAA6Bb,QAAA;EAC7B,OAAAc,IAAA,EAAAC,OAAA,IAAwBf,QAAA,CAAS;EAEjC,MAAAgB,QAAA,GAAiBjB,MAAA,CACf,OAAOkB,MAAA,KAAW,WAAyC,IAA1B,0BAA0BA,MAAW,IAAtE,CAAsEd,OAMlE,GANJ,IACQc,MAAA,CAAAC,oBAA2B,CAACC,EAAA;IAAC,OAAAC,GAAA,IAAAD,EAAK;IAAA,OAAKN,WAAA,CAAYO,GAAA;EAAA,GAAM;IAAAf,IAAA;IAAAE,UAAA;IAAAE;EAI7D,CACA,IANJ,IAMI;EAAA,IAAAY,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAlB,CAAA,QAAAD,OAAA,IAAAC,CAAA,QAAAU,IAAA;IAGIO,EAAA,GAAAA,CAAA;MACR,IAAIlB,OAAA;QAAA;MAAA;MAGJ;QAAAoB,OAAA,EAAAC;MAAA,IAAqCR,QAAA;MACrCQ,eAAA,CAAAC,UAA0B;MAE1B,IAAIX,IAAA;QACFU,eAAA,CAAAE,OAAuB,CAACZ,IAAA;MAAA;MAC1B,OAEO,MAAMU,eAAA,CAAAC,UAA0B;IAAA,CACzC;IAAGH,EAAA,IAACR,IAAA,EAAMX,OAAA,CAAQ;IAAAC,CAAA,MAAAD,OAAA;IAAAC,CAAA,MAAAU,IAAA;IAAAV,CAAA,MAAAiB,EAAA;IAAAjB,CAAA,MAAAkB,EAAA;EAAA;IAAAD,EAAA,GAAAjB,CAAA;IAAAkB,EAAA,GAAAlB,CAAA;EAAA;EAZlBN,SAAA,CAAUuB,EAYV,EAAGC,EAAe;EAAA,IAAAK,EAAA;EAAA,IAAAvB,CAAA,QAAAQ,KAAA,IAAAR,CAAA,QAAAU,IAAA,IAAAV,CAAA,QAAAW,OAAA;IAEXY,EAAA,IAACZ,OAAA,EAASH,KAAA,EAAOE,IAAA,CAAK;IAAAV,CAAA,MAAAQ,KAAA;IAAAR,CAAA,MAAAU,IAAA;IAAAV,CAAA,MAAAW,OAAA;IAAAX,CAAA,MAAAuB,EAAA;EAAA;IAAAA,EAAA,GAAAvB,CAAA;EAAA;EAAA,OAAtBuB,EAAsB;AAAA,CAC/B","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"usePayloadAPI.js","names":["c","_c","qs","useEffect","useRef","useState","useLocale","useTranslation","requests","usePayloadAPI","url","t0","$","t1","undefined","options","initialData","initialParams","t2","t3","i18n","t4","data","setData","params","setParams","isLoading","setIsLoading","isError","setIsError","currentLocale","locale","code","hasInitialized","t5","stringify","addQueryPrefix","search","t6","language","current","abortController","AbortController","fetchData","response","get","headers","signal","status","json","t7","aborted","abort","t8","_err","t9","t10","t11","Symbol","for","t12"],"sources":["../../src/hooks/usePayloadAPI.ts"],"sourcesContent":["'use client'\nimport type React from 'react'\n\nimport * as qs from 'qs-esm'\nimport { useEffect, useRef, useState } from 'react'\n\nimport { useLocale } from '../providers/Locale/index.js'\nimport { useTranslation } from '../providers/Translation/index.js'\nimport { requests } from '../utilities/api.js'\n\ntype Result = [\n {\n data: any\n isError: boolean\n isLoading: boolean\n },\n {\n setParams: React.Dispatch<unknown>\n },\n]\n\ntype Options = {\n initialData?: any\n initialParams?: unknown\n}\n\ntype UsePayloadAPI = (url: string, options?: Options) => Result\n\nexport const usePayloadAPI: UsePayloadAPI = (url, options = {}) => {\n const { initialData, initialParams = {} } = options\n\n const { i18n } = useTranslation()\n const [data, setData] = useState(initialData || {})\n const [params, setParams] = useState(initialParams)\n const [isLoading, setIsLoading] = useState(!initialData)\n const [isError, setIsError] = useState(false)\n const currentLocale = useLocale()\n const locale = currentLocale?.code\n const hasInitialized = useRef(false)\n\n const search = qs.stringify(\n {\n locale,\n ...(typeof params === 'object' ? params : {}),\n },\n {\n addQueryPrefix: true,\n },\n )\n\n // If `initialData`, no need to make a request\n useEffect(() => {\n if (initialData && !hasInitialized.current) {\n hasInitialized.current = true\n return\n }\n\n const abortController = new AbortController()\n\n const fetchData = async () => {\n setIsError(false)\n setIsLoading(true)\n\n try {\n const response = await requests.get(`${url}${search}`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n signal: abortController.signal,\n })\n\n if (response.status > 201) {\n setIsError(true)\n }\n\n const json = await response.json()\n\n setData(json)\n setIsLoading(false)\n } catch (error) {\n if (!abortController.signal.aborted) {\n setIsError(true)\n setIsLoading(false)\n }\n }\n }\n\n if (url) {\n void fetchData()\n } else {\n setIsError(false)\n setIsLoading(false)\n }\n\n return () => {\n try {\n abortController.abort()\n } catch (_err) {\n // swallow error\n }\n }\n }, [url, locale, search, i18n.language, initialData])\n\n // If `initialData` changes, reset the state\n useEffect(() => {\n if (initialData && hasInitialized.current) {\n setData(initialData)\n }\n }, [initialData])\n\n return [{ data, isError, isLoading }, { setParams }]\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"usePayloadAPI.js","names":["c","_c","qs","useEffect","useRef","useState","useLocale","useTranslation","requests","usePayloadAPI","url","t0","$","t1","undefined","options","initialData","initialParams","t2","t3","i18n","t4","data","setData","params","setParams","isLoading","setIsLoading","isError","setIsError","currentLocale","locale","code","hasInitialized","t5","stringify","addQueryPrefix","search","t6","language","current","abortController","AbortController","fetchData","response","get","headers","signal","status","json","t7","aborted","abort","t8","_err","t9","t10","t11","Symbol","for","t12"],"sources":["../../src/hooks/usePayloadAPI.ts"],"sourcesContent":["'use client'\nimport type React from 'react'\n\nimport * as qs from 'qs-esm'\nimport { useEffect, useRef, useState } from 'react'\n\nimport { useLocale } from '../providers/Locale/index.js'\nimport { useTranslation } from '../providers/Translation/index.js'\nimport { requests } from '../utilities/api.js'\n\ntype Result = [\n {\n data: any\n isError: boolean\n isLoading: boolean\n },\n {\n setParams: React.Dispatch<unknown>\n },\n]\n\ntype Options = {\n initialData?: any\n initialParams?: unknown\n}\n\ntype UsePayloadAPI = (url: string, options?: Options) => Result\n\nexport const usePayloadAPI: UsePayloadAPI = (url, options = {}) => {\n const { initialData, initialParams = {} } = options\n\n const { i18n } = useTranslation()\n const [data, setData] = useState(initialData || {})\n const [params, setParams] = useState(initialParams)\n const [isLoading, setIsLoading] = useState(!initialData)\n const [isError, setIsError] = useState(false)\n const currentLocale = useLocale()\n const locale = currentLocale?.code\n const hasInitialized = useRef(false)\n\n const search = qs.stringify(\n {\n locale,\n ...(typeof params === 'object' ? params : {}),\n },\n {\n addQueryPrefix: true,\n },\n )\n\n // If `initialData`, no need to make a request\n useEffect(() => {\n if (initialData && !hasInitialized.current) {\n hasInitialized.current = true\n return\n }\n\n const abortController = new AbortController()\n\n const fetchData = async () => {\n setIsError(false)\n setIsLoading(true)\n\n try {\n const response = await requests.get(`${url}${search}`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n signal: abortController.signal,\n })\n\n if (response.status > 201) {\n setIsError(true)\n }\n\n const json = await response.json()\n\n setData(json)\n setIsLoading(false)\n } catch (error) {\n if (!abortController.signal.aborted) {\n setIsError(true)\n setIsLoading(false)\n }\n }\n }\n\n if (url) {\n void fetchData()\n } else {\n setIsError(false)\n setIsLoading(false)\n }\n\n return () => {\n try {\n abortController.abort()\n } catch (_err) {\n // swallow error\n }\n }\n }, [url, locale, search, i18n.language, initialData])\n\n // If `initialData` changes, reset the state\n useEffect(() => {\n if (initialData && hasInitialized.current) {\n setData(initialData)\n }\n }, [initialData])\n\n return [{ data, isError, isLoading }, { setParams }]\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,29 @@
1
+ import type { RefObject } from 'react';
2
+ export type PointerPosition = {
3
+ x: number;
4
+ y: number;
5
+ };
6
+ type UsePointerSafeAreaArgs = {
7
+ enabled: boolean;
8
+ from: RefObject<HTMLElement | null>;
9
+ idleTimeout?: number;
10
+ onChange: (args: {
11
+ polygon: null | string;
12
+ }) => void;
13
+ onRelease: (pointer: PointerPosition) => void;
14
+ to: RefObject<HTMLElement | null>;
15
+ };
16
+ /** Tracks a safe area for pointer travel between two elements in either direction. */
17
+ export declare const usePointerSafeArea: ({ enabled, from, idleTimeout, onChange, onRelease, to, }: UsePointerSafeAreaArgs) => {
18
+ clear: () => void;
19
+ isProtected: () => boolean;
20
+ isTracking: () => boolean;
21
+ protect: ({ pointer }: {
22
+ pointer: PointerPosition;
23
+ }) => boolean;
24
+ refresh: () => boolean;
25
+ trackSource: (pointer: PointerPosition) => void;
26
+ trackTarget: (pointer: PointerPosition) => void;
27
+ };
28
+ export {};
29
+ //# sourceMappingURL=usePointerSafeArea.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePointerSafeArea.d.ts","sourceRoot":"","sources":["../../src/hooks/usePointerSafeArea.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAItC,MAAM,MAAM,eAAe,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEtD,KAAK,sBAAsB,GAAG;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;IACnC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,IAAI,GAAG,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACpD,SAAS,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAA;IAC7C,EAAE,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;CAClC,CAAA;AAED,sFAAsF;AACtF,eAAO,MAAM,kBAAkB,6DAO5B,sBAAsB;;;;2BAuIE;QAAE,OAAO,EAAE,eAAe,CAAA;KAAE;;2BAzEzC,eAAe;2BASf,eAAe;CAqE5B,CAAA"}
@@ -0,0 +1,232 @@
1
+ import { useCallback, useEffect, useRef } from 'react';
2
+ /** Tracks a safe area for pointer travel between two elements in either direction. */
3
+ export const usePointerSafeArea = ({
4
+ enabled,
5
+ from,
6
+ idleTimeout = 300,
7
+ onChange,
8
+ onRelease,
9
+ to
10
+ }) => {
11
+ const origin = useRef(undefined);
12
+ const isReturning = useRef(false);
13
+ const isProtected = useRef(false);
14
+ const idleTimer = useRef(undefined);
15
+ const callbacks = useRef({
16
+ onChange,
17
+ onRelease
18
+ });
19
+ useEffect(() => {
20
+ callbacks.current = {
21
+ onChange,
22
+ onRelease
23
+ };
24
+ }, [onChange, onRelease]);
25
+ const clear = useCallback(() => {
26
+ clearTimeout(idleTimer.current);
27
+ idleTimer.current = undefined;
28
+ if (isProtected.current) {
29
+ isProtected.current = false;
30
+ callbacks.current.onChange({
31
+ polygon: null
32
+ });
33
+ }
34
+ origin.current = undefined;
35
+ }, []);
36
+ const release = useCallback(pointer => {
37
+ clear();
38
+ callbacks.current.onRelease(pointer);
39
+ }, [clear]);
40
+ const update = useCallback(({
41
+ pointer
42
+ } = {}) => {
43
+ const target = isReturning.current ? from.current : to.current;
44
+ const start = origin.current;
45
+ if (!enabled || !target || !start || !pointer && !isProtected.current) {
46
+ return false;
47
+ }
48
+ const rect = target.getBoundingClientRect();
49
+ if (rect.left <= start.x && rect.right >= start.x) {
50
+ return false;
51
+ }
52
+ const points = getSafeAreaPoints({
53
+ rect,
54
+ start
55
+ });
56
+ if (pointer && !isInsideSafeArea({
57
+ pointer,
58
+ points
59
+ })) {
60
+ return false;
61
+ }
62
+ isProtected.current = true;
63
+ callbacks.current.onChange({
64
+ polygon: `polygon(${points.map(({
65
+ x,
66
+ y
67
+ }) => `${x}px ${y}px`).join(', ')})`
68
+ });
69
+ if (pointer) {
70
+ clearTimeout(idleTimer.current);
71
+ idleTimer.current = setTimeout(() => release(pointer), idleTimeout);
72
+ }
73
+ return true;
74
+ }, [enabled, from, idleTimeout, release, to]);
75
+ const trackSource = useCallback(pointer => {
76
+ clear();
77
+ origin.current = pointer;
78
+ isReturning.current = false;
79
+ }, [clear]);
80
+ const trackTarget = useCallback(pointer => {
81
+ // A keyboard-opened target does not start pointer tracking on its own.
82
+ if (!origin.current) {
83
+ return;
84
+ }
85
+ clear();
86
+ origin.current = pointer;
87
+ isReturning.current = true;
88
+ }, [clear]);
89
+ useEffect(() => {
90
+ if (!enabled) {
91
+ clear();
92
+ return;
93
+ }
94
+ const handleMove = event => {
95
+ if (event.pointerType !== 'mouse' || !origin.current) {
96
+ return;
97
+ }
98
+ const pointer = {
99
+ x: event.clientX,
100
+ y: event.clientY
101
+ };
102
+ const target = event.target;
103
+ if (target && from.current?.contains(target)) {
104
+ trackSource(pointer);
105
+ } else if (target && to.current?.contains(target)) {
106
+ trackTarget(pointer);
107
+ } else if (isProtected.current && !update({
108
+ pointer
109
+ })) {
110
+ release(pointer);
111
+ }
112
+ };
113
+ const handlePress = event => {
114
+ if (event.pointerType === 'mouse') {
115
+ // Preserve tracking after clicks that keep either endpoint open, while
116
+ // letting clicks elsewhere reach their target without sending a replacement event.
117
+ const pointer = {
118
+ x: event.clientX,
119
+ y: event.clientY
120
+ };
121
+ const target = event.target;
122
+ if (target && from.current?.contains(target)) {
123
+ trackSource(pointer);
124
+ } else if (target && to.current?.contains(target)) {
125
+ trackTarget(pointer);
126
+ } else {
127
+ clear();
128
+ }
129
+ }
130
+ };
131
+ const document = from.current?.ownerDocument;
132
+ document?.addEventListener('pointermove', handleMove, {
133
+ capture: true,
134
+ passive: true
135
+ });
136
+ document?.addEventListener('pointerdown', handlePress, {
137
+ capture: true,
138
+ passive: true
139
+ });
140
+ return () => {
141
+ document?.removeEventListener('pointermove', handleMove, {
142
+ capture: true
143
+ });
144
+ document?.removeEventListener('pointerdown', handlePress, {
145
+ capture: true
146
+ });
147
+ clear();
148
+ };
149
+ }, [clear, enabled, from, release, to, trackSource, trackTarget, update]);
150
+ return {
151
+ clear,
152
+ isProtected: useCallback(() => isProtected.current, []),
153
+ isTracking: useCallback(() => origin.current !== undefined, []),
154
+ protect: ({
155
+ pointer
156
+ }) => update({
157
+ pointer
158
+ }),
159
+ refresh: () => update(),
160
+ trackSource,
161
+ trackTarget
162
+ };
163
+ };
164
+ const isInsideSafeArea = ({
165
+ pointer,
166
+ points
167
+ }) => points.every((edgeStart, index) => isPointerInsideEdge({
168
+ edgeEnd: points[(index + 1) % points.length],
169
+ edgeStart,
170
+ pointer
171
+ }));
172
+ // The convex hull covers the whole destination, allowing return paths to enter
173
+ // through its top or bottom as well as its nearest edge.
174
+ const getSafeAreaPoints = ({
175
+ rect,
176
+ start
177
+ }) => {
178
+ const points = [{
179
+ x: start.x,
180
+ y: start.y - 4
181
+ }, {
182
+ x: start.x,
183
+ y: start.y + 4
184
+ }, {
185
+ x: rect.left,
186
+ y: rect.top
187
+ }, {
188
+ x: rect.right,
189
+ y: rect.top
190
+ }, {
191
+ x: rect.right,
192
+ y: rect.bottom
193
+ }, {
194
+ x: rect.left,
195
+ y: rect.bottom
196
+ }].sort((a, b) => a.x - b.x || a.y - b.y);
197
+ const getOuterEdge = ({
198
+ orderedPoints
199
+ }) => {
200
+ const edge = [];
201
+ for (const point of orderedPoints) {
202
+ while (edge.length > 1) {
203
+ const previous = edge[edge.length - 2];
204
+ const corner = edge[edge.length - 1];
205
+ const edgeX = corner.x - previous.x;
206
+ const edgeY = corner.y - previous.y;
207
+ const pointX = point.x - previous.x;
208
+ const pointY = point.y - previous.y;
209
+ const shouldRemoveCorner = edgeX * pointY - edgeY * pointX <= 0;
210
+ // Remove corners that bend into the area or lie on a straight edge.
211
+ if (!shouldRemoveCorner) {
212
+ break;
213
+ }
214
+ edge.pop();
215
+ }
216
+ edge.push(point);
217
+ }
218
+ return edge.slice(0, -1);
219
+ };
220
+ return [...getOuterEdge({
221
+ orderedPoints: points
222
+ }), ...getOuterEdge({
223
+ orderedPoints: [...points].reverse()
224
+ })];
225
+ };
226
+ // Edges follow the safe area's point order. Points on the boundary count as inside.
227
+ const isPointerInsideEdge = ({
228
+ edgeEnd,
229
+ edgeStart,
230
+ pointer
231
+ }) => (edgeEnd.x - edgeStart.x) * (pointer.y - edgeStart.y) - (edgeEnd.y - edgeStart.y) * (pointer.x - edgeStart.x) >= 0;
232
+ //# sourceMappingURL=usePointerSafeArea.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"usePointerSafeArea.js","names":["useCallback","useEffect","useRef","usePointerSafeArea","enabled","from","idleTimeout","onChange","onRelease","to","origin","undefined","isReturning","isProtected","idleTimer","callbacks","current","clear","clearTimeout","polygon","release","pointer","update","target","start","rect","getBoundingClientRect","left","x","right","points","getSafeAreaPoints","isInsideSafeArea","map","y","join","setTimeout","trackSource","trackTarget","handleMove","event","pointerType","clientX","clientY","contains","handlePress","document","ownerDocument","addEventListener","capture","passive","removeEventListener","isTracking","protect","refresh","every","edgeStart","index","isPointerInsideEdge","edgeEnd","length","top","bottom","sort","a","b","getOuterEdge","orderedPoints","edge","point","previous","corner","edgeX","edgeY","pointX","pointY","shouldRemoveCorner","pop","push","slice","reverse"],"sources":["../../src/hooks/usePointerSafeArea.ts"],"sourcesContent":["import type { RefObject } from 'react'\n\nimport { useCallback, useEffect, useRef } from 'react'\n\nexport type PointerPosition = { x: number; y: number }\n\ntype UsePointerSafeAreaArgs = {\n enabled: boolean\n from: RefObject<HTMLElement | null>\n idleTimeout?: number\n onChange: (args: { polygon: null | string }) => void\n onRelease: (pointer: PointerPosition) => void\n to: RefObject<HTMLElement | null>\n}\n\n/** Tracks a safe area for pointer travel between two elements in either direction. */\nexport const usePointerSafeArea = ({\n enabled,\n from,\n idleTimeout = 300,\n onChange,\n onRelease,\n to,\n}: UsePointerSafeAreaArgs) => {\n const origin = useRef<PointerPosition | undefined>(undefined)\n const isReturning = useRef(false)\n const isProtected = useRef(false)\n const idleTimer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined)\n const callbacks = useRef({ onChange, onRelease })\n\n useEffect(() => {\n callbacks.current = { onChange, onRelease }\n }, [onChange, onRelease])\n\n const clear = useCallback(() => {\n clearTimeout(idleTimer.current)\n idleTimer.current = undefined\n if (isProtected.current) {\n isProtected.current = false\n callbacks.current.onChange({ polygon: null })\n }\n origin.current = undefined\n }, [])\n\n const release = useCallback(\n (pointer: PointerPosition) => {\n clear()\n callbacks.current.onRelease(pointer)\n },\n [clear],\n )\n\n const update = useCallback(\n ({ pointer }: { pointer?: PointerPosition } = {}) => {\n const target = isReturning.current ? from.current : to.current\n const start = origin.current\n\n if (!enabled || !target || !start || (!pointer && !isProtected.current)) {\n return false\n }\n\n const rect = target.getBoundingClientRect()\n if (rect.left <= start.x && rect.right >= start.x) {\n return false\n }\n const points = getSafeAreaPoints({ rect, start })\n\n if (pointer && !isInsideSafeArea({ pointer, points })) {\n return false\n }\n\n isProtected.current = true\n callbacks.current.onChange({\n polygon: `polygon(${points.map(({ x, y }) => `${x}px ${y}px`).join(', ')})`,\n })\n if (pointer) {\n clearTimeout(idleTimer.current)\n idleTimer.current = setTimeout(() => release(pointer), idleTimeout)\n }\n return true\n },\n [enabled, from, idleTimeout, release, to],\n )\n\n const trackSource = useCallback(\n (pointer: PointerPosition) => {\n clear()\n origin.current = pointer\n isReturning.current = false\n },\n [clear],\n )\n\n const trackTarget = useCallback(\n (pointer: PointerPosition) => {\n // A keyboard-opened target does not start pointer tracking on its own.\n if (!origin.current) {\n return\n }\n clear()\n origin.current = pointer\n isReturning.current = true\n },\n [clear],\n )\n\n useEffect(() => {\n if (!enabled) {\n clear()\n return\n }\n\n const handleMove = (event: PointerEvent) => {\n if (event.pointerType !== 'mouse' || !origin.current) {\n return\n }\n const pointer = { x: event.clientX, y: event.clientY }\n const target = event.target as Node | null\n\n if (target && from.current?.contains(target)) {\n trackSource(pointer)\n } else if (target && to.current?.contains(target)) {\n trackTarget(pointer)\n } else if (isProtected.current && !update({ pointer })) {\n release(pointer)\n }\n }\n const handlePress = (event: PointerEvent) => {\n if (event.pointerType === 'mouse') {\n // Preserve tracking after clicks that keep either endpoint open, while\n // letting clicks elsewhere reach their target without sending a replacement event.\n const pointer = { x: event.clientX, y: event.clientY }\n const target = event.target as Node | null\n\n if (target && from.current?.contains(target)) {\n trackSource(pointer)\n } else if (target && to.current?.contains(target)) {\n trackTarget(pointer)\n } else {\n clear()\n }\n }\n }\n const document = from.current?.ownerDocument\n\n document?.addEventListener('pointermove', handleMove, { capture: true, passive: true })\n document?.addEventListener('pointerdown', handlePress, { capture: true, passive: true })\n return () => {\n document?.removeEventListener('pointermove', handleMove, { capture: true })\n document?.removeEventListener('pointerdown', handlePress, { capture: true })\n clear()\n }\n }, [clear, enabled, from, release, to, trackSource, trackTarget, update])\n\n return {\n clear,\n isProtected: useCallback(() => isProtected.current, []),\n isTracking: useCallback(() => origin.current !== undefined, []),\n protect: ({ pointer }: { pointer: PointerPosition }) => update({ pointer }),\n refresh: () => update(),\n trackSource,\n trackTarget,\n }\n}\n\nconst isInsideSafeArea = ({\n pointer,\n points,\n}: {\n pointer: PointerPosition\n points: PointerPosition[]\n}) =>\n points.every((edgeStart, index) =>\n isPointerInsideEdge({\n edgeEnd: points[(index + 1) % points.length],\n edgeStart,\n pointer,\n }),\n )\n\n// The convex hull covers the whole destination, allowing return paths to enter\n// through its top or bottom as well as its nearest edge.\nconst getSafeAreaPoints = ({ rect, start }: { rect: DOMRect; start: PointerPosition }) => {\n const points = [\n { x: start.x, y: start.y - 4 },\n { x: start.x, y: start.y + 4 },\n { x: rect.left, y: rect.top },\n { x: rect.right, y: rect.top },\n { x: rect.right, y: rect.bottom },\n { x: rect.left, y: rect.bottom },\n ].sort((a, b) => a.x - b.x || a.y - b.y)\n const getOuterEdge = ({ orderedPoints }: { orderedPoints: PointerPosition[] }) => {\n const edge: PointerPosition[] = []\n\n for (const point of orderedPoints) {\n while (edge.length > 1) {\n const previous = edge[edge.length - 2]\n const corner = edge[edge.length - 1]\n const edgeX = corner.x - previous.x\n const edgeY = corner.y - previous.y\n const pointX = point.x - previous.x\n const pointY = point.y - previous.y\n const shouldRemoveCorner = edgeX * pointY - edgeY * pointX <= 0\n\n // Remove corners that bend into the area or lie on a straight edge.\n if (!shouldRemoveCorner) {\n break\n }\n edge.pop()\n }\n edge.push(point)\n }\n return edge.slice(0, -1)\n }\n\n return [\n ...getOuterEdge({ orderedPoints: points }),\n ...getOuterEdge({ orderedPoints: [...points].reverse() }),\n ]\n}\n\n// Edges follow the safe area's point order. Points on the boundary count as inside.\nconst isPointerInsideEdge = ({\n edgeEnd,\n edgeStart,\n pointer,\n}: {\n edgeEnd: PointerPosition\n edgeStart: PointerPosition\n pointer: PointerPosition\n}): boolean =>\n (edgeEnd.x - edgeStart.x) * (pointer.y - edgeStart.y) -\n (edgeEnd.y - edgeStart.y) * (pointer.x - edgeStart.x) >=\n 0\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"usePopupWindow.js","names":["c","_c","useCallback","useEffect","useRef","useState","useConfig","usePopupWindow","props","$","eventType","onMessage","url","isReceivingMessage","isOpen","setIsOpen","config","t0","serverURL","popupRef","t1","t2","receiveMessage","event","origin","window","location","data","type","current","searchParams","addEventListener","removeEventListener","t3","e","preventDefault","closed","focus","features","height","left","menubar","popup","toolbar","top","width","popupOptions","Object","entries","reduce","str","t4","key","value","strCopy","v","Math","round","innerHeight","v_0","innerWidth","slice","newWindow","open","openPopupWindow","t5","timer","clearInterval","t6","isPopupOpen"],"sources":["../../src/hooks/usePopupWindow.ts"],"sourcesContent":["'use client'\nimport type React from 'react'\n\nimport { useCallback, useEffect, useRef, useState } from 'react'\n\nimport { useConfig } from '../providers/Config/index.js'\n\nexport interface PopupMessage {\n searchParams: {\n [key: string]: string | undefined\n code: string\n installation_id: string\n state: string\n }\n type: string\n}\n\nexport const usePopupWindow = (props: {\n eventType?: string\n\n onMessage?: (searchParams: PopupMessage['searchParams']) => Promise<void>\n url: string\n}): {\n isPopupOpen: boolean\n openPopupWindow: () => void\n popupRef?: React.RefObject<null | Window>\n} => {\n const { eventType, onMessage, url } = props\n const isReceivingMessage = useRef(false)\n const [isOpen, setIsOpen] = useState(false)\n\n const {\n config: { serverURL },\n } = useConfig()\n\n const popupRef = useRef<null | Window>(null)\n\n // Optionally broadcast messages back out to the parent component\n useEffect(() => {\n const receiveMessage = async (event: MessageEvent): Promise<void> => {\n if (\n event.origin !== window.location.origin ||\n event.origin !== url ||\n event.origin !== serverURL\n ) {\n // console.warn(`Message received by ${event.origin}; IGNORED.`) // eslint-disable-line no-console\n return\n }\n\n if (\n typeof onMessage === 'function' &&\n event.data?.type === eventType &&\n !isReceivingMessage.current\n ) {\n isReceivingMessage.current = true\n await onMessage(event.data?.searchParams)\n isReceivingMessage.current = false\n }\n }\n\n if (isOpen && popupRef.current) {\n window.addEventListener('message', receiveMessage, false)\n }\n\n return () => {\n window.removeEventListener('message', receiveMessage)\n }\n }, [onMessage, eventType, url, serverURL, isOpen])\n\n // Customize the size, position, and style of the popup window\n const openPopupWindow = useCallback(\n (e?: MouseEvent) => {\n if (e) {\n e.preventDefault()\n }\n\n // If a popup is already open, focus it instead of opening a new one\n if (popupRef.current && !popupRef.current.closed) {\n popupRef.current.focus()\n return\n }\n\n const features = {\n height: 700,\n left: 'auto',\n menubar: 'no',\n popup: 'yes',\n toolbar: 'no',\n top: 'auto',\n width: 800,\n }\n\n const popupOptions = Object.entries(features)\n .reduce((str, [key, value]) => {\n let strCopy = str\n if (value === 'auto') {\n if (key === 'top') {\n const v = Math.round(window.innerHeight / 2 - features.height / 2)\n strCopy += `top=${v},`\n } else if (key === 'left') {\n const v = Math.round(window.innerWidth / 2 - features.width / 2)\n strCopy += `left=${v},`\n }\n return strCopy\n }\n\n strCopy += `${key}=${value},`\n return strCopy\n }, '')\n .slice(0, -1) // remove last ',' (comma)\n\n const newWindow = window.open(url, '_blank', popupOptions)\n\n popupRef.current = newWindow\n\n setIsOpen(true)\n },\n [url],\n )\n\n // this is the most stable and widely supported way to check if a popup window is no longer open\n // we poll its ref every x ms and use the popup window's `closed` property\n useEffect(() => {\n let timer: NodeJS.Timeout\n\n if (isOpen) {\n timer = setInterval(function () {\n if (popupRef.current.closed) {\n clearInterval(timer)\n setIsOpen(false)\n }\n }, 1000)\n } else {\n clearInterval(timer)\n }\n\n return () => {\n if (timer) {\n clearInterval(timer)\n }\n }\n }, [isOpen, popupRef])\n\n return {\n isPopupOpen: isOpen,\n openPopupWindow,\n popupRef,\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"usePopupWindow.js","names":["c","_c","useCallback","useEffect","useRef","useState","useConfig","usePopupWindow","props","$","eventType","onMessage","url","isReceivingMessage","isOpen","setIsOpen","config","t0","serverURL","popupRef","t1","t2","receiveMessage","event","origin","window","location","data","type","current","searchParams","addEventListener","removeEventListener","t3","e","preventDefault","closed","focus","features","height","left","menubar","popup","toolbar","top","width","popupOptions","Object","entries","reduce","str","t4","key","value","strCopy","v","Math","round","innerHeight","v_0","innerWidth","slice","newWindow","open","openPopupWindow","t5","timer","setInterval","clearInterval","t6","isPopupOpen"],"sources":["../../src/hooks/usePopupWindow.ts"],"sourcesContent":["'use client'\nimport type React from 'react'\n\nimport { useCallback, useEffect, useRef, useState } from 'react'\n\nimport { useConfig } from '../providers/Config/index.js'\n\nexport interface PopupMessage {\n searchParams: {\n [key: string]: string | undefined\n code: string\n installation_id: string\n state: string\n }\n type: string\n}\n\nexport const usePopupWindow = (props: {\n eventType?: string\n\n onMessage?: (searchParams: PopupMessage['searchParams']) => Promise<void>\n url: string\n}): {\n isPopupOpen: boolean\n openPopupWindow: () => void\n popupRef?: React.RefObject<null | Window>\n} => {\n const { eventType, onMessage, url } = props\n const isReceivingMessage = useRef(false)\n const [isOpen, setIsOpen] = useState(false)\n\n const {\n config: { serverURL },\n } = useConfig()\n\n const popupRef = useRef<null | Window>(null)\n\n // Optionally broadcast messages back out to the parent component\n useEffect(() => {\n const receiveMessage = async (event: MessageEvent): Promise<void> => {\n if (\n event.origin !== window.location.origin ||\n event.origin !== url ||\n event.origin !== serverURL\n ) {\n // console.warn(`Message received by ${event.origin}; IGNORED.`) // eslint-disable-line no-console\n return\n }\n\n if (\n typeof onMessage === 'function' &&\n event.data?.type === eventType &&\n !isReceivingMessage.current\n ) {\n isReceivingMessage.current = true\n await onMessage(event.data?.searchParams)\n isReceivingMessage.current = false\n }\n }\n\n if (isOpen && popupRef.current) {\n window.addEventListener('message', receiveMessage, false)\n }\n\n return () => {\n window.removeEventListener('message', receiveMessage)\n }\n }, [onMessage, eventType, url, serverURL, isOpen])\n\n // Customize the size, position, and style of the popup window\n const openPopupWindow = useCallback(\n (e?: MouseEvent) => {\n if (e) {\n e.preventDefault()\n }\n\n // If a popup is already open, focus it instead of opening a new one\n if (popupRef.current && !popupRef.current.closed) {\n popupRef.current.focus()\n return\n }\n\n const features = {\n height: 700,\n left: 'auto',\n menubar: 'no',\n popup: 'yes',\n toolbar: 'no',\n top: 'auto',\n width: 800,\n }\n\n const popupOptions = Object.entries(features)\n .reduce((str, [key, value]) => {\n let strCopy = str\n if (value === 'auto') {\n if (key === 'top') {\n const v = Math.round(window.innerHeight / 2 - features.height / 2)\n strCopy += `top=${v},`\n } else if (key === 'left') {\n const v = Math.round(window.innerWidth / 2 - features.width / 2)\n strCopy += `left=${v},`\n }\n return strCopy\n }\n\n strCopy += `${key}=${value},`\n return strCopy\n }, '')\n .slice(0, -1) // remove last ',' (comma)\n\n const newWindow = window.open(url, '_blank', popupOptions)\n\n popupRef.current = newWindow\n\n setIsOpen(true)\n },\n [url],\n )\n\n // this is the most stable and widely supported way to check if a popup window is no longer open\n // we poll its ref every x ms and use the popup window's `closed` property\n useEffect(() => {\n let timer: NodeJS.Timeout\n\n if (isOpen) {\n timer = setInterval(function () {\n if (popupRef.current.closed) {\n clearInterval(timer)\n setIsOpen(false)\n }\n }, 1000)\n } else {\n clearInterval(timer)\n }\n\n return () => {\n if (timer) {\n clearInterval(timer)\n }\n }\n }, [isOpen, popupRef])\n\n return {\n isPopupOpen: isOpen,\n openPopupWindow,\n popupRef,\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"useRelatedCollections.js","names":["c","_c","useState","useConfig","useRelatedCollections","relationTo","$","getEntityConfig","t0","relations","map","relation","collectionSlug","relatedCollections"],"sources":["../../src/hooks/useRelatedCollections.ts"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { useState } from 'react'\n\nimport { useConfig } from '../providers/Config/index.js'\n\n/**\n * Gets the corresponding client collection config(s) for the given collection slug.\n */\nexport const useRelatedCollections = (relationTo: string | string[]): ClientCollectionConfig[] => {\n const { getEntityConfig } = useConfig()\n\n const [relatedCollections] = useState(() => {\n if (relationTo) {\n const relations = typeof relationTo === 'string' ? [relationTo] : relationTo\n return relations.map((relation) => getEntityConfig({ collectionSlug: relation }))\n }\n return []\n })\n\n return relatedCollections\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAGA,SAASC,QAAQ,QAAQ;AAEzB,SAASC,SAAS,QAAQ;AAE1B;;;AAGA,OAAO,MAAMC,qBAAA,GAAwBC,UAAA;EAAA,MAAAC,CAAA,GAAAL,EAAA;EACnC;IAAAM;EAAA,IAA4BJ,SAAA;EAAA,IAAAK,EAAA;EAAA,IAAAF,CAAA,QAAAC,eAAA,IAAAD,CAAA,QAAAD,UAAA;IAEUG,EAAA,GAAAA,CAAA;MAAA,IAChCH,UAAA;QACF,MAAAI,SAAA,GAAkB,OAAOJ,UAAA,KAAe,YAAYA,UAAA,IAAcA,UAAA;QAAA,OAC3DI,SAAA,CAAAC,GAAA,CAAAC,QAAA,IAA4BJ,eAAA;UAAAK,cAAA,EAAkCD;QAAA,CAAS;MAAA;MAAA;IAAA;IAGlFL,CAAA,MAAAC,eAAA;IAAAD,CAAA,MAAAD,UAAA;IAAAC,CAAA,MAAAE,EAAA;EAAA;IAAAA,EAAA,GAAAF,CAAA;EAAA;EANA,OAAAO,kBAAA,IAA6BX,QAAA,CAASM,EAMtC;EAAA,OAEOK,kBAAA;AAAA,CACT","ignoreList":[]}
1
+ {"version":3,"file":"useRelatedCollections.js","names":["c","_c","useState","useConfig","useRelatedCollections","relationTo","$","getEntityConfig","t0","relations","map","relation","collectionSlug","relatedCollections"],"sources":["../../src/hooks/useRelatedCollections.ts"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { useState } from 'react'\n\nimport { useConfig } from '../providers/Config/index.js'\n\n/**\n * Gets the corresponding client collection config(s) for the given collection slug.\n */\nexport const useRelatedCollections = (relationTo: string | string[]): ClientCollectionConfig[] => {\n const { getEntityConfig } = useConfig()\n\n const [relatedCollections] = useState(() => {\n if (relationTo) {\n const relations = typeof relationTo === 'string' ? [relationTo] : relationTo\n return relations.map((relation) => getEntityConfig({ collectionSlug: relation }))\n }\n return []\n })\n\n return relatedCollections\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAGA,SAASC,QAAQ,QAAQ;AAEzB,SAASC,SAAS,QAAQ;AAE1B;;;AAGA,OAAO,MAAMC,qBAAA,GAAwBC,UAAA;EAAA,MAAAC,CAAA,GAAAL,EAAA;EACnC;IAAAM;EAAA,IAA4BJ,SAAA;EAAA,IAAAK,EAAA;EAAA,IAAAF,CAAA,QAAAC,eAAA,IAAAD,CAAA,QAAAD,UAAA;IAEUG,EAAA,GAAAA,CAAA;MACpC,IAAIH,UAAA;QACF,MAAAI,SAAA,GAAkB,OAAOJ,UAAA,KAAe,QAA0B,GAAhD,CAAkCA,UAAA,CAAc,GAAhDA,UAAgD;QAAA,OAC3DI,SAAA,CAAAC,GAAa,CAACC,QAAA,IAAcJ,eAAA,CAAgB;UAAAK,cAAA,EAAkBD;QAAS;MAAA;MAChF,OACO,EAAE;IAAA,CACX;IAAAL,CAAA,MAAAC,eAAA;IAAAD,CAAA,MAAAD,UAAA;IAAAC,CAAA,MAAAE,EAAA;EAAA;IAAAA,EAAA,GAAAF,CAAA;EAAA;EANA,OAAAO,kBAAA,IAA6BX,QAAA,CAASM,EAMtC;EAAA,OAEOK,kBAAA;AAAA,CACT","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"useResize.js","names":["c","_c","useEffect","useState","useResize","element","$","size","setSize","t0","t1","observer","entries","forEach","entry","contentBoxSize","contentRect","newWidth","newHeight","newSize","Array","isArray","blockSize","inlineSize","height","width","observe","unobserve","t2"],"sources":["../../src/hooks/useResize.ts"],"sourcesContent":["'use client'\n\nimport { useEffect, useState } from 'react'\n\ninterface Size {\n height: number\n width: number\n}\n\ninterface Resize {\n size?: Size\n}\n\nexport const useResize = (element: HTMLElement): Resize => {\n const [size, setSize] = useState<Size>()\n\n useEffect(() => {\n let observer: any // eslint-disable-line\n\n if (element) {\n observer = new ResizeObserver((entries) => {\n entries.forEach((entry) => {\n const {\n contentBoxSize,\n contentRect, // for Safari iOS compatibility, will be deprecated eventually (see https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserverEntry/contentRect)\n } = entry\n\n let newWidth = 0\n let newHeight = 0\n\n if (contentBoxSize) {\n const newSize = Array.isArray(contentBoxSize) ? contentBoxSize[0] : contentBoxSize\n\n if (newSize) {\n const { blockSize, inlineSize } = newSize\n newWidth = inlineSize\n newHeight = blockSize\n }\n } else if (contentRect) {\n // see note above for why this block is needed\n const { height, width } = contentRect\n newWidth = width\n newHeight = height\n }\n\n setSize({\n height: newHeight,\n width: newWidth,\n })\n })\n })\n\n observer.observe(element)\n }\n\n return () => {\n if (observer) {\n observer.unobserve(element)\n }\n }\n }, [element])\n\n return {\n size,\n }\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAEA,SAASC,SAAS,EAAEC,QAAQ,QAAQ;AAWpC,OAAO,MAAMC,SAAA,GAAYC,OAAA;EAAA,MAAAC,CAAA,GAAAL,EAAA;EACvB,OAAAM,IAAA,EAAAC,OAAA,IAAwBL,QAAA;EAAA,IAAAM,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAJ,CAAA,QAAAD,OAAA;IAEdI,EAAA,GAAAA,CAAA;MACJE,GAAA,CAAAA,QAAA;MAAc,IAEdN,OAAA;QACFM,QAAA,CAAAA,CAAA,CAAAA,GAAA,CAAAA,sBAAA,CAAAA,EAAA,CAAAA;UACEC,OAAA,CAAAC,OAAA,CAAAC,KAAA;YACE;cAAAC,cAAA;cAAAC;YAAA,IAGIF,KAAA;YAEJ,IAAAG,QAAA;YACA,IAAAC,SAAA;YAAgB,IAEZH,cAAA;cACF,MAAAI,OAAA,GAAgBC,KAAA,CAAAC,OAAA,CAAcN,cAAA,IAAkBA,cAAc,MAAMA,cAAA;cAAA,IAEhEI,OAAA;gBACF;kBAAAG,SAAA;kBAAAC;gBAAA,IAAkCJ,OAAA;gBAClCF,QAAA,CAAAA,CAAA,CAAWM,UAAA;gBACXL,SAAA,CAAAA,CAAA,CAAYI,SAAA;cAAZ;YAAA;cAAA,IAEON,WAAA;gBAET;kBAAAQ,MAAA;kBAAAC;gBAAA,IAA0BT,WAAA;gBAC1BC,QAAA,CAAAA,CAAA,CAAWQ,KAAA;gBACXP,SAAA,CAAAA,CAAA,CAAYM,MAAA;cAAZ;YAAA;YAGFhB,OAAA;cAAAgB,MAAA,EACUN,SAAA;cAAAO,KAAA,EACDR;YAAA,CACT;UAAA,CACF;QAAA;QAGFN,QAAA,CAAAe,OAAA,CAAiBrB,OAAA;MAAA;MAAA;QAAA,IAIbM,QAAA;UACFA,QAAA,CAAAgB,SAAA,CAAmBtB,OAAA;QAAA;MAAA;IAAA;IAGtBK,EAAA,IAACL,OAAA;IAAQC,CAAA,MAAAD,OAAA;IAAAC,CAAA,MAAAG,EAAA;IAAAH,CAAA,MAAAI,EAAA;EAAA;IAAAD,EAAA,GAAAH,CAAA;IAAAI,EAAA,GAAAJ,CAAA;EAAA;EA5CZJ,SAAA,CAAUO,EA4CV,EAAGC,EAAS;EAAA,IAAAkB,EAAA;EAAA,IAAAtB,CAAA,QAAAC,IAAA;IAELqB,EAAA;MAAArB;IAAA;IAEPD,CAAA,MAAAC,IAAA;IAAAD,CAAA,MAAAsB,EAAA;EAAA;IAAAA,EAAA,GAAAtB,CAAA;EAAA;EAAA,OAFOsB,EAEP;AAAA,CACF","ignoreList":[]}
1
+ {"version":3,"file":"useResize.js","names":["c","_c","useEffect","useState","useResize","element","$","size","setSize","t0","t1","observer","ResizeObserver","entries","forEach","entry","contentBoxSize","contentRect","newWidth","newHeight","newSize","Array","isArray","blockSize","inlineSize","height","width","observe","unobserve","t2"],"sources":["../../src/hooks/useResize.ts"],"sourcesContent":["'use client'\n\nimport { useEffect, useState } from 'react'\n\ninterface Size {\n height: number\n width: number\n}\n\ninterface Resize {\n size?: Size\n}\n\nexport const useResize = (element: HTMLElement): Resize => {\n const [size, setSize] = useState<Size>()\n\n useEffect(() => {\n let observer: any // eslint-disable-line\n\n if (element) {\n observer = new ResizeObserver((entries) => {\n entries.forEach((entry) => {\n const {\n contentBoxSize,\n contentRect, // for Safari iOS compatibility, will be deprecated eventually (see https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserverEntry/contentRect)\n } = entry\n\n let newWidth = 0\n let newHeight = 0\n\n if (contentBoxSize) {\n const newSize = Array.isArray(contentBoxSize) ? contentBoxSize[0] : contentBoxSize\n\n if (newSize) {\n const { blockSize, inlineSize } = newSize\n newWidth = inlineSize\n newHeight = blockSize\n }\n } else if (contentRect) {\n // see note above for why this block is needed\n const { height, width } = contentRect\n newWidth = width\n newHeight = height\n }\n\n setSize({\n height: newHeight,\n width: newWidth,\n })\n })\n })\n\n observer.observe(element)\n }\n\n return () => {\n if (observer) {\n observer.unobserve(element)\n }\n }\n }, [element])\n\n return {\n size,\n }\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAEA,SAASC,SAAS,EAAEC,QAAQ,QAAQ;AAWpC,OAAO,MAAMC,SAAA,GAAYC,OAAA;EAAA,MAAAC,CAAA,GAAAL,EAAA;EACvB,OAAAM,IAAA,EAAAC,OAAA,IAAwBL,QAAA;EAAA,IAAAM,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAJ,CAAA,QAAAD,OAAA;IAEdI,EAAA,GAAAA,CAAA;MACJE,GAAA,CAAAA,QAAA;MAEJ,IAAIN,OAAA;QACFM,QAAA,CAAAA,CAAA,CAAWA,GAAA,CAAIC,cAAA,CAAeC,OAAA;UAC5BA,OAAA,CAAAC,OAAe,CAACC,KAAA;YACd;cAAAC,cAAA;cAAAC;YAAA,IAGIF,KAAA;YAEJ,IAAAG,QAAA,GAAe;YACf,IAAAC,SAAA,GAAgB;YAEhB,IAAIH,cAAA;cACF,MAAAI,OAAA,GAAgBC,KAAA,CAAAC,OAAa,CAACN,cAAsC,IAApBA,cAAc,GAAM,GAApDA,cAAoD;cAEpE,IAAII,OAAA;gBACF;kBAAAG,SAAA;kBAAAC;gBAAA,IAAkCJ,OAAA;gBAClCF,QAAA,CAAAA,CAAA,CAAWM,UAAA;gBACXL,SAAA,CAAAA,CAAA,CAAYI,SAAA;cAAZ;YACF;cACK,IAAIN,WAAA;gBAET;kBAAAQ,MAAA;kBAAAC;gBAAA,IAA0BT,WAAA;gBAC1BC,QAAA,CAAAA,CAAA,CAAWQ,KAAA;gBACXP,SAAA,CAAAA,CAAA,CAAYM,MAAA;cAAZ;YACF;YAEAjB,OAAA,CAAQ;cAAAiB,MAAA,EACEN,SAAA;cAAAO,KAAA,EACDR;YACT;UAAA,CACF;QAAA,CACF;QAEAP,QAAA,CAAAgB,OAAgB,CAACtB,OAAA;MAAA;MACnB,OAEO;QACL,IAAIM,QAAA;UACFA,QAAA,CAAAiB,SAAkB,CAACvB,OAAA;QAAA;MACrB,CACF;IAAA,CACF;IAAGK,EAAA,IAACL,OAAA,CAAQ;IAAAC,CAAA,MAAAD,OAAA;IAAAC,CAAA,MAAAG,EAAA;IAAAH,CAAA,MAAAI,EAAA;EAAA;IAAAD,EAAA,GAAAH,CAAA;IAAAI,EAAA,GAAAJ,CAAA;EAAA;EA5CZJ,SAAA,CAAUO,EA4CV,EAAGC,EAAS;EAAA,IAAAmB,EAAA;EAAA,IAAAvB,CAAA,QAAAC,IAAA;IAELsB,EAAA;MAAAtB;IAEP;IAAAD,CAAA,MAAAC,IAAA;IAAAD,CAAA,MAAAuB,EAAA;EAAA;IAAAA,EAAA,GAAAvB,CAAA;EAAA;EAAA,OAFOuB,EAEP;AAAA,CACF","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"useThrottledEffect.d.ts","sourceRoot":"","sources":["../../src/hooks/useThrottledEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,KAAK,kBAAkB,GAAG,CACxB,QAAQ,EAAE,KAAK,CAAC,cAAc,EAC9B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,KAAK,CAAC,cAAc,KACvB,IAAI,CAAA;AAET;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,kBAkBhC,CAAA"}
1
+ {"version":3,"file":"useThrottledEffect.d.ts","sourceRoot":"","sources":["../../src/hooks/useThrottledEffect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAI9B,KAAK,kBAAkB,GAAG,CACxB,QAAQ,EAAE,KAAK,CAAC,cAAc,EAC9B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,KAAK,CAAC,cAAc,KACvB,IAAI,CAAA;AAET;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,kBAoBhC,CAAA"}
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
 
3
3
  import { c as _c } from "react/compiler-runtime";
4
- import { useEffect, useRef } from 'react';
4
+ import { useEffect, useRef, useState } from 'react';
5
5
  /**
6
6
  * A hook that will throttle the execution of a callback function inside a useEffect.
7
7
  * This is useful for things like throttling loading states or other UI updates.
@@ -10,7 +10,7 @@ import { useEffect, useRef } from 'react';
10
10
  * @param deps The dependencies to watch for changes.
11
11
  */
12
12
  export const useThrottledEffect = (callback, delay, t0) => {
13
- const $ = _c(9);
13
+ const $ = _c(8);
14
14
  let t1;
15
15
  if ($[0] !== t0) {
16
16
  t1 = t0 === undefined ? [] : t0;
@@ -20,17 +20,11 @@ export const useThrottledEffect = (callback, delay, t0) => {
20
20
  t1 = $[1];
21
21
  }
22
22
  const deps = t1;
23
+ const [mountedAt] = useState(_temp);
24
+ const lastRan = useRef(mountedAt);
23
25
  let t2;
24
- if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
25
- t2 = Date.now();
26
- $[2] = t2;
27
- } else {
28
- t2 = $[2];
29
- }
30
- const lastRan = useRef(t2);
31
- let t3;
32
- if ($[3] !== callback || $[4] !== delay) {
33
- t3 = () => {
26
+ if ($[2] !== callback || $[3] !== delay) {
27
+ t2 = () => {
34
28
  const handler = setTimeout(() => {
35
29
  if (Date.now() - lastRan.current >= delay) {
36
30
  callback();
@@ -41,21 +35,24 @@ export const useThrottledEffect = (callback, delay, t0) => {
41
35
  clearTimeout(handler);
42
36
  };
43
37
  };
44
- $[3] = callback;
45
- $[4] = delay;
46
- $[5] = t3;
38
+ $[2] = callback;
39
+ $[3] = delay;
40
+ $[4] = t2;
47
41
  } else {
48
- t3 = $[5];
42
+ t2 = $[4];
49
43
  }
50
- let t4;
51
- if ($[6] !== delay || $[7] !== deps) {
52
- t4 = [delay, ...deps];
53
- $[6] = delay;
54
- $[7] = deps;
55
- $[8] = t4;
44
+ let t3;
45
+ if ($[5] !== delay || $[6] !== deps) {
46
+ t3 = [delay, ...deps];
47
+ $[5] = delay;
48
+ $[6] = deps;
49
+ $[7] = t3;
56
50
  } else {
57
- t4 = $[8];
51
+ t3 = $[7];
58
52
  }
59
- useEffect(t3, t4);
53
+ useEffect(t2, t3);
60
54
  };
55
+ function _temp() {
56
+ return Date.now();
57
+ }
61
58
  //# sourceMappingURL=useThrottledEffect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useThrottledEffect.js","names":["c","_c","useEffect","useRef","useThrottledEffect","callback","delay","t0","$","t1","undefined","deps","t2","Symbol","for","Date","now","lastRan","t3","handler","setTimeout","current","clearTimeout","t4"],"sources":["../../src/hooks/useThrottledEffect.ts"],"sourcesContent":["'use client'\nimport type React from 'react'\n\nimport { useEffect, useRef } from 'react'\n\ntype useThrottledEffect = (\n callback: React.EffectCallback,\n delay: number,\n deps: React.DependencyList,\n) => void\n\n/**\n * A hook that will throttle the execution of a callback function inside a useEffect.\n * This is useful for things like throttling loading states or other UI updates.\n * @param callback The callback function to be executed.\n * @param delay The delay in milliseconds to throttle the callback.\n * @param deps The dependencies to watch for changes.\n */\nexport const useThrottledEffect: useThrottledEffect = (callback, delay, deps = []) => {\n const lastRan = useRef(Date.now())\n\n useEffect(() => {\n const handler = setTimeout(\n () => {\n if (Date.now() - lastRan.current >= delay) {\n callback()\n lastRan.current = Date.now()\n }\n },\n delay - (Date.now() - lastRan.current),\n )\n\n return () => {\n clearTimeout(handler)\n }\n }, [delay, ...deps])\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAGA,SAASC,SAAS,EAAEC,MAAM,QAAQ;AAQlC;;;;;;;AAOA,OAAO,MAAMC,kBAAA,GAAyCA,CAAAC,QAAA,EAAAC,KAAA,EAAAC,EAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EAAA,IAAAQ,EAAA;EAAA,IAAAD,CAAA,QAAAD,EAAA;IAAkBE,EAAA,GAAAF,EAAS,KAAAG,SAAA,QAATH,EAAS;IAAAC,CAAA,MAAAD,EAAA;IAAAC,CAAA,MAAAC,EAAA;EAAA;IAAAA,EAAA,GAAAD,CAAA;EAAA;EAAT,MAAAG,IAAA,GAAAF,EAAS;EAAA,IAAAG,EAAA;EAAA,IAAAJ,CAAA,QAAAK,MAAA,CAAAC,GAAA;IACxDF,EAAA,GAAAG,IAAA,CAAAC,GAAA,CAAQ;IAAAR,CAAA,MAAAI,EAAA;EAAA;IAAAA,EAAA,GAAAJ,CAAA;EAAA;EAA/B,MAAAS,OAAA,GAAgBd,MAAA,CAAOS,EAAQ;EAAA,IAAAM,EAAA;EAAA,IAAAV,CAAA,QAAAH,QAAA,IAAAG,CAAA,QAAAF,KAAA;IAErBY,EAAA,GAAAA,CAAA;MACR,MAAAC,OAAA,GAAgBC,UAAA;QAAA,IAERL,IAAA,CAAAC,GAAA,CAAQ,IAAKC,OAAA,CAAAI,OAAe,IAAIf,KAAA;UAClCD,QAAA;UACAY,OAAA,CAAAI,OAAA,GAAkBN,IAAA,CAAAC,GAAA,CAAQ;QAAA;MAAA,GAG9BV,KAAA,IAASS,IAAA,CAAAC,GAAA,CAAQ,IAAKC,OAAA,CAAAI,OAAe,CAAD;MAAA;QAIpCC,YAAA,CAAaH,OAAA;MAAA;IAAA;IAEjBX,CAAA,MAAAH,QAAA;IAAAG,CAAA,MAAAF,KAAA;IAAAE,CAAA,MAAAU,EAAA;EAAA;IAAAA,EAAA,GAAAV,CAAA;EAAA;EAAA,IAAAe,EAAA;EAAA,IAAAf,CAAA,QAAAF,KAAA,IAAAE,CAAA,QAAAG,IAAA;IAAGY,EAAA,IAACjB,KAAA,KAAUK,IAAA;IAAKH,CAAA,MAAAF,KAAA;IAAAE,CAAA,MAAAG,IAAA;IAAAH,CAAA,MAAAe,EAAA;EAAA;IAAAA,EAAA,GAAAf,CAAA;EAAA;EAdnBN,SAAA,CAAUgB,EAcV,EAAGK,EAAgB;AAAA,CACrB","ignoreList":[]}
1
+ {"version":3,"file":"useThrottledEffect.js","names":["c","_c","useEffect","useRef","useState","useThrottledEffect","callback","delay","t0","$","t1","undefined","deps","mountedAt","_temp","lastRan","t2","handler","setTimeout","Date","now","current","clearTimeout","t3"],"sources":["../../src/hooks/useThrottledEffect.ts"],"sourcesContent":["'use client'\nimport type React from 'react'\n\nimport { useEffect, useRef, useState } from 'react'\n\ntype useThrottledEffect = (\n callback: React.EffectCallback,\n delay: number,\n deps: React.DependencyList,\n) => void\n\n/**\n * A hook that will throttle the execution of a callback function inside a useEffect.\n * This is useful for things like throttling loading states or other UI updates.\n * @param callback The callback function to be executed.\n * @param delay The delay in milliseconds to throttle the callback.\n * @param deps The dependencies to watch for changes.\n */\nexport const useThrottledEffect: useThrottledEffect = (callback, delay, deps = []) => {\n // Render can't read the current time, so a lazy initializer reads it once\n const [mountedAt] = useState(() => Date.now())\n const lastRan = useRef(mountedAt)\n\n useEffect(() => {\n const handler = setTimeout(\n () => {\n if (Date.now() - lastRan.current >= delay) {\n callback()\n lastRan.current = Date.now()\n }\n },\n delay - (Date.now() - lastRan.current),\n )\n\n return () => {\n clearTimeout(handler)\n }\n }, [delay, ...deps])\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAGA,SAASC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAQ5C;;;;;;;AAOA,OAAO,MAAMC,kBAAA,GAAyCA,CAAAC,QAAA,EAAAC,KAAA,EAAAC,EAAA;EAAA,MAAAC,CAAA,GAAAR,EAAA;EAAA,IAAAS,EAAA;EAAA,IAAAD,CAAA,QAAAD,EAAA;IAAkBE,EAAA,GAAAF,EAAS,KAATG,SAAS,GAAT,EAAS,GAATH,EAAS;IAAAC,CAAA,MAAAD,EAAA;IAAAC,CAAA,MAAAC,EAAA;EAAA;IAAAA,EAAA,GAAAD,CAAA;EAAA;EAAT,MAAAG,IAAA,GAAAF,EAAS;EAE/E,OAAAG,SAAA,IAAoBT,QAAA,CAASU,KAAc;EAC3C,MAAAC,OAAA,GAAgBZ,MAAA,CAAOU,SAAA;EAAA,IAAAG,EAAA;EAAA,IAAAP,CAAA,QAAAH,QAAA,IAAAG,CAAA,QAAAF,KAAA;IAEbS,EAAA,GAAAA,CAAA;MACR,MAAAC,OAAA,GAAgBC,UAAA,CACd;QACE,IAAIC,IAAA,CAAAC,GAAQ,KAAKL,OAAA,CAAAM,OAAe,IAAId,KAAA;UAClCD,QAAA;UACAS,OAAA,CAAAM,OAAA,GAAkBF,IAAA,CAAAC,GAAQ,EAAX;QAAA;MACjB,CACF,EACAb,KAAA,IAASY,IAAA,CAAAC,GAAQ,KAAKL,OAAA,CAAAM,OAAe,CAAD;MAAA,OAG/B;QACLC,YAAA,CAAaL,OAAA;MAAA,CACf;IAAA,CACF;IAAAR,CAAA,MAAAH,QAAA;IAAAG,CAAA,MAAAF,KAAA;IAAAE,CAAA,MAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EAAA,IAAAc,EAAA;EAAA,IAAAd,CAAA,QAAAF,KAAA,IAAAE,CAAA,QAAAG,IAAA;IAAGW,EAAA,IAAChB,KAAA,KAAUK,IAAA,CAAK;IAAAH,CAAA,MAAAF,KAAA;IAAAE,CAAA,MAAAG,IAAA;IAAAH,CAAA,MAAAc,EAAA;EAAA;IAAAA,EAAA,GAAAd,CAAA;EAAA;EAdnBP,SAAA,CAAUc,EAcV,EAAGO,EAAgB;AAAA,CACrB;AApBsD,SAAAT,MAAA;EAAA,OAEjBK,IAAA,CAAAC,GAAQ;AAAA","ignoreList":[]}