@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.
- package/dist/css/app.css +2 -2
- package/dist/css/colors.css +65 -0
- package/dist/css/preflight.css +21 -2
- package/dist/elements/APIKeyInput/index.js +22 -23
- package/dist/elements/APIKeyInput/index.js.map +1 -1
- package/dist/elements/AddNewRelation/index.js +17 -19
- package/dist/elements/AddNewRelation/index.js.map +1 -1
- package/dist/elements/AppHeader/index.css +1 -1
- package/dist/elements/AppHeader/index.d.ts.map +1 -1
- package/dist/elements/AppHeader/index.js +5 -1
- package/dist/elements/AppHeader/index.js.map +1 -1
- package/dist/elements/ArrayAction/index.js +39 -30
- package/dist/elements/ArrayAction/index.js.map +1 -1
- package/dist/elements/Autosave/index.js +236 -143
- package/dist/elements/Autosave/index.js.map +1 -1
- package/dist/elements/BranchSelector/index.d.ts.map +1 -1
- package/dist/elements/BranchSelector/index.js +285 -204
- package/dist/elements/BranchSelector/index.js.map +1 -1
- package/dist/elements/BulkUpload/ActionsBar/index.js.map +1 -1
- package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
- package/dist/elements/BulkUpload/AddingFilesView/index.js.map +1 -1
- package/dist/elements/BulkUpload/DiscardWithoutSaving/index.js.map +1 -1
- package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
- package/dist/elements/BulkUpload/EditMany/index.js +29 -21
- package/dist/elements/BulkUpload/EditMany/index.js.map +1 -1
- package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.js +1 -34
- package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
- package/dist/elements/BulkUpload/index.js +63 -23
- package/dist/elements/BulkUpload/index.js.map +1 -1
- package/dist/elements/BulkUpload/useUploadCollectionOptions.js.map +1 -1
- package/dist/elements/Button/index.css +3 -3
- package/dist/elements/Button/index.d.ts.map +1 -1
- package/dist/elements/Button/index.js +2 -1
- package/dist/elements/Button/index.js.map +1 -1
- package/dist/elements/Button/types.d.ts +1 -0
- package/dist/elements/Button/types.d.ts.map +1 -1
- package/dist/elements/Button/types.js.map +1 -1
- package/dist/elements/CardGrid/index.css +0 -1
- package/dist/elements/ChangeSummary/index.js.map +1 -1
- package/dist/elements/Chip/index.js.map +1 -1
- package/dist/elements/ClipboardAction/ClipboardActionLabel.js.map +1 -1
- package/dist/elements/ClipboardAction/index.js +213 -88
- package/dist/elements/ClipboardAction/index.js.map +1 -1
- package/dist/elements/CloseModalOnRouteChange/index.d.ts.map +1 -1
- package/dist/elements/CloseModalOnRouteChange/index.js +27 -19
- package/dist/elements/CloseModalOnRouteChange/index.js.map +1 -1
- package/dist/elements/CodeEditor/CodeEditor.d.ts.map +1 -1
- package/dist/elements/CodeEditor/CodeEditor.js +99 -55
- package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
- package/dist/elements/CollapseAllToggle/index.js +47 -32
- package/dist/elements/CollapseAllToggle/index.js.map +1 -1
- package/dist/elements/Collapsible/index.css +15 -4
- package/dist/elements/Collapsible/index.d.ts.map +1 -1
- package/dist/elements/Collapsible/index.js +46 -38
- package/dist/elements/Collapsible/index.js.map +1 -1
- package/dist/elements/Collapsible/provider.js +37 -14
- package/dist/elements/Collapsible/provider.js.map +1 -1
- package/dist/elements/ColumnSelection/Popup.css +4 -0
- package/dist/elements/ColumnSelection/Popup.js +10 -2
- package/dist/elements/ColumnSelection/Popup.js.map +1 -1
- package/dist/elements/ColumnSelection/index.js.map +1 -1
- package/dist/elements/CommandPalette/index.css +8 -0
- package/dist/elements/ConfirmationModal/index.d.ts +3 -0
- package/dist/elements/ConfirmationModal/index.d.ts.map +1 -1
- package/dist/elements/ConfirmationModal/index.js +2 -0
- package/dist/elements/ConfirmationModal/index.js.map +1 -1
- package/dist/elements/CopyLocaleData/index.js.map +1 -1
- package/dist/elements/CopyToClipboard/index.js.map +1 -1
- package/dist/elements/CreateDocumentButton/index.js +45 -43
- package/dist/elements/CreateDocumentButton/index.js.map +1 -1
- package/dist/elements/DatePicker/DatePicker.js +6 -2
- package/dist/elements/DatePicker/DatePicker.js.map +1 -1
- package/dist/elements/DatePicker/index.css +40 -25
- package/dist/elements/DatePicker/useDatePickerKeyboard.js.map +1 -1
- package/dist/elements/DefaultListViewTabs/index.css +4 -0
- package/dist/elements/DefaultListViewTabs/index.js +47 -37
- package/dist/elements/DefaultListViewTabs/index.js.map +1 -1
- package/dist/elements/DelayedSpinner/index.js.map +1 -1
- package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
- package/dist/elements/DeleteDocument/index.js +1 -3
- package/dist/elements/DeleteDocument/index.js.map +1 -1
- package/dist/elements/Dialog/DialogCancel/index.js.map +1 -1
- package/dist/elements/Dialog/DialogConfirm/index.js.map +1 -1
- package/dist/elements/Dialog/DialogHeader/index.js.map +1 -1
- package/dist/elements/Dialog/DialogModal/index.js.map +1 -1
- package/dist/elements/DocumentCard/index.d.ts +2 -0
- package/dist/elements/DocumentCard/index.d.ts.map +1 -1
- package/dist/elements/DocumentCard/index.js +2 -0
- package/dist/elements/DocumentCard/index.js.map +1 -1
- package/dist/elements/DocumentControls/index.css +13 -10
- package/dist/elements/DocumentControls/index.js +1 -1
- package/dist/elements/DocumentControls/index.js.map +1 -1
- package/dist/elements/DocumentDrawer/index.js.map +1 -1
- package/dist/elements/DocumentDrawer/types.d.ts +1 -5
- package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/types.js.map +1 -1
- package/dist/elements/DocumentFields/index.css +7 -7
- package/dist/elements/DocumentFields/index.d.ts.map +1 -1
- package/dist/elements/DocumentFields/index.js +125 -65
- package/dist/elements/DocumentFields/index.js.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.d.ts.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js +80 -34
- package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/Tab/index.css +4 -0
- package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -1
- package/dist/elements/DocumentLocked/index.d.ts.map +1 -1
- package/dist/elements/DocumentLocked/index.js +1 -0
- package/dist/elements/DocumentLocked/index.js.map +1 -1
- package/dist/elements/DocumentStaleData/index.js.map +1 -1
- package/dist/elements/DocumentTakeOver/index.js.map +1 -1
- package/dist/elements/DraggableSortable/DragOverlayPreview/index.js +2 -0
- package/dist/elements/DraggableSortable/DragOverlayPreview/index.js.map +1 -1
- package/dist/elements/DraggableSortable/DraggableSortableItem/index.d.ts.map +1 -1
- package/dist/elements/DraggableSortable/DraggableSortableItem/index.js +10 -7
- package/dist/elements/DraggableSortable/DraggableSortableItem/index.js.map +1 -1
- package/dist/elements/DraggableSortable/DraggableSortableItem/types.d.ts +2 -0
- package/dist/elements/DraggableSortable/DraggableSortableItem/types.d.ts.map +1 -1
- package/dist/elements/DraggableSortable/DraggableSortableItem/types.js.map +1 -1
- package/dist/elements/DraggableSortable/index.d.ts.map +1 -1
- package/dist/elements/DraggableSortable/index.js +104 -170
- package/dist/elements/DraggableSortable/index.js.map +1 -1
- package/dist/elements/DraggableSortable/types.d.ts +1 -0
- package/dist/elements/DraggableSortable/types.d.ts.map +1 -1
- package/dist/elements/DraggableSortable/types.js.map +1 -1
- package/dist/elements/DraggableSortable/useDraggableSortable/index.js.map +1 -1
- package/dist/elements/DraggableSortable/useRowAccessibility.d.ts +14 -0
- package/dist/elements/DraggableSortable/useRowAccessibility.d.ts.map +1 -0
- package/dist/elements/DraggableSortable/useRowAccessibility.js +99 -0
- package/dist/elements/DraggableSortable/useRowAccessibility.js.map +1 -0
- package/dist/elements/Drawer/index.js +138 -81
- package/dist/elements/Drawer/index.js.map +1 -1
- package/dist/elements/Drawer/useDrawerSlug.js.map +1 -1
- package/dist/elements/DrawerActionHeader/index.js.map +1 -1
- package/dist/elements/DrawerHeader/index.js.map +1 -1
- package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +177 -62
- package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
- package/dist/elements/EditMany/DrawerContent.js +1 -1
- package/dist/elements/EditMany/DrawerContent.js.map +1 -1
- package/dist/elements/EditMany/index.js.map +1 -1
- package/dist/elements/EditUpload/library.css +6 -13
- package/dist/elements/FieldDiffContainer/index.d.ts.map +1 -1
- package/dist/elements/FieldDiffContainer/index.js +7 -1
- package/dist/elements/FieldDiffContainer/index.js.map +1 -1
- package/dist/elements/FieldDiffLabel/index.d.ts +1 -0
- package/dist/elements/FieldDiffLabel/index.d.ts.map +1 -1
- package/dist/elements/FieldDiffLabel/index.js +2 -0
- package/dist/elements/FieldDiffLabel/index.js.map +1 -1
- package/dist/elements/FieldSelect/index.js +23 -14
- package/dist/elements/FieldSelect/index.js.map +1 -1
- package/dist/elements/FieldSelect/reduceFieldOptions.js.map +1 -1
- package/dist/elements/FileDetails/DraggableFileDetails/index.js.map +1 -1
- package/dist/elements/FileDetails/FileMeta/index.js.map +1 -1
- package/dist/elements/FileManager/FilePreview/index.js.map +1 -1
- package/dist/elements/FileManager/index.js.map +1 -1
- package/dist/elements/FullscreenModal/index.js.map +1 -1
- package/dist/elements/GenerateConfirmation/index.js +21 -21
- package/dist/elements/GenerateConfirmation/index.js.map +1 -1
- package/dist/elements/GroupBy/Popup.js.map +1 -1
- package/dist/elements/GroupBy/index.js +120 -66
- package/dist/elements/GroupBy/index.js.map +1 -1
- package/dist/elements/HTMLDiff/colors.css +7 -0
- package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js +51 -42
- package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js.map +1 -1
- package/dist/elements/Hierarchy/DocHeaderButton/index.js +1 -1
- package/dist/elements/Hierarchy/DocHeaderButton/index.js.map +1 -1
- package/dist/elements/Hierarchy/EditButton/index.js.map +1 -1
- package/dist/elements/Hierarchy/HydrateProvider/index.js.map +1 -1
- package/dist/elements/Hierarchy/Modal/Footer/index.js.map +1 -1
- package/dist/elements/Hierarchy/Search/HierarchySearchResultItem.js +25 -18
- package/dist/elements/Hierarchy/Search/HierarchySearchResultItem.js.map +1 -1
- package/dist/elements/Hierarchy/Search/HierarchySearchResults.js.map +1 -1
- package/dist/elements/Hierarchy/Search/index.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/TreeFocusContext.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/index.js +10 -5
- package/dist/elements/Hierarchy/Tree/index.js.map +1 -1
- package/dist/elements/HierarchyTypeField/index.d.ts.map +1 -1
- package/dist/elements/HierarchyTypeField/index.js.map +1 -1
- package/dist/elements/HydrateAuthProvider/index.js.map +1 -1
- package/dist/elements/HydratePreferences/index.js.map +1 -1
- package/dist/elements/IDLabel/index.js.map +1 -1
- package/dist/elements/InputStepper/index.js.map +1 -1
- package/dist/elements/ItemsDrawer/ItemSearch/index.js.map +1 -1
- package/dist/elements/ItemsDrawer/index.js +186 -105
- package/dist/elements/ItemsDrawer/index.js.map +1 -1
- package/dist/elements/LLMInstructionsDescription/index.js.map +1 -1
- package/dist/elements/LLMInstructionsMenuItem/index.js.map +1 -1
- package/dist/elements/LayoutToggle/index.js.map +1 -1
- package/dist/elements/LeaveWithoutSaving/index.js.map +1 -1
- package/dist/elements/LeaveWithoutSaving/usePreventLeave.js +1 -1
- package/dist/elements/LeaveWithoutSaving/usePreventLeave.js.map +1 -1
- package/dist/elements/Link/index.js +1 -1
- package/dist/elements/Link/index.js.map +1 -1
- package/dist/elements/ListColumnSelectionButton/index.js.map +1 -1
- package/dist/elements/ListControls/index.js.map +1 -1
- package/dist/elements/ListControls/types.d.ts +0 -10
- package/dist/elements/ListControls/types.d.ts.map +1 -1
- package/dist/elements/ListControls/types.js.map +1 -1
- package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/elements/ListDrawer/DrawerContent.js +2 -3
- package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
- package/dist/elements/ListDrawer/Provider.d.ts +3 -8
- package/dist/elements/ListDrawer/Provider.d.ts.map +1 -1
- package/dist/elements/ListDrawer/Provider.js.map +1 -1
- package/dist/elements/ListDrawer/index.js.map +1 -1
- package/dist/elements/ListGroupByButton/index.js.map +1 -1
- package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js.map +1 -1
- package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerConfirmSelectionButton.js.map +1 -1
- package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerCreateNewDocButton.js.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListCreateNewDocButton.js +11 -12
- package/dist/elements/ListHeader/TitleActions/ListCreateNewDocButton.js.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +1 -1
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
- package/dist/elements/ListSelection/index.js.map +1 -1
- package/dist/elements/ListWhereBuilder/index.js.map +1 -1
- package/dist/elements/LivePreview/DeviceContainer/index.js.map +1 -1
- package/dist/elements/LivePreview/Toolbar/Controls/index.js.map +1 -1
- package/dist/elements/LivePreview/Toolbar/SizeInput/index.js.map +1 -1
- package/dist/elements/LivePreview/Toolbar/index.js.map +1 -1
- package/dist/elements/LivePreview/ToolbarArea/index.js.map +1 -1
- package/dist/elements/LivePreview/Window/index.css +7 -1
- package/dist/elements/LivePreview/Window/index.d.ts.map +1 -1
- package/dist/elements/LivePreview/Window/index.js +6 -1
- package/dist/elements/LivePreview/Window/index.js.map +1 -1
- package/dist/elements/LoadMoreRow/index.js.map +1 -1
- package/dist/elements/Loading/index.js +62 -18
- package/dist/elements/Loading/index.js.map +1 -1
- package/dist/elements/LoadingOverlay/index.js +93 -49
- package/dist/elements/LoadingOverlay/index.js.map +1 -1
- package/dist/elements/Localizer/index.js +133 -108
- package/dist/elements/Localizer/index.js.map +1 -1
- package/dist/elements/Locked/index.js +54 -37
- package/dist/elements/Locked/index.js.map +1 -1
- package/dist/elements/Logout/index.js.map +1 -1
- package/dist/elements/MergeBranch/MergeBranchForm/index.d.ts.map +1 -1
- package/dist/elements/MergeBranch/MergeBranchForm/index.js +21 -16
- package/dist/elements/MergeBranch/MergeBranchForm/index.js.map +1 -1
- package/dist/elements/MergeBranch/MergeProgress/index.js.map +1 -1
- package/dist/elements/MergeBranch/context.js +58 -20
- package/dist/elements/MergeBranch/context.js.map +1 -1
- package/dist/elements/MergeBranch/index.js.map +1 -1
- package/dist/elements/MergeBranch/useMergeBranchAction.js +1 -1
- package/dist/elements/MergeBranch/useMergeBranchAction.js.map +1 -1
- package/dist/elements/MergeBranch/useScheduleBranchMerge.js +1 -1
- package/dist/elements/MergeBranch/useScheduleBranchMerge.js.map +1 -1
- package/dist/elements/MergeBranch/useUpcomingBranchMerges.js.map +1 -1
- package/dist/elements/MiniCarousel/index.js +102 -38
- package/dist/elements/MiniCarousel/index.js.map +1 -1
- package/dist/elements/Modal/index.d.ts.map +1 -1
- package/dist/elements/Modal/index.js +13 -1
- package/dist/elements/Modal/index.js.map +1 -1
- package/dist/elements/Nav/NavSidebarToggle/index.js.map +1 -1
- package/dist/elements/Nav/NavWrapper/index.d.ts.map +1 -1
- package/dist/elements/Nav/NavWrapper/index.js +10 -6
- package/dist/elements/Nav/NavWrapper/index.js.map +1 -1
- package/dist/elements/Nav/SettingsMenuButton/index.js.map +1 -1
- package/dist/elements/Nav/SidebarTabs/TabError/index.js.map +1 -1
- package/dist/elements/Nav/SidebarTabs/index.client.d.ts.map +1 -1
- package/dist/elements/Nav/SidebarTabs/index.client.js +32 -21
- package/dist/elements/Nav/SidebarTabs/index.client.js.map +1 -1
- package/dist/elements/Nav/context.js +2 -2
- package/dist/elements/Nav/context.js.map +1 -1
- package/dist/elements/Nav/getNavPrefs.d.ts +1 -1
- package/dist/elements/Nav/getNavPrefs.js +1 -1
- package/dist/elements/Nav/getNavPrefs.js.map +1 -1
- package/dist/elements/Nav/index.client.js.map +1 -1
- package/dist/elements/Nav/index.css +5 -0
- package/dist/elements/NavGroup/index.css +27 -3
- package/dist/elements/NavGroup/index.js +32 -39
- package/dist/elements/NavGroup/index.js.map +1 -1
- package/dist/elements/NoListResults/index.css +1 -0
- package/dist/elements/NoListResults/index.js +1 -1
- package/dist/elements/NoListResults/index.js.map +1 -1
- package/dist/elements/PageControls/GroupByPageControls.js.map +1 -1
- package/dist/elements/PageControls/index.js.map +1 -1
- package/dist/elements/Pagination/ClickableArrow/index.js +10 -11
- package/dist/elements/Pagination/ClickableArrow/index.js.map +1 -1
- package/dist/elements/Pagination/SimplePagination/index.js.map +1 -1
- package/dist/elements/Pagination/index.js +36 -37
- package/dist/elements/Pagination/index.js.map +1 -1
- package/dist/elements/PerPage/index.js.map +1 -1
- package/dist/elements/Pill/index.js.map +1 -1
- package/dist/elements/Popup/SubmenuScope.d.ts +3 -5
- package/dist/elements/Popup/SubmenuScope.d.ts.map +1 -1
- package/dist/elements/Popup/SubmenuScope.js +10 -54
- package/dist/elements/Popup/SubmenuScope.js.map +1 -1
- package/dist/elements/Popup/index.css +15 -0
- package/dist/elements/Popup/index.d.ts.map +1 -1
- package/dist/elements/Popup/index.js +88 -33
- package/dist/elements/Popup/index.js.map +1 -1
- package/dist/elements/Popup/useSubmenuPointerIntent.d.ts +16 -4
- package/dist/elements/Popup/useSubmenuPointerIntent.d.ts.map +1 -1
- package/dist/elements/Popup/useSubmenuPointerIntent.js +68 -27
- package/dist/elements/Popup/useSubmenuPointerIntent.js.map +1 -1
- package/dist/elements/PreviewButton/index.js.map +1 -1
- package/dist/elements/PreviewSizes/index.js +141 -70
- package/dist/elements/PreviewSizes/index.js.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/index.js +16 -8
- package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
- package/dist/elements/PublishButton/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/index.js +1 -0
- package/dist/elements/PublishButton/index.js.map +1 -1
- package/dist/elements/PublishMany/DrawerContent.js +1 -1
- package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
- package/dist/elements/PublishMany/index.js +32 -24
- package/dist/elements/PublishMany/index.js.map +1 -1
- package/dist/elements/QueryPresets/fields/ColumnsField/index.js +194 -100
- package/dist/elements/QueryPresets/fields/ColumnsField/index.js.map +1 -1
- package/dist/elements/QueryPresets/fields/GroupByField/index.js +78 -29
- package/dist/elements/QueryPresets/fields/GroupByField/index.js.map +1 -1
- package/dist/elements/QueryPresets/fields/Heading/index.js.map +1 -1
- package/dist/elements/QueryPresets/fields/WhereField/index.js.map +1 -1
- package/dist/elements/ReactSelect/ClearIndicator/index.js.map +1 -1
- package/dist/elements/ReactSelect/DefaultMenuPortal.d.ts.map +1 -1
- package/dist/elements/ReactSelect/DefaultMenuPortal.js.map +1 -1
- package/dist/elements/ReactSelect/MultiValue/index.js +19 -9
- package/dist/elements/ReactSelect/MultiValue/index.js.map +1 -1
- package/dist/elements/ReactSelect/MultiValueLabel/index.js.map +1 -1
- package/dist/elements/ReactSelect/MultiValueRemove/index.js +38 -29
- package/dist/elements/ReactSelect/MultiValueRemove/index.js.map +1 -1
- package/dist/elements/ReactSelect/ValueContainer/index.js.map +1 -1
- package/dist/elements/ReactSelect/index.css +4 -0
- package/dist/elements/RelationshipTable/AddNewButton.d.ts.map +1 -1
- package/dist/elements/RelationshipTable/AddNewButton.js +3 -0
- package/dist/elements/RelationshipTable/AddNewButton.js.map +1 -1
- package/dist/elements/RelationshipTable/Pagination.js.map +1 -1
- package/dist/elements/RelationshipTable/cells/DrawerLink/index.js.map +1 -1
- package/dist/elements/RelationshipTable/index.js +1 -1
- package/dist/elements/RelationshipTable/index.js.map +1 -1
- package/dist/elements/RenderIfInViewport/index.js.map +1 -1
- package/dist/elements/RenderTitle/index.js.map +1 -1
- package/dist/elements/RestoreMany/index.js +1 -1
- package/dist/elements/RestoreMany/index.js.map +1 -1
- package/dist/elements/SchedulePublishButton/index.js +112 -44
- package/dist/elements/SchedulePublishButton/index.js.map +1 -1
- package/dist/elements/Search/SearchInput/index.js.map +1 -1
- package/dist/elements/SegmentedControl/index.css +50 -7
- package/dist/elements/SegmentedControl/index.js.map +1 -1
- package/dist/elements/SelectAll/index.js.map +1 -1
- package/dist/elements/SelectRow/index.js +31 -21
- package/dist/elements/SelectRow/index.js.map +1 -1
- package/dist/elements/ShimmerEffect/index.js.map +1 -1
- package/dist/elements/SidebarToggle/index.js.map +1 -1
- package/dist/elements/SkipToContent/index.js.map +1 -1
- package/dist/elements/SortHeader/index.js.map +1 -1
- package/dist/elements/SortRow/index.js.map +1 -1
- package/dist/elements/Spinner/index.js.map +1 -1
- package/dist/elements/StayLoggedIn/index.js.map +1 -1
- package/dist/elements/StepNav/SetStepNav.js.map +1 -1
- package/dist/elements/StepNav/context.js.map +1 -1
- package/dist/elements/Switch/index.css +2 -2
- package/dist/elements/Switch/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Array/index.js +28 -9
- package/dist/elements/Table/DefaultCell/fields/Array/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Blocks/index.js +80 -27
- package/dist/elements/Table/DefaultCell/fields/Blocks/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Checkbox/index.js +9 -10
- package/dist/elements/Table/DefaultCell/fields/Checkbox/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Date/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/File/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/File/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/JSON/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/JSON/index.js +21 -32
- package/dist/elements/Table/DefaultCell/fields/JSON/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Select/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Status/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/index.js +6 -1
- package/dist/elements/Table/DefaultCell/index.js.map +1 -1
- package/dist/elements/Table/GridNavigation/useGridNavigation.js.map +1 -1
- package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
- package/dist/elements/Table/TableIdentity.js +32 -16
- package/dist/elements/Table/TableIdentity.js.map +1 -1
- package/dist/elements/Table/index.js.map +1 -1
- package/dist/elements/Table/useAriaSort.js.map +1 -1
- package/dist/elements/Tabs/index.css +4 -3
- package/dist/elements/Thumbnail/index.js +133 -53
- package/dist/elements/Thumbnail/index.js.map +1 -1
- package/dist/elements/ThumbnailCard/index.js.map +1 -1
- package/dist/elements/TimezonePicker/index.d.ts.map +1 -1
- package/dist/elements/TimezonePicker/index.js +113 -54
- package/dist/elements/TimezonePicker/index.js.map +1 -1
- package/dist/elements/Toasts/fieldErrors.js.map +1 -1
- package/dist/elements/Tooltip/index.js.map +1 -1
- package/dist/elements/Translation/index.js +1 -1
- package/dist/elements/Translation/index.js.map +1 -1
- package/dist/elements/TrashBanner/index.js.map +1 -1
- package/dist/elements/UnpublishMany/DrawerContent.js +1 -1
- package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
- package/dist/elements/UnpublishMany/index.js +32 -24
- package/dist/elements/UnpublishMany/index.js.map +1 -1
- package/dist/elements/Upload/UploadFromURLModal/index.js.map +1 -1
- package/dist/elements/Upload/index.js.map +1 -1
- package/dist/elements/Upload/usePasteFromClipboard.js.map +1 -1
- package/dist/elements/Upload/useUploadFromUrl.js.map +1 -1
- package/dist/elements/UserMenu/LanguageMenu/index.js.map +1 -1
- package/dist/elements/UserMenu/SettingsMenu/index.js.map +1 -1
- package/dist/elements/UserMenu/ThemeMenu/index.js.map +1 -1
- package/dist/elements/UserMenu/index.d.ts.map +1 -1
- package/dist/elements/UserMenu/index.js +2 -1
- package/dist/elements/UserMenu/index.js.map +1 -1
- package/dist/elements/ViewDescription/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Date/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Number/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Select/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Text/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/index.js +1 -0
- package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
- package/dist/exports/client/{CodeEditor-UKD3EPUY.js → CodeEditor-23ZGBN6S.js} +2 -2
- package/dist/exports/client/{DatePicker-POZJVQP4.js → DatePicker-AZBZPMY6.js} +2 -2
- package/dist/exports/client/chunk-EXVR6BZK.js +27 -0
- package/dist/exports/client/chunk-EXVR6BZK.js.map +7 -0
- package/dist/exports/client/{chunk-AVJIZPR3.js → chunk-SMBFG6XU.js} +1 -1
- package/dist/exports/client/{chunk-AVJIZPR3.js.map → chunk-SMBFG6XU.js.map} +1 -1
- package/dist/exports/client/{chunk-2AY67NFV.js → chunk-ZP2PB6M4.js} +2 -2
- package/dist/exports/client/chunk-ZP2PB6M4.js.map +7 -0
- package/dist/exports/client/index.d.ts +2 -2
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +28 -28
- package/dist/exports/client/index.js.map +4 -4
- package/dist/exports/rsc/index.d.ts +1 -1
- package/dist/exports/rsc/index.d.ts.map +1 -1
- package/dist/exports/rsc/index.js +1 -1
- package/dist/exports/rsc/index.js.map +1 -1
- package/dist/exports/shared/index.js +2 -2
- package/dist/exports/shared/index.js.map +3 -3
- package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
- package/dist/fields/Array/ArrayRow.js +207 -99
- package/dist/fields/Array/ArrayRow.js.map +1 -1
- package/dist/fields/Array/index.d.ts.map +1 -1
- package/dist/fields/Array/index.js +521 -308
- package/dist/fields/Array/index.js.map +1 -1
- package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
- package/dist/fields/Blocks/BlockRow.js +224 -136
- package/dist/fields/Blocks/BlockRow.js.map +1 -1
- package/dist/fields/Blocks/BlockSelector/BlockSearch/index.js.map +1 -1
- package/dist/fields/Blocks/BlockSelector/index.js +114 -74
- package/dist/fields/Blocks/BlockSelector/index.js.map +1 -1
- package/dist/fields/Blocks/BlocksDrawer/index.js.map +1 -1
- package/dist/fields/Blocks/RowActions.js +75 -55
- package/dist/fields/Blocks/RowActions.js.map +1 -1
- package/dist/fields/Blocks/SectionTitle/index.css +4 -0
- package/dist/fields/Blocks/SectionTitle/index.js.map +1 -1
- package/dist/fields/Blocks/index.d.ts.map +1 -1
- package/dist/fields/Blocks/index.js +1 -0
- package/dist/fields/Blocks/index.js.map +1 -1
- package/dist/fields/Checkbox/index.css +3 -3
- package/dist/fields/Checkbox/index.js.map +1 -1
- package/dist/fields/Code/index.d.ts.map +1 -1
- package/dist/fields/Code/index.js +3 -2
- package/dist/fields/Code/index.js.map +1 -1
- package/dist/fields/Collapsible/index.js +114 -73
- package/dist/fields/Collapsible/index.js.map +1 -1
- package/dist/fields/ConfirmPassword/index.js.map +1 -1
- package/dist/fields/DateTime/index.js +215 -121
- package/dist/fields/DateTime/index.js.map +1 -1
- package/dist/fields/Email/index.d.ts.map +1 -1
- package/dist/fields/Email/index.js.map +1 -1
- package/dist/fields/FieldDescription/index.js +29 -21
- package/dist/fields/FieldDescription/index.js.map +1 -1
- package/dist/fields/FieldError/index.js.map +1 -1
- package/dist/fields/FieldLabel/index.js.map +1 -1
- package/dist/fields/Group/index.css +3 -5
- package/dist/fields/Group/index.js +75 -46
- package/dist/fields/Group/index.js.map +1 -1
- package/dist/fields/Hidden/index.js +23 -15
- package/dist/fields/Hidden/index.js.map +1 -1
- package/dist/fields/JSON/index.d.ts.map +1 -1
- package/dist/fields/JSON/index.js +3 -2
- package/dist/fields/JSON/index.js.map +1 -1
- package/dist/fields/Number/Input.js.map +1 -1
- package/dist/fields/Number/index.d.ts.map +1 -1
- package/dist/fields/Number/index.js.map +1 -1
- package/dist/fields/Password/index.d.ts.map +1 -1
- package/dist/fields/Password/index.js.map +1 -1
- package/dist/fields/Password/input.js +46 -27
- package/dist/fields/Password/input.js.map +1 -1
- package/dist/fields/RadioGroup/Radio/index.js +35 -35
- package/dist/fields/RadioGroup/Radio/index.js.map +1 -1
- package/dist/fields/RadioGroup/index.d.ts.map +1 -1
- package/dist/fields/RadioGroup/index.js.map +1 -1
- package/dist/fields/Relationship/Input.js +14 -14
- package/dist/fields/Relationship/Input.js.map +1 -1
- package/dist/fields/Relationship/index.js +216 -111
- package/dist/fields/Relationship/index.js.map +1 -1
- package/dist/fields/Relationship/select-components/MultiValueLabel/index.js.map +1 -1
- package/dist/fields/Relationship/select-components/SingleValue/index.js +9 -11
- package/dist/fields/Relationship/select-components/SingleValue/index.js.map +1 -1
- package/dist/fields/Select/Input.js +26 -10
- package/dist/fields/Select/Input.js.map +1 -1
- package/dist/fields/Select/index.d.ts.map +1 -1
- package/dist/fields/Select/index.js +158 -77
- package/dist/fields/Select/index.js.map +1 -1
- package/dist/fields/Tabs/Tab/index.js.map +1 -1
- package/dist/fields/Tabs/index.css +17 -21
- package/dist/fields/Tabs/index.js +120 -112
- package/dist/fields/Tabs/index.js.map +1 -1
- package/dist/fields/Text/Input.d.ts.map +1 -1
- package/dist/fields/Text/Input.js +2 -2
- package/dist/fields/Text/Input.js.map +1 -1
- package/dist/fields/Text/index.js +172 -95
- package/dist/fields/Text/index.js.map +1 -1
- package/dist/fields/Text/types.d.ts +2 -1
- package/dist/fields/Text/types.d.ts.map +1 -1
- package/dist/fields/Text/types.js.map +1 -1
- package/dist/fields/Textarea/Input.js +58 -28
- package/dist/fields/Textarea/Input.js.map +1 -1
- package/dist/fields/Textarea/index.js +97 -55
- package/dist/fields/Textarea/index.js.map +1 -1
- package/dist/fields/Upload/HasMany/index.js.map +1 -1
- package/dist/fields/Upload/Input.d.ts.map +1 -1
- package/dist/fields/Upload/Input.js +19 -8
- package/dist/fields/Upload/Input.js.map +1 -1
- package/dist/fields/Upload/RelationshipContent/index.js.map +1 -1
- package/dist/fields/Upload/index.css +9 -0
- package/dist/fields/Upload/index.js +101 -63
- package/dist/fields/Upload/index.js.map +1 -1
- package/dist/fields/shared/useRowFocus.js.map +1 -1
- package/dist/forms/Form/context.js.map +1 -1
- package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
- package/dist/forms/Form/fieldReducer.js.map +1 -1
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +27 -8
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/Form/reduceToSerializableFields.d.ts +9 -4
- package/dist/forms/Form/reduceToSerializableFields.d.ts.map +1 -1
- package/dist/forms/Form/reduceToSerializableFields.js +34 -7
- package/dist/forms/Form/reduceToSerializableFields.js.map +1 -1
- package/dist/forms/Form/types.d.ts +1 -1
- package/dist/forms/Form/types.d.ts.map +1 -1
- package/dist/forms/Form/types.js.map +1 -1
- package/dist/forms/NullifyField/index.js.map +1 -1
- package/dist/forms/RenderFields/RenderField.js.map +1 -1
- package/dist/forms/RenderFields/context.js +3 -2
- package/dist/forms/RenderFields/context.js.map +1 -1
- package/dist/forms/RenderFields/index.css +2 -2
- package/dist/forms/RenderFields/index.js.map +1 -1
- package/dist/forms/RowLabel/Context/index.d.ts.map +1 -1
- package/dist/forms/RowLabel/Context/index.js +58 -18
- package/dist/forms/RowLabel/Context/index.js.map +1 -1
- package/dist/forms/Submit/index.js +12 -13
- package/dist/forms/Submit/index.js.map +1 -1
- package/dist/forms/WatchChildErrors/index.js.map +1 -1
- package/dist/forms/useField/index.js +1 -1
- package/dist/forms/useField/index.js.map +1 -1
- package/dist/forms/useField/types.d.ts +0 -4
- package/dist/forms/useField/types.d.ts.map +1 -1
- package/dist/forms/useField/types.js.map +1 -1
- package/dist/forms/withCondition/WatchCondition.js.map +1 -1
- package/dist/graphics/Account/Gravatar/index.js +32 -17
- package/dist/graphics/Account/Gravatar/index.js.map +1 -1
- package/dist/graphics/Account/index.js +27 -18
- package/dist/graphics/Account/index.js.map +1 -1
- package/dist/hooks/useControllableState.js.map +1 -1
- package/dist/hooks/useDebounce.js.map +1 -1
- package/dist/hooks/useDebouncedCallback.js.map +1 -1
- package/dist/hooks/useDebouncedEffect.js.map +1 -1
- package/dist/hooks/useDelay.js.map +1 -1
- package/dist/hooks/useDelayedRender.js.map +1 -1
- package/dist/hooks/useElementHeightVariable.js.map +1 -1
- package/dist/hooks/useHotkey.js.map +1 -1
- package/dist/hooks/useIntersect.js.map +1 -1
- package/dist/hooks/usePayloadAPI.js.map +1 -1
- package/dist/hooks/usePointerSafeArea.d.ts +29 -0
- package/dist/hooks/usePointerSafeArea.d.ts.map +1 -0
- package/dist/hooks/usePointerSafeArea.js +232 -0
- package/dist/hooks/usePointerSafeArea.js.map +1 -0
- package/dist/hooks/usePopupWindow.js.map +1 -1
- package/dist/hooks/useRelatedCollections.js.map +1 -1
- package/dist/hooks/useResize.js.map +1 -1
- package/dist/hooks/useThrottledEffect.d.ts.map +1 -1
- package/dist/hooks/useThrottledEffect.js +21 -24
- package/dist/hooks/useThrottledEffect.js.map +1 -1
- package/dist/hooks/useUseAsTitle.js.map +1 -1
- package/dist/icons/Sidebar/index.d.ts.map +1 -1
- package/dist/icons/Sidebar/index.js +2 -0
- package/dist/icons/Sidebar/index.js.map +1 -1
- package/dist/icons/Table/index.css +5 -1
- package/dist/layouts/Root/RootProviders.d.ts.map +1 -1
- package/dist/layouts/Root/RootProviders.js +31 -28
- package/dist/layouts/Root/RootProviders.js.map +1 -1
- package/dist/layouts/Root/index.d.ts +1 -1
- package/dist/layouts/Root/index.d.ts.map +1 -1
- package/dist/layouts/Root/index.js +4 -15
- package/dist/layouts/Root/index.js.map +1 -1
- package/dist/providers/Actions/index.js.map +1 -1
- package/dist/providers/Auth/AuthSessionDebug/index.js.map +1 -1
- package/dist/providers/Auth/index.js +2 -2
- package/dist/providers/Auth/index.js.map +1 -1
- package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js.map +1 -1
- package/dist/providers/Branch/index.d.ts +1 -1
- package/dist/providers/Branch/index.js +4 -4
- package/dist/providers/Branch/index.js.map +1 -1
- package/dist/providers/Branch/index.server.d.ts.map +1 -1
- package/dist/providers/Branch/index.server.js +3 -1
- package/dist/providers/Branch/index.server.js.map +1 -1
- package/dist/providers/ClientFunction/index.js.map +1 -1
- package/dist/providers/Config/index.js +65 -32
- package/dist/providers/Config/index.js.map +1 -1
- package/dist/providers/DocumentEvents/index.js.map +1 -1
- package/dist/providers/EditDepth/index.js.map +1 -1
- package/dist/providers/Embed/index.js.map +1 -1
- package/dist/providers/EntityVisibility/index.js.map +1 -1
- package/dist/providers/ListQuery/index.d.ts.map +1 -1
- package/dist/providers/ListQuery/index.js +5 -5
- package/dist/providers/ListQuery/index.js.map +1 -1
- package/dist/providers/ListQuery/mergeQuery.d.ts.map +1 -1
- package/dist/providers/ListQuery/mergeQuery.js.map +1 -1
- package/dist/providers/ListQuery/sanitizeQuery.js.map +1 -1
- package/dist/providers/ListQuery/types.d.ts +6 -5
- package/dist/providers/ListQuery/types.d.ts.map +1 -1
- package/dist/providers/ListQuery/types.js.map +1 -1
- package/dist/providers/ModalAccessibility/index.js.map +1 -1
- package/dist/providers/ModalFocus/index.d.ts +15 -0
- package/dist/providers/ModalFocus/index.d.ts.map +1 -0
- package/dist/providers/ModalFocus/index.js +70 -0
- package/dist/providers/ModalFocus/index.js.map +1 -0
- package/dist/providers/RouteCache/index.d.ts.map +1 -1
- package/dist/providers/RouteCache/index.js +37 -25
- package/dist/providers/RouteCache/index.js.map +1 -1
- package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -1
- package/dist/providers/RouteTransition/index.d.ts +3 -2
- package/dist/providers/RouteTransition/index.d.ts.map +1 -1
- package/dist/providers/RouteTransition/index.js +78 -105
- package/dist/providers/RouteTransition/index.js.map +1 -1
- package/dist/providers/RouterAdapter/index.js.map +1 -1
- package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
- package/dist/providers/ServerFunctions/index.js +34 -23
- package/dist/providers/ServerFunctions/index.js.map +1 -1
- package/dist/providers/TableColumns/RenderDefaultCell/index.d.ts.map +1 -1
- package/dist/providers/TableColumns/RenderDefaultCell/index.js +1 -2
- package/dist/providers/TableColumns/RenderDefaultCell/index.js.map +1 -1
- package/dist/providers/TableColumns/index.d.ts.map +1 -1
- package/dist/providers/TableColumns/index.js +18 -35
- package/dist/providers/TableColumns/index.js.map +1 -1
- package/dist/providers/Theme/index.js.map +1 -1
- package/dist/providers/ToastContainer/index.js.map +1 -1
- package/dist/providers/Translation/index.js.map +1 -1
- package/dist/providers/UploadControls/index.js.map +1 -1
- package/dist/providers/UploadEdits/index.js.map +1 -1
- package/dist/providers/UploadHandlers/index.js.map +1 -1
- package/dist/styles.css +87 -3
- package/dist/templates/Default/Wrapper/index.js.map +1 -1
- package/dist/templates/Default/index.css +0 -1
- package/dist/utilities/buildClientFieldSchemaMap/traverseFields.d.ts.map +1 -1
- package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js +32 -6
- package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js.map +1 -1
- package/dist/utilities/formatDocTitle/formatLexicalDocTitle.js.map +1 -1
- package/dist/utilities/getDisplayedFieldValue.d.ts +8 -2
- package/dist/utilities/getDisplayedFieldValue.d.ts.map +1 -1
- package/dist/utilities/getDisplayedFieldValue.js +11 -1
- package/dist/utilities/getDisplayedFieldValue.js.map +1 -1
- package/dist/utilities/getHasScheduledPublish.js.map +1 -1
- package/dist/utilities/groupNavItems.js.map +1 -1
- package/dist/utilities/handleLivePreview.js.map +1 -1
- package/dist/utilities/handleServerFunctions.d.ts +2 -10
- package/dist/utilities/handleServerFunctions.d.ts.map +1 -1
- package/dist/utilities/handleServerFunctions.js +3 -7
- package/dist/utilities/handleServerFunctions.js.map +1 -1
- package/dist/utilities/hasSavePermission.js.map +1 -1
- package/dist/utilities/schedulePublishHandler.js.map +1 -1
- package/dist/utilities/serverFunctionRegistry.d.ts +2 -7
- package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
- package/dist/utilities/serverFunctionRegistry.js +4 -9
- package/dist/utilities/serverFunctionRegistry.js.map +1 -1
- package/dist/views/API/LocaleSelector/index.js.map +1 -1
- package/dist/views/API/index.client.d.ts.map +1 -1
- package/dist/views/API/index.client.js +1 -0
- package/dist/views/API/index.client.js.map +1 -1
- package/dist/views/Account/ResetPreferences/index.js +17 -17
- package/dist/views/Account/ResetPreferences/index.js.map +1 -1
- package/dist/views/Account/Settings/LanguageSelector.js.map +1 -1
- package/dist/views/Account/ToggleHighContrast/index.js.map +1 -1
- package/dist/views/Account/ToggleTheme/index.js +106 -27
- package/dist/views/Account/ToggleTheme/index.js.map +1 -1
- package/dist/views/Account/index.client.js.map +1 -1
- package/dist/views/Branch/BranchChanges/index.d.ts.map +1 -1
- package/dist/views/Branch/BranchChanges/index.js +185 -86
- package/dist/views/Branch/BranchChanges/index.js.map +1 -1
- package/dist/views/Branch/DiscardChangesButton/index.js +1 -1
- package/dist/views/Branch/DiscardChangesButton/index.js.map +1 -1
- package/dist/views/Branch/Manage/index.js.map +1 -1
- package/dist/views/Branch/MergeChangesButton/index.js.map +1 -1
- package/dist/views/Branch/ScheduledMerges/index.js +1 -1
- package/dist/views/Branch/ScheduledMerges/index.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +30 -21
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/index.client.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +373 -151
- package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.d.ts +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js +18 -5
- package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/utils/localeUtils.js.map +1 -1
- package/dist/views/Document/generateEditViewMetadata.js.map +1 -1
- package/dist/views/Document/index.js +1 -1
- package/dist/views/Document/index.js.map +1 -1
- package/dist/views/Document/renderDocumentSlots.js.map +1 -1
- package/dist/views/Edit/Auth/APIKeyGenerationModal.js.map +1 -1
- package/dist/views/Edit/Auth/index.d.ts.map +1 -1
- package/dist/views/Edit/Auth/index.js +13 -11
- package/dist/views/Edit/Auth/index.js.map +1 -1
- package/dist/views/Edit/SetDocumentStepNav/index.js.map +1 -1
- package/dist/views/Edit/SetDocumentTitle/index.js.map +1 -1
- package/dist/views/Edit/index.css +26 -0
- package/dist/views/Edit/index.d.ts.map +1 -1
- package/dist/views/Edit/index.js +28 -17
- package/dist/views/Edit/index.js.map +1 -1
- package/dist/views/ForgotPassword/ForgotPasswordForm/index.d.ts.map +1 -1
- package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +45 -41
- package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -1
- package/dist/views/HierarchyList/DocumentListSelection/index.js.map +1 -1
- package/dist/views/HierarchyList/HierarchyListHeader/index.js.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/DateCell.js +8 -9
- package/dist/views/HierarchyList/HierarchyTable/DateCell.js.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.js.map +1 -1
- package/dist/views/HierarchyList/TypeFilter/index.js.map +1 -1
- package/dist/views/HierarchyList/index.js +2 -2
- package/dist/views/HierarchyList/index.js.map +1 -1
- package/dist/views/List/DocumentGrid/index.js.map +1 -1
- package/dist/views/List/GroupedDocumentGrid/index.js.map +1 -1
- package/dist/views/List/ListSelection/index.js.map +1 -1
- package/dist/views/Login/LoginField/index.js.map +1 -1
- package/dist/views/Login/LoginForm/index.js.map +1 -1
- package/dist/views/Logout/LogoutClient.js.map +1 -1
- package/dist/views/Logout/index.js.map +1 -1
- package/dist/views/NotFound/index.client.js.map +1 -1
- package/dist/views/ResetPassword/ResetPasswordForm/index.js.map +1 -1
- package/dist/views/Verify/index.client.js.map +1 -1
- package/dist/views/Version/Default/SetStepNav.js.map +1 -1
- package/dist/views/Version/Default/index.css +12 -12
- package/dist/views/Version/Default/index.js +333 -191
- package/dist/views/Version/Default/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +0 -4
- package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Checkbox/index.js +9 -11
- package/dist/views/Version/RenderFieldsToDiff/fields/Checkbox/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js +41 -29
- package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js +19 -19
- package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
- package/dist/views/Version/Restore/index.d.ts.map +1 -1
- package/dist/views/Version/Restore/index.js +183 -82
- package/dist/views/Version/Restore/index.js.map +1 -1
- package/dist/views/Version/SelectComparison/VersionDrawer/CreatedAtCell.js.map +1 -1
- package/dist/views/Version/SelectComparison/VersionDrawer/index.js.map +1 -1
- package/dist/views/Version/SelectComparison/index.js +113 -33
- package/dist/views/Version/SelectComparison/index.js.map +1 -1
- package/dist/views/Version/SelectLocales/index.js.map +1 -1
- package/dist/views/Version/index.js.map +1 -1
- package/dist/views/Versions/VersionPillLabel/VersionPillLabel.js.map +1 -1
- package/dist/views/Versions/cells/AutosaveCell/index.js.map +1 -1
- package/dist/views/Versions/cells/CreatedAt/index.js.map +1 -1
- package/dist/views/Versions/cells/VersionDrawerCreatedAtCell/index.js.map +1 -1
- package/dist/views/Versions/index.client.js +9 -11
- package/dist/views/Versions/index.client.js.map +1 -1
- package/dist/views/Versions/index.js +2 -2
- package/dist/views/Versions/index.js.map +1 -1
- package/dist/widgets/Activity/Tabs/PinnedDocuments/PinDocumentPicker/index.css +28 -0
- package/dist/widgets/Activity/Tabs/PinnedDocuments/PinDocumentPicker/index.d.ts +16 -0
- package/dist/widgets/Activity/Tabs/PinnedDocuments/PinDocumentPicker/index.d.ts.map +1 -0
- package/dist/widgets/Activity/Tabs/PinnedDocuments/PinDocumentPicker/index.js +98 -0
- package/dist/widgets/Activity/Tabs/PinnedDocuments/PinDocumentPicker/index.js.map +1 -0
- package/dist/widgets/Activity/Tabs/PinnedDocuments/index.css +70 -0
- package/dist/widgets/Activity/Tabs/PinnedDocuments/index.d.ts +13 -0
- package/dist/widgets/Activity/Tabs/PinnedDocuments/index.d.ts.map +1 -0
- package/dist/widgets/Activity/Tabs/PinnedDocuments/index.js +81 -0
- package/dist/widgets/Activity/Tabs/PinnedDocuments/index.js.map +1 -0
- package/dist/widgets/{RecentlyViewed/pinnedPreferences.d.ts → Activity/Tabs/PinnedDocuments/preferences.d.ts} +6 -9
- package/dist/widgets/Activity/Tabs/PinnedDocuments/preferences.d.ts.map +1 -0
- package/dist/widgets/{RecentlyViewed/pinnedPreferences.js → Activity/Tabs/PinnedDocuments/preferences.js} +3 -22
- package/dist/widgets/Activity/Tabs/PinnedDocuments/preferences.js.map +1 -0
- package/dist/widgets/Activity/Tabs/PinnedDocuments/usePinnedDocuments.d.ts +39 -0
- package/dist/widgets/Activity/Tabs/PinnedDocuments/usePinnedDocuments.d.ts.map +1 -0
- package/dist/widgets/Activity/Tabs/PinnedDocuments/usePinnedDocuments.js +83 -0
- package/dist/widgets/Activity/Tabs/PinnedDocuments/usePinnedDocuments.js.map +1 -0
- package/dist/widgets/Activity/Tabs/RecentDocuments/index.d.ts +9 -0
- package/dist/widgets/Activity/Tabs/RecentDocuments/index.d.ts.map +1 -0
- package/dist/widgets/Activity/Tabs/RecentDocuments/index.js +23 -0
- package/dist/widgets/Activity/Tabs/RecentDocuments/index.js.map +1 -0
- package/dist/widgets/Activity/components/DocumentList/index.css +61 -0
- package/dist/widgets/Activity/components/DocumentList/index.d.ts +15 -0
- package/dist/widgets/Activity/components/DocumentList/index.d.ts.map +1 -0
- package/dist/widgets/Activity/components/DocumentList/index.js +56 -0
- package/dist/widgets/Activity/components/DocumentList/index.js.map +1 -0
- package/dist/widgets/Activity/components/EmptyState/index.css +47 -0
- package/dist/widgets/Activity/components/EmptyState/index.d.ts +12 -0
- package/dist/widgets/Activity/components/EmptyState/index.d.ts.map +1 -0
- package/dist/widgets/Activity/components/EmptyState/index.js +37 -0
- package/dist/widgets/Activity/components/EmptyState/index.js.map +1 -0
- package/dist/widgets/Activity/components/Pagination/index.css +42 -0
- package/dist/widgets/Activity/components/Pagination/index.d.ts +20 -0
- package/dist/widgets/Activity/components/Pagination/index.d.ts.map +1 -0
- package/dist/widgets/Activity/components/Pagination/index.js +125 -0
- package/dist/widgets/Activity/components/Pagination/index.js.map +1 -0
- package/dist/widgets/Activity/components/StatusPill/index.css +24 -0
- package/dist/widgets/Activity/components/StatusPill/index.d.ts +8 -0
- package/dist/widgets/Activity/components/StatusPill/index.d.ts.map +1 -0
- package/dist/widgets/Activity/components/StatusPill/index.js +18 -0
- package/dist/widgets/Activity/components/StatusPill/index.js.map +1 -0
- package/dist/widgets/Activity/index.client.d.ts +15 -0
- package/dist/widgets/Activity/index.client.d.ts.map +1 -0
- package/dist/widgets/Activity/index.client.js +186 -0
- package/dist/widgets/Activity/index.client.js.map +1 -0
- package/dist/widgets/Activity/index.css +320 -0
- package/dist/widgets/Activity/index.d.ts +13 -0
- package/dist/widgets/Activity/index.d.ts.map +1 -0
- package/dist/widgets/Activity/index.js +100 -0
- package/dist/widgets/Activity/index.js.map +1 -0
- package/dist/widgets/{RecentlyViewed/index.client.d.ts → Activity/types.d.ts} +6 -13
- package/dist/widgets/Activity/types.d.ts.map +1 -0
- package/dist/widgets/Activity/types.js +2 -0
- package/dist/widgets/Activity/types.js.map +1 -0
- package/dist/widgets/Activity/utils/cache.d.ts +33 -0
- package/dist/widgets/Activity/utils/cache.d.ts.map +1 -0
- package/dist/widgets/Activity/utils/cache.js +72 -0
- package/dist/widgets/Activity/utils/cache.js.map +1 -0
- package/dist/widgets/Activity/utils/constants.d.ts +5 -0
- package/dist/widgets/Activity/utils/constants.d.ts.map +1 -0
- package/dist/widgets/Activity/utils/constants.js +4 -0
- package/dist/widgets/Activity/utils/constants.js.map +1 -0
- package/dist/widgets/Activity/utils/documents.d.ts +11 -0
- package/dist/widgets/Activity/utils/documents.d.ts.map +1 -0
- package/dist/widgets/Activity/utils/documents.js +38 -0
- package/dist/widgets/Activity/utils/documents.js.map +1 -0
- package/dist/widgets/Activity/utils/getActivityWidgetDocs.d.ts +20 -0
- package/dist/widgets/Activity/utils/getActivityWidgetDocs.d.ts.map +1 -0
- package/dist/widgets/{RecentlyViewed/getDocuments.js → Activity/utils/getActivityWidgetDocs.js} +24 -21
- package/dist/widgets/Activity/utils/getActivityWidgetDocs.js.map +1 -0
- package/dist/widgets/Activity/utils/state.d.ts +44 -0
- package/dist/widgets/Activity/utils/state.d.ts.map +1 -0
- package/dist/widgets/Activity/utils/state.js +80 -0
- package/dist/widgets/Activity/utils/state.js.map +1 -0
- package/dist/widgets/Activity/utils/useActivityDocuments.d.ts +35 -0
- package/dist/widgets/Activity/utils/useActivityDocuments.d.ts.map +1 -0
- package/dist/widgets/Activity/utils/useActivityDocuments.js +141 -0
- package/dist/widgets/Activity/utils/useActivityDocuments.js.map +1 -0
- package/dist/widgets/Activity/utils/usePageSize.d.ts +11 -0
- package/dist/widgets/Activity/utils/usePageSize.d.ts.map +1 -0
- package/dist/widgets/Activity/utils/usePageSize.js +35 -0
- package/dist/widgets/Activity/utils/usePageSize.js.map +1 -0
- package/dist/widgets/CollectionCards/index.client.d.ts +3 -0
- package/dist/widgets/CollectionCards/index.client.d.ts.map +1 -1
- package/dist/widgets/CollectionCards/index.client.js +3 -0
- package/dist/widgets/CollectionCards/index.client.js.map +1 -1
- package/dist/widgets/CollectionCards/index.d.ts +3 -0
- package/dist/widgets/CollectionCards/index.d.ts.map +1 -1
- package/dist/widgets/CollectionCards/index.js +3 -0
- package/dist/widgets/CollectionCards/index.js.map +1 -1
- package/dist/widgets/CollectionQuery/SortField/index.d.ts +3 -0
- package/dist/widgets/CollectionQuery/SortField/index.d.ts.map +1 -1
- package/dist/widgets/CollectionQuery/SortField/index.js +181 -73
- package/dist/widgets/CollectionQuery/SortField/index.js.map +1 -1
- package/dist/widgets/CollectionQuery/index.d.ts +3 -0
- package/dist/widgets/CollectionQuery/index.d.ts.map +1 -1
- package/dist/widgets/CollectionQuery/index.js +3 -0
- package/dist/widgets/CollectionQuery/index.js.map +1 -1
- package/dist/widgets/UploadDropzone/CollectionsField/index.d.ts +3 -0
- package/dist/widgets/UploadDropzone/CollectionsField/index.d.ts.map +1 -1
- package/dist/widgets/UploadDropzone/CollectionsField/index.js +65 -14
- package/dist/widgets/UploadDropzone/CollectionsField/index.js.map +1 -1
- package/dist/widgets/UploadDropzone/index.client.d.ts +3 -0
- package/dist/widgets/UploadDropzone/index.client.d.ts.map +1 -1
- package/dist/widgets/UploadDropzone/index.client.js +3 -0
- package/dist/widgets/UploadDropzone/index.client.js.map +1 -1
- package/dist/widgets/UploadDropzone/index.d.ts +3 -0
- package/dist/widgets/UploadDropzone/index.d.ts.map +1 -1
- package/dist/widgets/UploadDropzone/index.js +3 -0
- package/dist/widgets/UploadDropzone/index.js.map +1 -1
- package/dist/widgets/Welcome/index.d.ts +3 -0
- package/dist/widgets/Welcome/index.d.ts.map +1 -1
- package/dist/widgets/Welcome/index.js +3 -0
- package/dist/widgets/Welcome/index.js.map +1 -1
- package/dist/widgets/WidgetCard/index.css +0 -20
- package/dist/widgets/{RecentlyViewed/CollectionsField → shared/CollectionFilter}/index.css +2 -2
- package/dist/widgets/{RecentlyViewed/CollectionsField → shared/CollectionFilter}/index.d.ts +3 -1
- package/dist/widgets/shared/CollectionFilter/index.d.ts.map +1 -0
- package/dist/widgets/shared/CollectionFilter/index.js +170 -0
- package/dist/widgets/shared/CollectionFilter/index.js.map +1 -0
- package/package.json +21 -23
- package/dist/exports/client/chunk-2AY67NFV.js.map +0 -7
- package/dist/exports/client/chunk-6XCSN54Q.js +0 -27
- package/dist/exports/client/chunk-6XCSN54Q.js.map +0 -7
- package/dist/widgets/RecentlyViewed/CollectionsField/index.d.ts.map +0 -1
- package/dist/widgets/RecentlyViewed/CollectionsField/index.js +0 -102
- package/dist/widgets/RecentlyViewed/CollectionsField/index.js.map +0 -1
- package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.css +0 -73
- package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.d.ts +0 -19
- package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.d.ts.map +0 -1
- package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.js +0 -122
- package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.js.map +0 -1
- package/dist/widgets/RecentlyViewed/getDocuments.d.ts +0 -20
- package/dist/widgets/RecentlyViewed/getDocuments.d.ts.map +0 -1
- package/dist/widgets/RecentlyViewed/getDocuments.js.map +0 -1
- package/dist/widgets/RecentlyViewed/index.client.d.ts.map +0 -1
- package/dist/widgets/RecentlyViewed/index.client.js +0 -401
- package/dist/widgets/RecentlyViewed/index.client.js.map +0 -1
- package/dist/widgets/RecentlyViewed/index.css +0 -318
- package/dist/widgets/RecentlyViewed/index.d.ts +0 -10
- package/dist/widgets/RecentlyViewed/index.d.ts.map +0 -1
- package/dist/widgets/RecentlyViewed/index.js +0 -45
- package/dist/widgets/RecentlyViewed/index.js.map +0 -1
- package/dist/widgets/RecentlyViewed/pinnedPreferences.d.ts.map +0 -1
- package/dist/widgets/RecentlyViewed/pinnedPreferences.js.map +0 -1
- package/dist/widgets/RecentlyViewed/recents.d.ts +0 -8
- package/dist/widgets/RecentlyViewed/recents.d.ts.map +0 -1
- package/dist/widgets/RecentlyViewed/recents.js +0 -19
- package/dist/widgets/RecentlyViewed/recents.js.map +0 -1
- /package/dist/exports/client/{CodeEditor-UKD3EPUY.js.map → CodeEditor-23ZGBN6S.js.map} +0 -0
- /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 {
|
|
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
|
-
|
|
10
|
-
|
|
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,
|
|
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
|
|
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
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
36
|
-
}, [cancelClose, enabled]);
|
|
69
|
+
};
|
|
37
70
|
return {
|
|
38
|
-
|
|
39
|
-
|
|
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","
|
|
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,
|
|
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":[]}
|