@payloadcms/ui 4.0.0-internal.a7ca468 → 4.0.0-internal.af6aad0
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/elements/AddNewRelation/index.css +0 -4
- package/dist/elements/AddNewRelation/index.js +2 -2
- package/dist/elements/AddNewRelation/index.js.map +1 -1
- package/dist/elements/AppHeader/index.css +5 -0
- package/dist/elements/AppHeader/index.d.ts +1 -8
- package/dist/elements/AppHeader/index.d.ts.map +1 -1
- package/dist/elements/AppHeader/index.js +4 -13
- package/dist/elements/AppHeader/index.js.map +1 -1
- package/dist/elements/ArrayAction/index.d.ts +1 -0
- package/dist/elements/ArrayAction/index.d.ts.map +1 -1
- package/dist/elements/ArrayAction/index.js +45 -32
- package/dist/elements/ArrayAction/index.js.map +1 -1
- package/dist/elements/BulkUpload/AddFilesView/index.css +10 -4
- package/dist/elements/BulkUpload/AddFilesView/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/AddFilesView/index.js +71 -51
- package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
- package/dist/elements/Button/index.css +25 -2
- package/dist/elements/Button/index.d.ts.map +1 -1
- package/dist/elements/Button/index.js +2 -0
- package/dist/elements/Button/index.js.map +1 -1
- package/dist/elements/Button/types.d.ts +1 -1
- package/dist/elements/Button/types.d.ts.map +1 -1
- package/dist/elements/Button/types.js.map +1 -1
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts +10 -0
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.d.ts.map +1 -1
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js +65 -3
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.js.map +1 -1
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js +345 -1
- package/dist/elements/ClipboardAction/mergeFormStateFromClipboard.spec.js.map +1 -1
- package/dist/elements/DefaultListViewTabs/index.css +1 -0
- package/dist/elements/DefaultListViewTabs/index.d.ts.map +1 -1
- package/dist/elements/DefaultListViewTabs/index.js +84 -62
- package/dist/elements/DefaultListViewTabs/index.js.map +1 -1
- package/dist/elements/DocumentDrawer/types.d.ts +1 -1
- package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/types.js.map +1 -1
- package/dist/elements/Drawer/index.css +10 -4
- package/dist/elements/Drawer/types.d.ts +2 -2
- package/dist/elements/Drawer/types.d.ts.map +1 -1
- package/dist/elements/Drawer/types.js.map +1 -1
- package/dist/elements/Dropzone/index.css +10 -4
- package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +3 -2
- package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
- package/dist/elements/FileManager/index.css +0 -30
- package/dist/elements/FileManager/index.d.ts.map +1 -1
- package/dist/elements/FileManager/index.js +379 -287
- package/dist/elements/FileManager/index.js.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/Column/index.css +22 -4
- package/dist/elements/Hierarchy/ColumnBrowser/Column/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js +68 -49
- package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.css +100 -15
- package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js +97 -137
- package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/index.js +51 -23
- package/dist/elements/Hierarchy/ColumnBrowser/index.js.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts +26 -3
- package/dist/elements/Hierarchy/ColumnBrowser/types.d.ts.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/types.js.map +1 -1
- package/dist/elements/Hierarchy/CreateNewButton/index.css +9 -0
- package/dist/elements/Hierarchy/CreateNewButton/index.d.ts +9 -0
- package/dist/elements/Hierarchy/CreateNewButton/index.d.ts.map +1 -0
- package/dist/elements/Hierarchy/CreateNewButton/index.js +111 -0
- package/dist/elements/Hierarchy/CreateNewButton/index.js.map +1 -0
- package/dist/elements/Hierarchy/DocHeaderButton/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/DocHeaderButton/index.js +6 -1
- package/dist/elements/Hierarchy/DocHeaderButton/index.js.map +1 -1
- package/dist/elements/Hierarchy/DocHeaderButton/index.server.js +1 -3
- package/dist/elements/Hierarchy/DocHeaderButton/index.server.js.map +1 -1
- package/dist/elements/Hierarchy/Field/index.client.d.ts +5 -0
- package/dist/elements/Hierarchy/Field/index.client.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Field/index.client.js +120 -95
- package/dist/elements/Hierarchy/Field/index.client.js.map +1 -1
- package/dist/elements/Hierarchy/Field/index.css +3 -34
- package/dist/elements/Hierarchy/Modal/Footer/index.css +45 -0
- package/dist/elements/Hierarchy/Modal/Footer/index.d.ts +28 -0
- package/dist/elements/Hierarchy/Modal/Footer/index.d.ts.map +1 -0
- package/dist/elements/Hierarchy/Modal/Footer/index.js +166 -0
- package/dist/elements/Hierarchy/Modal/Footer/index.js.map +1 -0
- package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts +18 -4
- package/dist/elements/Hierarchy/Modal/fetchAncestorPath.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js +88 -24
- package/dist/elements/Hierarchy/Modal/fetchAncestorPath.js.map +1 -1
- package/dist/elements/Hierarchy/Modal/index.css +4 -53
- package/dist/elements/Hierarchy/Modal/index.d.ts +5 -2
- package/dist/elements/Hierarchy/Modal/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Modal/index.js +136 -99
- package/dist/elements/Hierarchy/Modal/index.js.map +1 -1
- package/dist/elements/Hierarchy/Modal/types.d.ts +15 -0
- package/dist/elements/Hierarchy/Modal/types.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Modal/types.js.map +1 -1
- package/dist/elements/Hierarchy/MoveMany/index.d.ts +7 -3
- package/dist/elements/Hierarchy/MoveMany/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/MoveMany/index.js +43 -170
- package/dist/elements/Hierarchy/MoveMany/index.js.map +1 -1
- package/dist/elements/Hierarchy/Search/index.css +2 -9
- package/dist/elements/Hierarchy/Search/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Search/index.js +6 -73
- package/dist/elements/Hierarchy/Search/index.js.map +1 -1
- package/dist/elements/Hierarchy/Search/types.d.ts +2 -6
- package/dist/elements/Hierarchy/Search/types.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Search/types.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts +0 -4
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js +101 -186
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js +1 -21
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/LoadMore/index.css +3 -3
- package/dist/elements/Hierarchy/Tree/TreeNode/index.css +59 -29
- package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts +1 -1
- package/dist/elements/Hierarchy/Tree/TreeNode/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/TreeNode/index.js +54 -10
- package/dist/elements/Hierarchy/Tree/TreeNode/index.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/index.css +8 -9
- package/dist/elements/Hierarchy/Tree/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/index.js +29 -47
- package/dist/elements/Hierarchy/Tree/index.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/types.d.ts +9 -1
- package/dist/elements/Hierarchy/Tree/types.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/types.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/useChildren.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/useChildren.js +11 -1
- package/dist/elements/Hierarchy/Tree/useChildren.js.map +1 -1
- package/dist/elements/Hierarchy/getFolderHierarchySlug.d.ts +22 -0
- package/dist/elements/Hierarchy/getFolderHierarchySlug.d.ts.map +1 -0
- package/dist/elements/Hierarchy/getFolderHierarchySlug.js +17 -0
- package/dist/elements/Hierarchy/getFolderHierarchySlug.js.map +1 -0
- package/dist/elements/Hierarchy/move/moveDocuments.d.ts +34 -0
- package/dist/elements/Hierarchy/move/moveDocuments.d.ts.map +1 -0
- package/dist/elements/Hierarchy/move/moveDocuments.js +94 -0
- package/dist/elements/Hierarchy/move/moveDocuments.js.map +1 -0
- package/dist/elements/IDLabel/index.css +6 -0
- package/dist/elements/IDLabel/index.d.ts +1 -1
- package/dist/elements/IDLabel/index.d.ts.map +1 -1
- package/dist/elements/IDLabel/index.js +16 -21
- package/dist/elements/IDLabel/index.js.map +1 -1
- package/dist/elements/ListControls/index.d.ts.map +1 -1
- package/dist/elements/ListControls/index.js +3 -2
- package/dist/elements/ListControls/index.js.map +1 -1
- package/dist/elements/ListControls/types.d.ts +4 -0
- package/dist/elements/ListControls/types.d.ts.map +1 -1
- package/dist/elements/ListControls/types.js.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts +1 -7
- package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.d.ts.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js +26 -32
- package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
- package/dist/elements/Nav/NavSidebarToggle/index.js +1 -1
- package/dist/elements/Nav/NavSidebarToggle/index.js.map +1 -1
- package/dist/elements/Nav/NavWrapper/index.d.ts +1 -0
- package/dist/elements/Nav/NavWrapper/index.d.ts.map +1 -1
- package/dist/elements/Nav/NavWrapper/index.js +12 -18
- package/dist/elements/Nav/NavWrapper/index.js.map +1 -1
- package/dist/elements/Nav/SidebarTabs/index.css +1 -2
- package/dist/elements/Nav/context.d.ts +0 -1
- package/dist/elements/Nav/context.d.ts.map +1 -1
- package/dist/elements/Nav/context.js +92 -67
- package/dist/elements/Nav/context.js.map +1 -1
- package/dist/elements/Nav/index.css +47 -42
- package/dist/elements/Nav/index.d.ts +4 -0
- package/dist/elements/Nav/index.d.ts.map +1 -1
- package/dist/elements/Nav/index.js +16 -1
- package/dist/elements/Nav/index.js.map +1 -1
- package/dist/elements/NavGroup/index.css +29 -15
- package/dist/elements/Popup/PopupButtonList/index.css +33 -17
- package/dist/elements/Popup/index.css +6 -0
- package/dist/elements/Popup/index.d.ts +10 -0
- package/dist/elements/Popup/index.d.ts.map +1 -1
- package/dist/elements/Popup/index.js +13 -6
- package/dist/elements/Popup/index.js.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/index.js +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
- package/dist/elements/QueryPresets/QueryPresetBar/index.js +1 -3
- package/dist/elements/QueryPresets/QueryPresetBar/index.js.map +1 -1
- package/dist/elements/ReactSelect/types.d.ts +5 -0
- package/dist/elements/ReactSelect/types.d.ts.map +1 -1
- package/dist/elements/ReactSelect/types.js.map +1 -1
- package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
- package/dist/elements/RelationshipTable/index.js +5 -2
- package/dist/elements/RelationshipTable/index.js.map +1 -1
- package/dist/elements/SegmentedControl/index.css +58 -0
- package/dist/elements/SegmentedControl/index.d.ts +19 -0
- package/dist/elements/SegmentedControl/index.d.ts.map +1 -0
- package/dist/elements/SegmentedControl/index.js +104 -0
- package/dist/elements/SegmentedControl/index.js.map +1 -0
- package/dist/elements/SelectAll/index.d.ts.map +1 -1
- package/dist/elements/SelectAll/index.js +1 -2
- package/dist/elements/SelectAll/index.js.map +1 -1
- package/dist/elements/SelectRow/index.d.ts.map +1 -1
- package/dist/elements/SelectRow/index.js +1 -2
- package/dist/elements/SelectRow/index.js.map +1 -1
- package/dist/elements/SidebarRow/index.css +1 -5
- package/dist/elements/SidebarToggle/index.css +3 -1
- package/dist/elements/SortHeader/index.d.ts.map +1 -1
- package/dist/elements/SortHeader/index.js +29 -26
- package/dist/elements/SortHeader/index.js.map +1 -1
- package/dist/elements/StepNav/DropTarget/index.css +20 -0
- package/dist/elements/StepNav/DropTarget/index.d.ts +16 -0
- package/dist/elements/StepNav/DropTarget/index.d.ts.map +1 -0
- package/dist/elements/StepNav/DropTarget/index.js +71 -0
- package/dist/elements/StepNav/DropTarget/index.js.map +1 -0
- package/dist/elements/StepNav/index.css +64 -14
- package/dist/elements/StepNav/index.d.ts.map +1 -1
- package/dist/elements/StepNav/index.js +147 -69
- package/dist/elements/StepNav/index.js.map +1 -1
- package/dist/elements/StepNav/types.d.ts +6 -0
- package/dist/elements/StepNav/types.d.ts.map +1 -1
- package/dist/elements/StepNav/types.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.css +5 -7
- package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js +14 -3
- package/dist/elements/Table/DefaultCell/fields/Hierarchy/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/index.js +3 -11
- package/dist/elements/Table/DefaultCell/index.js.map +1 -1
- package/dist/elements/Upload/UploadFromURLModal/index.d.ts +1 -1
- package/dist/elements/Upload/UploadFromURLModal/index.d.ts.map +1 -1
- package/dist/elements/Upload/UploadFromURLModal/index.js.map +1 -1
- package/dist/elements/Upload/index.css +39 -32
- package/dist/elements/Upload/index.d.ts.map +1 -1
- package/dist/elements/Upload/index.js +37 -99
- package/dist/elements/Upload/index.js.map +1 -1
- package/dist/elements/Upload/usePasteFromClipboard.d.ts +14 -0
- package/dist/elements/Upload/usePasteFromClipboard.d.ts.map +1 -0
- package/dist/elements/Upload/usePasteFromClipboard.js +93 -0
- package/dist/elements/Upload/usePasteFromClipboard.js.map +1 -0
- package/dist/elements/Upload/useUploadFromUrl.d.ts +20 -0
- package/dist/elements/Upload/useUploadFromUrl.d.ts.map +1 -0
- package/dist/elements/Upload/useUploadFromUrl.js +201 -0
- package/dist/elements/Upload/useUploadFromUrl.js.map +1 -0
- package/dist/elements/UploadDropzoneContent/index.css +31 -0
- package/dist/elements/UploadDropzoneContent/index.d.ts +17 -0
- package/dist/elements/UploadDropzoneContent/index.d.ts.map +1 -0
- package/dist/elements/UploadDropzoneContent/index.js +62 -0
- package/dist/elements/UploadDropzoneContent/index.js.map +1 -0
- package/dist/elements/UserMenu/HoverSubmenuGroup.d.ts +18 -0
- package/dist/elements/UserMenu/HoverSubmenuGroup.d.ts.map +1 -0
- package/dist/elements/UserMenu/HoverSubmenuGroup.js +38 -0
- package/dist/elements/UserMenu/HoverSubmenuGroup.js.map +1 -0
- package/dist/elements/UserMenu/LanguageMenu/index.d.ts.map +1 -1
- package/dist/elements/UserMenu/LanguageMenu/index.js +83 -39
- package/dist/elements/UserMenu/LanguageMenu/index.js.map +1 -1
- package/dist/elements/UserMenu/SettingsMenu/index.d.ts.map +1 -1
- package/dist/elements/UserMenu/SettingsMenu/index.js +57 -21
- package/dist/elements/UserMenu/SettingsMenu/index.js.map +1 -1
- package/dist/elements/UserMenu/ThemeMenu/index.d.ts.map +1 -1
- package/dist/elements/UserMenu/ThemeMenu/index.js +83 -39
- package/dist/elements/UserMenu/ThemeMenu/index.js.map +1 -1
- package/dist/elements/UserMenu/index.css +32 -2
- package/dist/elements/UserMenu/index.d.ts +1 -0
- package/dist/elements/UserMenu/index.d.ts.map +1 -1
- package/dist/elements/UserMenu/index.js +77 -51
- package/dist/elements/UserMenu/index.js.map +1 -1
- package/dist/elements/UserMenu/useHoverSubmenu.d.ts +21 -0
- package/dist/elements/UserMenu/useHoverSubmenu.d.ts.map +1 -0
- package/dist/elements/UserMenu/useHoverSubmenu.js +260 -0
- package/dist/elements/UserMenu/useHoverSubmenu.js.map +1 -0
- package/dist/elements/ViewModeToggle/index.d.ts +8 -0
- package/dist/elements/ViewModeToggle/index.d.ts.map +1 -0
- package/dist/elements/ViewModeToggle/index.js +29 -0
- package/dist/elements/ViewModeToggle/index.js.map +1 -0
- package/dist/elements/WhereBuilder/conditionValue.d.ts +32 -0
- package/dist/elements/WhereBuilder/conditionValue.d.ts.map +1 -0
- package/dist/elements/WhereBuilder/conditionValue.js +32 -0
- package/dist/elements/WhereBuilder/conditionValue.js.map +1 -0
- package/dist/elements/WhereBuilder/conditionValue.spec.js +65 -0
- package/dist/elements/WhereBuilder/conditionValue.spec.js.map +1 -0
- package/dist/elements/WhereBuilder/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/index.js +15 -4
- package/dist/elements/WhereBuilder/index.js.map +1 -1
- package/dist/exports/client/index.d.ts +6 -1
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +1 -1
- package/dist/exports/client/index.js.map +3 -3
- package/dist/fields/Array/ArrayRow.d.ts +1 -0
- package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
- package/dist/fields/Array/ArrayRow.js +2 -0
- 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 +38 -10
- package/dist/fields/Array/index.js.map +1 -1
- package/dist/fields/Blocks/BlockRow.d.ts +1 -0
- package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
- package/dist/fields/Blocks/BlockRow.js +2 -0
- package/dist/fields/Blocks/BlockRow.js.map +1 -1
- package/dist/fields/Blocks/RowActions.d.ts +1 -0
- package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
- package/dist/fields/Blocks/RowActions.js +22 -19
- package/dist/fields/Blocks/RowActions.js.map +1 -1
- package/dist/fields/Blocks/index.d.ts.map +1 -1
- package/dist/fields/Blocks/index.js +35 -7
- package/dist/fields/Blocks/index.js.map +1 -1
- package/dist/fields/Checkbox/Input.d.ts +2 -2
- package/dist/fields/Checkbox/Input.d.ts.map +1 -1
- package/dist/fields/Checkbox/Input.js +134 -152
- package/dist/fields/Checkbox/Input.js.map +1 -1
- package/dist/fields/Checkbox/index.css +168 -155
- package/dist/fields/Relationship/Input.d.ts.map +1 -1
- package/dist/fields/Relationship/Input.js +24 -6
- package/dist/fields/Relationship/Input.js.map +1 -1
- package/dist/fields/Relationship/optionsReducer.d.ts.map +1 -1
- package/dist/fields/Relationship/optionsReducer.js +2 -0
- package/dist/fields/Relationship/optionsReducer.js.map +1 -1
- package/dist/fields/Relationship/types.d.ts +24 -0
- package/dist/fields/Relationship/types.d.ts.map +1 -1
- package/dist/fields/Relationship/types.js.map +1 -1
- package/dist/fields/Upload/Input.d.ts.map +1 -1
- package/dist/fields/Upload/Input.js +44 -16
- package/dist/fields/Upload/Input.js.map +1 -1
- package/dist/fields/Upload/Input.spec.js +241 -0
- package/dist/fields/Upload/Input.spec.js.map +1 -0
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +4 -1
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +1 -0
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
- package/dist/icons/CollapseLayers/index.css +5 -0
- package/dist/icons/CollapseLayers/index.d.ts +7 -0
- package/dist/icons/CollapseLayers/index.d.ts.map +1 -0
- package/dist/icons/CollapseLayers/index.js +23 -0
- package/dist/icons/CollapseLayers/index.js.map +1 -0
- package/dist/icons/Edit/index.d.ts +0 -1
- package/dist/icons/Edit/index.d.ts.map +1 -1
- package/dist/icons/Edit/index.js +4 -4
- package/dist/icons/Edit/index.js.map +1 -1
- package/dist/icons/Table/index.css +5 -0
- package/dist/icons/Table/index.d.ts +7 -0
- package/dist/icons/Table/index.d.ts.map +1 -0
- package/dist/icons/Table/index.js +25 -0
- package/dist/icons/Table/index.js.map +1 -0
- package/dist/providers/Actions/index.d.ts +1 -0
- package/dist/providers/Actions/index.d.ts.map +1 -1
- package/dist/providers/Actions/index.js +43 -11
- package/dist/providers/Actions/index.js.map +1 -1
- package/dist/providers/Auth/AuthSessionDebug/index.css +48 -0
- package/dist/providers/Auth/AuthSessionDebug/index.d.ts +13 -0
- package/dist/providers/Auth/AuthSessionDebug/index.d.ts.map +1 -0
- package/dist/providers/Auth/AuthSessionDebug/index.js +93 -0
- package/dist/providers/Auth/AuthSessionDebug/index.js.map +1 -0
- package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts +21 -0
- package/dist/providers/Auth/AuthSessionDebug/utilities.d.ts.map +1 -0
- package/dist/providers/Auth/AuthSessionDebug/utilities.js +53 -0
- package/dist/providers/Auth/AuthSessionDebug/utilities.js.map +1 -0
- package/dist/providers/Auth/authSessionRequests.d.ts +27 -0
- package/dist/providers/Auth/authSessionRequests.d.ts.map +1 -0
- package/dist/providers/Auth/authSessionRequests.js +119 -0
- package/dist/providers/Auth/authSessionRequests.js.map +1 -0
- package/dist/providers/Auth/authSessionRequests.spec.js +121 -0
- package/dist/providers/Auth/authSessionRequests.spec.js.map +1 -0
- package/dist/providers/Auth/index.d.ts +2 -56
- package/dist/providers/Auth/index.d.ts.map +1 -1
- package/dist/providers/Auth/index.js +283 -135
- package/dist/providers/Auth/index.js.map +1 -1
- package/dist/providers/Auth/sessionActivity.d.ts +23 -0
- package/dist/providers/Auth/sessionActivity.d.ts.map +1 -0
- package/dist/providers/Auth/sessionActivity.js +49 -0
- package/dist/providers/Auth/sessionActivity.js.map +1 -0
- package/dist/providers/Auth/sessionActivity.spec.js +44 -0
- package/dist/providers/Auth/sessionActivity.spec.js.map +1 -0
- package/dist/providers/Auth/sessionTiming.d.ts +11 -0
- package/dist/providers/Auth/sessionTiming.d.ts.map +1 -0
- package/dist/providers/Auth/sessionTiming.js +18 -0
- package/dist/providers/Auth/sessionTiming.js.map +1 -0
- package/dist/providers/Auth/tabSessionSync/index.d.ts +17 -0
- package/dist/providers/Auth/tabSessionSync/index.d.ts.map +1 -0
- package/dist/providers/Auth/tabSessionSync/index.js +263 -0
- package/dist/providers/Auth/tabSessionSync/index.js.map +1 -0
- package/dist/providers/Auth/tabSessionSync/index.spec.js +463 -0
- package/dist/providers/Auth/tabSessionSync/index.spec.js.map +1 -0
- package/dist/providers/Auth/tabSessionSync/types.d.ts +107 -0
- package/dist/providers/Auth/tabSessionSync/types.d.ts.map +1 -0
- package/dist/providers/Auth/tabSessionSync/types.js +6 -0
- package/dist/providers/Auth/tabSessionSync/types.js.map +1 -0
- package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts +11 -0
- package/dist/providers/Auth/tabSessionSync/useTabSessionSync.d.ts.map +1 -0
- package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js +90 -0
- package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js.map +1 -0
- package/dist/providers/Auth/tabSessionSync/utilities.d.ts +26 -0
- package/dist/providers/Auth/tabSessionSync/utilities.d.ts.map +1 -0
- package/dist/providers/Auth/tabSessionSync/utilities.js +159 -0
- package/dist/providers/Auth/tabSessionSync/utilities.js.map +1 -0
- package/dist/providers/Auth/types.d.ts +65 -0
- package/dist/providers/Auth/types.d.ts.map +1 -0
- package/dist/providers/Auth/types.js +2 -0
- package/dist/providers/Auth/types.js.map +1 -0
- package/dist/providers/Auth/useAuthSessionTimers.d.ts +26 -0
- package/dist/providers/Auth/useAuthSessionTimers.d.ts.map +1 -0
- package/dist/providers/Auth/useAuthSessionTimers.js +203 -0
- package/dist/providers/Auth/useAuthSessionTimers.js.map +1 -0
- package/dist/providers/Auth/useAuthSessionTimers.spec.js +311 -0
- package/dist/providers/Auth/useAuthSessionTimers.spec.js.map +1 -0
- package/dist/providers/FormErrorHandler/index.d.ts +5 -1
- package/dist/providers/FormErrorHandler/index.d.ts.map +1 -1
- package/dist/providers/FormErrorHandler/index.js.map +1 -1
- package/dist/providers/Hierarchy/index.d.ts.map +1 -1
- package/dist/providers/Hierarchy/index.js +53 -24
- package/dist/providers/Hierarchy/index.js.map +1 -1
- package/dist/providers/Hierarchy/types.d.ts +2 -0
- package/dist/providers/Hierarchy/types.d.ts.map +1 -1
- package/dist/providers/Hierarchy/types.js.map +1 -1
- package/dist/providers/HierarchyDnd/index.css +51 -0
- package/dist/providers/HierarchyDnd/index.d.ts +21 -0
- package/dist/providers/HierarchyDnd/index.d.ts.map +1 -0
- package/dist/providers/HierarchyDnd/index.js +163 -0
- package/dist/providers/HierarchyDnd/index.js.map +1 -0
- package/dist/providers/HierarchyDnd/types.d.ts +56 -0
- package/dist/providers/HierarchyDnd/types.d.ts.map +1 -0
- package/dist/providers/HierarchyDnd/types.js +21 -0
- package/dist/providers/HierarchyDnd/types.js.map +1 -0
- package/dist/providers/Locale/index.d.ts.map +1 -1
- package/dist/providers/Locale/index.js +41 -36
- package/dist/providers/Locale/index.js.map +1 -1
- package/dist/providers/Root/index.js +4 -4
- package/dist/providers/Root/index.js.map +1 -1
- package/dist/providers/RouteTransition/ProgressBar/index.js +4 -1
- package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -1
- package/dist/providers/RouteTransition/ProgressBar/index.spec.js +44 -0
- package/dist/providers/RouteTransition/ProgressBar/index.spec.js.map +1 -0
- package/dist/providers/RouteTransition/index.d.ts +2 -0
- package/dist/providers/RouteTransition/index.d.ts.map +1 -1
- package/dist/providers/RouteTransition/index.js +42 -14
- package/dist/providers/RouteTransition/index.js.map +1 -1
- package/dist/styles.css +1 -1
- package/dist/templates/Default/Wrapper/index.css +2 -1
- package/dist/templates/Default/Wrapper/index.d.ts +2 -0
- package/dist/templates/Default/Wrapper/index.d.ts.map +1 -1
- package/dist/templates/Default/Wrapper/index.js +12 -6
- package/dist/templates/Default/Wrapper/index.js.map +1 -1
- package/dist/templates/Default/index.css +3 -1
- package/dist/templates/Default/index.d.ts +1 -0
- package/dist/templates/Default/index.d.ts.map +1 -1
- package/dist/templates/Default/index.js +19 -15
- package/dist/templates/Default/index.js.map +1 -1
- package/dist/utilities/formatMetadata.d.ts.map +1 -1
- package/dist/utilities/formatMetadata.js +0 -5
- package/dist/utilities/formatMetadata.js.map +1 -1
- package/dist/utilities/getFilesFromClipboard.d.ts +10 -0
- package/dist/utilities/getFilesFromClipboard.d.ts.map +1 -0
- package/dist/utilities/getFilesFromClipboard.js +49 -0
- package/dist/utilities/getFilesFromClipboard.js.map +1 -0
- package/dist/utilities/slugify.d.ts.map +1 -1
- package/dist/utilities/slugify.js +1 -0
- package/dist/utilities/slugify.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +3 -2
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js +7 -7
- 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 +104 -66
- package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/index.css +33 -140
- package/dist/views/Edit/SetDocumentTitle/index.d.ts.map +1 -1
- package/dist/views/Edit/SetDocumentTitle/index.js +4 -1
- package/dist/views/Edit/SetDocumentTitle/index.js.map +1 -1
- package/dist/views/Edit/index.d.ts.map +1 -1
- package/dist/views/Edit/index.js +3 -2
- package/dist/views/Edit/index.js.map +1 -1
- package/dist/views/HierarchyList/DocumentListSelection/index.d.ts.map +1 -1
- package/dist/views/HierarchyList/DocumentListSelection/index.js +100 -105
- package/dist/views/HierarchyList/DocumentListSelection/index.js.map +1 -1
- package/dist/views/HierarchyList/HierarchyCards/DocumentCard/index.css +216 -0
- package/dist/views/HierarchyList/HierarchyCards/DocumentCard/index.d.ts +20 -0
- package/dist/views/HierarchyList/HierarchyCards/DocumentCard/index.d.ts.map +1 -0
- package/dist/views/HierarchyList/HierarchyCards/DocumentCard/index.js +182 -0
- package/dist/views/HierarchyList/HierarchyCards/DocumentCard/index.js.map +1 -0
- package/dist/views/HierarchyList/HierarchyCards/DragPreviewItem/index.css +38 -0
- package/dist/views/HierarchyList/HierarchyCards/DragPreviewItem/index.d.ts +15 -0
- package/dist/views/HierarchyList/HierarchyCards/DragPreviewItem/index.d.ts.map +1 -0
- package/dist/views/HierarchyList/HierarchyCards/DragPreviewItem/index.js +85 -0
- package/dist/views/HierarchyList/HierarchyCards/DragPreviewItem/index.js.map +1 -0
- package/dist/views/HierarchyList/HierarchyCards/FolderCard/index.css +98 -0
- package/dist/views/HierarchyList/HierarchyCards/FolderCard/index.d.ts +27 -0
- package/dist/views/HierarchyList/HierarchyCards/FolderCard/index.d.ts.map +1 -0
- package/dist/views/HierarchyList/HierarchyCards/FolderCard/index.js +84 -0
- package/dist/views/HierarchyList/HierarchyCards/FolderCard/index.js.map +1 -0
- package/dist/views/HierarchyList/HierarchyCards/HierarchyCard/index.d.ts +19 -0
- package/dist/views/HierarchyList/HierarchyCards/HierarchyCard/index.d.ts.map +1 -0
- package/dist/views/HierarchyList/HierarchyCards/HierarchyCard/index.js +100 -0
- package/dist/views/HierarchyList/HierarchyCards/HierarchyCard/index.js.map +1 -0
- package/dist/views/HierarchyList/HierarchyCards/PlaneItem/index.d.ts +53 -0
- package/dist/views/HierarchyList/HierarchyCards/PlaneItem/index.d.ts.map +1 -0
- package/dist/views/HierarchyList/HierarchyCards/PlaneItem/index.js +145 -0
- package/dist/views/HierarchyList/HierarchyCards/PlaneItem/index.js.map +1 -0
- package/dist/views/HierarchyList/HierarchyCards/getThumbnailSrc.d.ts +8 -0
- package/dist/views/HierarchyList/HierarchyCards/getThumbnailSrc.d.ts.map +1 -0
- package/dist/views/HierarchyList/HierarchyCards/getThumbnailSrc.js +21 -0
- package/dist/views/HierarchyList/HierarchyCards/getThumbnailSrc.js.map +1 -0
- package/dist/views/HierarchyList/HierarchyCards/index.css +115 -0
- package/dist/views/HierarchyList/HierarchyCards/index.d.ts +80 -0
- package/dist/views/HierarchyList/HierarchyCards/index.d.ts.map +1 -0
- package/dist/views/HierarchyList/HierarchyCards/index.js +457 -0
- package/dist/views/HierarchyList/HierarchyCards/index.js.map +1 -0
- package/dist/views/HierarchyList/HierarchyListHeader/index.d.ts +6 -1
- package/dist/views/HierarchyList/HierarchyListHeader/index.d.ts.map +1 -1
- package/dist/views/HierarchyList/HierarchyListHeader/index.js +10 -8
- package/dist/views/HierarchyList/HierarchyListHeader/index.js.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.d.ts.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js +11 -10
- package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/SlotTable.d.ts.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/SlotTable.js +3 -6
- package/dist/views/HierarchyList/HierarchyTable/SlotTable.js.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/index.css +51 -0
- package/dist/views/HierarchyList/HierarchyTable/index.d.ts +13 -1
- package/dist/views/HierarchyList/HierarchyTable/index.d.ts.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/index.js +156 -38
- package/dist/views/HierarchyList/HierarchyTable/index.js.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/types.d.ts +6 -0
- package/dist/views/HierarchyList/HierarchyTable/types.d.ts.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/types.js.map +1 -1
- package/dist/views/HierarchyList/index.d.ts.map +1 -1
- package/dist/views/HierarchyList/index.js +103 -20
- package/dist/views/HierarchyList/index.js.map +1 -1
- package/dist/views/List/ListHeader/index.d.ts +1 -10
- package/dist/views/List/ListHeader/index.d.ts.map +1 -1
- package/dist/views/List/ListHeader/index.js +1 -3
- package/dist/views/List/ListHeader/index.js.map +1 -1
- package/dist/views/List/ListSelection/index.d.ts.map +1 -1
- package/dist/views/List/ListSelection/index.js +138 -122
- package/dist/views/List/ListSelection/index.js.map +1 -1
- package/dist/views/List/handleHierarchy.d.ts +6 -1
- package/dist/views/List/handleHierarchy.d.ts.map +1 -1
- package/dist/views/List/handleHierarchy.js +34 -3
- package/dist/views/List/handleHierarchy.js.map +1 -1
- package/dist/views/List/index.client.d.ts.map +1 -1
- package/dist/views/List/index.client.js +128 -18
- package/dist/views/List/index.client.js.map +1 -1
- package/dist/views/List/index.css +5 -0
- package/dist/views/List/index.d.ts.map +1 -1
- package/dist/views/List/index.js +27 -16
- package/dist/views/List/index.js.map +1 -1
- package/dist/views/Root/getCustomCollectionViewByRoute.d.ts.map +1 -1
- package/dist/views/Root/getCustomCollectionViewByRoute.js.map +1 -1
- package/dist/views/Root/getCustomGlobalViewByRoute.d.ts.map +1 -1
- package/dist/views/Root/getCustomGlobalViewByRoute.js.map +1 -1
- package/dist/views/Root/getCustomViewByKey.d.ts.map +1 -1
- package/dist/views/Root/getCustomViewByKey.js.map +1 -1
- package/dist/views/Root/getRouteData.d.ts.map +1 -1
- package/dist/views/Root/getRouteData.js +8 -2
- package/dist/views/Root/getRouteData.js.map +1 -1
- package/dist/views/Root/index.d.ts.map +1 -1
- package/dist/views/Root/index.js +1 -0
- package/dist/views/Root/index.js.map +1 -1
- package/dist/views/Version/generateVersionViewMetadata.js.map +1 -1
- package/dist/views/Versions/generateVersionsViewMetadata.js.map +1 -1
- package/package.json +4 -4
- package/dist/elements/Hierarchy/Field/SelectedHierarchies.css +0 -36
- package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts +0 -13
- package/dist/elements/Hierarchy/Field/SelectedHierarchies.d.ts.map +0 -1
- package/dist/elements/Hierarchy/Field/SelectedHierarchies.js +0 -141
- package/dist/elements/Hierarchy/Field/SelectedHierarchies.js.map +0 -1
|
@@ -6,6 +6,7 @@ import { useWindowInfo } from '@faceless-ui/window-info';
|
|
|
6
6
|
import { formatAdminURL } from 'payload/shared';
|
|
7
7
|
import React, { useEffect, useState } from 'react';
|
|
8
8
|
import { Account } from '../../graphics/Account/index.js';
|
|
9
|
+
import { ChevronIcon } from '../../icons/Chevron/index.js';
|
|
9
10
|
import { LogOutIcon } from '../../icons/LogOut/index.js';
|
|
10
11
|
import { useAuth } from '../../providers/Auth/index.js';
|
|
11
12
|
import { useConfig } from '../../providers/Config/index.js';
|
|
@@ -13,20 +14,23 @@ import { useTranslation } from '../../providers/Translation/index.js';
|
|
|
13
14
|
import { MenuSeparator } from '../MenuSeparator/index.js';
|
|
14
15
|
import { Popup, PopupList } from '../Popup/index.js';
|
|
15
16
|
import { RenderCustomComponent } from '../RenderCustomComponent/index.js';
|
|
17
|
+
import { HoverSubmenuGroupProvider } from './HoverSubmenuGroup.js';
|
|
16
18
|
import { LanguageMenu, LanguageMenuContent } from './LanguageMenu/index.js';
|
|
17
19
|
import { SettingsMenu, SettingsMenuContent } from './SettingsMenu/index.js';
|
|
18
20
|
import { SubMenuHeader } from './SubMenuHeader/index.js';
|
|
19
|
-
import { ThemeMenu, ThemeMenuContent } from './ThemeMenu/index.js';
|
|
20
21
|
import './index.css';
|
|
22
|
+
import { ThemeMenu, ThemeMenuContent } from './ThemeMenu/index.js';
|
|
21
23
|
const baseClass = 'user-menu';
|
|
22
24
|
export const UserMenu = t0 => {
|
|
23
|
-
const $ = _c(
|
|
25
|
+
const $ = _c(9);
|
|
24
26
|
const {
|
|
25
27
|
CustomAvatar,
|
|
26
28
|
CustomLogoutButton,
|
|
27
|
-
settingsItemGroups: t1
|
|
29
|
+
settingsItemGroups: t1,
|
|
30
|
+
showTitle: t2
|
|
28
31
|
} = t0;
|
|
29
32
|
const settingsItemGroups = t1 === undefined ? [] : t1;
|
|
33
|
+
const showTitle = t2 === undefined ? false : t2;
|
|
30
34
|
const {
|
|
31
35
|
user
|
|
32
36
|
} = useAuth();
|
|
@@ -35,50 +39,51 @@ export const UserMenu = t0 => {
|
|
|
35
39
|
t
|
|
36
40
|
} = useTranslation();
|
|
37
41
|
const {
|
|
38
|
-
config:
|
|
42
|
+
config: t3,
|
|
39
43
|
getEntityConfig
|
|
40
44
|
} = useConfig();
|
|
41
45
|
const {
|
|
42
|
-
admin:
|
|
43
|
-
routes:
|
|
44
|
-
} =
|
|
46
|
+
admin: t4,
|
|
47
|
+
routes: t5
|
|
48
|
+
} = t3;
|
|
45
49
|
const {
|
|
46
|
-
routes:
|
|
50
|
+
routes: t6,
|
|
47
51
|
theme: adminTheme,
|
|
48
52
|
user: userSlug
|
|
49
|
-
} =
|
|
53
|
+
} = t4;
|
|
50
54
|
const {
|
|
51
55
|
account: accountRoute,
|
|
52
56
|
logout: logoutRoute
|
|
53
|
-
} =
|
|
57
|
+
} = t6;
|
|
54
58
|
const {
|
|
55
59
|
admin: adminRoute
|
|
56
|
-
} =
|
|
60
|
+
} = t5;
|
|
57
61
|
const {
|
|
58
|
-
breakpoints:
|
|
62
|
+
breakpoints: t7
|
|
59
63
|
} = useWindowInfo();
|
|
60
64
|
const {
|
|
61
65
|
s: smallBreak
|
|
62
|
-
} =
|
|
66
|
+
} = t7;
|
|
63
67
|
const isMobile = Boolean(smallBreak);
|
|
64
68
|
const [activeMobileSubmenu, setActiveMobileSubmenu] = useState(null);
|
|
65
|
-
|
|
69
|
+
const [menuInstanceKey, setMenuInstanceKey] = useState(0);
|
|
66
70
|
let t8;
|
|
71
|
+
let t9;
|
|
67
72
|
if ($[0] !== isMobile) {
|
|
68
|
-
|
|
73
|
+
t8 = () => {
|
|
69
74
|
if (!isMobile) {
|
|
70
75
|
setActiveMobileSubmenu(null);
|
|
71
76
|
}
|
|
72
77
|
};
|
|
73
|
-
|
|
78
|
+
t9 = [isMobile];
|
|
74
79
|
$[0] = isMobile;
|
|
75
|
-
$[1] =
|
|
76
|
-
$[2] =
|
|
80
|
+
$[1] = t8;
|
|
81
|
+
$[2] = t9;
|
|
77
82
|
} else {
|
|
78
|
-
|
|
79
|
-
|
|
83
|
+
t8 = $[1];
|
|
84
|
+
t9 = $[2];
|
|
80
85
|
}
|
|
81
|
-
useEffect(
|
|
86
|
+
useEffect(t8, t9);
|
|
82
87
|
const userCollectionConfig = getEntityConfig({
|
|
83
88
|
collectionSlug: userSlug
|
|
84
89
|
});
|
|
@@ -98,43 +103,55 @@ export const UserMenu = t0 => {
|
|
|
98
103
|
adminRoute,
|
|
99
104
|
path: accountRoute
|
|
100
105
|
});
|
|
101
|
-
let
|
|
106
|
+
let t10;
|
|
102
107
|
if ($[3] === Symbol.for("react.memo_cache_sentinel")) {
|
|
103
|
-
|
|
104
|
-
|
|
108
|
+
t10 = () => {
|
|
109
|
+
setActiveMobileSubmenu(null);
|
|
110
|
+
setMenuInstanceKey(_temp2);
|
|
111
|
+
};
|
|
112
|
+
$[3] = t10;
|
|
105
113
|
} else {
|
|
106
|
-
|
|
114
|
+
t10 = $[3];
|
|
107
115
|
}
|
|
108
|
-
let
|
|
109
|
-
if ($[4] !==
|
|
110
|
-
|
|
116
|
+
let t11;
|
|
117
|
+
if ($[4] !== identifier || $[5] !== showTitle || $[6] !== t || $[7] !== titleString) {
|
|
118
|
+
t11 = t12 => {
|
|
111
119
|
const {
|
|
112
120
|
active,
|
|
113
121
|
...ariaProps
|
|
114
|
-
} =
|
|
122
|
+
} = t12;
|
|
115
123
|
return _jsx("button", {
|
|
116
124
|
...ariaProps,
|
|
117
125
|
"aria-label": t("authentication:account"),
|
|
118
|
-
className: [`${baseClass}__trigger`, active && `${baseClass}__trigger--active`].filter(Boolean).join(" "),
|
|
126
|
+
className: [`${baseClass}__trigger`, active && `${baseClass}__trigger--active`, showTitle && `${baseClass}__trigger--with-title`].filter(Boolean).join(" "),
|
|
119
127
|
type: "button",
|
|
120
|
-
children:
|
|
121
|
-
|
|
122
|
-
|
|
128
|
+
children: _jsxs("div", {
|
|
129
|
+
className: `${baseClass}__trigger-content`,
|
|
130
|
+
children: [showTitle && (titleString || identifier) && _jsx("p", {
|
|
131
|
+
className: `${baseClass}__trigger-label`,
|
|
132
|
+
children: titleString || identifier
|
|
133
|
+
}), _jsx(ChevronIcon, {
|
|
134
|
+
direction: "down",
|
|
135
|
+
size: 16
|
|
136
|
+
})]
|
|
123
137
|
})
|
|
124
138
|
});
|
|
125
139
|
};
|
|
126
|
-
$[4] =
|
|
127
|
-
$[5] =
|
|
128
|
-
$[6] =
|
|
140
|
+
$[4] = identifier;
|
|
141
|
+
$[5] = showTitle;
|
|
142
|
+
$[6] = t;
|
|
143
|
+
$[7] = titleString;
|
|
144
|
+
$[8] = t11;
|
|
129
145
|
} else {
|
|
130
|
-
|
|
146
|
+
t11 = $[8];
|
|
131
147
|
}
|
|
132
148
|
return _jsx(Popup, {
|
|
133
149
|
caret: false,
|
|
134
150
|
className: baseClass,
|
|
135
151
|
horizontalAlign: "right",
|
|
136
|
-
onToggleClose:
|
|
137
|
-
renderButton:
|
|
152
|
+
onToggleClose: t10,
|
|
153
|
+
renderButton: t11,
|
|
154
|
+
showScrim: true,
|
|
138
155
|
size: "large",
|
|
139
156
|
theme: "dark",
|
|
140
157
|
verticalAlign: "bottom",
|
|
@@ -176,19 +193,25 @@ export const UserMenu = t0 => {
|
|
|
176
193
|
children: identifier
|
|
177
194
|
})]
|
|
178
195
|
})]
|
|
179
|
-
}),
|
|
180
|
-
children: [
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
196
|
+
}), _jsxs(HoverSubmenuGroupProvider, {
|
|
197
|
+
children: [showPreferencesGroup && _jsxs(_Fragment, {
|
|
198
|
+
children: [showThemeMenu && _jsx(PopupList.MenuItem, {
|
|
199
|
+
children: _jsx(ThemeMenu, {
|
|
200
|
+
onMobileOpen: isMobile ? () => setActiveMobileSubmenu("theme") : undefined
|
|
201
|
+
}, menuInstanceKey)
|
|
202
|
+
}), hasMultipleLanguages && _jsx(PopupList.MenuItem, {
|
|
203
|
+
children: _jsx(LanguageMenu, {
|
|
204
|
+
onMobileOpen: isMobile ? () => setActiveMobileSubmenu("language") : undefined
|
|
205
|
+
}, menuInstanceKey)
|
|
206
|
+
})]
|
|
207
|
+
}), _jsx(MenuSeparator, {}), hasSettingsItems && _jsxs(_Fragment, {
|
|
208
|
+
children: [_jsx(PopupList.MenuItem, {
|
|
209
|
+
children: _jsx(SettingsMenu, {
|
|
210
|
+
groups: settingsItemGroups,
|
|
211
|
+
onMobileOpen: isMobile ? () => setActiveMobileSubmenu("settings") : undefined
|
|
212
|
+
}, menuInstanceKey)
|
|
213
|
+
}), _jsx(MenuSeparator, {})]
|
|
184
214
|
})]
|
|
185
|
-
}), _jsx(MenuSeparator, {}), hasSettingsItems && _jsxs(_Fragment, {
|
|
186
|
-
children: [_jsx(PopupList.ButtonGroup, {
|
|
187
|
-
children: _jsx(SettingsMenu, {
|
|
188
|
-
groups: settingsItemGroups,
|
|
189
|
-
onMobileOpen: isMobile ? () => setActiveMobileSubmenu("settings") : undefined
|
|
190
|
-
})
|
|
191
|
-
}), _jsx(MenuSeparator, {})]
|
|
192
215
|
}), _jsx(PopupList.MenuItem, {
|
|
193
216
|
children: CustomLogoutButton ?? _jsx(PopupList.Button, {
|
|
194
217
|
href: logoutHref,
|
|
@@ -202,4 +225,7 @@ export const UserMenu = t0 => {
|
|
|
202
225
|
function _temp(group) {
|
|
203
226
|
return group.items.length > 0;
|
|
204
227
|
}
|
|
228
|
+
function _temp2(key) {
|
|
229
|
+
return key + 1;
|
|
230
|
+
}
|
|
205
231
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["c","_c","useWindowInfo","formatAdminURL","React","useEffect","useState","Account","LogOutIcon","useAuth","useConfig","useTranslation","MenuSeparator","Popup","PopupList","RenderCustomComponent","LanguageMenu","LanguageMenuContent","SettingsMenu","SettingsMenuContent","SubMenuHeader","ThemeMenu","ThemeMenuContent","baseClass","UserMenu","t0","$","CustomAvatar","CustomLogoutButton","settingsItemGroups","t1","undefined","user","languageOptions","t","config","t2","getEntityConfig","admin","t3","routes","t4","t5","theme","adminTheme","userSlug","account","accountRoute","logout","logoutRoute","adminRoute","breakpoints","t6","s","smallBreak","isMobile","Boolean","activeMobileSubmenu","setActiveMobileSubmenu","t7","t8","userCollectionConfig","collectionSlug","useAsTitle","titleValue","titleString","identifier","username","email","hasMultipleLanguages","Array","isArray","length","showThemeMenu","hasSettingsItems","some","_temp","showPreferencesGroup","logoutHref","path","accountHref","t9","Symbol","for","t10","t11","active","ariaProps","_jsx","className","filter","join","type","children","CustomComponent","Fallback","caret","horizontalAlign","onToggleClose","renderButton","verticalAlign","_jsxs","_Fragment","onBack","title","groups","href","ButtonGroup","onMobileOpen","MenuItem","Button","icon","group","items"],"sources":["../../../src/elements/UserMenu/index.tsx"],"sourcesContent":["'use client'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useEffect, useState } from 'react'\n\nimport type { UserMenuSettingsGroup } from './SettingsMenu/index.js'\n\nimport { Account } from '../../graphics/Account/index.js'\nimport { LogOutIcon } from '../../icons/LogOut/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { MenuSeparator } from '../MenuSeparator/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport { RenderCustomComponent } from '../RenderCustomComponent/index.js'\nimport { LanguageMenu, LanguageMenuContent } from './LanguageMenu/index.js'\nimport { SettingsMenu, SettingsMenuContent } from './SettingsMenu/index.js'\nimport { SubMenuHeader } from './SubMenuHeader/index.js'\nimport { ThemeMenu, ThemeMenuContent } from './ThemeMenu/index.js'\nimport './index.css'\n\nconst baseClass = 'user-menu'\n\ntype UserMenuProps = {\n CustomAvatar?: React.ReactNode\n CustomLogoutButton?: React.ReactNode\n settingsItemGroups?: UserMenuSettingsGroup[]\n}\n\nexport const UserMenu: React.FC<UserMenuProps> = ({\n CustomAvatar,\n CustomLogoutButton,\n settingsItemGroups = [],\n}) => {\n const { user } = useAuth()\n const { languageOptions, t } = useTranslation()\n const {\n config: {\n admin: {\n routes: { account: accountRoute, logout: logoutRoute },\n theme: adminTheme,\n user: userSlug,\n },\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n const isMobile = Boolean(smallBreak)\n\n const [activeMobileSubmenu, setActiveMobileSubmenu] = useState<\n 'language' | 'settings' | 'theme' | null\n >(null)\n\n useEffect(() => {\n if (!isMobile) {\n setActiveMobileSubmenu(null)\n }\n }, [isMobile])\n\n const userCollectionConfig = getEntityConfig({ collectionSlug: userSlug })\n const useAsTitle = userCollectionConfig?.admin?.useAsTitle ?? 'email'\n const titleValue =\n useAsTitle !== 'email' && user ? (user as Record<string, unknown>)[useAsTitle] : undefined\n const titleString = typeof titleValue === 'string' ? titleValue : undefined\n\n const identifier = user?.username ?? user?.email ?? ''\n const hasMultipleLanguages = Array.isArray(languageOptions) && languageOptions.length > 1\n const showThemeMenu = adminTheme === 'all'\n const hasSettingsItems = settingsItemGroups.some((group) => group.items.length > 0)\n const showPreferencesGroup = showThemeMenu || hasMultipleLanguages\n\n const logoutHref = formatAdminURL({ adminRoute, path: logoutRoute })\n const accountHref = formatAdminURL({ adminRoute, path: accountRoute })\n\n return (\n <Popup\n caret={false}\n className={baseClass}\n horizontalAlign=\"right\"\n onToggleClose={() => setActiveMobileSubmenu(null)}\n renderButton={({ active, ...ariaProps }) => (\n <button\n {...ariaProps}\n aria-label={t('authentication:account')}\n className={[`${baseClass}__trigger`, active && `${baseClass}__trigger--active`]\n .filter(Boolean)\n .join(' ')}\n type=\"button\"\n >\n <RenderCustomComponent CustomComponent={CustomAvatar} Fallback={<Account />} />\n </button>\n )}\n size=\"large\"\n theme=\"dark\"\n verticalAlign=\"bottom\"\n >\n {isMobile && activeMobileSubmenu ? (\n // Mobile submenu panel\n <>\n {activeMobileSubmenu === 'theme' && (\n <>\n <SubMenuHeader\n onBack={() => setActiveMobileSubmenu(null)}\n title={t('general:theme')}\n />\n <ThemeMenuContent />\n </>\n )}\n {activeMobileSubmenu === 'language' && (\n <>\n <SubMenuHeader\n onBack={() => setActiveMobileSubmenu(null)}\n title={t('general:language')}\n />\n <LanguageMenuContent />\n </>\n )}\n {activeMobileSubmenu === 'settings' && (\n <>\n <SubMenuHeader\n onBack={() => setActiveMobileSubmenu(null)}\n title={t('general:settings')}\n />\n <SettingsMenuContent groups={settingsItemGroups} />\n </>\n )}\n </>\n ) : (\n // Normal menu content (desktop always; mobile when no active submenu)\n <>\n {/* Profile header */}\n <a className={`${baseClass}__profile`} href={accountHref}>\n <div className={`${baseClass}__avatar`}>\n <RenderCustomComponent CustomComponent={CustomAvatar} Fallback={<Account />} />\n </div>\n <div>\n {titleString && <p className={`${baseClass}__name`}>{titleString}</p>}\n {identifier && <p className={`${baseClass}__identifier`}>{identifier}</p>}\n </div>\n </a>\n\n {/* Preferences group: Theme + Language */}\n {showPreferencesGroup && (\n <PopupList.ButtonGroup>\n {showThemeMenu && (\n <ThemeMenu\n onMobileOpen={isMobile ? () => setActiveMobileSubmenu('theme') : undefined}\n />\n )}\n {hasMultipleLanguages && (\n <LanguageMenu\n onMobileOpen={isMobile ? () => setActiveMobileSubmenu('language') : undefined}\n />\n )}\n </PopupList.ButtonGroup>\n )}\n\n <MenuSeparator />\n\n {/* Settings group */}\n {hasSettingsItems && (\n <>\n <PopupList.ButtonGroup>\n <SettingsMenu\n groups={settingsItemGroups}\n onMobileOpen={isMobile ? () => setActiveMobileSubmenu('settings') : undefined}\n />\n </PopupList.ButtonGroup>\n <MenuSeparator />\n </>\n )}\n\n {/* Account actions */}\n <PopupList.MenuItem>\n {CustomLogoutButton ?? (\n <PopupList.Button href={logoutHref} icon={<LogOutIcon />}>\n {t('authentication:logOut')}\n </PopupList.Button>\n )}\n </PopupList.MenuItem>\n </>\n )}\n </Popup>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","useWindowInfo","formatAdminURL","React","useEffect","useState","Account","ChevronIcon","LogOutIcon","useAuth","useConfig","useTranslation","MenuSeparator","Popup","PopupList","RenderCustomComponent","HoverSubmenuGroupProvider","LanguageMenu","LanguageMenuContent","SettingsMenu","SettingsMenuContent","SubMenuHeader","ThemeMenu","ThemeMenuContent","baseClass","UserMenu","t0","$","CustomAvatar","CustomLogoutButton","settingsItemGroups","t1","showTitle","t2","undefined","user","languageOptions","t","config","t3","getEntityConfig","admin","t4","routes","t5","t6","theme","adminTheme","userSlug","account","accountRoute","logout","logoutRoute","adminRoute","breakpoints","t7","s","smallBreak","isMobile","Boolean","activeMobileSubmenu","setActiveMobileSubmenu","menuInstanceKey","setMenuInstanceKey","t8","t9","userCollectionConfig","collectionSlug","useAsTitle","titleValue","titleString","identifier","username","email","hasMultipleLanguages","Array","isArray","length","showThemeMenu","hasSettingsItems","some","_temp","showPreferencesGroup","logoutHref","path","accountHref","t10","Symbol","for","_temp2","t11","t12","active","ariaProps","_jsx","className","filter","join","type","children","_jsxs","direction","size","caret","horizontalAlign","onToggleClose","renderButton","verticalAlign","_Fragment","onBack","title","groups","href","CustomComponent","Fallback","MenuItem","onMobileOpen","Button","icon","group","items","key"],"sources":["../../../src/elements/UserMenu/index.tsx"],"sourcesContent":["'use client'\nimport { useWindowInfo } from '@faceless-ui/window-info'\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useEffect, useState } from 'react'\n\nimport type { UserMenuSettingsGroup } from './SettingsMenu/index.js'\n\nimport { Account } from '../../graphics/Account/index.js'\nimport { ChevronIcon } from '../../icons/Chevron/index.js'\nimport { LogOutIcon } from '../../icons/LogOut/index.js'\nimport { useAuth } from '../../providers/Auth/index.js'\nimport { useConfig } from '../../providers/Config/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { MenuSeparator } from '../MenuSeparator/index.js'\nimport { Popup, PopupList } from '../Popup/index.js'\nimport { RenderCustomComponent } from '../RenderCustomComponent/index.js'\nimport { HoverSubmenuGroupProvider } from './HoverSubmenuGroup.js'\nimport { LanguageMenu, LanguageMenuContent } from './LanguageMenu/index.js'\nimport { SettingsMenu, SettingsMenuContent } from './SettingsMenu/index.js'\nimport { SubMenuHeader } from './SubMenuHeader/index.js'\nimport './index.css'\nimport { ThemeMenu, ThemeMenuContent } from './ThemeMenu/index.js'\n\nconst baseClass = 'user-menu'\n\ntype UserMenuProps = {\n CustomAvatar?: React.ReactNode\n CustomLogoutButton?: React.ReactNode\n settingsItemGroups?: UserMenuSettingsGroup[]\n showTitle?: boolean\n}\n\nexport const UserMenu: React.FC<UserMenuProps> = ({\n CustomAvatar,\n CustomLogoutButton,\n settingsItemGroups = [],\n showTitle = false,\n}) => {\n const { user } = useAuth()\n const { languageOptions, t } = useTranslation()\n const {\n config: {\n admin: {\n routes: { account: accountRoute, logout: logoutRoute },\n theme: adminTheme,\n user: userSlug,\n },\n routes: { admin: adminRoute },\n },\n getEntityConfig,\n } = useConfig()\n const {\n breakpoints: { s: smallBreak },\n } = useWindowInfo()\n\n const isMobile = Boolean(smallBreak)\n\n const [activeMobileSubmenu, setActiveMobileSubmenu] = useState<\n 'language' | 'settings' | 'theme' | null\n >(null)\n\n // Bumped whenever the account menu closes, so submenu triggers (Theme/Language/Settings)\n // remount and reset their own open/hover state - otherwise a submenu left open via hover\n // stays mounted and open even after the parent menu itself has closed.\n const [menuInstanceKey, setMenuInstanceKey] = useState(0)\n\n useEffect(() => {\n if (!isMobile) {\n setActiveMobileSubmenu(null)\n }\n }, [isMobile])\n\n const userCollectionConfig = getEntityConfig({ collectionSlug: userSlug })\n const useAsTitle = userCollectionConfig?.admin?.useAsTitle ?? 'email'\n const titleValue =\n useAsTitle !== 'email' && user ? (user as Record<string, unknown>)[useAsTitle] : undefined\n const titleString = typeof titleValue === 'string' ? titleValue : undefined\n\n const identifier = user?.username ?? user?.email ?? ''\n const hasMultipleLanguages = Array.isArray(languageOptions) && languageOptions.length > 1\n const showThemeMenu = adminTheme === 'all'\n const hasSettingsItems = settingsItemGroups.some((group) => group.items.length > 0)\n const showPreferencesGroup = showThemeMenu || hasMultipleLanguages\n\n const logoutHref = formatAdminURL({ adminRoute, path: logoutRoute })\n const accountHref = formatAdminURL({ adminRoute, path: accountRoute })\n\n return (\n <Popup\n caret={false}\n className={baseClass}\n horizontalAlign=\"right\"\n onToggleClose={() => {\n setActiveMobileSubmenu(null)\n setMenuInstanceKey((key) => key + 1)\n }}\n renderButton={({ active, ...ariaProps }) => (\n <button\n {...ariaProps}\n aria-label={t('authentication:account')}\n className={[\n `${baseClass}__trigger`,\n active && `${baseClass}__trigger--active`,\n showTitle && `${baseClass}__trigger--with-title`,\n ]\n .filter(Boolean)\n .join(' ')}\n type=\"button\"\n >\n <div className={`${baseClass}__trigger-content`}>\n {showTitle && (titleString || identifier) && (\n <p className={`${baseClass}__trigger-label`}>{titleString || identifier}</p>\n )}\n <ChevronIcon direction=\"down\" size={16} />\n </div>\n </button>\n )}\n showScrim\n size=\"large\"\n theme=\"dark\"\n verticalAlign=\"bottom\"\n >\n {isMobile && activeMobileSubmenu ? (\n // Mobile submenu panel\n <>\n {activeMobileSubmenu === 'theme' && (\n <>\n <SubMenuHeader\n onBack={() => setActiveMobileSubmenu(null)}\n title={t('general:theme')}\n />\n <ThemeMenuContent />\n </>\n )}\n {activeMobileSubmenu === 'language' && (\n <>\n <SubMenuHeader\n onBack={() => setActiveMobileSubmenu(null)}\n title={t('general:language')}\n />\n <LanguageMenuContent />\n </>\n )}\n {activeMobileSubmenu === 'settings' && (\n <>\n <SubMenuHeader\n onBack={() => setActiveMobileSubmenu(null)}\n title={t('general:settings')}\n />\n <SettingsMenuContent groups={settingsItemGroups} />\n </>\n )}\n </>\n ) : (\n // Normal menu content (desktop always; mobile when no active submenu)\n <>\n {/* Profile header */}\n <a className={`${baseClass}__profile`} href={accountHref}>\n <div className={`${baseClass}__avatar`}>\n <RenderCustomComponent CustomComponent={CustomAvatar} Fallback={<Account />} />\n </div>\n <div>\n {titleString && <p className={`${baseClass}__name`}>{titleString}</p>}\n {identifier && <p className={`${baseClass}__identifier`}>{identifier}</p>}\n </div>\n </a>\n\n <HoverSubmenuGroupProvider>\n {/* Preferences group: Theme + Language */}\n {showPreferencesGroup && (\n <>\n {showThemeMenu && (\n <PopupList.MenuItem>\n <ThemeMenu\n key={menuInstanceKey}\n onMobileOpen={isMobile ? () => setActiveMobileSubmenu('theme') : undefined}\n />\n </PopupList.MenuItem>\n )}\n {hasMultipleLanguages && (\n <PopupList.MenuItem>\n <LanguageMenu\n key={menuInstanceKey}\n onMobileOpen={isMobile ? () => setActiveMobileSubmenu('language') : undefined}\n />\n </PopupList.MenuItem>\n )}\n </>\n )}\n\n <MenuSeparator />\n\n {/* Settings group */}\n {hasSettingsItems && (\n <>\n <PopupList.MenuItem>\n <SettingsMenu\n groups={settingsItemGroups}\n key={menuInstanceKey}\n onMobileOpen={isMobile ? () => setActiveMobileSubmenu('settings') : undefined}\n />\n </PopupList.MenuItem>\n <MenuSeparator />\n </>\n )}\n </HoverSubmenuGroupProvider>\n\n {/* Account actions */}\n <PopupList.MenuItem>\n {CustomLogoutButton ?? (\n <PopupList.Button href={logoutHref} icon={<LogOutIcon />}>\n {t('authentication:logOut')}\n </PopupList.Button>\n )}\n </PopupList.MenuItem>\n </>\n )}\n </Popup>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AACA,SAASC,aAAa,QAAQ;AAC9B,SAASC,cAAc,QAAQ;AAC/B,OAAOC,KAAA,IAASC,SAAS,EAAEC,QAAQ,QAAQ;AAI3C,SAASC,OAAO,QAAQ;AACxB,SAASC,WAAW,QAAQ;AAC5B,SAASC,UAAU,QAAQ;AAC3B,SAASC,OAAO,QAAQ;AACxB,SAASC,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAC/B,SAASC,aAAa,QAAQ;AAC9B,SAASC,KAAK,EAAEC,SAAS,QAAQ;AACjC,SAASC,qBAAqB,QAAQ;AACtC,SAASC,yBAAyB,QAAQ;AAC1C,SAASC,YAAY,EAAEC,mBAAmB,QAAQ;AAClD,SAASC,YAAY,EAAEC,mBAAmB,QAAQ;AAClD,SAASC,aAAa,QAAQ;AAC9B,OAAO;AACP,SAASC,SAAS,EAAEC,gBAAgB,QAAQ;AAE5C,MAAMC,SAAA,GAAY;AASlB,OAAO,MAAMC,QAAA,GAAoCC,EAAA;EAAA,MAAAC,CAAA,GAAA3B,EAAA;EAAC;IAAA4B,YAAA;IAAAC,kBAAA;IAAAC,kBAAA,EAAAC,EAAA;IAAAC,SAAA,EAAAC;EAAA,IAAAP,EAKjD;EAFC,MAAAI,kBAAA,GAAAC,EAAuB,KAAAG,SAAA,QAAvBH,EAAuB;EACvB,MAAAC,SAAA,GAAAC,EAAiB,KAAAC,SAAA,WAAjBD,EAAiB;EAEjB;IAAAE;EAAA,IAAiB1B,OAAA;EACjB;IAAA2B,eAAA;IAAAC;EAAA,IAA+B1B,cAAA;EAC/B;IAAA2B,MAAA,EAAAC,EAAA;IAAAC;EAAA,IAUI9B,SAAA;EATM;IAAA+B,KAAA,EAAAC,EAAA;IAAAC,MAAA,EAAAC;EAAA,IAAAL,EAOP;EANQ;IAAAI,MAAA,EAAAE,EAAA;IAAAC,KAAA,EAAAC,UAAA;IAAAZ,IAAA,EAAAa;EAAA,IAAAN,EAIN;EAHS;IAAAO,OAAA,EAAAC,YAAA;IAAAC,MAAA,EAAAC;EAAA,IAAAP,EAA8C;EAIhD;IAAAJ,KAAA,EAAAY;EAAA,IAAAT,EAAqB;EAIjC;IAAAU,WAAA,EAAAC;EAAA,IAEItD,aAAA;EADW;IAAAuD,CAAA,EAAAC;EAAA,IAAAF,EAAiB;EAGhC,MAAAG,QAAA,GAAiBC,OAAA,CAAQF,UAAA;EAEzB,OAAAG,mBAAA,EAAAC,sBAAA,IAAsDxD,QAAA,KAEpD;EAKF,OAAAyD,eAAA,EAAAC,kBAAA,IAA8C1D,QAAA,EAAS;EAAA,IAAA2D,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAtC,CAAA,QAAA+B,QAAA;IAE7CM,EAAA,GAAAA,CAAA;MAAA,KACHN,QAAA;QACHG,sBAAA,KAAuB;MAAA;IAAA;IAExBI,EAAA,IAACP,QAAA;IAAS/B,CAAA,MAAA+B,QAAA;IAAA/B,CAAA,MAAAqC,EAAA;IAAArC,CAAA,MAAAsC,EAAA;EAAA;IAAAD,EAAA,GAAArC,CAAA;IAAAsC,EAAA,GAAAtC,CAAA;EAAA;EAJbvB,SAAA,CAAU4D,EAIV,EAAGC,EAAU;EAEb,MAAAC,oBAAA,GAA6B1B,eAAA;IAAA2B,cAAA,EAAkCnB;EAAA,CAAS;EACxE,MAAAoB,UAAA,GAAmBF,oBAAA,EAAAzB,KAAA,EAAA2B,UAAA,IAA2C;EAC9D,MAAAC,UAAA,GACED,UAAA,KAAe,WAAWjC,IAAA,GAAOA,IAAiC,CAACiC,UAAA,IAAAA,SAAc;EACnF,MAAAE,WAAA,GAAoB,OAAOD,UAAA,KAAe,WAAWA,UAAA,GAAAnC,SAAa;EAElE,MAAAqC,UAAA,GAAmBpC,IAAA,EAAAqC,QAAA,IAAkBrC,IAAA,EAAAsC,KAAM,IAAS;EACpD,MAAAC,oBAAA,GAA6BC,KAAA,CAAAC,OAAA,CAAcxC,eAAA,KAAoBA,eAAA,CAAAyC,MAAA,IAAyB;EACxF,MAAAC,aAAA,GAAsB/B,UAAA,KAAe;EACrC,MAAAgC,gBAAA,GAAyBjD,kBAAA,CAAAkD,IAAA,CAAAC,KAAwD;EACjF,MAAAC,oBAAA,GAA6BJ,aAAA,IAAiBJ,oBAAA;EAE9C,MAAAS,UAAA,GAAmBjF,cAAA;IAAAmD,UAAA;IAAA+B,IAAA,EAAmChC;EAAA,CAAY;EAClE,MAAAiC,WAAA,GAAoBnF,cAAA;IAAAmD,UAAA;IAAA+B,IAAA,EAAmClC;EAAA,CAAa;EAAA,IAAAoC,GAAA;EAAA,IAAA3D,CAAA,QAAA4D,MAAA,CAAAC,GAAA;IAOjDF,GAAA,GAAAA,CAAA;MACbzB,sBAAA,KAAuB;MACvBE,kBAAA,CAAA0B,MAAkC;IAAA;IACpC9D,CAAA,MAAA2D,GAAA;EAAA;IAAAA,GAAA,GAAA3D,CAAA;EAAA;EAAA,IAAA+D,GAAA;EAAA,IAAA/D,CAAA,QAAA4C,UAAA,IAAA5C,CAAA,QAAAK,SAAA,IAAAL,CAAA,QAAAU,CAAA,IAAAV,CAAA,QAAA2C,WAAA;IACcoB,GAAA,GAAAC,GAAA;MAAC;QAAAC,MAAA;QAAA,GAAAC;MAAA,IAAAF,GAAwB;MAAA,OACrCG,IAAA,CAAC;QAAA,GACKD,SAAS;QAAA,cACDxD,CAAA,CAAE;QAAA0D,SAAA,EACH,CACT,GAAAvE,SAAA,WAAuB,EACvBoE,MAAA,IAAU,GAAApE,SAAA,mBAA+B,EACzCQ,SAAA,IAAa,GAAAR,SAAA,uBAAmC,EAAAwE,MAAA,CAAArC,OAExC,EAAAsC,IAAA,CACF;QAAAC,IAAA,EACH;QAAAC,QAAA,EAELC,KAAA,CAAC;UAAAL,SAAA,EAAe,GAAAvE,SAAA,mBAA+B;UAAA2E,QAAA,GAC5CnE,SAAA,KAAcsC,WAAA,IAAeC,UAAS,KACrCuB,IAAA,CAAC;YAAAC,SAAA,EAAa,GAAAvE,SAAA,iBAA6B;YAAA2E,QAAA,EAAG7B,WAAA,IAAeC;UAAA,C,GAE/DuB,IAAA,CAAAvF,WAAA;YAAA8F,SAAA,EAAuB;YAAAC,IAAA;UAAA,C;;;;;;;;;;;;SAzB/BR,IAAA,CAAAjF,KAAA;IAAA0F,KAAA;IAAAR,SAAA,EAAAvE,SAAA;IAAAgF,eAAA,EAGkB;IAAAC,aAAA,EACDnB,GAGf;IAAAoB,YAAA,EACchB,G;;UAsBT;IAAA5C,KAAA,EACC;IAAA6D,aAAA,EACQ;IAAAR,QAAA,EAEbzC,QAAA,IAAYE,mBAAA,GAEXwC,KAAA,CAAAQ,SAAA;MAAAT,QAAA,GACGvC,mBAAA,KAAwB,WACvBwC,KAAA,CAAAQ,SAAA;QAAAT,QAAA,GACEL,IAAA,CAAAzE,aAAA;UAAAwF,MAAA,EAAAA,CAAA,KACgBhD,sBAAA,KAAuB;UAAAiD,KAAA,EAC9BzE,CAAA,CAAE;QAAA,C,GAEXyD,IAAA,CAAAvE,gBAAA,IAAC;MAAA,C,GAGJqC,mBAAA,KAAwB,cACvBwC,KAAA,CAAAQ,SAAA;QAAAT,QAAA,GACEL,IAAA,CAAAzE,aAAA;UAAAwF,MAAA,EAAAA,CAAA,KACgBhD,sBAAA,KAAuB;UAAAiD,KAAA,EAC9BzE,CAAA,CAAE;QAAA,C,GAEXyD,IAAA,CAAA5E,mBAAA,IAAC;MAAA,C,GAGJ0C,mBAAA,KAAwB,cACvBwC,KAAA,CAAAQ,SAAA;QAAAT,QAAA,GACEL,IAAA,CAAAzE,aAAA;UAAAwF,MAAA,EAAAA,CAAA,KACgBhD,sBAAA,KAAuB;UAAAiD,KAAA,EAC9BzE,CAAA,CAAE;QAAA,C,GAEXyD,IAAA,CAAA1E,mBAAA;UAAA2F,MAAA,EAA6BjF;QAAA,C;;SAMnCsE,KAAA,CAAAQ,SAAA;MAAAT,QAAA,GAEEC,KAAA,CAAC;QAAAL,SAAA,EAAa,GAAAvE,SAAA,WAAuB;QAAAwF,IAAA,EAAQ3B,WAAA;QAAAc,QAAA,GAC3CL,IAAA,CAAC;UAAAC,SAAA,EAAe,GAAAvE,SAAA,UAAsB;UAAA2E,QAAA,EACpCL,IAAA,CAAA/E,qBAAA;YAAAkG,eAAA,EAAwCrF,YAAA;YAAAsF,QAAA,EAAwBpB,IAAA,CAAAxF,OAAA,IAAC;UAAA,C;YAEnE8F,KAAA,CAAC;UAAAD,QAAA,GACE7B,WAAA,IAAewB,IAAA,CAAC;YAAAC,SAAA,EAAa,GAAAvE,SAAA,QAAoB;YAAA2E,QAAA,EAAG7B;UAAA,C,GACpDC,UAAA,IAAcuB,IAAA,CAAC;YAAAC,SAAA,EAAa,GAAAvE,SAAA,cAA0B;YAAA2E,QAAA,EAAG5B;UAAA,C;;UAI9D6B,KAAA,CAAApF,yBAAA;QAAAmF,QAAA,GAEGjB,oBAAA,IACCkB,KAAA,CAAAQ,SAAA;UAAAT,QAAA,GACGrB,aAAA,IACCgB,IAAA,CAAAhF,SAAA,CAAAqG,QAAA;YAAAhB,QAAA,EACEL,IAAA,CAAAxE,SAAA;cAAA8F,YAAA,EAEgB1D,QAAA,SAAiBG,sBAAA,CAAuB,WAAA3B;YAAW,GAD5D4B,eAAA;UAAA,C,GAKVY,oBAAA,IACCoB,IAAA,CAAAhF,SAAA,CAAAqG,QAAA;YAAAhB,QAAA,EACEL,IAAA,CAAA7E,YAAA;cAAAmG,YAAA,EAEgB1D,QAAA,SAAiBG,sBAAA,CAAuB,cAAA3B;YAAc,GAD/D4B,eAAA;UAAA,C;YAQfgC,IAAA,CAAAlF,aAAA,IAAC,GAGAmE,gBAAA,IACCqB,KAAA,CAAAQ,SAAA;UAAAT,QAAA,GACEL,IAAA,CAAAhF,SAAA,CAAAqG,QAAA;YAAAhB,QAAA,EACEL,IAAA,CAAA3E,YAAA;cAAA4F,MAAA,EACUjF,kBAAA;cAAAsF,YAAA,EAEM1D,QAAA,SAAiBG,sBAAA,CAAuB,cAAA3B;YAAc,GAD/D4B,eAAA;UAAA,C,GAITgC,IAAA,CAAAlF,aAAA,IAAC;QAAA,C;UAMPkF,IAAA,CAAAhF,SAAA,CAAAqG,QAAA;QAAAhB,QAAA,EACGtE,kBAAA,IACCiE,IAAA,CAAAhF,SAAA,CAAAuG,MAAA;UAAAL,IAAA,EAAwB7B,UAAA;UAAAmC,IAAA,EAAkBxB,IAAA,CAAAtF,UAAA,IAAC;UAAA2F,QAAA,EACxC9D,CAAA,CAAE;QAAA,C;;;;CAQnB;AA3LiD,SAAA4C,MAAAsC,KAAA;EAAA,OAiDaA,KAAA,CAAAC,KAAA,CAAA3C,MAAA,IAAqB;AAAA;AAjDlC,SAAAY,OAAAgC,GAAA;EAAA,OA8DbA,GAAA,IAAM;AAAA","ignoreList":[]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Opens a submenu on hover and keeps it open while the cursor is inside the trigger, the
|
|
3
|
+
* content, the trough between them, or the funnel-shaped safe zone connecting the two -
|
|
4
|
+
* closing once it has genuinely left all of those for `HOVER_CLOSE_DELAY`.
|
|
5
|
+
*
|
|
6
|
+
* `id` identifies this submenu within its `HoverSubmenuGroupProvider` (if any) - when
|
|
7
|
+
* a sibling submenu becomes active, this one closes immediately rather than waiting on
|
|
8
|
+
* its own hover-out timer.
|
|
9
|
+
*/
|
|
10
|
+
export declare const useHoverSubmenu: (id: string) => {
|
|
11
|
+
close: () => void;
|
|
12
|
+
contentRef: import("react").RefObject<HTMLElement>;
|
|
13
|
+
isOpen: boolean;
|
|
14
|
+
keepOpen: () => void;
|
|
15
|
+
open: (e?: {
|
|
16
|
+
clientX: number;
|
|
17
|
+
clientY: number;
|
|
18
|
+
}) => void;
|
|
19
|
+
triggerRef: import("react").RefObject<HTMLElement>;
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=useHoverSubmenu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHoverSubmenu.d.ts","sourceRoot":"","sources":["../../../src/elements/UserMenu/useHoverSubmenu.ts"],"names":[],"mappings":"AAuHA;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,OAAQ,MAAM;;;;;eA2BjC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;;CAwH5C,CAAA"}
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
|
|
3
|
+
import { c as _c } from "react/compiler-runtime";
|
|
4
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
5
|
+
import { useHoverSubmenuGroup } from './HoverSubmenuGroup.js';
|
|
6
|
+
const HOVER_CLOSE_DELAY = 75;
|
|
7
|
+
const POLYGON_BUFFER = 2;
|
|
8
|
+
const isInsideRect = (x, y, rect) => x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom;
|
|
9
|
+
const isInsideAxisAlignedRect = (x, y, x1, y1, x2, y2) => {
|
|
10
|
+
const minX = Math.min(x1, x2);
|
|
11
|
+
const maxX = Math.max(x1, x2);
|
|
12
|
+
const minY = Math.min(y1, y2);
|
|
13
|
+
const maxY = Math.max(y1, y2);
|
|
14
|
+
return x >= minX && x <= maxX && y >= minY && y <= maxY;
|
|
15
|
+
};
|
|
16
|
+
const hasIntersectingEdge = (px, py, xi, yi, xj, yj) => yi >= py !== yj >= py && px <= (xj - xi) * (py - yi) / (yj - yi) + xi;
|
|
17
|
+
/** Ray-casting point-in-polygon test, ported from Floating UI's `safePolygon`. */
|
|
18
|
+
const isPointInPolygon = (px, py, points) => {
|
|
19
|
+
let inside = false;
|
|
20
|
+
for (let i = 0; i < points.length; i++) {
|
|
21
|
+
const [xi, yi] = points[i];
|
|
22
|
+
const [xj, yj] = points[(i + 1) % points.length];
|
|
23
|
+
if (hasIntersectingEdge(px, py, xi, yi, xj, yj)) {
|
|
24
|
+
inside = !inside;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return inside;
|
|
28
|
+
};
|
|
29
|
+
/**
|
|
30
|
+
* Computes the funnel-shaped safe zone connecting `anchor` (the last cursor position over
|
|
31
|
+
* the trigger) to the content panel, ported from Floating UI's `safePolygon` 'left'/'right'
|
|
32
|
+
* cases. Unlike a bounding-box union, this narrows toward the panel, so hovering something
|
|
33
|
+
* far below/above the trigger-to-panel path (e.g. an unrelated item below a short submenu)
|
|
34
|
+
* correctly falls outside the zone.
|
|
35
|
+
*/
|
|
36
|
+
const getFunnelPolygon = (anchor, triggerRect, contentRect, contentIsLeft) => {
|
|
37
|
+
const isContentTaller = contentRect.height > triggerRect.height;
|
|
38
|
+
const leaveFromBottom = anchor.y > contentRect.bottom - contentRect.height / 2;
|
|
39
|
+
const yOffset = isContentTaller ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4;
|
|
40
|
+
const pointOneY = isContentTaller ? anchor.y + yOffset : leaveFromBottom ? anchor.y + yOffset : anchor.y - yOffset;
|
|
41
|
+
const pointTwoY = isContentTaller ? anchor.y - yOffset : leaveFromBottom ? anchor.y + yOffset : anchor.y - yOffset;
|
|
42
|
+
if (contentIsLeft) {
|
|
43
|
+
const cursorPointX = anchor.x + POLYGON_BUFFER + 1;
|
|
44
|
+
const commonXTop = leaveFromBottom ? contentRect.right - POLYGON_BUFFER : isContentTaller ? contentRect.right - POLYGON_BUFFER : contentRect.left;
|
|
45
|
+
const commonXBottom = leaveFromBottom ? isContentTaller ? contentRect.right - POLYGON_BUFFER : contentRect.left : contentRect.right - POLYGON_BUFFER;
|
|
46
|
+
return [[commonXTop, contentRect.top], [commonXBottom, contentRect.bottom], [cursorPointX, pointOneY], [cursorPointX, pointTwoY]];
|
|
47
|
+
}
|
|
48
|
+
const cursorPointX = anchor.x - POLYGON_BUFFER;
|
|
49
|
+
const commonXTop = leaveFromBottom ? contentRect.left + POLYGON_BUFFER : isContentTaller ? contentRect.left + POLYGON_BUFFER : contentRect.right;
|
|
50
|
+
const commonXBottom = leaveFromBottom ? isContentTaller ? contentRect.left + POLYGON_BUFFER : contentRect.right : contentRect.left + POLYGON_BUFFER;
|
|
51
|
+
return [[cursorPointX, pointOneY], [cursorPointX, pointTwoY], [commonXTop, contentRect.top], [commonXBottom, contentRect.bottom]];
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Opens a submenu on hover and keeps it open while the cursor is inside the trigger, the
|
|
55
|
+
* content, the trough between them, or the funnel-shaped safe zone connecting the two -
|
|
56
|
+
* closing once it has genuinely left all of those for `HOVER_CLOSE_DELAY`.
|
|
57
|
+
*
|
|
58
|
+
* `id` identifies this submenu within its `HoverSubmenuGroupProvider` (if any) - when
|
|
59
|
+
* a sibling submenu becomes active, this one closes immediately rather than waiting on
|
|
60
|
+
* its own hover-out timer.
|
|
61
|
+
*/
|
|
62
|
+
export const useHoverSubmenu = id => {
|
|
63
|
+
const $ = _c(21);
|
|
64
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
65
|
+
const closeTimeoutRef = useRef(null);
|
|
66
|
+
const triggerRef = useRef(null);
|
|
67
|
+
const contentRef = useRef(null);
|
|
68
|
+
const anchorRef = useRef(null);
|
|
69
|
+
const hasLandedRef = useRef(false);
|
|
70
|
+
const group = useHoverSubmenuGroup();
|
|
71
|
+
let t0;
|
|
72
|
+
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
73
|
+
t0 = () => {
|
|
74
|
+
if (closeTimeoutRef.current) {
|
|
75
|
+
clearTimeout(closeTimeoutRef.current);
|
|
76
|
+
closeTimeoutRef.current = null;
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
$[0] = t0;
|
|
80
|
+
} else {
|
|
81
|
+
t0 = $[0];
|
|
82
|
+
}
|
|
83
|
+
const cancelClose = t0;
|
|
84
|
+
let t1;
|
|
85
|
+
if ($[1] === Symbol.for("react.memo_cache_sentinel")) {
|
|
86
|
+
t1 = () => {
|
|
87
|
+
if (closeTimeoutRef.current) {
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
closeTimeoutRef.current = setTimeout(() => {
|
|
91
|
+
setIsOpen(false);
|
|
92
|
+
closeTimeoutRef.current = null;
|
|
93
|
+
}, HOVER_CLOSE_DELAY);
|
|
94
|
+
};
|
|
95
|
+
$[1] = t1;
|
|
96
|
+
} else {
|
|
97
|
+
t1 = $[1];
|
|
98
|
+
}
|
|
99
|
+
const scheduleClose = t1;
|
|
100
|
+
let t2;
|
|
101
|
+
if ($[2] !== group || $[3] !== id) {
|
|
102
|
+
t2 = e => {
|
|
103
|
+
cancelClose();
|
|
104
|
+
hasLandedRef.current = false;
|
|
105
|
+
if (e) {
|
|
106
|
+
anchorRef.current = {
|
|
107
|
+
x: e.clientX,
|
|
108
|
+
y: e.clientY
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
group?.setActiveId(id);
|
|
112
|
+
setIsOpen(true);
|
|
113
|
+
};
|
|
114
|
+
$[2] = group;
|
|
115
|
+
$[3] = id;
|
|
116
|
+
$[4] = t2;
|
|
117
|
+
} else {
|
|
118
|
+
t2 = $[4];
|
|
119
|
+
}
|
|
120
|
+
const open = t2;
|
|
121
|
+
let t3;
|
|
122
|
+
if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
|
|
123
|
+
t3 = () => {
|
|
124
|
+
cancelClose();
|
|
125
|
+
hasLandedRef.current = true;
|
|
126
|
+
};
|
|
127
|
+
$[5] = t3;
|
|
128
|
+
} else {
|
|
129
|
+
t3 = $[5];
|
|
130
|
+
}
|
|
131
|
+
const keepOpen = t3;
|
|
132
|
+
let t4;
|
|
133
|
+
if ($[6] !== group || $[7] !== id) {
|
|
134
|
+
t4 = () => {
|
|
135
|
+
cancelClose();
|
|
136
|
+
setIsOpen(false);
|
|
137
|
+
group?.setActiveId(current => current === id ? null : current);
|
|
138
|
+
};
|
|
139
|
+
$[6] = group;
|
|
140
|
+
$[7] = id;
|
|
141
|
+
$[8] = t4;
|
|
142
|
+
} else {
|
|
143
|
+
t4 = $[8];
|
|
144
|
+
}
|
|
145
|
+
const close = t4;
|
|
146
|
+
let t5;
|
|
147
|
+
let t6;
|
|
148
|
+
if ($[9] !== group || $[10] !== id || $[11] !== isOpen) {
|
|
149
|
+
t5 = () => {
|
|
150
|
+
if (isOpen && group && group.activeId !== null && group.activeId !== id) {
|
|
151
|
+
cancelClose();
|
|
152
|
+
setIsOpen(false);
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
t6 = [group, isOpen, id, cancelClose];
|
|
156
|
+
$[9] = group;
|
|
157
|
+
$[10] = id;
|
|
158
|
+
$[11] = isOpen;
|
|
159
|
+
$[12] = t5;
|
|
160
|
+
$[13] = t6;
|
|
161
|
+
} else {
|
|
162
|
+
t5 = $[12];
|
|
163
|
+
t6 = $[13];
|
|
164
|
+
}
|
|
165
|
+
useEffect(t5, t6);
|
|
166
|
+
let t7;
|
|
167
|
+
let t8;
|
|
168
|
+
if ($[14] !== isOpen) {
|
|
169
|
+
t7 = () => {
|
|
170
|
+
if (!isOpen) {
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
const handlePointerMove = e_0 => {
|
|
174
|
+
const triggerRect = triggerRef.current?.getBoundingClientRect();
|
|
175
|
+
const contentRect = contentRef.current?.getBoundingClientRect();
|
|
176
|
+
if (!triggerRect || !contentRect) {
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
const {
|
|
180
|
+
clientX,
|
|
181
|
+
clientY
|
|
182
|
+
} = e_0;
|
|
183
|
+
if (isInsideRect(clientX, clientY, triggerRect)) {
|
|
184
|
+
anchorRef.current = {
|
|
185
|
+
x: clientX,
|
|
186
|
+
y: clientY
|
|
187
|
+
};
|
|
188
|
+
hasLandedRef.current = false;
|
|
189
|
+
cancelClose();
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
if (isInsideRect(clientX, clientY, contentRect)) {
|
|
193
|
+
hasLandedRef.current = true;
|
|
194
|
+
cancelClose();
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
const contentIsLeft = contentRect.right <= triggerRect.left + 1;
|
|
198
|
+
const isContentTaller = contentRect.height > triggerRect.height;
|
|
199
|
+
const boundTop = (isContentTaller ? triggerRect : contentRect).top;
|
|
200
|
+
const boundBottom = (isContentTaller ? triggerRect : contentRect).bottom;
|
|
201
|
+
const movedPastTrigger = contentIsLeft ? clientX >= triggerRect.right - 1 : clientX <= triggerRect.left + 1;
|
|
202
|
+
const troughX1 = contentIsLeft ? contentRect.right - 1 : triggerRect.right - 1;
|
|
203
|
+
const troughX2 = contentIsLeft ? triggerRect.left + 1 : contentRect.left + 1;
|
|
204
|
+
const isInsideTrough = isInsideAxisAlignedRect(clientX, clientY, troughX1, boundBottom, troughX2, boundTop);
|
|
205
|
+
if (movedPastTrigger) {
|
|
206
|
+
scheduleClose();
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
if (isInsideTrough) {
|
|
210
|
+
cancelClose();
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
if (hasLandedRef.current) {
|
|
214
|
+
scheduleClose();
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
const anchor = anchorRef.current ?? {
|
|
218
|
+
x: contentIsLeft ? triggerRect.left : triggerRect.right,
|
|
219
|
+
y: (triggerRect.top + triggerRect.bottom) / 2
|
|
220
|
+
};
|
|
221
|
+
const polygon = getFunnelPolygon(anchor, triggerRect, contentRect, contentIsLeft);
|
|
222
|
+
const isInsidePolygon = isPointInPolygon(clientX, clientY, polygon);
|
|
223
|
+
if (isInsidePolygon) {
|
|
224
|
+
cancelClose();
|
|
225
|
+
} else {
|
|
226
|
+
scheduleClose();
|
|
227
|
+
}
|
|
228
|
+
};
|
|
229
|
+
document.addEventListener("mousemove", handlePointerMove);
|
|
230
|
+
return () => document.removeEventListener("mousemove", handlePointerMove);
|
|
231
|
+
};
|
|
232
|
+
t8 = [isOpen, cancelClose, scheduleClose];
|
|
233
|
+
$[14] = isOpen;
|
|
234
|
+
$[15] = t7;
|
|
235
|
+
$[16] = t8;
|
|
236
|
+
} else {
|
|
237
|
+
t7 = $[15];
|
|
238
|
+
t8 = $[16];
|
|
239
|
+
}
|
|
240
|
+
useEffect(t7, t8);
|
|
241
|
+
let t9;
|
|
242
|
+
if ($[17] !== close || $[18] !== isOpen || $[19] !== open) {
|
|
243
|
+
t9 = {
|
|
244
|
+
close,
|
|
245
|
+
contentRef,
|
|
246
|
+
isOpen,
|
|
247
|
+
keepOpen,
|
|
248
|
+
open,
|
|
249
|
+
triggerRef
|
|
250
|
+
};
|
|
251
|
+
$[17] = close;
|
|
252
|
+
$[18] = isOpen;
|
|
253
|
+
$[19] = open;
|
|
254
|
+
$[20] = t9;
|
|
255
|
+
} else {
|
|
256
|
+
t9 = $[20];
|
|
257
|
+
}
|
|
258
|
+
return t9;
|
|
259
|
+
};
|
|
260
|
+
//# sourceMappingURL=useHoverSubmenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHoverSubmenu.js","names":["c","_c","useCallback","useEffect","useRef","useState","useHoverSubmenuGroup","HOVER_CLOSE_DELAY","POLYGON_BUFFER","isInsideRect","x","y","rect","left","right","top","bottom","isInsideAxisAlignedRect","x1","y1","x2","y2","minX","Math","min","maxX","max","minY","maxY","hasIntersectingEdge","px","py","xi","yi","xj","yj","isPointInPolygon","points","inside","i","length","getFunnelPolygon","anchor","triggerRect","contentRect","contentIsLeft","isContentTaller","height","leaveFromBottom","yOffset","pointOneY","pointTwoY","cursorPointX","commonXTop","commonXBottom","useHoverSubmenu","id","$","isOpen","setIsOpen","closeTimeoutRef","triggerRef","contentRef","anchorRef","hasLandedRef","group","t0","Symbol","for","current","clearTimeout","cancelClose","t1","setTimeout","scheduleClose","t2","e","clientX","clientY","setActiveId","open","t3","keepOpen","t4","close","t5","t6","activeId","t7","t8","handlePointerMove","e_0","getBoundingClientRect","boundTop","boundBottom","movedPastTrigger","troughX1","troughX2","isInsideTrough","polygon","isInsidePolygon","document","addEventListener","removeEventListener","t9"],"sources":["../../../src/elements/UserMenu/useHoverSubmenu.ts"],"sourcesContent":["'use client'\nimport { useCallback, useEffect, useRef, useState } from 'react'\n\nimport { useHoverSubmenuGroup } from './HoverSubmenuGroup.js'\n\nconst HOVER_CLOSE_DELAY = 75\nconst POLYGON_BUFFER = 2\n\ntype Point = [x: number, y: number]\n\nconst isInsideRect = (x: number, y: number, rect: DOMRect) =>\n x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom\n\nconst isInsideAxisAlignedRect = (\n x: number,\n y: number,\n x1: number,\n y1: number,\n x2: number,\n y2: number,\n) => {\n const minX = Math.min(x1, x2)\n const maxX = Math.max(x1, x2)\n const minY = Math.min(y1, y2)\n const maxY = Math.max(y1, y2)\n return x >= minX && x <= maxX && y >= minY && y <= maxY\n}\n\nconst hasIntersectingEdge = (\n px: number,\n py: number,\n xi: number,\n yi: number,\n xj: number,\n yj: number,\n) => yi >= py !== yj >= py && px <= ((xj - xi) * (py - yi)) / (yj - yi) + xi\n\n/** Ray-casting point-in-polygon test, ported from Floating UI's `safePolygon`. */\nconst isPointInPolygon = (px: number, py: number, points: Point[]) => {\n let inside = false\n for (let i = 0; i < points.length; i++) {\n const [xi, yi] = points[i]\n const [xj, yj] = points[(i + 1) % points.length]\n if (hasIntersectingEdge(px, py, xi, yi, xj, yj)) {\n inside = !inside\n }\n }\n return inside\n}\n\n/**\n * Computes the funnel-shaped safe zone connecting `anchor` (the last cursor position over\n * the trigger) to the content panel, ported from Floating UI's `safePolygon` 'left'/'right'\n * cases. Unlike a bounding-box union, this narrows toward the panel, so hovering something\n * far below/above the trigger-to-panel path (e.g. an unrelated item below a short submenu)\n * correctly falls outside the zone.\n */\nconst getFunnelPolygon = (\n anchor: { x: number; y: number },\n triggerRect: DOMRect,\n contentRect: DOMRect,\n contentIsLeft: boolean,\n): Point[] => {\n const isContentTaller = contentRect.height > triggerRect.height\n const leaveFromBottom = anchor.y > contentRect.bottom - contentRect.height / 2\n\n const yOffset = isContentTaller ? POLYGON_BUFFER / 2 : POLYGON_BUFFER * 4\n const pointOneY = isContentTaller\n ? anchor.y + yOffset\n : leaveFromBottom\n ? anchor.y + yOffset\n : anchor.y - yOffset\n const pointTwoY = isContentTaller\n ? anchor.y - yOffset\n : leaveFromBottom\n ? anchor.y + yOffset\n : anchor.y - yOffset\n\n if (contentIsLeft) {\n const cursorPointX = anchor.x + POLYGON_BUFFER + 1\n const commonXTop = leaveFromBottom\n ? contentRect.right - POLYGON_BUFFER\n : isContentTaller\n ? contentRect.right - POLYGON_BUFFER\n : contentRect.left\n const commonXBottom = leaveFromBottom\n ? isContentTaller\n ? contentRect.right - POLYGON_BUFFER\n : contentRect.left\n : contentRect.right - POLYGON_BUFFER\n\n return [\n [commonXTop, contentRect.top],\n [commonXBottom, contentRect.bottom],\n [cursorPointX, pointOneY],\n [cursorPointX, pointTwoY],\n ]\n }\n\n const cursorPointX = anchor.x - POLYGON_BUFFER\n const commonXTop = leaveFromBottom\n ? contentRect.left + POLYGON_BUFFER\n : isContentTaller\n ? contentRect.left + POLYGON_BUFFER\n : contentRect.right\n const commonXBottom = leaveFromBottom\n ? isContentTaller\n ? contentRect.left + POLYGON_BUFFER\n : contentRect.right\n : contentRect.left + POLYGON_BUFFER\n\n return [\n [cursorPointX, pointOneY],\n [cursorPointX, pointTwoY],\n [commonXTop, contentRect.top],\n [commonXBottom, contentRect.bottom],\n ]\n}\n\n/**\n * Opens a submenu on hover and keeps it open while the cursor is inside the trigger, the\n * content, the trough between them, or the funnel-shaped safe zone connecting the two -\n * closing once it has genuinely left all of those for `HOVER_CLOSE_DELAY`.\n *\n * `id` identifies this submenu within its `HoverSubmenuGroupProvider` (if any) - when\n * a sibling submenu becomes active, this one closes immediately rather than waiting on\n * its own hover-out timer.\n */\nexport const useHoverSubmenu = (id: string) => {\n const [isOpen, setIsOpen] = useState(false)\n const closeTimeoutRef = useRef<null | ReturnType<typeof setTimeout>>(null)\n const triggerRef = useRef<HTMLElement | null>(null)\n const contentRef = useRef<HTMLElement | null>(null)\n const anchorRef = useRef<{ x: number; y: number } | null>(null)\n const hasLandedRef = useRef(false)\n const group = useHoverSubmenuGroup()\n\n const cancelClose = useCallback(() => {\n if (closeTimeoutRef.current) {\n clearTimeout(closeTimeoutRef.current)\n closeTimeoutRef.current = null\n }\n }, [])\n\n const scheduleClose = useCallback(() => {\n if (closeTimeoutRef.current) {\n return\n }\n closeTimeoutRef.current = setTimeout(() => {\n setIsOpen(false)\n closeTimeoutRef.current = null\n }, HOVER_CLOSE_DELAY)\n }, [])\n\n const open = useCallback(\n (e?: { clientX: number; clientY: number }) => {\n cancelClose()\n hasLandedRef.current = false\n if (e) {\n anchorRef.current = { x: e.clientX, y: e.clientY }\n }\n group?.setActiveId(id)\n setIsOpen(true)\n },\n [cancelClose, group, id],\n )\n\n // For the content panel's own onMouseEnter - just cancels a pending close and marks us\n // as \"landed\", without touching the trigger anchor point `open()` seeds.\n const keepOpen = useCallback(() => {\n cancelClose()\n hasLandedRef.current = true\n }, [cancelClose])\n\n const close = useCallback(() => {\n cancelClose()\n setIsOpen(false)\n group?.setActiveId((current) => (current === id ? null : current))\n }, [cancelClose, group, id])\n\n // A sibling became active (its trigger was hovered) - force-close this one now,\n // instead of relying on this submenu's own hover-zone timeout to eventually catch up.\n useEffect(() => {\n if (isOpen && group && group.activeId !== null && group.activeId !== id) {\n cancelClose()\n setIsOpen(false)\n }\n }, [group, isOpen, id, cancelClose])\n\n useEffect(() => {\n if (!isOpen) {\n return\n }\n\n const handlePointerMove = (e: MouseEvent) => {\n const triggerRect = triggerRef.current?.getBoundingClientRect()\n const contentRect = contentRef.current?.getBoundingClientRect()\n if (!triggerRect || !contentRect) {\n return\n }\n\n const { clientX, clientY } = e\n\n if (isInsideRect(clientX, clientY, triggerRect)) {\n anchorRef.current = { x: clientX, y: clientY }\n hasLandedRef.current = false\n cancelClose()\n return\n }\n\n if (isInsideRect(clientX, clientY, contentRect)) {\n hasLandedRef.current = true\n cancelClose()\n return\n }\n\n const contentIsLeft = contentRect.right <= triggerRect.left + 1\n const isContentTaller = contentRect.height > triggerRect.height\n const boundTop = (isContentTaller ? triggerRect : contentRect).top\n const boundBottom = (isContentTaller ? triggerRect : contentRect).bottom\n\n // Cursor has already moved past the trigger, away from the content entirely - no\n // amount of funnel forgiveness should keep it open.\n const movedPastTrigger = contentIsLeft\n ? clientX >= triggerRect.right - 1\n : clientX <= triggerRect.left + 1\n\n // The strip directly between the trigger and content is always safe, regardless of\n // funnel shape - prevents flapping when moving back and forth in the gap.\n const troughX1 = contentIsLeft ? contentRect.right - 1 : triggerRect.right - 1\n const troughX2 = contentIsLeft ? triggerRect.left + 1 : contentRect.left + 1\n const isInsideTrough = isInsideAxisAlignedRect(\n clientX,\n clientY,\n troughX1,\n boundBottom,\n troughX2,\n boundTop,\n )\n\n if (movedPastTrigger) {\n scheduleClose()\n return\n }\n\n if (isInsideTrough) {\n cancelClose()\n return\n }\n\n if (hasLandedRef.current) {\n scheduleClose()\n return\n }\n\n const anchor = anchorRef.current ?? {\n x: contentIsLeft ? triggerRect.left : triggerRect.right,\n y: (triggerRect.top + triggerRect.bottom) / 2,\n }\n\n const polygon = getFunnelPolygon(anchor, triggerRect, contentRect, contentIsLeft)\n const isInsidePolygon = isPointInPolygon(clientX, clientY, polygon)\n\n if (isInsidePolygon) {\n cancelClose()\n } else {\n scheduleClose()\n }\n }\n\n document.addEventListener('mousemove', handlePointerMove)\n return () => document.removeEventListener('mousemove', handlePointerMove)\n }, [isOpen, cancelClose, scheduleClose])\n\n return { close, contentRef, isOpen, keepOpen, open, triggerRef }\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AACA,SAASC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAEzD,SAASC,oBAAoB,QAAQ;AAErC,MAAMC,iBAAA,GAAoB;AAC1B,MAAMC,cAAA,GAAiB;AAIvB,MAAMC,YAAA,GAAeA,CAACC,CAAA,EAAWC,CAAA,EAAWC,IAAA,KAC1CF,CAAA,IAAKE,IAAA,CAAKC,IAAI,IAAIH,CAAA,IAAKE,IAAA,CAAKE,KAAK,IAAIH,CAAA,IAAKC,IAAA,CAAKG,GAAG,IAAIJ,CAAA,IAAKC,IAAA,CAAKI,MAAM;AAExE,MAAMC,uBAAA,GAA0BA,CAC9BP,CAAA,EACAC,CAAA,EACAO,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA;EAEA,MAAMC,IAAA,GAAOC,IAAA,CAAKC,GAAG,CAACN,EAAA,EAAIE,EAAA;EAC1B,MAAMK,IAAA,GAAOF,IAAA,CAAKG,GAAG,CAACR,EAAA,EAAIE,EAAA;EAC1B,MAAMO,IAAA,GAAOJ,IAAA,CAAKC,GAAG,CAACL,EAAA,EAAIE,EAAA;EAC1B,MAAMO,IAAA,GAAOL,IAAA,CAAKG,GAAG,CAACP,EAAA,EAAIE,EAAA;EAC1B,OAAOX,CAAA,IAAKY,IAAA,IAAQZ,CAAA,IAAKe,IAAA,IAAQd,CAAA,IAAKgB,IAAA,IAAQhB,CAAA,IAAKiB,IAAA;AACrD;AAEA,MAAMC,mBAAA,GAAsBA,CAC1BC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,EACAC,EAAA,KACGF,EAAA,IAAMF,EAAA,KAAOI,EAAA,IAAMJ,EAAA,IAAMD,EAAA,IAAM,CAAEI,EAAA,GAAKF,EAAC,KAAMD,EAAA,GAAKE,EAAC,KAAOE,EAAA,GAAKF,EAAC,IAAKD,EAAA;AAE1E;AACA,MAAMI,gBAAA,GAAmBA,CAACN,EAAA,EAAYC,EAAA,EAAYM,MAAA;EAChD,IAAIC,MAAA,GAAS;EACb,KAAK,IAAIC,CAAA,GAAI,GAAGA,CAAA,GAAIF,MAAA,CAAOG,MAAM,EAAED,CAAA,IAAK;IACtC,MAAM,CAACP,EAAA,EAAIC,EAAA,CAAG,GAAGI,MAAM,CAACE,CAAA,CAAE;IAC1B,MAAM,CAACL,EAAA,EAAIC,EAAA,CAAG,GAAGE,MAAM,CAAC,CAACE,CAAA,GAAI,KAAKF,MAAA,CAAOG,MAAM,CAAC;IAChD,IAAIX,mBAAA,CAAoBC,EAAA,EAAIC,EAAA,EAAIC,EAAA,EAAIC,EAAA,EAAIC,EAAA,EAAIC,EAAA,GAAK;MAC/CG,MAAA,GAAS,CAACA,MAAA;IACZ;EACF;EACA,OAAOA,MAAA;AACT;AAEA;;;;;;;AAOA,MAAMG,gBAAA,GAAmBA,CACvBC,MAAA,EACAC,WAAA,EACAC,WAAA,EACAC,aAAA;EAEA,MAAMC,eAAA,GAAkBF,WAAA,CAAYG,MAAM,GAAGJ,WAAA,CAAYI,MAAM;EAC/D,MAAMC,eAAA,GAAkBN,MAAA,CAAO/B,CAAC,GAAGiC,WAAA,CAAY5B,MAAM,GAAG4B,WAAA,CAAYG,MAAM,GAAG;EAE7E,MAAME,OAAA,GAAUH,eAAA,GAAkBtC,cAAA,GAAiB,IAAIA,cAAA,GAAiB;EACxE,MAAM0C,SAAA,GAAYJ,eAAA,GACdJ,MAAA,CAAO/B,CAAC,GAAGsC,OAAA,GACXD,eAAA,GACEN,MAAA,CAAO/B,CAAC,GAAGsC,OAAA,GACXP,MAAA,CAAO/B,CAAC,GAAGsC,OAAA;EACjB,MAAME,SAAA,GAAYL,eAAA,GACdJ,MAAA,CAAO/B,CAAC,GAAGsC,OAAA,GACXD,eAAA,GACEN,MAAA,CAAO/B,CAAC,GAAGsC,OAAA,GACXP,MAAA,CAAO/B,CAAC,GAAGsC,OAAA;EAEjB,IAAIJ,aAAA,EAAe;IACjB,MAAMO,YAAA,GAAeV,MAAA,CAAOhC,CAAC,GAAGF,cAAA,GAAiB;IACjD,MAAM6C,UAAA,GAAaL,eAAA,GACfJ,WAAA,CAAY9B,KAAK,GAAGN,cAAA,GACpBsC,eAAA,GACEF,WAAA,CAAY9B,KAAK,GAAGN,cAAA,GACpBoC,WAAA,CAAY/B,IAAI;IACtB,MAAMyC,aAAA,GAAgBN,eAAA,GAClBF,eAAA,GACEF,WAAA,CAAY9B,KAAK,GAAGN,cAAA,GACpBoC,WAAA,CAAY/B,IAAI,GAClB+B,WAAA,CAAY9B,KAAK,GAAGN,cAAA;IAExB,OAAO,CACL,CAAC6C,UAAA,EAAYT,WAAA,CAAY7B,GAAG,CAAC,EAC7B,CAACuC,aAAA,EAAeV,WAAA,CAAY5B,MAAM,CAAC,EACnC,CAACoC,YAAA,EAAcF,SAAA,CAAU,EACzB,CAACE,YAAA,EAAcD,SAAA,CAAU,CAC1B;EACH;EAEA,MAAMC,YAAA,GAAeV,MAAA,CAAOhC,CAAC,GAAGF,cAAA;EAChC,MAAM6C,UAAA,GAAaL,eAAA,GACfJ,WAAA,CAAY/B,IAAI,GAAGL,cAAA,GACnBsC,eAAA,GACEF,WAAA,CAAY/B,IAAI,GAAGL,cAAA,GACnBoC,WAAA,CAAY9B,KAAK;EACvB,MAAMwC,aAAA,GAAgBN,eAAA,GAClBF,eAAA,GACEF,WAAA,CAAY/B,IAAI,GAAGL,cAAA,GACnBoC,WAAA,CAAY9B,KAAK,GACnB8B,WAAA,CAAY/B,IAAI,GAAGL,cAAA;EAEvB,OAAO,CACL,CAAC4C,YAAA,EAAcF,SAAA,CAAU,EACzB,CAACE,YAAA,EAAcD,SAAA,CAAU,EACzB,CAACE,UAAA,EAAYT,WAAA,CAAY7B,GAAG,CAAC,EAC7B,CAACuC,aAAA,EAAeV,WAAA,CAAY5B,MAAM,CAAC,CACpC;AACH;AAEA;;;;;;;;;AASA,OAAO,MAAMuC,eAAA,GAAkBC,EAAA;EAAA,MAAAC,CAAA,GAAAxD,EAAA;EAC7B,OAAAyD,MAAA,EAAAC,SAAA,IAA4BtD,QAAA,MAAS;EACrC,MAAAuD,eAAA,GAAwBxD,MAAA,KAA6C;EACrE,MAAAyD,UAAA,GAAmBzD,MAAA,KAA2B;EAC9C,MAAA0D,UAAA,GAAmB1D,MAAA,KAA2B;EAC9C,MAAA2D,SAAA,GAAkB3D,MAAA,KAAwC;EAC1D,MAAA4D,YAAA,GAAqB5D,MAAA,MAAO;EAC5B,MAAA6D,KAAA,GAAc3D,oBAAA;EAAA,IAAA4D,EAAA;EAAA,IAAAT,CAAA,QAAAU,MAAA,CAAAC,GAAA;IAEkBF,EAAA,GAAAA,CAAA;MAAA,IAC1BN,eAAA,CAAAS,OAAA;QACFC,YAAA,CAAaV,eAAA,CAAAS,OAAuB;QACpCT,eAAA,CAAAS,OAAA;MAAA;IAAA;IAEJZ,CAAA,MAAAS,EAAA;EAAA;IAAAA,EAAA,GAAAT,CAAA;EAAA;EALA,MAAAc,WAAA,GAAoBL,EAKf;EAAA,IAAAM,EAAA;EAAA,IAAAf,CAAA,QAAAU,MAAA,CAAAC,GAAA;IAE6BI,EAAA,GAAAA,CAAA;MAAA,IAC5BZ,eAAA,CAAAS,OAAA;QAAA;MAAA;MAGJT,eAAA,CAAAS,OAAA,GAA0BI,UAAA;QACxBd,SAAA,MAAU;QACVC,eAAA,CAAAS,OAAA;MAAA,GAAA9D,iBACC;IAAA;IACLkD,CAAA,MAAAe,EAAA;EAAA;IAAAA,EAAA,GAAAf,CAAA;EAAA;EARA,MAAAiB,aAAA,GAAsBF,EAQjB;EAAA,IAAAG,EAAA;EAAA,IAAAlB,CAAA,QAAAQ,KAAA,IAAAR,CAAA,QAAAD,EAAA;IAGHmB,EAAA,GAAAC,CAAA;MACEL,WAAA;MACAP,YAAA,CAAAK,OAAA;MAAA,IACIO,CAAA;QACFb,SAAA,CAAAM,OAAA;UAAA3D,CAAA,EAAyBkE,CAAA,CAAAC,OAAA;UAAAlE,CAAA,EAAciE,CAAA,CAAAE;QAAA;MAAA;MAEzCb,KAAA,EAAAc,WAAA,CAAmBvB,EAAA;MACnBG,SAAA,KAAU;IAAA;IACZF,CAAA,MAAAQ,KAAA;IAAAR,CAAA,MAAAD,EAAA;IAAAC,CAAA,MAAAkB,EAAA;EAAA;IAAAA,EAAA,GAAAlB,CAAA;EAAA;EATF,MAAAuB,IAAA,GAAaL,EAUa;EAAA,IAAAM,EAAA;EAAA,IAAAxB,CAAA,QAAAU,MAAA,CAAAC,GAAA;IAKGa,EAAA,GAAAA,CAAA;MAC3BV,WAAA;MACAP,YAAA,CAAAK,OAAA;IAAA;IACFZ,CAAA,MAAAwB,EAAA;EAAA;IAAAA,EAAA,GAAAxB,CAAA;EAAA;EAHA,MAAAyB,QAAA,GAAiBD,EAGD;EAAA,IAAAE,EAAA;EAAA,IAAA1B,CAAA,QAAAQ,KAAA,IAAAR,CAAA,QAAAD,EAAA;IAEU2B,EAAA,GAAAA,CAAA;MACxBZ,WAAA;MACAZ,SAAA,MAAU;MACVM,KAAA,EAAAc,WAAA,CAAAV,OAAA,IAAiCA,OAAA,KAAYb,EAAA,UAAYa,OAAA;IAAA;IAC3DZ,CAAA,MAAAQ,KAAA;IAAAR,CAAA,MAAAD,EAAA;IAAAC,CAAA,MAAA0B,EAAA;EAAA;IAAAA,EAAA,GAAA1B,CAAA;EAAA;EAJA,MAAA2B,KAAA,GAAcD,EAIa;EAAA,IAAAE,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAA7B,CAAA,QAAAQ,KAAA,IAAAR,CAAA,SAAAD,EAAA,IAAAC,CAAA,SAAAC,MAAA;IAIjB2B,EAAA,GAAAA,CAAA;MAAA,IACJ3B,MAAA,IAAUO,KAAA,IAASA,KAAA,CAAAsB,QAAA,SAAmB,IAAQtB,KAAA,CAAAsB,QAAA,KAAmB/B,EAAA;QACnEe,WAAA;QACAZ,SAAA,MAAU;MAAA;IAAA;IAEX2B,EAAA,IAACrB,KAAA,EAAOP,MAAA,EAAQF,EAAA,EAAIe,WAAA;IAAYd,CAAA,MAAAQ,KAAA;IAAAR,CAAA,OAAAD,EAAA;IAAAC,CAAA,OAAAC,MAAA;IAAAD,CAAA,OAAA4B,EAAA;IAAA5B,CAAA,OAAA6B,EAAA;EAAA;IAAAD,EAAA,GAAA5B,CAAA;IAAA6B,EAAA,GAAA7B,CAAA;EAAA;EALnCtD,SAAA,CAAUkF,EAKV,EAAGC,EAAgC;EAAA,IAAAE,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAhC,CAAA,SAAAC,MAAA;IAEzB8B,EAAA,GAAAA,CAAA;MAAA,KACH9B,MAAA;QAAA;MAAA;MAIL,MAAAgC,iBAAA,GAAAC,GAAA;QACE,MAAAhD,WAAA,GAAoBkB,UAAA,CAAAQ,OAAA,EAAAuB,qBAAA;QACpB,MAAAhD,WAAA,GAAoBkB,UAAA,CAAAO,OAAA,EAAAuB,qBAAA;QAAoB,IACpC,CAACjD,WAAA,KAAgBC,WAAA;UAAA;QAAA;QAIrB;UAAAiC,OAAA;UAAAC;QAAA,IAA6BF,GAAA;QAAA,IAEzBnE,YAAA,CAAaoE,OAAA,EAASC,OAAA,EAASnC,WAAA;UACjCoB,SAAA,CAAAM,OAAA;YAAA3D,CAAA,EAAyBmE,OAAA;YAAAlE,CAAA,EAAYmE;UAAA;UACrCd,YAAA,CAAAK,OAAA;UACAE,WAAA;UAAA;QAAA;QAAA,IAIE9D,YAAA,CAAaoE,OAAA,EAASC,OAAA,EAASlC,WAAA;UACjCoB,YAAA,CAAAK,OAAA;UACAE,WAAA;UAAA;QAAA;QAIF,MAAA1B,aAAA,GAAsBD,WAAA,CAAA9B,KAAA,IAAqB6B,WAAA,CAAA9B,IAAA,IAAmB;QAC9D,MAAAiC,eAAA,GAAwBF,WAAA,CAAAG,MAAA,GAAqBJ,WAAA,CAAAI,MAAkB;QAC/D,MAAA8C,QAAA,IAAkB/C,eAAA,GAAkBH,WAAA,GAAcC,WAAU,EAAA7B,GAAA;QAC5D,MAAA+E,WAAA,IAAqBhD,eAAA,GAAkBH,WAAA,GAAcC,WAAU,EAAA5B,MAAA;QAI/D,MAAA+E,gBAAA,GAAyBlD,aAAA,GACrBgC,OAAA,IAAWlC,WAAA,CAAA7B,KAAA,IAAoB,GAC/B+D,OAAA,IAAWlC,WAAA,CAAA9B,IAAA,IAAmB;QAIlC,MAAAmF,QAAA,GAAiBnD,aAAA,GAAgBD,WAAA,CAAA9B,KAAA,IAAoB,GAAI6B,WAAA,CAAA7B,KAAA,IAAoB;QAC7E,MAAAmF,QAAA,GAAiBpD,aAAA,GAAgBF,WAAA,CAAA9B,IAAA,IAAmB,GAAI+B,WAAA,CAAA/B,IAAA,IAAmB;QAC3E,MAAAqF,cAAA,GAAuBjF,uBAAA,CACrB4D,OAAA,EACAC,OAAA,EACAkB,QAAA,EACAF,WAAA,EACAG,QAAA,EACAJ,QAAA;QAAA,IAGEE,gBAAA;UACFrB,aAAA;UAAA;QAAA;QAAA,IAIEwB,cAAA;UACF3B,WAAA;UAAA;QAAA;QAAA,IAIEP,YAAA,CAAAK,OAAA;UACFK,aAAA;UAAA;QAAA;QAIF,MAAAhC,MAAA,GAAeqB,SAAA,CAAAM,OAAA;UAAA3D,CAAA,EACVmC,aAAA,GAAgBF,WAAA,CAAA9B,IAAA,GAAmB8B,WAAA,CAAA7B,KAAiB;UAAAH,CAAA,EACpD,CAACgC,WAAA,CAAA5B,GAAA,GAAkB4B,WAAA,CAAA3B,MAAkB;QAAI,CAC9C;QAEA,MAAAmF,OAAA,GAAgB1D,gBAAA,CAAiBC,MAAA,EAAQC,WAAA,EAAaC,WAAA,EAAaC,aAAA;QACnE,MAAAuD,eAAA,GAAwBhE,gBAAA,CAAiByC,OAAA,EAASC,OAAA,EAASqB,OAAA;QAAA,IAEvDC,eAAA;UACF7B,WAAA;QAAA;UAEAG,aAAA;QAAA;MAAA;MAIJ2B,QAAA,CAAAC,gBAAA,CAA0B,aAAaZ,iBAAA;MAAA,aAC1BW,QAAA,CAAAE,mBAAA,CAA6B,aAAab,iBAAA;IAAA;IACtDD,EAAA,IAAC/B,MAAA,EAAQa,WAAA,EAAaG,aAAA;IAAcjB,CAAA,OAAAC,MAAA;IAAAD,CAAA,OAAA+B,EAAA;IAAA/B,CAAA,OAAAgC,EAAA;EAAA;IAAAD,EAAA,GAAA/B,CAAA;IAAAgC,EAAA,GAAAhC,CAAA;EAAA;EAnFvCtD,SAAA,CAAUqF,EAmFV,EAAGC,EAAoC;EAAA,IAAAe,EAAA;EAAA,IAAA/C,CAAA,SAAA2B,KAAA,IAAA3B,CAAA,SAAAC,MAAA,IAAAD,CAAA,SAAAuB,IAAA;IAEhCwB,EAAA;MAAApB,KAAA;MAAAtB,UAAA;MAAAJ,MAAA;MAAAwB,QAAA;MAAAF,IAAA;MAAAnB;IAAA;IAAwDJ,CAAA,OAAA2B,KAAA;IAAA3B,CAAA,OAAAC,MAAA;IAAAD,CAAA,OAAAuB,IAAA;IAAAvB,CAAA,OAAA+C,EAAA;EAAA;IAAAA,EAAA,GAAA/C,CAAA;EAAA;EAAA,OAAxD+C,EAAwD;AAAA,CACjE","ignoreList":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type DocumentViewMode = 'grid' | 'table';
|
|
3
|
+
export type ViewModeToggleProps = {
|
|
4
|
+
onChange: (viewMode: DocumentViewMode) => void;
|
|
5
|
+
viewMode: DocumentViewMode;
|
|
6
|
+
};
|
|
7
|
+
export declare const ViewModeToggle: React.FC<ViewModeToggleProps>;
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/ViewModeToggle/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAA;AAMzB,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,CAAA;AAE/C,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAA;IAC9C,QAAQ,EAAE,gBAAgB,CAAA;CAC3B,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAaxD,CAAA"}
|