@payloadcms/ui 4.0.0-internal.ea6e8f8 → 4.0.0-internal.ec73d44

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 (934) hide show
  1. package/dist/css/app.css +2 -2
  2. package/dist/css/colors.css +65 -0
  3. package/dist/css/preflight.css +21 -2
  4. package/dist/elements/APIKeyInput/index.js +22 -23
  5. package/dist/elements/APIKeyInput/index.js.map +1 -1
  6. package/dist/elements/AddNewRelation/index.js +17 -19
  7. package/dist/elements/AddNewRelation/index.js.map +1 -1
  8. package/dist/elements/AppHeader/index.css +1 -1
  9. package/dist/elements/AppHeader/index.d.ts.map +1 -1
  10. package/dist/elements/AppHeader/index.js +5 -1
  11. package/dist/elements/AppHeader/index.js.map +1 -1
  12. package/dist/elements/ArrayAction/index.js +39 -30
  13. package/dist/elements/ArrayAction/index.js.map +1 -1
  14. package/dist/elements/Autosave/index.js +236 -143
  15. package/dist/elements/Autosave/index.js.map +1 -1
  16. package/dist/elements/BranchSelector/index.d.ts.map +1 -1
  17. package/dist/elements/BranchSelector/index.js +285 -204
  18. package/dist/elements/BranchSelector/index.js.map +1 -1
  19. package/dist/elements/BulkUpload/ActionsBar/index.js.map +1 -1
  20. package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
  21. package/dist/elements/BulkUpload/AddingFilesView/index.js.map +1 -1
  22. package/dist/elements/BulkUpload/DiscardWithoutSaving/index.js.map +1 -1
  23. package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
  24. package/dist/elements/BulkUpload/EditMany/index.js +29 -21
  25. package/dist/elements/BulkUpload/EditMany/index.js.map +1 -1
  26. package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
  27. package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
  28. package/dist/elements/BulkUpload/FormsManager/index.js +1 -34
  29. package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
  30. package/dist/elements/BulkUpload/index.js +63 -23
  31. package/dist/elements/BulkUpload/index.js.map +1 -1
  32. package/dist/elements/BulkUpload/useUploadCollectionOptions.js.map +1 -1
  33. package/dist/elements/Button/index.css +3 -3
  34. package/dist/elements/Button/index.d.ts.map +1 -1
  35. package/dist/elements/Button/index.js +2 -1
  36. package/dist/elements/Button/index.js.map +1 -1
  37. package/dist/elements/Button/types.d.ts +1 -0
  38. package/dist/elements/Button/types.d.ts.map +1 -1
  39. package/dist/elements/Button/types.js.map +1 -1
  40. package/dist/elements/CardGrid/index.css +0 -1
  41. package/dist/elements/ChangeSummary/index.js.map +1 -1
  42. package/dist/elements/Chip/index.js.map +1 -1
  43. package/dist/elements/ClipboardAction/ClipboardActionLabel.js.map +1 -1
  44. package/dist/elements/ClipboardAction/index.js +213 -88
  45. package/dist/elements/ClipboardAction/index.js.map +1 -1
  46. package/dist/elements/CloseModalOnRouteChange/index.d.ts.map +1 -1
  47. package/dist/elements/CloseModalOnRouteChange/index.js +27 -19
  48. package/dist/elements/CloseModalOnRouteChange/index.js.map +1 -1
  49. package/dist/elements/CodeEditor/CodeEditor.d.ts.map +1 -1
  50. package/dist/elements/CodeEditor/CodeEditor.js +99 -55
  51. package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
  52. package/dist/elements/CollapseAllToggle/index.js +47 -32
  53. package/dist/elements/CollapseAllToggle/index.js.map +1 -1
  54. package/dist/elements/Collapsible/index.css +15 -4
  55. package/dist/elements/Collapsible/index.d.ts.map +1 -1
  56. package/dist/elements/Collapsible/index.js +46 -38
  57. package/dist/elements/Collapsible/index.js.map +1 -1
  58. package/dist/elements/Collapsible/provider.js +37 -14
  59. package/dist/elements/Collapsible/provider.js.map +1 -1
  60. package/dist/elements/ColumnSelection/Popup.css +4 -0
  61. package/dist/elements/ColumnSelection/Popup.js +10 -2
  62. package/dist/elements/ColumnSelection/Popup.js.map +1 -1
  63. package/dist/elements/ColumnSelection/index.js.map +1 -1
  64. package/dist/elements/CommandPalette/index.css +8 -0
  65. package/dist/elements/ConfirmationModal/index.d.ts +3 -0
  66. package/dist/elements/ConfirmationModal/index.d.ts.map +1 -1
  67. package/dist/elements/ConfirmationModal/index.js +2 -0
  68. package/dist/elements/ConfirmationModal/index.js.map +1 -1
  69. package/dist/elements/CopyLocaleData/index.js.map +1 -1
  70. package/dist/elements/CopyToClipboard/index.js.map +1 -1
  71. package/dist/elements/CreateDocumentButton/index.js +45 -43
  72. package/dist/elements/CreateDocumentButton/index.js.map +1 -1
  73. package/dist/elements/DatePicker/DatePicker.js +6 -2
  74. package/dist/elements/DatePicker/DatePicker.js.map +1 -1
  75. package/dist/elements/DatePicker/index.css +40 -25
  76. package/dist/elements/DatePicker/useDatePickerKeyboard.js.map +1 -1
  77. package/dist/elements/DefaultListViewTabs/index.css +4 -0
  78. package/dist/elements/DefaultListViewTabs/index.js +47 -37
  79. package/dist/elements/DefaultListViewTabs/index.js.map +1 -1
  80. package/dist/elements/DelayedSpinner/index.js.map +1 -1
  81. package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
  82. package/dist/elements/DeleteDocument/index.js +1 -3
  83. package/dist/elements/DeleteDocument/index.js.map +1 -1
  84. package/dist/elements/Dialog/DialogCancel/index.js.map +1 -1
  85. package/dist/elements/Dialog/DialogConfirm/index.js.map +1 -1
  86. package/dist/elements/Dialog/DialogHeader/index.js.map +1 -1
  87. package/dist/elements/Dialog/DialogModal/index.js.map +1 -1
  88. package/dist/elements/DocumentCard/index.d.ts +2 -0
  89. package/dist/elements/DocumentCard/index.d.ts.map +1 -1
  90. package/dist/elements/DocumentCard/index.js +2 -0
  91. package/dist/elements/DocumentCard/index.js.map +1 -1
  92. package/dist/elements/DocumentControls/index.css +13 -10
  93. package/dist/elements/DocumentControls/index.js +1 -1
  94. package/dist/elements/DocumentControls/index.js.map +1 -1
  95. package/dist/elements/DocumentDrawer/index.js.map +1 -1
  96. package/dist/elements/DocumentDrawer/types.d.ts +1 -5
  97. package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
  98. package/dist/elements/DocumentDrawer/types.js.map +1 -1
  99. package/dist/elements/DocumentFields/index.css +7 -7
  100. package/dist/elements/DocumentFields/index.d.ts.map +1 -1
  101. package/dist/elements/DocumentFields/index.js +125 -65
  102. package/dist/elements/DocumentFields/index.js.map +1 -1
  103. package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js.map +1 -1
  104. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.d.ts.map +1 -1
  105. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js +80 -34
  106. package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js.map +1 -1
  107. package/dist/elements/DocumentHeader/Tabs/Tab/index.css +4 -0
  108. package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js.map +1 -1
  109. package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -1
  110. package/dist/elements/DocumentLocked/index.d.ts.map +1 -1
  111. package/dist/elements/DocumentLocked/index.js +1 -0
  112. package/dist/elements/DocumentLocked/index.js.map +1 -1
  113. package/dist/elements/DocumentStaleData/index.js.map +1 -1
  114. package/dist/elements/DocumentTakeOver/index.js.map +1 -1
  115. package/dist/elements/DraggableSortable/DragOverlayPreview/index.js +2 -0
  116. package/dist/elements/DraggableSortable/DragOverlayPreview/index.js.map +1 -1
  117. package/dist/elements/DraggableSortable/DraggableSortableItem/index.d.ts.map +1 -1
  118. package/dist/elements/DraggableSortable/DraggableSortableItem/index.js +10 -7
  119. package/dist/elements/DraggableSortable/DraggableSortableItem/index.js.map +1 -1
  120. package/dist/elements/DraggableSortable/DraggableSortableItem/types.d.ts +2 -0
  121. package/dist/elements/DraggableSortable/DraggableSortableItem/types.d.ts.map +1 -1
  122. package/dist/elements/DraggableSortable/DraggableSortableItem/types.js.map +1 -1
  123. package/dist/elements/DraggableSortable/index.d.ts.map +1 -1
  124. package/dist/elements/DraggableSortable/index.js +104 -170
  125. package/dist/elements/DraggableSortable/index.js.map +1 -1
  126. package/dist/elements/DraggableSortable/types.d.ts +1 -0
  127. package/dist/elements/DraggableSortable/types.d.ts.map +1 -1
  128. package/dist/elements/DraggableSortable/types.js.map +1 -1
  129. package/dist/elements/DraggableSortable/useDraggableSortable/index.js.map +1 -1
  130. package/dist/elements/DraggableSortable/useRowAccessibility.d.ts +14 -0
  131. package/dist/elements/DraggableSortable/useRowAccessibility.d.ts.map +1 -0
  132. package/dist/elements/DraggableSortable/useRowAccessibility.js +99 -0
  133. package/dist/elements/DraggableSortable/useRowAccessibility.js.map +1 -0
  134. package/dist/elements/Drawer/index.js +138 -81
  135. package/dist/elements/Drawer/index.js.map +1 -1
  136. package/dist/elements/Drawer/useDrawerSlug.js.map +1 -1
  137. package/dist/elements/DrawerActionHeader/index.js.map +1 -1
  138. package/dist/elements/DrawerHeader/index.js.map +1 -1
  139. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +177 -62
  140. package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
  141. package/dist/elements/EditMany/DrawerContent.js +1 -1
  142. package/dist/elements/EditMany/DrawerContent.js.map +1 -1
  143. package/dist/elements/EditMany/index.js.map +1 -1
  144. package/dist/elements/EditUpload/library.css +6 -13
  145. package/dist/elements/FieldDiffContainer/index.d.ts.map +1 -1
  146. package/dist/elements/FieldDiffContainer/index.js +7 -1
  147. package/dist/elements/FieldDiffContainer/index.js.map +1 -1
  148. package/dist/elements/FieldDiffLabel/index.d.ts +1 -0
  149. package/dist/elements/FieldDiffLabel/index.d.ts.map +1 -1
  150. package/dist/elements/FieldDiffLabel/index.js +2 -0
  151. package/dist/elements/FieldDiffLabel/index.js.map +1 -1
  152. package/dist/elements/FieldSelect/index.js +23 -14
  153. package/dist/elements/FieldSelect/index.js.map +1 -1
  154. package/dist/elements/FieldSelect/reduceFieldOptions.js.map +1 -1
  155. package/dist/elements/FileDetails/DraggableFileDetails/index.js.map +1 -1
  156. package/dist/elements/FileDetails/FileMeta/index.js.map +1 -1
  157. package/dist/elements/FileManager/FilePreview/index.js.map +1 -1
  158. package/dist/elements/FileManager/index.js.map +1 -1
  159. package/dist/elements/FullscreenModal/index.js.map +1 -1
  160. package/dist/elements/GenerateConfirmation/index.js +21 -21
  161. package/dist/elements/GenerateConfirmation/index.js.map +1 -1
  162. package/dist/elements/GroupBy/Popup.js.map +1 -1
  163. package/dist/elements/GroupBy/index.js +120 -66
  164. package/dist/elements/GroupBy/index.js.map +1 -1
  165. package/dist/elements/HTMLDiff/colors.css +7 -0
  166. package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js.map +1 -1
  167. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js +51 -42
  168. package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js.map +1 -1
  169. package/dist/elements/Hierarchy/DocHeaderButton/index.js +1 -1
  170. package/dist/elements/Hierarchy/DocHeaderButton/index.js.map +1 -1
  171. package/dist/elements/Hierarchy/EditButton/index.js.map +1 -1
  172. package/dist/elements/Hierarchy/HydrateProvider/index.js.map +1 -1
  173. package/dist/elements/Hierarchy/Modal/Footer/index.js.map +1 -1
  174. package/dist/elements/Hierarchy/Search/HierarchySearchResultItem.js +25 -18
  175. package/dist/elements/Hierarchy/Search/HierarchySearchResultItem.js.map +1 -1
  176. package/dist/elements/Hierarchy/Search/HierarchySearchResults.js.map +1 -1
  177. package/dist/elements/Hierarchy/Search/index.js.map +1 -1
  178. package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -1
  179. package/dist/elements/Hierarchy/Tree/TreeFocusContext.js.map +1 -1
  180. package/dist/elements/Hierarchy/Tree/index.d.ts.map +1 -1
  181. package/dist/elements/Hierarchy/Tree/index.js +10 -5
  182. package/dist/elements/Hierarchy/Tree/index.js.map +1 -1
  183. package/dist/elements/HierarchyTypeField/index.d.ts.map +1 -1
  184. package/dist/elements/HierarchyTypeField/index.js.map +1 -1
  185. package/dist/elements/HydrateAuthProvider/index.js.map +1 -1
  186. package/dist/elements/HydratePreferences/index.js.map +1 -1
  187. package/dist/elements/IDLabel/index.js.map +1 -1
  188. package/dist/elements/InputStepper/index.js.map +1 -1
  189. package/dist/elements/ItemsDrawer/ItemSearch/index.js.map +1 -1
  190. package/dist/elements/ItemsDrawer/index.js +186 -105
  191. package/dist/elements/ItemsDrawer/index.js.map +1 -1
  192. package/dist/elements/LLMInstructionsDescription/index.js.map +1 -1
  193. package/dist/elements/LLMInstructionsMenuItem/index.js.map +1 -1
  194. package/dist/elements/LayoutToggle/index.js.map +1 -1
  195. package/dist/elements/LeaveWithoutSaving/index.js.map +1 -1
  196. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js +1 -1
  197. package/dist/elements/LeaveWithoutSaving/usePreventLeave.js.map +1 -1
  198. package/dist/elements/Link/index.js +1 -1
  199. package/dist/elements/Link/index.js.map +1 -1
  200. package/dist/elements/ListColumnSelectionButton/index.js.map +1 -1
  201. package/dist/elements/ListControls/index.js.map +1 -1
  202. package/dist/elements/ListControls/types.d.ts +0 -10
  203. package/dist/elements/ListControls/types.d.ts.map +1 -1
  204. package/dist/elements/ListControls/types.js.map +1 -1
  205. package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
  206. package/dist/elements/ListDrawer/DrawerContent.js +2 -3
  207. package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
  208. package/dist/elements/ListDrawer/Provider.d.ts +3 -8
  209. package/dist/elements/ListDrawer/Provider.d.ts.map +1 -1
  210. package/dist/elements/ListDrawer/Provider.js.map +1 -1
  211. package/dist/elements/ListDrawer/index.js.map +1 -1
  212. package/dist/elements/ListGroupByButton/index.js.map +1 -1
  213. package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js.map +1 -1
  214. package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerConfirmSelectionButton.js.map +1 -1
  215. package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerCreateNewDocButton.js.map +1 -1
  216. package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
  217. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocButton.js +11 -12
  218. package/dist/elements/ListHeader/TitleActions/ListCreateNewDocButton.js.map +1 -1
  219. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +1 -1
  220. package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
  221. package/dist/elements/ListSelection/index.js.map +1 -1
  222. package/dist/elements/ListWhereBuilder/index.js.map +1 -1
  223. package/dist/elements/LivePreview/DeviceContainer/index.js.map +1 -1
  224. package/dist/elements/LivePreview/Toolbar/Controls/index.js.map +1 -1
  225. package/dist/elements/LivePreview/Toolbar/SizeInput/index.js.map +1 -1
  226. package/dist/elements/LivePreview/Toolbar/index.js.map +1 -1
  227. package/dist/elements/LivePreview/ToolbarArea/index.js.map +1 -1
  228. package/dist/elements/LivePreview/Window/index.css +7 -1
  229. package/dist/elements/LivePreview/Window/index.d.ts.map +1 -1
  230. package/dist/elements/LivePreview/Window/index.js +6 -1
  231. package/dist/elements/LivePreview/Window/index.js.map +1 -1
  232. package/dist/elements/LoadMoreRow/index.js.map +1 -1
  233. package/dist/elements/Loading/index.js +62 -18
  234. package/dist/elements/Loading/index.js.map +1 -1
  235. package/dist/elements/LoadingOverlay/index.js +93 -49
  236. package/dist/elements/LoadingOverlay/index.js.map +1 -1
  237. package/dist/elements/Localizer/index.js +133 -108
  238. package/dist/elements/Localizer/index.js.map +1 -1
  239. package/dist/elements/Locked/index.js +54 -37
  240. package/dist/elements/Locked/index.js.map +1 -1
  241. package/dist/elements/Logout/index.js.map +1 -1
  242. package/dist/elements/MergeBranch/MergeBranchForm/index.d.ts.map +1 -1
  243. package/dist/elements/MergeBranch/MergeBranchForm/index.js +21 -16
  244. package/dist/elements/MergeBranch/MergeBranchForm/index.js.map +1 -1
  245. package/dist/elements/MergeBranch/MergeProgress/index.js.map +1 -1
  246. package/dist/elements/MergeBranch/context.js +58 -20
  247. package/dist/elements/MergeBranch/context.js.map +1 -1
  248. package/dist/elements/MergeBranch/index.js.map +1 -1
  249. package/dist/elements/MergeBranch/useMergeBranchAction.js +1 -1
  250. package/dist/elements/MergeBranch/useMergeBranchAction.js.map +1 -1
  251. package/dist/elements/MergeBranch/useScheduleBranchMerge.js +1 -1
  252. package/dist/elements/MergeBranch/useScheduleBranchMerge.js.map +1 -1
  253. package/dist/elements/MergeBranch/useUpcomingBranchMerges.js.map +1 -1
  254. package/dist/elements/MiniCarousel/index.js +102 -38
  255. package/dist/elements/MiniCarousel/index.js.map +1 -1
  256. package/dist/elements/Modal/index.d.ts.map +1 -1
  257. package/dist/elements/Modal/index.js +13 -1
  258. package/dist/elements/Modal/index.js.map +1 -1
  259. package/dist/elements/Nav/NavSidebarToggle/index.js.map +1 -1
  260. package/dist/elements/Nav/NavWrapper/index.d.ts.map +1 -1
  261. package/dist/elements/Nav/NavWrapper/index.js +10 -6
  262. package/dist/elements/Nav/NavWrapper/index.js.map +1 -1
  263. package/dist/elements/Nav/SettingsMenuButton/index.js.map +1 -1
  264. package/dist/elements/Nav/SidebarTabs/TabError/index.js.map +1 -1
  265. package/dist/elements/Nav/SidebarTabs/index.client.d.ts.map +1 -1
  266. package/dist/elements/Nav/SidebarTabs/index.client.js +32 -21
  267. package/dist/elements/Nav/SidebarTabs/index.client.js.map +1 -1
  268. package/dist/elements/Nav/context.js +2 -2
  269. package/dist/elements/Nav/context.js.map +1 -1
  270. package/dist/elements/Nav/getNavPrefs.d.ts +1 -1
  271. package/dist/elements/Nav/getNavPrefs.js +1 -1
  272. package/dist/elements/Nav/getNavPrefs.js.map +1 -1
  273. package/dist/elements/Nav/index.client.js.map +1 -1
  274. package/dist/elements/Nav/index.css +5 -0
  275. package/dist/elements/NavGroup/index.css +27 -3
  276. package/dist/elements/NavGroup/index.js +32 -39
  277. package/dist/elements/NavGroup/index.js.map +1 -1
  278. package/dist/elements/NoListResults/index.css +1 -0
  279. package/dist/elements/NoListResults/index.js +1 -1
  280. package/dist/elements/NoListResults/index.js.map +1 -1
  281. package/dist/elements/PageControls/GroupByPageControls.js.map +1 -1
  282. package/dist/elements/PageControls/index.js.map +1 -1
  283. package/dist/elements/Pagination/ClickableArrow/index.js +10 -11
  284. package/dist/elements/Pagination/ClickableArrow/index.js.map +1 -1
  285. package/dist/elements/Pagination/SimplePagination/index.js.map +1 -1
  286. package/dist/elements/Pagination/index.js +36 -37
  287. package/dist/elements/Pagination/index.js.map +1 -1
  288. package/dist/elements/PerPage/index.js.map +1 -1
  289. package/dist/elements/Pill/index.js.map +1 -1
  290. package/dist/elements/Popup/SubmenuScope.d.ts +3 -5
  291. package/dist/elements/Popup/SubmenuScope.d.ts.map +1 -1
  292. package/dist/elements/Popup/SubmenuScope.js +10 -54
  293. package/dist/elements/Popup/SubmenuScope.js.map +1 -1
  294. package/dist/elements/Popup/index.css +15 -0
  295. package/dist/elements/Popup/index.d.ts.map +1 -1
  296. package/dist/elements/Popup/index.js +88 -33
  297. package/dist/elements/Popup/index.js.map +1 -1
  298. package/dist/elements/Popup/useSubmenuPointerIntent.d.ts +16 -4
  299. package/dist/elements/Popup/useSubmenuPointerIntent.d.ts.map +1 -1
  300. package/dist/elements/Popup/useSubmenuPointerIntent.js +68 -27
  301. package/dist/elements/Popup/useSubmenuPointerIntent.js.map +1 -1
  302. package/dist/elements/PreviewButton/index.js.map +1 -1
  303. package/dist/elements/PreviewSizes/index.js +141 -70
  304. package/dist/elements/PreviewSizes/index.js.map +1 -1
  305. package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
  306. package/dist/elements/PublishButton/ScheduleDrawer/index.js +16 -8
  307. package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
  308. package/dist/elements/PublishButton/index.d.ts.map +1 -1
  309. package/dist/elements/PublishButton/index.js +1 -0
  310. package/dist/elements/PublishButton/index.js.map +1 -1
  311. package/dist/elements/PublishMany/DrawerContent.js +1 -1
  312. package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
  313. package/dist/elements/PublishMany/index.js +32 -24
  314. package/dist/elements/PublishMany/index.js.map +1 -1
  315. package/dist/elements/QueryPresets/fields/ColumnsField/index.js +194 -100
  316. package/dist/elements/QueryPresets/fields/ColumnsField/index.js.map +1 -1
  317. package/dist/elements/QueryPresets/fields/GroupByField/index.js +78 -29
  318. package/dist/elements/QueryPresets/fields/GroupByField/index.js.map +1 -1
  319. package/dist/elements/QueryPresets/fields/Heading/index.js.map +1 -1
  320. package/dist/elements/QueryPresets/fields/WhereField/index.js.map +1 -1
  321. package/dist/elements/ReactSelect/ClearIndicator/index.js.map +1 -1
  322. package/dist/elements/ReactSelect/DefaultMenuPortal.d.ts.map +1 -1
  323. package/dist/elements/ReactSelect/DefaultMenuPortal.js.map +1 -1
  324. package/dist/elements/ReactSelect/MultiValue/index.js +19 -9
  325. package/dist/elements/ReactSelect/MultiValue/index.js.map +1 -1
  326. package/dist/elements/ReactSelect/MultiValueLabel/index.js.map +1 -1
  327. package/dist/elements/ReactSelect/MultiValueRemove/index.js +38 -29
  328. package/dist/elements/ReactSelect/MultiValueRemove/index.js.map +1 -1
  329. package/dist/elements/ReactSelect/ValueContainer/index.js.map +1 -1
  330. package/dist/elements/ReactSelect/index.css +4 -0
  331. package/dist/elements/RelationshipTable/AddNewButton.d.ts.map +1 -1
  332. package/dist/elements/RelationshipTable/AddNewButton.js +3 -0
  333. package/dist/elements/RelationshipTable/AddNewButton.js.map +1 -1
  334. package/dist/elements/RelationshipTable/Pagination.js.map +1 -1
  335. package/dist/elements/RelationshipTable/cells/DrawerLink/index.js.map +1 -1
  336. package/dist/elements/RelationshipTable/index.js +1 -1
  337. package/dist/elements/RelationshipTable/index.js.map +1 -1
  338. package/dist/elements/RenderIfInViewport/index.js.map +1 -1
  339. package/dist/elements/RenderTitle/index.js.map +1 -1
  340. package/dist/elements/RestoreMany/index.js +1 -1
  341. package/dist/elements/RestoreMany/index.js.map +1 -1
  342. package/dist/elements/SchedulePublishButton/index.js +112 -44
  343. package/dist/elements/SchedulePublishButton/index.js.map +1 -1
  344. package/dist/elements/Search/SearchInput/index.js.map +1 -1
  345. package/dist/elements/SegmentedControl/index.css +50 -7
  346. package/dist/elements/SegmentedControl/index.js.map +1 -1
  347. package/dist/elements/SelectAll/index.js.map +1 -1
  348. package/dist/elements/SelectRow/index.js +31 -21
  349. package/dist/elements/SelectRow/index.js.map +1 -1
  350. package/dist/elements/ShimmerEffect/index.js.map +1 -1
  351. package/dist/elements/SidebarToggle/index.js.map +1 -1
  352. package/dist/elements/SkipToContent/index.js.map +1 -1
  353. package/dist/elements/SortHeader/index.js.map +1 -1
  354. package/dist/elements/SortRow/index.js.map +1 -1
  355. package/dist/elements/Spinner/index.js.map +1 -1
  356. package/dist/elements/StayLoggedIn/index.js.map +1 -1
  357. package/dist/elements/StepNav/SetStepNav.js.map +1 -1
  358. package/dist/elements/StepNav/context.js.map +1 -1
  359. package/dist/elements/Switch/index.css +2 -2
  360. package/dist/elements/Switch/index.js.map +1 -1
  361. package/dist/elements/Table/DefaultCell/fields/Array/index.js +28 -9
  362. package/dist/elements/Table/DefaultCell/fields/Array/index.js.map +1 -1
  363. package/dist/elements/Table/DefaultCell/fields/Blocks/index.js +80 -27
  364. package/dist/elements/Table/DefaultCell/fields/Blocks/index.js.map +1 -1
  365. package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.js.map +1 -1
  366. package/dist/elements/Table/DefaultCell/fields/Checkbox/index.js +9 -10
  367. package/dist/elements/Table/DefaultCell/fields/Checkbox/index.js.map +1 -1
  368. package/dist/elements/Table/DefaultCell/fields/Date/index.js.map +1 -1
  369. package/dist/elements/Table/DefaultCell/fields/File/index.d.ts.map +1 -1
  370. package/dist/elements/Table/DefaultCell/fields/File/index.js.map +1 -1
  371. package/dist/elements/Table/DefaultCell/fields/JSON/index.d.ts.map +1 -1
  372. package/dist/elements/Table/DefaultCell/fields/JSON/index.js +21 -32
  373. package/dist/elements/Table/DefaultCell/fields/JSON/index.js.map +1 -1
  374. package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
  375. package/dist/elements/Table/DefaultCell/fields/Select/index.js.map +1 -1
  376. package/dist/elements/Table/DefaultCell/fields/Status/index.js.map +1 -1
  377. package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
  378. package/dist/elements/Table/DefaultCell/index.js +6 -1
  379. package/dist/elements/Table/DefaultCell/index.js.map +1 -1
  380. package/dist/elements/Table/GridNavigation/useGridNavigation.js.map +1 -1
  381. package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
  382. package/dist/elements/Table/TableIdentity.js +32 -16
  383. package/dist/elements/Table/TableIdentity.js.map +1 -1
  384. package/dist/elements/Table/index.js.map +1 -1
  385. package/dist/elements/Table/useAriaSort.js.map +1 -1
  386. package/dist/elements/Tabs/index.css +4 -3
  387. package/dist/elements/Thumbnail/index.js +133 -53
  388. package/dist/elements/Thumbnail/index.js.map +1 -1
  389. package/dist/elements/ThumbnailCard/index.js.map +1 -1
  390. package/dist/elements/TimezonePicker/index.d.ts.map +1 -1
  391. package/dist/elements/TimezonePicker/index.js +113 -54
  392. package/dist/elements/TimezonePicker/index.js.map +1 -1
  393. package/dist/elements/Toasts/fieldErrors.js.map +1 -1
  394. package/dist/elements/Tooltip/index.js.map +1 -1
  395. package/dist/elements/Translation/index.js +1 -1
  396. package/dist/elements/Translation/index.js.map +1 -1
  397. package/dist/elements/TrashBanner/index.js.map +1 -1
  398. package/dist/elements/UnpublishMany/DrawerContent.js +1 -1
  399. package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
  400. package/dist/elements/UnpublishMany/index.js +32 -24
  401. package/dist/elements/UnpublishMany/index.js.map +1 -1
  402. package/dist/elements/Upload/UploadFromURLModal/index.js.map +1 -1
  403. package/dist/elements/Upload/index.js.map +1 -1
  404. package/dist/elements/Upload/usePasteFromClipboard.js.map +1 -1
  405. package/dist/elements/Upload/useUploadFromUrl.js.map +1 -1
  406. package/dist/elements/UserMenu/LanguageMenu/index.js.map +1 -1
  407. package/dist/elements/UserMenu/SettingsMenu/index.js.map +1 -1
  408. package/dist/elements/UserMenu/ThemeMenu/index.js.map +1 -1
  409. package/dist/elements/UserMenu/index.d.ts.map +1 -1
  410. package/dist/elements/UserMenu/index.js +2 -1
  411. package/dist/elements/UserMenu/index.js.map +1 -1
  412. package/dist/elements/ViewDescription/index.js.map +1 -1
  413. package/dist/elements/WhereBuilder/Condition/Date/index.js.map +1 -1
  414. package/dist/elements/WhereBuilder/Condition/Number/index.js.map +1 -1
  415. package/dist/elements/WhereBuilder/Condition/Select/index.js.map +1 -1
  416. package/dist/elements/WhereBuilder/Condition/Text/index.js.map +1 -1
  417. package/dist/elements/WhereBuilder/Condition/index.d.ts.map +1 -1
  418. package/dist/elements/WhereBuilder/Condition/index.js +1 -0
  419. package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
  420. package/dist/exports/client/{CodeEditor-UKD3EPUY.js → CodeEditor-23ZGBN6S.js} +2 -2
  421. package/dist/exports/client/{DatePicker-POZJVQP4.js → DatePicker-AZBZPMY6.js} +2 -2
  422. package/dist/exports/client/chunk-EXVR6BZK.js +27 -0
  423. package/dist/exports/client/chunk-EXVR6BZK.js.map +7 -0
  424. package/dist/exports/client/{chunk-AVJIZPR3.js → chunk-SMBFG6XU.js} +1 -1
  425. package/dist/exports/client/{chunk-AVJIZPR3.js.map → chunk-SMBFG6XU.js.map} +1 -1
  426. package/dist/exports/client/{chunk-2AY67NFV.js → chunk-ZP2PB6M4.js} +2 -2
  427. package/dist/exports/client/chunk-ZP2PB6M4.js.map +7 -0
  428. package/dist/exports/client/index.d.ts +2 -2
  429. package/dist/exports/client/index.d.ts.map +1 -1
  430. package/dist/exports/client/index.js +28 -28
  431. package/dist/exports/client/index.js.map +4 -4
  432. package/dist/exports/rsc/index.d.ts +1 -1
  433. package/dist/exports/rsc/index.d.ts.map +1 -1
  434. package/dist/exports/rsc/index.js +1 -1
  435. package/dist/exports/rsc/index.js.map +1 -1
  436. package/dist/exports/shared/index.js +2 -2
  437. package/dist/exports/shared/index.js.map +3 -3
  438. package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
  439. package/dist/fields/Array/ArrayRow.js +207 -99
  440. package/dist/fields/Array/ArrayRow.js.map +1 -1
  441. package/dist/fields/Array/index.d.ts.map +1 -1
  442. package/dist/fields/Array/index.js +521 -308
  443. package/dist/fields/Array/index.js.map +1 -1
  444. package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
  445. package/dist/fields/Blocks/BlockRow.js +224 -136
  446. package/dist/fields/Blocks/BlockRow.js.map +1 -1
  447. package/dist/fields/Blocks/BlockSelector/BlockSearch/index.js.map +1 -1
  448. package/dist/fields/Blocks/BlockSelector/index.js +114 -74
  449. package/dist/fields/Blocks/BlockSelector/index.js.map +1 -1
  450. package/dist/fields/Blocks/BlocksDrawer/index.js.map +1 -1
  451. package/dist/fields/Blocks/RowActions.js +75 -55
  452. package/dist/fields/Blocks/RowActions.js.map +1 -1
  453. package/dist/fields/Blocks/SectionTitle/index.css +4 -0
  454. package/dist/fields/Blocks/SectionTitle/index.js.map +1 -1
  455. package/dist/fields/Blocks/index.d.ts.map +1 -1
  456. package/dist/fields/Blocks/index.js +1 -0
  457. package/dist/fields/Blocks/index.js.map +1 -1
  458. package/dist/fields/Checkbox/index.css +3 -3
  459. package/dist/fields/Checkbox/index.js.map +1 -1
  460. package/dist/fields/Code/index.d.ts.map +1 -1
  461. package/dist/fields/Code/index.js +3 -2
  462. package/dist/fields/Code/index.js.map +1 -1
  463. package/dist/fields/Collapsible/index.js +114 -73
  464. package/dist/fields/Collapsible/index.js.map +1 -1
  465. package/dist/fields/ConfirmPassword/index.js.map +1 -1
  466. package/dist/fields/DateTime/index.js +215 -121
  467. package/dist/fields/DateTime/index.js.map +1 -1
  468. package/dist/fields/Email/index.d.ts.map +1 -1
  469. package/dist/fields/Email/index.js.map +1 -1
  470. package/dist/fields/FieldDescription/index.js +29 -21
  471. package/dist/fields/FieldDescription/index.js.map +1 -1
  472. package/dist/fields/FieldError/index.js.map +1 -1
  473. package/dist/fields/FieldLabel/index.js.map +1 -1
  474. package/dist/fields/Group/index.css +3 -5
  475. package/dist/fields/Group/index.js +75 -46
  476. package/dist/fields/Group/index.js.map +1 -1
  477. package/dist/fields/Hidden/index.js +23 -15
  478. package/dist/fields/Hidden/index.js.map +1 -1
  479. package/dist/fields/JSON/index.d.ts.map +1 -1
  480. package/dist/fields/JSON/index.js +3 -2
  481. package/dist/fields/JSON/index.js.map +1 -1
  482. package/dist/fields/Number/Input.js.map +1 -1
  483. package/dist/fields/Number/index.d.ts.map +1 -1
  484. package/dist/fields/Number/index.js.map +1 -1
  485. package/dist/fields/Password/index.d.ts.map +1 -1
  486. package/dist/fields/Password/index.js.map +1 -1
  487. package/dist/fields/Password/input.js +46 -27
  488. package/dist/fields/Password/input.js.map +1 -1
  489. package/dist/fields/RadioGroup/Radio/index.js +35 -35
  490. package/dist/fields/RadioGroup/Radio/index.js.map +1 -1
  491. package/dist/fields/RadioGroup/index.d.ts.map +1 -1
  492. package/dist/fields/RadioGroup/index.js.map +1 -1
  493. package/dist/fields/Relationship/Input.js +14 -14
  494. package/dist/fields/Relationship/Input.js.map +1 -1
  495. package/dist/fields/Relationship/index.js +216 -111
  496. package/dist/fields/Relationship/index.js.map +1 -1
  497. package/dist/fields/Relationship/select-components/MultiValueLabel/index.js.map +1 -1
  498. package/dist/fields/Relationship/select-components/SingleValue/index.js +9 -11
  499. package/dist/fields/Relationship/select-components/SingleValue/index.js.map +1 -1
  500. package/dist/fields/Select/Input.js +26 -10
  501. package/dist/fields/Select/Input.js.map +1 -1
  502. package/dist/fields/Select/index.d.ts.map +1 -1
  503. package/dist/fields/Select/index.js +158 -77
  504. package/dist/fields/Select/index.js.map +1 -1
  505. package/dist/fields/Tabs/Tab/index.js.map +1 -1
  506. package/dist/fields/Tabs/index.css +17 -21
  507. package/dist/fields/Tabs/index.js +120 -112
  508. package/dist/fields/Tabs/index.js.map +1 -1
  509. package/dist/fields/Text/Input.d.ts.map +1 -1
  510. package/dist/fields/Text/Input.js +2 -2
  511. package/dist/fields/Text/Input.js.map +1 -1
  512. package/dist/fields/Text/index.js +172 -95
  513. package/dist/fields/Text/index.js.map +1 -1
  514. package/dist/fields/Text/types.d.ts +2 -1
  515. package/dist/fields/Text/types.d.ts.map +1 -1
  516. package/dist/fields/Text/types.js.map +1 -1
  517. package/dist/fields/Textarea/Input.js +58 -28
  518. package/dist/fields/Textarea/Input.js.map +1 -1
  519. package/dist/fields/Textarea/index.js +97 -55
  520. package/dist/fields/Textarea/index.js.map +1 -1
  521. package/dist/fields/Upload/HasMany/index.js.map +1 -1
  522. package/dist/fields/Upload/Input.d.ts.map +1 -1
  523. package/dist/fields/Upload/Input.js +19 -8
  524. package/dist/fields/Upload/Input.js.map +1 -1
  525. package/dist/fields/Upload/RelationshipContent/index.js.map +1 -1
  526. package/dist/fields/Upload/index.css +9 -0
  527. package/dist/fields/Upload/index.js +101 -63
  528. package/dist/fields/Upload/index.js.map +1 -1
  529. package/dist/fields/shared/useRowFocus.js.map +1 -1
  530. package/dist/forms/Form/context.js.map +1 -1
  531. package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
  532. package/dist/forms/Form/fieldReducer.js.map +1 -1
  533. package/dist/forms/Form/index.d.ts.map +1 -1
  534. package/dist/forms/Form/index.js +27 -8
  535. package/dist/forms/Form/index.js.map +1 -1
  536. package/dist/forms/Form/reduceToSerializableFields.d.ts +9 -4
  537. package/dist/forms/Form/reduceToSerializableFields.d.ts.map +1 -1
  538. package/dist/forms/Form/reduceToSerializableFields.js +34 -7
  539. package/dist/forms/Form/reduceToSerializableFields.js.map +1 -1
  540. package/dist/forms/Form/types.d.ts +1 -1
  541. package/dist/forms/Form/types.d.ts.map +1 -1
  542. package/dist/forms/Form/types.js.map +1 -1
  543. package/dist/forms/NullifyField/index.js.map +1 -1
  544. package/dist/forms/RenderFields/RenderField.js.map +1 -1
  545. package/dist/forms/RenderFields/context.js +3 -2
  546. package/dist/forms/RenderFields/context.js.map +1 -1
  547. package/dist/forms/RenderFields/index.css +2 -2
  548. package/dist/forms/RenderFields/index.js.map +1 -1
  549. package/dist/forms/RowLabel/Context/index.d.ts.map +1 -1
  550. package/dist/forms/RowLabel/Context/index.js +58 -18
  551. package/dist/forms/RowLabel/Context/index.js.map +1 -1
  552. package/dist/forms/Submit/index.js +12 -13
  553. package/dist/forms/Submit/index.js.map +1 -1
  554. package/dist/forms/WatchChildErrors/index.js.map +1 -1
  555. package/dist/forms/useField/index.js +1 -1
  556. package/dist/forms/useField/index.js.map +1 -1
  557. package/dist/forms/useField/types.d.ts +0 -4
  558. package/dist/forms/useField/types.d.ts.map +1 -1
  559. package/dist/forms/useField/types.js.map +1 -1
  560. package/dist/forms/withCondition/WatchCondition.js.map +1 -1
  561. package/dist/graphics/Account/Gravatar/index.js +32 -17
  562. package/dist/graphics/Account/Gravatar/index.js.map +1 -1
  563. package/dist/graphics/Account/index.js +27 -18
  564. package/dist/graphics/Account/index.js.map +1 -1
  565. package/dist/hooks/useControllableState.js.map +1 -1
  566. package/dist/hooks/useDebounce.js.map +1 -1
  567. package/dist/hooks/useDebouncedCallback.js.map +1 -1
  568. package/dist/hooks/useDebouncedEffect.js.map +1 -1
  569. package/dist/hooks/useDelay.js.map +1 -1
  570. package/dist/hooks/useDelayedRender.js.map +1 -1
  571. package/dist/hooks/useElementHeightVariable.js.map +1 -1
  572. package/dist/hooks/useHotkey.js.map +1 -1
  573. package/dist/hooks/useIntersect.js.map +1 -1
  574. package/dist/hooks/usePayloadAPI.js.map +1 -1
  575. package/dist/hooks/usePointerSafeArea.d.ts +29 -0
  576. package/dist/hooks/usePointerSafeArea.d.ts.map +1 -0
  577. package/dist/hooks/usePointerSafeArea.js +232 -0
  578. package/dist/hooks/usePointerSafeArea.js.map +1 -0
  579. package/dist/hooks/usePopupWindow.js.map +1 -1
  580. package/dist/hooks/useRelatedCollections.js.map +1 -1
  581. package/dist/hooks/useResize.js.map +1 -1
  582. package/dist/hooks/useThrottledEffect.d.ts.map +1 -1
  583. package/dist/hooks/useThrottledEffect.js +21 -24
  584. package/dist/hooks/useThrottledEffect.js.map +1 -1
  585. package/dist/hooks/useUseAsTitle.js.map +1 -1
  586. package/dist/icons/Sidebar/index.d.ts.map +1 -1
  587. package/dist/icons/Sidebar/index.js +2 -0
  588. package/dist/icons/Sidebar/index.js.map +1 -1
  589. package/dist/icons/Table/index.css +5 -1
  590. package/dist/layouts/Root/RootProviders.d.ts.map +1 -1
  591. package/dist/layouts/Root/RootProviders.js +31 -28
  592. package/dist/layouts/Root/RootProviders.js.map +1 -1
  593. package/dist/layouts/Root/index.d.ts +1 -1
  594. package/dist/layouts/Root/index.d.ts.map +1 -1
  595. package/dist/layouts/Root/index.js +4 -15
  596. package/dist/layouts/Root/index.js.map +1 -1
  597. package/dist/providers/Actions/index.js.map +1 -1
  598. package/dist/providers/Auth/AuthSessionDebug/index.js.map +1 -1
  599. package/dist/providers/Auth/index.js +2 -2
  600. package/dist/providers/Auth/index.js.map +1 -1
  601. package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js.map +1 -1
  602. package/dist/providers/Branch/index.d.ts +1 -1
  603. package/dist/providers/Branch/index.js +4 -4
  604. package/dist/providers/Branch/index.js.map +1 -1
  605. package/dist/providers/Branch/index.server.d.ts.map +1 -1
  606. package/dist/providers/Branch/index.server.js +3 -1
  607. package/dist/providers/Branch/index.server.js.map +1 -1
  608. package/dist/providers/ClientFunction/index.js.map +1 -1
  609. package/dist/providers/Config/index.js +65 -32
  610. package/dist/providers/Config/index.js.map +1 -1
  611. package/dist/providers/DocumentEvents/index.js.map +1 -1
  612. package/dist/providers/EditDepth/index.js.map +1 -1
  613. package/dist/providers/Embed/index.js.map +1 -1
  614. package/dist/providers/EntityVisibility/index.js.map +1 -1
  615. package/dist/providers/ListQuery/index.d.ts.map +1 -1
  616. package/dist/providers/ListQuery/index.js +5 -5
  617. package/dist/providers/ListQuery/index.js.map +1 -1
  618. package/dist/providers/ListQuery/mergeQuery.d.ts.map +1 -1
  619. package/dist/providers/ListQuery/mergeQuery.js.map +1 -1
  620. package/dist/providers/ListQuery/sanitizeQuery.js.map +1 -1
  621. package/dist/providers/ListQuery/types.d.ts +6 -5
  622. package/dist/providers/ListQuery/types.d.ts.map +1 -1
  623. package/dist/providers/ListQuery/types.js.map +1 -1
  624. package/dist/providers/ModalAccessibility/index.js.map +1 -1
  625. package/dist/providers/ModalFocus/index.d.ts +15 -0
  626. package/dist/providers/ModalFocus/index.d.ts.map +1 -0
  627. package/dist/providers/ModalFocus/index.js +70 -0
  628. package/dist/providers/ModalFocus/index.js.map +1 -0
  629. package/dist/providers/RouteCache/index.d.ts.map +1 -1
  630. package/dist/providers/RouteCache/index.js +37 -25
  631. package/dist/providers/RouteCache/index.js.map +1 -1
  632. package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -1
  633. package/dist/providers/RouteTransition/index.d.ts +3 -2
  634. package/dist/providers/RouteTransition/index.d.ts.map +1 -1
  635. package/dist/providers/RouteTransition/index.js +78 -105
  636. package/dist/providers/RouteTransition/index.js.map +1 -1
  637. package/dist/providers/RouterAdapter/index.js.map +1 -1
  638. package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
  639. package/dist/providers/ServerFunctions/index.js +34 -23
  640. package/dist/providers/ServerFunctions/index.js.map +1 -1
  641. package/dist/providers/TableColumns/RenderDefaultCell/index.d.ts.map +1 -1
  642. package/dist/providers/TableColumns/RenderDefaultCell/index.js +1 -2
  643. package/dist/providers/TableColumns/RenderDefaultCell/index.js.map +1 -1
  644. package/dist/providers/TableColumns/index.d.ts.map +1 -1
  645. package/dist/providers/TableColumns/index.js +18 -35
  646. package/dist/providers/TableColumns/index.js.map +1 -1
  647. package/dist/providers/Theme/index.js.map +1 -1
  648. package/dist/providers/ToastContainer/index.js.map +1 -1
  649. package/dist/providers/Translation/index.js.map +1 -1
  650. package/dist/providers/UploadControls/index.js.map +1 -1
  651. package/dist/providers/UploadEdits/index.js.map +1 -1
  652. package/dist/providers/UploadHandlers/index.js.map +1 -1
  653. package/dist/styles.css +87 -3
  654. package/dist/templates/Default/Wrapper/index.js.map +1 -1
  655. package/dist/templates/Default/index.css +0 -1
  656. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.d.ts.map +1 -1
  657. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js +32 -6
  658. package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js.map +1 -1
  659. package/dist/utilities/formatDocTitle/formatLexicalDocTitle.js.map +1 -1
  660. package/dist/utilities/getDisplayedFieldValue.d.ts +8 -2
  661. package/dist/utilities/getDisplayedFieldValue.d.ts.map +1 -1
  662. package/dist/utilities/getDisplayedFieldValue.js +11 -1
  663. package/dist/utilities/getDisplayedFieldValue.js.map +1 -1
  664. package/dist/utilities/getHasScheduledPublish.js.map +1 -1
  665. package/dist/utilities/groupNavItems.js.map +1 -1
  666. package/dist/utilities/handleLivePreview.js.map +1 -1
  667. package/dist/utilities/handleServerFunctions.d.ts +2 -10
  668. package/dist/utilities/handleServerFunctions.d.ts.map +1 -1
  669. package/dist/utilities/handleServerFunctions.js +3 -7
  670. package/dist/utilities/handleServerFunctions.js.map +1 -1
  671. package/dist/utilities/hasSavePermission.js.map +1 -1
  672. package/dist/utilities/schedulePublishHandler.js.map +1 -1
  673. package/dist/utilities/serverFunctionRegistry.d.ts +2 -7
  674. package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
  675. package/dist/utilities/serverFunctionRegistry.js +4 -9
  676. package/dist/utilities/serverFunctionRegistry.js.map +1 -1
  677. package/dist/views/API/LocaleSelector/index.js.map +1 -1
  678. package/dist/views/API/index.client.d.ts.map +1 -1
  679. package/dist/views/API/index.client.js +1 -0
  680. package/dist/views/API/index.client.js.map +1 -1
  681. package/dist/views/Account/ResetPreferences/index.js +17 -17
  682. package/dist/views/Account/ResetPreferences/index.js.map +1 -1
  683. package/dist/views/Account/Settings/LanguageSelector.js.map +1 -1
  684. package/dist/views/Account/ToggleHighContrast/index.js.map +1 -1
  685. package/dist/views/Account/ToggleTheme/index.js +106 -27
  686. package/dist/views/Account/ToggleTheme/index.js.map +1 -1
  687. package/dist/views/Account/index.client.js.map +1 -1
  688. package/dist/views/Branch/BranchChanges/index.d.ts.map +1 -1
  689. package/dist/views/Branch/BranchChanges/index.js +185 -86
  690. package/dist/views/Branch/BranchChanges/index.js.map +1 -1
  691. package/dist/views/Branch/DiscardChangesButton/index.js +1 -1
  692. package/dist/views/Branch/DiscardChangesButton/index.js.map +1 -1
  693. package/dist/views/Branch/Manage/index.js.map +1 -1
  694. package/dist/views/Branch/MergeChangesButton/index.js.map +1 -1
  695. package/dist/views/Branch/ScheduledMerges/index.js +1 -1
  696. package/dist/views/Branch/ScheduledMerges/index.js.map +1 -1
  697. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.d.ts.map +1 -1
  698. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +30 -21
  699. package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
  700. package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js.map +1 -1
  701. package/dist/views/Dashboard/Default/ModularDashboard/index.client.d.ts.map +1 -1
  702. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +373 -151
  703. package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
  704. package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js.map +1 -1
  705. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.d.ts +1 -1
  706. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.d.ts.map +1 -1
  707. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js +18 -5
  708. package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js.map +1 -1
  709. package/dist/views/Dashboard/Default/ModularDashboard/utils/localeUtils.js.map +1 -1
  710. package/dist/views/Document/generateEditViewMetadata.js.map +1 -1
  711. package/dist/views/Document/index.js +1 -1
  712. package/dist/views/Document/index.js.map +1 -1
  713. package/dist/views/Document/renderDocumentSlots.js.map +1 -1
  714. package/dist/views/Edit/Auth/APIKeyGenerationModal.js.map +1 -1
  715. package/dist/views/Edit/Auth/index.d.ts.map +1 -1
  716. package/dist/views/Edit/Auth/index.js +13 -11
  717. package/dist/views/Edit/Auth/index.js.map +1 -1
  718. package/dist/views/Edit/SetDocumentStepNav/index.js.map +1 -1
  719. package/dist/views/Edit/SetDocumentTitle/index.js.map +1 -1
  720. package/dist/views/Edit/index.css +26 -0
  721. package/dist/views/Edit/index.d.ts.map +1 -1
  722. package/dist/views/Edit/index.js +28 -17
  723. package/dist/views/Edit/index.js.map +1 -1
  724. package/dist/views/ForgotPassword/ForgotPasswordForm/index.d.ts.map +1 -1
  725. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +45 -41
  726. package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -1
  727. package/dist/views/HierarchyList/DocumentListSelection/index.js.map +1 -1
  728. package/dist/views/HierarchyList/HierarchyListHeader/index.js.map +1 -1
  729. package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js.map +1 -1
  730. package/dist/views/HierarchyList/HierarchyTable/DateCell.js +8 -9
  731. package/dist/views/HierarchyList/HierarchyTable/DateCell.js.map +1 -1
  732. package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.js.map +1 -1
  733. package/dist/views/HierarchyList/TypeFilter/index.js.map +1 -1
  734. package/dist/views/HierarchyList/index.js +2 -2
  735. package/dist/views/HierarchyList/index.js.map +1 -1
  736. package/dist/views/List/DocumentGrid/index.js.map +1 -1
  737. package/dist/views/List/GroupedDocumentGrid/index.js.map +1 -1
  738. package/dist/views/List/ListSelection/index.js.map +1 -1
  739. package/dist/views/Login/LoginField/index.js.map +1 -1
  740. package/dist/views/Login/LoginForm/index.js.map +1 -1
  741. package/dist/views/Logout/LogoutClient.js.map +1 -1
  742. package/dist/views/Logout/index.js.map +1 -1
  743. package/dist/views/NotFound/index.client.js.map +1 -1
  744. package/dist/views/ResetPassword/ResetPasswordForm/index.js.map +1 -1
  745. package/dist/views/Verify/index.client.js.map +1 -1
  746. package/dist/views/Version/Default/SetStepNav.js.map +1 -1
  747. package/dist/views/Version/Default/index.css +12 -12
  748. package/dist/views/Version/Default/index.js +333 -191
  749. package/dist/views/Version/Default/index.js.map +1 -1
  750. package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js.map +1 -1
  751. package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.js.map +1 -1
  752. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +0 -4
  753. package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +1 -1
  754. package/dist/views/Version/RenderFieldsToDiff/fields/Checkbox/index.js +9 -11
  755. package/dist/views/Version/RenderFieldsToDiff/fields/Checkbox/index.js.map +1 -1
  756. package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js.map +1 -1
  757. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js +41 -29
  758. package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js.map +1 -1
  759. package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js.map +1 -1
  760. package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
  761. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.d.ts.map +1 -1
  762. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js +19 -19
  763. package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -1
  764. package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
  765. package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
  766. package/dist/views/Version/Restore/index.d.ts.map +1 -1
  767. package/dist/views/Version/Restore/index.js +183 -82
  768. package/dist/views/Version/Restore/index.js.map +1 -1
  769. package/dist/views/Version/SelectComparison/VersionDrawer/CreatedAtCell.js.map +1 -1
  770. package/dist/views/Version/SelectComparison/VersionDrawer/index.js.map +1 -1
  771. package/dist/views/Version/SelectComparison/index.js +113 -33
  772. package/dist/views/Version/SelectComparison/index.js.map +1 -1
  773. package/dist/views/Version/SelectLocales/index.js.map +1 -1
  774. package/dist/views/Version/index.js.map +1 -1
  775. package/dist/views/Versions/VersionPillLabel/VersionPillLabel.js.map +1 -1
  776. package/dist/views/Versions/cells/AutosaveCell/index.js.map +1 -1
  777. package/dist/views/Versions/cells/CreatedAt/index.js.map +1 -1
  778. package/dist/views/Versions/cells/VersionDrawerCreatedAtCell/index.js.map +1 -1
  779. package/dist/views/Versions/index.client.js +9 -11
  780. package/dist/views/Versions/index.client.js.map +1 -1
  781. package/dist/views/Versions/index.js +2 -2
  782. package/dist/views/Versions/index.js.map +1 -1
  783. package/dist/widgets/Activity/Tabs/PinnedDocuments/PinDocumentPicker/index.css +28 -0
  784. package/dist/widgets/Activity/Tabs/PinnedDocuments/PinDocumentPicker/index.d.ts +16 -0
  785. package/dist/widgets/Activity/Tabs/PinnedDocuments/PinDocumentPicker/index.d.ts.map +1 -0
  786. package/dist/widgets/Activity/Tabs/PinnedDocuments/PinDocumentPicker/index.js +98 -0
  787. package/dist/widgets/Activity/Tabs/PinnedDocuments/PinDocumentPicker/index.js.map +1 -0
  788. package/dist/widgets/Activity/Tabs/PinnedDocuments/index.css +70 -0
  789. package/dist/widgets/Activity/Tabs/PinnedDocuments/index.d.ts +13 -0
  790. package/dist/widgets/Activity/Tabs/PinnedDocuments/index.d.ts.map +1 -0
  791. package/dist/widgets/Activity/Tabs/PinnedDocuments/index.js +81 -0
  792. package/dist/widgets/Activity/Tabs/PinnedDocuments/index.js.map +1 -0
  793. package/dist/widgets/{RecentlyViewed/pinnedPreferences.d.ts → Activity/Tabs/PinnedDocuments/preferences.d.ts} +6 -9
  794. package/dist/widgets/Activity/Tabs/PinnedDocuments/preferences.d.ts.map +1 -0
  795. package/dist/widgets/{RecentlyViewed/pinnedPreferences.js → Activity/Tabs/PinnedDocuments/preferences.js} +3 -22
  796. package/dist/widgets/Activity/Tabs/PinnedDocuments/preferences.js.map +1 -0
  797. package/dist/widgets/Activity/Tabs/PinnedDocuments/usePinnedDocuments.d.ts +39 -0
  798. package/dist/widgets/Activity/Tabs/PinnedDocuments/usePinnedDocuments.d.ts.map +1 -0
  799. package/dist/widgets/Activity/Tabs/PinnedDocuments/usePinnedDocuments.js +83 -0
  800. package/dist/widgets/Activity/Tabs/PinnedDocuments/usePinnedDocuments.js.map +1 -0
  801. package/dist/widgets/Activity/Tabs/RecentDocuments/index.d.ts +9 -0
  802. package/dist/widgets/Activity/Tabs/RecentDocuments/index.d.ts.map +1 -0
  803. package/dist/widgets/Activity/Tabs/RecentDocuments/index.js +23 -0
  804. package/dist/widgets/Activity/Tabs/RecentDocuments/index.js.map +1 -0
  805. package/dist/widgets/Activity/components/DocumentList/index.css +61 -0
  806. package/dist/widgets/Activity/components/DocumentList/index.d.ts +15 -0
  807. package/dist/widgets/Activity/components/DocumentList/index.d.ts.map +1 -0
  808. package/dist/widgets/Activity/components/DocumentList/index.js +56 -0
  809. package/dist/widgets/Activity/components/DocumentList/index.js.map +1 -0
  810. package/dist/widgets/Activity/components/EmptyState/index.css +47 -0
  811. package/dist/widgets/Activity/components/EmptyState/index.d.ts +12 -0
  812. package/dist/widgets/Activity/components/EmptyState/index.d.ts.map +1 -0
  813. package/dist/widgets/Activity/components/EmptyState/index.js +37 -0
  814. package/dist/widgets/Activity/components/EmptyState/index.js.map +1 -0
  815. package/dist/widgets/Activity/components/Pagination/index.css +42 -0
  816. package/dist/widgets/Activity/components/Pagination/index.d.ts +20 -0
  817. package/dist/widgets/Activity/components/Pagination/index.d.ts.map +1 -0
  818. package/dist/widgets/Activity/components/Pagination/index.js +125 -0
  819. package/dist/widgets/Activity/components/Pagination/index.js.map +1 -0
  820. package/dist/widgets/Activity/components/StatusPill/index.css +24 -0
  821. package/dist/widgets/Activity/components/StatusPill/index.d.ts +8 -0
  822. package/dist/widgets/Activity/components/StatusPill/index.d.ts.map +1 -0
  823. package/dist/widgets/Activity/components/StatusPill/index.js +18 -0
  824. package/dist/widgets/Activity/components/StatusPill/index.js.map +1 -0
  825. package/dist/widgets/Activity/index.client.d.ts +15 -0
  826. package/dist/widgets/Activity/index.client.d.ts.map +1 -0
  827. package/dist/widgets/Activity/index.client.js +186 -0
  828. package/dist/widgets/Activity/index.client.js.map +1 -0
  829. package/dist/widgets/Activity/index.css +320 -0
  830. package/dist/widgets/Activity/index.d.ts +13 -0
  831. package/dist/widgets/Activity/index.d.ts.map +1 -0
  832. package/dist/widgets/Activity/index.js +100 -0
  833. package/dist/widgets/Activity/index.js.map +1 -0
  834. package/dist/widgets/{RecentlyViewed/index.client.d.ts → Activity/types.d.ts} +6 -13
  835. package/dist/widgets/Activity/types.d.ts.map +1 -0
  836. package/dist/widgets/Activity/types.js +2 -0
  837. package/dist/widgets/Activity/types.js.map +1 -0
  838. package/dist/widgets/Activity/utils/cache.d.ts +33 -0
  839. package/dist/widgets/Activity/utils/cache.d.ts.map +1 -0
  840. package/dist/widgets/Activity/utils/cache.js +72 -0
  841. package/dist/widgets/Activity/utils/cache.js.map +1 -0
  842. package/dist/widgets/Activity/utils/constants.d.ts +5 -0
  843. package/dist/widgets/Activity/utils/constants.d.ts.map +1 -0
  844. package/dist/widgets/Activity/utils/constants.js +4 -0
  845. package/dist/widgets/Activity/utils/constants.js.map +1 -0
  846. package/dist/widgets/Activity/utils/documents.d.ts +11 -0
  847. package/dist/widgets/Activity/utils/documents.d.ts.map +1 -0
  848. package/dist/widgets/Activity/utils/documents.js +38 -0
  849. package/dist/widgets/Activity/utils/documents.js.map +1 -0
  850. package/dist/widgets/Activity/utils/getActivityWidgetDocs.d.ts +20 -0
  851. package/dist/widgets/Activity/utils/getActivityWidgetDocs.d.ts.map +1 -0
  852. package/dist/widgets/{RecentlyViewed/getDocuments.js → Activity/utils/getActivityWidgetDocs.js} +24 -21
  853. package/dist/widgets/Activity/utils/getActivityWidgetDocs.js.map +1 -0
  854. package/dist/widgets/Activity/utils/state.d.ts +44 -0
  855. package/dist/widgets/Activity/utils/state.d.ts.map +1 -0
  856. package/dist/widgets/Activity/utils/state.js +80 -0
  857. package/dist/widgets/Activity/utils/state.js.map +1 -0
  858. package/dist/widgets/Activity/utils/useActivityDocuments.d.ts +35 -0
  859. package/dist/widgets/Activity/utils/useActivityDocuments.d.ts.map +1 -0
  860. package/dist/widgets/Activity/utils/useActivityDocuments.js +141 -0
  861. package/dist/widgets/Activity/utils/useActivityDocuments.js.map +1 -0
  862. package/dist/widgets/Activity/utils/usePageSize.d.ts +11 -0
  863. package/dist/widgets/Activity/utils/usePageSize.d.ts.map +1 -0
  864. package/dist/widgets/Activity/utils/usePageSize.js +35 -0
  865. package/dist/widgets/Activity/utils/usePageSize.js.map +1 -0
  866. package/dist/widgets/CollectionCards/index.client.d.ts +3 -0
  867. package/dist/widgets/CollectionCards/index.client.d.ts.map +1 -1
  868. package/dist/widgets/CollectionCards/index.client.js +3 -0
  869. package/dist/widgets/CollectionCards/index.client.js.map +1 -1
  870. package/dist/widgets/CollectionCards/index.d.ts +3 -0
  871. package/dist/widgets/CollectionCards/index.d.ts.map +1 -1
  872. package/dist/widgets/CollectionCards/index.js +3 -0
  873. package/dist/widgets/CollectionCards/index.js.map +1 -1
  874. package/dist/widgets/CollectionQuery/SortField/index.d.ts +3 -0
  875. package/dist/widgets/CollectionQuery/SortField/index.d.ts.map +1 -1
  876. package/dist/widgets/CollectionQuery/SortField/index.js +181 -73
  877. package/dist/widgets/CollectionQuery/SortField/index.js.map +1 -1
  878. package/dist/widgets/CollectionQuery/index.d.ts +3 -0
  879. package/dist/widgets/CollectionQuery/index.d.ts.map +1 -1
  880. package/dist/widgets/CollectionQuery/index.js +3 -0
  881. package/dist/widgets/CollectionQuery/index.js.map +1 -1
  882. package/dist/widgets/UploadDropzone/CollectionsField/index.d.ts +3 -0
  883. package/dist/widgets/UploadDropzone/CollectionsField/index.d.ts.map +1 -1
  884. package/dist/widgets/UploadDropzone/CollectionsField/index.js +65 -14
  885. package/dist/widgets/UploadDropzone/CollectionsField/index.js.map +1 -1
  886. package/dist/widgets/UploadDropzone/index.client.d.ts +3 -0
  887. package/dist/widgets/UploadDropzone/index.client.d.ts.map +1 -1
  888. package/dist/widgets/UploadDropzone/index.client.js +3 -0
  889. package/dist/widgets/UploadDropzone/index.client.js.map +1 -1
  890. package/dist/widgets/UploadDropzone/index.d.ts +3 -0
  891. package/dist/widgets/UploadDropzone/index.d.ts.map +1 -1
  892. package/dist/widgets/UploadDropzone/index.js +3 -0
  893. package/dist/widgets/UploadDropzone/index.js.map +1 -1
  894. package/dist/widgets/Welcome/index.d.ts +3 -0
  895. package/dist/widgets/Welcome/index.d.ts.map +1 -1
  896. package/dist/widgets/Welcome/index.js +3 -0
  897. package/dist/widgets/Welcome/index.js.map +1 -1
  898. package/dist/widgets/WidgetCard/index.css +0 -20
  899. package/dist/widgets/{RecentlyViewed/CollectionsField → shared/CollectionFilter}/index.css +2 -2
  900. package/dist/widgets/{RecentlyViewed/CollectionsField → shared/CollectionFilter}/index.d.ts +3 -1
  901. package/dist/widgets/shared/CollectionFilter/index.d.ts.map +1 -0
  902. package/dist/widgets/shared/CollectionFilter/index.js +170 -0
  903. package/dist/widgets/shared/CollectionFilter/index.js.map +1 -0
  904. package/package.json +21 -23
  905. package/dist/exports/client/chunk-2AY67NFV.js.map +0 -7
  906. package/dist/exports/client/chunk-6XCSN54Q.js +0 -27
  907. package/dist/exports/client/chunk-6XCSN54Q.js.map +0 -7
  908. package/dist/widgets/RecentlyViewed/CollectionsField/index.d.ts.map +0 -1
  909. package/dist/widgets/RecentlyViewed/CollectionsField/index.js +0 -102
  910. package/dist/widgets/RecentlyViewed/CollectionsField/index.js.map +0 -1
  911. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.css +0 -73
  912. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.d.ts +0 -19
  913. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.d.ts.map +0 -1
  914. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.js +0 -122
  915. package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.js.map +0 -1
  916. package/dist/widgets/RecentlyViewed/getDocuments.d.ts +0 -20
  917. package/dist/widgets/RecentlyViewed/getDocuments.d.ts.map +0 -1
  918. package/dist/widgets/RecentlyViewed/getDocuments.js.map +0 -1
  919. package/dist/widgets/RecentlyViewed/index.client.d.ts.map +0 -1
  920. package/dist/widgets/RecentlyViewed/index.client.js +0 -401
  921. package/dist/widgets/RecentlyViewed/index.client.js.map +0 -1
  922. package/dist/widgets/RecentlyViewed/index.css +0 -318
  923. package/dist/widgets/RecentlyViewed/index.d.ts +0 -10
  924. package/dist/widgets/RecentlyViewed/index.d.ts.map +0 -1
  925. package/dist/widgets/RecentlyViewed/index.js +0 -45
  926. package/dist/widgets/RecentlyViewed/index.js.map +0 -1
  927. package/dist/widgets/RecentlyViewed/pinnedPreferences.d.ts.map +0 -1
  928. package/dist/widgets/RecentlyViewed/pinnedPreferences.js.map +0 -1
  929. package/dist/widgets/RecentlyViewed/recents.d.ts +0 -8
  930. package/dist/widgets/RecentlyViewed/recents.d.ts.map +0 -1
  931. package/dist/widgets/RecentlyViewed/recents.js +0 -19
  932. package/dist/widgets/RecentlyViewed/recents.js.map +0 -1
  933. /package/dist/exports/client/{CodeEditor-UKD3EPUY.js.map → CodeEditor-23ZGBN6S.js.map} +0 -0
  934. /package/dist/exports/client/{DatePicker-POZJVQP4.js.map → DatePicker-AZBZPMY6.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["PopupList","React","createContext","use","useCallback","useEffect","useId","useRef","useState","useEffectEvent","ThemeProvider","PopupTrigger","createSubmenuScope","useSubmenuPointerIntent","baseClass","PopupContext","TABBABLE_SELECTOR","map","s","join","MENU_ITEM_SELECTOR","POPUP_CONTENT_SELECTOR","getMenuItems","popup","Array","from","querySelectorAll","filter","item","closest","Popup","props","id","button","buttonAriaLabel","buttonClassName","buttonSize","buttonType","caret","children","className","disabled","forceOpen","horizontalAlign","horizontalAlignProp","hoverSubmenu","initActive","noBackground","onToggleClose","onToggleOpen","popupAriaLabel","popupType","portalClassName","render","renderButton","showOnHover","showScrollbar","side","size","theme","verticalAlign","popupRef","triggerRef","generatedContentId","contentId","openedViaKeyboardRef","parentPopup","popupRole","undefined","submenuScope","isSubmenu","resolvedSide","active","setActiveInternal","isOnTop","setIsOnTop","setActive","isActive","viaKeyboard","coordinateParent","current","requestOpen","delay","closeActiveBranch","release","closePopup","restoreFocus","trigger","querySelector","requestAnimationFrame","focus","close","closePopupChain","options","openFromParent","register","closeBranch","open","pointerIntent","contentRef","enabled","onClose","onOpen","Boolean","activeChildId","updatePosition","triggerRect","getBoundingClientRect","popupRect","offset","sideOffset","top","left","caretLeft","scrollContainer","popupPaddingTop","Number","parseFloat","window","getComputedStyle","paddingTop","maxTop","innerHeight","height","Math","max","min","anchorRect","width","right","innerWidth","onTop","bottom","topIfAbove","triggerCenter","newTop","round","newLeft","newCaretLeft","newPosition","style","position","getPropertyValue","setProperty","handleClickOutside","e","target","isOutsidePopup","contains","isOutsideTrigger","clickedPopupContent","isInsideChildPopup","handleKeyDown","activePopup","document","activeElement","key","preventDefault","stopPropagation","nestedTrigger","dispatchEvent","KeyboardEvent","bubbles","shiftKey","setTimeout","includes","menuItems","length","currentIndex","findIndex","nextIndex","forEach","index","setAttribute","focusable","el","goBackward","handleActionableClick","actionable","matches","showPopover","rafId","firstFocusable","addEventListener","capture","passive","cancelAnimationFrame","removeEventListener","hidePopover","Trigger","_jsx","isMenuItem","_jsxs","ref","onMouseEnter","onMouseLeave","role","tabIndex","value","popover","_Fragment"],"sources":["../../../src/elements/Popup/index.tsx"],"sourcesContent":["'use client'\nimport type { AriaAttributes, AriaRole, CSSProperties } from 'react'\n\nexport * as PopupList from './PopupButtonList/index.js'\n\nimport React, { createContext, use, useCallback, useEffect, useId, useRef, useState } from 'react'\n\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { ThemeProvider } from '../../providers/Theme/index.js'\nimport './index.css'\nimport { type PopupButtonRenderProps, PopupTrigger } from './PopupTrigger/index.js'\nimport { createSubmenuScope, type SubmenuScope } from './SubmenuScope.js'\nimport { useSubmenuPointerIntent } from './useSubmenuPointerIntent.js'\n\nconst baseClass = 'popup'\n\ntype PopupContextValue = {\n closePopupChain: (options?: { restoreFocus?: boolean }) => void\n popupRef: React.RefObject<HTMLDivElement | null>\n popupRole?: AriaRole\n submenuScope: SubmenuScope\n}\n\nconst PopupContext = createContext<null | PopupContextValue>(null)\n\n/**\n * Selector for all elements the browser considers tabbable.\n */\nconst TABBABLE_SELECTOR = [\n 'a[href]',\n 'button:not(:disabled)',\n 'input:not(:disabled):not([type=\"hidden\"])',\n 'select:not(:disabled)',\n 'textarea:not(:disabled)',\n '[tabindex]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n 'audio[controls]',\n 'video[controls]',\n 'summary',\n]\n .map((s) => `${s}:not([tabindex=\"-1\"])`)\n .join(', ')\n\nconst MENU_ITEM_SELECTOR = '[role=\"menuitem\"], [role=\"menuitemcheckbox\"], [role=\"menuitemradio\"]'\nconst POPUP_CONTENT_SELECTOR = `.${baseClass}__content, .${baseClass}__hidden-content`\n\nconst getMenuItems = (popup: HTMLElement): HTMLElement[] =>\n Array.from(popup.querySelectorAll<HTMLElement>(MENU_ITEM_SELECTOR)).filter(\n (item) => item.closest(POPUP_CONTENT_SELECTOR) === popup,\n )\n\nexport type PopupProps = {\n backgroundColor?: CSSProperties['backgroundColor']\n boundingRef?: React.RefObject<HTMLElement>\n button?: React.ReactNode\n buttonAriaLabel?: string\n buttonClassName?: string\n buttonSize?: 'large' | 'medium'\n buttonType?: 'custom' | 'default'\n caret?: boolean\n children?: React.ReactNode\n className?: string\n disabled?: boolean\n forceOpen?: boolean\n /**\n * Preferred horizontal alignment of the popup, if there is enough space available.\n * Nested menu popups use 'left' and 'right' as their preferred side instead.\n * When omitted, nested menu popups prefer the right side.\n *\n * @default 'left'\n */\n horizontalAlign?: 'center' | 'left' | 'right'\n hoverSubmenu?: boolean\n id?: string\n initActive?: boolean\n noBackground?: boolean\n onToggleClose?: () => void\n onToggleOpen?: (active: boolean) => void\n popupAriaLabel?: string\n popupType?: AriaAttributes['aria-haspopup']\n portalClassName?: string\n render?: (args: { close: () => void }) => React.ReactNode\n /**\n * Render prop for custom trigger button. Receives onClick/onKeyDown/aria props.\n * When provided, `button` and `buttonType` are ignored.\n */\n renderButton?: (props: PopupButtonRenderProps) => React.ReactNode\n showOnHover?: boolean\n /**\n * By default, the scrollbar is hidden. If you want to show it, set this to true.\n * In both cases, the container is still scrollable.\n *\n * @default false\n */\n showScrollbar?: boolean\n /**\n * Position the popup to the side of the trigger instead of above/below.\n * The popup's top edge aligns with the trigger's top edge (with viewport clamping).\n * Automatically flips to the opposite side if there is not enough space.\n * When set, `verticalAlign`, `horizontalAlign`, and the caret are ignored.\n */\n side?: 'left' | 'right'\n size?: 'fit-content' | 'large' | 'small'\n /**\n * Theme for the popup content. Defaults to 'dark'.\n * Set to 'auto' to inherit the current theme.\n *\n * @default 'dark'\n */\n theme?: 'auto' | 'dark' | 'light'\n /**\n * Preferred vertical alignment of the popup (position below or above the trigger),\n * if there is enough space available.\n *\n * If the popup is too close to the edge of the viewport, it will flip to the opposite side\n * regardless of the preferred vertical alignment.\n *\n * @default 'bottom'\n */\n verticalAlign?: 'bottom' | 'top'\n}\n\n/**\n * Component that renders a popup, as well as a button that triggers the popup.\n *\n * The popup is rendered next to its trigger in the DOM and positioned above / below it,\n * depending on the verticalAlign prop and the space available.\n */\nexport const Popup: React.FC<PopupProps> = (props) => {\n const {\n id,\n button,\n buttonAriaLabel,\n buttonClassName,\n buttonSize,\n buttonType = 'default',\n caret = true,\n children,\n className,\n disabled,\n forceOpen,\n horizontalAlign: horizontalAlignProp,\n hoverSubmenu = false,\n initActive = false,\n noBackground,\n onToggleClose,\n onToggleOpen,\n popupAriaLabel,\n popupType,\n portalClassName,\n render,\n renderButton,\n showOnHover = false,\n showScrollbar = false,\n side,\n size = 'fit-content',\n theme = 'dark',\n verticalAlign = 'bottom',\n } = props\n\n const popupRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLDivElement>(null)\n const generatedContentId = useId()\n const contentId = `${id || generatedContentId}-content`\n\n /**\n * Keeps track of whether the popup was opened via keyboard.\n * This is used to determine whether to autofocus the first element in the popup.\n * If the popup was opened via mouse, we do not want to autofocus the first element.\n */\n const openedViaKeyboardRef = useRef(false)\n\n const parentPopup = use(PopupContext)\n const popupRole = (popupType === true ? 'menu' : popupType || undefined) as AriaRole | undefined\n const submenuScope = useState(() => createSubmenuScope())[0]\n const isSubmenu = parentPopup?.popupRole === 'menu' && popupRole === 'menu'\n const horizontalAlign = horizontalAlignProp ?? 'left'\n const resolvedSide =\n side ?? (isSubmenu ? (horizontalAlignProp === 'left' ? 'left' : 'right') : undefined)\n\n const [active, setActiveInternal] = useState(initActive)\n const [isOnTop, setIsOnTop] = useState(verticalAlign === 'top')\n\n const setActive = useCallback(\n (isActive: boolean, viaKeyboard = false, coordinateParent = true) => {\n if (isActive) {\n openedViaKeyboardRef.current = viaKeyboard\n if (coordinateParent && isSubmenu) {\n parentPopup.submenuScope.requestOpen({\n id: contentId,\n delay: false,\n viaKeyboard,\n })\n return\n }\n onToggleOpen?.(true)\n } else {\n onToggleClose?.()\n submenuScope.closeActiveBranch()\n parentPopup?.submenuScope.release(contentId)\n }\n setActiveInternal(isActive)\n },\n [contentId, isSubmenu, onToggleClose, onToggleOpen, parentPopup, submenuScope],\n )\n\n const closePopup = useCallback(\n ({ restoreFocus = true }: { restoreFocus?: boolean } = {}) => {\n const trigger = triggerRef.current?.querySelector<HTMLElement>('button, [tabindex=\"0\"]')\n\n setActive(false)\n if (restoreFocus) {\n requestAnimationFrame(() => trigger?.focus())\n }\n },\n [setActive],\n )\n const close = useCallback(() => closePopup(), [closePopup])\n const closePopupChain = useCallback(\n (options: { restoreFocus?: boolean } = {}) => {\n if (parentPopup) {\n closePopup({ restoreFocus: false })\n parentPopup.closePopupChain(options)\n return\n }\n\n closePopup(options)\n },\n [closePopup, parentPopup],\n )\n\n const openFromParent = useCallback(\n (viaKeyboard: boolean) => setActive(true, viaKeyboard, false),\n [setActive],\n )\n\n useEffect(() => {\n if (!isSubmenu) {\n return\n }\n\n return parentPopup.submenuScope.register({\n id: contentId,\n closeBranch: () => closePopup({ restoreFocus: false }),\n open: openFromParent,\n })\n }, [closePopup, contentId, isSubmenu, openFromParent, parentPopup])\n\n const pointerIntent = useSubmenuPointerIntent({\n contentRef: popupRef,\n enabled: isSubmenu && hoverSubmenu,\n onClose: () => setActive(false),\n onOpen: () =>\n parentPopup?.submenuScope.requestOpen({\n id: contentId,\n delay: Boolean(parentPopup.submenuScope.activeChildId),\n }),\n })\n\n // /////////////////////////////////////\n // Position Calculation\n //\n // Calculates and applies popup position relative to trigger.\n // Always checks viewport bounds (for flipping), but only updates\n // styles if the calculated position differs from current position.\n // /////////////////////////////////////\n\n const updatePosition = useEffectEvent(() => {\n const trigger = triggerRef.current\n const popup = popupRef.current\n if (!trigger || !popup) {\n return\n }\n\n const triggerRect = trigger.getBoundingClientRect()\n const popupRect = popup.getBoundingClientRect()\n\n // Gap between the popup and the trigger/viewport edges (in pixels)\n const offset = 8\n // Additional gap used in side mode so the child popup has breathing room from its parent\n const sideOffset = 4\n\n let top: number\n let left: number\n let caretLeft: number\n\n if (resolvedSide) {\n // /////////////////////////////////////\n // Side Positioning\n // Places the popup to the left or right of the parent popup (not just the trigger),\n // top-aligned with the trigger. Flips to the opposite side if there is not enough\n // viewport space.\n // /////////////////////////////////////\n\n const scrollContainer = popup.querySelector<HTMLElement>(\n `:scope > .${baseClass}__scroll-container`,\n )\n const popupPaddingTop = scrollContainer\n ? Number.parseFloat(window.getComputedStyle(scrollContainer).paddingTop) || 0\n : 0\n\n // Align the first menu item with the trigger by accounting for the popup's top padding.\n top = triggerRect.top - popupPaddingTop\n const maxTop = window.innerHeight - popupRect.height - offset\n top = Math.max(offset, Math.min(top, maxTop))\n\n // Use the parent popup's bounding rect as the reference for left/right positioning\n // so the child appears 4px from the parent popup edge, not just the trigger button.\n const anchorRect = parentPopup?.popupRef.current\n ? parentPopup.popupRef.current.getBoundingClientRect()\n : triggerRect\n\n if (resolvedSide === 'left') {\n left = anchorRect.left - popupRect.width - sideOffset\n if (left < offset) {\n // flip to right side\n left = anchorRect.right + sideOffset\n }\n } else {\n left = anchorRect.right + sideOffset\n if (left + popupRect.width + offset > window.innerWidth) {\n // flip to left side\n left = anchorRect.left - popupRect.width - sideOffset\n }\n }\n\n left = Math.max(\n offset,\n Math.min(left, Math.max(offset, window.innerWidth - popupRect.width - offset)),\n )\n\n // Caret not used in side mode; set a neutral value\n caretLeft = popupRect.width / 2\n\n setIsOnTop(false)\n } else {\n // /////////////////////////////////////\n // Vertical Positioning\n // Calculates the `top` position in absolute page coordinates.\n // Uses `verticalAlign` prop as the preferred direction, but flips\n // to the opposite side if there's not enough viewport space.\n // /////////////////////////////////////\n\n let onTop = verticalAlign === 'top'\n\n if (verticalAlign === 'bottom') {\n top = triggerRect.bottom + offset\n\n if (triggerRect.bottom + popupRect.height + offset > window.innerHeight) {\n // Try to flip above — only do so if there's actually enough room\n const topIfAbove = triggerRect.top - popupRect.height - offset\n if (topIfAbove >= 0) {\n top = topIfAbove\n onTop = true\n }\n // else: not enough room above either — keep below and let it overflow rather than going off-screen\n }\n } else {\n top = triggerRect.top - popupRect.height - offset\n\n if (triggerRect.top - popupRect.height - offset < 0) {\n top = triggerRect.bottom + offset\n onTop = false\n }\n }\n\n const maxTop = Math.max(offset, window.innerHeight - popupRect.height - offset)\n top = Math.max(offset, Math.min(top, maxTop))\n\n setIsOnTop(onTop)\n\n // /////////////////////////////////////\n // Horizontal Positioning\n // Calculates the `left` position based on `horizontalAlign` prop:\n // - 'left': aligns popup's left edge with trigger's left edge\n // - 'right': aligns popup's right edge with trigger's right edge\n // - 'center': centers popup horizontally relative to trigger\n // Then clamps to keep the popup within viewport bounds.\n // /////////////////////////////////////\n\n left =\n horizontalAlign === 'right'\n ? triggerRect.right - popupRect.width\n : horizontalAlign === 'center'\n ? triggerRect.left + triggerRect.width / 2 - popupRect.width / 2\n : triggerRect.left\n\n left = Math.max(offset, Math.min(left, window.innerWidth - popupRect.width - offset))\n\n // /////////////////////////////////////\n // Caret Positioning\n // Positions the caret arrow to point at the trigger's horizontal center.\n // Clamps between 12px from edges to prevent caret from overflowing the popup.\n // /////////////////////////////////////\n\n const triggerCenter = triggerRect.left + triggerRect.width / 2\n caretLeft = Math.max(12, Math.min(triggerCenter - left, popupRect.width - 12))\n }\n\n // /////////////////////////////////////\n // Apply Styles (only if changed)\n // Compares calculated position with current styles to avoid unnecessary\n // DOM updates during scroll. This prevents visual lag by relying on the absolute\n // positioning where possible (popup slightly lags behind when scrolling really fast),\n // while still allowing position changes when needed (e.g., sticky parent, viewport flip).\n // Values are rounded to match browser's CSS precision and avoid false updates.\n // /////////////////////////////////////\n\n const newTop = `${Math.round(top)}px`\n const newLeft = `${Math.round(left)}px`\n const newCaretLeft = `${Math.round(caretLeft)}px`\n const newPosition = 'fixed'\n\n if (popup.style.position !== newPosition) {\n popup.style.position = newPosition\n }\n if (popup.style.top !== newTop) {\n popup.style.top = newTop\n }\n if (popup.style.left !== newLeft) {\n popup.style.left = newLeft\n }\n if (popup.style.getPropertyValue('--caret-left') !== newCaretLeft) {\n popup.style.setProperty('--caret-left', newCaretLeft)\n }\n })\n\n // /////////////////////////////////////\n // Click Outside Handler\n // Closes popup when clicking outside both the popup and trigger.\n // Distinguishes between parent and child popups:\n // - Click in child popup: parent stays open\n // - Click in parent popup: child closes\n // /////////////////////////////////////\n\n const handleClickOutside = useEffectEvent((e: MouseEvent) => {\n const target = e.target as Node\n const isOutsidePopup = !popupRef.current?.contains(target)\n const isOutsideTrigger = !triggerRef.current?.contains(target)\n\n // Check if click is inside a popup portal\n const clickedPopupContent = (target as Element).closest?.('.popup__content')\n\n // If the clicked popup contains this popup's trigger, it's a parent popup\n // and we should close. If it doesn't contain our trigger, it's a child popup\n // and we should stay open to avoid closing parent when interacting with child.\n const isInsideChildPopup =\n clickedPopupContent && !clickedPopupContent.contains(triggerRef.current)\n\n if (isOutsidePopup && isOutsideTrigger && !isInsideChildPopup) {\n setActive(false)\n }\n })\n\n // /////////////////////////////////////\n // Keyboard Navigation\n // Handles keyboard interactions when popup is open:\n // - Escape: closes popup and returns focus to trigger\n // - Tab/Shift+Tab: closes menus; dialogs retain normal document tab order\n // - ArrowUp/ArrowDown: moves between menu items with wrapping\n // Focus is managed manually to support elements the browser might skip.\n // /////////////////////////////////////\n\n const handleKeyDown = useEffectEvent((e: KeyboardEvent) => {\n const popup = popupRef.current\n if (!popup || !active) {\n return\n }\n\n const activePopup = document.activeElement?.closest(`.${baseClass}__content`)\n if (activePopup && activePopup !== popup) {\n return\n }\n\n if (e.key === 'Escape') {\n e.preventDefault()\n e.stopPropagation()\n closePopup()\n return\n }\n\n if (e.key === 'ArrowRight' && popupRole === 'menu') {\n const trigger = (document.activeElement as HTMLElement | null)?.closest<HTMLElement>(\n `.${baseClass}__trigger-wrap`,\n )\n const nestedTrigger = trigger?.querySelector<HTMLElement>('button, [role=\"menuitem\"]')\n if (nestedTrigger) {\n e.preventDefault()\n nestedTrigger.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, key: 'Enter' }))\n return\n }\n }\n\n if (e.key === 'ArrowLeft' && parentPopup) {\n e.preventDefault()\n closePopup()\n return\n }\n\n if (e.key === 'Tab' && popupRole === 'menu') {\n if (e.shiftKey) {\n e.preventDefault()\n closePopupChain({ restoreFocus: true })\n return\n }\n\n setTimeout(closePopupChain)\n return\n }\n\n if (['ArrowDown', 'ArrowUp', 'End', 'Home'].includes(e.key)) {\n const menuItems = getMenuItems(popup)\n if (menuItems.length > 0) {\n e.preventDefault()\n\n const currentIndex = menuItems.findIndex((item) => item === document.activeElement)\n const nextIndex =\n e.key === 'Home'\n ? 0\n : e.key === 'End'\n ? menuItems.length - 1\n : e.key === 'ArrowUp'\n ? currentIndex <= 0\n ? menuItems.length - 1\n : currentIndex - 1\n : currentIndex === -1 || currentIndex === menuItems.length - 1\n ? 0\n : currentIndex + 1\n\n menuItems.forEach((item, index) =>\n item.setAttribute('tabindex', index === nextIndex ? '0' : '-1'),\n )\n menuItems[nextIndex].focus()\n return\n }\n }\n\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n const focusable = Array.from(popup.querySelectorAll<HTMLElement>(TABBABLE_SELECTOR))\n if (focusable.length === 0) {\n return\n }\n\n e.preventDefault()\n\n const currentIndex = focusable.findIndex((el) => el === document.activeElement)\n const goBackward = e.key === 'ArrowUp'\n\n let nextIndex: number\n if (currentIndex === -1) {\n nextIndex = goBackward ? focusable.length - 1 : 0\n } else if (goBackward) {\n nextIndex = currentIndex === 0 ? focusable.length - 1 : currentIndex - 1\n } else {\n nextIndex = currentIndex === focusable.length - 1 ? 0 : currentIndex + 1\n }\n\n focusable[nextIndex].focus()\n }\n })\n\n // /////////////////////////////////////\n // Click Handler for Actionable Elements\n // Closes popup when buttons/links inside are clicked (includes Enter/Space activation).\n // /////////////////////////////////////\n\n const handleActionableClick = useEffectEvent((e: MouseEvent) => {\n const target = e.target as HTMLElement\n\n // Allow opting out with data-popup-prevent-close attribute on element or ancestor\n if (target.closest('[data-popup-prevent-close]')) {\n return\n }\n\n // Check if the clicked element or any ancestor is an actionable element\n const actionable = target.closest('button, a[href], [role=\"button\"], [role=\"menuitem\"]')\n if (actionable && popupRef.current?.contains(actionable)) {\n if (actionable.closest(`.${baseClass}__content`) !== popupRef.current) {\n return\n }\n // Don't close if clicking a nested popup's trigger — it will manage its own open state\n if (actionable.closest(`.${baseClass}__trigger-wrap`)) {\n return\n }\n closePopup()\n }\n })\n\n // /////////////////////////////////////\n // Effect: Setup/Teardown position and focus management\n // /////////////////////////////////////\n\n useEffect(() => {\n if (!active) {\n const popup = popupRef.current\n if (popup) {\n // Clear inline position styles so the CSS `top: -9999px` rule on\n // `.popup__hidden-content` takes effect. Without this, the inline\n // styles set during positioning would win over the CSS rule, keeping\n // portaled children (e.g. a ReactSelect menu) visually on-screen.\n popup.style.position = ''\n popup.style.top = ''\n popup.style.left = ''\n }\n return\n }\n\n const popup = popupRef.current\n if (!popup) {\n return\n }\n\n if (!popup.matches(':popover-open')) {\n popup.showPopover()\n }\n\n const menuItems = getMenuItems(popup)\n menuItems.forEach((item, index) => item.setAttribute('tabindex', index === 0 ? '0' : '-1'))\n\n // /////////////////////////////////////\n // Initial Position\n // Calculate and apply popup position.\n // getBoundingClientRect() forces synchronous layout.\n //\n // We call updatePosition() twice: once synchronously (so the popup\n // snaps to roughly the right place immediately rather than flashing\n // from -9999px) and once in a requestAnimationFrame, which fires\n // after the browser has finished laying out the newly-visible popup\n // content. The rAF call is the authoritative one — it catches cases\n // where the popup height wasn't stable yet during the first call\n // (e.g. ColumnSelection popup content rendering after hidden → visible\n // class switch), which was causing incorrect flip-to-top decisions.\n // /////////////////////////////////////\n\n updatePosition()\n const rafId = requestAnimationFrame(() => {\n updatePosition()\n })\n\n // /////////////////////////////////////\n // Focus Management\n // When opened via keyboard, autofocus the first focusable button.\n // When opened via mouse, skip autofocus to avoid unwanted highlights.\n // /////////////////////////////////////\n\n if (openedViaKeyboardRef.current) {\n // Use requestAnimationFrame to ensure DOM is ready.\n requestAnimationFrame(() => {\n const firstFocusable = menuItems[0] ?? popup.querySelector<HTMLElement>(TABBABLE_SELECTOR)\n firstFocusable?.focus()\n })\n }\n\n // /////////////////////////////////////\n // Event Listeners\n // - resize/scroll: recalculate position (only applies styles if changed)\n // - mousedown: detect clicks outside to close\n // - keydown: handle keyboard navigation\n // /////////////////////////////////////\n\n window.addEventListener('resize', updatePosition)\n window.addEventListener('scroll', updatePosition, { capture: true, passive: true })\n document.addEventListener('mousedown', handleClickOutside)\n popup.addEventListener('keydown', handleKeyDown)\n popup.addEventListener('click', handleActionableClick)\n\n return () => {\n cancelAnimationFrame(rafId)\n window.removeEventListener('resize', updatePosition)\n window.removeEventListener('scroll', updatePosition, { capture: true })\n document.removeEventListener('mousedown', handleClickOutside)\n popup.removeEventListener('keydown', handleKeyDown)\n popup.removeEventListener('click', handleActionableClick)\n if (popup.matches(':popover-open')) {\n popup.hidePopover()\n }\n }\n }, [active])\n\n useEffect(() => {\n if (forceOpen !== undefined) {\n setActive(forceOpen)\n }\n }, [forceOpen, setActive])\n\n const Trigger = (\n <PopupTrigger\n active={active}\n button={button}\n buttonAriaLabel={buttonAriaLabel}\n buttonType={buttonType}\n className={buttonClassName}\n contentId={contentId}\n disabled={disabled}\n isMenuItem={parentPopup?.popupRole === 'menu'}\n noBackground={noBackground}\n popupType={popupType}\n renderButton={renderButton}\n setActive={setActive}\n size={buttonSize}\n />\n )\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')} id={id}>\n <div className={`${baseClass}__trigger-wrap`} ref={triggerRef}>\n {showOnHover ? (\n <div\n className={`${baseClass}__on-hover-watch`}\n onMouseEnter={() => setActive(true)}\n onMouseLeave={() => setActive(false)}\n role=\"button\"\n tabIndex={0}\n >\n {Trigger}\n </div>\n ) : hoverSubmenu && isSubmenu ? (\n <div {...pointerIntent} className={`${baseClass}__submenu-hover-watch`}>\n {Trigger}\n </div>\n ) : (\n Trigger\n )}\n </div>\n\n <PopupContext value={{ closePopupChain, popupRef, popupRole, submenuScope }}>\n {/* The menu surface tracks pointer intent while preserving its menu semantics. */}\n {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions */}\n <div\n aria-label={popupAriaLabel}\n className={\n active\n ? [\n `${baseClass}__content`,\n `${baseClass}--size-${size}`,\n resolvedSide\n ? `${baseClass}--side-${resolvedSide}`\n : isOnTop\n ? `${baseClass}--v-top`\n : `${baseClass}--v-bottom`,\n portalClassName,\n ]\n .filter(Boolean)\n .join(' ')\n : // Do not share any class names between active and disabled popups, to make sure\n // tests do not accidentally target inactive popups.\n `${baseClass}__hidden-content`\n }\n data-popup-id={id || undefined}\n data-theme={theme === 'auto' ? undefined : theme}\n id={contentId}\n onMouseEnter={pointerIntent.onMouseEnter}\n onMouseLeave={pointerIntent.onMouseLeave}\n popover=\"manual\"\n ref={popupRef}\n role={popupRole}\n >\n <div\n className={`${baseClass}__scroll-container${showScrollbar ? ` ${baseClass}__scroll-container--show-scrollbar` : ''}`}\n >\n {theme === 'auto' ? (\n <>\n {render?.({ close })}\n {children}\n </>\n ) : (\n <ThemeProvider theme={theme}>\n {render?.({ close })}\n {children}\n </ThemeProvider>\n )}\n </div>\n {caret && !resolvedSide && <div className={`${baseClass}__caret`} />}\n </div>\n </PopupContext>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["PopupList","React","createContext","use","useCallback","useEffect","useId","useLayoutEffect","useRef","useState","useEffectEvent","useModalFocus","ThemeProvider","PopupTrigger","createSubmenuScope","useSubmenuPointerIntent","baseClass","PopupContext","TABBABLE_SELECTOR","map","s","join","MENU_ITEM_SELECTOR","POPUP_CONTENT_SELECTOR","getMenuItems","popup","Array","from","querySelectorAll","filter","item","closest","Popup","props","id","button","buttonAriaLabel","buttonClassName","buttonSize","buttonType","caret","children","className","disabled","forceOpen","horizontalAlign","horizontalAlignProp","hoverSubmenu","initActive","noBackground","onToggleClose","onToggleOpen","popupAriaLabel","popupType","portalClassName","render","renderButton","showOnHover","showScrollbar","side","size","theme","verticalAlign","popupRef","containerRef","triggerRef","registerPopup","getTrigger","current","querySelector","container","generatedContentId","contentId","openedViaKeyboardRef","parentPopup","popupRole","undefined","submenuScope","isSubmenu","resolvedSide","active","setActiveInternal","isOnTop","setIsOnTop","setActive","isActive","viaKeyboard","coordinateParent","requestOpen","closeActiveBranch","release","closePopup","restoreFocus","trigger","requestAnimationFrame","focus","close","closePopupChain","options","openFromParent","closeFromPointer","hasFocus","contains","document","activeElement","pointerIntent","contentRef","enabled","onClose","onOpen","viaPointer","onSafeAreaExpire","x","y","target","elementFromPoint","parentContent","siblingId","getAttribute","submenuCallbacks","parentSubmenuScope","register","closeBranch","isPointerProtected","isProtected","open","updatePosition","triggerRect","getBoundingClientRect","popupRect","offset","sideOffset","top","left","caretLeft","scrollContainer","popupPaddingTop","Number","parseFloat","window","getComputedStyle","paddingTop","maxTop","innerHeight","height","Math","max","min","anchorRect","width","right","innerWidth","onTop","bottom","topIfAbove","triggerCenter","newTop","round","newLeft","newCaretLeft","newPosition","style","position","getPropertyValue","setProperty","updateSafeArea","handleClickOutside","e","isOutsidePopup","isOutsideTrigger","clickedPopupContent","isInsideChildPopup","handleKeyDown","activePopup","key","preventDefault","stopPropagation","nestedTrigger","dispatchEvent","KeyboardEvent","bubbles","shiftKey","setTimeout","includes","menuItems","length","currentIndex","findIndex","nextIndex","forEach","index","setAttribute","focusable","el","goBackward","handleActionableClick","actionable","matches","showPopover","rafId","firstFocusable","addEventListener","capture","passive","cancelAnimationFrame","removeEventListener","hidePopover","Trigger","_jsx","isMenuItem","_jsxs","Boolean","ref","onMouseEnter","onMouseLeave","role","tabIndex","triggerProps","value","contentProps","popover","_Fragment"],"sources":["../../../src/elements/Popup/index.tsx"],"sourcesContent":["'use client'\nimport type { AriaAttributes, AriaRole, CSSProperties } from 'react'\n\nexport * as PopupList from './PopupButtonList/index.js'\n\nimport React, {\n createContext,\n use,\n useCallback,\n useEffect,\n useId,\n useLayoutEffect,\n useRef,\n useState,\n} from 'react'\n\nimport { useEffectEvent } from '../../hooks/useEffectEvent.js'\nimport { useModalFocus } from '../../providers/ModalFocus/index.js'\nimport { ThemeProvider } from '../../providers/Theme/index.js'\nimport './index.css'\nimport { type PopupButtonRenderProps, PopupTrigger } from './PopupTrigger/index.js'\nimport { createSubmenuScope, type SubmenuScope } from './SubmenuScope.js'\nimport { useSubmenuPointerIntent } from './useSubmenuPointerIntent.js'\n\nconst baseClass = 'popup'\n\ntype PopupContextValue = {\n closePopupChain: (options?: { restoreFocus?: boolean }) => void\n popupRef: React.RefObject<HTMLDivElement | null>\n popupRole?: AriaRole\n submenuScope: SubmenuScope\n}\n\nconst PopupContext = createContext<null | PopupContextValue>(null)\n\n/**\n * Selector for all elements the browser considers tabbable.\n */\nconst TABBABLE_SELECTOR = [\n 'a[href]',\n 'button:not(:disabled)',\n 'input:not(:disabled):not([type=\"hidden\"])',\n 'select:not(:disabled)',\n 'textarea:not(:disabled)',\n '[tabindex]',\n '[contenteditable]:not([contenteditable=\"false\"])',\n 'audio[controls]',\n 'video[controls]',\n 'summary',\n]\n .map((s) => `${s}:not([tabindex=\"-1\"])`)\n .join(', ')\n\nconst MENU_ITEM_SELECTOR = '[role=\"menuitem\"], [role=\"menuitemcheckbox\"], [role=\"menuitemradio\"]'\nconst POPUP_CONTENT_SELECTOR = `.${baseClass}__content, .${baseClass}__hidden-content`\n\nconst getMenuItems = (popup: HTMLElement): HTMLElement[] =>\n Array.from(popup.querySelectorAll<HTMLElement>(MENU_ITEM_SELECTOR)).filter(\n (item) => item.closest(POPUP_CONTENT_SELECTOR) === popup,\n )\n\nexport type PopupProps = {\n backgroundColor?: CSSProperties['backgroundColor']\n boundingRef?: React.RefObject<HTMLElement>\n button?: React.ReactNode\n buttonAriaLabel?: string\n buttonClassName?: string\n buttonSize?: 'large' | 'medium'\n buttonType?: 'custom' | 'default'\n caret?: boolean\n children?: React.ReactNode\n className?: string\n disabled?: boolean\n forceOpen?: boolean\n /**\n * Preferred horizontal alignment of the popup, if there is enough space available.\n * Nested menu popups use 'left' and 'right' as their preferred side instead.\n * When omitted, nested menu popups prefer the right side.\n *\n * @default 'left'\n */\n horizontalAlign?: 'center' | 'left' | 'right'\n hoverSubmenu?: boolean\n id?: string\n initActive?: boolean\n noBackground?: boolean\n onToggleClose?: () => void\n onToggleOpen?: (active: boolean) => void\n popupAriaLabel?: string\n popupType?: AriaAttributes['aria-haspopup']\n portalClassName?: string\n render?: (args: { close: () => void }) => React.ReactNode\n /**\n * Render prop for custom trigger button. Receives onClick/onKeyDown/aria props.\n * When provided, `button` and `buttonType` are ignored.\n */\n renderButton?: (props: PopupButtonRenderProps) => React.ReactNode\n showOnHover?: boolean\n /**\n * By default, the scrollbar is hidden. If you want to show it, set this to true.\n * In both cases, the container is still scrollable.\n *\n * @default false\n */\n showScrollbar?: boolean\n /**\n * Position the popup to the side of the trigger instead of above/below.\n * The popup's top edge aligns with the trigger's top edge (with viewport clamping).\n * Automatically flips to the opposite side if there is not enough space.\n * When set, `verticalAlign`, `horizontalAlign`, and the caret are ignored.\n */\n side?: 'left' | 'right'\n size?: 'fit-content' | 'large' | 'small'\n /**\n * Theme for the popup content. Defaults to 'dark'.\n * Set to 'auto' to inherit the current theme.\n *\n * @default 'dark'\n */\n theme?: 'auto' | 'dark' | 'light'\n /**\n * Preferred vertical alignment of the popup (position below or above the trigger),\n * if there is enough space available.\n *\n * If the popup is too close to the edge of the viewport, it will flip to the opposite side\n * regardless of the preferred vertical alignment.\n *\n * @default 'bottom'\n */\n verticalAlign?: 'bottom' | 'top'\n}\n\n/**\n * Component that renders a popup, as well as a button that triggers the popup.\n *\n * The popup is rendered next to its trigger in the DOM and positioned above / below it,\n * depending on the verticalAlign prop and the space available.\n */\nexport const Popup: React.FC<PopupProps> = (props) => {\n const {\n id,\n button,\n buttonAriaLabel,\n buttonClassName,\n buttonSize,\n buttonType = 'default',\n caret = true,\n children,\n className,\n disabled,\n forceOpen,\n horizontalAlign: horizontalAlignProp,\n hoverSubmenu = false,\n initActive = false,\n noBackground,\n onToggleClose,\n onToggleOpen,\n popupAriaLabel,\n popupType,\n portalClassName,\n render,\n renderButton,\n showOnHover = false,\n showScrollbar = false,\n side,\n size = 'fit-content',\n theme = 'dark',\n verticalAlign = 'bottom',\n } = props\n\n const popupRef = useRef<HTMLDivElement>(null)\n const containerRef = useRef<HTMLDivElement>(null)\n const triggerRef = useRef<HTMLDivElement>(null)\n const { registerPopup } = useModalFocus()\n const getTrigger = useCallback(\n () => triggerRef.current?.querySelector<HTMLElement>('button, [tabindex=\"0\"]') ?? null,\n [],\n )\n\n useLayoutEffect(() => {\n const container = containerRef.current\n\n if (container) {\n return registerPopup({ container, getTrigger })\n }\n }, [getTrigger, registerPopup])\n const generatedContentId = useId()\n const contentId = `${id || generatedContentId}-content`\n\n /**\n * Keeps track of whether the popup was opened via keyboard.\n * This is used to determine whether to autofocus the first element in the popup.\n * If the popup was opened via mouse, we do not want to autofocus the first element.\n */\n const openedViaKeyboardRef = useRef(false)\n\n const parentPopup = use(PopupContext)\n const popupRole = (popupType === true ? 'menu' : popupType || undefined) as AriaRole | undefined\n const submenuScope = useState(() => createSubmenuScope())[0]\n const isSubmenu = parentPopup?.popupRole === 'menu' && popupRole === 'menu'\n const horizontalAlign = horizontalAlignProp ?? 'left'\n const resolvedSide =\n side ?? (isSubmenu ? (horizontalAlignProp === 'left' ? 'left' : 'right') : undefined)\n\n const [active, setActiveInternal] = useState(initActive)\n const [isOnTop, setIsOnTop] = useState(verticalAlign === 'top')\n\n const setActive = useCallback(\n (isActive: boolean, viaKeyboard = false, coordinateParent = true) => {\n if (isActive) {\n openedViaKeyboardRef.current = viaKeyboard\n if (coordinateParent && isSubmenu) {\n parentPopup.submenuScope.requestOpen({\n id: contentId,\n viaKeyboard,\n })\n return\n }\n onToggleOpen?.(true)\n } else {\n onToggleClose?.()\n submenuScope.closeActiveBranch()\n parentPopup?.submenuScope.release(contentId)\n }\n setActiveInternal(isActive)\n },\n [contentId, isSubmenu, onToggleClose, onToggleOpen, parentPopup, submenuScope],\n )\n\n const closePopup = useCallback(\n ({ restoreFocus = true }: { restoreFocus?: boolean } = {}) => {\n const trigger = getTrigger()\n\n setActive(false)\n if (restoreFocus) {\n requestAnimationFrame(() => trigger?.focus())\n }\n },\n [getTrigger, setActive],\n )\n const close = useCallback(() => closePopup(), [closePopup])\n const closePopupChain = useCallback(\n (options: { restoreFocus?: boolean } = {}) => {\n if (parentPopup) {\n closePopup({ restoreFocus: false })\n parentPopup.closePopupChain(options)\n return\n }\n\n closePopup(options)\n },\n [closePopup, parentPopup],\n )\n\n const openFromParent = useCallback(\n (viaKeyboard: boolean) => setActive(true, viaKeyboard, false),\n [setActive],\n )\n\n const closeFromPointer = useCallback(() => {\n const hasFocus = popupRef.current?.contains(document.activeElement)\n const trigger = triggerRef.current?.querySelector<HTMLElement>('[aria-haspopup=\"menu\"]')\n\n closePopup({ restoreFocus: false })\n if (hasFocus) {\n trigger?.focus()\n }\n }, [closePopup])\n\n const pointerIntent = useSubmenuPointerIntent({\n active,\n contentRef: popupRef,\n enabled: isSubmenu && hoverSubmenu,\n onClose: closeFromPointer,\n onOpen: () =>\n parentPopup?.submenuScope.requestOpen({\n id: contentId,\n viaPointer: true,\n }),\n onSafeAreaExpire: ({ x, y }) => {\n const target = document.elementFromPoint(x, y)\n const parentContent = parentPopup?.popupRef.current\n\n if (parentContent && target?.closest(POPUP_CONTENT_SELECTOR) === parentContent) {\n const trigger = target\n .closest('.popup__submenu-hover-watch')\n ?.querySelector<HTMLElement>('[aria-haspopup=\"menu\"][aria-controls]')\n const siblingId = trigger?.getAttribute('aria-controls')\n\n if (siblingId && trigger?.getAttribute('aria-disabled') !== 'true') {\n parentPopup?.submenuScope.requestOpen({ id: siblingId })\n return\n }\n }\n\n closeFromPointer()\n },\n triggerRef,\n })\n\n const submenuCallbacks = useRef({ closeFromPointer, openFromParent })\n const parentSubmenuScope = parentPopup?.submenuScope\n\n useEffect(() => {\n submenuCallbacks.current = { closeFromPointer, openFromParent }\n }, [closeFromPointer, openFromParent])\n\n useEffect(() => {\n if (!isSubmenu || !parentSubmenuScope) {\n return\n }\n\n return parentSubmenuScope.register({\n id: contentId,\n closeBranch: () => submenuCallbacks.current.closeFromPointer(),\n isPointerProtected: pointerIntent.isProtected,\n open: (viaKeyboard) => submenuCallbacks.current.openFromParent(viaKeyboard),\n })\n }, [contentId, isSubmenu, parentSubmenuScope, pointerIntent.isProtected])\n\n // /////////////////////////////////////\n // Position Calculation\n //\n // Calculates and applies popup position relative to trigger.\n // Always checks viewport bounds (for flipping), but only updates\n // styles if the calculated position differs from current position.\n // /////////////////////////////////////\n\n const updatePosition = useEffectEvent(() => {\n const trigger = triggerRef.current\n const popup = popupRef.current\n if (!trigger || !popup) {\n return\n }\n\n const triggerRect = trigger.getBoundingClientRect()\n const popupRect = popup.getBoundingClientRect()\n\n // Gap between the popup and the trigger/viewport edges (in pixels)\n const offset = 8\n // Additional gap used in side mode so the child popup has breathing room from its parent\n const sideOffset = 4\n\n let top: number\n let left: number\n let caretLeft: number\n\n if (resolvedSide) {\n // /////////////////////////////////////\n // Side Positioning\n // Places the popup to the left or right of the parent popup (not just the trigger),\n // top-aligned with the trigger. Flips to the opposite side if there is not enough\n // viewport space.\n // /////////////////////////////////////\n\n const scrollContainer = popup.querySelector<HTMLElement>(\n `:scope > .${baseClass}__scroll-container`,\n )\n const popupPaddingTop = scrollContainer\n ? Number.parseFloat(window.getComputedStyle(scrollContainer).paddingTop) || 0\n : 0\n\n // Align the first menu item with the trigger by accounting for the popup's top padding.\n top = triggerRect.top - popupPaddingTop\n const maxTop = window.innerHeight - popupRect.height - offset\n top = Math.max(offset, Math.min(top, maxTop))\n\n // Use the parent popup's bounding rect as the reference for left/right positioning\n // so the child appears 4px from the parent popup edge, not just the trigger button.\n const anchorRect = parentPopup?.popupRef.current\n ? parentPopup.popupRef.current.getBoundingClientRect()\n : triggerRect\n\n if (resolvedSide === 'left') {\n left = anchorRect.left - popupRect.width - sideOffset\n if (left < offset) {\n // flip to right side\n left = anchorRect.right + sideOffset\n }\n } else {\n left = anchorRect.right + sideOffset\n if (left + popupRect.width + offset > window.innerWidth) {\n // flip to left side\n left = anchorRect.left - popupRect.width - sideOffset\n }\n }\n\n left = Math.max(\n offset,\n Math.min(left, Math.max(offset, window.innerWidth - popupRect.width - offset)),\n )\n\n // Caret not used in side mode; set a neutral value\n caretLeft = popupRect.width / 2\n\n setIsOnTop(false)\n } else {\n // /////////////////////////////////////\n // Vertical Positioning\n // Calculates the `top` position in absolute page coordinates.\n // Uses `verticalAlign` prop as the preferred direction, but flips\n // to the opposite side if there's not enough viewport space.\n // /////////////////////////////////////\n\n let onTop = verticalAlign === 'top'\n\n if (verticalAlign === 'bottom') {\n top = triggerRect.bottom + offset\n\n if (triggerRect.bottom + popupRect.height + offset > window.innerHeight) {\n // Try to flip above — only do so if there's actually enough room\n const topIfAbove = triggerRect.top - popupRect.height - offset\n if (topIfAbove >= 0) {\n top = topIfAbove\n onTop = true\n }\n // else: not enough room above either — keep below and let it overflow rather than going off-screen\n }\n } else {\n top = triggerRect.top - popupRect.height - offset\n\n if (triggerRect.top - popupRect.height - offset < 0) {\n top = triggerRect.bottom + offset\n onTop = false\n }\n }\n\n const maxTop = Math.max(offset, window.innerHeight - popupRect.height - offset)\n top = Math.max(offset, Math.min(top, maxTop))\n\n setIsOnTop(onTop)\n\n // /////////////////////////////////////\n // Horizontal Positioning\n // Calculates the `left` position based on `horizontalAlign` prop:\n // - 'left': aligns popup's left edge with trigger's left edge\n // - 'right': aligns popup's right edge with trigger's right edge\n // - 'center': centers popup horizontally relative to trigger\n // Then clamps to keep the popup within viewport bounds.\n // /////////////////////////////////////\n\n left =\n horizontalAlign === 'right'\n ? triggerRect.right - popupRect.width\n : horizontalAlign === 'center'\n ? triggerRect.left + triggerRect.width / 2 - popupRect.width / 2\n : triggerRect.left\n\n left = Math.max(offset, Math.min(left, window.innerWidth - popupRect.width - offset))\n\n // /////////////////////////////////////\n // Caret Positioning\n // Positions the caret arrow to point at the trigger's horizontal center.\n // Clamps between 12px from edges to prevent caret from overflowing the popup.\n // /////////////////////////////////////\n\n const triggerCenter = triggerRect.left + triggerRect.width / 2\n caretLeft = Math.max(12, Math.min(triggerCenter - left, popupRect.width - 12))\n }\n\n // /////////////////////////////////////\n // Apply Styles (only if changed)\n // Compares calculated position with current styles to avoid unnecessary\n // DOM updates during scroll. This prevents visual lag by relying on the absolute\n // positioning where possible (popup slightly lags behind when scrolling really fast),\n // while still allowing position changes when needed (e.g., sticky parent, viewport flip).\n // Values are rounded to match browser's CSS precision and avoid false updates.\n // /////////////////////////////////////\n\n const newTop = `${Math.round(top)}px`\n const newLeft = `${Math.round(left)}px`\n const newCaretLeft = `${Math.round(caretLeft)}px`\n const newPosition = 'fixed'\n\n if (popup.style.position !== newPosition) {\n popup.style.position = newPosition\n }\n if (popup.style.top !== newTop) {\n popup.style.top = newTop\n }\n if (popup.style.left !== newLeft) {\n popup.style.left = newLeft\n }\n if (popup.style.getPropertyValue('--caret-left') !== newCaretLeft) {\n popup.style.setProperty('--caret-left', newCaretLeft)\n }\n pointerIntent.updateSafeArea()\n })\n\n // /////////////////////////////////////\n // Click Outside Handler\n // Closes popup when clicking outside both the popup and trigger.\n // Distinguishes between parent and child popups:\n // - Click in child popup: parent stays open\n // - Click in parent popup: child closes\n // /////////////////////////////////////\n\n const handleClickOutside = useEffectEvent((e: MouseEvent) => {\n const target = e.target as Node\n const isOutsidePopup = !popupRef.current?.contains(target)\n const isOutsideTrigger = !triggerRef.current?.contains(target)\n\n // Check if click is inside a popup portal\n const clickedPopupContent = (target as Element).closest?.('.popup__content')\n\n // If the clicked popup contains this popup's trigger, it's a parent popup\n // and we should close. If it doesn't contain our trigger, it's a child popup\n // and we should stay open to avoid closing parent when interacting with child.\n const isInsideChildPopup =\n clickedPopupContent && !clickedPopupContent.contains(triggerRef.current)\n\n if (isOutsidePopup && isOutsideTrigger && !isInsideChildPopup) {\n setActive(false)\n }\n })\n\n // /////////////////////////////////////\n // Keyboard Navigation\n // Handles keyboard interactions when popup is open:\n // - Escape: closes popup and returns focus to trigger\n // - Tab/Shift+Tab: closes menus; dialogs retain normal document tab order\n // - ArrowUp/ArrowDown: moves between menu items with wrapping\n // Focus is managed manually to support elements the browser might skip.\n // /////////////////////////////////////\n\n const handleKeyDown = useEffectEvent((e: KeyboardEvent) => {\n const popup = popupRef.current\n if (!popup || !active) {\n return\n }\n\n const activePopup = document.activeElement?.closest(`.${baseClass}__content`)\n if (activePopup && activePopup !== popup) {\n return\n }\n\n if (e.key === 'Escape') {\n e.preventDefault()\n e.stopPropagation()\n closePopup()\n return\n }\n\n if (e.key === 'ArrowRight' && popupRole === 'menu') {\n const trigger = (document.activeElement as HTMLElement | null)?.closest<HTMLElement>(\n `.${baseClass}__trigger-wrap`,\n )\n const nestedTrigger = trigger?.querySelector<HTMLElement>('button, [role=\"menuitem\"]')\n if (nestedTrigger) {\n e.preventDefault()\n nestedTrigger.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true, key: 'Enter' }))\n return\n }\n }\n\n if (e.key === 'ArrowLeft' && parentPopup) {\n e.preventDefault()\n closePopup()\n return\n }\n\n if (e.key === 'Tab' && popupRole === 'menu') {\n if (e.shiftKey) {\n e.preventDefault()\n closePopupChain({ restoreFocus: true })\n return\n }\n\n setTimeout(closePopupChain)\n return\n }\n\n if (['ArrowDown', 'ArrowUp', 'End', 'Home'].includes(e.key)) {\n const menuItems = getMenuItems(popup)\n if (menuItems.length > 0) {\n e.preventDefault()\n\n const currentIndex = menuItems.findIndex((item) => item === document.activeElement)\n const nextIndex =\n e.key === 'Home'\n ? 0\n : e.key === 'End'\n ? menuItems.length - 1\n : e.key === 'ArrowUp'\n ? currentIndex <= 0\n ? menuItems.length - 1\n : currentIndex - 1\n : currentIndex === -1 || currentIndex === menuItems.length - 1\n ? 0\n : currentIndex + 1\n\n menuItems.forEach((item, index) =>\n item.setAttribute('tabindex', index === nextIndex ? '0' : '-1'),\n )\n menuItems[nextIndex].focus()\n return\n }\n }\n\n if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {\n const focusable = Array.from(popup.querySelectorAll<HTMLElement>(TABBABLE_SELECTOR))\n if (focusable.length === 0) {\n return\n }\n\n e.preventDefault()\n\n const currentIndex = focusable.findIndex((el) => el === document.activeElement)\n const goBackward = e.key === 'ArrowUp'\n\n let nextIndex: number\n if (currentIndex === -1) {\n nextIndex = goBackward ? focusable.length - 1 : 0\n } else if (goBackward) {\n nextIndex = currentIndex === 0 ? focusable.length - 1 : currentIndex - 1\n } else {\n nextIndex = currentIndex === focusable.length - 1 ? 0 : currentIndex + 1\n }\n\n focusable[nextIndex].focus()\n }\n })\n\n // /////////////////////////////////////\n // Click Handler for Actionable Elements\n // Closes popup when buttons/links inside are clicked (includes Enter/Space activation).\n // /////////////////////////////////////\n\n const handleActionableClick = useEffectEvent((e: MouseEvent) => {\n const target = e.target as HTMLElement\n\n // Allow opting out with data-popup-prevent-close attribute on element or ancestor\n if (target.closest('[data-popup-prevent-close]')) {\n return\n }\n\n // Check if the clicked element or any ancestor is an actionable element\n const actionable = target.closest('button, a[href], [role=\"button\"], [role=\"menuitem\"]')\n if (actionable && popupRef.current?.contains(actionable)) {\n if (actionable.closest(`.${baseClass}__content`) !== popupRef.current) {\n return\n }\n // Don't close if clicking a nested popup's trigger — it will manage its own open state\n if (actionable.closest(`.${baseClass}__trigger-wrap`)) {\n return\n }\n closePopup()\n }\n })\n\n // /////////////////////////////////////\n // Effect: Setup/Teardown position and focus management\n // /////////////////////////////////////\n\n useEffect(() => {\n if (!active) {\n const popup = popupRef.current\n if (popup) {\n // Clear inline position styles so the CSS `top: -9999px` rule on\n // `.popup__hidden-content` takes effect. Without this, the inline\n // styles set during positioning would win over the CSS rule, keeping\n // portaled children (e.g. a ReactSelect menu) visually on-screen.\n popup.style.position = ''\n popup.style.top = ''\n popup.style.left = ''\n }\n return\n }\n\n const popup = popupRef.current\n if (!popup) {\n return\n }\n\n if (!popup.matches(':popover-open')) {\n popup.showPopover()\n }\n\n const menuItems = getMenuItems(popup)\n menuItems.forEach((item, index) => item.setAttribute('tabindex', index === 0 ? '0' : '-1'))\n\n // /////////////////////////////////////\n // Initial Position\n // Calculate and apply popup position.\n // getBoundingClientRect() forces synchronous layout.\n //\n // We call updatePosition() twice: once synchronously (so the popup\n // snaps to roughly the right place immediately rather than flashing\n // from -9999px) and once in a requestAnimationFrame, which fires\n // after the browser has finished laying out the newly-visible popup\n // content. The rAF call is the authoritative one — it catches cases\n // where the popup height wasn't stable yet during the first call\n // (e.g. ColumnSelection popup content rendering after hidden → visible\n // class switch), which was causing incorrect flip-to-top decisions.\n // /////////////////////////////////////\n\n updatePosition()\n const rafId = requestAnimationFrame(() => {\n updatePosition()\n })\n\n // /////////////////////////////////////\n // Focus Management\n // When opened via keyboard, autofocus the first focusable button.\n // When opened via mouse, skip autofocus to avoid unwanted highlights.\n // /////////////////////////////////////\n\n if (openedViaKeyboardRef.current) {\n // Use requestAnimationFrame to ensure DOM is ready.\n requestAnimationFrame(() => {\n const firstFocusable = menuItems[0] ?? popup.querySelector<HTMLElement>(TABBABLE_SELECTOR)\n firstFocusable?.focus()\n })\n }\n\n // /////////////////////////////////////\n // Event Listeners\n // - resize/scroll: recalculate position (only applies styles if changed)\n // - mousedown: detect clicks outside to close\n // - keydown: handle keyboard navigation\n // /////////////////////////////////////\n\n window.addEventListener('resize', updatePosition)\n window.addEventListener('scroll', updatePosition, { capture: true, passive: true })\n document.addEventListener('mousedown', handleClickOutside)\n popup.addEventListener('keydown', handleKeyDown)\n popup.addEventListener('click', handleActionableClick)\n\n return () => {\n cancelAnimationFrame(rafId)\n window.removeEventListener('resize', updatePosition)\n window.removeEventListener('scroll', updatePosition, { capture: true })\n document.removeEventListener('mousedown', handleClickOutside)\n popup.removeEventListener('keydown', handleKeyDown)\n popup.removeEventListener('click', handleActionableClick)\n if (popup.matches(':popover-open')) {\n popup.hidePopover()\n }\n }\n }, [active])\n\n useEffect(() => {\n if (forceOpen !== undefined) {\n setActive(forceOpen)\n }\n }, [forceOpen, setActive])\n\n const Trigger = (\n <PopupTrigger\n active={active}\n button={button}\n buttonAriaLabel={buttonAriaLabel}\n buttonType={buttonType}\n className={buttonClassName}\n contentId={contentId}\n disabled={disabled}\n isMenuItem={parentPopup?.popupRole === 'menu'}\n noBackground={noBackground}\n popupType={popupType}\n renderButton={renderButton}\n setActive={setActive}\n size={buttonSize}\n />\n )\n\n return (\n <div className={[baseClass, className].filter(Boolean).join(' ')} id={id} ref={containerRef}>\n <div className={`${baseClass}__trigger-wrap`} ref={triggerRef}>\n {showOnHover ? (\n <div\n className={`${baseClass}__on-hover-watch`}\n onMouseEnter={() => setActive(true)}\n onMouseLeave={() => setActive(false)}\n role=\"button\"\n tabIndex={0}\n >\n {Trigger}\n </div>\n ) : hoverSubmenu && isSubmenu ? (\n <div {...pointerIntent.triggerProps} className={`${baseClass}__submenu-hover-watch`}>\n {Trigger}\n </div>\n ) : (\n Trigger\n )}\n </div>\n\n <PopupContext value={{ closePopupChain, popupRef, popupRole, submenuScope }}>\n <div\n {...pointerIntent.contentProps}\n aria-label={popupAriaLabel}\n className={\n active\n ? [\n `${baseClass}__content`,\n `${baseClass}--size-${size}`,\n resolvedSide\n ? `${baseClass}--side-${resolvedSide}`\n : isOnTop\n ? `${baseClass}--v-top`\n : `${baseClass}--v-bottom`,\n portalClassName,\n ]\n .filter(Boolean)\n .join(' ')\n : // Do not share any class names between active and disabled popups, to make sure\n // tests do not accidentally target inactive popups.\n `${baseClass}__hidden-content`\n }\n data-popup-id={id || undefined}\n data-theme={theme === 'auto' ? undefined : theme}\n id={contentId}\n popover=\"manual\"\n ref={popupRef}\n role={popupRole}\n >\n <div\n className={`${baseClass}__scroll-container${showScrollbar ? ` ${baseClass}__scroll-container--show-scrollbar` : ''}`}\n >\n {theme === 'auto' ? (\n <>\n {render?.({ close })}\n {children}\n </>\n ) : (\n <ThemeProvider theme={theme}>\n {render?.({ close })}\n {children}\n </ThemeProvider>\n )}\n </div>\n {caret && !resolvedSide && <div className={`${baseClass}__caret`} />}\n </div>\n </PopupContext>\n </div>\n )\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,13 +1,25 @@
1
- import type { MouseEvent, RefObject } from 'react';
1
+ import type { PointerEvent, RefObject } from 'react';
2
+ import type { PointerPosition } from '../../hooks/usePointerSafeArea.js';
2
3
  type UseSubmenuPointerIntentArgs = {
4
+ active: boolean;
3
5
  contentRef: RefObject<HTMLElement | null>;
4
6
  enabled: boolean;
5
7
  onClose: () => void;
6
8
  onOpen: () => void;
9
+ onSafeAreaExpire: (pointer: PointerPosition) => void;
10
+ triggerRef: RefObject<HTMLElement | null>;
7
11
  };
8
- export declare const useSubmenuPointerIntent: ({ contentRef, enabled, onClose, onOpen, }: UseSubmenuPointerIntentArgs) => {
9
- onMouseEnter: () => void;
10
- onMouseLeave: (event: MouseEvent) => void;
12
+ export declare const useSubmenuPointerIntent: ({ active, contentRef, enabled, onClose, onOpen, onSafeAreaExpire, triggerRef, }: UseSubmenuPointerIntentArgs) => {
13
+ contentProps: {
14
+ onPointerEnter: (event: PointerEvent) => void;
15
+ onPointerLeave: (event: PointerEvent) => void;
16
+ };
17
+ isProtected: () => boolean;
18
+ triggerProps: {
19
+ onPointerEnter: (event: PointerEvent) => void;
20
+ onPointerLeave: (event: PointerEvent) => void;
21
+ };
22
+ updateSafeArea: () => boolean;
11
23
  };
12
24
  export {};
13
25
  //# sourceMappingURL=useSubmenuPointerIntent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSubmenuPointerIntent.d.ts","sourceRoot":"","sources":["../../../src/elements/Popup/useSubmenuPointerIntent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAIlD,KAAK,2BAA2B,GAAG;IACjC,UAAU,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;IACzC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,uBAAuB,8CAKjC,2BAA2B;IAwC1B,YAAY;IACZ,YAAY,UAzBJ,UAAU;CA2BrB,CAAA"}
1
+ {"version":3,"file":"useSubmenuPointerIntent.d.ts","sourceRoot":"","sources":["../../../src/elements/Popup/useSubmenuPointerIntent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAIpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAA;AAIxE,KAAK,2BAA2B,GAAG;IACjC,MAAM,EAAE,OAAO,CAAA;IACf,UAAU,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;IACzC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,MAAM,EAAE,MAAM,IAAI,CAAA;IAClB,gBAAgB,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAA;IACpD,UAAU,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;CAC1C,CAAA;AAED,eAAO,MAAM,uBAAuB,oFAQjC,2BAA2B;IAuD1B,YAAY;QACV,cAAc,UA/BU,YAAY;QAgCpC,cAAc,UAlBU,YAAY;;IAoBtC,WAAW;IACX,YAAY;QACV,cAAc;QACd,cAAc;;IAEhB,cAAc;CAEjB,CAAA"}
@@ -1,42 +1,83 @@
1
- import { useCallback, useEffect, useRef } from 'react';
1
+ import { useCallback } from 'react';
2
+ import { usePointerSafeArea } from '../../hooks/usePointerSafeArea.js';
2
3
  export const useSubmenuPointerIntent = ({
4
+ active,
3
5
  contentRef,
4
6
  enabled,
5
7
  onClose,
6
- onOpen
8
+ onOpen,
9
+ onSafeAreaExpire,
10
+ triggerRef
7
11
  }) => {
8
- const closeTimer = useRef(undefined);
9
- const cancelClose = useCallback(() => {
10
- if (closeTimer.current) {
11
- clearTimeout(closeTimer.current);
12
- closeTimer.current = undefined;
12
+ const renderSafeArea = useCallback(({
13
+ polygon
14
+ }) => {
15
+ const content = contentRef.current;
16
+ if (polygon) {
17
+ content?.style.setProperty('--popup-safe-area', polygon);
18
+ content?.setAttribute('data-submenu-safe-area', '');
19
+ } else {
20
+ content?.style.removeProperty('--popup-safe-area');
21
+ content?.removeAttribute('data-submenu-safe-area');
22
+ }
23
+ }, [contentRef]);
24
+ const safeArea = usePointerSafeArea({
25
+ enabled: enabled && active,
26
+ from: triggerRef,
27
+ onChange: renderSafeArea,
28
+ onRelease: onSafeAreaExpire,
29
+ to: contentRef
30
+ });
31
+ const {
32
+ clear,
33
+ protect,
34
+ trackSource,
35
+ trackTarget
36
+ } = safeArea;
37
+ const handleEnter = event => {
38
+ if (event.pointerType !== 'mouse') {
39
+ return;
40
+ }
41
+ const pointer = {
42
+ x: event.clientX,
43
+ y: event.clientY
44
+ };
45
+ if (event.currentTarget === contentRef.current) {
46
+ trackTarget(pointer);
47
+ } else {
48
+ trackSource(pointer);
49
+ onOpen();
50
+ }
51
+ };
52
+ const handleLeave = event => {
53
+ if (event.pointerType !== 'mouse' || !active || !safeArea.isTracking()) {
54
+ return;
13
55
  }
14
- }, []);
15
- const handleEnter = useCallback(() => {
16
- cancelClose();
17
- onOpen();
18
- }, [cancelClose, onOpen]);
19
- const handleLeave = useCallback(event => {
20
56
  const target = event.relatedTarget;
21
- if (target && contentRef.current?.contains(target)) {
22
- cancelClose();
57
+ if (target && (contentRef.current?.contains(target) || triggerRef.current?.contains(target))) {
23
58
  return;
24
59
  }
25
- cancelClose();
26
- closeTimer.current = setTimeout(() => {
27
- closeTimer.current = undefined;
60
+ if (!protect({
61
+ pointer: {
62
+ x: event.clientX,
63
+ y: event.clientY
64
+ }
65
+ })) {
66
+ clear();
28
67
  onClose();
29
- }, 250);
30
- }, [cancelClose, contentRef, onClose]);
31
- useEffect(() => {
32
- if (!enabled) {
33
- cancelClose();
34
68
  }
35
- return cancelClose;
36
- }, [cancelClose, enabled]);
69
+ };
37
70
  return {
38
- onMouseEnter: enabled ? handleEnter : undefined,
39
- onMouseLeave: enabled ? handleLeave : undefined
71
+ contentProps: {
72
+ onPointerEnter: enabled ? handleEnter : undefined,
73
+ onPointerLeave: enabled ? handleLeave : undefined
74
+ },
75
+ isProtected: safeArea.isProtected,
76
+ triggerProps: {
77
+ onPointerEnter: enabled ? handleEnter : undefined,
78
+ onPointerLeave: enabled ? handleLeave : undefined
79
+ },
80
+ updateSafeArea: safeArea.refresh
40
81
  };
41
82
  };
42
83
  //# sourceMappingURL=useSubmenuPointerIntent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSubmenuPointerIntent.js","names":["useCallback","useEffect","useRef","useSubmenuPointerIntent","contentRef","enabled","onClose","onOpen","closeTimer","undefined","cancelClose","current","clearTimeout","handleEnter","handleLeave","event","target","relatedTarget","contains","setTimeout","onMouseEnter","onMouseLeave"],"sources":["../../../src/elements/Popup/useSubmenuPointerIntent.ts"],"sourcesContent":["import type { MouseEvent, RefObject } from 'react'\n\nimport { useCallback, useEffect, useRef } from 'react'\n\ntype UseSubmenuPointerIntentArgs = {\n contentRef: RefObject<HTMLElement | null>\n enabled: boolean\n onClose: () => void\n onOpen: () => void\n}\n\nexport const useSubmenuPointerIntent = ({\n contentRef,\n enabled,\n onClose,\n onOpen,\n}: UseSubmenuPointerIntentArgs) => {\n const closeTimer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined)\n\n const cancelClose = useCallback(() => {\n if (closeTimer.current) {\n clearTimeout(closeTimer.current)\n closeTimer.current = undefined\n }\n }, [])\n\n const handleEnter = useCallback(() => {\n cancelClose()\n onOpen()\n }, [cancelClose, onOpen])\n\n const handleLeave = useCallback(\n (event: MouseEvent) => {\n const target = event.relatedTarget as Node | null\n if (target && contentRef.current?.contains(target)) {\n cancelClose()\n return\n }\n\n cancelClose()\n closeTimer.current = setTimeout(() => {\n closeTimer.current = undefined\n onClose()\n }, 250)\n },\n [cancelClose, contentRef, onClose],\n )\n\n useEffect(() => {\n if (!enabled) {\n cancelClose()\n }\n return cancelClose\n }, [cancelClose, enabled])\n\n return {\n onMouseEnter: enabled ? handleEnter : undefined,\n onMouseLeave: enabled ? handleLeave : undefined,\n }\n}\n"],"mappings":"AAEA,SAASA,WAAW,EAAEC,SAAS,EAAEC,MAAM,QAAQ;AAS/C,OAAO,MAAMC,uBAAA,GAA0BA,CAAC;EACtCC,UAAU;EACVC,OAAO;EACPC,OAAO;EACPC;AAAM,CACsB;EAC5B,MAAMC,UAAA,GAAaN,MAAA,CAAkDO,SAAA;EAErE,MAAMC,WAAA,GAAcV,WAAA,CAAY;IAC9B,IAAIQ,UAAA,CAAWG,OAAO,EAAE;MACtBC,YAAA,CAAaJ,UAAA,CAAWG,OAAO;MAC/BH,UAAA,CAAWG,OAAO,GAAGF,SAAA;IACvB;EACF,GAAG,EAAE;EAEL,MAAMI,WAAA,GAAcb,WAAA,CAAY;IAC9BU,WAAA;IACAH,MAAA;EACF,GAAG,CAACG,WAAA,EAAaH,MAAA,CAAO;EAExB,MAAMO,WAAA,GAAcd,WAAA,CACjBe,KAAA;IACC,MAAMC,MAAA,GAASD,KAAA,CAAME,aAAa;IAClC,IAAID,MAAA,IAAUZ,UAAA,CAAWO,OAAO,EAAEO,QAAA,CAASF,MAAA,GAAS;MAClDN,WAAA;MACA;IACF;IAEAA,WAAA;IACAF,UAAA,CAAWG,OAAO,GAAGQ,UAAA,CAAW;MAC9BX,UAAA,CAAWG,OAAO,GAAGF,SAAA;MACrBH,OAAA;IACF,GAAG;EACL,GACA,CAACI,WAAA,EAAaN,UAAA,EAAYE,OAAA,CAAQ;EAGpCL,SAAA,CAAU;IACR,IAAI,CAACI,OAAA,EAAS;MACZK,WAAA;IACF;IACA,OAAOA,WAAA;EACT,GAAG,CAACA,WAAA,EAAaL,OAAA,CAAQ;EAEzB,OAAO;IACLe,YAAA,EAAcf,OAAA,GAAUQ,WAAA,GAAcJ,SAAA;IACtCY,YAAA,EAAchB,OAAA,GAAUS,WAAA,GAAcL;EACxC;AACF","ignoreList":[]}
1
+ {"version":3,"file":"useSubmenuPointerIntent.js","names":["useCallback","usePointerSafeArea","useSubmenuPointerIntent","active","contentRef","enabled","onClose","onOpen","onSafeAreaExpire","triggerRef","renderSafeArea","polygon","content","current","style","setProperty","setAttribute","removeProperty","removeAttribute","safeArea","from","onChange","onRelease","to","clear","protect","trackSource","trackTarget","handleEnter","event","pointerType","pointer","x","clientX","y","clientY","currentTarget","handleLeave","isTracking","target","relatedTarget","contains","contentProps","onPointerEnter","undefined","onPointerLeave","isProtected","triggerProps","updateSafeArea","refresh"],"sources":["../../../src/elements/Popup/useSubmenuPointerIntent.ts"],"sourcesContent":["import type { PointerEvent, RefObject } from 'react'\n\nimport { useCallback } from 'react'\n\nimport type { PointerPosition } from '../../hooks/usePointerSafeArea.js'\n\nimport { usePointerSafeArea } from '../../hooks/usePointerSafeArea.js'\n\ntype UseSubmenuPointerIntentArgs = {\n active: boolean\n contentRef: RefObject<HTMLElement | null>\n enabled: boolean\n onClose: () => void\n onOpen: () => void\n onSafeAreaExpire: (pointer: PointerPosition) => void\n triggerRef: RefObject<HTMLElement | null>\n}\n\nexport const useSubmenuPointerIntent = ({\n active,\n contentRef,\n enabled,\n onClose,\n onOpen,\n onSafeAreaExpire,\n triggerRef,\n}: UseSubmenuPointerIntentArgs) => {\n const renderSafeArea = useCallback(\n ({ polygon }: { polygon: null | string }) => {\n const content = contentRef.current\n\n if (polygon) {\n content?.style.setProperty('--popup-safe-area', polygon)\n content?.setAttribute('data-submenu-safe-area', '')\n } else {\n content?.style.removeProperty('--popup-safe-area')\n content?.removeAttribute('data-submenu-safe-area')\n }\n },\n [contentRef],\n )\n\n const safeArea = usePointerSafeArea({\n enabled: enabled && active,\n from: triggerRef,\n onChange: renderSafeArea,\n onRelease: onSafeAreaExpire,\n to: contentRef,\n })\n const { clear, protect, trackSource, trackTarget } = safeArea\n\n const handleEnter = (event: PointerEvent) => {\n if (event.pointerType !== 'mouse') {\n return\n }\n const pointer = { x: event.clientX, y: event.clientY }\n\n if (event.currentTarget === contentRef.current) {\n trackTarget(pointer)\n } else {\n trackSource(pointer)\n onOpen()\n }\n }\n\n const handleLeave = (event: PointerEvent) => {\n if (event.pointerType !== 'mouse' || !active || !safeArea.isTracking()) {\n return\n }\n const target = event.relatedTarget as Node | null\n\n if (target && (contentRef.current?.contains(target) || triggerRef.current?.contains(target))) {\n return\n }\n if (!protect({ pointer: { x: event.clientX, y: event.clientY } })) {\n clear()\n onClose()\n }\n }\n\n return {\n contentProps: {\n onPointerEnter: enabled ? handleEnter : undefined,\n onPointerLeave: enabled ? handleLeave : undefined,\n },\n isProtected: safeArea.isProtected,\n triggerProps: {\n onPointerEnter: enabled ? handleEnter : undefined,\n onPointerLeave: enabled ? handleLeave : undefined,\n },\n updateSafeArea: safeArea.refresh,\n }\n}\n"],"mappings":"AAEA,SAASA,WAAW,QAAQ;AAI5B,SAASC,kBAAkB,QAAQ;AAYnC,OAAO,MAAMC,uBAAA,GAA0BA,CAAC;EACtCC,MAAM;EACNC,UAAU;EACVC,OAAO;EACPC,OAAO;EACPC,MAAM;EACNC,gBAAgB;EAChBC;AAAU,CACkB;EAC5B,MAAMC,cAAA,GAAiBV,WAAA,CACrB,CAAC;IAAEW;EAAO,CAA8B;IACtC,MAAMC,OAAA,GAAUR,UAAA,CAAWS,OAAO;IAElC,IAAIF,OAAA,EAAS;MACXC,OAAA,EAASE,KAAA,CAAMC,WAAA,CAAY,qBAAqBJ,OAAA;MAChDC,OAAA,EAASI,YAAA,CAAa,0BAA0B;IAClD,OAAO;MACLJ,OAAA,EAASE,KAAA,CAAMG,cAAA,CAAe;MAC9BL,OAAA,EAASM,eAAA,CAAgB;IAC3B;EACF,GACA,CAACd,UAAA,CAAW;EAGd,MAAMe,QAAA,GAAWlB,kBAAA,CAAmB;IAClCI,OAAA,EAASA,OAAA,IAAWF,MAAA;IACpBiB,IAAA,EAAMX,UAAA;IACNY,QAAA,EAAUX,cAAA;IACVY,SAAA,EAAWd,gBAAA;IACXe,EAAA,EAAInB;EACN;EACA,MAAM;IAAEoB,KAAK;IAAEC,OAAO;IAAEC,WAAW;IAAEC;EAAW,CAAE,GAAGR,QAAA;EAErD,MAAMS,WAAA,GAAeC,KAAA;IACnB,IAAIA,KAAA,CAAMC,WAAW,KAAK,SAAS;MACjC;IACF;IACA,MAAMC,OAAA,GAAU;MAAEC,CAAA,EAAGH,KAAA,CAAMI,OAAO;MAAEC,CAAA,EAAGL,KAAA,CAAMM;IAAQ;IAErD,IAAIN,KAAA,CAAMO,aAAa,KAAKhC,UAAA,CAAWS,OAAO,EAAE;MAC9Cc,WAAA,CAAYI,OAAA;IACd,OAAO;MACLL,WAAA,CAAYK,OAAA;MACZxB,MAAA;IACF;EACF;EAEA,MAAM8B,WAAA,GAAeR,KAAA;IACnB,IAAIA,KAAA,CAAMC,WAAW,KAAK,WAAW,CAAC3B,MAAA,IAAU,CAACgB,QAAA,CAASmB,UAAU,IAAI;MACtE;IACF;IACA,MAAMC,MAAA,GAASV,KAAA,CAAMW,aAAa;IAElC,IAAID,MAAA,KAAWnC,UAAA,CAAWS,OAAO,EAAE4B,QAAA,CAASF,MAAA,KAAW9B,UAAA,CAAWI,OAAO,EAAE4B,QAAA,CAASF,MAAA,CAAM,GAAI;MAC5F;IACF;IACA,IAAI,CAACd,OAAA,CAAQ;MAAEM,OAAA,EAAS;QAAEC,CAAA,EAAGH,KAAA,CAAMI,OAAO;QAAEC,CAAA,EAAGL,KAAA,CAAMM;MAAQ;IAAE,IAAI;MACjEX,KAAA;MACAlB,OAAA;IACF;EACF;EAEA,OAAO;IACLoC,YAAA,EAAc;MACZC,cAAA,EAAgBtC,OAAA,GAAUuB,WAAA,GAAcgB,SAAA;MACxCC,cAAA,EAAgBxC,OAAA,GAAUgC,WAAA,GAAcO;IAC1C;IACAE,WAAA,EAAa3B,QAAA,CAAS2B,WAAW;IACjCC,YAAA,EAAc;MACZJ,cAAA,EAAgBtC,OAAA,GAAUuB,WAAA,GAAcgB,SAAA;MACxCC,cAAA,EAAgBxC,OAAA,GAAUgC,WAAA,GAAcO;IAC1C;IACAI,cAAA,EAAgB7B,QAAA,CAAS8B;EAC3B;AACF","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["c","_c","React","useCallback","useState","LinkIcon","usePreviewURL","useTranslation","Button","Tooltip","PreviewButton","$","previewURL","t","copied","setCopied","hovered","setHovered","t0","event","metaKey","ctrlKey","window","open","navigator","clipboard","writeText","handleClick","t1","label","t2","t3","Symbol","for","_jsxs","onPointerEnter","onPointerLeave","style","position","children","_jsx","buttonStyle","icon","size","onClick","delay","id","show"],"sources":["../../../src/elements/PreviewButton/index.tsx"],"sourcesContent":["'use client'\nimport React, { useCallback, useState } from 'react'\n\nimport { LinkIcon } from '../../icons/Link/index.js'\nimport { usePreviewURL } from '../../providers/LivePreview/context.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { Tooltip } from '../Tooltip/index.js'\n\nexport function PreviewButton() {\n const { previewURL } = usePreviewURL()\n const { t } = useTranslation()\n const [copied, setCopied] = useState(false)\n const [hovered, setHovered] = useState(false)\n\n const handleClick = useCallback(\n async (event: React.MouseEvent<HTMLButtonElement>) => {\n if (!previewURL) {\n return\n }\n\n if (event.metaKey || event.ctrlKey) {\n window.open(previewURL, '_blank', 'noopener,noreferrer')\n return\n }\n\n await navigator.clipboard.writeText(previewURL)\n setCopied(true)\n },\n [previewURL],\n )\n\n if (!previewURL) {\n return null\n }\n\n const label = copied ? t('general:copied') : t('general:copy')\n\n return (\n <span\n onPointerEnter={() => {\n setHovered(true)\n setCopied(false)\n }}\n onPointerLeave={() => {\n setHovered(false)\n setCopied(false)\n }}\n style={{ position: 'relative' }}\n >\n <Button\n buttonStyle=\"ghost\"\n icon={<LinkIcon size={24} />}\n id=\"preview-button\"\n onClick={handleClick}\n />\n <Tooltip delay={0} id=\"preview-button-tooltip\" show={hovered || copied}>\n {label}\n </Tooltip>\n </span>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,OAAOC,KAAA,IAASC,WAAW,EAAEC,QAAQ,QAAQ;AAE7C,SAASC,QAAQ,QAAQ;AACzB,SAASC,aAAa,QAAQ;AAC9B,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,SAASC,OAAO,QAAQ;AAExB,OAAO,SAAAC,cAAA;EAAA,MAAAC,CAAA,GAAAV,EAAA;EACL;IAAAW;EAAA,IAAuBN,aAAA;EACvB;IAAAO;EAAA,IAAcN,cAAA;EACd,OAAAO,MAAA,EAAAC,SAAA,IAA4BX,QAAA,MAAS;EACrC,OAAAY,OAAA,EAAAC,UAAA,IAA8Bb,QAAA,MAAS;EAAA,IAAAc,EAAA;EAAA,IAAAP,CAAA,QAAAC,UAAA;IAGrCM,EAAA,SAAAC,KAAA;MAAA,KACOP,UAAA;QAAA;MAAA;MAAA,IAIDO,KAAA,CAAAC,OAAA,IAAiBD,KAAA,CAAAE,OAAa;QAChCC,MAAA,CAAAC,IAAA,CAAYX,UAAA,EAAY,UAAU;QAAA;MAAA;MAAA,MAI9BY,SAAA,CAAAC,SAAA,CAAAC,SAAA,CAA8Bd,UAAA;MACpCG,SAAA,KAAU;IAAA;IACZJ,CAAA,MAAAC,UAAA;IAAAD,CAAA,MAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EAbF,MAAAgB,WAAA,GAAoBT,EAcN;EAAA,KAGTN,UAAA;IAAA;EAAA;EAAA,IAAAgB,EAAA;EAAA,IAAAjB,CAAA,QAAAG,MAAA,IAAAH,CAAA,QAAAgB,WAAA,IAAAhB,CAAA,QAAAK,OAAA,IAAAL,CAAA,QAAAE,CAAA;IAIL,MAAAgB,KAAA,GAAcf,MAAA,GAASD,CAAA,CAAE,oBAAoBA,CAAA,CAAE;IAAA,IAAAiB,EAAA;IAAA,IAAAC,EAAA;IAAA,IAAApB,CAAA,QAAAqB,MAAA,CAAAC,GAAA;MAI3BH,EAAA,GAAAA,CAAA;QACdb,UAAA,KAAW;QACXF,SAAA,MAAU;MAAA;MAEIgB,EAAA,GAAAA,CAAA;QACdd,UAAA,MAAW;QACXF,SAAA,MAAU;MAAA;MACZJ,CAAA,MAAAmB,EAAA;MAAAnB,CAAA,MAAAoB,EAAA;IAAA;MAAAD,EAAA,GAAAnB,CAAA;MAAAoB,EAAA,GAAApB,CAAA;IAAA;IARFiB,EAAA,GAAAM,KAAA,CAAC;MAAAC,cAAA,EACiBL,EAGhB;MAAAM,cAAA,EACgBL,EAGhB;MAAAM,KAAA;QAAAC,QAAA,EACmB;MAAA;MAAAC,QAAA,GAEnBC,IAAA,CAAAhC,MAAA;QAAAiC,WAAA,EACc;QAAAC,IAAA,EACNF,IAAA,CAAAnC,QAAA;UAAAsC,IAAA;QAAA,C;YACH;QAAAC,OAAA,EACMjB;MAAA,C,GAEXa,IAAA,CAAA/B,OAAA;QAAAoC,KAAA;QAAAC,EAAA,EAAsB;QAAAC,IAAA,EAA+B/B,OAAA,IAAWF,MAAA;QAAAyB,QAAA,EAC7DV;MAAA,C;;;;;;;;;;SAlBLD,E","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["c","_c","React","useCallback","useState","LinkIcon","usePreviewURL","useTranslation","Button","Tooltip","PreviewButton","$","previewURL","t","copied","setCopied","hovered","setHovered","t0","event","metaKey","ctrlKey","window","open","navigator","clipboard","writeText","handleClick","t1","label","t2","t3","Symbol","for","_jsxs","onPointerEnter","onPointerLeave","style","position","children","_jsx","buttonStyle","icon","size","onClick","delay","id","show"],"sources":["../../../src/elements/PreviewButton/index.tsx"],"sourcesContent":["'use client'\nimport React, { useCallback, useState } from 'react'\n\nimport { LinkIcon } from '../../icons/Link/index.js'\nimport { usePreviewURL } from '../../providers/LivePreview/context.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { Button } from '../Button/index.js'\nimport { Tooltip } from '../Tooltip/index.js'\n\nexport function PreviewButton() {\n const { previewURL } = usePreviewURL()\n const { t } = useTranslation()\n const [copied, setCopied] = useState(false)\n const [hovered, setHovered] = useState(false)\n\n const handleClick = useCallback(\n async (event: React.MouseEvent<HTMLButtonElement>) => {\n if (!previewURL) {\n return\n }\n\n if (event.metaKey || event.ctrlKey) {\n window.open(previewURL, '_blank', 'noopener,noreferrer')\n return\n }\n\n await navigator.clipboard.writeText(previewURL)\n setCopied(true)\n },\n [previewURL],\n )\n\n if (!previewURL) {\n return null\n }\n\n const label = copied ? t('general:copied') : t('general:copy')\n\n return (\n <span\n onPointerEnter={() => {\n setHovered(true)\n setCopied(false)\n }}\n onPointerLeave={() => {\n setHovered(false)\n setCopied(false)\n }}\n style={{ position: 'relative' }}\n >\n <Button\n buttonStyle=\"ghost\"\n icon={<LinkIcon size={24} />}\n id=\"preview-button\"\n onClick={handleClick}\n />\n <Tooltip delay={0} id=\"preview-button-tooltip\" show={hovered || copied}>\n {label}\n </Tooltip>\n </span>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,OAAOC,KAAA,IAASC,WAAW,EAAEC,QAAQ,QAAQ;AAE7C,SAASC,QAAQ,QAAQ;AACzB,SAASC,aAAa,QAAQ;AAC9B,SAASC,cAAc,QAAQ;AAC/B,SAASC,MAAM,QAAQ;AACvB,SAASC,OAAO,QAAQ;AAExB,OAAO,SAAAC,cAAA;EAAA,MAAAC,CAAA,GAAAV,EAAA;EACL;IAAAW;EAAA,IAAuBN,aAAA;EACvB;IAAAO;EAAA,IAAcN,cAAA;EACd,OAAAO,MAAA,EAAAC,SAAA,IAA4BX,QAAA,CAAS;EACrC,OAAAY,OAAA,EAAAC,UAAA,IAA8Bb,QAAA,CAAS;EAAA,IAAAc,EAAA;EAAA,IAAAP,CAAA,QAAAC,UAAA;IAGrCM,EAAA,SAAAC,KAAA;MACE,IAAI,CAACP,UAAA;QAAA;MAAA;MAIL,IAAIO,KAAA,CAAAC,OAA8B,IAAbD,KAAA,CAAAE,OAAa;QAChCC,MAAA,CAAAC,IAAW,CAACX,UAAA,EAAY,UAAU;QAAA;MAAA;MAIpC,MAAMY,SAAA,CAAAC,SAAmB,CAAAC,SAAU,CAACd,UAAA;MACpCG,SAAA,CAAU;IAAA,CACZ;IAAAJ,CAAA,MAAAC,UAAA;IAAAD,CAAA,MAAAO,EAAA;EAAA;IAAAA,EAAA,GAAAP,CAAA;EAAA;EAbF,MAAAgB,WAAA,GAAoBT,EAcN;EAGd,IAAI,CAACN,UAAA;IAAA,OACI;EAAA;EACT,IAAAgB,EAAA;EAAA,IAAAjB,CAAA,QAAAG,MAAA,IAAAH,CAAA,QAAAgB,WAAA,IAAAhB,CAAA,QAAAK,OAAA,IAAAL,CAAA,QAAAE,CAAA;IAEA,MAAAgB,KAAA,GAAcf,MAAA,GAASD,CAAA,CAAE,gBAAsB,IAAFA,CAAA,CAAE;IAAA,IAAAiB,EAAA;IAAA,IAAAC,EAAA;IAAA,IAAApB,CAAA,QAAAqB,MAAA,CAAAC,GAAA;MAI3BH,EAAA,GAAAA,CAAA;QACdb,UAAA,CAAW;QACXF,SAAA,CAAU;MAAA,CACZ;MACgBgB,EAAA,GAAAA,CAAA;QACdd,UAAA,CAAW;QACXF,SAAA,CAAU;MAAA,CACZ;MAAAJ,CAAA,MAAAmB,EAAA;MAAAnB,CAAA,MAAAoB,EAAA;IAAA;MAAAD,EAAA,GAAAnB,CAAA;MAAAoB,EAAA,GAAApB,CAAA;IAAA;IARFiB,EAAA,GAAAM,KAAA,CAAC;MAAAC,cAAA,EACiBL,EAGhB;MAAAM,cAAA,EACgBL,EAGhB;MAAAM,KAAA,EACO;QAAAC,QAAA,EAAY;MAAW;MAAAC,QAAA,E,CAE9BC,IAAA,CAAChC,MAAA;QAAAiC,WAAA,EACa;QAAAC,IAAA,EACNF,IAAA,CAACnC,QAAA;UAAAsC,IAAA,EAAe;;YACnB;QAAAC,OAAA,EACMjB;UAEXa,IAAA,CAAC/B,OAAA;QAAAoC,KAAA,EAAe;QAAAC,EAAA,EAAM;QAAAC,IAAA,EAA+B/B,OAAW,IAAXF,MAAW;QAAAyB,QAAA,EAC7DV;;;;;;;;;;;SAlBLD,E","ignoreList":[]}