@payloadcms/ui 4.0.0-internal.ea6e8f8 → 4.0.0-internal.ec73d44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/css/app.css +2 -2
- package/dist/css/colors.css +65 -0
- package/dist/css/preflight.css +21 -2
- package/dist/elements/APIKeyInput/index.js +22 -23
- package/dist/elements/APIKeyInput/index.js.map +1 -1
- package/dist/elements/AddNewRelation/index.js +17 -19
- package/dist/elements/AddNewRelation/index.js.map +1 -1
- package/dist/elements/AppHeader/index.css +1 -1
- package/dist/elements/AppHeader/index.d.ts.map +1 -1
- package/dist/elements/AppHeader/index.js +5 -1
- package/dist/elements/AppHeader/index.js.map +1 -1
- package/dist/elements/ArrayAction/index.js +39 -30
- package/dist/elements/ArrayAction/index.js.map +1 -1
- package/dist/elements/Autosave/index.js +236 -143
- package/dist/elements/Autosave/index.js.map +1 -1
- package/dist/elements/BranchSelector/index.d.ts.map +1 -1
- package/dist/elements/BranchSelector/index.js +285 -204
- package/dist/elements/BranchSelector/index.js.map +1 -1
- package/dist/elements/BulkUpload/ActionsBar/index.js.map +1 -1
- package/dist/elements/BulkUpload/AddFilesView/index.js.map +1 -1
- package/dist/elements/BulkUpload/AddingFilesView/index.js.map +1 -1
- package/dist/elements/BulkUpload/DiscardWithoutSaving/index.js.map +1 -1
- package/dist/elements/BulkUpload/EditForm/index.js.map +1 -1
- package/dist/elements/BulkUpload/EditMany/index.js +29 -21
- package/dist/elements/BulkUpload/EditMany/index.js.map +1 -1
- package/dist/elements/BulkUpload/FileSidebar/index.js.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.d.ts.map +1 -1
- package/dist/elements/BulkUpload/FormsManager/index.js +1 -34
- package/dist/elements/BulkUpload/FormsManager/index.js.map +1 -1
- package/dist/elements/BulkUpload/index.js +63 -23
- package/dist/elements/BulkUpload/index.js.map +1 -1
- package/dist/elements/BulkUpload/useUploadCollectionOptions.js.map +1 -1
- package/dist/elements/Button/index.css +3 -3
- package/dist/elements/Button/index.d.ts.map +1 -1
- package/dist/elements/Button/index.js +2 -1
- package/dist/elements/Button/index.js.map +1 -1
- package/dist/elements/Button/types.d.ts +1 -0
- package/dist/elements/Button/types.d.ts.map +1 -1
- package/dist/elements/Button/types.js.map +1 -1
- package/dist/elements/CardGrid/index.css +0 -1
- package/dist/elements/ChangeSummary/index.js.map +1 -1
- package/dist/elements/Chip/index.js.map +1 -1
- package/dist/elements/ClipboardAction/ClipboardActionLabel.js.map +1 -1
- package/dist/elements/ClipboardAction/index.js +213 -88
- package/dist/elements/ClipboardAction/index.js.map +1 -1
- package/dist/elements/CloseModalOnRouteChange/index.d.ts.map +1 -1
- package/dist/elements/CloseModalOnRouteChange/index.js +27 -19
- package/dist/elements/CloseModalOnRouteChange/index.js.map +1 -1
- package/dist/elements/CodeEditor/CodeEditor.d.ts.map +1 -1
- package/dist/elements/CodeEditor/CodeEditor.js +99 -55
- package/dist/elements/CodeEditor/CodeEditor.js.map +1 -1
- package/dist/elements/CollapseAllToggle/index.js +47 -32
- package/dist/elements/CollapseAllToggle/index.js.map +1 -1
- package/dist/elements/Collapsible/index.css +15 -4
- package/dist/elements/Collapsible/index.d.ts.map +1 -1
- package/dist/elements/Collapsible/index.js +46 -38
- package/dist/elements/Collapsible/index.js.map +1 -1
- package/dist/elements/Collapsible/provider.js +37 -14
- package/dist/elements/Collapsible/provider.js.map +1 -1
- package/dist/elements/ColumnSelection/Popup.css +4 -0
- package/dist/elements/ColumnSelection/Popup.js +10 -2
- package/dist/elements/ColumnSelection/Popup.js.map +1 -1
- package/dist/elements/ColumnSelection/index.js.map +1 -1
- package/dist/elements/CommandPalette/index.css +8 -0
- package/dist/elements/ConfirmationModal/index.d.ts +3 -0
- package/dist/elements/ConfirmationModal/index.d.ts.map +1 -1
- package/dist/elements/ConfirmationModal/index.js +2 -0
- package/dist/elements/ConfirmationModal/index.js.map +1 -1
- package/dist/elements/CopyLocaleData/index.js.map +1 -1
- package/dist/elements/CopyToClipboard/index.js.map +1 -1
- package/dist/elements/CreateDocumentButton/index.js +45 -43
- package/dist/elements/CreateDocumentButton/index.js.map +1 -1
- package/dist/elements/DatePicker/DatePicker.js +6 -2
- package/dist/elements/DatePicker/DatePicker.js.map +1 -1
- package/dist/elements/DatePicker/index.css +40 -25
- package/dist/elements/DatePicker/useDatePickerKeyboard.js.map +1 -1
- package/dist/elements/DefaultListViewTabs/index.css +4 -0
- package/dist/elements/DefaultListViewTabs/index.js +47 -37
- package/dist/elements/DefaultListViewTabs/index.js.map +1 -1
- package/dist/elements/DelayedSpinner/index.js.map +1 -1
- package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
- package/dist/elements/DeleteDocument/index.js +1 -3
- package/dist/elements/DeleteDocument/index.js.map +1 -1
- package/dist/elements/Dialog/DialogCancel/index.js.map +1 -1
- package/dist/elements/Dialog/DialogConfirm/index.js.map +1 -1
- package/dist/elements/Dialog/DialogHeader/index.js.map +1 -1
- package/dist/elements/Dialog/DialogModal/index.js.map +1 -1
- package/dist/elements/DocumentCard/index.d.ts +2 -0
- package/dist/elements/DocumentCard/index.d.ts.map +1 -1
- package/dist/elements/DocumentCard/index.js +2 -0
- package/dist/elements/DocumentCard/index.js.map +1 -1
- package/dist/elements/DocumentControls/index.css +13 -10
- package/dist/elements/DocumentControls/index.js +1 -1
- package/dist/elements/DocumentControls/index.js.map +1 -1
- package/dist/elements/DocumentDrawer/index.js.map +1 -1
- package/dist/elements/DocumentDrawer/types.d.ts +1 -5
- package/dist/elements/DocumentDrawer/types.d.ts.map +1 -1
- package/dist/elements/DocumentDrawer/types.js.map +1 -1
- package/dist/elements/DocumentFields/index.css +7 -7
- package/dist/elements/DocumentFields/index.d.ts.map +1 -1
- package/dist/elements/DocumentFields/index.js +125 -65
- package/dist/elements/DocumentFields/index.js.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/ShouldRenderTabs.js.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.d.ts.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js +80 -34
- package/dist/elements/DocumentHeader/Tabs/Tab/TabLink.js.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/Tab/index.css +4 -0
- package/dist/elements/DocumentHeader/Tabs/tabs/VersionsPill/index.js.map +1 -1
- package/dist/elements/DocumentHeader/Tabs/tabs/index.js.map +1 -1
- package/dist/elements/DocumentLocked/index.d.ts.map +1 -1
- package/dist/elements/DocumentLocked/index.js +1 -0
- package/dist/elements/DocumentLocked/index.js.map +1 -1
- package/dist/elements/DocumentStaleData/index.js.map +1 -1
- package/dist/elements/DocumentTakeOver/index.js.map +1 -1
- package/dist/elements/DraggableSortable/DragOverlayPreview/index.js +2 -0
- package/dist/elements/DraggableSortable/DragOverlayPreview/index.js.map +1 -1
- package/dist/elements/DraggableSortable/DraggableSortableItem/index.d.ts.map +1 -1
- package/dist/elements/DraggableSortable/DraggableSortableItem/index.js +10 -7
- package/dist/elements/DraggableSortable/DraggableSortableItem/index.js.map +1 -1
- package/dist/elements/DraggableSortable/DraggableSortableItem/types.d.ts +2 -0
- package/dist/elements/DraggableSortable/DraggableSortableItem/types.d.ts.map +1 -1
- package/dist/elements/DraggableSortable/DraggableSortableItem/types.js.map +1 -1
- package/dist/elements/DraggableSortable/index.d.ts.map +1 -1
- package/dist/elements/DraggableSortable/index.js +104 -170
- package/dist/elements/DraggableSortable/index.js.map +1 -1
- package/dist/elements/DraggableSortable/types.d.ts +1 -0
- package/dist/elements/DraggableSortable/types.d.ts.map +1 -1
- package/dist/elements/DraggableSortable/types.js.map +1 -1
- package/dist/elements/DraggableSortable/useDraggableSortable/index.js.map +1 -1
- package/dist/elements/DraggableSortable/useRowAccessibility.d.ts +14 -0
- package/dist/elements/DraggableSortable/useRowAccessibility.d.ts.map +1 -0
- package/dist/elements/DraggableSortable/useRowAccessibility.js +99 -0
- package/dist/elements/DraggableSortable/useRowAccessibility.js.map +1 -0
- package/dist/elements/Drawer/index.js +138 -81
- package/dist/elements/Drawer/index.js.map +1 -1
- package/dist/elements/Drawer/useDrawerSlug.js.map +1 -1
- package/dist/elements/DrawerActionHeader/index.js.map +1 -1
- package/dist/elements/DrawerHeader/index.js.map +1 -1
- package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js +177 -62
- package/dist/elements/DuplicateDocument/SelectLocalesDrawer/index.js.map +1 -1
- package/dist/elements/EditMany/DrawerContent.js +1 -1
- package/dist/elements/EditMany/DrawerContent.js.map +1 -1
- package/dist/elements/EditMany/index.js.map +1 -1
- package/dist/elements/EditUpload/library.css +6 -13
- package/dist/elements/FieldDiffContainer/index.d.ts.map +1 -1
- package/dist/elements/FieldDiffContainer/index.js +7 -1
- package/dist/elements/FieldDiffContainer/index.js.map +1 -1
- package/dist/elements/FieldDiffLabel/index.d.ts +1 -0
- package/dist/elements/FieldDiffLabel/index.d.ts.map +1 -1
- package/dist/elements/FieldDiffLabel/index.js +2 -0
- package/dist/elements/FieldDiffLabel/index.js.map +1 -1
- package/dist/elements/FieldSelect/index.js +23 -14
- package/dist/elements/FieldSelect/index.js.map +1 -1
- package/dist/elements/FieldSelect/reduceFieldOptions.js.map +1 -1
- package/dist/elements/FileDetails/DraggableFileDetails/index.js.map +1 -1
- package/dist/elements/FileDetails/FileMeta/index.js.map +1 -1
- package/dist/elements/FileManager/FilePreview/index.js.map +1 -1
- package/dist/elements/FileManager/index.js.map +1 -1
- package/dist/elements/FullscreenModal/index.js.map +1 -1
- package/dist/elements/GenerateConfirmation/index.js +21 -21
- package/dist/elements/GenerateConfirmation/index.js.map +1 -1
- package/dist/elements/GroupBy/Popup.js.map +1 -1
- package/dist/elements/GroupBy/index.js +120 -66
- package/dist/elements/GroupBy/index.js.map +1 -1
- package/dist/elements/HTMLDiff/colors.css +7 -0
- package/dist/elements/Hierarchy/ColumnBrowser/Column/index.js.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js +51 -42
- package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.js.map +1 -1
- package/dist/elements/Hierarchy/DocHeaderButton/index.js +1 -1
- package/dist/elements/Hierarchy/DocHeaderButton/index.js.map +1 -1
- package/dist/elements/Hierarchy/EditButton/index.js.map +1 -1
- package/dist/elements/Hierarchy/HydrateProvider/index.js.map +1 -1
- package/dist/elements/Hierarchy/Modal/Footer/index.js.map +1 -1
- package/dist/elements/Hierarchy/Search/HierarchySearchResultItem.js +25 -18
- package/dist/elements/Hierarchy/Search/HierarchySearchResultItem.js.map +1 -1
- package/dist/elements/Hierarchy/Search/HierarchySearchResults.js.map +1 -1
- package/dist/elements/Hierarchy/Search/index.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/TreeFocusContext.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/index.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/index.js +10 -5
- package/dist/elements/Hierarchy/Tree/index.js.map +1 -1
- package/dist/elements/HierarchyTypeField/index.d.ts.map +1 -1
- package/dist/elements/HierarchyTypeField/index.js.map +1 -1
- package/dist/elements/HydrateAuthProvider/index.js.map +1 -1
- package/dist/elements/HydratePreferences/index.js.map +1 -1
- package/dist/elements/IDLabel/index.js.map +1 -1
- package/dist/elements/InputStepper/index.js.map +1 -1
- package/dist/elements/ItemsDrawer/ItemSearch/index.js.map +1 -1
- package/dist/elements/ItemsDrawer/index.js +186 -105
- package/dist/elements/ItemsDrawer/index.js.map +1 -1
- package/dist/elements/LLMInstructionsDescription/index.js.map +1 -1
- package/dist/elements/LLMInstructionsMenuItem/index.js.map +1 -1
- package/dist/elements/LayoutToggle/index.js.map +1 -1
- package/dist/elements/LeaveWithoutSaving/index.js.map +1 -1
- package/dist/elements/LeaveWithoutSaving/usePreventLeave.js +1 -1
- package/dist/elements/LeaveWithoutSaving/usePreventLeave.js.map +1 -1
- package/dist/elements/Link/index.js +1 -1
- package/dist/elements/Link/index.js.map +1 -1
- package/dist/elements/ListColumnSelectionButton/index.js.map +1 -1
- package/dist/elements/ListControls/index.js.map +1 -1
- package/dist/elements/ListControls/types.d.ts +0 -10
- package/dist/elements/ListControls/types.d.ts.map +1 -1
- package/dist/elements/ListControls/types.js.map +1 -1
- package/dist/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
- package/dist/elements/ListDrawer/DrawerContent.js +2 -3
- package/dist/elements/ListDrawer/DrawerContent.js.map +1 -1
- package/dist/elements/ListDrawer/Provider.d.ts +3 -8
- package/dist/elements/ListDrawer/Provider.d.ts.map +1 -1
- package/dist/elements/ListDrawer/Provider.js.map +1 -1
- package/dist/elements/ListDrawer/index.js.map +1 -1
- package/dist/elements/ListGroupByButton/index.js.map +1 -1
- package/dist/elements/ListHeader/DrawerRelationshipSelect/index.js.map +1 -1
- package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerConfirmSelectionButton.js.map +1 -1
- package/dist/elements/ListHeader/DrawerTitleActions/ListDrawerCreateNewDocButton.js.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListBulkUploadButton.js.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListCreateNewDocButton.js +11 -12
- package/dist/elements/ListHeader/TitleActions/ListCreateNewDocButton.js.map +1 -1
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js +1 -1
- package/dist/elements/ListHeader/TitleActions/ListEmptyTrashButton.js.map +1 -1
- package/dist/elements/ListSelection/index.js.map +1 -1
- package/dist/elements/ListWhereBuilder/index.js.map +1 -1
- package/dist/elements/LivePreview/DeviceContainer/index.js.map +1 -1
- package/dist/elements/LivePreview/Toolbar/Controls/index.js.map +1 -1
- package/dist/elements/LivePreview/Toolbar/SizeInput/index.js.map +1 -1
- package/dist/elements/LivePreview/Toolbar/index.js.map +1 -1
- package/dist/elements/LivePreview/ToolbarArea/index.js.map +1 -1
- package/dist/elements/LivePreview/Window/index.css +7 -1
- package/dist/elements/LivePreview/Window/index.d.ts.map +1 -1
- package/dist/elements/LivePreview/Window/index.js +6 -1
- package/dist/elements/LivePreview/Window/index.js.map +1 -1
- package/dist/elements/LoadMoreRow/index.js.map +1 -1
- package/dist/elements/Loading/index.js +62 -18
- package/dist/elements/Loading/index.js.map +1 -1
- package/dist/elements/LoadingOverlay/index.js +93 -49
- package/dist/elements/LoadingOverlay/index.js.map +1 -1
- package/dist/elements/Localizer/index.js +133 -108
- package/dist/elements/Localizer/index.js.map +1 -1
- package/dist/elements/Locked/index.js +54 -37
- package/dist/elements/Locked/index.js.map +1 -1
- package/dist/elements/Logout/index.js.map +1 -1
- package/dist/elements/MergeBranch/MergeBranchForm/index.d.ts.map +1 -1
- package/dist/elements/MergeBranch/MergeBranchForm/index.js +21 -16
- package/dist/elements/MergeBranch/MergeBranchForm/index.js.map +1 -1
- package/dist/elements/MergeBranch/MergeProgress/index.js.map +1 -1
- package/dist/elements/MergeBranch/context.js +58 -20
- package/dist/elements/MergeBranch/context.js.map +1 -1
- package/dist/elements/MergeBranch/index.js.map +1 -1
- package/dist/elements/MergeBranch/useMergeBranchAction.js +1 -1
- package/dist/elements/MergeBranch/useMergeBranchAction.js.map +1 -1
- package/dist/elements/MergeBranch/useScheduleBranchMerge.js +1 -1
- package/dist/elements/MergeBranch/useScheduleBranchMerge.js.map +1 -1
- package/dist/elements/MergeBranch/useUpcomingBranchMerges.js.map +1 -1
- package/dist/elements/MiniCarousel/index.js +102 -38
- package/dist/elements/MiniCarousel/index.js.map +1 -1
- package/dist/elements/Modal/index.d.ts.map +1 -1
- package/dist/elements/Modal/index.js +13 -1
- package/dist/elements/Modal/index.js.map +1 -1
- package/dist/elements/Nav/NavSidebarToggle/index.js.map +1 -1
- package/dist/elements/Nav/NavWrapper/index.d.ts.map +1 -1
- package/dist/elements/Nav/NavWrapper/index.js +10 -6
- package/dist/elements/Nav/NavWrapper/index.js.map +1 -1
- package/dist/elements/Nav/SettingsMenuButton/index.js.map +1 -1
- package/dist/elements/Nav/SidebarTabs/TabError/index.js.map +1 -1
- package/dist/elements/Nav/SidebarTabs/index.client.d.ts.map +1 -1
- package/dist/elements/Nav/SidebarTabs/index.client.js +32 -21
- package/dist/elements/Nav/SidebarTabs/index.client.js.map +1 -1
- package/dist/elements/Nav/context.js +2 -2
- package/dist/elements/Nav/context.js.map +1 -1
- package/dist/elements/Nav/getNavPrefs.d.ts +1 -1
- package/dist/elements/Nav/getNavPrefs.js +1 -1
- package/dist/elements/Nav/getNavPrefs.js.map +1 -1
- package/dist/elements/Nav/index.client.js.map +1 -1
- package/dist/elements/Nav/index.css +5 -0
- package/dist/elements/NavGroup/index.css +27 -3
- package/dist/elements/NavGroup/index.js +32 -39
- package/dist/elements/NavGroup/index.js.map +1 -1
- package/dist/elements/NoListResults/index.css +1 -0
- package/dist/elements/NoListResults/index.js +1 -1
- package/dist/elements/NoListResults/index.js.map +1 -1
- package/dist/elements/PageControls/GroupByPageControls.js.map +1 -1
- package/dist/elements/PageControls/index.js.map +1 -1
- package/dist/elements/Pagination/ClickableArrow/index.js +10 -11
- package/dist/elements/Pagination/ClickableArrow/index.js.map +1 -1
- package/dist/elements/Pagination/SimplePagination/index.js.map +1 -1
- package/dist/elements/Pagination/index.js +36 -37
- package/dist/elements/Pagination/index.js.map +1 -1
- package/dist/elements/PerPage/index.js.map +1 -1
- package/dist/elements/Pill/index.js.map +1 -1
- package/dist/elements/Popup/SubmenuScope.d.ts +3 -5
- package/dist/elements/Popup/SubmenuScope.d.ts.map +1 -1
- package/dist/elements/Popup/SubmenuScope.js +10 -54
- package/dist/elements/Popup/SubmenuScope.js.map +1 -1
- package/dist/elements/Popup/index.css +15 -0
- package/dist/elements/Popup/index.d.ts.map +1 -1
- package/dist/elements/Popup/index.js +88 -33
- package/dist/elements/Popup/index.js.map +1 -1
- package/dist/elements/Popup/useSubmenuPointerIntent.d.ts +16 -4
- package/dist/elements/Popup/useSubmenuPointerIntent.d.ts.map +1 -1
- package/dist/elements/Popup/useSubmenuPointerIntent.js +68 -27
- package/dist/elements/Popup/useSubmenuPointerIntent.js.map +1 -1
- package/dist/elements/PreviewButton/index.js.map +1 -1
- package/dist/elements/PreviewSizes/index.js +141 -70
- package/dist/elements/PreviewSizes/index.js.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/ScheduleDrawer/index.js +16 -8
- package/dist/elements/PublishButton/ScheduleDrawer/index.js.map +1 -1
- package/dist/elements/PublishButton/index.d.ts.map +1 -1
- package/dist/elements/PublishButton/index.js +1 -0
- package/dist/elements/PublishButton/index.js.map +1 -1
- package/dist/elements/PublishMany/DrawerContent.js +1 -1
- package/dist/elements/PublishMany/DrawerContent.js.map +1 -1
- package/dist/elements/PublishMany/index.js +32 -24
- package/dist/elements/PublishMany/index.js.map +1 -1
- package/dist/elements/QueryPresets/fields/ColumnsField/index.js +194 -100
- package/dist/elements/QueryPresets/fields/ColumnsField/index.js.map +1 -1
- package/dist/elements/QueryPresets/fields/GroupByField/index.js +78 -29
- package/dist/elements/QueryPresets/fields/GroupByField/index.js.map +1 -1
- package/dist/elements/QueryPresets/fields/Heading/index.js.map +1 -1
- package/dist/elements/QueryPresets/fields/WhereField/index.js.map +1 -1
- package/dist/elements/ReactSelect/ClearIndicator/index.js.map +1 -1
- package/dist/elements/ReactSelect/DefaultMenuPortal.d.ts.map +1 -1
- package/dist/elements/ReactSelect/DefaultMenuPortal.js.map +1 -1
- package/dist/elements/ReactSelect/MultiValue/index.js +19 -9
- package/dist/elements/ReactSelect/MultiValue/index.js.map +1 -1
- package/dist/elements/ReactSelect/MultiValueLabel/index.js.map +1 -1
- package/dist/elements/ReactSelect/MultiValueRemove/index.js +38 -29
- package/dist/elements/ReactSelect/MultiValueRemove/index.js.map +1 -1
- package/dist/elements/ReactSelect/ValueContainer/index.js.map +1 -1
- package/dist/elements/ReactSelect/index.css +4 -0
- package/dist/elements/RelationshipTable/AddNewButton.d.ts.map +1 -1
- package/dist/elements/RelationshipTable/AddNewButton.js +3 -0
- package/dist/elements/RelationshipTable/AddNewButton.js.map +1 -1
- package/dist/elements/RelationshipTable/Pagination.js.map +1 -1
- package/dist/elements/RelationshipTable/cells/DrawerLink/index.js.map +1 -1
- package/dist/elements/RelationshipTable/index.js +1 -1
- package/dist/elements/RelationshipTable/index.js.map +1 -1
- package/dist/elements/RenderIfInViewport/index.js.map +1 -1
- package/dist/elements/RenderTitle/index.js.map +1 -1
- package/dist/elements/RestoreMany/index.js +1 -1
- package/dist/elements/RestoreMany/index.js.map +1 -1
- package/dist/elements/SchedulePublishButton/index.js +112 -44
- package/dist/elements/SchedulePublishButton/index.js.map +1 -1
- package/dist/elements/Search/SearchInput/index.js.map +1 -1
- package/dist/elements/SegmentedControl/index.css +50 -7
- package/dist/elements/SegmentedControl/index.js.map +1 -1
- package/dist/elements/SelectAll/index.js.map +1 -1
- package/dist/elements/SelectRow/index.js +31 -21
- package/dist/elements/SelectRow/index.js.map +1 -1
- package/dist/elements/ShimmerEffect/index.js.map +1 -1
- package/dist/elements/SidebarToggle/index.js.map +1 -1
- package/dist/elements/SkipToContent/index.js.map +1 -1
- package/dist/elements/SortHeader/index.js.map +1 -1
- package/dist/elements/SortRow/index.js.map +1 -1
- package/dist/elements/Spinner/index.js.map +1 -1
- package/dist/elements/StayLoggedIn/index.js.map +1 -1
- package/dist/elements/StepNav/SetStepNav.js.map +1 -1
- package/dist/elements/StepNav/context.js.map +1 -1
- package/dist/elements/Switch/index.css +2 -2
- package/dist/elements/Switch/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Array/index.js +28 -9
- package/dist/elements/Table/DefaultCell/fields/Array/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Blocks/index.js +80 -27
- package/dist/elements/Table/DefaultCell/fields/Blocks/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/BranchStatus/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Checkbox/index.js +9 -10
- package/dist/elements/Table/DefaultCell/fields/Checkbox/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Date/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/File/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/File/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/JSON/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/JSON/index.js +21 -32
- package/dist/elements/Table/DefaultCell/fields/JSON/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Relationship/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Select/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/fields/Status/index.js.map +1 -1
- package/dist/elements/Table/DefaultCell/index.d.ts.map +1 -1
- package/dist/elements/Table/DefaultCell/index.js +6 -1
- package/dist/elements/Table/DefaultCell/index.js.map +1 -1
- package/dist/elements/Table/GridNavigation/useGridNavigation.js.map +1 -1
- package/dist/elements/Table/RelationshipProvider/index.js.map +1 -1
- package/dist/elements/Table/TableIdentity.js +32 -16
- package/dist/elements/Table/TableIdentity.js.map +1 -1
- package/dist/elements/Table/index.js.map +1 -1
- package/dist/elements/Table/useAriaSort.js.map +1 -1
- package/dist/elements/Tabs/index.css +4 -3
- package/dist/elements/Thumbnail/index.js +133 -53
- package/dist/elements/Thumbnail/index.js.map +1 -1
- package/dist/elements/ThumbnailCard/index.js.map +1 -1
- package/dist/elements/TimezonePicker/index.d.ts.map +1 -1
- package/dist/elements/TimezonePicker/index.js +113 -54
- package/dist/elements/TimezonePicker/index.js.map +1 -1
- package/dist/elements/Toasts/fieldErrors.js.map +1 -1
- package/dist/elements/Tooltip/index.js.map +1 -1
- package/dist/elements/Translation/index.js +1 -1
- package/dist/elements/Translation/index.js.map +1 -1
- package/dist/elements/TrashBanner/index.js.map +1 -1
- package/dist/elements/UnpublishMany/DrawerContent.js +1 -1
- package/dist/elements/UnpublishMany/DrawerContent.js.map +1 -1
- package/dist/elements/UnpublishMany/index.js +32 -24
- package/dist/elements/UnpublishMany/index.js.map +1 -1
- package/dist/elements/Upload/UploadFromURLModal/index.js.map +1 -1
- package/dist/elements/Upload/index.js.map +1 -1
- package/dist/elements/Upload/usePasteFromClipboard.js.map +1 -1
- package/dist/elements/Upload/useUploadFromUrl.js.map +1 -1
- package/dist/elements/UserMenu/LanguageMenu/index.js.map +1 -1
- package/dist/elements/UserMenu/SettingsMenu/index.js.map +1 -1
- package/dist/elements/UserMenu/ThemeMenu/index.js.map +1 -1
- package/dist/elements/UserMenu/index.d.ts.map +1 -1
- package/dist/elements/UserMenu/index.js +2 -1
- package/dist/elements/UserMenu/index.js.map +1 -1
- package/dist/elements/ViewDescription/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Date/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Number/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Select/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/Text/index.js.map +1 -1
- package/dist/elements/WhereBuilder/Condition/index.d.ts.map +1 -1
- package/dist/elements/WhereBuilder/Condition/index.js +1 -0
- package/dist/elements/WhereBuilder/Condition/index.js.map +1 -1
- package/dist/exports/client/{CodeEditor-UKD3EPUY.js → CodeEditor-23ZGBN6S.js} +2 -2
- package/dist/exports/client/{DatePicker-POZJVQP4.js → DatePicker-AZBZPMY6.js} +2 -2
- package/dist/exports/client/chunk-EXVR6BZK.js +27 -0
- package/dist/exports/client/chunk-EXVR6BZK.js.map +7 -0
- package/dist/exports/client/{chunk-AVJIZPR3.js → chunk-SMBFG6XU.js} +1 -1
- package/dist/exports/client/{chunk-AVJIZPR3.js.map → chunk-SMBFG6XU.js.map} +1 -1
- package/dist/exports/client/{chunk-2AY67NFV.js → chunk-ZP2PB6M4.js} +2 -2
- package/dist/exports/client/chunk-ZP2PB6M4.js.map +7 -0
- package/dist/exports/client/index.d.ts +2 -2
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +28 -28
- package/dist/exports/client/index.js.map +4 -4
- package/dist/exports/rsc/index.d.ts +1 -1
- package/dist/exports/rsc/index.d.ts.map +1 -1
- package/dist/exports/rsc/index.js +1 -1
- package/dist/exports/rsc/index.js.map +1 -1
- package/dist/exports/shared/index.js +2 -2
- package/dist/exports/shared/index.js.map +3 -3
- package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
- package/dist/fields/Array/ArrayRow.js +207 -99
- package/dist/fields/Array/ArrayRow.js.map +1 -1
- package/dist/fields/Array/index.d.ts.map +1 -1
- package/dist/fields/Array/index.js +521 -308
- package/dist/fields/Array/index.js.map +1 -1
- package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
- package/dist/fields/Blocks/BlockRow.js +224 -136
- package/dist/fields/Blocks/BlockRow.js.map +1 -1
- package/dist/fields/Blocks/BlockSelector/BlockSearch/index.js.map +1 -1
- package/dist/fields/Blocks/BlockSelector/index.js +114 -74
- package/dist/fields/Blocks/BlockSelector/index.js.map +1 -1
- package/dist/fields/Blocks/BlocksDrawer/index.js.map +1 -1
- package/dist/fields/Blocks/RowActions.js +75 -55
- package/dist/fields/Blocks/RowActions.js.map +1 -1
- package/dist/fields/Blocks/SectionTitle/index.css +4 -0
- package/dist/fields/Blocks/SectionTitle/index.js.map +1 -1
- package/dist/fields/Blocks/index.d.ts.map +1 -1
- package/dist/fields/Blocks/index.js +1 -0
- package/dist/fields/Blocks/index.js.map +1 -1
- package/dist/fields/Checkbox/index.css +3 -3
- package/dist/fields/Checkbox/index.js.map +1 -1
- package/dist/fields/Code/index.d.ts.map +1 -1
- package/dist/fields/Code/index.js +3 -2
- package/dist/fields/Code/index.js.map +1 -1
- package/dist/fields/Collapsible/index.js +114 -73
- package/dist/fields/Collapsible/index.js.map +1 -1
- package/dist/fields/ConfirmPassword/index.js.map +1 -1
- package/dist/fields/DateTime/index.js +215 -121
- package/dist/fields/DateTime/index.js.map +1 -1
- package/dist/fields/Email/index.d.ts.map +1 -1
- package/dist/fields/Email/index.js.map +1 -1
- package/dist/fields/FieldDescription/index.js +29 -21
- package/dist/fields/FieldDescription/index.js.map +1 -1
- package/dist/fields/FieldError/index.js.map +1 -1
- package/dist/fields/FieldLabel/index.js.map +1 -1
- package/dist/fields/Group/index.css +3 -5
- package/dist/fields/Group/index.js +75 -46
- package/dist/fields/Group/index.js.map +1 -1
- package/dist/fields/Hidden/index.js +23 -15
- package/dist/fields/Hidden/index.js.map +1 -1
- package/dist/fields/JSON/index.d.ts.map +1 -1
- package/dist/fields/JSON/index.js +3 -2
- package/dist/fields/JSON/index.js.map +1 -1
- package/dist/fields/Number/Input.js.map +1 -1
- package/dist/fields/Number/index.d.ts.map +1 -1
- package/dist/fields/Number/index.js.map +1 -1
- package/dist/fields/Password/index.d.ts.map +1 -1
- package/dist/fields/Password/index.js.map +1 -1
- package/dist/fields/Password/input.js +46 -27
- package/dist/fields/Password/input.js.map +1 -1
- package/dist/fields/RadioGroup/Radio/index.js +35 -35
- package/dist/fields/RadioGroup/Radio/index.js.map +1 -1
- package/dist/fields/RadioGroup/index.d.ts.map +1 -1
- package/dist/fields/RadioGroup/index.js.map +1 -1
- package/dist/fields/Relationship/Input.js +14 -14
- package/dist/fields/Relationship/Input.js.map +1 -1
- package/dist/fields/Relationship/index.js +216 -111
- package/dist/fields/Relationship/index.js.map +1 -1
- package/dist/fields/Relationship/select-components/MultiValueLabel/index.js.map +1 -1
- package/dist/fields/Relationship/select-components/SingleValue/index.js +9 -11
- package/dist/fields/Relationship/select-components/SingleValue/index.js.map +1 -1
- package/dist/fields/Select/Input.js +26 -10
- package/dist/fields/Select/Input.js.map +1 -1
- package/dist/fields/Select/index.d.ts.map +1 -1
- package/dist/fields/Select/index.js +158 -77
- package/dist/fields/Select/index.js.map +1 -1
- package/dist/fields/Tabs/Tab/index.js.map +1 -1
- package/dist/fields/Tabs/index.css +17 -21
- package/dist/fields/Tabs/index.js +120 -112
- package/dist/fields/Tabs/index.js.map +1 -1
- package/dist/fields/Text/Input.d.ts.map +1 -1
- package/dist/fields/Text/Input.js +2 -2
- package/dist/fields/Text/Input.js.map +1 -1
- package/dist/fields/Text/index.js +172 -95
- package/dist/fields/Text/index.js.map +1 -1
- package/dist/fields/Text/types.d.ts +2 -1
- package/dist/fields/Text/types.d.ts.map +1 -1
- package/dist/fields/Text/types.js.map +1 -1
- package/dist/fields/Textarea/Input.js +58 -28
- package/dist/fields/Textarea/Input.js.map +1 -1
- package/dist/fields/Textarea/index.js +97 -55
- package/dist/fields/Textarea/index.js.map +1 -1
- package/dist/fields/Upload/HasMany/index.js.map +1 -1
- package/dist/fields/Upload/Input.d.ts.map +1 -1
- package/dist/fields/Upload/Input.js +19 -8
- package/dist/fields/Upload/Input.js.map +1 -1
- package/dist/fields/Upload/RelationshipContent/index.js.map +1 -1
- package/dist/fields/Upload/index.css +9 -0
- package/dist/fields/Upload/index.js +101 -63
- package/dist/fields/Upload/index.js.map +1 -1
- package/dist/fields/shared/useRowFocus.js.map +1 -1
- package/dist/forms/Form/context.js.map +1 -1
- package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
- package/dist/forms/Form/fieldReducer.js.map +1 -1
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +27 -8
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/Form/reduceToSerializableFields.d.ts +9 -4
- package/dist/forms/Form/reduceToSerializableFields.d.ts.map +1 -1
- package/dist/forms/Form/reduceToSerializableFields.js +34 -7
- package/dist/forms/Form/reduceToSerializableFields.js.map +1 -1
- package/dist/forms/Form/types.d.ts +1 -1
- package/dist/forms/Form/types.d.ts.map +1 -1
- package/dist/forms/Form/types.js.map +1 -1
- package/dist/forms/NullifyField/index.js.map +1 -1
- package/dist/forms/RenderFields/RenderField.js.map +1 -1
- package/dist/forms/RenderFields/context.js +3 -2
- package/dist/forms/RenderFields/context.js.map +1 -1
- package/dist/forms/RenderFields/index.css +2 -2
- package/dist/forms/RenderFields/index.js.map +1 -1
- package/dist/forms/RowLabel/Context/index.d.ts.map +1 -1
- package/dist/forms/RowLabel/Context/index.js +58 -18
- package/dist/forms/RowLabel/Context/index.js.map +1 -1
- package/dist/forms/Submit/index.js +12 -13
- package/dist/forms/Submit/index.js.map +1 -1
- package/dist/forms/WatchChildErrors/index.js.map +1 -1
- package/dist/forms/useField/index.js +1 -1
- package/dist/forms/useField/index.js.map +1 -1
- package/dist/forms/useField/types.d.ts +0 -4
- package/dist/forms/useField/types.d.ts.map +1 -1
- package/dist/forms/useField/types.js.map +1 -1
- package/dist/forms/withCondition/WatchCondition.js.map +1 -1
- package/dist/graphics/Account/Gravatar/index.js +32 -17
- package/dist/graphics/Account/Gravatar/index.js.map +1 -1
- package/dist/graphics/Account/index.js +27 -18
- package/dist/graphics/Account/index.js.map +1 -1
- package/dist/hooks/useControllableState.js.map +1 -1
- package/dist/hooks/useDebounce.js.map +1 -1
- package/dist/hooks/useDebouncedCallback.js.map +1 -1
- package/dist/hooks/useDebouncedEffect.js.map +1 -1
- package/dist/hooks/useDelay.js.map +1 -1
- package/dist/hooks/useDelayedRender.js.map +1 -1
- package/dist/hooks/useElementHeightVariable.js.map +1 -1
- package/dist/hooks/useHotkey.js.map +1 -1
- package/dist/hooks/useIntersect.js.map +1 -1
- package/dist/hooks/usePayloadAPI.js.map +1 -1
- package/dist/hooks/usePointerSafeArea.d.ts +29 -0
- package/dist/hooks/usePointerSafeArea.d.ts.map +1 -0
- package/dist/hooks/usePointerSafeArea.js +232 -0
- package/dist/hooks/usePointerSafeArea.js.map +1 -0
- package/dist/hooks/usePopupWindow.js.map +1 -1
- package/dist/hooks/useRelatedCollections.js.map +1 -1
- package/dist/hooks/useResize.js.map +1 -1
- package/dist/hooks/useThrottledEffect.d.ts.map +1 -1
- package/dist/hooks/useThrottledEffect.js +21 -24
- package/dist/hooks/useThrottledEffect.js.map +1 -1
- package/dist/hooks/useUseAsTitle.js.map +1 -1
- package/dist/icons/Sidebar/index.d.ts.map +1 -1
- package/dist/icons/Sidebar/index.js +2 -0
- package/dist/icons/Sidebar/index.js.map +1 -1
- package/dist/icons/Table/index.css +5 -1
- package/dist/layouts/Root/RootProviders.d.ts.map +1 -1
- package/dist/layouts/Root/RootProviders.js +31 -28
- package/dist/layouts/Root/RootProviders.js.map +1 -1
- package/dist/layouts/Root/index.d.ts +1 -1
- package/dist/layouts/Root/index.d.ts.map +1 -1
- package/dist/layouts/Root/index.js +4 -15
- package/dist/layouts/Root/index.js.map +1 -1
- package/dist/providers/Actions/index.js.map +1 -1
- package/dist/providers/Auth/AuthSessionDebug/index.js.map +1 -1
- package/dist/providers/Auth/index.js +2 -2
- package/dist/providers/Auth/index.js.map +1 -1
- package/dist/providers/Auth/tabSessionSync/useTabSessionSync.js.map +1 -1
- package/dist/providers/Branch/index.d.ts +1 -1
- package/dist/providers/Branch/index.js +4 -4
- package/dist/providers/Branch/index.js.map +1 -1
- package/dist/providers/Branch/index.server.d.ts.map +1 -1
- package/dist/providers/Branch/index.server.js +3 -1
- package/dist/providers/Branch/index.server.js.map +1 -1
- package/dist/providers/ClientFunction/index.js.map +1 -1
- package/dist/providers/Config/index.js +65 -32
- package/dist/providers/Config/index.js.map +1 -1
- package/dist/providers/DocumentEvents/index.js.map +1 -1
- package/dist/providers/EditDepth/index.js.map +1 -1
- package/dist/providers/Embed/index.js.map +1 -1
- package/dist/providers/EntityVisibility/index.js.map +1 -1
- package/dist/providers/ListQuery/index.d.ts.map +1 -1
- package/dist/providers/ListQuery/index.js +5 -5
- package/dist/providers/ListQuery/index.js.map +1 -1
- package/dist/providers/ListQuery/mergeQuery.d.ts.map +1 -1
- package/dist/providers/ListQuery/mergeQuery.js.map +1 -1
- package/dist/providers/ListQuery/sanitizeQuery.js.map +1 -1
- package/dist/providers/ListQuery/types.d.ts +6 -5
- package/dist/providers/ListQuery/types.d.ts.map +1 -1
- package/dist/providers/ListQuery/types.js.map +1 -1
- package/dist/providers/ModalAccessibility/index.js.map +1 -1
- package/dist/providers/ModalFocus/index.d.ts +15 -0
- package/dist/providers/ModalFocus/index.d.ts.map +1 -0
- package/dist/providers/ModalFocus/index.js +70 -0
- package/dist/providers/ModalFocus/index.js.map +1 -0
- package/dist/providers/RouteCache/index.d.ts.map +1 -1
- package/dist/providers/RouteCache/index.js +37 -25
- package/dist/providers/RouteCache/index.js.map +1 -1
- package/dist/providers/RouteTransition/ProgressBar/index.js.map +1 -1
- package/dist/providers/RouteTransition/index.d.ts +3 -2
- package/dist/providers/RouteTransition/index.d.ts.map +1 -1
- package/dist/providers/RouteTransition/index.js +78 -105
- package/dist/providers/RouteTransition/index.js.map +1 -1
- package/dist/providers/RouterAdapter/index.js.map +1 -1
- package/dist/providers/ServerFunctions/index.d.ts.map +1 -1
- package/dist/providers/ServerFunctions/index.js +34 -23
- package/dist/providers/ServerFunctions/index.js.map +1 -1
- package/dist/providers/TableColumns/RenderDefaultCell/index.d.ts.map +1 -1
- package/dist/providers/TableColumns/RenderDefaultCell/index.js +1 -2
- package/dist/providers/TableColumns/RenderDefaultCell/index.js.map +1 -1
- package/dist/providers/TableColumns/index.d.ts.map +1 -1
- package/dist/providers/TableColumns/index.js +18 -35
- package/dist/providers/TableColumns/index.js.map +1 -1
- package/dist/providers/Theme/index.js.map +1 -1
- package/dist/providers/ToastContainer/index.js.map +1 -1
- package/dist/providers/Translation/index.js.map +1 -1
- package/dist/providers/UploadControls/index.js.map +1 -1
- package/dist/providers/UploadEdits/index.js.map +1 -1
- package/dist/providers/UploadHandlers/index.js.map +1 -1
- package/dist/styles.css +87 -3
- package/dist/templates/Default/Wrapper/index.js.map +1 -1
- package/dist/templates/Default/index.css +0 -1
- package/dist/utilities/buildClientFieldSchemaMap/traverseFields.d.ts.map +1 -1
- package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js +32 -6
- package/dist/utilities/buildClientFieldSchemaMap/traverseFields.js.map +1 -1
- package/dist/utilities/formatDocTitle/formatLexicalDocTitle.js.map +1 -1
- package/dist/utilities/getDisplayedFieldValue.d.ts +8 -2
- package/dist/utilities/getDisplayedFieldValue.d.ts.map +1 -1
- package/dist/utilities/getDisplayedFieldValue.js +11 -1
- package/dist/utilities/getDisplayedFieldValue.js.map +1 -1
- package/dist/utilities/getHasScheduledPublish.js.map +1 -1
- package/dist/utilities/groupNavItems.js.map +1 -1
- package/dist/utilities/handleLivePreview.js.map +1 -1
- package/dist/utilities/handleServerFunctions.d.ts +2 -10
- package/dist/utilities/handleServerFunctions.d.ts.map +1 -1
- package/dist/utilities/handleServerFunctions.js +3 -7
- package/dist/utilities/handleServerFunctions.js.map +1 -1
- package/dist/utilities/hasSavePermission.js.map +1 -1
- package/dist/utilities/schedulePublishHandler.js.map +1 -1
- package/dist/utilities/serverFunctionRegistry.d.ts +2 -7
- package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
- package/dist/utilities/serverFunctionRegistry.js +4 -9
- package/dist/utilities/serverFunctionRegistry.js.map +1 -1
- package/dist/views/API/LocaleSelector/index.js.map +1 -1
- package/dist/views/API/index.client.d.ts.map +1 -1
- package/dist/views/API/index.client.js +1 -0
- package/dist/views/API/index.client.js.map +1 -1
- package/dist/views/Account/ResetPreferences/index.js +17 -17
- package/dist/views/Account/ResetPreferences/index.js.map +1 -1
- package/dist/views/Account/Settings/LanguageSelector.js.map +1 -1
- package/dist/views/Account/ToggleHighContrast/index.js.map +1 -1
- package/dist/views/Account/ToggleTheme/index.js +106 -27
- package/dist/views/Account/ToggleTheme/index.js.map +1 -1
- package/dist/views/Account/index.client.js.map +1 -1
- package/dist/views/Branch/BranchChanges/index.d.ts.map +1 -1
- package/dist/views/Branch/BranchChanges/index.js +185 -86
- package/dist/views/Branch/BranchChanges/index.js.map +1 -1
- package/dist/views/Branch/DiscardChangesButton/index.js +1 -1
- package/dist/views/Branch/DiscardChangesButton/index.js.map +1 -1
- package/dist/views/Branch/Manage/index.js.map +1 -1
- package/dist/views/Branch/MergeChangesButton/index.js.map +1 -1
- package/dist/views/Branch/ScheduledMerges/index.js +1 -1
- package/dist/views/Branch/ScheduledMerges/index.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js +30 -21
- package/dist/views/Dashboard/Default/ModularDashboard/DashboardStepNav.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/WidgetEditControl.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/index.client.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/index.client.js +373 -151
- package/dist/views/Dashboard/Default/ModularDashboard/index.client.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.d.ts +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.d.ts.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js +18 -5
- package/dist/views/Dashboard/Default/ModularDashboard/useDashboardLayout.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/utils/localeUtils.js.map +1 -1
- package/dist/views/Document/generateEditViewMetadata.js.map +1 -1
- package/dist/views/Document/index.js +1 -1
- package/dist/views/Document/index.js.map +1 -1
- package/dist/views/Document/renderDocumentSlots.js.map +1 -1
- package/dist/views/Edit/Auth/APIKeyGenerationModal.js.map +1 -1
- package/dist/views/Edit/Auth/index.d.ts.map +1 -1
- package/dist/views/Edit/Auth/index.js +13 -11
- package/dist/views/Edit/Auth/index.js.map +1 -1
- package/dist/views/Edit/SetDocumentStepNav/index.js.map +1 -1
- package/dist/views/Edit/SetDocumentTitle/index.js.map +1 -1
- package/dist/views/Edit/index.css +26 -0
- package/dist/views/Edit/index.d.ts.map +1 -1
- package/dist/views/Edit/index.js +28 -17
- package/dist/views/Edit/index.js.map +1 -1
- package/dist/views/ForgotPassword/ForgotPasswordForm/index.d.ts.map +1 -1
- package/dist/views/ForgotPassword/ForgotPasswordForm/index.js +45 -41
- package/dist/views/ForgotPassword/ForgotPasswordForm/index.js.map +1 -1
- package/dist/views/HierarchyList/DocumentListSelection/index.js.map +1 -1
- package/dist/views/HierarchyList/HierarchyListHeader/index.js.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/ChildNameCell.js.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/DateCell.js +8 -9
- package/dist/views/HierarchyList/HierarchyTable/DateCell.js.map +1 -1
- package/dist/views/HierarchyList/HierarchyTable/RelatedNameCell.js.map +1 -1
- package/dist/views/HierarchyList/TypeFilter/index.js.map +1 -1
- package/dist/views/HierarchyList/index.js +2 -2
- package/dist/views/HierarchyList/index.js.map +1 -1
- package/dist/views/List/DocumentGrid/index.js.map +1 -1
- package/dist/views/List/GroupedDocumentGrid/index.js.map +1 -1
- package/dist/views/List/ListSelection/index.js.map +1 -1
- package/dist/views/Login/LoginField/index.js.map +1 -1
- package/dist/views/Login/LoginForm/index.js.map +1 -1
- package/dist/views/Logout/LogoutClient.js.map +1 -1
- package/dist/views/Logout/index.js.map +1 -1
- package/dist/views/NotFound/index.client.js.map +1 -1
- package/dist/views/ResetPassword/ResetPasswordForm/index.js.map +1 -1
- package/dist/views/Verify/index.client.js.map +1 -1
- package/dist/views/Version/Default/SetStepNav.js.map +1 -1
- package/dist/views/Version/Default/index.css +12 -12
- package/dist/views/Version/Default/index.js +333 -191
- package/dist/views/Version/Default/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/DiffCollapser/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/RenderVersionFieldsToDiff.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js +0 -4
- package/dist/views/Version/RenderFieldsToDiff/buildVersionFields.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Checkbox/index.js +9 -11
- package/dist/views/Version/RenderFieldsToDiff/fields/Checkbox/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Collapsible/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js +41 -29
- package/dist/views/Version/RenderFieldsToDiff/fields/Date/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Group/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Iterable/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.d.ts.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js +19 -19
- package/dist/views/Version/RenderFieldsToDiff/fields/Select/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Tabs/index.js.map +1 -1
- package/dist/views/Version/RenderFieldsToDiff/fields/Text/index.js.map +1 -1
- package/dist/views/Version/Restore/index.d.ts.map +1 -1
- package/dist/views/Version/Restore/index.js +183 -82
- package/dist/views/Version/Restore/index.js.map +1 -1
- package/dist/views/Version/SelectComparison/VersionDrawer/CreatedAtCell.js.map +1 -1
- package/dist/views/Version/SelectComparison/VersionDrawer/index.js.map +1 -1
- package/dist/views/Version/SelectComparison/index.js +113 -33
- package/dist/views/Version/SelectComparison/index.js.map +1 -1
- package/dist/views/Version/SelectLocales/index.js.map +1 -1
- package/dist/views/Version/index.js.map +1 -1
- package/dist/views/Versions/VersionPillLabel/VersionPillLabel.js.map +1 -1
- package/dist/views/Versions/cells/AutosaveCell/index.js.map +1 -1
- package/dist/views/Versions/cells/CreatedAt/index.js.map +1 -1
- package/dist/views/Versions/cells/VersionDrawerCreatedAtCell/index.js.map +1 -1
- package/dist/views/Versions/index.client.js +9 -11
- package/dist/views/Versions/index.client.js.map +1 -1
- package/dist/views/Versions/index.js +2 -2
- package/dist/views/Versions/index.js.map +1 -1
- package/dist/widgets/Activity/Tabs/PinnedDocuments/PinDocumentPicker/index.css +28 -0
- package/dist/widgets/Activity/Tabs/PinnedDocuments/PinDocumentPicker/index.d.ts +16 -0
- package/dist/widgets/Activity/Tabs/PinnedDocuments/PinDocumentPicker/index.d.ts.map +1 -0
- package/dist/widgets/Activity/Tabs/PinnedDocuments/PinDocumentPicker/index.js +98 -0
- package/dist/widgets/Activity/Tabs/PinnedDocuments/PinDocumentPicker/index.js.map +1 -0
- package/dist/widgets/Activity/Tabs/PinnedDocuments/index.css +70 -0
- package/dist/widgets/Activity/Tabs/PinnedDocuments/index.d.ts +13 -0
- package/dist/widgets/Activity/Tabs/PinnedDocuments/index.d.ts.map +1 -0
- package/dist/widgets/Activity/Tabs/PinnedDocuments/index.js +81 -0
- package/dist/widgets/Activity/Tabs/PinnedDocuments/index.js.map +1 -0
- package/dist/widgets/{RecentlyViewed/pinnedPreferences.d.ts → Activity/Tabs/PinnedDocuments/preferences.d.ts} +6 -9
- package/dist/widgets/Activity/Tabs/PinnedDocuments/preferences.d.ts.map +1 -0
- package/dist/widgets/{RecentlyViewed/pinnedPreferences.js → Activity/Tabs/PinnedDocuments/preferences.js} +3 -22
- package/dist/widgets/Activity/Tabs/PinnedDocuments/preferences.js.map +1 -0
- package/dist/widgets/Activity/Tabs/PinnedDocuments/usePinnedDocuments.d.ts +39 -0
- package/dist/widgets/Activity/Tabs/PinnedDocuments/usePinnedDocuments.d.ts.map +1 -0
- package/dist/widgets/Activity/Tabs/PinnedDocuments/usePinnedDocuments.js +83 -0
- package/dist/widgets/Activity/Tabs/PinnedDocuments/usePinnedDocuments.js.map +1 -0
- package/dist/widgets/Activity/Tabs/RecentDocuments/index.d.ts +9 -0
- package/dist/widgets/Activity/Tabs/RecentDocuments/index.d.ts.map +1 -0
- package/dist/widgets/Activity/Tabs/RecentDocuments/index.js +23 -0
- package/dist/widgets/Activity/Tabs/RecentDocuments/index.js.map +1 -0
- package/dist/widgets/Activity/components/DocumentList/index.css +61 -0
- package/dist/widgets/Activity/components/DocumentList/index.d.ts +15 -0
- package/dist/widgets/Activity/components/DocumentList/index.d.ts.map +1 -0
- package/dist/widgets/Activity/components/DocumentList/index.js +56 -0
- package/dist/widgets/Activity/components/DocumentList/index.js.map +1 -0
- package/dist/widgets/Activity/components/EmptyState/index.css +47 -0
- package/dist/widgets/Activity/components/EmptyState/index.d.ts +12 -0
- package/dist/widgets/Activity/components/EmptyState/index.d.ts.map +1 -0
- package/dist/widgets/Activity/components/EmptyState/index.js +37 -0
- package/dist/widgets/Activity/components/EmptyState/index.js.map +1 -0
- package/dist/widgets/Activity/components/Pagination/index.css +42 -0
- package/dist/widgets/Activity/components/Pagination/index.d.ts +20 -0
- package/dist/widgets/Activity/components/Pagination/index.d.ts.map +1 -0
- package/dist/widgets/Activity/components/Pagination/index.js +125 -0
- package/dist/widgets/Activity/components/Pagination/index.js.map +1 -0
- package/dist/widgets/Activity/components/StatusPill/index.css +24 -0
- package/dist/widgets/Activity/components/StatusPill/index.d.ts +8 -0
- package/dist/widgets/Activity/components/StatusPill/index.d.ts.map +1 -0
- package/dist/widgets/Activity/components/StatusPill/index.js +18 -0
- package/dist/widgets/Activity/components/StatusPill/index.js.map +1 -0
- package/dist/widgets/Activity/index.client.d.ts +15 -0
- package/dist/widgets/Activity/index.client.d.ts.map +1 -0
- package/dist/widgets/Activity/index.client.js +186 -0
- package/dist/widgets/Activity/index.client.js.map +1 -0
- package/dist/widgets/Activity/index.css +320 -0
- package/dist/widgets/Activity/index.d.ts +13 -0
- package/dist/widgets/Activity/index.d.ts.map +1 -0
- package/dist/widgets/Activity/index.js +100 -0
- package/dist/widgets/Activity/index.js.map +1 -0
- package/dist/widgets/{RecentlyViewed/index.client.d.ts → Activity/types.d.ts} +6 -13
- package/dist/widgets/Activity/types.d.ts.map +1 -0
- package/dist/widgets/Activity/types.js +2 -0
- package/dist/widgets/Activity/types.js.map +1 -0
- package/dist/widgets/Activity/utils/cache.d.ts +33 -0
- package/dist/widgets/Activity/utils/cache.d.ts.map +1 -0
- package/dist/widgets/Activity/utils/cache.js +72 -0
- package/dist/widgets/Activity/utils/cache.js.map +1 -0
- package/dist/widgets/Activity/utils/constants.d.ts +5 -0
- package/dist/widgets/Activity/utils/constants.d.ts.map +1 -0
- package/dist/widgets/Activity/utils/constants.js +4 -0
- package/dist/widgets/Activity/utils/constants.js.map +1 -0
- package/dist/widgets/Activity/utils/documents.d.ts +11 -0
- package/dist/widgets/Activity/utils/documents.d.ts.map +1 -0
- package/dist/widgets/Activity/utils/documents.js +38 -0
- package/dist/widgets/Activity/utils/documents.js.map +1 -0
- package/dist/widgets/Activity/utils/getActivityWidgetDocs.d.ts +20 -0
- package/dist/widgets/Activity/utils/getActivityWidgetDocs.d.ts.map +1 -0
- package/dist/widgets/{RecentlyViewed/getDocuments.js → Activity/utils/getActivityWidgetDocs.js} +24 -21
- package/dist/widgets/Activity/utils/getActivityWidgetDocs.js.map +1 -0
- package/dist/widgets/Activity/utils/state.d.ts +44 -0
- package/dist/widgets/Activity/utils/state.d.ts.map +1 -0
- package/dist/widgets/Activity/utils/state.js +80 -0
- package/dist/widgets/Activity/utils/state.js.map +1 -0
- package/dist/widgets/Activity/utils/useActivityDocuments.d.ts +35 -0
- package/dist/widgets/Activity/utils/useActivityDocuments.d.ts.map +1 -0
- package/dist/widgets/Activity/utils/useActivityDocuments.js +141 -0
- package/dist/widgets/Activity/utils/useActivityDocuments.js.map +1 -0
- package/dist/widgets/Activity/utils/usePageSize.d.ts +11 -0
- package/dist/widgets/Activity/utils/usePageSize.d.ts.map +1 -0
- package/dist/widgets/Activity/utils/usePageSize.js +35 -0
- package/dist/widgets/Activity/utils/usePageSize.js.map +1 -0
- package/dist/widgets/CollectionCards/index.client.d.ts +3 -0
- package/dist/widgets/CollectionCards/index.client.d.ts.map +1 -1
- package/dist/widgets/CollectionCards/index.client.js +3 -0
- package/dist/widgets/CollectionCards/index.client.js.map +1 -1
- package/dist/widgets/CollectionCards/index.d.ts +3 -0
- package/dist/widgets/CollectionCards/index.d.ts.map +1 -1
- package/dist/widgets/CollectionCards/index.js +3 -0
- package/dist/widgets/CollectionCards/index.js.map +1 -1
- package/dist/widgets/CollectionQuery/SortField/index.d.ts +3 -0
- package/dist/widgets/CollectionQuery/SortField/index.d.ts.map +1 -1
- package/dist/widgets/CollectionQuery/SortField/index.js +181 -73
- package/dist/widgets/CollectionQuery/SortField/index.js.map +1 -1
- package/dist/widgets/CollectionQuery/index.d.ts +3 -0
- package/dist/widgets/CollectionQuery/index.d.ts.map +1 -1
- package/dist/widgets/CollectionQuery/index.js +3 -0
- package/dist/widgets/CollectionQuery/index.js.map +1 -1
- package/dist/widgets/UploadDropzone/CollectionsField/index.d.ts +3 -0
- package/dist/widgets/UploadDropzone/CollectionsField/index.d.ts.map +1 -1
- package/dist/widgets/UploadDropzone/CollectionsField/index.js +65 -14
- package/dist/widgets/UploadDropzone/CollectionsField/index.js.map +1 -1
- package/dist/widgets/UploadDropzone/index.client.d.ts +3 -0
- package/dist/widgets/UploadDropzone/index.client.d.ts.map +1 -1
- package/dist/widgets/UploadDropzone/index.client.js +3 -0
- package/dist/widgets/UploadDropzone/index.client.js.map +1 -1
- package/dist/widgets/UploadDropzone/index.d.ts +3 -0
- package/dist/widgets/UploadDropzone/index.d.ts.map +1 -1
- package/dist/widgets/UploadDropzone/index.js +3 -0
- package/dist/widgets/UploadDropzone/index.js.map +1 -1
- package/dist/widgets/Welcome/index.d.ts +3 -0
- package/dist/widgets/Welcome/index.d.ts.map +1 -1
- package/dist/widgets/Welcome/index.js +3 -0
- package/dist/widgets/Welcome/index.js.map +1 -1
- package/dist/widgets/WidgetCard/index.css +0 -20
- package/dist/widgets/{RecentlyViewed/CollectionsField → shared/CollectionFilter}/index.css +2 -2
- package/dist/widgets/{RecentlyViewed/CollectionsField → shared/CollectionFilter}/index.d.ts +3 -1
- package/dist/widgets/shared/CollectionFilter/index.d.ts.map +1 -0
- package/dist/widgets/shared/CollectionFilter/index.js +170 -0
- package/dist/widgets/shared/CollectionFilter/index.js.map +1 -0
- package/package.json +21 -23
- package/dist/exports/client/chunk-2AY67NFV.js.map +0 -7
- package/dist/exports/client/chunk-6XCSN54Q.js +0 -27
- package/dist/exports/client/chunk-6XCSN54Q.js.map +0 -7
- package/dist/widgets/RecentlyViewed/CollectionsField/index.d.ts.map +0 -1
- package/dist/widgets/RecentlyViewed/CollectionsField/index.js +0 -102
- package/dist/widgets/RecentlyViewed/CollectionsField/index.js.map +0 -1
- package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.css +0 -73
- package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.d.ts +0 -19
- package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.d.ts.map +0 -1
- package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.js +0 -122
- package/dist/widgets/RecentlyViewed/PinDocumentPicker/index.js.map +0 -1
- package/dist/widgets/RecentlyViewed/getDocuments.d.ts +0 -20
- package/dist/widgets/RecentlyViewed/getDocuments.d.ts.map +0 -1
- package/dist/widgets/RecentlyViewed/getDocuments.js.map +0 -1
- package/dist/widgets/RecentlyViewed/index.client.d.ts.map +0 -1
- package/dist/widgets/RecentlyViewed/index.client.js +0 -401
- package/dist/widgets/RecentlyViewed/index.client.js.map +0 -1
- package/dist/widgets/RecentlyViewed/index.css +0 -318
- package/dist/widgets/RecentlyViewed/index.d.ts +0 -10
- package/dist/widgets/RecentlyViewed/index.d.ts.map +0 -1
- package/dist/widgets/RecentlyViewed/index.js +0 -45
- package/dist/widgets/RecentlyViewed/index.js.map +0 -1
- package/dist/widgets/RecentlyViewed/pinnedPreferences.d.ts.map +0 -1
- package/dist/widgets/RecentlyViewed/pinnedPreferences.js.map +0 -1
- package/dist/widgets/RecentlyViewed/recents.d.ts +0 -8
- package/dist/widgets/RecentlyViewed/recents.d.ts.map +0 -1
- package/dist/widgets/RecentlyViewed/recents.js +0 -19
- package/dist/widgets/RecentlyViewed/recents.js.map +0 -1
- /package/dist/exports/client/{CodeEditor-UKD3EPUY.js.map → CodeEditor-23ZGBN6S.js.map} +0 -0
- /package/dist/exports/client/{DatePicker-POZJVQP4.js.map → DatePicker-AZBZPMY6.js.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useControllableState.js","names":["c","_c","useEffect","useRef","useState","useControllableState","propValue","fallbackValue","$","localValue","setLocalValue","previousPropValue","t0","t1","Object","is","current","t2","t3"],"sources":["../../src/hooks/useControllableState.ts"],"sourcesContent":["'use client'\nimport { useEffect, useRef, useState } from 'react'\n\n/**\n * A hook for managing state that can be controlled by props but also overridden locally.\n * Props always take precedence if they change, but local state can override them temporarily.\n *\n * @param propValue - The controlled value from props\n * @param fallbackValue - Value to use when propValue is null or undefined\n *\n * @internal - may change or be removed without a major version bump\n */\nexport function useControllableState<T, D>(\n propValue: T,\n fallbackValue: D,\n): [T extends NonNullable<T> ? T : D | NonNullable<T>, (value: ((prev: T) => T) | T) => void]\n\nexport function useControllableState<T>(propValue: T): [T, (value: ((prev: T) => T) | T) => void]\n\nexport function useControllableState<T, D>(\n propValue: T,\n fallbackValue?: D,\n): [T extends NonNullable<T> ? T : D | NonNullable<T>, (value: ((prev: T) => T) | T) => void] {\n const [localValue, setLocalValue] = useState<T>(propValue)\n const previousPropValue = useRef(propValue)\n\n useEffect(() => {\n if (Object.is(previousPropValue.current, propValue)) {\n return\n }\n\n previousPropValue.current = propValue\n setLocalValue(propValue)\n }, [propValue])\n\n return [localValue ?? fallbackValue, setLocalValue] as [\n T extends NonNullable<T> ? T : D | NonNullable<T>,\n (value: ((prev: T) => T) | T) => void,\n ]\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AACA,SAASC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAkB5C,OAAO,SAAAC,qBAAAC,SAAA,EAAAC,aAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EAIL,OAAAQ,UAAA,EAAAC,aAAA,IAAoCN,QAAA,CAAYE,SAAA;EAChD,MAAAK,iBAAA,GAA0BR,MAAA,CAAOG,SAAA;EAAA,IAAAM,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAL,CAAA,QAAAF,SAAA;IAEvBM,EAAA,GAAAA,CAAA;
|
|
1
|
+
{"version":3,"file":"useControllableState.js","names":["c","_c","useEffect","useRef","useState","useControllableState","propValue","fallbackValue","$","localValue","setLocalValue","previousPropValue","t0","t1","Object","is","current","t2","t3"],"sources":["../../src/hooks/useControllableState.ts"],"sourcesContent":["'use client'\nimport { useEffect, useRef, useState } from 'react'\n\n/**\n * A hook for managing state that can be controlled by props but also overridden locally.\n * Props always take precedence if they change, but local state can override them temporarily.\n *\n * @param propValue - The controlled value from props\n * @param fallbackValue - Value to use when propValue is null or undefined\n *\n * @internal - may change or be removed without a major version bump\n */\nexport function useControllableState<T, D>(\n propValue: T,\n fallbackValue: D,\n): [T extends NonNullable<T> ? T : D | NonNullable<T>, (value: ((prev: T) => T) | T) => void]\n\nexport function useControllableState<T>(propValue: T): [T, (value: ((prev: T) => T) | T) => void]\n\nexport function useControllableState<T, D>(\n propValue: T,\n fallbackValue?: D,\n): [T extends NonNullable<T> ? T : D | NonNullable<T>, (value: ((prev: T) => T) | T) => void] {\n const [localValue, setLocalValue] = useState<T>(propValue)\n const previousPropValue = useRef(propValue)\n\n useEffect(() => {\n if (Object.is(previousPropValue.current, propValue)) {\n return\n }\n\n previousPropValue.current = propValue\n setLocalValue(propValue)\n }, [propValue])\n\n return [localValue ?? fallbackValue, setLocalValue] as [\n T extends NonNullable<T> ? T : D | NonNullable<T>,\n (value: ((prev: T) => T) | T) => void,\n ]\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AACA,SAASC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAkB5C,OAAO,SAAAC,qBAAAC,SAAA,EAAAC,aAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EAIL,OAAAQ,UAAA,EAAAC,aAAA,IAAoCN,QAAA,CAAYE,SAAA;EAChD,MAAAK,iBAAA,GAA0BR,MAAA,CAAOG,SAAA;EAAA,IAAAM,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAL,CAAA,QAAAF,SAAA;IAEvBM,EAAA,GAAAA,CAAA;MACR,IAAIE,MAAA,CAAAC,EAAS,CAACJ,iBAAA,CAAAK,OAAyB,EAAEV,SAAA;QAAA;MAAA;MAIzCK,iBAAA,CAAAK,OAAA,GAA4BV,SAAH;MACzBI,aAAA,CAAcJ,SAAA;IAAA,CAChB;IAAGO,EAAA,IAACP,SAAA,CAAU;IAAAE,CAAA,MAAAF,SAAA;IAAAE,CAAA,MAAAI,EAAA;IAAAJ,CAAA,MAAAK,EAAA;EAAA;IAAAD,EAAA,GAAAJ,CAAA;IAAAK,EAAA,GAAAL,CAAA;EAAA;EAPdN,SAAA,CAAUU,EAOV,EAAGC,EAAW;EAEN,MAAAI,EAAA,GAAAR,UAAc,IAAdF,aAAc;EAAA,IAAAW,EAAA;EAAA,IAAAV,CAAA,QAAAS,EAAA;IAAfC,EAAA,IAACD,EAAc,EAAeP,aAAA,CAAc;IAAAF,CAAA,MAAAS,EAAA;IAAAT,CAAA,MAAAU,EAAA;EAAA;IAAAA,EAAA,GAAAV,CAAA;EAAA;EAAA,OAA5CU,EAA4C;AAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDebounce.js","names":["c","_c","useEffect","useState","useDebounce","value","delay","$","debouncedValue","setDebouncedValue","t0","t1","handler","setTimeout","clearTimeout"],"sources":["../../src/hooks/useDebounce.ts"],"sourcesContent":["'use client'\nimport { useEffect, useState } from 'react'\n\nexport function useDebounce<T = unknown>(value: T, delay: number): T {\n // State and setters for debounced value\n const [debouncedValue, setDebouncedValue] = useState(value)\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value)\n }, delay)\n\n return () => {\n clearTimeout(handler)\n }\n }, [value, delay])\n\n return debouncedValue\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AACA,SAASC,SAAS,EAAEC,QAAQ,QAAQ;AAEpC,OAAO,SAAAC,YAAAC,KAAA,EAAAC,KAAA;EAAA,MAAAC,CAAA,GAAAN,EAAA;EAEL,OAAAO,cAAA,EAAAC,iBAAA,IAA4CN,QAAA,CAASE,KAAA;EAAA,IAAAK,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAJ,CAAA,QAAAD,KAAA,IAAAC,CAAA,QAAAF,KAAA;IAE3CK,EAAA,GAAAA,CAAA;MACR,MAAAE,OAAA,GAAgBC,UAAA;
|
|
1
|
+
{"version":3,"file":"useDebounce.js","names":["c","_c","useEffect","useState","useDebounce","value","delay","$","debouncedValue","setDebouncedValue","t0","t1","handler","setTimeout","clearTimeout"],"sources":["../../src/hooks/useDebounce.ts"],"sourcesContent":["'use client'\nimport { useEffect, useState } from 'react'\n\nexport function useDebounce<T = unknown>(value: T, delay: number): T {\n // State and setters for debounced value\n const [debouncedValue, setDebouncedValue] = useState(value)\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedValue(value)\n }, delay)\n\n return () => {\n clearTimeout(handler)\n }\n }, [value, delay])\n\n return debouncedValue\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AACA,SAASC,SAAS,EAAEC,QAAQ,QAAQ;AAEpC,OAAO,SAAAC,YAAAC,KAAA,EAAAC,KAAA;EAAA,MAAAC,CAAA,GAAAN,EAAA;EAEL,OAAAO,cAAA,EAAAC,iBAAA,IAA4CN,QAAA,CAASE,KAAA;EAAA,IAAAK,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAJ,CAAA,QAAAD,KAAA,IAAAC,CAAA,QAAAF,KAAA;IAE3CK,EAAA,GAAAA,CAAA;MACR,MAAAE,OAAA,GAAgBC,UAAA,CAAW;QACzBJ,iBAAA,CAAkBJ,KAAA;MAAA,CACpB,EAAGC,KAAA;MAAA,OAEI;QACLQ,YAAA,CAAaF,OAAA;MAAA,CACf;IAAA,CACF;IAAGD,EAAA,IAACN,KAAA,EAAOC,KAAA,CAAM;IAAAC,CAAA,MAAAD,KAAA;IAAAC,CAAA,MAAAF,KAAA;IAAAE,CAAA,MAAAG,EAAA;IAAAH,CAAA,MAAAI,EAAA;EAAA;IAAAD,EAAA,GAAAH,CAAA;IAAAI,EAAA,GAAAJ,CAAA;EAAA;EARjBL,SAAA,CAAUQ,EAQV,EAAGC,EAAc;EAAA,OAEVH,cAAA;AAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDebouncedCallback.js","names":["c","_c","useCallback","useRef","useDebouncedCallback","func","wait","$","timeout","undefined","t0","t1","args","later","clearTimeout","current","setTimeout"],"sources":["../../src/hooks/useDebouncedCallback.ts"],"sourcesContent":["'use client'\nimport { useCallback, useRef } from 'react'\n\n/**\n * Returns a memoized function that will only call the passed function when it hasn't been called for the wait period\n * @param func The function to be called\n * @param wait Wait period after function hasn't been called for\n * @returns A memoized function that is debounced\n */\nexport const useDebouncedCallback = <TFunctionArgs = any>(func, wait) => {\n // Use a ref to store the timeout between renders\n // and prevent changes to it from causing re-renders\n const timeout = useRef<ReturnType<typeof setTimeout>>(undefined)\n\n return useCallback(\n (...args: TFunctionArgs[]) => {\n const later = () => {\n clearTimeout(timeout.current)\n func(...args)\n }\n\n clearTimeout(timeout.current)\n timeout.current = setTimeout(later, wait)\n },\n [func, wait],\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AACA,SAASC,WAAW,EAAEC,MAAM,QAAQ;AAEpC;;;;;;AAMA,OAAO,MAAMC,oBAAA,GAAuBA,CAAAC,IAAA,EAAAC,IAAA;EAAA,MAAAC,CAAA,GAAAN,EAAA;EAGlC,MAAAO,OAAA,GAAgBL,MAAA,
|
|
1
|
+
{"version":3,"file":"useDebouncedCallback.js","names":["c","_c","useCallback","useRef","useDebouncedCallback","func","wait","$","timeout","undefined","t0","t1","args","later","clearTimeout","current","setTimeout"],"sources":["../../src/hooks/useDebouncedCallback.ts"],"sourcesContent":["'use client'\nimport { useCallback, useRef } from 'react'\n\n/**\n * Returns a memoized function that will only call the passed function when it hasn't been called for the wait period\n * @param func The function to be called\n * @param wait Wait period after function hasn't been called for\n * @returns A memoized function that is debounced\n */\nexport const useDebouncedCallback = <TFunctionArgs = any>(func, wait) => {\n // Use a ref to store the timeout between renders\n // and prevent changes to it from causing re-renders\n const timeout = useRef<ReturnType<typeof setTimeout>>(undefined)\n\n return useCallback(\n (...args: TFunctionArgs[]) => {\n const later = () => {\n clearTimeout(timeout.current)\n func(...args)\n }\n\n clearTimeout(timeout.current)\n timeout.current = setTimeout(later, wait)\n },\n [func, wait],\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AACA,SAASC,WAAW,EAAEC,MAAM,QAAQ;AAEpC;;;;;;AAMA,OAAO,MAAMC,oBAAA,GAAuBA,CAAAC,IAAA,EAAAC,IAAA;EAAA,MAAAC,CAAA,GAAAN,EAAA;EAGlC,MAAAO,OAAA,GAAgBL,MAAA,CAAsCM,SAAA;EAAA,IAAAC,EAAA;EAAA,IAAAH,CAAA,QAAAF,IAAA,IAAAE,CAAA,QAAAD,IAAA;IAGpDI,EAAA,GAAAA,CAAA,GAAAC,EAAA;MAAC,MAAAC,IAAA,GAAAD,EAAG;MACF,MAAAE,KAAA,GAAcA,CAAA;QACZC,YAAA,CAAaN,OAAA,CAAAO,OAAe;QAC5BV,IAAA,IAAQO,IAAA;MAAA,CACV;MAEAE,YAAA,CAAaN,OAAA,CAAAO,OAAe;MAC5BP,OAAA,CAAAO,OAAA,GAAkBC,UAAA,CAAWH,KAAA,EAAOP,IAAA,CAArB;IAAA,CACjB;IAAAC,CAAA,MAAAF,IAAA;IAAAE,CAAA,MAAAD,IAAA;IAAAC,CAAA,MAAAG,EAAA;EAAA;IAAAA,EAAA,GAAAH,CAAA;EAAA;EAAA,OATKG,EAUO;AAAA,CAEhB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDebouncedEffect.js","names":["c","_c","useEffect","useState","useDebouncedEffect","effect","deps","delay","$","t0","debouncedEffect","setDebouncedEffect","t1","handler","setTimeout","clearTimeout","t2","t3","t4"],"sources":["../../src/hooks/useDebouncedEffect.ts"],"sourcesContent":["'use client'\nimport type { DependencyList } from 'react'\n\nimport { useEffect, useState } from 'react'\n\nexport function useDebouncedEffect(effect: () => void, deps: DependencyList, delay: number): void {\n const [debouncedEffect, setDebouncedEffect] = useState<() => void>(() => effect)\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedEffect(() => effect)\n }, delay)\n\n return () => {\n clearTimeout(handler)\n }\n }, [...deps, delay])\n\n useEffect(() => {\n debouncedEffect()\n }, [debouncedEffect])\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAGA,SAASC,SAAS,EAAEC,QAAQ,QAAQ;AAEpC,OAAO,SAAAC,mBAAAC,MAAA,EAAAC,IAAA,EAAAC,KAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EAAA,IAAAQ,EAAA;EAAA,IAAAD,CAAA,QAAAH,MAAA;IAC8DI,EAAA,GAAAA,CAAA,KAAMJ,MAAA;IAAAG,CAAA,MAAAH,MAAA;IAAAG,CAAA,MAAAC,EAAA;EAAA;IAAAA,EAAA,GAAAD,CAAA;EAAA;EAAzE,OAAAE,eAAA,EAAAC,kBAAA,IAA8CR,QAAA,CAAqBM,EAAM;EAAA,IAAAG,EAAA;EAAA,IAAAJ,CAAA,QAAAD,KAAA,IAAAC,CAAA,QAAAH,MAAA;IAE/DO,EAAA,GAAAA,CAAA;MACR,MAAAC,OAAA,GAAgBC,UAAA;
|
|
1
|
+
{"version":3,"file":"useDebouncedEffect.js","names":["c","_c","useEffect","useState","useDebouncedEffect","effect","deps","delay","$","t0","debouncedEffect","setDebouncedEffect","t1","handler","setTimeout","clearTimeout","t2","t3","t4"],"sources":["../../src/hooks/useDebouncedEffect.ts"],"sourcesContent":["'use client'\nimport type { DependencyList } from 'react'\n\nimport { useEffect, useState } from 'react'\n\nexport function useDebouncedEffect(effect: () => void, deps: DependencyList, delay: number): void {\n const [debouncedEffect, setDebouncedEffect] = useState<() => void>(() => effect)\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setDebouncedEffect(() => effect)\n }, delay)\n\n return () => {\n clearTimeout(handler)\n }\n }, [...deps, delay])\n\n useEffect(() => {\n debouncedEffect()\n }, [debouncedEffect])\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAGA,SAASC,SAAS,EAAEC,QAAQ,QAAQ;AAEpC,OAAO,SAAAC,mBAAAC,MAAA,EAAAC,IAAA,EAAAC,KAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EAAA,IAAAQ,EAAA;EAAA,IAAAD,CAAA,QAAAH,MAAA;IAC8DI,EAAA,GAAAA,CAAA,KAAMJ,MAAA;IAAAG,CAAA,MAAAH,MAAA;IAAAG,CAAA,MAAAC,EAAA;EAAA;IAAAA,EAAA,GAAAD,CAAA;EAAA;EAAzE,OAAAE,eAAA,EAAAC,kBAAA,IAA8CR,QAAA,CAAqBM,EAAM;EAAA,IAAAG,EAAA;EAAA,IAAAJ,CAAA,QAAAD,KAAA,IAAAC,CAAA,QAAAH,MAAA;IAE/DO,EAAA,GAAAA,CAAA;MACR,MAAAC,OAAA,GAAgBC,UAAA,CAAW;QACzBH,kBAAA,CAAmB,MAAMN,MAAA;MAAA,CAC3B,EAAGE,KAAA;MAAA,OAEI;QACLQ,YAAA,CAAaF,OAAA;MAAA,CACf;IAAA,CACF;IAAAL,CAAA,MAAAD,KAAA;IAAAC,CAAA,MAAAH,MAAA;IAAAG,CAAA,MAAAI,EAAA;EAAA;IAAAA,EAAA,GAAAJ,CAAA;EAAA;EAAA,IAAAQ,EAAA;EAAA,IAAAR,CAAA,QAAAD,KAAA,IAAAC,CAAA,QAAAF,IAAA;IAAGU,EAAA,OAAIV,IAAA,EAAMC,KAAA,CAAM;IAAAC,CAAA,MAAAD,KAAA;IAAAC,CAAA,MAAAF,IAAA;IAAAE,CAAA,MAAAQ,EAAA;EAAA;IAAAA,EAAA,GAAAR,CAAA;EAAA;EARnBN,SAAA,CAAUU,EAQV,EAAGI,EAAgB;EAAA,IAAAC,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAV,CAAA,QAAAE,eAAA;IAETO,EAAA,GAAAA,CAAA;MACRP,eAAA;IAAA,CACF;IAAGQ,EAAA,IAACR,eAAA,CAAgB;IAAAF,CAAA,MAAAE,eAAA;IAAAF,CAAA,MAAAS,EAAA;IAAAT,CAAA,OAAAU,EAAA;EAAA;IAAAD,EAAA,GAAAT,CAAA;IAAAU,EAAA,GAAAV,CAAA;EAAA;EAFpBN,SAAA,CAAUe,EAEV,EAAGC,EAAiB;AAAA","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDelay.js","names":["c","_c","React","useDelay","delay","t0","$","triggerOnMount","undefined","hasDelayed","setHasDelayed","useState","triggerTimeoutRef","useRef","t1","clearTimeout","current","setTimeout","triggerDelay","t2","t3","useEffect","t4"],"sources":["../../src/hooks/useDelay.ts"],"sourcesContent":["'use client'\nimport * as React from 'react'\n\ntype Result = [boolean, () => void]\nexport const useDelay = (delay: number, triggerOnMount = false): Result => {\n const [hasDelayed, setHasDelayed] = React.useState(false)\n const triggerTimeoutRef = React.useRef<NodeJS.Timeout>(undefined)\n\n const triggerDelay = React.useCallback(() => {\n setHasDelayed(false)\n clearTimeout(triggerTimeoutRef.current)\n triggerTimeoutRef.current = setTimeout(() => {\n setHasDelayed(true)\n }, delay)\n\n return () => {\n clearTimeout(triggerTimeoutRef.current)\n }\n }, [delay])\n\n React.useEffect(() => {\n if (triggerOnMount) {\n triggerDelay()\n }\n }, [triggerDelay, triggerOnMount])\n\n return [hasDelayed, triggerDelay]\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AACA,YAAYC,KAAA,MAAW;AAGvB,OAAO,MAAMC,QAAA,GAAWA,CAAAC,KAAA,EAAAC,EAAA;EAAA,MAAAC,CAAA,GAAAL,EAAA;EAAgB,MAAAM,cAAA,GAAAF,EAAsB,
|
|
1
|
+
{"version":3,"file":"useDelay.js","names":["c","_c","React","useDelay","delay","t0","$","triggerOnMount","undefined","hasDelayed","setHasDelayed","useState","triggerTimeoutRef","useRef","t1","clearTimeout","current","setTimeout","triggerDelay","t2","t3","useEffect","t4"],"sources":["../../src/hooks/useDelay.ts"],"sourcesContent":["'use client'\nimport * as React from 'react'\n\ntype Result = [boolean, () => void]\nexport const useDelay = (delay: number, triggerOnMount = false): Result => {\n const [hasDelayed, setHasDelayed] = React.useState(false)\n const triggerTimeoutRef = React.useRef<NodeJS.Timeout>(undefined)\n\n const triggerDelay = React.useCallback(() => {\n setHasDelayed(false)\n clearTimeout(triggerTimeoutRef.current)\n triggerTimeoutRef.current = setTimeout(() => {\n setHasDelayed(true)\n }, delay)\n\n return () => {\n clearTimeout(triggerTimeoutRef.current)\n }\n }, [delay])\n\n React.useEffect(() => {\n if (triggerOnMount) {\n triggerDelay()\n }\n }, [triggerDelay, triggerOnMount])\n\n return [hasDelayed, triggerDelay]\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AACA,YAAYC,KAAA,MAAW;AAGvB,OAAO,MAAMC,QAAA,GAAWA,CAAAC,KAAA,EAAAC,EAAA;EAAA,MAAAC,CAAA,GAAAL,EAAA;EAAgB,MAAAM,cAAA,GAAAF,EAAsB,KAAtBG,SAAsB,GAAtB,KAAsB,GAAtBH,EAAsB;EAC5D,OAAAI,UAAA,EAAAC,aAAA,IAAoCR,KAAA,CAAAS,QAAc,CAAC;EACnD,MAAAC,iBAAA,GAA0BV,KAAA,CAAAW,MAAY,CAAiBL,SAAA;EAAA,IAAAM,EAAA;EAAA,IAAAR,CAAA,QAAAF,KAAA;IAEhBU,EAAA,GAAAA,CAAA;MACrCJ,aAAA,CAAc;MACdK,YAAA,CAAaH,iBAAA,CAAAI,OAAyB;MACtCJ,iBAAA,CAAAI,OAAA,GAA4BC,UAAA,CAAW;QACrCP,aAAA,CAAc;MAAA,CAChB,EAAGN,KAAA,CAFsB;MAAA,OAIlB;QACLW,YAAA,CAAaH,iBAAA,CAAAI,OAAyB;MAAA,CACxC;IAAA,CACF;IAAAV,CAAA,MAAAF,KAAA;IAAAE,CAAA,MAAAQ,EAAA;EAAA;IAAAA,EAAA,GAAAR,CAAA;EAAA;EAVA,MAAAY,YAAA,GAAqBJ,EAUX;EAAA,IAAAK,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAd,CAAA,QAAAY,YAAA,IAAAZ,CAAA,QAAAC,cAAA;IAEMY,EAAA,GAAAA,CAAA;MACd,IAAIZ,cAAA;QACFW,YAAA;MAAA;IACF,CACF;IAAGE,EAAA,IAACF,YAAA,EAAcX,cAAA,CAAe;IAAAD,CAAA,MAAAY,YAAA;IAAAZ,CAAA,MAAAC,cAAA;IAAAD,CAAA,MAAAa,EAAA;IAAAb,CAAA,MAAAc,EAAA;EAAA;IAAAD,EAAA,GAAAb,CAAA;IAAAc,EAAA,GAAAd,CAAA;EAAA;EAJjCJ,KAAA,CAAAmB,SAAe,CAACF,EAIhB,EAAGC,EAA8B;EAAA,IAAAE,EAAA;EAAA,IAAAhB,CAAA,QAAAG,UAAA,IAAAH,CAAA,QAAAY,YAAA;IAE1BI,EAAA,IAACb,UAAA,EAAYS,YAAA,CAAa;IAAAZ,CAAA,MAAAG,UAAA;IAAAH,CAAA,MAAAY,YAAA;IAAAZ,CAAA,MAAAgB,EAAA;EAAA;IAAAA,EAAA,GAAAhB,CAAA;EAAA;EAAA,OAA1BgB,EAA0B;AAAA,CACnC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDelayedRender.js","names":["c","_c","React","useDelay","useDelayedRender","t0","$","delayBeforeShow","inTimeout","minShowTime","outTimeout","show","totalMountTime","hasDelayed","triggerDelay","isMounted","setIsMounted","useState","isUnmounting","setIsUnmounting","onMountTimestampRef","useRef","unmountTimeoutRef","undefined","t1","current","setTimeout","unmount","t2","t3","shouldMount","shouldUnmount","Date","now","totalTimeMounted","remainingTime","clearTimeout","Math","max","useEffect","t4","triggerDelayedRender"],"sources":["../../src/hooks/useDelayedRender.ts"],"sourcesContent":["'use client'\nimport * as React from 'react'\n\nimport { useDelay } from './useDelay.js'\n\ntype DelayedRenderProps = {\n /** Time in ms to wait before \"mounting\" the component. */\n delayBeforeShow: number\n /** Time in ms for the \"enter\" phase of the transition, after delay completes. */\n inTimeout: number\n /** Min time in ms for the \"entered\" phase of the transition. */\n minShowTime: number\n /** Time in ms for the exit phase of the transition. */\n outTimeout: number\n /** `true` starts the mount process.\n * `false` starts the unmount process.\n * */\n show: boolean\n}\ntype useDelayedRenderT = (props: DelayedRenderProps) => {\n /** `true` if the component has mounted after the timeout. */\n isMounted: boolean\n /** `true` if the component is unmounting. */\n isUnmounting: boolean\n /** Call this function to trigger the timeout delay before rendering. */\n triggerDelayedRender: () => void\n}\nexport const useDelayedRender: useDelayedRenderT = ({\n delayBeforeShow,\n inTimeout,\n minShowTime,\n outTimeout,\n show,\n}) => {\n const totalMountTime = inTimeout + minShowTime + outTimeout\n const [hasDelayed, triggerDelay] = useDelay(delayBeforeShow)\n const [isMounted, setIsMounted] = React.useState(false)\n const [isUnmounting, setIsUnmounting] = React.useState(false)\n const onMountTimestampRef = React.useRef(0)\n const unmountTimeoutRef: React.RefObject<NodeJS.Timeout | undefined> = React.useRef(undefined)\n\n const unmount = React.useCallback(() => {\n setIsUnmounting(true)\n unmountTimeoutRef.current = setTimeout(() => {\n setIsMounted(false)\n setIsUnmounting(false)\n }, outTimeout)\n }, [setIsUnmounting, outTimeout])\n\n React.useEffect(() => {\n const shouldMount = hasDelayed && !isMounted && show\n const shouldUnmount = isMounted && !show\n\n if (shouldMount) {\n onMountTimestampRef.current = Date.now()\n setIsMounted(true)\n } else if (shouldUnmount) {\n const totalTimeMounted = Date.now() - onMountTimestampRef.current\n const remainingTime = totalMountTime - totalTimeMounted\n clearTimeout(unmountTimeoutRef.current)\n unmountTimeoutRef.current = setTimeout(unmount, Math.max(0, remainingTime))\n }\n }, [isMounted, show, unmount, totalMountTime, hasDelayed])\n\n return {\n isMounted,\n isUnmounting,\n triggerDelayedRender: triggerDelay,\n }\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AACA,YAAYC,KAAA,MAAW;AAEvB,SAASC,QAAQ,QAAQ;AAwBzB,OAAO,MAAMC,gBAAA,GAAsCC,EAAA;EAAA,MAAAC,CAAA,GAAAL,EAAA;EAAC;IAAAM,eAAA;IAAAC,SAAA;IAAAC,WAAA;IAAAC,UAAA;IAAAC;EAAA,IAAAN,EAMnD;EACC,MAAAO,cAAA,GAAuBJ,SAAA,GAAYC,WAAA,GAAcC,UAAA;EACjD,OAAAG,UAAA,EAAAC,YAAA,IAAmCX,QAAA,CAASI,eAAA;EAC5C,OAAAQ,SAAA,EAAAC,YAAA,IAAkCd,KAAA,CAAAe,
|
|
1
|
+
{"version":3,"file":"useDelayedRender.js","names":["c","_c","React","useDelay","useDelayedRender","t0","$","delayBeforeShow","inTimeout","minShowTime","outTimeout","show","totalMountTime","hasDelayed","triggerDelay","isMounted","setIsMounted","useState","isUnmounting","setIsUnmounting","onMountTimestampRef","useRef","unmountTimeoutRef","undefined","t1","current","setTimeout","unmount","t2","t3","shouldMount","shouldUnmount","Date","now","totalTimeMounted","remainingTime","clearTimeout","Math","max","useEffect","t4","triggerDelayedRender"],"sources":["../../src/hooks/useDelayedRender.ts"],"sourcesContent":["'use client'\nimport * as React from 'react'\n\nimport { useDelay } from './useDelay.js'\n\ntype DelayedRenderProps = {\n /** Time in ms to wait before \"mounting\" the component. */\n delayBeforeShow: number\n /** Time in ms for the \"enter\" phase of the transition, after delay completes. */\n inTimeout: number\n /** Min time in ms for the \"entered\" phase of the transition. */\n minShowTime: number\n /** Time in ms for the exit phase of the transition. */\n outTimeout: number\n /** `true` starts the mount process.\n * `false` starts the unmount process.\n * */\n show: boolean\n}\ntype useDelayedRenderT = (props: DelayedRenderProps) => {\n /** `true` if the component has mounted after the timeout. */\n isMounted: boolean\n /** `true` if the component is unmounting. */\n isUnmounting: boolean\n /** Call this function to trigger the timeout delay before rendering. */\n triggerDelayedRender: () => void\n}\nexport const useDelayedRender: useDelayedRenderT = ({\n delayBeforeShow,\n inTimeout,\n minShowTime,\n outTimeout,\n show,\n}) => {\n const totalMountTime = inTimeout + minShowTime + outTimeout\n const [hasDelayed, triggerDelay] = useDelay(delayBeforeShow)\n const [isMounted, setIsMounted] = React.useState(false)\n const [isUnmounting, setIsUnmounting] = React.useState(false)\n const onMountTimestampRef = React.useRef(0)\n const unmountTimeoutRef: React.RefObject<NodeJS.Timeout | undefined> = React.useRef(undefined)\n\n const unmount = React.useCallback(() => {\n setIsUnmounting(true)\n unmountTimeoutRef.current = setTimeout(() => {\n setIsMounted(false)\n setIsUnmounting(false)\n }, outTimeout)\n }, [setIsUnmounting, outTimeout])\n\n React.useEffect(() => {\n const shouldMount = hasDelayed && !isMounted && show\n const shouldUnmount = isMounted && !show\n\n if (shouldMount) {\n onMountTimestampRef.current = Date.now()\n setIsMounted(true)\n } else if (shouldUnmount) {\n const totalTimeMounted = Date.now() - onMountTimestampRef.current\n const remainingTime = totalMountTime - totalTimeMounted\n clearTimeout(unmountTimeoutRef.current)\n unmountTimeoutRef.current = setTimeout(unmount, Math.max(0, remainingTime))\n }\n }, [isMounted, show, unmount, totalMountTime, hasDelayed])\n\n return {\n isMounted,\n isUnmounting,\n triggerDelayedRender: triggerDelay,\n }\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useElementHeightVariable.js","names":["c","_c","useEffect","useElementHeightVariable","t0","$","cssVar","isEnabled","t1","ref","undefined","t2","t3","el","current","observer","ResizeObserver","document","documentElement","style","setProperty","offsetHeight","observe","disconnect","removeProperty"],"sources":["../../src/hooks/useElementHeightVariable.ts"],"sourcesContent":["'use client'\n\nimport type { RefObject } from 'react'\n\nimport { useEffect } from 'react'\n\n/**\n * Observes an element and publishes its rendered height to a CSS custom property on the document\n * root (e.g. `--app-header-height`), so layout that depends on that height can be expressed in CSS.\n * The property is removed on unmount.\n *\n * Used by `AppHeader`, `DocumentControls` and `DocumentHeaderRoot` to expose their heights for\n * sticky offsets and the upload view's scroll-driven sizing.\n */\nexport const useElementHeightVariable = ({\n cssVar,\n isEnabled = true,\n ref,\n}: {\n cssVar: string\n isEnabled?: boolean\n ref: RefObject<HTMLElement | null>\n}): void => {\n useEffect(() => {\n if (!isEnabled) {\n return\n }\n\n const el = ref.current\n if (!el) {\n return\n }\n\n const observer = new ResizeObserver(() => {\n document.documentElement.style.setProperty(cssVar, `${el.offsetHeight}px`)\n })\n observer.observe(el)\n\n return () => {\n observer.disconnect()\n document.documentElement.style.removeProperty(cssVar)\n }\n }, [cssVar, isEnabled, ref])\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAIA,SAASC,SAAS,QAAQ;AAE1B;;;;;;;;AAQA,OAAO,MAAMC,wBAAA,GAA2BC,EAAA;EAAA,MAAAC,CAAA,GAAAJ,EAAA;EAAC;IAAAK,MAAA;IAAAC,SAAA,EAAAC,EAAA;IAAAC;EAAA,IAAAL,EAQxC;EANC,MAAAG,SAAA,GAAAC,EAAgB,
|
|
1
|
+
{"version":3,"file":"useElementHeightVariable.js","names":["c","_c","useEffect","useElementHeightVariable","t0","$","cssVar","isEnabled","t1","ref","undefined","t2","t3","el","current","observer","ResizeObserver","document","documentElement","style","setProperty","offsetHeight","observe","disconnect","removeProperty"],"sources":["../../src/hooks/useElementHeightVariable.ts"],"sourcesContent":["'use client'\n\nimport type { RefObject } from 'react'\n\nimport { useEffect } from 'react'\n\n/**\n * Observes an element and publishes its rendered height to a CSS custom property on the document\n * root (e.g. `--app-header-height`), so layout that depends on that height can be expressed in CSS.\n * The property is removed on unmount.\n *\n * Used by `AppHeader`, `DocumentControls` and `DocumentHeaderRoot` to expose their heights for\n * sticky offsets and the upload view's scroll-driven sizing.\n */\nexport const useElementHeightVariable = ({\n cssVar,\n isEnabled = true,\n ref,\n}: {\n cssVar: string\n isEnabled?: boolean\n ref: RefObject<HTMLElement | null>\n}): void => {\n useEffect(() => {\n if (!isEnabled) {\n return\n }\n\n const el = ref.current\n if (!el) {\n return\n }\n\n const observer = new ResizeObserver(() => {\n document.documentElement.style.setProperty(cssVar, `${el.offsetHeight}px`)\n })\n observer.observe(el)\n\n return () => {\n observer.disconnect()\n document.documentElement.style.removeProperty(cssVar)\n }\n }, [cssVar, isEnabled, ref])\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAIA,SAASC,SAAS,QAAQ;AAE1B;;;;;;;;AAQA,OAAO,MAAMC,wBAAA,GAA2BC,EAAA;EAAA,MAAAC,CAAA,GAAAJ,EAAA;EAAC;IAAAK,MAAA;IAAAC,SAAA,EAAAC,EAAA;IAAAC;EAAA,IAAAL,EAQxC;EANC,MAAAG,SAAA,GAAAC,EAAgB,KAAhBE,SAAgB,GAAhB,IAAgB,GAAhBF,EAAgB;EAAA,IAAAG,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAP,CAAA,QAAAC,MAAA,IAAAD,CAAA,QAAAE,SAAA,IAAAF,CAAA,QAAAI,GAAA;IAONE,EAAA,GAAAA,CAAA;MACR,IAAI,CAACJ,SAAA;QAAA;MAAA;MAIL,MAAAM,EAAA,GAAWJ,GAAA,CAAAK,OAAW;MACtB,IAAI,CAACD,EAAA;QAAA;MAAA;MAIL,MAAAE,QAAA,GAAiB,IAAIC,cAAA,CAAe;QAClCC,QAAA,CAAAC,eAAwB,CAAAC,KAAM,CAAAC,WAAY,CAACd,MAAA,EAAQ,GAAGO,EAAA,CAAAQ,YAAe,IAAI;MAAA,CAC3E;MACAN,QAAA,CAAAO,OAAgB,CAACT,EAAA;MAAA,OAEV;QACLE,QAAA,CAAAQ,UAAmB;QACnBN,QAAA,CAAAC,eAAwB,CAAAC,KAAM,CAAAK,cAAe,CAAClB,MAAA;MAAA,CAChD;IAAA,CACF;IAAGM,EAAA,IAACN,MAAA,EAAQC,SAAA,EAAWE,GAAA,CAAI;IAAAJ,CAAA,MAAAC,MAAA;IAAAD,CAAA,MAAAE,SAAA;IAAAF,CAAA,MAAAI,GAAA;IAAAJ,CAAA,MAAAM,EAAA;IAAAN,CAAA,MAAAO,EAAA;EAAA;IAAAD,EAAA,GAAAN,CAAA;IAAAO,EAAA,GAAAP,CAAA;EAAA;EAnB3BH,SAAA,CAAUS,EAmBV,EAAGC,EAAwB;AAAA,CAC7B","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useHotkey.js","names":["c","_c","useModal","setsAreEqual","useCallback","useEffect","pressedKeys","Map","map","altleft","altright","controlleft","controlright","ctrlleft","ctrlright","escape","metaleft","metaright","osleft","osright","shiftleft","shiftright","stripKey","key","toLowerCase","trim","replace","pushToKeys","code","forEach","time","pressedKey","delete","set","Date","now","removeFromKeys","clear","useHotkey","options","func","$","cmdCtrlKey","editDepth","keyCodes","modalState","t0","event","e","detail","undefined","_temp","hasCmd","window","navigator","userAgent","includes","pressedWithoutModifier","keys","filter","_temp2","Set","has","ctrlKey","maxEditDepth","Object","key_1","isOpen","length","keydown","keyup","_temp3","t1","t2","document","addEventListener","removeEventListener","key_0","e_0"],"sources":["../../src/hooks/useHotkey.ts"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { setsAreEqual } from 'payload/shared'\nimport { useCallback, useEffect } from 'react'\n\n// Required to be outside of hook, else debounce would be necessary\n// and then one could not prevent the default behaviour.\n\n// It maps the pressed keys with the time they were pressed, in order to implement a maximum time\n// for the user to press the next key in the sequence\n\n// This is necessary to prevent a bug where the keyup event, which unsets the key as pressed\n// is not fired when the window is not focused.\n// When the user then comes back to the window, the key is still registered as pressed, even though it's not.\nconst pressedKeys = new Map<string, number>([])\n\nconst map = {\n altleft: 'alt',\n altright: 'alt',\n controlleft: 'ctrl',\n controlright: 'ctrl',\n ctrlleft: 'ctrl',\n ctrlright: 'ctrl',\n escape: 'esc',\n metaleft: 'meta',\n metaright: 'meta',\n osleft: 'meta',\n osright: 'meta',\n shiftleft: 'shift',\n shiftright: 'shift',\n}\n\nconst stripKey = (key: string) => {\n return (map[key.toLowerCase()] || key).trim().toLowerCase().replace('key', '')\n}\n\nconst pushToKeys = (code: string) => {\n const key = stripKey(code)\n\n // There is a weird bug with macos that if the keys are not cleared they remain in the\n // pressed keys set.\n if (key === 'meta') {\n pressedKeys.forEach(\n (time, pressedKey) => pressedKey !== 'meta' && pressedKeys.delete(pressedKey),\n )\n }\n\n pressedKeys.set(key, Date.now())\n}\n\nconst removeFromKeys = (code: string) => {\n const key = stripKey(code)\n // There is a weird bug with macos that if the keys are not cleared they remain in the\n // pressed keys set.\n if (key === 'meta') {\n pressedKeys.clear()\n }\n pressedKeys.delete(key)\n}\n\n/**\n * Hook function to work with hotkeys.\n * @param param0.keyCode {string[]} The keys to listen for (`Event.code` without `'Key'` and lowercased)\n * @param param0.cmdCtrlKey {boolean} Whether Ctrl on windows or Cmd on mac must be pressed\n * @param param0.editDepth {boolean} This ensures that the hotkey is only triggered for the most top-level drawer in case there are nested drawers\n * @param func The callback function\n */\nexport const useHotkey = (\n options: {\n cmdCtrlKey: boolean\n editDepth: number\n keyCodes: string[]\n },\n func: (e: KeyboardEvent) => void,\n): void => {\n const { cmdCtrlKey, editDepth, keyCodes } = options\n\n const { modalState } = useModal()\n\n const keydown = useCallback(\n (event: CustomEvent | KeyboardEvent) => {\n const e: KeyboardEvent = event.detail?.key ? event.detail : event\n if (e.key === undefined) {\n // Autofill events, or other synthetic events, can be ignored\n return\n }\n\n // Filter out pressed keys which have been pressed > 3 seconds ago\n pressedKeys.forEach((time, key) => {\n if (Date.now() - time > 3000) {\n pressedKeys.delete(key)\n }\n })\n\n if (e.code) {\n pushToKeys(e.code)\n }\n\n // Check for Mac and iPad\n const hasCmd = window.navigator.userAgent.includes('Mac OS X')\n const pressedWithoutModifier = [...pressedKeys.keys()].filter(\n (key) => !['alt', 'ctrl', 'meta', 'shift'].includes(key),\n )\n\n // Check whether arrays contain the same values (regardless of number of occurrences)\n if (\n setsAreEqual(new Set(pressedWithoutModifier), new Set(keyCodes)) &&\n (!cmdCtrlKey || (hasCmd && pressedKeys.has('meta')) || (!hasCmd && e.ctrlKey))\n ) {\n // get the maximum edit depth by counting the number of open drawers. modalState is and object which contains the state of all drawers.\n const maxEditDepth =\n Object.keys(modalState).filter((key) => modalState[key]?.isOpen)?.length + 1 || 1\n\n if (maxEditDepth !== editDepth) {\n // We only want to execute the hotkey from the most top-level drawer / edit depth.\n return\n }\n // execute the function associated with the maximum edit depth\n func(e)\n }\n },\n [keyCodes, cmdCtrlKey, editDepth, modalState, func],\n )\n\n const keyup = useCallback((e: KeyboardEvent) => {\n if (e.code) {\n removeFromKeys(e.code)\n }\n }, [])\n\n useEffect(() => {\n document.addEventListener('keydown', keydown, false)\n document.addEventListener('bypassKeyDown', keydown, false) // this is called if the keydown event's propagation is stopped by react-select\n document.addEventListener('keyup', keyup, false)\n\n return () => {\n document.removeEventListener('keydown', keydown)\n document.removeEventListener('bypassKeyDown', keydown)\n document.removeEventListener('keyup', keyup)\n }\n }, [keydown, keyup])\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAEA,SAASC,QAAQ,QAAQ;AACzB,SAASC,YAAY,QAAQ;AAC7B,SAASC,WAAW,EAAEC,SAAS,QAAQ;AAEvC;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA,MAAMC,WAAA,GAAc,IAAIC,GAAA,CAAoB,EAAE;AAE9C,MAAMC,GAAA,GAAM;EACVC,OAAA,EAAS;EACTC,QAAA,EAAU;EACVC,WAAA,EAAa;EACbC,YAAA,EAAc;EACdC,QAAA,EAAU;EACVC,SAAA,EAAW;EACXC,MAAA,EAAQ;EACRC,QAAA,EAAU;EACVC,SAAA,EAAW;EACXC,MAAA,EAAQ;EACRC,OAAA,EAAS;EACTC,SAAA,EAAW;EACXC,UAAA,EAAY;AACd;AAEA,MAAMC,QAAA,GAAYC,GAAA;EAChB,OAAO,CAACf,GAAG,CAACe,GAAA,CAAIC,WAAW,GAAG,IAAID,GAAE,EAAGE,IAAI,GAAGD,WAAW,GAAGE,OAAO,CAAC,OAAO;AAC7E;AAEA,MAAMC,UAAA,GAAcC,IAAA;EAClB,MAAML,GAAA,GAAMD,QAAA,CAASM,IAAA;EAErB;EACA;EACA,IAAIL,GAAA,KAAQ,QAAQ;IAClBjB,WAAA,CAAYuB,OAAO,CACjB,CAACC,IAAA,EAAMC,UAAA,KAAeA,UAAA,KAAe,UAAUzB,WAAA,CAAY0B,MAAM,CAACD,UAAA;EAEtE;EAEAzB,WAAA,CAAY2B,GAAG,CAACV,GAAA,EAAKW,IAAA,CAAKC,GAAG;AAC/B;AAEA,MAAMC,cAAA,GAAkBR,IAAA;EACtB,MAAML,GAAA,GAAMD,QAAA,CAASM,IAAA;EACrB;EACA;EACA,IAAIL,GAAA,KAAQ,QAAQ;IAClBjB,WAAA,CAAY+B,KAAK;EACnB;EACA/B,WAAA,CAAY0B,MAAM,CAACT,GAAA;AACrB;AAEA;;;;;;;AAOA,OAAO,MAAMe,SAAA,GAAYA,CAAAC,OAAA,EAAAC,IAAA;EAAA,MAAAC,CAAA,GAAAxC,EAAA;EAQvB;IAAAyC,UAAA;IAAAC,SAAA;IAAAC;EAAA,IAA4CL,OAAA;EAE5C;IAAAM;EAAA,IAAuB3C,QAAA;EAAA,IAAA4C,EAAA;EAAA,IAAAL,CAAA,QAAAC,UAAA,IAAAD,CAAA,QAAAE,SAAA,IAAAF,CAAA,QAAAD,IAAA,IAAAC,CAAA,QAAAG,QAAA,IAAAH,CAAA,QAAAI,UAAA;IAGrBC,EAAA,GAAAC,KAAA;MACE,MAAAC,CAAA,GAAyBD,KAAA,CAAAE,
|
|
1
|
+
{"version":3,"file":"useHotkey.js","names":["c","_c","useModal","setsAreEqual","useCallback","useEffect","pressedKeys","Map","map","altleft","altright","controlleft","controlright","ctrlleft","ctrlright","escape","metaleft","metaright","osleft","osright","shiftleft","shiftright","stripKey","key","toLowerCase","trim","replace","pushToKeys","code","forEach","time","pressedKey","delete","set","Date","now","removeFromKeys","clear","useHotkey","options","func","$","cmdCtrlKey","editDepth","keyCodes","modalState","t0","event","e","detail","undefined","_temp","hasCmd","window","navigator","userAgent","includes","pressedWithoutModifier","keys","filter","_temp2","Set","has","ctrlKey","maxEditDepth","Object","key_1","isOpen","length","keydown","keyup","_temp3","t1","t2","document","addEventListener","removeEventListener","key_0","e_0"],"sources":["../../src/hooks/useHotkey.ts"],"sourcesContent":["'use client'\n\nimport { useModal } from '@faceless-ui/modal'\nimport { setsAreEqual } from 'payload/shared'\nimport { useCallback, useEffect } from 'react'\n\n// Required to be outside of hook, else debounce would be necessary\n// and then one could not prevent the default behaviour.\n\n// It maps the pressed keys with the time they were pressed, in order to implement a maximum time\n// for the user to press the next key in the sequence\n\n// This is necessary to prevent a bug where the keyup event, which unsets the key as pressed\n// is not fired when the window is not focused.\n// When the user then comes back to the window, the key is still registered as pressed, even though it's not.\nconst pressedKeys = new Map<string, number>([])\n\nconst map = {\n altleft: 'alt',\n altright: 'alt',\n controlleft: 'ctrl',\n controlright: 'ctrl',\n ctrlleft: 'ctrl',\n ctrlright: 'ctrl',\n escape: 'esc',\n metaleft: 'meta',\n metaright: 'meta',\n osleft: 'meta',\n osright: 'meta',\n shiftleft: 'shift',\n shiftright: 'shift',\n}\n\nconst stripKey = (key: string) => {\n return (map[key.toLowerCase()] || key).trim().toLowerCase().replace('key', '')\n}\n\nconst pushToKeys = (code: string) => {\n const key = stripKey(code)\n\n // There is a weird bug with macos that if the keys are not cleared they remain in the\n // pressed keys set.\n if (key === 'meta') {\n pressedKeys.forEach(\n (time, pressedKey) => pressedKey !== 'meta' && pressedKeys.delete(pressedKey),\n )\n }\n\n pressedKeys.set(key, Date.now())\n}\n\nconst removeFromKeys = (code: string) => {\n const key = stripKey(code)\n // There is a weird bug with macos that if the keys are not cleared they remain in the\n // pressed keys set.\n if (key === 'meta') {\n pressedKeys.clear()\n }\n pressedKeys.delete(key)\n}\n\n/**\n * Hook function to work with hotkeys.\n * @param param0.keyCode {string[]} The keys to listen for (`Event.code` without `'Key'` and lowercased)\n * @param param0.cmdCtrlKey {boolean} Whether Ctrl on windows or Cmd on mac must be pressed\n * @param param0.editDepth {boolean} This ensures that the hotkey is only triggered for the most top-level drawer in case there are nested drawers\n * @param func The callback function\n */\nexport const useHotkey = (\n options: {\n cmdCtrlKey: boolean\n editDepth: number\n keyCodes: string[]\n },\n func: (e: KeyboardEvent) => void,\n): void => {\n const { cmdCtrlKey, editDepth, keyCodes } = options\n\n const { modalState } = useModal()\n\n const keydown = useCallback(\n (event: CustomEvent | KeyboardEvent) => {\n const e: KeyboardEvent = event.detail?.key ? event.detail : event\n if (e.key === undefined) {\n // Autofill events, or other synthetic events, can be ignored\n return\n }\n\n // Filter out pressed keys which have been pressed > 3 seconds ago\n pressedKeys.forEach((time, key) => {\n if (Date.now() - time > 3000) {\n pressedKeys.delete(key)\n }\n })\n\n if (e.code) {\n pushToKeys(e.code)\n }\n\n // Check for Mac and iPad\n const hasCmd = window.navigator.userAgent.includes('Mac OS X')\n const pressedWithoutModifier = [...pressedKeys.keys()].filter(\n (key) => !['alt', 'ctrl', 'meta', 'shift'].includes(key),\n )\n\n // Check whether arrays contain the same values (regardless of number of occurrences)\n if (\n setsAreEqual(new Set(pressedWithoutModifier), new Set(keyCodes)) &&\n (!cmdCtrlKey || (hasCmd && pressedKeys.has('meta')) || (!hasCmd && e.ctrlKey))\n ) {\n // get the maximum edit depth by counting the number of open drawers. modalState is and object which contains the state of all drawers.\n const maxEditDepth =\n Object.keys(modalState).filter((key) => modalState[key]?.isOpen)?.length + 1 || 1\n\n if (maxEditDepth !== editDepth) {\n // We only want to execute the hotkey from the most top-level drawer / edit depth.\n return\n }\n // execute the function associated with the maximum edit depth\n func(e)\n }\n },\n [keyCodes, cmdCtrlKey, editDepth, modalState, func],\n )\n\n const keyup = useCallback((e: KeyboardEvent) => {\n if (e.code) {\n removeFromKeys(e.code)\n }\n }, [])\n\n useEffect(() => {\n document.addEventListener('keydown', keydown, false)\n document.addEventListener('bypassKeyDown', keydown, false) // this is called if the keydown event's propagation is stopped by react-select\n document.addEventListener('keyup', keyup, false)\n\n return () => {\n document.removeEventListener('keydown', keydown)\n document.removeEventListener('bypassKeyDown', keydown)\n document.removeEventListener('keyup', keyup)\n }\n }, [keydown, keyup])\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAEA,SAASC,QAAQ,QAAQ;AACzB,SAASC,YAAY,QAAQ;AAC7B,SAASC,WAAW,EAAEC,SAAS,QAAQ;AAEvC;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA,MAAMC,WAAA,GAAc,IAAIC,GAAA,CAAoB,EAAE;AAE9C,MAAMC,GAAA,GAAM;EACVC,OAAA,EAAS;EACTC,QAAA,EAAU;EACVC,WAAA,EAAa;EACbC,YAAA,EAAc;EACdC,QAAA,EAAU;EACVC,SAAA,EAAW;EACXC,MAAA,EAAQ;EACRC,QAAA,EAAU;EACVC,SAAA,EAAW;EACXC,MAAA,EAAQ;EACRC,OAAA,EAAS;EACTC,SAAA,EAAW;EACXC,UAAA,EAAY;AACd;AAEA,MAAMC,QAAA,GAAYC,GAAA;EAChB,OAAO,CAACf,GAAG,CAACe,GAAA,CAAIC,WAAW,GAAG,IAAID,GAAE,EAAGE,IAAI,GAAGD,WAAW,GAAGE,OAAO,CAAC,OAAO;AAC7E;AAEA,MAAMC,UAAA,GAAcC,IAAA;EAClB,MAAML,GAAA,GAAMD,QAAA,CAASM,IAAA;EAErB;EACA;EACA,IAAIL,GAAA,KAAQ,QAAQ;IAClBjB,WAAA,CAAYuB,OAAO,CACjB,CAACC,IAAA,EAAMC,UAAA,KAAeA,UAAA,KAAe,UAAUzB,WAAA,CAAY0B,MAAM,CAACD,UAAA;EAEtE;EAEAzB,WAAA,CAAY2B,GAAG,CAACV,GAAA,EAAKW,IAAA,CAAKC,GAAG;AAC/B;AAEA,MAAMC,cAAA,GAAkBR,IAAA;EACtB,MAAML,GAAA,GAAMD,QAAA,CAASM,IAAA;EACrB;EACA;EACA,IAAIL,GAAA,KAAQ,QAAQ;IAClBjB,WAAA,CAAY+B,KAAK;EACnB;EACA/B,WAAA,CAAY0B,MAAM,CAACT,GAAA;AACrB;AAEA;;;;;;;AAOA,OAAO,MAAMe,SAAA,GAAYA,CAAAC,OAAA,EAAAC,IAAA;EAAA,MAAAC,CAAA,GAAAxC,EAAA;EAQvB;IAAAyC,UAAA;IAAAC,SAAA;IAAAC;EAAA,IAA4CL,OAAA;EAE5C;IAAAM;EAAA,IAAuB3C,QAAA;EAAA,IAAA4C,EAAA;EAAA,IAAAL,CAAA,QAAAC,UAAA,IAAAD,CAAA,QAAAE,SAAA,IAAAF,CAAA,QAAAD,IAAA,IAAAC,CAAA,QAAAG,QAAA,IAAAH,CAAA,QAAAI,UAAA;IAGrBC,EAAA,GAAAC,KAAA;MACE,MAAAC,CAAA,GAAyBD,KAAA,CAAAE,MAAc,EAAA1B,GAAqB,GAAfwB,KAAA,CAAAE,MAAe,GAAnCF,KAAmC;MAC5D,IAAIC,CAAA,CAAAzB,GAAK,KAAK2B,SAAA;QAAA;MAAA;MAMd5C,WAAA,CAAAuB,OAAmB,CAACsB,KAIpB;MAEA,IAAIH,CAAA,CAAApB,IAAM;QACRD,UAAA,CAAWqB,CAAA,CAAApB,IAAM;MAAA;MAInB,MAAAwB,MAAA,GAAeC,MAAA,CAAAC,SAAgB,CAAAC,SAAU,CAAAC,QAAS,CAAC;MACnD,MAAAC,sBAAA,GAA+B,IAAInD,WAAA,CAAAoD,IAAgB,GAAG,CAAAC,MAAO,CAC3DC,MAAoD;MAItD,IACEzD,YAAA,CAAa,IAAI0D,GAAA,CAAIJ,sBAAA,GAAyB,IAAII,GAAA,CAAIjB,QAAA,CACsB,MAA3E,CAACF,UAAyC,IAA1BU,MAA0B,IAAhB9C,WAAA,CAAAwD,GAAe,CAAC,OAAiC,IAApB,CAACV,MAAmB,IAATJ,CAAA,CAAAe,OAAS;QAG5E,MAAAC,YAAA,GACEC,MAAA,CAAAP,IAAW,CAACb,UAAA,EAAAc,MAAkB,CAACO,KAAA,IAASrB,UAAU,CAACtB,KAAA,CAAM,EAAA4C,MAAS,GAAAC,MAAA,GAAS,CAAK,IAAhF,CAAgF;QAElF,IAAIJ,YAAA,KAAiBrB,SAAA;UAAA;QAAA;QAKrBH,IAAA,CAAKQ,CAAA;MAAA;IACP,CACF;IAAAP,CAAA,MAAAC,UAAA;IAAAD,CAAA,MAAAE,SAAA;IAAAF,CAAA,MAAAD,IAAA;IAAAC,CAAA,MAAAG,QAAA;IAAAH,CAAA,MAAAI,UAAA;IAAAJ,CAAA,MAAAK,EAAA;EAAA;IAAAA,EAAA,GAAAL,CAAA;EAAA;EAzCF,MAAA4B,OAAA,GAAgBvB,EA0CqC;EAGrD,MAAAwB,KAAA,GAAcC,MAIT;EAAA,IAAAC,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAhC,CAAA,QAAA4B,OAAA;IAEKG,EAAA,GAAAA,CAAA;MACRE,QAAA,CAAAC,gBAAyB,CAAC,WAAWN,OAAA,EAAS;MAC9CK,QAAA,CAAAC,gBAAyB,CAAC,iBAAiBN,OAAA,EAAS;MACpDK,QAAA,CAAAC,gBAAyB,CAAC,SAASL,KAAA,EAAO;MAAA,OAEnC;QACLI,QAAA,CAAAE,mBAA4B,CAAC,WAAWP,OAAA;QACxCK,QAAA,CAAAE,mBAA4B,CAAC,iBAAiBP,OAAA;QAC9CK,QAAA,CAAAE,mBAA4B,CAAC,SAASN,KAAA;MAAA,CACxC;IAAA,CACF;IAAGG,EAAA,IAACJ,OAAA,EAASC,KAAA,CAAM;IAAA7B,CAAA,MAAA4B,OAAA;IAAA5B,CAAA,MAAA+B,EAAA;IAAA/B,CAAA,MAAAgC,EAAA;EAAA;IAAAD,EAAA,GAAA/B,CAAA;IAAAgC,EAAA,GAAAhC,CAAA;EAAA;EAVnBpC,SAAA,CAAUmE,EAUV,EAAGC,EAAgB;AAAA,CACrB;AA1EyB,SAAAtB,MAAArB,IAAA,EAAAP,GAAA;EAsBjB,IAAIW,IAAA,CAAAC,GAAQ,KAAKL,IAAA,GAAO;IACtBxB,WAAA,CAAA0B,MAAkB,CAACT,GAAA;EAAA;AACrB;AAxBiB,SAAAqC,OAAAiB,KAAA;EAAA,OAkCR,CAAC,CAAC,OAAO,QAAQ,QAAQ,QAAQ,CAAArB,QAAS,CAACjC,KAAA;AAAA;AAlCnC,SAAAgD,OAAAO,GAAA;EA0DrB,IAAI9B,GAAA,CAAApB,IAAM;IACRQ,cAAA,CAAeY,GAAA,CAAApB,IAAM;EAAA;AACvB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useIntersect.js","names":["c","_c","useEffect","useRef","useState","useIntersect","t0","disable","$","root","t1","rootMargin","t2","threshold","t3","undefined","entry","updateEntry","node","setNode","observer","window","IntersectionObserver","t4","ent","t5","t6","current","currentObserver","disconnect","observe","t7"],"sources":["../../src/hooks/useIntersect.ts"],"sourcesContent":["'use client'\n\nimport type React from 'react'\n\nimport { useEffect, useRef, useState } from 'react'\n\ntype Intersect = [\n setNode: React.Dispatch<HTMLElement>,\n entry: IntersectionObserverEntry,\n node: HTMLElement,\n]\n\nexport const useIntersect = (\n { root = null, rootMargin = '0px', threshold = 0 } = {},\n disable?: boolean,\n): Intersect => {\n const [entry, updateEntry] = useState<IntersectionObserverEntry>()\n const [node, setNode] = useState(null)\n\n const observer = useRef(\n typeof window !== 'undefined' && 'IntersectionObserver' in window && !disable\n ? new window.IntersectionObserver(([ent]) => updateEntry(ent), {\n root,\n rootMargin,\n threshold,\n })\n : null,\n )\n\n useEffect(() => {\n if (disable) {\n return\n }\n const { current: currentObserver } = observer\n currentObserver.disconnect()\n\n if (node) {\n currentObserver.observe(node)\n }\n\n return () => currentObserver.disconnect()\n }, [node, disable])\n\n return [setNode, entry, node]\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAIA,SAASC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAQ5C,OAAO,MAAMC,YAAA,GAAeA,CAAAC,EAAA,EAAAC,OAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EAC1B;IAAAQ,IAAA,EAAAC,EAAA;IAAAC,UAAA,EAAAC,EAAA;IAAAC,SAAA,EAAAC;EAAA,IAAAR,EAAuD,
|
|
1
|
+
{"version":3,"file":"useIntersect.js","names":["c","_c","useEffect","useRef","useState","useIntersect","t0","disable","$","root","t1","rootMargin","t2","threshold","t3","undefined","entry","updateEntry","node","setNode","observer","window","IntersectionObserver","t4","ent","t5","t6","current","currentObserver","disconnect","observe","t7"],"sources":["../../src/hooks/useIntersect.ts"],"sourcesContent":["'use client'\n\nimport type React from 'react'\n\nimport { useEffect, useRef, useState } from 'react'\n\ntype Intersect = [\n setNode: React.Dispatch<HTMLElement>,\n entry: IntersectionObserverEntry,\n node: HTMLElement,\n]\n\nexport const useIntersect = (\n { root = null, rootMargin = '0px', threshold = 0 } = {},\n disable?: boolean,\n): Intersect => {\n const [entry, updateEntry] = useState<IntersectionObserverEntry>()\n const [node, setNode] = useState(null)\n\n const observer = useRef(\n typeof window !== 'undefined' && 'IntersectionObserver' in window && !disable\n ? new window.IntersectionObserver(([ent]) => updateEntry(ent), {\n root,\n rootMargin,\n threshold,\n })\n : null,\n )\n\n useEffect(() => {\n if (disable) {\n return\n }\n const { current: currentObserver } = observer\n currentObserver.disconnect()\n\n if (node) {\n currentObserver.observe(node)\n }\n\n return () => currentObserver.disconnect()\n }, [node, disable])\n\n return [setNode, entry, node]\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAIA,SAASC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAQ5C,OAAO,MAAMC,YAAA,GAAeA,CAAAC,EAAA,EAAAC,OAAA;EAAA,MAAAC,CAAA,GAAAP,EAAA;EAC1B;IAAAQ,IAAA,EAAAC,EAAA;IAAAC,UAAA,EAAAC,EAAA;IAAAC,SAAA,EAAAC;EAAA,IAAAR,EAAuD,KAAvDS,SAAuD,GAAvD,CAAsD,CAAC,GAAvDT,EAAuD;EAArD,MAAAG,IAAA,GAAAC,EAAW,KAAXK,SAAW,GAAX,IAAW,GAAXL,EAAW;EAAE,MAAAC,UAAA,GAAAC,EAAkB,KAAlBG,SAAkB,GAAlB,KAAkB,GAAlBH,EAAkB;EAAE,MAAAC,SAAA,GAAAC,EAAa,KAAbC,SAAa,GAAb,CAAa,GAAbD,EAAa;EAGhD,OAAAE,KAAA,EAAAC,WAAA,IAA6Bb,QAAA;EAC7B,OAAAc,IAAA,EAAAC,OAAA,IAAwBf,QAAA,CAAS;EAEjC,MAAAgB,QAAA,GAAiBjB,MAAA,CACf,OAAOkB,MAAA,KAAW,WAAyC,IAA1B,0BAA0BA,MAAW,IAAtE,CAAsEd,OAMlE,GANJ,IACQc,MAAA,CAAAC,oBAA2B,CAACC,EAAA;IAAC,OAAAC,GAAA,IAAAD,EAAK;IAAA,OAAKN,WAAA,CAAYO,GAAA;EAAA,GAAM;IAAAf,IAAA;IAAAE,UAAA;IAAAE;EAI7D,CACA,IANJ,IAMI;EAAA,IAAAY,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAlB,CAAA,QAAAD,OAAA,IAAAC,CAAA,QAAAU,IAAA;IAGIO,EAAA,GAAAA,CAAA;MACR,IAAIlB,OAAA;QAAA;MAAA;MAGJ;QAAAoB,OAAA,EAAAC;MAAA,IAAqCR,QAAA;MACrCQ,eAAA,CAAAC,UAA0B;MAE1B,IAAIX,IAAA;QACFU,eAAA,CAAAE,OAAuB,CAACZ,IAAA;MAAA;MAC1B,OAEO,MAAMU,eAAA,CAAAC,UAA0B;IAAA,CACzC;IAAGH,EAAA,IAACR,IAAA,EAAMX,OAAA,CAAQ;IAAAC,CAAA,MAAAD,OAAA;IAAAC,CAAA,MAAAU,IAAA;IAAAV,CAAA,MAAAiB,EAAA;IAAAjB,CAAA,MAAAkB,EAAA;EAAA;IAAAD,EAAA,GAAAjB,CAAA;IAAAkB,EAAA,GAAAlB,CAAA;EAAA;EAZlBN,SAAA,CAAUuB,EAYV,EAAGC,EAAe;EAAA,IAAAK,EAAA;EAAA,IAAAvB,CAAA,QAAAQ,KAAA,IAAAR,CAAA,QAAAU,IAAA,IAAAV,CAAA,QAAAW,OAAA;IAEXY,EAAA,IAACZ,OAAA,EAASH,KAAA,EAAOE,IAAA,CAAK;IAAAV,CAAA,MAAAQ,KAAA;IAAAR,CAAA,MAAAU,IAAA;IAAAV,CAAA,MAAAW,OAAA;IAAAX,CAAA,MAAAuB,EAAA;EAAA;IAAAA,EAAA,GAAAvB,CAAA;EAAA;EAAA,OAAtBuB,EAAsB;AAAA,CAC/B","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePayloadAPI.js","names":["c","_c","qs","useEffect","useRef","useState","useBranchParam","useLocale","useTranslation","requests","usePayloadAPI","url","t0","$","t1","undefined","options","initialData","initialParams","t2","t3","i18n","t4","data","setData","params","setParams","isLoading","setIsLoading","isError","setIsError","currentLocale","locale","code","branch","hasInitialized","t5","stringify","addQueryPrefix","search","t6","language","current","abortController","AbortController","fetchData","response","get","headers","signal","status","json","t7","aborted","abort","t8","_err","t9","t10","t11","Symbol","for","t12"],"sources":["../../src/hooks/usePayloadAPI.ts"],"sourcesContent":["'use client'\nimport type React from 'react'\n\nimport * as qs from 'qs-esm'\nimport { useEffect, useRef, useState } from 'react'\n\nimport { useBranchParam } from '../providers/Branch/index.js'\nimport { useLocale } from '../providers/Locale/index.js'\nimport { useTranslation } from '../providers/Translation/index.js'\nimport { requests } from '../utilities/api.js'\n\ntype Result = [\n {\n data: any\n isError: boolean\n isLoading: boolean\n },\n {\n setParams: React.Dispatch<unknown>\n },\n]\n\ntype Options = {\n initialData?: any\n initialParams?: unknown\n}\n\ntype UsePayloadAPI = (url: string, options?: Options) => Result\n\nexport const usePayloadAPI: UsePayloadAPI = (url, options = {}) => {\n const { initialData, initialParams = {} } = options\n\n const { i18n } = useTranslation()\n const [data, setData] = useState(initialData || {})\n const [params, setParams] = useState(initialParams)\n const [isLoading, setIsLoading] = useState(!initialData)\n const [isError, setIsError] = useState(false)\n const currentLocale = useLocale()\n const locale = currentLocale?.code\n const branch = useBranchParam()\n const hasInitialized = useRef(false)\n\n const search = qs.stringify(\n {\n branch,\n locale,\n ...(typeof params === 'object' ? params : {}),\n },\n {\n addQueryPrefix: true,\n },\n )\n\n // If `initialData`, no need to make a request\n useEffect(() => {\n if (initialData && !hasInitialized.current) {\n hasInitialized.current = true\n return\n }\n\n const abortController = new AbortController()\n\n const fetchData = async () => {\n setIsError(false)\n setIsLoading(true)\n\n try {\n const response = await requests.get(`${url}${search}`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n signal: abortController.signal,\n })\n\n if (response.status > 201) {\n setIsError(true)\n }\n\n const json = await response.json()\n\n setData(json)\n setIsLoading(false)\n } catch (error) {\n if (!abortController.signal.aborted) {\n setIsError(true)\n setIsLoading(false)\n }\n }\n }\n\n if (url) {\n void fetchData()\n } else {\n setIsError(false)\n setIsLoading(false)\n }\n\n return () => {\n try {\n abortController.abort()\n } catch (_err) {\n // swallow error\n }\n }\n }, [url, locale, search, i18n.language, initialData])\n\n // If `initialData` changes, reset the state\n useEffect(() => {\n if (initialData && hasInitialized.current) {\n setData(initialData)\n }\n }, [initialData])\n\n return [{ data, isError, isLoading }, { setParams }]\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAGA,YAAYC,EAAA,MAAQ;AACpB,SAASC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAE5C,SAASC,cAAc,QAAQ;AAC/B,SAASC,SAAS,QAAQ;AAC1B,SAASC,cAAc,QAAQ;AAC/B,SAASC,QAAQ,QAAQ;AAoBzB,OAAO,MAAMC,aAAA,GAA+BA,CAAAC,GAAA,EAAAC,EAAA;EAAA,MAAAC,CAAA,GAAAZ,EAAA;EAAA,IAAAa,EAAA;EAAA,IAAAD,CAAA,QAAAD,EAAA;IAAME,EAAA,GAAAF,EAAY,
|
|
1
|
+
{"version":3,"file":"usePayloadAPI.js","names":["c","_c","qs","useEffect","useRef","useState","useBranchParam","useLocale","useTranslation","requests","usePayloadAPI","url","t0","$","t1","undefined","options","initialData","initialParams","t2","t3","i18n","t4","data","setData","params","setParams","isLoading","setIsLoading","isError","setIsError","currentLocale","locale","code","branch","hasInitialized","t5","stringify","addQueryPrefix","search","t6","language","current","abortController","AbortController","fetchData","response","get","headers","signal","status","json","t7","aborted","abort","t8","_err","t9","t10","t11","Symbol","for","t12"],"sources":["../../src/hooks/usePayloadAPI.ts"],"sourcesContent":["'use client'\nimport type React from 'react'\n\nimport * as qs from 'qs-esm'\nimport { useEffect, useRef, useState } from 'react'\n\nimport { useBranchParam } from '../providers/Branch/index.js'\nimport { useLocale } from '../providers/Locale/index.js'\nimport { useTranslation } from '../providers/Translation/index.js'\nimport { requests } from '../utilities/api.js'\n\ntype Result = [\n {\n data: any\n isError: boolean\n isLoading: boolean\n },\n {\n setParams: React.Dispatch<unknown>\n },\n]\n\ntype Options = {\n initialData?: any\n initialParams?: unknown\n}\n\ntype UsePayloadAPI = (url: string, options?: Options) => Result\n\nexport const usePayloadAPI: UsePayloadAPI = (url, options = {}) => {\n const { initialData, initialParams = {} } = options\n\n const { i18n } = useTranslation()\n const [data, setData] = useState(initialData || {})\n const [params, setParams] = useState(initialParams)\n const [isLoading, setIsLoading] = useState(!initialData)\n const [isError, setIsError] = useState(false)\n const currentLocale = useLocale()\n const locale = currentLocale?.code\n const branch = useBranchParam()\n const hasInitialized = useRef(false)\n\n const search = qs.stringify(\n {\n branch,\n locale,\n ...(typeof params === 'object' ? params : {}),\n },\n {\n addQueryPrefix: true,\n },\n )\n\n // If `initialData`, no need to make a request\n useEffect(() => {\n if (initialData && !hasInitialized.current) {\n hasInitialized.current = true\n return\n }\n\n const abortController = new AbortController()\n\n const fetchData = async () => {\n setIsError(false)\n setIsLoading(true)\n\n try {\n const response = await requests.get(`${url}${search}`, {\n headers: {\n 'Accept-Language': i18n.language,\n },\n signal: abortController.signal,\n })\n\n if (response.status > 201) {\n setIsError(true)\n }\n\n const json = await response.json()\n\n setData(json)\n setIsLoading(false)\n } catch (error) {\n if (!abortController.signal.aborted) {\n setIsError(true)\n setIsLoading(false)\n }\n }\n }\n\n if (url) {\n void fetchData()\n } else {\n setIsError(false)\n setIsLoading(false)\n }\n\n return () => {\n try {\n abortController.abort()\n } catch (_err) {\n // swallow error\n }\n }\n }, [url, locale, search, i18n.language, initialData])\n\n // If `initialData` changes, reset the state\n useEffect(() => {\n if (initialData && hasInitialized.current) {\n setData(initialData)\n }\n }, [initialData])\n\n return [{ data, isError, isLoading }, { setParams }]\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { RefObject } from 'react';
|
|
2
|
+
export type PointerPosition = {
|
|
3
|
+
x: number;
|
|
4
|
+
y: number;
|
|
5
|
+
};
|
|
6
|
+
type UsePointerSafeAreaArgs = {
|
|
7
|
+
enabled: boolean;
|
|
8
|
+
from: RefObject<HTMLElement | null>;
|
|
9
|
+
idleTimeout?: number;
|
|
10
|
+
onChange: (args: {
|
|
11
|
+
polygon: null | string;
|
|
12
|
+
}) => void;
|
|
13
|
+
onRelease: (pointer: PointerPosition) => void;
|
|
14
|
+
to: RefObject<HTMLElement | null>;
|
|
15
|
+
};
|
|
16
|
+
/** Tracks a safe area for pointer travel between two elements in either direction. */
|
|
17
|
+
export declare const usePointerSafeArea: ({ enabled, from, idleTimeout, onChange, onRelease, to, }: UsePointerSafeAreaArgs) => {
|
|
18
|
+
clear: () => void;
|
|
19
|
+
isProtected: () => boolean;
|
|
20
|
+
isTracking: () => boolean;
|
|
21
|
+
protect: ({ pointer }: {
|
|
22
|
+
pointer: PointerPosition;
|
|
23
|
+
}) => boolean;
|
|
24
|
+
refresh: () => boolean;
|
|
25
|
+
trackSource: (pointer: PointerPosition) => void;
|
|
26
|
+
trackTarget: (pointer: PointerPosition) => void;
|
|
27
|
+
};
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=usePointerSafeArea.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePointerSafeArea.d.ts","sourceRoot":"","sources":["../../src/hooks/usePointerSafeArea.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAItC,MAAM,MAAM,eAAe,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEtD,KAAK,sBAAsB,GAAG;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;IACnC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,IAAI,GAAG,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IACpD,SAAS,EAAE,CAAC,OAAO,EAAE,eAAe,KAAK,IAAI,CAAA;IAC7C,EAAE,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;CAClC,CAAA;AAED,sFAAsF;AACtF,eAAO,MAAM,kBAAkB,6DAO5B,sBAAsB;;;;2BAuIE;QAAE,OAAO,EAAE,eAAe,CAAA;KAAE;;2BAzEzC,eAAe;2BASf,eAAe;CAqE5B,CAAA"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef } from 'react';
|
|
2
|
+
/** Tracks a safe area for pointer travel between two elements in either direction. */
|
|
3
|
+
export const usePointerSafeArea = ({
|
|
4
|
+
enabled,
|
|
5
|
+
from,
|
|
6
|
+
idleTimeout = 300,
|
|
7
|
+
onChange,
|
|
8
|
+
onRelease,
|
|
9
|
+
to
|
|
10
|
+
}) => {
|
|
11
|
+
const origin = useRef(undefined);
|
|
12
|
+
const isReturning = useRef(false);
|
|
13
|
+
const isProtected = useRef(false);
|
|
14
|
+
const idleTimer = useRef(undefined);
|
|
15
|
+
const callbacks = useRef({
|
|
16
|
+
onChange,
|
|
17
|
+
onRelease
|
|
18
|
+
});
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
callbacks.current = {
|
|
21
|
+
onChange,
|
|
22
|
+
onRelease
|
|
23
|
+
};
|
|
24
|
+
}, [onChange, onRelease]);
|
|
25
|
+
const clear = useCallback(() => {
|
|
26
|
+
clearTimeout(idleTimer.current);
|
|
27
|
+
idleTimer.current = undefined;
|
|
28
|
+
if (isProtected.current) {
|
|
29
|
+
isProtected.current = false;
|
|
30
|
+
callbacks.current.onChange({
|
|
31
|
+
polygon: null
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
origin.current = undefined;
|
|
35
|
+
}, []);
|
|
36
|
+
const release = useCallback(pointer => {
|
|
37
|
+
clear();
|
|
38
|
+
callbacks.current.onRelease(pointer);
|
|
39
|
+
}, [clear]);
|
|
40
|
+
const update = useCallback(({
|
|
41
|
+
pointer
|
|
42
|
+
} = {}) => {
|
|
43
|
+
const target = isReturning.current ? from.current : to.current;
|
|
44
|
+
const start = origin.current;
|
|
45
|
+
if (!enabled || !target || !start || !pointer && !isProtected.current) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
const rect = target.getBoundingClientRect();
|
|
49
|
+
if (rect.left <= start.x && rect.right >= start.x) {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
const points = getSafeAreaPoints({
|
|
53
|
+
rect,
|
|
54
|
+
start
|
|
55
|
+
});
|
|
56
|
+
if (pointer && !isInsideSafeArea({
|
|
57
|
+
pointer,
|
|
58
|
+
points
|
|
59
|
+
})) {
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
isProtected.current = true;
|
|
63
|
+
callbacks.current.onChange({
|
|
64
|
+
polygon: `polygon(${points.map(({
|
|
65
|
+
x,
|
|
66
|
+
y
|
|
67
|
+
}) => `${x}px ${y}px`).join(', ')})`
|
|
68
|
+
});
|
|
69
|
+
if (pointer) {
|
|
70
|
+
clearTimeout(idleTimer.current);
|
|
71
|
+
idleTimer.current = setTimeout(() => release(pointer), idleTimeout);
|
|
72
|
+
}
|
|
73
|
+
return true;
|
|
74
|
+
}, [enabled, from, idleTimeout, release, to]);
|
|
75
|
+
const trackSource = useCallback(pointer => {
|
|
76
|
+
clear();
|
|
77
|
+
origin.current = pointer;
|
|
78
|
+
isReturning.current = false;
|
|
79
|
+
}, [clear]);
|
|
80
|
+
const trackTarget = useCallback(pointer => {
|
|
81
|
+
// A keyboard-opened target does not start pointer tracking on its own.
|
|
82
|
+
if (!origin.current) {
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
clear();
|
|
86
|
+
origin.current = pointer;
|
|
87
|
+
isReturning.current = true;
|
|
88
|
+
}, [clear]);
|
|
89
|
+
useEffect(() => {
|
|
90
|
+
if (!enabled) {
|
|
91
|
+
clear();
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const handleMove = event => {
|
|
95
|
+
if (event.pointerType !== 'mouse' || !origin.current) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const pointer = {
|
|
99
|
+
x: event.clientX,
|
|
100
|
+
y: event.clientY
|
|
101
|
+
};
|
|
102
|
+
const target = event.target;
|
|
103
|
+
if (target && from.current?.contains(target)) {
|
|
104
|
+
trackSource(pointer);
|
|
105
|
+
} else if (target && to.current?.contains(target)) {
|
|
106
|
+
trackTarget(pointer);
|
|
107
|
+
} else if (isProtected.current && !update({
|
|
108
|
+
pointer
|
|
109
|
+
})) {
|
|
110
|
+
release(pointer);
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
const handlePress = event => {
|
|
114
|
+
if (event.pointerType === 'mouse') {
|
|
115
|
+
// Preserve tracking after clicks that keep either endpoint open, while
|
|
116
|
+
// letting clicks elsewhere reach their target without sending a replacement event.
|
|
117
|
+
const pointer = {
|
|
118
|
+
x: event.clientX,
|
|
119
|
+
y: event.clientY
|
|
120
|
+
};
|
|
121
|
+
const target = event.target;
|
|
122
|
+
if (target && from.current?.contains(target)) {
|
|
123
|
+
trackSource(pointer);
|
|
124
|
+
} else if (target && to.current?.contains(target)) {
|
|
125
|
+
trackTarget(pointer);
|
|
126
|
+
} else {
|
|
127
|
+
clear();
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
};
|
|
131
|
+
const document = from.current?.ownerDocument;
|
|
132
|
+
document?.addEventListener('pointermove', handleMove, {
|
|
133
|
+
capture: true,
|
|
134
|
+
passive: true
|
|
135
|
+
});
|
|
136
|
+
document?.addEventListener('pointerdown', handlePress, {
|
|
137
|
+
capture: true,
|
|
138
|
+
passive: true
|
|
139
|
+
});
|
|
140
|
+
return () => {
|
|
141
|
+
document?.removeEventListener('pointermove', handleMove, {
|
|
142
|
+
capture: true
|
|
143
|
+
});
|
|
144
|
+
document?.removeEventListener('pointerdown', handlePress, {
|
|
145
|
+
capture: true
|
|
146
|
+
});
|
|
147
|
+
clear();
|
|
148
|
+
};
|
|
149
|
+
}, [clear, enabled, from, release, to, trackSource, trackTarget, update]);
|
|
150
|
+
return {
|
|
151
|
+
clear,
|
|
152
|
+
isProtected: useCallback(() => isProtected.current, []),
|
|
153
|
+
isTracking: useCallback(() => origin.current !== undefined, []),
|
|
154
|
+
protect: ({
|
|
155
|
+
pointer
|
|
156
|
+
}) => update({
|
|
157
|
+
pointer
|
|
158
|
+
}),
|
|
159
|
+
refresh: () => update(),
|
|
160
|
+
trackSource,
|
|
161
|
+
trackTarget
|
|
162
|
+
};
|
|
163
|
+
};
|
|
164
|
+
const isInsideSafeArea = ({
|
|
165
|
+
pointer,
|
|
166
|
+
points
|
|
167
|
+
}) => points.every((edgeStart, index) => isPointerInsideEdge({
|
|
168
|
+
edgeEnd: points[(index + 1) % points.length],
|
|
169
|
+
edgeStart,
|
|
170
|
+
pointer
|
|
171
|
+
}));
|
|
172
|
+
// The convex hull covers the whole destination, allowing return paths to enter
|
|
173
|
+
// through its top or bottom as well as its nearest edge.
|
|
174
|
+
const getSafeAreaPoints = ({
|
|
175
|
+
rect,
|
|
176
|
+
start
|
|
177
|
+
}) => {
|
|
178
|
+
const points = [{
|
|
179
|
+
x: start.x,
|
|
180
|
+
y: start.y - 4
|
|
181
|
+
}, {
|
|
182
|
+
x: start.x,
|
|
183
|
+
y: start.y + 4
|
|
184
|
+
}, {
|
|
185
|
+
x: rect.left,
|
|
186
|
+
y: rect.top
|
|
187
|
+
}, {
|
|
188
|
+
x: rect.right,
|
|
189
|
+
y: rect.top
|
|
190
|
+
}, {
|
|
191
|
+
x: rect.right,
|
|
192
|
+
y: rect.bottom
|
|
193
|
+
}, {
|
|
194
|
+
x: rect.left,
|
|
195
|
+
y: rect.bottom
|
|
196
|
+
}].sort((a, b) => a.x - b.x || a.y - b.y);
|
|
197
|
+
const getOuterEdge = ({
|
|
198
|
+
orderedPoints
|
|
199
|
+
}) => {
|
|
200
|
+
const edge = [];
|
|
201
|
+
for (const point of orderedPoints) {
|
|
202
|
+
while (edge.length > 1) {
|
|
203
|
+
const previous = edge[edge.length - 2];
|
|
204
|
+
const corner = edge[edge.length - 1];
|
|
205
|
+
const edgeX = corner.x - previous.x;
|
|
206
|
+
const edgeY = corner.y - previous.y;
|
|
207
|
+
const pointX = point.x - previous.x;
|
|
208
|
+
const pointY = point.y - previous.y;
|
|
209
|
+
const shouldRemoveCorner = edgeX * pointY - edgeY * pointX <= 0;
|
|
210
|
+
// Remove corners that bend into the area or lie on a straight edge.
|
|
211
|
+
if (!shouldRemoveCorner) {
|
|
212
|
+
break;
|
|
213
|
+
}
|
|
214
|
+
edge.pop();
|
|
215
|
+
}
|
|
216
|
+
edge.push(point);
|
|
217
|
+
}
|
|
218
|
+
return edge.slice(0, -1);
|
|
219
|
+
};
|
|
220
|
+
return [...getOuterEdge({
|
|
221
|
+
orderedPoints: points
|
|
222
|
+
}), ...getOuterEdge({
|
|
223
|
+
orderedPoints: [...points].reverse()
|
|
224
|
+
})];
|
|
225
|
+
};
|
|
226
|
+
// Edges follow the safe area's point order. Points on the boundary count as inside.
|
|
227
|
+
const isPointerInsideEdge = ({
|
|
228
|
+
edgeEnd,
|
|
229
|
+
edgeStart,
|
|
230
|
+
pointer
|
|
231
|
+
}) => (edgeEnd.x - edgeStart.x) * (pointer.y - edgeStart.y) - (edgeEnd.y - edgeStart.y) * (pointer.x - edgeStart.x) >= 0;
|
|
232
|
+
//# sourceMappingURL=usePointerSafeArea.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePointerSafeArea.js","names":["useCallback","useEffect","useRef","usePointerSafeArea","enabled","from","idleTimeout","onChange","onRelease","to","origin","undefined","isReturning","isProtected","idleTimer","callbacks","current","clear","clearTimeout","polygon","release","pointer","update","target","start","rect","getBoundingClientRect","left","x","right","points","getSafeAreaPoints","isInsideSafeArea","map","y","join","setTimeout","trackSource","trackTarget","handleMove","event","pointerType","clientX","clientY","contains","handlePress","document","ownerDocument","addEventListener","capture","passive","removeEventListener","isTracking","protect","refresh","every","edgeStart","index","isPointerInsideEdge","edgeEnd","length","top","bottom","sort","a","b","getOuterEdge","orderedPoints","edge","point","previous","corner","edgeX","edgeY","pointX","pointY","shouldRemoveCorner","pop","push","slice","reverse"],"sources":["../../src/hooks/usePointerSafeArea.ts"],"sourcesContent":["import type { RefObject } from 'react'\n\nimport { useCallback, useEffect, useRef } from 'react'\n\nexport type PointerPosition = { x: number; y: number }\n\ntype UsePointerSafeAreaArgs = {\n enabled: boolean\n from: RefObject<HTMLElement | null>\n idleTimeout?: number\n onChange: (args: { polygon: null | string }) => void\n onRelease: (pointer: PointerPosition) => void\n to: RefObject<HTMLElement | null>\n}\n\n/** Tracks a safe area for pointer travel between two elements in either direction. */\nexport const usePointerSafeArea = ({\n enabled,\n from,\n idleTimeout = 300,\n onChange,\n onRelease,\n to,\n}: UsePointerSafeAreaArgs) => {\n const origin = useRef<PointerPosition | undefined>(undefined)\n const isReturning = useRef(false)\n const isProtected = useRef(false)\n const idleTimer = useRef<ReturnType<typeof setTimeout> | undefined>(undefined)\n const callbacks = useRef({ onChange, onRelease })\n\n useEffect(() => {\n callbacks.current = { onChange, onRelease }\n }, [onChange, onRelease])\n\n const clear = useCallback(() => {\n clearTimeout(idleTimer.current)\n idleTimer.current = undefined\n if (isProtected.current) {\n isProtected.current = false\n callbacks.current.onChange({ polygon: null })\n }\n origin.current = undefined\n }, [])\n\n const release = useCallback(\n (pointer: PointerPosition) => {\n clear()\n callbacks.current.onRelease(pointer)\n },\n [clear],\n )\n\n const update = useCallback(\n ({ pointer }: { pointer?: PointerPosition } = {}) => {\n const target = isReturning.current ? from.current : to.current\n const start = origin.current\n\n if (!enabled || !target || !start || (!pointer && !isProtected.current)) {\n return false\n }\n\n const rect = target.getBoundingClientRect()\n if (rect.left <= start.x && rect.right >= start.x) {\n return false\n }\n const points = getSafeAreaPoints({ rect, start })\n\n if (pointer && !isInsideSafeArea({ pointer, points })) {\n return false\n }\n\n isProtected.current = true\n callbacks.current.onChange({\n polygon: `polygon(${points.map(({ x, y }) => `${x}px ${y}px`).join(', ')})`,\n })\n if (pointer) {\n clearTimeout(idleTimer.current)\n idleTimer.current = setTimeout(() => release(pointer), idleTimeout)\n }\n return true\n },\n [enabled, from, idleTimeout, release, to],\n )\n\n const trackSource = useCallback(\n (pointer: PointerPosition) => {\n clear()\n origin.current = pointer\n isReturning.current = false\n },\n [clear],\n )\n\n const trackTarget = useCallback(\n (pointer: PointerPosition) => {\n // A keyboard-opened target does not start pointer tracking on its own.\n if (!origin.current) {\n return\n }\n clear()\n origin.current = pointer\n isReturning.current = true\n },\n [clear],\n )\n\n useEffect(() => {\n if (!enabled) {\n clear()\n return\n }\n\n const handleMove = (event: PointerEvent) => {\n if (event.pointerType !== 'mouse' || !origin.current) {\n return\n }\n const pointer = { x: event.clientX, y: event.clientY }\n const target = event.target as Node | null\n\n if (target && from.current?.contains(target)) {\n trackSource(pointer)\n } else if (target && to.current?.contains(target)) {\n trackTarget(pointer)\n } else if (isProtected.current && !update({ pointer })) {\n release(pointer)\n }\n }\n const handlePress = (event: PointerEvent) => {\n if (event.pointerType === 'mouse') {\n // Preserve tracking after clicks that keep either endpoint open, while\n // letting clicks elsewhere reach their target without sending a replacement event.\n const pointer = { x: event.clientX, y: event.clientY }\n const target = event.target as Node | null\n\n if (target && from.current?.contains(target)) {\n trackSource(pointer)\n } else if (target && to.current?.contains(target)) {\n trackTarget(pointer)\n } else {\n clear()\n }\n }\n }\n const document = from.current?.ownerDocument\n\n document?.addEventListener('pointermove', handleMove, { capture: true, passive: true })\n document?.addEventListener('pointerdown', handlePress, { capture: true, passive: true })\n return () => {\n document?.removeEventListener('pointermove', handleMove, { capture: true })\n document?.removeEventListener('pointerdown', handlePress, { capture: true })\n clear()\n }\n }, [clear, enabled, from, release, to, trackSource, trackTarget, update])\n\n return {\n clear,\n isProtected: useCallback(() => isProtected.current, []),\n isTracking: useCallback(() => origin.current !== undefined, []),\n protect: ({ pointer }: { pointer: PointerPosition }) => update({ pointer }),\n refresh: () => update(),\n trackSource,\n trackTarget,\n }\n}\n\nconst isInsideSafeArea = ({\n pointer,\n points,\n}: {\n pointer: PointerPosition\n points: PointerPosition[]\n}) =>\n points.every((edgeStart, index) =>\n isPointerInsideEdge({\n edgeEnd: points[(index + 1) % points.length],\n edgeStart,\n pointer,\n }),\n )\n\n// The convex hull covers the whole destination, allowing return paths to enter\n// through its top or bottom as well as its nearest edge.\nconst getSafeAreaPoints = ({ rect, start }: { rect: DOMRect; start: PointerPosition }) => {\n const points = [\n { x: start.x, y: start.y - 4 },\n { x: start.x, y: start.y + 4 },\n { x: rect.left, y: rect.top },\n { x: rect.right, y: rect.top },\n { x: rect.right, y: rect.bottom },\n { x: rect.left, y: rect.bottom },\n ].sort((a, b) => a.x - b.x || a.y - b.y)\n const getOuterEdge = ({ orderedPoints }: { orderedPoints: PointerPosition[] }) => {\n const edge: PointerPosition[] = []\n\n for (const point of orderedPoints) {\n while (edge.length > 1) {\n const previous = edge[edge.length - 2]\n const corner = edge[edge.length - 1]\n const edgeX = corner.x - previous.x\n const edgeY = corner.y - previous.y\n const pointX = point.x - previous.x\n const pointY = point.y - previous.y\n const shouldRemoveCorner = edgeX * pointY - edgeY * pointX <= 0\n\n // Remove corners that bend into the area or lie on a straight edge.\n if (!shouldRemoveCorner) {\n break\n }\n edge.pop()\n }\n edge.push(point)\n }\n return edge.slice(0, -1)\n }\n\n return [\n ...getOuterEdge({ orderedPoints: points }),\n ...getOuterEdge({ orderedPoints: [...points].reverse() }),\n ]\n}\n\n// Edges follow the safe area's point order. Points on the boundary count as inside.\nconst isPointerInsideEdge = ({\n edgeEnd,\n edgeStart,\n pointer,\n}: {\n edgeEnd: PointerPosition\n edgeStart: PointerPosition\n pointer: PointerPosition\n}): boolean =>\n (edgeEnd.x - edgeStart.x) * (pointer.y - edgeStart.y) -\n (edgeEnd.y - edgeStart.y) * (pointer.x - edgeStart.x) >=\n 0\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePopupWindow.js","names":["c","_c","useCallback","useEffect","useRef","useState","useConfig","usePopupWindow","props","$","eventType","onMessage","url","isReceivingMessage","isOpen","setIsOpen","config","t0","serverURL","popupRef","t1","t2","receiveMessage","event","origin","window","location","data","type","current","searchParams","addEventListener","removeEventListener","t3","e","preventDefault","closed","focus","features","height","left","menubar","popup","toolbar","top","width","popupOptions","Object","entries","reduce","str","t4","key","value","strCopy","v","Math","round","innerHeight","v_0","innerWidth","slice","newWindow","open","openPopupWindow","t5","timer","clearInterval","t6","isPopupOpen"],"sources":["../../src/hooks/usePopupWindow.ts"],"sourcesContent":["'use client'\nimport type React from 'react'\n\nimport { useCallback, useEffect, useRef, useState } from 'react'\n\nimport { useConfig } from '../providers/Config/index.js'\n\nexport interface PopupMessage {\n searchParams: {\n [key: string]: string | undefined\n code: string\n installation_id: string\n state: string\n }\n type: string\n}\n\nexport const usePopupWindow = (props: {\n eventType?: string\n\n onMessage?: (searchParams: PopupMessage['searchParams']) => Promise<void>\n url: string\n}): {\n isPopupOpen: boolean\n openPopupWindow: () => void\n popupRef?: React.RefObject<null | Window>\n} => {\n const { eventType, onMessage, url } = props\n const isReceivingMessage = useRef(false)\n const [isOpen, setIsOpen] = useState(false)\n\n const {\n config: { serverURL },\n } = useConfig()\n\n const popupRef = useRef<null | Window>(null)\n\n // Optionally broadcast messages back out to the parent component\n useEffect(() => {\n const receiveMessage = async (event: MessageEvent): Promise<void> => {\n if (\n event.origin !== window.location.origin ||\n event.origin !== url ||\n event.origin !== serverURL\n ) {\n // console.warn(`Message received by ${event.origin}; IGNORED.`) // eslint-disable-line no-console\n return\n }\n\n if (\n typeof onMessage === 'function' &&\n event.data?.type === eventType &&\n !isReceivingMessage.current\n ) {\n isReceivingMessage.current = true\n await onMessage(event.data?.searchParams)\n isReceivingMessage.current = false\n }\n }\n\n if (isOpen && popupRef.current) {\n window.addEventListener('message', receiveMessage, false)\n }\n\n return () => {\n window.removeEventListener('message', receiveMessage)\n }\n }, [onMessage, eventType, url, serverURL, isOpen])\n\n // Customize the size, position, and style of the popup window\n const openPopupWindow = useCallback(\n (e?: MouseEvent) => {\n if (e) {\n e.preventDefault()\n }\n\n // If a popup is already open, focus it instead of opening a new one\n if (popupRef.current && !popupRef.current.closed) {\n popupRef.current.focus()\n return\n }\n\n const features = {\n height: 700,\n left: 'auto',\n menubar: 'no',\n popup: 'yes',\n toolbar: 'no',\n top: 'auto',\n width: 800,\n }\n\n const popupOptions = Object.entries(features)\n .reduce((str, [key, value]) => {\n let strCopy = str\n if (value === 'auto') {\n if (key === 'top') {\n const v = Math.round(window.innerHeight / 2 - features.height / 2)\n strCopy += `top=${v},`\n } else if (key === 'left') {\n const v = Math.round(window.innerWidth / 2 - features.width / 2)\n strCopy += `left=${v},`\n }\n return strCopy\n }\n\n strCopy += `${key}=${value},`\n return strCopy\n }, '')\n .slice(0, -1) // remove last ',' (comma)\n\n const newWindow = window.open(url, '_blank', popupOptions)\n\n popupRef.current = newWindow\n\n setIsOpen(true)\n },\n [url],\n )\n\n // this is the most stable and widely supported way to check if a popup window is no longer open\n // we poll its ref every x ms and use the popup window's `closed` property\n useEffect(() => {\n let timer: NodeJS.Timeout\n\n if (isOpen) {\n timer = setInterval(function () {\n if (popupRef.current.closed) {\n clearInterval(timer)\n setIsOpen(false)\n }\n }, 1000)\n } else {\n clearInterval(timer)\n }\n\n return () => {\n if (timer) {\n clearInterval(timer)\n }\n }\n }, [isOpen, popupRef])\n\n return {\n isPopupOpen: isOpen,\n openPopupWindow,\n popupRef,\n }\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAGA,SAASC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAEzD,SAASC,SAAS,QAAQ;AAY1B,OAAO,MAAMC,cAAA,GAAiBC,KAAA;EAAA,MAAAC,CAAA,GAAAR,EAAA;EAU5B;IAAAS,SAAA;IAAAC,SAAA;IAAAC;EAAA,IAAsCJ,KAAA;EACtC,MAAAK,kBAAA,GAA2BT,MAAA,
|
|
1
|
+
{"version":3,"file":"usePopupWindow.js","names":["c","_c","useCallback","useEffect","useRef","useState","useConfig","usePopupWindow","props","$","eventType","onMessage","url","isReceivingMessage","isOpen","setIsOpen","config","t0","serverURL","popupRef","t1","t2","receiveMessage","event","origin","window","location","data","type","current","searchParams","addEventListener","removeEventListener","t3","e","preventDefault","closed","focus","features","height","left","menubar","popup","toolbar","top","width","popupOptions","Object","entries","reduce","str","t4","key","value","strCopy","v","Math","round","innerHeight","v_0","innerWidth","slice","newWindow","open","openPopupWindow","t5","timer","setInterval","clearInterval","t6","isPopupOpen"],"sources":["../../src/hooks/usePopupWindow.ts"],"sourcesContent":["'use client'\nimport type React from 'react'\n\nimport { useCallback, useEffect, useRef, useState } from 'react'\n\nimport { useConfig } from '../providers/Config/index.js'\n\nexport interface PopupMessage {\n searchParams: {\n [key: string]: string | undefined\n code: string\n installation_id: string\n state: string\n }\n type: string\n}\n\nexport const usePopupWindow = (props: {\n eventType?: string\n\n onMessage?: (searchParams: PopupMessage['searchParams']) => Promise<void>\n url: string\n}): {\n isPopupOpen: boolean\n openPopupWindow: () => void\n popupRef?: React.RefObject<null | Window>\n} => {\n const { eventType, onMessage, url } = props\n const isReceivingMessage = useRef(false)\n const [isOpen, setIsOpen] = useState(false)\n\n const {\n config: { serverURL },\n } = useConfig()\n\n const popupRef = useRef<null | Window>(null)\n\n // Optionally broadcast messages back out to the parent component\n useEffect(() => {\n const receiveMessage = async (event: MessageEvent): Promise<void> => {\n if (\n event.origin !== window.location.origin ||\n event.origin !== url ||\n event.origin !== serverURL\n ) {\n // console.warn(`Message received by ${event.origin}; IGNORED.`) // eslint-disable-line no-console\n return\n }\n\n if (\n typeof onMessage === 'function' &&\n event.data?.type === eventType &&\n !isReceivingMessage.current\n ) {\n isReceivingMessage.current = true\n await onMessage(event.data?.searchParams)\n isReceivingMessage.current = false\n }\n }\n\n if (isOpen && popupRef.current) {\n window.addEventListener('message', receiveMessage, false)\n }\n\n return () => {\n window.removeEventListener('message', receiveMessage)\n }\n }, [onMessage, eventType, url, serverURL, isOpen])\n\n // Customize the size, position, and style of the popup window\n const openPopupWindow = useCallback(\n (e?: MouseEvent) => {\n if (e) {\n e.preventDefault()\n }\n\n // If a popup is already open, focus it instead of opening a new one\n if (popupRef.current && !popupRef.current.closed) {\n popupRef.current.focus()\n return\n }\n\n const features = {\n height: 700,\n left: 'auto',\n menubar: 'no',\n popup: 'yes',\n toolbar: 'no',\n top: 'auto',\n width: 800,\n }\n\n const popupOptions = Object.entries(features)\n .reduce((str, [key, value]) => {\n let strCopy = str\n if (value === 'auto') {\n if (key === 'top') {\n const v = Math.round(window.innerHeight / 2 - features.height / 2)\n strCopy += `top=${v},`\n } else if (key === 'left') {\n const v = Math.round(window.innerWidth / 2 - features.width / 2)\n strCopy += `left=${v},`\n }\n return strCopy\n }\n\n strCopy += `${key}=${value},`\n return strCopy\n }, '')\n .slice(0, -1) // remove last ',' (comma)\n\n const newWindow = window.open(url, '_blank', popupOptions)\n\n popupRef.current = newWindow\n\n setIsOpen(true)\n },\n [url],\n )\n\n // this is the most stable and widely supported way to check if a popup window is no longer open\n // we poll its ref every x ms and use the popup window's `closed` property\n useEffect(() => {\n let timer: NodeJS.Timeout\n\n if (isOpen) {\n timer = setInterval(function () {\n if (popupRef.current.closed) {\n clearInterval(timer)\n setIsOpen(false)\n }\n }, 1000)\n } else {\n clearInterval(timer)\n }\n\n return () => {\n if (timer) {\n clearInterval(timer)\n }\n }\n }, [isOpen, popupRef])\n\n return {\n isPopupOpen: isOpen,\n openPopupWindow,\n popupRef,\n }\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAGA,SAASC,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ;AAEzD,SAASC,SAAS,QAAQ;AAY1B,OAAO,MAAMC,cAAA,GAAiBC,KAAA;EAAA,MAAAC,CAAA,GAAAR,EAAA;EAU5B;IAAAS,SAAA;IAAAC,SAAA;IAAAC;EAAA,IAAsCJ,KAAA;EACtC,MAAAK,kBAAA,GAA2BT,MAAA,CAAO;EAClC,OAAAU,MAAA,EAAAC,SAAA,IAA4BV,QAAA,CAAS;EAErC;IAAAW,MAAA,EAAAC;EAAA,IAEIX,SAAA;EADM;IAAAY;EAAA,IAAAD,EAAa;EAGvB,MAAAE,QAAA,GAAiBf,MAAA,CAAsB;EAAA,IAAAgB,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAZ,CAAA,QAAAC,SAAA,IAAAD,CAAA,QAAAK,MAAA,IAAAL,CAAA,QAAAE,SAAA,IAAAF,CAAA,QAAAS,SAAA,IAAAT,CAAA,QAAAG,GAAA;IAG7BQ,EAAA,GAAAA,CAAA;MACR,MAAAE,cAAA,GAAuB,MAAAC,KAAA;QACrB,IACEA,KAAA,CAAAC,MAAY,KAAKC,MAAA,CAAAC,QAAe,CAAAF,MACf,IAAjBD,KAAA,CAAAC,MAAY,KAAKZ,GACA,IAAjBW,KAAA,CAAAC,MAAY,KAAKN,SAAA;UAAA;QAAA;QAMnB,IACE,OAAOP,SAAA,KAAc,UACA,IAArBY,KAAA,CAAAI,IAAY,EAAAC,IAAA,KAASlB,SACM,IAF3B,CAECG,kBAAA,CAAAgB,OAA0B;UAE3BhB,kBAAA,CAAAgB,OAAA,GAA6B,IAAH;UAC1B,MAAMlB,SAAA,CAAUY,KAAA,CAAAI,IAAY,EAAAG,YAAA;UAC5BjB,kBAAA,CAAAgB,OAAA,GAA6B,KAAH;QAAA;MAC5B,CACF;MAEA,IAAIf,MAA0B,IAAhBK,QAAA,CAAAU,OAAgB;QAC5BJ,MAAA,CAAAM,gBAAuB,CAAC,WAAWT,cAAA,EAAgB;MAAA;MACrD,OAEO;QACLG,MAAA,CAAAO,mBAA0B,CAAC,WAAWV,cAAA;MAAA,CACxC;IAAA,CACF;IAAGD,EAAA,IAACV,SAAA,EAAWD,SAAA,EAAWE,GAAA,EAAKM,SAAA,EAAWJ,MAAA,CAAO;IAAAL,CAAA,MAAAC,SAAA;IAAAD,CAAA,MAAAK,MAAA;IAAAL,CAAA,MAAAE,SAAA;IAAAF,CAAA,MAAAS,SAAA;IAAAT,CAAA,MAAAG,GAAA;IAAAH,CAAA,MAAAW,EAAA;IAAAX,CAAA,MAAAY,EAAA;EAAA;IAAAD,EAAA,GAAAX,CAAA;IAAAY,EAAA,GAAAZ,CAAA;EAAA;EA7BjDN,SAAA,CAAUiB,EA6BV,EAAGC,EAA8C;EAAA,IAAAY,EAAA;EAAA,IAAAxB,CAAA,QAAAG,GAAA;IAI/CqB,EAAA,GAAAC,CAAA;MACE,IAAIA,CAAA;QACFA,CAAA,CAAAC,cAAgB;MAAA;MAIlB,IAAIhB,QAAA,CAAAU,OAA4C,IAA5C,CAAqBV,QAAA,CAAAU,OAAgB,CAAAO,MAAO;QAC9CjB,QAAA,CAAAU,OAAgB,CAAAQ,KAAM;QAAA;MAAA;MAIxB,MAAAC,QAAA,GAAiB;QAAAC,MAAA,EACP;QAAAC,IAAA,EACF;QAAAC,OAAA,EACG;QAAAC,KAAA,EACF;QAAAC,OAAA,EACE;QAAAC,GAAA,EACJ;QAAAC,KAAA,EACE;MACT;MAEA,MAAAC,YAAA,GAAqBC,MAAA,CAAAC,OAAc,CAACV,QAAA,EAAAW,MAC3B,CAAC,CAAAC,GAAA,EAAAC,EAAA;QAAM,OAAAC,GAAA,EAAAC,KAAA,IAAAF,EAAY;QACxB,IAAAG,OAAA,GAAcJ,GAAA;QACd,IAAIG,KAAA,KAAU;UACZ,IAAID,GAAA,KAAQ;YACV,MAAAG,CAAA,GAAUC,IAAA,CAAAC,KAAU,CAAChC,MAAA,CAAAiC,WAAkB,GAAG,IAAIpB,QAAA,CAAAC,MAAe,GAAG;YAChEe,OAAA,GAAAA,OAAA,GAAW,OAAOC,CAAA,GAAI;UAAA;YACjB,IAAIH,GAAA,KAAQ;cACjB,MAAAO,GAAA,GAAUH,IAAA,CAAAC,KAAU,CAAChC,MAAA,CAAAmC,UAAiB,GAAG,IAAItB,QAAA,CAAAO,KAAc,GAAG;cAC9DS,OAAA,GAAAA,OAAA,GAAW,QAAQC,GAAA,GAAI;YAAA;UACzB;UAAA,OACOD,OAAA;QAAA;QAGTA,OAAA,GAAAA,OAAA,GAAW,GAAGF,GAAA,IAAOC,KAAA,GAAQ;QAAA,OACtBC,OAAA;MAAA,CACT,EAAG,IAAAO,KACG,CAAC,GAAG,EAAC;MAEb,MAAAC,SAAA,GAAkBrC,MAAA,CAAAsC,IAAW,CAACnD,GAAA,EAAK,UAAUkC,YAAA;MAE7C3B,QAAA,CAAAU,OAAA,GAAmBiC,SAAH;MAEhB/C,SAAA,CAAU;IAAA,CACZ;IAAAN,CAAA,MAAAG,GAAA;IAAAH,CAAA,MAAAwB,EAAA;EAAA;IAAAA,EAAA,GAAAxB,CAAA;EAAA;EA9CF,MAAAuD,eAAA,GAAwB/B,EA+CjB;EAAA,IAAAkB,EAAA;EAAA,IAAAc,EAAA;EAAA,IAAAxD,CAAA,QAAAK,MAAA;IAKGqC,EAAA,GAAAA,CAAA;MACJe,GAAA,CAAAA,KAAA;MAEJ,IAAIpD,MAAA;QACFoD,KAAA,CAAAA,CAAA,CAAQC,WAAA,CAAY;UAClB,IAAIhD,QAAA,CAAAU,OAAgB,CAAAO,MAAO;YACzBgC,aAAA,CAAcF,KAAA;YACdnD,SAAA,CAAU;UAAA;QACZ,CACF,EAAG;MALH;QAOAqD,aAAA,CAAcF,KAAA;MAAA;MAChB,OAEO;QACL,IAAIA,KAAA;UACFE,aAAA,CAAcF,KAAA;QAAA;MAChB,CACF;IAAA,CACF;IAAGD,EAAA,IAACnD,MAAA,EAAQK,QAAA,CAAS;IAAAV,CAAA,MAAAK,MAAA;IAAAL,CAAA,OAAA0C,EAAA;IAAA1C,CAAA,OAAAwD,EAAA;EAAA;IAAAd,EAAA,GAAA1C,CAAA;IAAAwD,EAAA,GAAAxD,CAAA;EAAA;EAnBrBN,SAAA,CAAUgD,EAmBV,EAAGc,EAAkB;EAAA,IAAAI,EAAA;EAAA,IAAA5D,CAAA,SAAAK,MAAA,IAAAL,CAAA,SAAAuD,eAAA;IAEdK,EAAA;MAAAC,WAAA,EACQxD,MAAA;MAAAkD,eAAA;MAAA7C;IAGf;IAAAV,CAAA,OAAAK,MAAA;IAAAL,CAAA,OAAAuD,eAAA;IAAAvD,CAAA,OAAA4D,EAAA;EAAA;IAAAA,EAAA,GAAA5D,CAAA;EAAA;EAAA,OAJO4D,EAIP;AAAA,CACF","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRelatedCollections.js","names":["c","_c","useState","useConfig","useRelatedCollections","relationTo","$","getEntityConfig","t0","relations","map","relation","collectionSlug","relatedCollections"],"sources":["../../src/hooks/useRelatedCollections.ts"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { useState } from 'react'\n\nimport { useConfig } from '../providers/Config/index.js'\n\n/**\n * Gets the corresponding client collection config(s) for the given collection slug.\n */\nexport const useRelatedCollections = (relationTo: string | string[]): ClientCollectionConfig[] => {\n const { getEntityConfig } = useConfig()\n\n const [relatedCollections] = useState(() => {\n if (relationTo) {\n const relations = typeof relationTo === 'string' ? [relationTo] : relationTo\n return relations.map((relation) => getEntityConfig({ collectionSlug: relation }))\n }\n return []\n })\n\n return relatedCollections\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAGA,SAASC,QAAQ,QAAQ;AAEzB,SAASC,SAAS,QAAQ;AAE1B;;;AAGA,OAAO,MAAMC,qBAAA,GAAwBC,UAAA;EAAA,MAAAC,CAAA,GAAAL,EAAA;EACnC;IAAAM;EAAA,IAA4BJ,SAAA;EAAA,IAAAK,EAAA;EAAA,IAAAF,CAAA,QAAAC,eAAA,IAAAD,CAAA,QAAAD,UAAA;IAEUG,EAAA,GAAAA,CAAA;
|
|
1
|
+
{"version":3,"file":"useRelatedCollections.js","names":["c","_c","useState","useConfig","useRelatedCollections","relationTo","$","getEntityConfig","t0","relations","map","relation","collectionSlug","relatedCollections"],"sources":["../../src/hooks/useRelatedCollections.ts"],"sourcesContent":["'use client'\nimport type { ClientCollectionConfig } from 'payload'\n\nimport { useState } from 'react'\n\nimport { useConfig } from '../providers/Config/index.js'\n\n/**\n * Gets the corresponding client collection config(s) for the given collection slug.\n */\nexport const useRelatedCollections = (relationTo: string | string[]): ClientCollectionConfig[] => {\n const { getEntityConfig } = useConfig()\n\n const [relatedCollections] = useState(() => {\n if (relationTo) {\n const relations = typeof relationTo === 'string' ? [relationTo] : relationTo\n return relations.map((relation) => getEntityConfig({ collectionSlug: relation }))\n }\n return []\n })\n\n return relatedCollections\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;AAGA,SAASC,QAAQ,QAAQ;AAEzB,SAASC,SAAS,QAAQ;AAE1B;;;AAGA,OAAO,MAAMC,qBAAA,GAAwBC,UAAA;EAAA,MAAAC,CAAA,GAAAL,EAAA;EACnC;IAAAM;EAAA,IAA4BJ,SAAA;EAAA,IAAAK,EAAA;EAAA,IAAAF,CAAA,QAAAC,eAAA,IAAAD,CAAA,QAAAD,UAAA;IAEUG,EAAA,GAAAA,CAAA;MACpC,IAAIH,UAAA;QACF,MAAAI,SAAA,GAAkB,OAAOJ,UAAA,KAAe,QAA0B,GAAhD,CAAkCA,UAAA,CAAc,GAAhDA,UAAgD;QAAA,OAC3DI,SAAA,CAAAC,GAAa,CAACC,QAAA,IAAcJ,eAAA,CAAgB;UAAAK,cAAA,EAAkBD;QAAS;MAAA;MAChF,OACO,EAAE;IAAA,CACX;IAAAL,CAAA,MAAAC,eAAA;IAAAD,CAAA,MAAAD,UAAA;IAAAC,CAAA,MAAAE,EAAA;EAAA;IAAAA,EAAA,GAAAF,CAAA;EAAA;EANA,OAAAO,kBAAA,IAA6BX,QAAA,CAASM,EAMtC;EAAA,OAEOK,kBAAA;AAAA,CACT","ignoreList":[]}
|