@ahrowe/ui 0.34.0 → 0.36.0
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/README.md +158 -68
- package/dist/cjs-types/common/accordion/accordion.d.ts +4 -0
- package/dist/cjs-types/common/accordion/accordion.types.d.ts +21 -0
- package/dist/cjs-types/common/accordion/index.d.ts +2 -0
- package/dist/cjs-types/common/actionButtons/actionButtons.d.ts +2 -0
- package/dist/cjs-types/common/actionButtons/actionButtons.types.d.ts +34 -0
- package/dist/cjs-types/common/actionButtons/index.d.ts +2 -0
- package/dist/cjs-types/common/actionIcon/actionIcon.d.ts +4 -0
- package/dist/cjs-types/common/actionIcon/actionIcon.types.d.ts +15 -0
- package/dist/cjs-types/common/actionIcon/index.d.ts +2 -0
- package/dist/cjs-types/common/alert/alert.d.ts +4 -0
- package/dist/cjs-types/common/alert/alert.types.d.ts +30 -0
- package/dist/cjs-types/common/alert/index.d.ts +2 -0
- package/dist/cjs-types/common/animatedIcon/animatedIcon.d.ts +3 -0
- package/dist/cjs-types/common/animatedIcon/animatedIcon.types.d.ts +25 -0
- package/dist/cjs-types/common/animatedIcon/index.d.ts +2 -0
- package/dist/cjs-types/common/animatedLogo/animatedLogo.d.ts +4 -0
- package/dist/cjs-types/common/animatedLogo/animatedLogo.types.d.ts +35 -0
- package/dist/cjs-types/common/animatedLogo/index.d.ts +2 -0
- package/dist/cjs-types/common/animatedText/animatedText.d.ts +4 -0
- package/dist/cjs-types/common/animatedText/animatedText.types.d.ts +65 -0
- package/dist/cjs-types/common/animatedText/index.d.ts +2 -0
- package/dist/cjs-types/common/avatar/avatar.d.ts +4 -0
- package/dist/cjs-types/common/avatar/avatar.types.d.ts +26 -0
- package/dist/cjs-types/common/avatar/avatarGroup.d.ts +4 -0
- package/dist/cjs-types/common/avatar/index.d.ts +3 -0
- package/dist/cjs-types/common/badge/badge.d.ts +4 -0
- package/dist/cjs-types/common/badge/badge.types.d.ts +31 -0
- package/dist/cjs-types/common/badge/index.d.ts +2 -0
- package/dist/cjs-types/common/bodyEnd/bodyEnd.d.ts +4 -0
- package/dist/cjs-types/common/bodyEnd/bodyEnd.types.d.ts +4 -0
- package/dist/cjs-types/common/bodyEnd/index.d.ts +2 -0
- package/dist/cjs-types/common/breadcrumb/breadcrumb.d.ts +4 -0
- package/dist/cjs-types/common/breadcrumb/breadcrumb.types.d.ts +33 -0
- package/dist/cjs-types/common/breadcrumb/index.d.ts +2 -0
- package/dist/cjs-types/common/button/button.d.ts +9 -0
- package/dist/cjs-types/common/button/button.types.d.ts +42 -0
- package/dist/cjs-types/common/button/index.d.ts +2 -0
- package/dist/cjs-types/common/buttonGroup/buttonGroup.d.ts +4 -0
- package/dist/cjs-types/common/buttonGroup/buttonGroup.types.d.ts +12 -0
- package/dist/cjs-types/common/buttonGroup/index.d.ts +2 -0
- package/dist/cjs-types/common/card/Card.d.ts +4 -0
- package/dist/cjs-types/common/card/CardActions.d.ts +4 -0
- package/dist/cjs-types/common/card/CardContent.d.ts +4 -0
- package/dist/cjs-types/common/card/CardHeader.d.ts +4 -0
- package/dist/cjs-types/common/card/CardMedia.d.ts +4 -0
- package/dist/cjs-types/common/card/card.types.d.ts +55 -0
- package/dist/cjs-types/common/card/index.d.ts +6 -0
- package/dist/cjs-types/common/carousel/carousel.d.ts +4 -0
- package/dist/cjs-types/common/carousel/carousel.types.d.ts +35 -0
- package/dist/cjs-types/common/carousel/index.d.ts +2 -0
- package/dist/cjs-types/common/checkbox/checkbox.d.ts +4 -0
- package/dist/cjs-types/common/checkbox/checkbox.types.d.ts +27 -0
- package/dist/cjs-types/common/checkbox/index.d.ts +2 -0
- package/dist/cjs-types/common/chip/chip.d.ts +4 -0
- package/dist/cjs-types/common/chip/chip.types.d.ts +35 -0
- package/dist/cjs-types/common/chip/chipContainer.d.ts +4 -0
- package/dist/cjs-types/common/chip/index.d.ts +3 -0
- package/dist/cjs-types/common/colorPicker/colorPicker.d.ts +4 -0
- package/dist/cjs-types/common/colorPicker/colorPicker.types.d.ts +25 -0
- package/dist/cjs-types/common/colorPicker/index.d.ts +2 -0
- package/dist/cjs-types/common/colorPicker/toHex.d.ts +11 -0
- package/dist/cjs-types/common/configProvider/configProvider.d.ts +13 -0
- package/dist/cjs-types/common/configProvider/configProvider.types.d.ts +133 -0
- package/dist/cjs-types/common/configProvider/index.d.ts +6 -0
- package/dist/cjs-types/common/configProvider/presentation.types.d.ts +14 -0
- package/dist/cjs-types/common/configProvider/useComponentDefaults.d.ts +17 -0
- package/dist/cjs-types/common/configProvider/useLabels.d.ts +22 -0
- package/dist/cjs-types/common/configProvider/usePresentationDefault.d.ts +8 -0
- package/dist/cjs-types/common/confirmModal/confirmModal.d.ts +4 -0
- package/dist/cjs-types/common/confirmModal/confirmModal.types.d.ts +24 -0
- package/dist/cjs-types/common/confirmModal/index.d.ts +2 -0
- package/dist/cjs-types/common/datePicker/components/datePickerMonth/datePickerMonth.d.ts +2 -0
- package/dist/cjs-types/common/datePicker/components/datePickerMonth/datePickerMonth.types.d.ts +23 -0
- package/dist/cjs-types/common/datePicker/components/datePickerMonth/index.d.ts +1 -0
- package/dist/cjs-types/common/datePicker/dateFunctions.d.ts +44 -0
- package/dist/cjs-types/common/datePicker/datePicker.d.ts +3 -0
- package/dist/cjs-types/common/datePicker/datePicker.types.d.ts +60 -0
- package/dist/cjs-types/common/datePicker/index.d.ts +2 -0
- package/dist/cjs-types/common/divider/divider.d.ts +4 -0
- package/dist/cjs-types/common/divider/divider.types.d.ts +21 -0
- package/dist/cjs-types/common/divider/index.d.ts +2 -0
- package/dist/cjs-types/common/drawer/drawer.d.ts +4 -0
- package/dist/cjs-types/common/drawer/drawer.types.d.ts +15 -0
- package/dist/cjs-types/common/drawer/index.d.ts +2 -0
- package/dist/cjs-types/common/dropZone/dropZone.d.ts +4 -0
- package/dist/cjs-types/common/dropZone/dropZone.types.d.ts +90 -0
- package/dist/cjs-types/common/dropZone/index.d.ts +2 -0
- package/dist/cjs-types/common/dropdown/dropdown.d.ts +4 -0
- package/dist/cjs-types/common/dropdown/dropdown.types.d.ts +47 -0
- package/dist/cjs-types/common/dropdown/index.d.ts +2 -0
- package/dist/cjs-types/common/emptyState/emptyState.d.ts +3 -0
- package/dist/cjs-types/common/emptyState/emptyState.types.d.ts +20 -0
- package/dist/cjs-types/common/emptyState/index.d.ts +2 -0
- package/dist/cjs-types/common/errorBoundary/errorBoundary.d.ts +14 -0
- package/dist/cjs-types/common/errorBoundary/errorBoundary.types.d.ts +57 -0
- package/dist/cjs-types/common/errorBoundary/index.d.ts +2 -0
- package/dist/cjs-types/common/fab/components/fabBase/fabBase.d.ts +3 -0
- package/dist/cjs-types/common/fab/components/fabBase/fabBase.types.d.ts +12 -0
- package/dist/cjs-types/common/fab/components/fabBase/index.d.ts +1 -0
- package/dist/cjs-types/common/fab/fab.d.ts +3 -0
- package/dist/cjs-types/common/fab/fab.types.d.ts +22 -0
- package/dist/cjs-types/common/fab/index.d.ts +2 -0
- package/dist/cjs-types/common/flip/flip.d.ts +3 -0
- package/dist/cjs-types/common/flip/flip.types.d.ts +44 -0
- package/dist/cjs-types/common/flip/index.d.ts +2 -0
- package/dist/cjs-types/common/floorPlan/floorPlan.faces.d.ts +33 -0
- package/dist/cjs-types/common/floorPlan/floorPlan.fixtures.d.ts +35 -0
- package/dist/cjs-types/common/floorPlan/floorPlan.geometry.d.ts +111 -0
- package/dist/cjs-types/common/floorPlan/floorPlan.graph.d.ts +184 -0
- package/dist/cjs-types/common/floorPlan/floorPlan.hit.d.ts +26 -0
- package/dist/cjs-types/common/floorPlan/floorPlan.json.d.ts +23 -0
- package/dist/cjs-types/common/floorPlan/floorPlan.mesh.d.ts +36 -0
- package/dist/cjs-types/common/floorPlan/floorPlan.path.d.ts +59 -0
- package/dist/cjs-types/common/floorPlan/floorPlan.plan.d.ts +98 -0
- package/dist/cjs-types/common/floorPlan/floorPlan.rooms.d.ts +47 -0
- package/dist/cjs-types/common/floorPlan/floorPlan.snap.d.ts +101 -0
- package/dist/cjs-types/common/floorPlan/floorPlan.triangulate.d.ts +11 -0
- package/dist/cjs-types/common/floorPlan/floorPlan.types.d.ts +276 -0
- package/dist/cjs-types/common/floorPlan/index.d.ts +30 -0
- package/dist/cjs-types/common/floorPlan/legacySvg.d.ts +27 -0
- package/dist/cjs-types/common/hooks/useAnchorTracking.d.ts +40 -0
- package/dist/cjs-types/common/hooks/useCoarsePointer.d.ts +3 -0
- package/dist/cjs-types/common/hooks/useFocusBoundary.d.ts +20 -0
- package/dist/cjs-types/common/hooks/useMediaQuery.d.ts +9 -0
- package/dist/cjs-types/common/hooks/useOverlay.d.ts +26 -0
- package/dist/cjs-types/common/hooks/useScrollEdges.d.ts +18 -0
- package/dist/cjs-types/common/hooks/useSheet.d.ts +19 -0
- package/dist/cjs-types/common/hooks/useSwipeDismiss.d.ts +33 -0
- package/dist/cjs-types/common/hooks/useVisualViewportSize.d.ts +13 -0
- package/dist/cjs-types/common/iconPicker/iconPicker.d.ts +3 -0
- package/dist/cjs-types/common/iconPicker/iconPicker.types.d.ts +23 -0
- package/dist/cjs-types/common/iconPicker/index.d.ts +2 -0
- package/dist/cjs-types/common/idleManager/idleManager.d.ts +3 -0
- package/dist/cjs-types/common/idleManager/idleManager.types.d.ts +8 -0
- package/dist/cjs-types/common/idleManager/index.d.ts +2 -0
- package/dist/cjs-types/common/infiniteBlock/useInfiniteScroll.d.ts +5 -0
- package/dist/cjs-types/common/input/index.d.ts +2 -0
- package/dist/cjs-types/common/input/input.d.ts +4 -0
- package/dist/cjs-types/common/input/input.types.d.ts +84 -0
- package/dist/cjs-types/common/inputDropdown/index.d.ts +2 -0
- package/dist/cjs-types/common/inputDropdown/inputDropdown.d.ts +3 -0
- package/dist/cjs-types/common/inputDropdown/inputDropdown.types.d.ts +36 -0
- package/dist/cjs-types/common/interactableDiv/index.d.ts +2 -0
- package/dist/cjs-types/common/interactableDiv/interactableDiv.d.ts +8 -0
- package/dist/cjs-types/common/kanbanBoard/KanbanBoard.d.ts +3 -0
- package/dist/cjs-types/common/kanbanBoard/KanbanColumn.d.ts +45 -0
- package/dist/cjs-types/common/kanbanBoard/KanbanItem.d.ts +3 -0
- package/dist/cjs-types/common/kanbanBoard/index.d.ts +3 -0
- package/dist/cjs-types/common/kanbanBoard/kanbanBoard.types.d.ts +129 -0
- package/dist/cjs-types/common/kanbanBoard/kanbanBoard.utils.d.ts +60 -0
- package/dist/cjs-types/common/klipyPicker/components/gifPreview/gifPreview.d.ts +3 -0
- package/dist/cjs-types/common/klipyPicker/components/gifPreview/gifPreview.types.d.ts +7 -0
- package/dist/cjs-types/common/klipyPicker/components/gifPreview/index.d.ts +1 -0
- package/dist/cjs-types/common/klipyPicker/components/gifView/gifView.d.ts +3 -0
- package/dist/cjs-types/common/klipyPicker/components/gifView/gifView.types.d.ts +4 -0
- package/dist/cjs-types/common/klipyPicker/components/gifView/index.d.ts +1 -0
- package/dist/cjs-types/common/klipyPicker/index.d.ts +2 -0
- package/dist/cjs-types/common/klipyPicker/klipyPicker.d.ts +3 -0
- package/dist/cjs-types/common/klipyPicker/klipyPicker.types.d.ts +15 -0
- package/dist/cjs-types/common/loading/iconLoading/iconLoading.d.ts +5 -0
- package/dist/cjs-types/common/loading/iconLoading/index.d.ts +2 -0
- package/dist/cjs-types/common/loading/index.d.ts +2 -0
- package/dist/cjs-types/common/loading/spinnerLoading/index.d.ts +2 -0
- package/dist/cjs-types/common/loading/spinnerLoading/spinnerLoading.d.ts +6 -0
- package/dist/cjs-types/common/maskedInput/index.d.ts +2 -0
- package/dist/cjs-types/common/maskedInput/mask.d.ts +48 -0
- package/dist/cjs-types/common/maskedInput/maskedInput.d.ts +13 -0
- package/dist/cjs-types/common/maskedInput/maskedInput.types.d.ts +38 -0
- package/dist/cjs-types/common/menu/index.d.ts +2 -0
- package/dist/cjs-types/common/menu/menu.d.ts +14 -0
- package/dist/cjs-types/common/menu/menu.types.d.ts +55 -0
- package/dist/cjs-types/common/modal/index.d.ts +2 -0
- package/dist/cjs-types/common/modal/modal.d.ts +3 -0
- package/dist/cjs-types/common/modal/modal.types.d.ts +31 -0
- package/dist/cjs-types/common/multiSelect/index.d.ts +2 -0
- package/dist/cjs-types/common/multiSelect/multiSelect.d.ts +4 -0
- package/dist/cjs-types/common/multiSelect/multiSelect.types.d.ts +69 -0
- package/dist/cjs-types/common/numberInput/index.d.ts +3 -0
- package/dist/cjs-types/common/numberInput/numberInput.d.ts +5 -0
- package/dist/cjs-types/common/numberInput/numberInput.types.d.ts +76 -0
- package/dist/cjs-types/common/numberInput/useStepRepeat.d.ts +17 -0
- package/dist/cjs-types/common/optionPicker/index.d.ts +2 -0
- package/dist/cjs-types/common/optionPicker/optionPicker.d.ts +4 -0
- package/dist/cjs-types/common/optionPicker/optionPicker.types.d.ts +16 -0
- package/dist/cjs-types/common/otpInput/index.d.ts +2 -0
- package/dist/cjs-types/common/otpInput/otpInput.d.ts +4 -0
- package/dist/cjs-types/common/otpInput/otpInput.types.d.ts +60 -0
- package/dist/cjs-types/common/overscroll/index.d.ts +2 -0
- package/dist/cjs-types/common/overscroll/overscroll.d.ts +2 -0
- package/dist/cjs-types/common/overscroll/overscroll.types.d.ts +14 -0
- package/dist/cjs-types/common/pagination/index.d.ts +2 -0
- package/dist/cjs-types/common/pagination/pagination.d.ts +4 -0
- package/dist/cjs-types/common/pagination/pagination.types.d.ts +45 -0
- package/dist/cjs-types/common/planCanvas/index.d.ts +2 -0
- package/dist/cjs-types/common/planCanvas/planCanvas.d.ts +7 -0
- package/dist/cjs-types/common/planCanvas/planCanvas.types.d.ts +64 -0
- package/dist/cjs-types/common/popover/index.d.ts +2 -0
- package/dist/cjs-types/common/popover/popover.d.ts +3 -0
- package/dist/cjs-types/common/popover/popover.types.d.ts +94 -0
- package/dist/cjs-types/common/popover/usePopoverPosition.d.ts +44 -0
- package/dist/cjs-types/common/progressBar/index.d.ts +2 -0
- package/dist/cjs-types/common/progressBar/progressBar.d.ts +5 -0
- package/dist/cjs-types/common/progressBar/progressBar.types.d.ts +18 -0
- package/dist/cjs-types/common/radioGroup/index.d.ts +2 -0
- package/dist/cjs-types/common/radioGroup/radioGroup.d.ts +4 -0
- package/dist/cjs-types/common/radioGroup/radioGroup.types.d.ts +45 -0
- package/dist/cjs-types/common/rating/index.d.ts +2 -0
- package/dist/cjs-types/common/rating/rating.d.ts +4 -0
- package/dist/cjs-types/common/rating/rating.types.d.ts +19 -0
- package/dist/cjs-types/common/revealLens/index.d.ts +2 -0
- package/dist/cjs-types/common/revealLens/revealLens.d.ts +4 -0
- package/dist/cjs-types/common/revealLens/revealLens.types.d.ts +24 -0
- package/dist/cjs-types/common/ripple/index.d.ts +2 -0
- package/dist/cjs-types/common/ripple/ripple.d.ts +5 -0
- package/dist/cjs-types/common/ripple/ripple.types.d.ts +16 -0
- package/dist/cjs-types/common/roomDrawer/index.d.ts +2 -0
- package/dist/cjs-types/common/roomDrawer/roomDrawer.d.ts +3 -0
- package/dist/cjs-types/common/roomDrawer/roomDrawer.types.d.ts +308 -0
- package/dist/cjs-types/common/roomDrawer/usePlanHistory.d.ts +24 -0
- package/dist/cjs-types/common/roomViewer/index.d.ts +2 -0
- package/dist/cjs-types/common/roomViewer/roomViewer.d.ts +10 -0
- package/dist/cjs-types/common/roomViewer/roomViewer.types.d.ts +91 -0
- package/dist/cjs-types/common/scrollFade/index.d.ts +2 -0
- package/dist/cjs-types/common/scrollFade/scrollFade.d.ts +4 -0
- package/dist/cjs-types/common/scrollFade/scrollFade.types.d.ts +20 -0
- package/dist/cjs-types/common/scrollbarProvider/index.d.ts +2 -0
- package/dist/cjs-types/common/scrollbarProvider/scrollbarProvider.d.ts +7 -0
- package/dist/cjs-types/common/searchInput/index.d.ts +2 -0
- package/dist/cjs-types/common/searchInput/searchInput.d.ts +3 -0
- package/dist/cjs-types/common/searchInput/searchInput.types.d.ts +28 -0
- package/dist/cjs-types/common/sectionHeader/index.d.ts +2 -0
- package/dist/cjs-types/common/sectionHeader/sectionHeader.d.ts +4 -0
- package/dist/cjs-types/common/sectionHeader/sectionHeader.types.d.ts +27 -0
- package/dist/cjs-types/common/sheetBackdrop/index.d.ts +2 -0
- package/dist/cjs-types/common/sheetBackdrop/sheetBackdrop.d.ts +16 -0
- package/dist/cjs-types/common/sheetBackdrop/sheetBackdrop.types.d.ts +7 -0
- package/dist/cjs-types/common/skeleton/index.d.ts +2 -0
- package/dist/cjs-types/common/skeleton/skeleton.d.ts +4 -0
- package/dist/cjs-types/common/skeleton/skeleton.types.d.ts +22 -0
- package/dist/cjs-types/common/slider/index.d.ts +2 -0
- package/dist/cjs-types/common/slider/slider.d.ts +3 -0
- package/dist/cjs-types/common/slider/slider.types.d.ts +68 -0
- package/dist/cjs-types/common/splitButton/index.d.ts +2 -0
- package/dist/cjs-types/common/splitButton/splitButton.d.ts +3 -0
- package/dist/cjs-types/common/splitButton/splitButton.types.d.ts +35 -0
- package/dist/cjs-types/common/stepper/index.d.ts +2 -0
- package/dist/cjs-types/common/stepper/stepper.d.ts +3 -0
- package/dist/cjs-types/common/stepper/stepper.types.d.ts +77 -0
- package/dist/cjs-types/common/sticky/index.d.ts +1 -0
- package/dist/cjs-types/common/sticky/sticky.d.ts +3 -0
- package/dist/cjs-types/common/sticky/sticky.types.d.ts +22 -0
- package/dist/cjs-types/common/sticky/stickyStack.d.ts +46 -0
- package/dist/cjs-types/common/switch/index.d.ts +2 -0
- package/dist/cjs-types/common/switch/switch.d.ts +4 -0
- package/dist/cjs-types/common/switch/switch.types.d.ts +21 -0
- package/dist/cjs-types/common/tabHeader/index.d.ts +2 -0
- package/dist/cjs-types/common/tabHeader/tabHeader.d.ts +4 -0
- package/dist/cjs-types/common/tabHeader/tabHeader.types.d.ts +20 -0
- package/dist/cjs-types/common/textarea/index.d.ts +2 -0
- package/dist/cjs-types/common/textarea/textarea.d.ts +3 -0
- package/dist/cjs-types/common/textarea/textarea.types.d.ts +2 -0
- package/dist/cjs-types/common/themeProvider/defaultTheme.d.ts +7 -0
- package/dist/cjs-types/common/themeProvider/index.d.ts +4 -0
- package/dist/cjs-types/common/themeProvider/lightTheme.d.ts +13 -0
- package/dist/cjs-types/common/themeProvider/theme.types.d.ts +272 -0
- package/dist/cjs-types/common/themeProvider/themeProvider.d.ts +38 -0
- package/dist/cjs-types/common/themeProvider/themeVariablesContext.d.ts +11 -0
- package/dist/cjs-types/common/themeProvider/useTheme.d.ts +4 -0
- package/dist/cjs-types/common/tilt/index.d.ts +4 -0
- package/dist/cjs-types/common/tilt/tilt.d.ts +3 -0
- package/dist/cjs-types/common/tilt/tilt.types.d.ts +40 -0
- package/dist/cjs-types/common/tilt/tiltMath.d.ts +24 -0
- package/dist/cjs-types/common/tiltGroup/index.d.ts +3 -0
- package/dist/cjs-types/common/tiltGroup/tiltGroup.d.ts +6 -0
- package/dist/cjs-types/common/tiltGroup/tiltGroup.types.d.ts +16 -0
- package/dist/cjs-types/common/timeInput/components/clockDial/clockDial.d.ts +3 -0
- package/dist/cjs-types/common/timeInput/components/clockDial/clockDial.types.d.ts +24 -0
- package/dist/cjs-types/common/timeInput/components/clockDial/index.d.ts +1 -0
- package/dist/cjs-types/common/timeInput/index.d.ts +1 -0
- package/dist/cjs-types/common/timeInput/timeFunctions.d.ts +36 -0
- package/dist/cjs-types/common/timeInput/timeInput.d.ts +3 -0
- package/dist/cjs-types/common/timeInput/timeInput.types.d.ts +44 -0
- package/dist/cjs-types/common/timeline/index.d.ts +2 -0
- package/dist/cjs-types/common/timeline/timeline.d.ts +3 -0
- package/dist/cjs-types/common/timeline/timeline.types.d.ts +51 -0
- package/dist/cjs-types/common/timer/index.d.ts +2 -0
- package/dist/cjs-types/common/timer/timer.chime.d.ts +1 -0
- package/dist/cjs-types/common/timer/timer.d.ts +3 -0
- package/dist/cjs-types/common/timer/timer.types.d.ts +110 -0
- package/dist/cjs-types/common/toast/index.d.ts +3 -0
- package/dist/cjs-types/common/toast/toast.d.ts +11 -0
- package/dist/cjs-types/common/toast/toast.types.d.ts +50 -0
- package/dist/cjs-types/common/toast/toastProvider.d.ts +8 -0
- package/dist/cjs-types/common/toast/toastService.d.ts +7 -0
- package/dist/cjs-types/common/tooltip/index.d.ts +2 -0
- package/dist/cjs-types/common/tooltip/tooltip.d.ts +3 -0
- package/dist/cjs-types/common/tooltip/tooltip.types.d.ts +17 -0
- package/dist/cjs-types/common/tree/flattenTree.d.ts +3 -0
- package/dist/cjs-types/common/tree/index.d.ts +3 -0
- package/dist/cjs-types/common/tree/tree.d.ts +4 -0
- package/dist/cjs-types/common/tree/tree.types.d.ts +67 -0
- package/dist/cjs-types/common/types/actions.types.d.ts +7 -0
- package/dist/cjs-types/common/types/baseProps.types.d.ts +29 -0
- package/dist/cjs-types/common/types/icon.types.d.ts +17 -0
- package/dist/cjs-types/common/types/slots.types.d.ts +4 -0
- package/dist/cjs-types/common/utils/activationKey.d.ts +9 -0
- package/dist/cjs-types/common/utils/interactiveTarget.d.ts +7 -0
- package/dist/cjs-types/common/utils/listNavigation.d.ts +49 -0
- package/dist/cjs-types/common/utils/mergeRefs.d.ts +12 -0
- package/dist/cjs-types/common/utils/renderIcon.d.ts +29 -0
- package/dist/cjs-types/common/utils/scrollAncestors.d.ts +2 -0
- package/dist/cjs-types/common/utils/visualViewport.d.ts +7 -0
- package/dist/cjs-types/common/virtualList/index.d.ts +2 -0
- package/dist/cjs-types/common/virtualList/useColumnResize.d.ts +59 -0
- package/dist/cjs-types/common/virtualList/useColumns.d.ts +52 -0
- package/dist/cjs-types/common/virtualList/useHeaderNavigation.d.ts +22 -0
- package/dist/cjs-types/common/virtualList/useRowDrag.d.ts +58 -0
- package/dist/cjs-types/common/virtualList/useRowNavigation.d.ts +50 -0
- package/dist/cjs-types/common/virtualList/useSelection.d.ts +24 -0
- package/dist/cjs-types/common/virtualList/useSorting.d.ts +26 -0
- package/dist/cjs-types/common/virtualList/useVirtualWindow.d.ts +36 -0
- package/dist/cjs-types/common/virtualList/virtualList.d.ts +5 -0
- package/dist/cjs-types/common/virtualList/virtualList.types.d.ts +317 -0
- package/dist/cjs-types/common/virtualList/virtualList.utils.d.ts +126 -0
- package/dist/cjs-types/common/virtualList/virtualListHeader.d.ts +35 -0
- package/dist/cjs-types/common/virtualList/virtualRow.d.ts +62 -0
- package/dist/cjs-types/common/wizard/index.d.ts +1 -0
- package/dist/cjs-types/common/wizard/wizard.d.ts +3 -0
- package/dist/cjs-types/common/wizard/wizard.types.d.ts +12 -0
- package/dist/cjs-types/hooks/useWindowSize.d.ts +6 -0
- package/dist/cjs-types/index.d.ts +154 -0
- package/dist/cjs-types/package.json +3 -0
- package/dist/cjs-types/services/formValidation/FormValidatorGroupWithForm.d.ts +18 -0
- package/dist/cjs-types/services/formValidation/index.d.ts +5 -0
- package/dist/cjs-types/services/formValidation/useFormValidatorGroup.d.ts +10 -0
- package/dist/cjs-types/services/formValidation/validatableComponent.d.ts +36 -0
- package/dist/cjs-types/services/klipy.d.ts +36 -0
- package/dist/cjs-types/services/localization.d.ts +3 -0
- package/dist/esm/common/accordion/accordion.mjs +1 -1
- package/dist/esm/common/accordion/accordion.mjs.map +1 -1
- package/dist/esm/common/accordion/accordion.module.mjs +1 -1
- package/dist/esm/common/accordion/accordion.module.mjs.map +1 -1
- package/dist/esm/common/accordion/accordion.plain.module.mjs +1 -1
- package/dist/esm/common/accordion/accordion.plain.module.mjs.map +1 -1
- package/dist/esm/common/accordion/accordion.primary.module.mjs +1 -1
- package/dist/esm/common/accordion/accordion.primary.module.mjs.map +1 -1
- package/dist/esm/common/accordion/accordion.types.mjs +1 -1
- package/dist/esm/common/accordion/accordion.types.mjs.map +1 -1
- package/dist/esm/common/actionButtons/actionButtons.mjs +1 -1
- package/dist/esm/common/actionButtons/actionButtons.mjs.map +1 -1
- package/dist/esm/common/actionButtons/actionButtons.module.mjs +1 -1
- package/dist/esm/common/actionIcon/actionIcon.mjs +1 -1
- package/dist/esm/common/actionIcon/actionIcon.mjs.map +1 -1
- package/dist/esm/common/actionIcon/actionIcon.module.mjs +1 -1
- package/dist/esm/common/alert/alert.mjs +1 -1
- package/dist/esm/common/alert/alert.mjs.map +1 -1
- package/dist/esm/common/alert/alert.module.mjs +1 -1
- package/dist/esm/common/alert/alert.types.mjs +1 -1
- package/dist/esm/common/alert/alert.types.mjs.map +1 -1
- package/dist/esm/common/animatedIcon/animatedIcon.mjs +1 -1
- package/dist/esm/common/animatedIcon/animatedIcon.mjs.map +1 -1
- package/dist/esm/common/animatedIcon/animatedIcon.module.mjs +1 -1
- package/dist/esm/common/animatedLogo/animatedLogo.mjs +1 -1
- package/dist/esm/common/animatedLogo/animatedLogo.mjs.map +1 -1
- package/dist/esm/common/animatedLogo/animatedLogo.module.mjs +1 -1
- package/dist/esm/common/animatedText/animatedText.mjs +1 -1
- package/dist/esm/common/animatedText/animatedText.mjs.map +1 -1
- package/dist/esm/common/animatedText/animatedText.module.mjs +1 -1
- package/dist/esm/common/animatedText/animatedText.types.mjs +1 -1
- package/dist/esm/common/animatedText/animatedText.types.mjs.map +1 -1
- package/dist/esm/common/avatar/avatar.mjs +1 -1
- package/dist/esm/common/avatar/avatar.mjs.map +1 -1
- package/dist/esm/common/avatar/avatar.module.mjs +1 -1
- package/dist/esm/common/avatar/avatarGroup.mjs +1 -1
- package/dist/esm/common/avatar/avatarGroup.mjs.map +1 -1
- package/dist/esm/common/badge/badge.mjs +1 -1
- package/dist/esm/common/badge/badge.mjs.map +1 -1
- package/dist/esm/common/badge/badge.module.mjs +1 -1
- package/dist/esm/common/badge/badge.types.mjs +1 -1
- package/dist/esm/common/badge/badge.types.mjs.map +1 -1
- package/dist/esm/common/bodyEnd/bodyEnd.mjs +1 -1
- package/dist/esm/common/bodyEnd/bodyEnd.mjs.map +1 -1
- package/dist/esm/common/breadcrumb/breadcrumb.mjs +1 -1
- package/dist/esm/common/breadcrumb/breadcrumb.mjs.map +1 -1
- package/dist/esm/common/breadcrumb/breadcrumb.module.mjs +1 -1
- package/dist/esm/common/button/button.mjs +1 -1
- package/dist/esm/common/button/button.mjs.map +1 -1
- package/dist/esm/common/button/button.module.mjs +1 -1
- package/dist/esm/common/button/button.types.mjs +1 -1
- package/dist/esm/common/button/button.types.mjs.map +1 -1
- package/dist/esm/common/buttonGroup/buttonGroup.mjs +1 -1
- package/dist/esm/common/buttonGroup/buttonGroup.mjs.map +1 -1
- package/dist/esm/common/buttonGroup/buttonGroup.module.mjs +1 -1
- package/dist/esm/common/buttonGroup/buttonGroup.types.mjs +1 -1
- package/dist/esm/common/buttonGroup/buttonGroup.types.mjs.map +1 -1
- package/dist/esm/common/card/Card.mjs +1 -1
- package/dist/esm/common/card/Card.mjs.map +1 -1
- package/dist/esm/common/card/CardActions.mjs +1 -1
- package/dist/esm/common/card/CardActions.mjs.map +1 -1
- package/dist/esm/common/card/CardContent.mjs +1 -1
- package/dist/esm/common/card/CardContent.mjs.map +1 -1
- package/dist/esm/common/card/CardHeader.mjs +1 -1
- package/dist/esm/common/card/CardHeader.mjs.map +1 -1
- package/dist/esm/common/card/CardMedia.mjs +1 -1
- package/dist/esm/common/card/CardMedia.mjs.map +1 -1
- package/dist/esm/common/card/card.module.mjs +1 -1
- package/dist/esm/common/card/card.module.mjs.map +1 -1
- package/dist/esm/common/card/card.types.mjs +1 -1
- package/dist/esm/common/card/card.types.mjs.map +1 -1
- package/dist/esm/common/carousel/carousel.mjs +1 -1
- package/dist/esm/common/carousel/carousel.mjs.map +1 -1
- package/dist/esm/common/carousel/carousel.module.mjs +1 -1
- package/dist/esm/common/carousel/carousel.module.mjs.map +1 -1
- package/dist/esm/common/checkbox/checkbox.mjs +1 -1
- package/dist/esm/common/checkbox/checkbox.mjs.map +1 -1
- package/dist/esm/common/checkbox/checkbox.module.mjs +1 -1
- package/dist/esm/common/checkbox/checkbox.module.mjs.map +1 -1
- package/dist/esm/common/chip/chip.mjs +1 -1
- package/dist/esm/common/chip/chip.mjs.map +1 -1
- package/dist/esm/common/chip/chip.module.mjs +1 -1
- package/dist/esm/common/chip/chip.types.mjs +1 -1
- package/dist/esm/common/chip/chip.types.mjs.map +1 -1
- package/dist/esm/common/chip/chipContainer.mjs +1 -1
- package/dist/esm/common/chip/chipContainer.mjs.map +1 -1
- package/dist/esm/common/colorPicker/colorPicker.mjs +1 -1
- package/dist/esm/common/colorPicker/colorPicker.mjs.map +1 -1
- package/dist/esm/common/colorPicker/colorPicker.module.mjs +1 -1
- package/dist/esm/common/colorPicker/colorPicker.module.mjs.map +1 -1
- package/dist/esm/common/colorPicker/toHex.mjs +1 -1
- package/dist/esm/common/colorPicker/toHex.mjs.map +1 -1
- package/dist/esm/common/configProvider/configProvider.mjs +1 -1
- package/dist/esm/common/configProvider/configProvider.mjs.map +1 -1
- package/dist/esm/common/configProvider/presentation.types.mjs +1 -1
- package/dist/esm/common/configProvider/presentation.types.mjs.map +1 -1
- package/dist/esm/common/configProvider/useComponentDefaults.mjs +1 -1
- package/dist/esm/common/configProvider/useComponentDefaults.mjs.map +1 -1
- package/dist/esm/common/configProvider/useLabels.mjs +1 -1
- package/dist/esm/common/configProvider/useLabels.mjs.map +1 -1
- package/dist/esm/common/configProvider/usePresentationDefault.mjs +1 -1
- package/dist/esm/common/configProvider/usePresentationDefault.mjs.map +1 -1
- package/dist/esm/common/confirmModal/confirmModal.mjs +1 -1
- package/dist/esm/common/confirmModal/confirmModal.mjs.map +1 -1
- package/dist/esm/common/datePicker/components/datePickerMonth/datePickerMonth.mjs +1 -1
- package/dist/esm/common/datePicker/components/datePickerMonth/datePickerMonth.mjs.map +1 -1
- package/dist/esm/common/datePicker/components/datePickerMonth/datePickerMonth.module.mjs +1 -1
- package/dist/esm/common/datePicker/dateFunctions.mjs +1 -1
- package/dist/esm/common/datePicker/dateFunctions.mjs.map +1 -1
- package/dist/esm/common/datePicker/datePicker.mjs +1 -1
- package/dist/esm/common/datePicker/datePicker.mjs.map +1 -1
- package/dist/esm/common/datePicker/datePicker.module.mjs +1 -1
- package/dist/esm/common/divider/divider.mjs +1 -1
- package/dist/esm/common/divider/divider.mjs.map +1 -1
- package/dist/esm/common/divider/divider.module.mjs +1 -1
- package/dist/esm/common/divider/divider.types.mjs +1 -1
- package/dist/esm/common/divider/divider.types.mjs.map +1 -1
- package/dist/esm/common/drawer/drawer.mjs +1 -1
- package/dist/esm/common/drawer/drawer.mjs.map +1 -1
- package/dist/esm/common/drawer/drawer.module.mjs +1 -1
- package/dist/esm/common/drawer/drawer.module.mjs.map +1 -1
- package/dist/esm/common/dropZone/dropZone.mjs +1 -1
- package/dist/esm/common/dropZone/dropZone.mjs.map +1 -1
- package/dist/esm/common/dropZone/dropZone.module.mjs +1 -1
- package/dist/esm/common/dropZone/dropZone.types.mjs +1 -1
- package/dist/esm/common/dropZone/dropZone.types.mjs.map +1 -1
- package/dist/esm/common/dropdown/dropdown.mjs +1 -1
- package/dist/esm/common/dropdown/dropdown.mjs.map +1 -1
- package/dist/esm/common/dropdown/dropdown.module.mjs +1 -1
- package/dist/esm/common/dropdown/dropdown.module.mjs.map +1 -1
- package/dist/esm/common/emptyState/emptyState.mjs +1 -1
- package/dist/esm/common/emptyState/emptyState.mjs.map +1 -1
- package/dist/esm/common/emptyState/emptyState.module.mjs +1 -1
- package/dist/esm/common/errorBoundary/errorBoundary.mjs +1 -1
- package/dist/esm/common/errorBoundary/errorBoundary.mjs.map +1 -1
- package/dist/esm/common/errorBoundary/errorBoundary.module.mjs +1 -1
- package/dist/esm/common/fab/components/fabBase/fabBase.mjs +1 -1
- package/dist/esm/common/fab/components/fabBase/fabBase.mjs.map +1 -1
- package/dist/esm/common/fab/components/fabBase/fabBase.module.mjs +1 -1
- package/dist/esm/common/fab/fab.mjs +1 -1
- package/dist/esm/common/fab/fab.mjs.map +1 -1
- package/dist/esm/common/fab/fab.module.mjs +1 -1
- package/dist/esm/common/fab/fab.module.mjs.map +1 -1
- package/dist/esm/common/flip/flip.mjs +1 -1
- package/dist/esm/common/flip/flip.mjs.map +1 -1
- package/dist/esm/common/flip/flip.module.mjs +1 -1
- package/dist/esm/common/floorPlan/floorPlan.faces.mjs +1 -1
- package/dist/esm/common/floorPlan/floorPlan.faces.mjs.map +1 -1
- package/dist/esm/common/floorPlan/floorPlan.geometry.mjs +1 -1
- package/dist/esm/common/floorPlan/floorPlan.geometry.mjs.map +1 -1
- package/dist/esm/common/floorPlan/floorPlan.graph.mjs +1 -1
- package/dist/esm/common/floorPlan/floorPlan.graph.mjs.map +1 -1
- package/dist/esm/common/floorPlan/floorPlan.hit.mjs +1 -1
- package/dist/esm/common/floorPlan/floorPlan.hit.mjs.map +1 -1
- package/dist/esm/common/floorPlan/floorPlan.json.mjs +1 -1
- package/dist/esm/common/floorPlan/floorPlan.json.mjs.map +1 -1
- package/dist/esm/common/floorPlan/floorPlan.mesh.mjs +1 -1
- package/dist/esm/common/floorPlan/floorPlan.mesh.mjs.map +1 -1
- package/dist/esm/common/floorPlan/floorPlan.path.mjs +1 -1
- package/dist/esm/common/floorPlan/floorPlan.path.mjs.map +1 -1
- package/dist/esm/common/floorPlan/floorPlan.plan.mjs +1 -1
- package/dist/esm/common/floorPlan/floorPlan.plan.mjs.map +1 -1
- package/dist/esm/common/floorPlan/floorPlan.rooms.mjs +1 -1
- package/dist/esm/common/floorPlan/floorPlan.rooms.mjs.map +1 -1
- package/dist/esm/common/floorPlan/floorPlan.snap.mjs +1 -1
- package/dist/esm/common/floorPlan/floorPlan.snap.mjs.map +1 -1
- package/dist/esm/common/floorPlan/floorPlan.triangulate.mjs +1 -1
- package/dist/esm/common/floorPlan/floorPlan.triangulate.mjs.map +1 -1
- package/dist/esm/common/floorPlan/floorPlan.types.mjs +1 -1
- package/dist/esm/common/floorPlan/floorPlan.types.mjs.map +1 -1
- package/dist/esm/common/floorPlan/legacySvg.mjs +1 -1
- package/dist/esm/common/floorPlan/legacySvg.mjs.map +1 -1
- package/dist/esm/common/hooks/useAnchorTracking.mjs +1 -1
- package/dist/esm/common/hooks/useAnchorTracking.mjs.map +1 -1
- package/dist/esm/common/hooks/useCoarsePointer.mjs +1 -1
- package/dist/esm/common/hooks/useCoarsePointer.mjs.map +1 -1
- package/dist/esm/common/hooks/useFocusBoundary.mjs +1 -1
- package/dist/esm/common/hooks/useFocusBoundary.mjs.map +1 -1
- package/dist/esm/common/hooks/useMediaQuery.mjs +1 -1
- package/dist/esm/common/hooks/useMediaQuery.mjs.map +1 -1
- package/dist/esm/common/hooks/useOverlay.mjs +1 -1
- package/dist/esm/common/hooks/useOverlay.mjs.map +1 -1
- package/dist/esm/common/hooks/useScrollEdges.mjs +2 -0
- package/dist/esm/common/hooks/useScrollEdges.mjs.map +1 -0
- package/dist/esm/common/hooks/useSheet.mjs +1 -1
- package/dist/esm/common/hooks/useSheet.mjs.map +1 -1
- package/dist/esm/common/hooks/useSwipeDismiss.mjs +1 -1
- package/dist/esm/common/hooks/useSwipeDismiss.mjs.map +1 -1
- package/dist/esm/common/hooks/useVisualViewportSize.mjs +1 -1
- package/dist/esm/common/hooks/useVisualViewportSize.mjs.map +1 -1
- package/dist/esm/common/iconPicker/iconPicker.mjs +1 -1
- package/dist/esm/common/iconPicker/iconPicker.mjs.map +1 -1
- package/dist/esm/common/iconPicker/iconPicker.module.mjs +1 -1
- package/dist/esm/common/idleManager/idleManager.mjs +1 -1
- package/dist/esm/common/idleManager/idleManager.mjs.map +1 -1
- package/dist/esm/common/infiniteBlock/useInfiniteScroll.mjs +2 -0
- package/dist/esm/common/infiniteBlock/useInfiniteScroll.mjs.map +1 -0
- package/dist/esm/common/input/input.mjs +1 -1
- package/dist/esm/common/input/input.mjs.map +1 -1
- package/dist/esm/common/input/input.module.mjs +1 -1
- package/dist/esm/common/input/input.module.mjs.map +1 -1
- package/dist/esm/common/input/input.types.mjs +1 -1
- package/dist/esm/common/input/input.types.mjs.map +1 -1
- package/dist/esm/common/inputDropdown/inputDropdown.mjs +1 -1
- package/dist/esm/common/inputDropdown/inputDropdown.mjs.map +1 -1
- package/dist/esm/common/inputDropdown/inputDropdown.module.mjs +1 -1
- package/dist/esm/common/interactableDiv/index.mjs +1 -1
- package/dist/esm/common/interactableDiv/index.mjs.map +1 -1
- package/dist/esm/common/interactableDiv/interactableDiv.mjs +1 -1
- package/dist/esm/common/interactableDiv/interactableDiv.mjs.map +1 -1
- package/dist/esm/common/interactableDiv/interactableDiv.module.mjs +1 -1
- package/dist/esm/common/kanbanBoard/KanbanBoard.mjs +1 -1
- package/dist/esm/common/kanbanBoard/KanbanBoard.mjs.map +1 -1
- package/dist/esm/common/kanbanBoard/KanbanColumn.mjs +1 -1
- package/dist/esm/common/kanbanBoard/KanbanColumn.mjs.map +1 -1
- package/dist/esm/common/kanbanBoard/KanbanItem.mjs +1 -1
- package/dist/esm/common/kanbanBoard/KanbanItem.mjs.map +1 -1
- package/dist/esm/common/kanbanBoard/kanbanBoard.module.mjs +1 -1
- package/dist/esm/common/kanbanBoard/kanbanBoard.utils.mjs +1 -1
- package/dist/esm/common/kanbanBoard/kanbanBoard.utils.mjs.map +1 -1
- package/dist/esm/common/klipyPicker/components/gifPreview/gifPreview.mjs +1 -1
- package/dist/esm/common/klipyPicker/components/gifPreview/gifPreview.mjs.map +1 -1
- package/dist/esm/common/klipyPicker/components/gifPreview/gifPreview.module.mjs +1 -1
- package/dist/esm/common/klipyPicker/components/gifPreview/gifPreview.module.mjs.map +1 -1
- package/dist/esm/common/klipyPicker/components/gifView/gifView.mjs +1 -1
- package/dist/esm/common/klipyPicker/components/gifView/gifView.mjs.map +1 -1
- package/dist/esm/common/klipyPicker/components/gifView/gifView.module.mjs +1 -1
- package/dist/esm/common/klipyPicker/components/gifView/gifView.module.mjs.map +1 -1
- package/dist/esm/common/klipyPicker/klipyPicker.mjs +1 -1
- package/dist/esm/common/klipyPicker/klipyPicker.mjs.map +1 -1
- package/dist/esm/common/klipyPicker/klipyPicker.module.mjs +1 -1
- package/dist/esm/common/loading/iconLoading/iconLoading.mjs +1 -1
- package/dist/esm/common/loading/iconLoading/iconLoading.mjs.map +1 -1
- package/dist/esm/common/loading/iconLoading/iconLoading.module.mjs +1 -1
- package/dist/esm/common/loading/iconLoading/index.mjs +1 -1
- package/dist/esm/common/loading/iconLoading/index.mjs.map +1 -1
- package/dist/esm/common/loading/spinnerLoading/index.mjs +1 -1
- package/dist/esm/common/loading/spinnerLoading/index.mjs.map +1 -1
- package/dist/esm/common/loading/spinnerLoading/spinnerLoading.mjs +1 -1
- package/dist/esm/common/loading/spinnerLoading/spinnerLoading.mjs.map +1 -1
- package/dist/esm/common/loading/spinnerLoading/spinnerLoading.module.mjs +1 -1
- package/dist/esm/common/maskedInput/mask.mjs +2 -0
- package/dist/esm/common/maskedInput/mask.mjs.map +1 -0
- package/dist/esm/common/maskedInput/maskedInput.mjs +2 -0
- package/dist/esm/common/maskedInput/maskedInput.mjs.map +1 -0
- package/dist/esm/common/menu/menu.mjs +1 -1
- package/dist/esm/common/menu/menu.mjs.map +1 -1
- package/dist/esm/common/menu/menu.module.mjs +1 -1
- package/dist/esm/common/menu/menu.types.mjs +1 -1
- package/dist/esm/common/menu/menu.types.mjs.map +1 -1
- package/dist/esm/common/modal/modal.mjs +1 -1
- package/dist/esm/common/modal/modal.mjs.map +1 -1
- package/dist/esm/common/modal/modal.module.mjs +1 -1
- package/dist/esm/common/modal/modal.module.mjs.map +1 -1
- package/dist/esm/common/multiSelect/multiSelect.mjs +1 -1
- package/dist/esm/common/multiSelect/multiSelect.mjs.map +1 -1
- package/dist/esm/common/multiSelect/multiSelect.module.mjs +1 -1
- package/dist/esm/common/multiSelect/multiSelect.module.mjs.map +1 -1
- package/dist/esm/common/numberInput/index.mjs +1 -1
- package/dist/esm/common/numberInput/index.mjs.map +1 -1
- package/dist/esm/common/numberInput/numberInput.mjs +1 -1
- package/dist/esm/common/numberInput/numberInput.mjs.map +1 -1
- package/dist/esm/common/numberInput/numberInput.module.mjs +1 -1
- package/dist/esm/common/numberInput/useStepRepeat.mjs +1 -1
- package/dist/esm/common/numberInput/useStepRepeat.mjs.map +1 -1
- package/dist/esm/common/optionPicker/optionPicker.mjs +1 -1
- package/dist/esm/common/optionPicker/optionPicker.mjs.map +1 -1
- package/dist/esm/common/optionPicker/optionPicker.module.mjs +1 -1
- package/dist/esm/common/otpInput/otpInput.mjs +1 -1
- package/dist/esm/common/otpInput/otpInput.mjs.map +1 -1
- package/dist/esm/common/otpInput/otpInput.module.mjs +1 -1
- package/dist/esm/common/otpInput/otpInput.types.mjs +1 -1
- package/dist/esm/common/otpInput/otpInput.types.mjs.map +1 -1
- package/dist/esm/common/overscroll/overscroll.mjs +1 -1
- package/dist/esm/common/overscroll/overscroll.mjs.map +1 -1
- package/dist/esm/common/overscroll/overscroll.module.mjs +1 -1
- package/dist/esm/common/pagination/pagination.mjs +1 -1
- package/dist/esm/common/pagination/pagination.mjs.map +1 -1
- package/dist/esm/common/pagination/pagination.module.mjs +1 -1
- package/dist/esm/common/planCanvas/planCanvas.mjs +1 -1
- package/dist/esm/common/planCanvas/planCanvas.mjs.map +1 -1
- package/dist/esm/common/planCanvas/planCanvas.module.mjs +1 -1
- package/dist/esm/common/popover/popover.mjs +1 -1
- package/dist/esm/common/popover/popover.mjs.map +1 -1
- package/dist/esm/common/popover/popover.module.mjs +1 -1
- package/dist/esm/common/popover/popover.types.mjs +1 -1
- package/dist/esm/common/popover/popover.types.mjs.map +1 -1
- package/dist/esm/common/popover/usePopoverPosition.mjs +1 -1
- package/dist/esm/common/popover/usePopoverPosition.mjs.map +1 -1
- package/dist/esm/common/progressBar/progressBar.mjs +1 -1
- package/dist/esm/common/progressBar/progressBar.mjs.map +1 -1
- package/dist/esm/common/progressBar/progressBar.module.mjs +1 -1
- package/dist/esm/common/progressBar/progressBar.module.mjs.map +1 -1
- package/dist/esm/common/radioGroup/radioGroup.mjs +1 -1
- package/dist/esm/common/radioGroup/radioGroup.mjs.map +1 -1
- package/dist/esm/common/radioGroup/radioGroup.module.mjs +1 -1
- package/dist/esm/common/radioGroup/radioGroup.module.mjs.map +1 -1
- package/dist/esm/common/radioGroup/radioGroup.types.mjs +1 -1
- package/dist/esm/common/radioGroup/radioGroup.types.mjs.map +1 -1
- package/dist/esm/common/rating/rating.mjs +1 -1
- package/dist/esm/common/rating/rating.mjs.map +1 -1
- package/dist/esm/common/rating/rating.module.mjs +1 -1
- package/dist/esm/common/rating/rating.module.mjs.map +1 -1
- package/dist/esm/common/revealLens/revealLens.mjs +1 -1
- package/dist/esm/common/revealLens/revealLens.mjs.map +1 -1
- package/dist/esm/common/revealLens/revealLens.module.mjs +1 -1
- package/dist/esm/common/ripple/ripple.mjs +1 -1
- package/dist/esm/common/ripple/ripple.mjs.map +1 -1
- package/dist/esm/common/ripple/ripple.module.mjs +1 -1
- package/dist/esm/common/ripple/ripple.module.mjs.map +1 -1
- package/dist/esm/common/roomDrawer/roomDrawer.mjs +1 -1
- package/dist/esm/common/roomDrawer/roomDrawer.mjs.map +1 -1
- package/dist/esm/common/roomDrawer/roomDrawer.module.mjs +1 -1
- package/dist/esm/common/roomDrawer/usePlanHistory.mjs +1 -1
- package/dist/esm/common/roomDrawer/usePlanHistory.mjs.map +1 -1
- package/dist/esm/common/roomViewer/roomViewer.mjs +1 -1
- package/dist/esm/common/roomViewer/roomViewer.mjs.map +1 -1
- package/dist/esm/common/roomViewer/roomViewer.module.mjs +1 -1
- package/dist/esm/common/scrollFade/scrollFade.mjs +2 -0
- package/dist/esm/common/scrollFade/scrollFade.mjs.map +1 -0
- package/dist/esm/common/scrollFade/scrollFade.module.mjs +2 -0
- package/dist/esm/common/scrollFade/scrollFade.module.mjs.map +1 -0
- package/dist/esm/common/scrollFade/scrollFade.types.mjs +2 -0
- package/dist/esm/common/scrollFade/scrollFade.types.mjs.map +1 -0
- package/dist/esm/common/scrollbarProvider/index.mjs +1 -1
- package/dist/esm/common/scrollbarProvider/index.mjs.map +1 -1
- package/dist/esm/common/scrollbarProvider/scrollbarProvider.mjs +1 -1
- package/dist/esm/common/scrollbarProvider/scrollbarProvider.mjs.map +1 -1
- package/dist/esm/common/scrollbarProvider/scrollbarProvider.module.mjs +1 -1
- package/dist/esm/common/searchInput/searchInput.mjs +1 -1
- package/dist/esm/common/searchInput/searchInput.mjs.map +1 -1
- package/dist/esm/common/searchInput/searchInput.module.mjs +1 -1
- package/dist/esm/common/sectionHeader/sectionHeader.mjs +1 -1
- package/dist/esm/common/sectionHeader/sectionHeader.mjs.map +1 -1
- package/dist/esm/common/sectionHeader/sectionHeader.module.mjs +1 -1
- package/dist/esm/common/sectionHeader/sectionHeader.types.mjs +1 -1
- package/dist/esm/common/sectionHeader/sectionHeader.types.mjs.map +1 -1
- package/dist/esm/common/sheetBackdrop/sheetBackdrop.mjs +1 -1
- package/dist/esm/common/sheetBackdrop/sheetBackdrop.mjs.map +1 -1
- package/dist/esm/common/skeleton/skeleton.mjs +1 -1
- package/dist/esm/common/skeleton/skeleton.mjs.map +1 -1
- package/dist/esm/common/skeleton/skeleton.module.mjs +1 -1
- package/dist/esm/common/skeleton/skeleton.types.mjs +1 -1
- package/dist/esm/common/skeleton/skeleton.types.mjs.map +1 -1
- package/dist/esm/common/slider/slider.mjs +1 -1
- package/dist/esm/common/slider/slider.mjs.map +1 -1
- package/dist/esm/common/slider/slider.module.mjs +1 -1
- package/dist/esm/common/splitButton/splitButton.mjs +1 -1
- package/dist/esm/common/splitButton/splitButton.mjs.map +1 -1
- package/dist/esm/common/splitButton/splitButton.module.mjs +1 -1
- package/dist/esm/common/stepper/stepper.mjs +1 -1
- package/dist/esm/common/stepper/stepper.mjs.map +1 -1
- package/dist/esm/common/stepper/stepper.module.mjs +1 -1
- package/dist/esm/common/stepper/stepper.types.mjs +1 -1
- package/dist/esm/common/stepper/stepper.types.mjs.map +1 -1
- package/dist/esm/common/sticky/sticky.mjs +1 -1
- package/dist/esm/common/sticky/sticky.mjs.map +1 -1
- package/dist/esm/common/sticky/sticky.module.mjs +1 -1
- package/dist/esm/common/sticky/stickyStack.mjs +1 -1
- package/dist/esm/common/sticky/stickyStack.mjs.map +1 -1
- package/dist/esm/common/styles/scrollFade.module.mjs +2 -0
- package/dist/esm/common/styles/scrollFade.module.mjs.map +1 -0
- package/dist/esm/common/styles/sheet.module.mjs +1 -1
- package/dist/esm/common/styles/sheet.module.mjs.map +1 -1
- package/dist/esm/common/switch/switch.mjs +1 -1
- package/dist/esm/common/switch/switch.mjs.map +1 -1
- package/dist/esm/common/switch/switch.module.mjs +1 -1
- package/dist/esm/common/switch/switch.module.mjs.map +1 -1
- package/dist/esm/common/tabHeader/tabHeader.mjs +1 -1
- package/dist/esm/common/tabHeader/tabHeader.mjs.map +1 -1
- package/dist/esm/common/tabHeader/tabHeader.module.mjs +1 -1
- package/dist/esm/common/textarea/textarea.mjs +1 -1
- package/dist/esm/common/textarea/textarea.mjs.map +1 -1
- package/dist/esm/common/themeProvider/defaultTheme.mjs +1 -1
- package/dist/esm/common/themeProvider/defaultTheme.mjs.map +1 -1
- package/dist/esm/common/themeProvider/lightTheme.mjs +2 -0
- package/dist/esm/common/themeProvider/lightTheme.mjs.map +1 -0
- package/dist/esm/common/themeProvider/theme.module.mjs +1 -1
- package/dist/esm/common/themeProvider/themeProvider.mjs +1 -1
- package/dist/esm/common/themeProvider/themeProvider.mjs.map +1 -1
- package/dist/esm/common/themeProvider/themeVariablesContext.mjs +1 -1
- package/dist/esm/common/themeProvider/themeVariablesContext.mjs.map +1 -1
- package/dist/esm/common/themeProvider/useTheme.mjs +1 -1
- package/dist/esm/common/themeProvider/useTheme.mjs.map +1 -1
- package/dist/esm/common/tilt/tilt.mjs +1 -1
- package/dist/esm/common/tilt/tilt.mjs.map +1 -1
- package/dist/esm/common/tilt/tilt.module.mjs +1 -1
- package/dist/esm/common/tilt/tiltMath.mjs +1 -1
- package/dist/esm/common/tilt/tiltMath.mjs.map +1 -1
- package/dist/esm/common/tiltGroup/tiltGroup.mjs +1 -1
- package/dist/esm/common/tiltGroup/tiltGroup.mjs.map +1 -1
- package/dist/esm/common/timeInput/components/clockDial/clockDial.mjs +1 -1
- package/dist/esm/common/timeInput/components/clockDial/clockDial.mjs.map +1 -1
- package/dist/esm/common/timeInput/components/clockDial/clockDial.module.mjs +1 -1
- package/dist/esm/common/timeInput/timeFunctions.mjs +1 -1
- package/dist/esm/common/timeInput/timeFunctions.mjs.map +1 -1
- package/dist/esm/common/timeInput/timeInput.mjs +1 -1
- package/dist/esm/common/timeInput/timeInput.mjs.map +1 -1
- package/dist/esm/common/timeInput/timeInput.module.mjs +1 -1
- package/dist/esm/common/timeline/timeline.mjs +1 -1
- package/dist/esm/common/timeline/timeline.mjs.map +1 -1
- package/dist/esm/common/timeline/timeline.module.mjs +1 -1
- package/dist/esm/common/timeline/timeline.types.mjs +1 -1
- package/dist/esm/common/timeline/timeline.types.mjs.map +1 -1
- package/dist/esm/common/timer/timer.chime.mjs +1 -1
- package/dist/esm/common/timer/timer.chime.mjs.map +1 -1
- package/dist/esm/common/timer/timer.mjs +1 -1
- package/dist/esm/common/timer/timer.mjs.map +1 -1
- package/dist/esm/common/timer/timer.module.mjs +1 -1
- package/dist/esm/common/toast/toast.mjs +1 -1
- package/dist/esm/common/toast/toast.mjs.map +1 -1
- package/dist/esm/common/toast/toast.module.mjs +1 -1
- package/dist/esm/common/toast/toast.module.mjs.map +1 -1
- package/dist/esm/common/toast/toastProvider.mjs +1 -1
- package/dist/esm/common/toast/toastProvider.mjs.map +1 -1
- package/dist/esm/common/toast/toastService.mjs +1 -1
- package/dist/esm/common/toast/toastService.mjs.map +1 -1
- package/dist/esm/common/tooltip/tooltip.mjs +1 -1
- package/dist/esm/common/tooltip/tooltip.mjs.map +1 -1
- package/dist/esm/common/tooltip/tooltip.module.mjs +1 -1
- package/dist/esm/common/tree/flattenTree.mjs +1 -1
- package/dist/esm/common/tree/flattenTree.mjs.map +1 -1
- package/dist/esm/common/tree/tree.mjs +1 -1
- package/dist/esm/common/tree/tree.mjs.map +1 -1
- package/dist/esm/common/tree/tree.module.mjs +1 -1
- package/dist/esm/common/tree/tree.module.mjs.map +1 -1
- package/dist/esm/common/utils/activationKey.mjs +1 -1
- package/dist/esm/common/utils/activationKey.mjs.map +1 -1
- package/dist/esm/common/utils/interactiveTarget.mjs +2 -0
- package/dist/esm/common/utils/interactiveTarget.mjs.map +1 -0
- package/dist/esm/common/utils/listNavigation.mjs +2 -0
- package/dist/esm/common/utils/listNavigation.mjs.map +1 -0
- package/dist/esm/common/utils/mergeRefs.mjs +2 -0
- package/dist/esm/common/utils/mergeRefs.mjs.map +1 -0
- package/dist/esm/common/utils/renderIcon.mjs +1 -1
- package/dist/esm/common/utils/renderIcon.mjs.map +1 -1
- package/dist/esm/common/utils/scrollAncestors.mjs +1 -1
- package/dist/esm/common/utils/scrollAncestors.mjs.map +1 -1
- package/dist/esm/common/utils/visualViewport.mjs +1 -1
- package/dist/esm/common/utils/visualViewport.mjs.map +1 -1
- package/dist/esm/common/virtualList/useColumnResize.mjs +1 -1
- package/dist/esm/common/virtualList/useColumnResize.mjs.map +1 -1
- package/dist/esm/common/virtualList/useColumns.mjs +1 -1
- package/dist/esm/common/virtualList/useColumns.mjs.map +1 -1
- package/dist/esm/common/virtualList/useHeaderNavigation.mjs +1 -1
- package/dist/esm/common/virtualList/useHeaderNavigation.mjs.map +1 -1
- package/dist/esm/common/virtualList/useRowDrag.mjs +1 -1
- package/dist/esm/common/virtualList/useRowDrag.mjs.map +1 -1
- package/dist/esm/common/virtualList/useRowNavigation.mjs +1 -1
- package/dist/esm/common/virtualList/useRowNavigation.mjs.map +1 -1
- package/dist/esm/common/virtualList/useSelection.mjs +1 -1
- package/dist/esm/common/virtualList/useSelection.mjs.map +1 -1
- package/dist/esm/common/virtualList/useSorting.mjs +1 -1
- package/dist/esm/common/virtualList/useSorting.mjs.map +1 -1
- package/dist/esm/common/virtualList/useVirtualWindow.mjs +1 -1
- package/dist/esm/common/virtualList/useVirtualWindow.mjs.map +1 -1
- package/dist/esm/common/virtualList/virtualList.mjs +1 -1
- package/dist/esm/common/virtualList/virtualList.mjs.map +1 -1
- package/dist/esm/common/virtualList/virtualList.module.mjs +1 -1
- package/dist/esm/common/virtualList/virtualList.utils.mjs +1 -1
- package/dist/esm/common/virtualList/virtualList.utils.mjs.map +1 -1
- package/dist/esm/common/virtualList/virtualListHeader.mjs +1 -1
- package/dist/esm/common/virtualList/virtualListHeader.mjs.map +1 -1
- package/dist/esm/common/virtualList/virtualRow.mjs +1 -1
- package/dist/esm/common/virtualList/virtualRow.mjs.map +1 -1
- package/dist/esm/common/wizard/wizard.mjs +1 -1
- package/dist/esm/common/wizard/wizard.mjs.map +1 -1
- package/dist/esm/common/wizard/wizard.module.mjs +1 -1
- package/dist/esm/common/wizard/wizard.module.mjs.map +1 -1
- package/dist/esm/hooks/useWindowSize.mjs +1 -1
- package/dist/esm/hooks/useWindowSize.mjs.map +1 -1
- package/dist/esm/index.mjs +1 -1
- package/dist/esm/og.png +0 -0
- package/dist/esm/services/formValidation/FormValidatorGroupWithForm.mjs +1 -1
- package/dist/esm/services/formValidation/FormValidatorGroupWithForm.mjs.map +1 -1
- package/dist/esm/services/formValidation/index.mjs +1 -1
- package/dist/esm/services/formValidation/useFormValidatorGroup.mjs +1 -1
- package/dist/esm/services/formValidation/useFormValidatorGroup.mjs.map +1 -1
- package/dist/esm/services/formValidation/validatableComponent.mjs +1 -1
- package/dist/esm/services/formValidation/validatableComponent.mjs.map +1 -1
- package/dist/esm/services/klipy.mjs +1 -1
- package/dist/esm/services/klipy.mjs.map +1 -1
- package/dist/esm/services/localization.mjs +1 -1
- package/dist/esm/services/localization.mjs.map +1 -1
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/mcp.js +21432 -56
- package/dist/og.png +0 -0
- package/dist/style.css +1 -1
- package/dist/types/common/accordion/accordion.d.ts +1 -1
- package/dist/types/common/accordion/accordion.types.d.ts +1 -1
- package/dist/types/common/accordion/index.d.ts +2 -2
- package/dist/types/common/actionButtons/actionButtons.d.ts +1 -1
- package/dist/types/common/actionButtons/actionButtons.types.d.ts +3 -3
- package/dist/types/common/actionButtons/index.d.ts +2 -2
- package/dist/types/common/actionIcon/actionIcon.d.ts +1 -1
- package/dist/types/common/actionIcon/actionIcon.types.d.ts +5 -3
- package/dist/types/common/actionIcon/index.d.ts +2 -2
- package/dist/types/common/alert/alert.d.ts +1 -1
- package/dist/types/common/alert/alert.types.d.ts +2 -2
- package/dist/types/common/alert/index.d.ts +2 -2
- package/dist/types/common/animatedIcon/animatedIcon.d.ts +1 -1
- package/dist/types/common/animatedIcon/animatedIcon.types.d.ts +1 -1
- package/dist/types/common/animatedIcon/index.d.ts +2 -2
- package/dist/types/common/animatedLogo/animatedLogo.d.ts +1 -1
- package/dist/types/common/animatedLogo/animatedLogo.types.d.ts +1 -1
- package/dist/types/common/animatedLogo/index.d.ts +2 -2
- package/dist/types/common/animatedText/animatedText.d.ts +1 -1
- package/dist/types/common/animatedText/animatedText.types.d.ts +1 -1
- package/dist/types/common/animatedText/index.d.ts +2 -2
- package/dist/types/common/avatar/avatar.d.ts +1 -1
- package/dist/types/common/avatar/avatar.types.d.ts +2 -2
- package/dist/types/common/avatar/avatarGroup.d.ts +1 -1
- package/dist/types/common/avatar/index.d.ts +3 -3
- package/dist/types/common/badge/badge.d.ts +1 -1
- package/dist/types/common/badge/badge.types.d.ts +1 -1
- package/dist/types/common/badge/index.d.ts +2 -2
- package/dist/types/common/bodyEnd/bodyEnd.d.ts +1 -1
- package/dist/types/common/bodyEnd/index.d.ts +2 -2
- package/dist/types/common/breadcrumb/breadcrumb.d.ts +1 -1
- package/dist/types/common/breadcrumb/breadcrumb.types.d.ts +2 -2
- package/dist/types/common/breadcrumb/index.d.ts +2 -2
- package/dist/types/common/button/button.d.ts +1 -1
- package/dist/types/common/button/button.types.d.ts +2 -2
- package/dist/types/common/button/index.d.ts +2 -2
- package/dist/types/common/buttonGroup/buttonGroup.d.ts +1 -1
- package/dist/types/common/buttonGroup/buttonGroup.types.d.ts +1 -1
- package/dist/types/common/buttonGroup/index.d.ts +2 -2
- package/dist/types/common/card/Card.d.ts +1 -1
- package/dist/types/common/card/CardActions.d.ts +1 -1
- package/dist/types/common/card/CardContent.d.ts +1 -1
- package/dist/types/common/card/CardHeader.d.ts +1 -1
- package/dist/types/common/card/CardMedia.d.ts +1 -1
- package/dist/types/common/card/card.types.d.ts +6 -4
- package/dist/types/common/card/index.d.ts +6 -6
- package/dist/types/common/carousel/carousel.d.ts +1 -1
- package/dist/types/common/carousel/carousel.types.d.ts +1 -1
- package/dist/types/common/carousel/index.d.ts +2 -2
- package/dist/types/common/checkbox/checkbox.d.ts +1 -1
- package/dist/types/common/checkbox/checkbox.types.d.ts +5 -3
- package/dist/types/common/checkbox/index.d.ts +2 -2
- package/dist/types/common/chip/chip.d.ts +1 -1
- package/dist/types/common/chip/chip.types.d.ts +1 -1
- package/dist/types/common/chip/chipContainer.d.ts +1 -1
- package/dist/types/common/chip/index.d.ts +3 -3
- package/dist/types/common/colorPicker/colorPicker.d.ts +1 -1
- package/dist/types/common/colorPicker/colorPicker.types.d.ts +5 -1
- package/dist/types/common/colorPicker/index.d.ts +2 -2
- package/dist/types/common/configProvider/configProvider.d.ts +2 -2
- package/dist/types/common/configProvider/configProvider.types.d.ts +47 -43
- package/dist/types/common/configProvider/index.d.ts +6 -6
- package/dist/types/common/configProvider/useComponentDefaults.d.ts +1 -1
- package/dist/types/common/configProvider/useLabels.d.ts +1 -1
- package/dist/types/common/configProvider/usePresentationDefault.d.ts +1 -1
- package/dist/types/common/confirmModal/confirmModal.d.ts +1 -1
- package/dist/types/common/confirmModal/confirmModal.types.d.ts +2 -2
- package/dist/types/common/confirmModal/index.d.ts +2 -2
- package/dist/types/common/datePicker/components/datePickerMonth/datePickerMonth.d.ts +1 -1
- package/dist/types/common/datePicker/components/datePickerMonth/index.d.ts +1 -1
- package/dist/types/common/datePicker/datePicker.d.ts +1 -1
- package/dist/types/common/datePicker/datePicker.types.d.ts +2 -2
- package/dist/types/common/datePicker/index.d.ts +2 -2
- package/dist/types/common/divider/divider.d.ts +1 -1
- package/dist/types/common/divider/divider.types.d.ts +1 -1
- package/dist/types/common/divider/index.d.ts +2 -2
- package/dist/types/common/drawer/drawer.d.ts +1 -1
- package/dist/types/common/drawer/drawer.types.d.ts +1 -1
- package/dist/types/common/drawer/index.d.ts +2 -2
- package/dist/types/common/dropZone/dropZone.d.ts +1 -1
- package/dist/types/common/dropZone/dropZone.types.d.ts +1 -1
- package/dist/types/common/dropZone/index.d.ts +2 -2
- package/dist/types/common/dropdown/dropdown.d.ts +1 -1
- package/dist/types/common/dropdown/dropdown.types.d.ts +3 -3
- package/dist/types/common/dropdown/index.d.ts +2 -2
- package/dist/types/common/emptyState/emptyState.d.ts +1 -1
- package/dist/types/common/emptyState/emptyState.types.d.ts +2 -2
- package/dist/types/common/emptyState/index.d.ts +2 -2
- package/dist/types/common/errorBoundary/errorBoundary.d.ts +1 -1
- package/dist/types/common/errorBoundary/errorBoundary.types.d.ts +1 -1
- package/dist/types/common/errorBoundary/index.d.ts +2 -2
- package/dist/types/common/fab/components/fabBase/fabBase.d.ts +1 -1
- package/dist/types/common/fab/components/fabBase/fabBase.types.d.ts +1 -1
- package/dist/types/common/fab/components/fabBase/index.d.ts +1 -1
- package/dist/types/common/fab/fab.d.ts +1 -1
- package/dist/types/common/fab/fab.types.d.ts +2 -2
- package/dist/types/common/fab/index.d.ts +2 -2
- package/dist/types/common/flip/flip.d.ts +2 -2
- package/dist/types/common/flip/flip.types.d.ts +4 -2
- package/dist/types/common/flip/index.d.ts +2 -2
- package/dist/types/common/floorPlan/floorPlan.faces.d.ts +2 -2
- package/dist/types/common/floorPlan/floorPlan.fixtures.d.ts +1 -1
- package/dist/types/common/floorPlan/floorPlan.geometry.d.ts +1 -1
- package/dist/types/common/floorPlan/floorPlan.graph.d.ts +1 -1
- package/dist/types/common/floorPlan/floorPlan.hit.d.ts +1 -1
- package/dist/types/common/floorPlan/floorPlan.json.d.ts +1 -1
- package/dist/types/common/floorPlan/floorPlan.mesh.d.ts +1 -1
- package/dist/types/common/floorPlan/floorPlan.path.d.ts +1 -1
- package/dist/types/common/floorPlan/floorPlan.plan.d.ts +1 -1
- package/dist/types/common/floorPlan/floorPlan.rooms.d.ts +1 -1
- package/dist/types/common/floorPlan/floorPlan.snap.d.ts +1 -1
- package/dist/types/common/floorPlan/floorPlan.triangulate.d.ts +1 -1
- package/dist/types/common/floorPlan/index.d.ts +22 -22
- package/dist/types/common/floorPlan/legacySvg.d.ts +2 -2
- package/dist/types/common/hooks/useScrollEdges.d.ts +18 -0
- package/dist/types/common/hooks/useSheet.d.ts +1 -1
- package/dist/types/common/iconPicker/iconPicker.d.ts +1 -1
- package/dist/types/common/iconPicker/iconPicker.types.d.ts +2 -2
- package/dist/types/common/iconPicker/index.d.ts +2 -1
- package/dist/types/common/idleManager/idleManager.d.ts +1 -1
- package/dist/types/common/idleManager/index.d.ts +2 -1
- package/dist/types/common/infiniteBlock/useInfiniteScroll.d.ts +5 -0
- package/dist/types/common/input/index.d.ts +2 -2
- package/dist/types/common/input/input.d.ts +1 -1
- package/dist/types/common/input/input.types.d.ts +7 -2
- package/dist/types/common/inputDropdown/index.d.ts +2 -1
- package/dist/types/common/inputDropdown/inputDropdown.d.ts +1 -1
- package/dist/types/common/inputDropdown/inputDropdown.types.d.ts +2 -2
- package/dist/types/common/interactableDiv/index.d.ts +1 -1
- package/dist/types/common/interactableDiv/interactableDiv.d.ts +4 -3
- package/dist/types/common/kanbanBoard/KanbanBoard.d.ts +1 -1
- package/dist/types/common/kanbanBoard/KanbanColumn.d.ts +1 -1
- package/dist/types/common/kanbanBoard/KanbanItem.d.ts +1 -1
- package/dist/types/common/kanbanBoard/index.d.ts +3 -3
- package/dist/types/common/kanbanBoard/kanbanBoard.types.d.ts +1 -1
- package/dist/types/common/kanbanBoard/kanbanBoard.utils.d.ts +1 -1
- package/dist/types/common/klipyPicker/components/gifPreview/gifPreview.d.ts +1 -1
- package/dist/types/common/klipyPicker/components/gifPreview/gifPreview.types.d.ts +1 -1
- package/dist/types/common/klipyPicker/components/gifPreview/index.d.ts +1 -1
- package/dist/types/common/klipyPicker/components/gifView/gifView.d.ts +1 -1
- package/dist/types/common/klipyPicker/components/gifView/index.d.ts +1 -1
- package/dist/types/common/klipyPicker/index.d.ts +2 -2
- package/dist/types/common/klipyPicker/klipyPicker.d.ts +1 -1
- package/dist/types/common/klipyPicker/klipyPicker.types.d.ts +1 -1
- package/dist/types/common/loading/index.d.ts +2 -2
- package/dist/types/common/loading/spinnerLoading/index.d.ts +1 -1
- package/dist/types/common/loading/spinnerLoading/spinnerLoading.d.ts +0 -5
- package/dist/types/common/maskedInput/index.d.ts +2 -0
- package/dist/types/common/maskedInput/mask.d.ts +48 -0
- package/dist/types/common/maskedInput/maskedInput.d.ts +13 -0
- package/dist/types/common/maskedInput/maskedInput.types.d.ts +38 -0
- package/dist/types/common/menu/index.d.ts +2 -2
- package/dist/types/common/menu/menu.d.ts +1 -1
- package/dist/types/common/menu/menu.types.d.ts +4 -4
- package/dist/types/common/modal/index.d.ts +2 -2
- package/dist/types/common/modal/modal.d.ts +1 -1
- package/dist/types/common/modal/modal.types.d.ts +6 -3
- package/dist/types/common/multiSelect/index.d.ts +2 -2
- package/dist/types/common/multiSelect/multiSelect.d.ts +1 -1
- package/dist/types/common/multiSelect/multiSelect.types.d.ts +3 -3
- package/dist/types/common/numberInput/index.d.ts +2 -2
- package/dist/types/common/numberInput/numberInput.d.ts +2 -2
- package/dist/types/common/numberInput/numberInput.types.d.ts +4 -2
- package/dist/types/common/optionPicker/index.d.ts +2 -2
- package/dist/types/common/optionPicker/optionPicker.d.ts +1 -1
- package/dist/types/common/optionPicker/optionPicker.types.d.ts +1 -1
- package/dist/types/common/otpInput/index.d.ts +2 -2
- package/dist/types/common/otpInput/otpInput.d.ts +1 -1
- package/dist/types/common/otpInput/otpInput.types.d.ts +4 -2
- package/dist/types/common/overscroll/index.d.ts +2 -2
- package/dist/types/common/overscroll/overscroll.d.ts +1 -1
- package/dist/types/common/pagination/index.d.ts +2 -2
- package/dist/types/common/pagination/pagination.d.ts +1 -1
- package/dist/types/common/pagination/pagination.types.d.ts +2 -2
- package/dist/types/common/planCanvas/index.d.ts +2 -2
- package/dist/types/common/planCanvas/planCanvas.d.ts +2 -2
- package/dist/types/common/planCanvas/planCanvas.types.d.ts +5 -3
- package/dist/types/common/popover/index.d.ts +2 -2
- package/dist/types/common/popover/popover.d.ts +1 -1
- package/dist/types/common/popover/popover.types.d.ts +2 -2
- package/dist/types/common/popover/usePopoverPosition.d.ts +1 -1
- package/dist/types/common/progressBar/index.d.ts +2 -2
- package/dist/types/common/progressBar/progressBar.d.ts +1 -1
- package/dist/types/common/progressBar/progressBar.types.d.ts +1 -1
- package/dist/types/common/radioGroup/index.d.ts +2 -2
- package/dist/types/common/radioGroup/radioGroup.d.ts +1 -1
- package/dist/types/common/radioGroup/radioGroup.types.d.ts +3 -3
- package/dist/types/common/rating/index.d.ts +2 -2
- package/dist/types/common/rating/rating.d.ts +1 -1
- package/dist/types/common/rating/rating.types.d.ts +2 -2
- package/dist/types/common/revealLens/index.d.ts +2 -2
- package/dist/types/common/revealLens/revealLens.d.ts +1 -1
- package/dist/types/common/revealLens/revealLens.types.d.ts +1 -1
- package/dist/types/common/ripple/index.d.ts +2 -2
- package/dist/types/common/ripple/ripple.d.ts +2 -2
- package/dist/types/common/ripple/ripple.types.d.ts +2 -1
- package/dist/types/common/roomDrawer/index.d.ts +2 -2
- package/dist/types/common/roomDrawer/roomDrawer.d.ts +2 -2
- package/dist/types/common/roomDrawer/roomDrawer.types.d.ts +6 -4
- package/dist/types/common/roomDrawer/usePlanHistory.d.ts +2 -2
- package/dist/types/common/roomViewer/index.d.ts +2 -2
- package/dist/types/common/roomViewer/roomViewer.d.ts +2 -2
- package/dist/types/common/roomViewer/roomViewer.types.d.ts +6 -4
- package/dist/types/common/scrollFade/index.d.ts +2 -0
- package/dist/types/common/scrollFade/scrollFade.d.ts +4 -0
- package/dist/types/common/scrollFade/scrollFade.types.d.ts +20 -0
- package/dist/types/common/scrollbarProvider/index.d.ts +1 -1
- package/dist/types/common/searchInput/index.d.ts +2 -2
- package/dist/types/common/searchInput/searchInput.d.ts +2 -2
- package/dist/types/common/searchInput/searchInput.types.d.ts +4 -1
- package/dist/types/common/sectionHeader/index.d.ts +2 -2
- package/dist/types/common/sectionHeader/sectionHeader.d.ts +1 -1
- package/dist/types/common/sectionHeader/sectionHeader.types.d.ts +3 -3
- package/dist/types/common/sheetBackdrop/index.d.ts +2 -2
- package/dist/types/common/sheetBackdrop/sheetBackdrop.d.ts +1 -1
- package/dist/types/common/skeleton/index.d.ts +2 -2
- package/dist/types/common/skeleton/skeleton.d.ts +1 -1
- package/dist/types/common/skeleton/skeleton.types.d.ts +1 -1
- package/dist/types/common/slider/index.d.ts +2 -2
- package/dist/types/common/slider/slider.d.ts +1 -1
- package/dist/types/common/slider/slider.types.d.ts +2 -2
- package/dist/types/common/splitButton/index.d.ts +2 -2
- package/dist/types/common/splitButton/splitButton.d.ts +1 -1
- package/dist/types/common/splitButton/splitButton.types.d.ts +4 -4
- package/dist/types/common/stepper/index.d.ts +2 -2
- package/dist/types/common/stepper/stepper.d.ts +1 -1
- package/dist/types/common/stepper/stepper.types.d.ts +2 -2
- package/dist/types/common/sticky/index.d.ts +1 -1
- package/dist/types/common/sticky/sticky.d.ts +1 -1
- package/dist/types/common/sticky/sticky.types.d.ts +1 -1
- package/dist/types/common/switch/index.d.ts +2 -2
- package/dist/types/common/switch/switch.d.ts +1 -1
- package/dist/types/common/switch/switch.types.d.ts +5 -3
- package/dist/types/common/tabHeader/index.d.ts +2 -2
- package/dist/types/common/tabHeader/tabHeader.d.ts +1 -1
- package/dist/types/common/tabHeader/tabHeader.types.d.ts +2 -2
- package/dist/types/common/textarea/index.d.ts +2 -2
- package/dist/types/common/textarea/textarea.d.ts +1 -1
- package/dist/types/common/textarea/textarea.types.d.ts +1 -1
- package/dist/types/common/themeProvider/defaultTheme.d.ts +1 -1
- package/dist/types/common/themeProvider/index.d.ts +4 -3
- package/dist/types/common/themeProvider/lightTheme.d.ts +13 -0
- package/dist/types/common/themeProvider/theme.types.d.ts +28 -0
- package/dist/types/common/themeProvider/themeProvider.d.ts +1 -1
- package/dist/types/common/tilt/index.d.ts +4 -4
- package/dist/types/common/tilt/tilt.d.ts +2 -2
- package/dist/types/common/tilt/tilt.types.d.ts +5 -3
- package/dist/types/common/tiltGroup/index.d.ts +3 -3
- package/dist/types/common/tiltGroup/tiltGroup.d.ts +1 -1
- package/dist/types/common/tiltGroup/tiltGroup.types.d.ts +1 -1
- package/dist/types/common/timeInput/components/clockDial/clockDial.d.ts +1 -1
- package/dist/types/common/timeInput/components/clockDial/clockDial.types.d.ts +3 -3
- package/dist/types/common/timeInput/components/clockDial/index.d.ts +1 -1
- package/dist/types/common/timeInput/index.d.ts +1 -1
- package/dist/types/common/timeInput/timeInput.d.ts +1 -1
- package/dist/types/common/timeInput/timeInput.types.d.ts +2 -2
- package/dist/types/common/timeline/index.d.ts +2 -2
- package/dist/types/common/timeline/timeline.d.ts +1 -1
- package/dist/types/common/timeline/timeline.types.d.ts +2 -2
- package/dist/types/common/timer/index.d.ts +2 -2
- package/dist/types/common/timer/timer.d.ts +2 -2
- package/dist/types/common/timer/timer.types.d.ts +5 -3
- package/dist/types/common/toast/index.d.ts +3 -3
- package/dist/types/common/toast/toast.d.ts +1 -1
- package/dist/types/common/toast/toast.types.d.ts +1 -1
- package/dist/types/common/toast/toastProvider.d.ts +1 -1
- package/dist/types/common/toast/toastService.d.ts +1 -1
- package/dist/types/common/tooltip/index.d.ts +2 -2
- package/dist/types/common/tooltip/tooltip.d.ts +2 -2
- package/dist/types/common/tooltip/tooltip.types.d.ts +7 -0
- package/dist/types/common/tree/flattenTree.d.ts +1 -1
- package/dist/types/common/tree/index.d.ts +3 -3
- package/dist/types/common/tree/tree.d.ts +1 -1
- package/dist/types/common/tree/tree.types.d.ts +2 -2
- package/dist/types/common/types/actions.types.d.ts +1 -1
- package/dist/types/common/types/baseProps.types.d.ts +6 -0
- package/dist/types/common/types/slots.types.d.ts +1 -1
- package/dist/types/common/utils/interactiveTarget.d.ts +7 -0
- package/dist/types/common/utils/listNavigation.d.ts +49 -0
- package/dist/types/common/utils/mergeRefs.d.ts +12 -0
- package/dist/types/common/utils/renderIcon.d.ts +1 -1
- package/dist/types/common/virtualList/index.d.ts +2 -2
- package/dist/types/common/virtualList/useColumnResize.d.ts +1 -1
- package/dist/types/common/virtualList/useColumns.d.ts +1 -1
- package/dist/types/common/virtualList/useRowDrag.d.ts +1 -1
- package/dist/types/common/virtualList/useRowNavigation.d.ts +1 -1
- package/dist/types/common/virtualList/useSorting.d.ts +1 -1
- package/dist/types/common/virtualList/useVirtualWindow.d.ts +1 -1
- package/dist/types/common/virtualList/virtualList.d.ts +3 -5
- package/dist/types/common/virtualList/virtualList.types.d.ts +4 -2
- package/dist/types/common/virtualList/virtualList.utils.d.ts +1 -1
- package/dist/types/common/virtualList/virtualListHeader.d.ts +4 -4
- package/dist/types/common/virtualList/virtualRow.d.ts +1 -1
- package/dist/types/common/wizard/index.d.ts +1 -1
- package/dist/types/common/wizard/wizard.d.ts +1 -1
- package/dist/types/common/wizard/wizard.types.d.ts +1 -1
- package/dist/types/index.d.ts +153 -153
- package/dist/types/services/formValidation/index.d.ts +3 -3
- package/dist/types/services/formValidation/useFormValidatorGroup.d.ts +1 -1
- package/docs/Accordion.md +9 -0
- package/docs/ActionIcon.md +3 -0
- package/docs/CLAUDE.md +123 -193
- package/docs/Card.md +2 -1
- package/docs/Checkbox.md +1 -0
- package/docs/ColorPicker.md +12 -2
- package/docs/Divider.md +2 -0
- package/docs/Dropdown.md +20 -0
- package/docs/IdleManager.md +38 -8
- package/docs/Input.md +1 -0
- package/docs/InputDropdown.md +11 -0
- package/docs/InteractableDiv.md +7 -1
- package/docs/KlipyPicker.md +2 -2
- package/docs/Loading.md +3 -1
- package/docs/Menu.md +2 -0
- package/docs/Modal.md +34 -10
- package/docs/MultiSelect.md +2 -2
- package/docs/NumberInput.md +1 -0
- package/docs/OtpInput.md +1 -0
- package/docs/Pagination.md +1 -1
- package/docs/Popover.md +2 -0
- package/docs/RadioGroup.md +1 -1
- package/docs/Rating.md +2 -0
- package/docs/Ripple.md +3 -0
- package/docs/RoomViewer.md +3 -5
- package/docs/ScrollFade.md +77 -0
- package/docs/ScrollbarProvider.md +2 -0
- package/docs/SearchInput.md +1 -0
- package/docs/Slider.md +1 -1
- package/docs/Switch.md +1 -0
- package/docs/Textarea.md +1 -0
- package/docs/ThemeProvider.md +30 -1
- package/docs/Timer.md +1 -1
- package/docs/Tooltip.md +23 -1
- package/docs/Wizard.md +1 -1
- package/package.json +39 -16
- package/dist/esm/common/infiniteBlock/infiniteBlock.mjs +0 -2
- package/dist/esm/common/infiniteBlock/infiniteBlock.mjs.map +0 -1
- package/dist/esm/common/infiniteBlock/infiniteBlock.module.mjs +0 -2
- package/dist/esm/common/infiniteBlock/infiniteBlock.module.mjs.map +0 -1
- package/dist/types/common/infiniteBlock/index.d.ts +0 -1
- package/dist/types/common/infiniteBlock/infiniteBlock.d.ts +0 -4
- package/dist/types/common/infiniteBlock/infiniteBlock.types.d.ts +0 -13
- package/docs/Icon.md +0 -27
- package/docs/InfiniteBlock.md +0 -23
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function e(e,t,n,r=0){let i=e.length,a=Array(i+1);a[0]=0;for(let o=0;o<i;o++){let s=o<i-1?r:0;a[o+1]=a[o]+(t.get(e[o])??n)+s}return{offsets:a,totalHeight:a[i]}}function t(e,t,n){if(n<=0)return 0;let r=0,i=n-1;for(;r<i;){let n=r+i>>1;e[n+1]<=t?r=n+1:i=n}return r}function n(e,n,r,i,a){if(a===0)return{startIndex:0,endIndex:-1};let o=t(e,n,a),s=o;for(;s<a&&e[s]<n+r;)s++;return{startIndex:Math.max(0,o-i),endIndex:Math.min(a-1,s+i-1)}}function r(e,t,n,r,i){if(e===-1||e===t)return null;let a=r+i/2;return(t>e?n>=a:n<=a)?t:null}function i(e,t,n,r){if(n<=0)return`before`;let i=(e-t)/n;return r?i<1/3?`before`:i>2/3?`after`:`inside`:i<.5?`before`:`after`}function a(e,t){let n=t[e],r=e+1;for(;r<t.length&&t[r]>n;)r++;return r-1}function o(e,t){return e.length===0?`1fr`:e.map(e=>{switch(e.width.type){case`fixed`:return`${e.width.px}px`;case`flex`:return`${e.width.weight??1}fr`;case`fit`:{let n=t?.[e.key];return n==null?`fit-content(100%)`:`${n}px`}}}).join(` `)}var s=`a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])`,c=`data-vl-parked`,l=`${s}, [${c}]`;function u(e){let t=e.scrollWidth>e.clientWidth,n=e.scrollWidth;if(!t&&!e.firstElementChild)return n;let r=getComputedStyle(e),i=parseFloat(r.paddingLeft)||0,a=parseFloat(r.paddingRight)||0;if(t&&(n+=a),e.firstElementChild&&!t&&e.scrollWidth<=i+a+1){let t=1/0,r=-1/0;if(e.querySelectorAll(`*`).forEach(e=>{let n=e.getBoundingClientRect();n.left<t&&(t=n.left),n.right>r&&(r=n.right)}),r>t){let e=Math.ceil(r-t)+i+a;e>n&&(n=e)}}return n}function d(e){return`[data-col-key="${e.replace(/["\\]/g,`\\$&`)}"]`}function f(e){return`--vl-col-${e.replace(/[^a-zA-Z0-9_-]/g,`_`)}`}function p(e){return e.width.type===`fixed`?e.width.px:e.width.type===`fit`?160:160*(e.width.weight??1)}function m(e){return e.length===0?`1fr`:e.map(e=>`var(${f(e.key)}, 160px)`).join(` `)}var h=`ahroweui:virtuallist:columns:`;function g(e){if(!e||typeof window>`u`)return null;try{let t=window.localStorage.getItem(h+e);if(!t)return null;let n=JSON.parse(t);if(n&&Array.isArray(n.visible)&&Array.isArray(n.known)){let e={};if(n.widths&&typeof n.widths==`object`)for(let[t,r]of Object.entries(n.widths))typeof r==`number`&&Number.isFinite(r)&&r>0&&(e[t]=r);return{visible:n.visible.filter(e=>typeof e==`string`),known:n.known.filter(e=>typeof e==`string`),widths:e}}}catch{}return null}function _(e,t){return e.lockVisible?!0:t&&t.known.includes(e.key)?t.visible.includes(e.key):!e.defaultHidden}var v;function y(){return v??=new Intl.Collator(void 0,{numeric:!0,sensitivity:`base`}),v}function b(e){return e==null||typeof e==`number`&&Number.isNaN(e)}function x(e,t){let n=e instanceof Date?e.getTime():typeof e==`boolean`?Number(e):e,r=t instanceof Date?t.getTime():typeof t==`boolean`?Number(t):t;return typeof n==`string`||typeof r==`string`?y().compare(String(n),String(r)):n<r?-1:+(n>r)}function S(e){return e.sortValue!=null||e.compare!=null||e.sortable===!0}function C(e,t){return!e||e.key!==t?{key:t,direction:`asc`}:e.direction===`asc`?{key:t,direction:`desc`}:null}function w(e,t,n){if(!t||!n)return e;let r=n.find(e=>e.key===t.key);if(!r||r.compare==null&&r.sortValue==null)return e;let i=t.direction===`asc`?1:-1,{compare:a,sortValue:o}=r,s=e.map((e,t)=>({item:e,index:t}));return s.sort((e,t)=>{let n;if(a)n=i*a(e.item,t.item);else{let r=o(e.item),a=o(t.item),s=b(r),c=b(a);n=s||c?s===c?0:s?1:-1:i*x(r,a)}return n===0?e.index-t.index:n}),s.map(e=>e.item)}export{h as COLUMN_STORAGE_PREFIX,l as ROW_ENTER_SELECTOR,s as ROW_FOCUSABLE_SELECTOR,c as ROW_PARKED_ATTRIBUTE,o as buildColumnTemplate,m as buildFrozenTemplate,e as buildOffsets,d as columnCellSelector,f as columnWidthVar,x as compareSortValues,t as findStartIndex,n as getVisibleRange,_ as isColumnInitiallyVisible,S as isColumnSortable,b as isEmptySortValue,a as lastDescendantIndex,g as loadPersistedColumns,u as measureCellWidth,C as nextSort,p as resolveFrozenWidth,r as resolveReorderTarget,i as resolveTreeDropTarget,w as sortItems};
|
|
1
|
+
"use client";function e(e,t,n,r=0){let i=e.length,a=Array(i+1);a[0]=0;for(let o=0;o<i;o++){let s=o<i-1?r:0;a[o+1]=a[o]+(t.get(e[o])??n)+s}return{offsets:a,totalHeight:a[i]}}function t(e,t,n){if(n<=0)return 0;let r=0,i=n-1;for(;r<i;){let n=r+i>>1;e[n+1]<=t?r=n+1:i=n}return r}function n(e,n,r,i,a){if(a===0)return{startIndex:0,endIndex:-1};let o=t(e,n,a),s=o;for(;s<a&&e[s]<n+r;)s++;return{startIndex:Math.max(0,o-i),endIndex:Math.min(a-1,s+i-1)}}function r(e,t,n,r,i){if(e===-1||e===t)return null;let a=r+i/2;return(t>e?n>=a:n<=a)?t:null}function i(e,t,n,r){if(n<=0)return`before`;let i=(e-t)/n;return r?i<1/3?`before`:i>2/3?`after`:`inside`:i<.5?`before`:`after`}function a(e,t){let n=t[e],r=e+1;for(;r<t.length&&t[r]>n;)r++;return r-1}function o(e,t){return e.length===0?`1fr`:e.map(e=>{switch(e.width.type){case`fixed`:return`${e.width.px}px`;case`flex`:return`${e.width.weight??1}fr`;case`fit`:{let n=t?.[e.key];return n==null?`fit-content(100%)`:`${n}px`}}}).join(` `)}var s=`a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])`,c=`data-vl-parked`,l=`${s}, [${c}]`;function u(e){let t=e.scrollWidth>e.clientWidth,n=e.scrollWidth;if(!t&&!e.firstElementChild)return n;let r=getComputedStyle(e),i=parseFloat(r.paddingLeft)||0,a=parseFloat(r.paddingRight)||0;if(t&&(n+=a),e.firstElementChild&&!t&&e.scrollWidth<=i+a+1){let t=1/0,r=-1/0;if(e.querySelectorAll(`*`).forEach(e=>{let n=e.getBoundingClientRect();n.left<t&&(t=n.left),n.right>r&&(r=n.right)}),r>t){let e=Math.ceil(r-t)+i+a;e>n&&(n=e)}}return n}function d(e){return`[data-col-key="${e.replace(/["\\]/g,`\\$&`)}"]`}function f(e){return`--vl-col-${e.replace(/[^a-zA-Z0-9_-]/g,`_`)}`}function p(e){return e.width.type===`fixed`?e.width.px:e.width.type===`fit`?160:160*(e.width.weight??1)}function m(e){return e.length===0?`1fr`:e.map(e=>`var(${f(e.key)}, 160px)`).join(` `)}var h=`ahroweui:virtuallist:columns:`;function g(e){if(!e||typeof window>`u`)return null;try{let t=window.localStorage.getItem(h+e);if(!t)return null;let n=JSON.parse(t);if(n&&Array.isArray(n.visible)&&Array.isArray(n.known)){let e={};if(n.widths&&typeof n.widths==`object`)for(let[t,r]of Object.entries(n.widths))typeof r==`number`&&Number.isFinite(r)&&r>0&&(e[t]=r);return{visible:n.visible.filter(e=>typeof e==`string`),known:n.known.filter(e=>typeof e==`string`),widths:e}}}catch{}return null}function _(e,t){return e.lockVisible?!0:t&&t.known.includes(e.key)?t.visible.includes(e.key):!e.defaultHidden}var v;function y(){return v??=new Intl.Collator(void 0,{numeric:!0,sensitivity:`base`}),v}function b(e){return e==null||typeof e==`number`&&Number.isNaN(e)}function x(e,t){let n=e instanceof Date?e.getTime():typeof e==`boolean`?Number(e):e,r=t instanceof Date?t.getTime():typeof t==`boolean`?Number(t):t;return typeof n==`string`||typeof r==`string`?y().compare(String(n),String(r)):n<r?-1:+(n>r)}function S(e){return e.sortValue!=null||e.compare!=null||e.sortable===!0}function C(e,t){return!e||e.key!==t?{key:t,direction:`asc`}:e.direction===`asc`?{key:t,direction:`desc`}:null}function w(e,t,n){if(!t||!n)return e;let r=n.find(e=>e.key===t.key);if(!r||r.compare==null&&r.sortValue==null)return e;let i=t.direction===`asc`?1:-1,{compare:a,sortValue:o}=r,s=e.map((e,t)=>({item:e,index:t}));return s.sort((e,t)=>{let n;if(a)n=i*a(e.item,t.item);else{let r=o(e.item),a=o(t.item),s=b(r),c=b(a);n=s||c?s===c?0:s?1:-1:i*x(r,a)}return n===0?e.index-t.index:n}),s.map(e=>e.item)}export{h as COLUMN_STORAGE_PREFIX,l as ROW_ENTER_SELECTOR,s as ROW_FOCUSABLE_SELECTOR,c as ROW_PARKED_ATTRIBUTE,o as buildColumnTemplate,m as buildFrozenTemplate,e as buildOffsets,d as columnCellSelector,f as columnWidthVar,x as compareSortValues,t as findStartIndex,n as getVisibleRange,_ as isColumnInitiallyVisible,S as isColumnSortable,b as isEmptySortValue,a as lastDescendantIndex,g as loadPersistedColumns,u as measureCellWidth,C as nextSort,p as resolveFrozenWidth,r as resolveReorderTarget,i as resolveTreeDropTarget,w as sortItems};
|
|
2
2
|
//# sourceMappingURL=virtualList.utils.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtualList.utils.mjs","names":[],"sources":["../../../../package/common/virtualList/virtualList.utils.ts"],"sourcesContent":["import type { ColumnWidthSpec, SortValue, VirtualListColumn, VirtualListSort } from './virtualList.types';\n\n// ─── Layout / windowing math ──────────────────────────────────────────────────\n\nexport function buildOffsets(\n keys: (string | number)[],\n heightsMap: Map<string | number, number>,\n estimatedRowHeight: number,\n rowGap = 0,\n): { offsets: number[]; totalHeight: number } {\n const itemCount = keys.length;\n const offsets = new Array<number>(itemCount + 1);\n offsets[0] = 0;\n for (let i = 0; i < itemCount; i++) {\n const gap = i < itemCount - 1 ? rowGap : 0;\n // Heights are cached by item key, not index, so a measured row keeps its\n // height across reorders/filters instead of inheriting its neighbour's.\n offsets[i + 1] = offsets[i] + (heightsMap.get(keys[i]) ?? estimatedRowHeight) + gap;\n }\n return { offsets, totalHeight: offsets[itemCount] };\n}\n\n/** Index of the row that sits at `scrollTop` — i.e. the first row whose bottom edge is below it. */\nexport function findStartIndex(offsets: number[], scrollTop: number, itemCount: number): number {\n if (itemCount <= 0) return 0;\n let lo = 0;\n let hi = itemCount - 1;\n while (lo < hi) {\n const mid = (lo + hi) >> 1;\n if (offsets[mid + 1] <= scrollTop) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n}\n\nexport function getVisibleRange(\n offsets: number[],\n scrollTop: number,\n containerHeight: number,\n overscan: number,\n itemCount: number,\n): { startIndex: number; endIndex: number } {\n if (itemCount === 0) return { startIndex: 0, endIndex: -1 };\n\n const lo = findStartIndex(offsets, scrollTop, itemCount);\n\n let end = lo;\n while (end < itemCount && offsets[end] < scrollTop + containerHeight) end++;\n\n return {\n startIndex: Math.max(0, lo - overscan),\n endIndex: Math.min(itemCount - 1, end + overscan - 1),\n };\n}\n\n// ─── Reorder / tree-drop math ─────────────────────────────────────────────────\n\n/**\n * Decides where a dragged row should move to, applying midpoint hysteresis: a\n * move only happens once the pointer has crossed the centre of the row it is\n * over (downwards when moving down, upwards when moving up). Returns the target\n * index, or null if no move should occur. Pure for easy unit testing.\n */\nexport function resolveReorderTarget(\n fromIndex: number,\n overIndex: number,\n pointerY: number,\n rowTop: number,\n rowHeight: number,\n): number | null {\n if (fromIndex === -1 || fromIndex === overIndex) return null;\n const midpoint = rowTop + rowHeight / 2;\n const movingDown = overIndex > fromIndex;\n if (movingDown ? pointerY >= midpoint : pointerY <= midpoint) return overIndex;\n return null;\n}\n\n/**\n * Decides where a tree-reorder drop should land relative to the row under the\n * pointer. Group rows expose three zones (top third → `before`, middle →\n * `inside`, bottom third → `after`); leaf rows split in half (`before`/`after`)\n * since they can't receive children. Pure for easy unit testing.\n */\nexport function resolveTreeDropTarget(\n pointerY: number,\n rowTop: number,\n rowHeight: number,\n isGroup: boolean,\n): 'before' | 'inside' | 'after' {\n if (rowHeight <= 0) return 'before';\n const rel = (pointerY - rowTop) / rowHeight;\n if (isGroup) {\n if (rel < 1 / 3) return 'before';\n if (rel > 2 / 3) return 'after';\n return 'inside';\n }\n return rel < 0.5 ? 'before' : 'after';\n}\n\n/**\n * Index of the last descendant of the node at `index` in a depth-tagged flat\n * list (a contiguous run of following rows with a greater depth). Returns\n * `index` itself when the node has no children. A drop is forbidden anywhere in\n * `[index, lastDescendantIndex]` — that's the node and its own subtree.\n */\nexport function lastDescendantIndex(index: number, depths: number[]): number {\n const d = depths[index];\n let i = index + 1;\n while (i < depths.length && depths[i] > d) i++;\n return i - 1;\n}\n\n// ─── Column template ──────────────────────────────────────────────────────────\n\nexport function buildColumnTemplate(\n columns: { key: string; width: ColumnWidthSpec }[],\n fitWidths?: Record<string, number>,\n): string {\n if (columns.length === 0) return '1fr';\n return columns\n .map((col) => {\n switch (col.width.type) {\n case 'fixed':\n return `${col.width.px}px`;\n case 'flex':\n return `${col.width.weight ?? 1}fr`;\n // A `fit` track is content-sized, so it resolves independently in each\n // grid (the header and every row are separate grids) and would drift\n // out of alignment. Once we've measured the column's natural width\n // across all those grids, pin it to that exact px so every grid uses an\n // identical track. Until then, fall back to content-sizing.\n case 'fit': {\n const w = fitWidths?.[col.key];\n return w != null ? `${w}px` : 'fit-content(100%)';\n }\n }\n })\n .join(' ');\n}\n\n// ─── Row focus ────────────────────────────────────────────────────────────────\n\n/**\n * What counts as a control inside a row, and so what gets held out of the tab\n * order while its row is not the one being used.\n *\n * `[tabindex=\"-1\"]` is deliberately excluded. The row's own select checkbox sits\n * there and is reached with Space, and an element the consumer has already taken\n * out of the tab order stays out.\n */\nexport const ROW_FOCUSABLE_SELECTOR =\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\n/** Marks an element parked at `tabindex=\"-1\"` by the list rather than by the consumer. */\nexport const ROW_PARKED_ATTRIBUTE = 'data-vl-parked';\n\n/**\n * What `F2` steps into: the controls of a row, including the ones parked out of\n * the tab order. Without the second half it would find nothing at all in a row\n * whose controls are custom elements carrying a `tabindex`, because parking them\n * is exactly what takes them out of the selector above.\n */\nexport const ROW_ENTER_SELECTOR = `${ROW_FOCUSABLE_SELECTOR}, [${ROW_PARKED_ATTRIBUTE}]`;\n\n// ─── Column width measurement ─────────────────────────────────────────────────\n\n/**\n * The content width of one cell, in px. `scrollWidth` reports the true content\n * width even when the cell is pinned narrower than its content, which is what\n * lets a column recover from having been measured while it was still empty.\n *\n * Two corrections on top of it, both only resolved when they can apply, so the\n * hot scroll path stays cheap for a plain in-flow cell:\n *\n * - `scrollWidth` includes the left padding but drops the right one once the\n * content overflows, so add it back.\n * - A cell whose only children are FontAwesome icons reports just its padding:\n * their boxes overflow via `overflow: visible`, carry no intrinsic width, and\n * so never count towards `scrollWidth` (right-aligned, they even overflow\n * into negative offsets). Only then walk the descendants for their true span.\n * Once a real width pins, the cell is no longer collapsed and this stops.\n */\nexport function measureCellWidth(el: HTMLElement): number {\n const overflowing = el.scrollWidth > el.clientWidth;\n let width = el.scrollWidth;\n if (!overflowing && !el.firstElementChild) return width;\n\n const cs = getComputedStyle(el);\n const padLeft = parseFloat(cs.paddingLeft) || 0;\n const padRight = parseFloat(cs.paddingRight) || 0;\n if (overflowing) width += padRight;\n\n if (el.firstElementChild && !overflowing && el.scrollWidth <= padLeft + padRight + 1) {\n let minLeft = Infinity;\n let maxRight = -Infinity;\n el.querySelectorAll('*').forEach((d) => {\n const r = d.getBoundingClientRect();\n if (r.left < minLeft) minLeft = r.left;\n if (r.right > maxRight) maxRight = r.right;\n });\n if (maxRight > minLeft) {\n const span = Math.ceil(maxRight - minLeft) + padLeft + padRight;\n if (span > width) width = span;\n }\n }\n return width;\n}\n\n/** Attribute selector for one column's cells. Column keys are arbitrary strings. */\nexport function columnCellSelector(key: string): string {\n return `[data-col-key=\"${key.replace(/[\"\\\\]/g, '\\\\$&')}\"]`;\n}\n\n// ─── Column resizing ──────────────────────────────────────────────────────────\n\n/** Floor for a user-resized column, unless the column raises it with `minWidth`. */\nexport const MIN_COLUMN_WIDTH = 48;\n\n/**\n * Width given to a column that gains one while the layout is already frozen,\n * i.e. one revealed from the gear menu after the first resize. Every visible\n * column has to be an exact px track for the total width (and so the horizontal\n * scroll range) to be exact, and there is nothing measured to go on yet.\n */\nexport const DEFAULT_FROZEN_WIDTH = 160;\n\n/**\n * Custom property carrying one column's width. Column keys are arbitrary\n * strings, so anything a custom property can't contain is folded to `_`; two\n * keys that differ only in those characters would share a track.\n */\nexport function columnWidthVar(key: string): string {\n return `--vl-col-${key.replace(/[^a-zA-Z0-9_-]/g, '_')}`;\n}\n\n/** Px width for a column the user hasn't sized, at the moment the layout freezes. */\nexport function resolveFrozenWidth<T>(col: VirtualListColumn<T>): number {\n if (col.width.type === 'fixed') return col.width.px;\n if (col.width.type === 'fit') return DEFAULT_FROZEN_WIDTH;\n return DEFAULT_FROZEN_WIDTH * (col.width.weight ?? 1);\n}\n\n/**\n * Grid template for a frozen layout: every column reads its own custom property,\n * so a drag can rewrite one width with a single DOM write and have the header\n * and every row follow in the same layout pass, without React rendering.\n */\nexport function buildFrozenTemplate<T>(columns: VirtualListColumn<T>[]): string {\n if (columns.length === 0) return '1fr';\n return columns.map((col) => `var(${columnWidthVar(col.key)}, ${DEFAULT_FROZEN_WIDTH}px)`).join(' ');\n}\n\n// ─── Column-visibility persistence ────────────────────────────────────────────\n\nexport const COLUMN_STORAGE_PREFIX = 'ahroweui:virtuallist:columns:';\n\n// We persist both the visible keys and the full set of columns that existed at\n// save time. That lets us tell \"the user hid this column\" from \"this column\n// didn't exist yet\" when columns are added later — the former stays hidden, the\n// latter falls back to its defaultHidden value.\nexport interface PersistedColumns {\n visible: string[];\n known: string[];\n /** User-resized column widths in px. Absent in entries saved before resizing existed. */\n widths?: Record<string, number>;\n}\n\nexport function loadPersistedColumns(persistKey: string | undefined): PersistedColumns | null {\n if (!persistKey || typeof window === 'undefined') return null;\n try {\n const raw = window.localStorage.getItem(COLUMN_STORAGE_PREFIX + persistKey);\n if (!raw) return null;\n const parsed = JSON.parse(raw);\n if (parsed && Array.isArray(parsed.visible) && Array.isArray(parsed.known)) {\n const widths: Record<string, number> = {};\n if (parsed.widths && typeof parsed.widths === 'object')\n for (const [key, value] of Object.entries(parsed.widths))\n if (typeof value === 'number' && Number.isFinite(value) && value > 0) widths[key] = value;\n return {\n visible: parsed.visible.filter((k: unknown): k is string => typeof k === 'string'),\n known: parsed.known.filter((k: unknown): k is string => typeof k === 'string'),\n widths,\n };\n }\n } catch {\n // Corrupt/unavailable storage — fall back to defaults.\n }\n return null;\n}\n\n/** Whether a column should start visible, honouring saved settings then `defaultHidden`. */\nexport function isColumnInitiallyVisible<T>(col: VirtualListColumn<T>, persisted: PersistedColumns | null): boolean {\n // A locked column is always visible and can't be hidden — ignore saved state.\n if (col.lockVisible) return true;\n if (persisted && persisted.known.includes(col.key)) return persisted.visible.includes(col.key);\n return !col.defaultHidden;\n}\n\n// ─── Sorting ──────────────────────────────────────────────────────────────────\n\n// `numeric` so \"Order 10\" lands after \"Order 2\" instead of before it, and\n// `sensitivity: 'base'` so case and accents don't split otherwise-equal values.\n// Built lazily and reused: constructing a Collator is expensive relative to the\n// comparisons it then runs.\nlet collator: Intl.Collator | undefined;\nfunction getCollator(): Intl.Collator {\n collator ??= new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' });\n return collator;\n}\n\n/** Values with no order of their own, parked at the end of the list either way. */\nexport function isEmptySortValue(value: SortValue): boolean {\n return value == null || (typeof value === 'number' && Number.isNaN(value));\n}\n\n/**\n * Ascending comparison of two non-empty `sortValue` results. Dates and booleans\n * are normalised to numbers; anything with a string on either side goes through\n * the collator, which is also what makes a mixed-type column produce a stable\n * (if arbitrary) order rather than a random one.\n */\nexport function compareSortValues(a: SortValue, b: SortValue): number {\n const na = a instanceof Date ? a.getTime() : typeof a === 'boolean' ? Number(a) : a;\n const nb = b instanceof Date ? b.getTime() : typeof b === 'boolean' ? Number(b) : b;\n if (typeof na === 'string' || typeof nb === 'string') return getCollator().compare(String(na), String(nb));\n return (na as number) < (nb as number) ? -1 : (na as number) > (nb as number) ? 1 : 0;\n}\n\n/** Whether a header click on this column should do anything at all. */\nexport function isColumnSortable<T>(col: VirtualListColumn<T>): boolean {\n return col.sortValue != null || col.compare != null || col.sortable === true;\n}\n\n/** The asc → desc → unsorted cycle a header click steps through. */\nexport function nextSort(current: VirtualListSort | null, key: string): VirtualListSort | null {\n if (!current || current.key !== key) return { key, direction: 'asc' };\n return current.direction === 'asc' ? { key, direction: 'desc' } : null;\n}\n\n/**\n * Returns `items` reordered by `sort`, or the same array reference when nothing\n * applies: no sort, no such column, or a `sortable` column that only reports\n * (its data is sorted by the consumer). Callers rely on that identity to tell\n * \"the list sorted this\" from \"the list left it alone\".\n */\nexport function sortItems<T>(\n items: T[],\n sort: VirtualListSort | null | undefined,\n columns: VirtualListColumn<T>[] | undefined,\n): T[] {\n if (!sort || !columns) return items;\n const col = columns.find((c) => c.key === sort.key);\n if (!col || (col.compare == null && col.sortValue == null)) return items;\n\n const dir = sort.direction === 'asc' ? 1 : -1;\n const { compare, sortValue } = col;\n // Decorated with the source index so equal values keep their original order.\n // Array.prototype.sort is stable per spec, but the tiebreaker also stops a\n // `compare` that returns 0 for distinct rows from reshuffling them.\n const decorated = items.map((item, index) => ({ item, index }));\n decorated.sort((a, b) => {\n let result: number;\n if (compare) {\n result = dir * compare(a.item, b.item);\n } else {\n const av = sortValue!(a.item);\n const bv = sortValue!(b.item);\n const aEmpty = isEmptySortValue(av);\n const bEmpty = isEmptySortValue(bv);\n // Deliberately not multiplied by `dir`: an empty cell belongs at the\n // bottom of the table whichever way the column is pointing.\n if (aEmpty || bEmpty) result = aEmpty === bEmpty ? 0 : aEmpty ? 1 : -1;\n else result = dir * compareSortValues(av, bv);\n }\n return result !== 0 ? result : a.index - b.index;\n });\n return decorated.map((d) => d.item);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"virtualList.utils.mjs","names":[],"sources":["../../../../package/common/virtualList/virtualList.utils.ts"],"sourcesContent":["import type { ColumnWidthSpec, SortValue, VirtualListColumn, VirtualListSort } from './virtualList.types';\n\n// ─── Layout / windowing math ──────────────────────────────────────────────────\n\nexport function buildOffsets(\n keys: (string | number)[],\n heightsMap: Map<string | number, number>,\n estimatedRowHeight: number,\n rowGap = 0,\n): { offsets: number[]; totalHeight: number } {\n const itemCount = keys.length;\n const offsets = new Array<number>(itemCount + 1);\n offsets[0] = 0;\n for (let i = 0; i < itemCount; i++) {\n const gap = i < itemCount - 1 ? rowGap : 0;\n // Heights are cached by item key, not index, so a measured row keeps its\n // height across reorders/filters instead of inheriting its neighbour's.\n offsets[i + 1] = offsets[i] + (heightsMap.get(keys[i]) ?? estimatedRowHeight) + gap;\n }\n return { offsets, totalHeight: offsets[itemCount] };\n}\n\n/** Index of the row that sits at `scrollTop` — i.e. the first row whose bottom edge is below it. */\nexport function findStartIndex(offsets: number[], scrollTop: number, itemCount: number): number {\n if (itemCount <= 0) return 0;\n let lo = 0;\n let hi = itemCount - 1;\n while (lo < hi) {\n const mid = (lo + hi) >> 1;\n if (offsets[mid + 1] <= scrollTop) lo = mid + 1;\n else hi = mid;\n }\n return lo;\n}\n\nexport function getVisibleRange(\n offsets: number[],\n scrollTop: number,\n containerHeight: number,\n overscan: number,\n itemCount: number,\n): { startIndex: number; endIndex: number } {\n if (itemCount === 0) return { startIndex: 0, endIndex: -1 };\n\n const lo = findStartIndex(offsets, scrollTop, itemCount);\n\n let end = lo;\n while (end < itemCount && offsets[end] < scrollTop + containerHeight) end++;\n\n return {\n startIndex: Math.max(0, lo - overscan),\n endIndex: Math.min(itemCount - 1, end + overscan - 1),\n };\n}\n\n// ─── Reorder / tree-drop math ─────────────────────────────────────────────────\n\n/**\n * Decides where a dragged row should move to, applying midpoint hysteresis: a\n * move only happens once the pointer has crossed the centre of the row it is\n * over (downwards when moving down, upwards when moving up). Returns the target\n * index, or null if no move should occur. Pure for easy unit testing.\n */\nexport function resolveReorderTarget(\n fromIndex: number,\n overIndex: number,\n pointerY: number,\n rowTop: number,\n rowHeight: number,\n): number | null {\n if (fromIndex === -1 || fromIndex === overIndex) return null;\n const midpoint = rowTop + rowHeight / 2;\n const movingDown = overIndex > fromIndex;\n if (movingDown ? pointerY >= midpoint : pointerY <= midpoint) return overIndex;\n return null;\n}\n\n/**\n * Decides where a tree-reorder drop should land relative to the row under the\n * pointer. Group rows expose three zones (top third → `before`, middle →\n * `inside`, bottom third → `after`); leaf rows split in half (`before`/`after`)\n * since they can't receive children. Pure for easy unit testing.\n */\nexport function resolveTreeDropTarget(\n pointerY: number,\n rowTop: number,\n rowHeight: number,\n isGroup: boolean,\n): 'before' | 'inside' | 'after' {\n if (rowHeight <= 0) return 'before';\n const rel = (pointerY - rowTop) / rowHeight;\n if (isGroup) {\n if (rel < 1 / 3) return 'before';\n if (rel > 2 / 3) return 'after';\n return 'inside';\n }\n return rel < 0.5 ? 'before' : 'after';\n}\n\n/**\n * Index of the last descendant of the node at `index` in a depth-tagged flat\n * list (a contiguous run of following rows with a greater depth). Returns\n * `index` itself when the node has no children. A drop is forbidden anywhere in\n * `[index, lastDescendantIndex]` — that's the node and its own subtree.\n */\nexport function lastDescendantIndex(index: number, depths: number[]): number {\n const d = depths[index];\n let i = index + 1;\n while (i < depths.length && depths[i] > d) i++;\n return i - 1;\n}\n\n// ─── Column template ──────────────────────────────────────────────────────────\n\nexport function buildColumnTemplate(\n columns: { key: string; width: ColumnWidthSpec }[],\n fitWidths?: Record<string, number>,\n): string {\n if (columns.length === 0) return '1fr';\n return columns\n .map((col) => {\n switch (col.width.type) {\n case 'fixed':\n return `${col.width.px}px`;\n case 'flex':\n return `${col.width.weight ?? 1}fr`;\n // A `fit` track is content-sized, so it resolves independently in each\n // grid (the header and every row are separate grids) and would drift\n // out of alignment. Once we've measured the column's natural width\n // across all those grids, pin it to that exact px so every grid uses an\n // identical track. Until then, fall back to content-sizing.\n case 'fit': {\n const w = fitWidths?.[col.key];\n return w != null ? `${w}px` : 'fit-content(100%)';\n }\n }\n })\n .join(' ');\n}\n\n// ─── Row focus ────────────────────────────────────────────────────────────────\n\n/**\n * What counts as a control inside a row, and so what gets held out of the tab\n * order while its row is not the one being used.\n *\n * `[tabindex=\"-1\"]` is deliberately excluded. The row's own select checkbox sits\n * there and is reached with Space, and an element the consumer has already taken\n * out of the tab order stays out.\n */\nexport const ROW_FOCUSABLE_SELECTOR =\n 'a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])';\n\n/** Marks an element parked at `tabindex=\"-1\"` by the list rather than by the consumer. */\nexport const ROW_PARKED_ATTRIBUTE = 'data-vl-parked';\n\n/**\n * What `F2` steps into: the controls of a row, including the ones parked out of\n * the tab order. Without the second half it would find nothing at all in a row\n * whose controls are custom elements carrying a `tabindex`, because parking them\n * is exactly what takes them out of the selector above.\n */\nexport const ROW_ENTER_SELECTOR = `${ROW_FOCUSABLE_SELECTOR}, [${ROW_PARKED_ATTRIBUTE}]`;\n\n// ─── Column width measurement ─────────────────────────────────────────────────\n\n/**\n * The content width of one cell, in px. `scrollWidth` reports the true content\n * width even when the cell is pinned narrower than its content, which is what\n * lets a column recover from having been measured while it was still empty.\n *\n * Two corrections on top of it, both only resolved when they can apply, so the\n * hot scroll path stays cheap for a plain in-flow cell:\n *\n * - `scrollWidth` includes the left padding but drops the right one once the\n * content overflows, so add it back.\n * - A cell whose only children are FontAwesome icons reports just its padding:\n * their boxes overflow via `overflow: visible`, carry no intrinsic width, and\n * so never count towards `scrollWidth` (right-aligned, they even overflow\n * into negative offsets). Only then walk the descendants for their true span.\n * Once a real width pins, the cell is no longer collapsed and this stops.\n */\nexport function measureCellWidth(el: HTMLElement): number {\n const overflowing = el.scrollWidth > el.clientWidth;\n let width = el.scrollWidth;\n if (!overflowing && !el.firstElementChild) return width;\n\n const cs = getComputedStyle(el);\n const padLeft = parseFloat(cs.paddingLeft) || 0;\n const padRight = parseFloat(cs.paddingRight) || 0;\n if (overflowing) width += padRight;\n\n if (el.firstElementChild && !overflowing && el.scrollWidth <= padLeft + padRight + 1) {\n let minLeft = Infinity;\n let maxRight = -Infinity;\n el.querySelectorAll('*').forEach((d) => {\n const r = d.getBoundingClientRect();\n if (r.left < minLeft) minLeft = r.left;\n if (r.right > maxRight) maxRight = r.right;\n });\n if (maxRight > minLeft) {\n const span = Math.ceil(maxRight - minLeft) + padLeft + padRight;\n if (span > width) width = span;\n }\n }\n return width;\n}\n\n/** Attribute selector for one column's cells. Column keys are arbitrary strings. */\nexport function columnCellSelector(key: string): string {\n return `[data-col-key=\"${key.replace(/[\"\\\\]/g, '\\\\$&')}\"]`;\n}\n\n// ─── Column resizing ──────────────────────────────────────────────────────────\n\n/** Floor for a user-resized column, unless the column raises it with `minWidth`. */\nexport const MIN_COLUMN_WIDTH = 48;\n\n/**\n * Width given to a column that gains one while the layout is already frozen,\n * i.e. one revealed from the gear menu after the first resize. Every visible\n * column has to be an exact px track for the total width (and so the horizontal\n * scroll range) to be exact, and there is nothing measured to go on yet.\n */\nexport const DEFAULT_FROZEN_WIDTH = 160;\n\n/**\n * Custom property carrying one column's width. Column keys are arbitrary\n * strings, so anything a custom property can't contain is folded to `_`; two\n * keys that differ only in those characters would share a track.\n */\nexport function columnWidthVar(key: string): string {\n return `--vl-col-${key.replace(/[^a-zA-Z0-9_-]/g, '_')}`;\n}\n\n/** Px width for a column the user hasn't sized, at the moment the layout freezes. */\nexport function resolveFrozenWidth<T>(col: VirtualListColumn<T>): number {\n if (col.width.type === 'fixed') return col.width.px;\n if (col.width.type === 'fit') return DEFAULT_FROZEN_WIDTH;\n return DEFAULT_FROZEN_WIDTH * (col.width.weight ?? 1);\n}\n\n/**\n * Grid template for a frozen layout: every column reads its own custom property,\n * so a drag can rewrite one width with a single DOM write and have the header\n * and every row follow in the same layout pass, without React rendering.\n */\nexport function buildFrozenTemplate<T>(columns: VirtualListColumn<T>[]): string {\n if (columns.length === 0) return '1fr';\n return columns.map((col) => `var(${columnWidthVar(col.key)}, ${DEFAULT_FROZEN_WIDTH}px)`).join(' ');\n}\n\n// ─── Column-visibility persistence ────────────────────────────────────────────\n\nexport const COLUMN_STORAGE_PREFIX = 'ahroweui:virtuallist:columns:';\n\n// We persist both the visible keys and the full set of columns that existed at\n// save time. That lets us tell \"the user hid this column\" from \"this column\n// didn't exist yet\" when columns are added later — the former stays hidden, the\n// latter falls back to its defaultHidden value.\nexport interface PersistedColumns {\n visible: string[];\n known: string[];\n /** User-resized column widths in px. Absent in entries saved before resizing existed. */\n widths?: Record<string, number>;\n}\n\nexport function loadPersistedColumns(persistKey: string | undefined): PersistedColumns | null {\n if (!persistKey || typeof window === 'undefined') return null;\n try {\n const raw = window.localStorage.getItem(COLUMN_STORAGE_PREFIX + persistKey);\n if (!raw) return null;\n const parsed = JSON.parse(raw);\n if (parsed && Array.isArray(parsed.visible) && Array.isArray(parsed.known)) {\n const widths: Record<string, number> = {};\n if (parsed.widths && typeof parsed.widths === 'object')\n for (const [key, value] of Object.entries(parsed.widths))\n if (typeof value === 'number' && Number.isFinite(value) && value > 0) widths[key] = value;\n return {\n visible: parsed.visible.filter((k: unknown): k is string => typeof k === 'string'),\n known: parsed.known.filter((k: unknown): k is string => typeof k === 'string'),\n widths,\n };\n }\n } catch {\n // Corrupt/unavailable storage — fall back to defaults.\n }\n return null;\n}\n\n/** Whether a column should start visible, honouring saved settings then `defaultHidden`. */\nexport function isColumnInitiallyVisible<T>(col: VirtualListColumn<T>, persisted: PersistedColumns | null): boolean {\n // A locked column is always visible and can't be hidden — ignore saved state.\n if (col.lockVisible) return true;\n if (persisted && persisted.known.includes(col.key)) return persisted.visible.includes(col.key);\n return !col.defaultHidden;\n}\n\n// ─── Sorting ──────────────────────────────────────────────────────────────────\n\n// `numeric` so \"Order 10\" lands after \"Order 2\" instead of before it, and\n// `sensitivity: 'base'` so case and accents don't split otherwise-equal values.\n// Built lazily and reused: constructing a Collator is expensive relative to the\n// comparisons it then runs.\nlet collator: Intl.Collator | undefined;\nfunction getCollator(): Intl.Collator {\n collator ??= new Intl.Collator(undefined, { numeric: true, sensitivity: 'base' });\n return collator;\n}\n\n/** Values with no order of their own, parked at the end of the list either way. */\nexport function isEmptySortValue(value: SortValue): boolean {\n return value == null || (typeof value === 'number' && Number.isNaN(value));\n}\n\n/**\n * Ascending comparison of two non-empty `sortValue` results. Dates and booleans\n * are normalised to numbers; anything with a string on either side goes through\n * the collator, which is also what makes a mixed-type column produce a stable\n * (if arbitrary) order rather than a random one.\n */\nexport function compareSortValues(a: SortValue, b: SortValue): number {\n const na = a instanceof Date ? a.getTime() : typeof a === 'boolean' ? Number(a) : a;\n const nb = b instanceof Date ? b.getTime() : typeof b === 'boolean' ? Number(b) : b;\n if (typeof na === 'string' || typeof nb === 'string') return getCollator().compare(String(na), String(nb));\n return (na as number) < (nb as number) ? -1 : (na as number) > (nb as number) ? 1 : 0;\n}\n\n/** Whether a header click on this column should do anything at all. */\nexport function isColumnSortable<T>(col: VirtualListColumn<T>): boolean {\n return col.sortValue != null || col.compare != null || col.sortable === true;\n}\n\n/** The asc → desc → unsorted cycle a header click steps through. */\nexport function nextSort(current: VirtualListSort | null, key: string): VirtualListSort | null {\n if (!current || current.key !== key) return { key, direction: 'asc' };\n return current.direction === 'asc' ? { key, direction: 'desc' } : null;\n}\n\n/**\n * Returns `items` reordered by `sort`, or the same array reference when nothing\n * applies: no sort, no such column, or a `sortable` column that only reports\n * (its data is sorted by the consumer). Callers rely on that identity to tell\n * \"the list sorted this\" from \"the list left it alone\".\n */\nexport function sortItems<T>(\n items: T[],\n sort: VirtualListSort | null | undefined,\n columns: VirtualListColumn<T>[] | undefined,\n): T[] {\n if (!sort || !columns) return items;\n const col = columns.find((c) => c.key === sort.key);\n if (!col || (col.compare == null && col.sortValue == null)) return items;\n\n const dir = sort.direction === 'asc' ? 1 : -1;\n const { compare, sortValue } = col;\n // Decorated with the source index so equal values keep their original order.\n // Array.prototype.sort is stable per spec, but the tiebreaker also stops a\n // `compare` that returns 0 for distinct rows from reshuffling them.\n const decorated = items.map((item, index) => ({ item, index }));\n decorated.sort((a, b) => {\n let result: number;\n if (compare) {\n result = dir * compare(a.item, b.item);\n } else {\n const av = sortValue!(a.item);\n const bv = sortValue!(b.item);\n const aEmpty = isEmptySortValue(av);\n const bEmpty = isEmptySortValue(bv);\n // Deliberately not multiplied by `dir`: an empty cell belongs at the\n // bottom of the table whichever way the column is pointing.\n if (aEmpty || bEmpty) result = aEmpty === bEmpty ? 0 : aEmpty ? 1 : -1;\n else result = dir * compareSortValues(av, bv);\n }\n return result !== 0 ? result : a.index - b.index;\n });\n return decorated.map((d) => d.item);\n}\n"],"mappings":"aAIA,SAAgB,EACd,EACA,EACA,EACA,EAAS,EACmC,CAC5C,IAAM,EAAY,EAAK,OACjB,EAAc,MAAc,EAAY,CAAC,EAC/C,EAAQ,GAAK,EACb,IAAK,IAAI,EAAI,EAAG,EAAI,EAAW,IAAK,CAClC,IAAM,EAAM,EAAI,EAAY,EAAI,EAAS,EAGzC,EAAQ,EAAI,GAAK,EAAQ,IAAM,EAAW,IAAI,EAAK,EAAE,GAAK,GAAsB,CAClF,CACA,MAAO,CAAE,UAAS,YAAa,EAAQ,EAAW,CACpD,CAGA,SAAgB,EAAe,EAAmB,EAAmB,EAA2B,CAC9F,GAAI,GAAa,EAAG,MAAO,GAC3B,IAAI,EAAK,EACL,EAAK,EAAY,EACrB,KAAO,EAAK,GAAI,CACd,IAAM,EAAO,EAAK,GAAO,EACrB,EAAQ,EAAM,IAAM,EAAW,EAAK,EAAM,EACzC,EAAK,CACZ,CACA,OAAO,CACT,CAEA,SAAgB,EACd,EACA,EACA,EACA,EACA,EAC0C,CAC1C,GAAI,IAAc,EAAG,MAAO,CAAE,WAAY,EAAG,SAAU,EAAG,EAE1D,IAAM,EAAK,EAAe,EAAS,EAAW,CAAS,EAEnD,EAAM,EACV,KAAO,EAAM,GAAa,EAAQ,GAAO,EAAY,GAAiB,IAEtE,MAAO,CACL,WAAY,KAAK,IAAI,EAAG,EAAK,CAAQ,EACrC,SAAU,KAAK,IAAI,EAAY,EAAG,EAAM,EAAW,CAAC,CACtD,CACF,CAUA,SAAgB,EACd,EACA,EACA,EACA,EACA,EACe,CACf,GAAI,IAAc,IAAM,IAAc,EAAW,OAAO,KACxD,IAAM,EAAW,EAAS,EAAY,EAGtC,OAFmB,EAAY,EACd,GAAY,EAAW,GAAY,GAAiB,EAC9D,IACT,CAQA,SAAgB,EACd,EACA,EACA,EACA,EAC+B,CAC/B,GAAI,GAAa,EAAG,MAAO,SAC3B,IAAM,GAAO,EAAW,GAAU,EAMlC,OALI,EACE,EAAM,EAAI,EAAU,SACpB,EAAM,EAAI,EAAU,QACjB,SAEF,EAAM,GAAM,SAAW,OAChC,CAQA,SAAgB,EAAoB,EAAe,EAA0B,CAC3E,IAAM,EAAI,EAAO,GACb,EAAI,EAAQ,EAChB,KAAO,EAAI,EAAO,QAAU,EAAO,GAAK,GAAG,IAC3C,OAAO,EAAI,CACb,CAIA,SAAgB,EACd,EACA,EACQ,CAER,OADI,EAAQ,SAAW,EAAU,MAC1B,EACJ,IAAK,GAAQ,CACZ,OAAQ,EAAI,MAAM,KAAlB,CACE,IAAK,QACH,MAAO,GAAG,EAAI,MAAM,GAAG,IACzB,IAAK,OACH,MAAO,GAAG,EAAI,MAAM,QAAU,EAAE,IAMlC,IAAK,MAAO,CACV,IAAM,EAAI,IAAY,EAAI,KAC1B,OAAO,GAAK,KAAkB,oBAAX,GAAG,EAAE,GAC1B,CACF,CACF,CAAC,CAAC,CACD,KAAK,GAAG,CACb,CAYA,IAAa,EACX,4IAGW,EAAuB,iBAQvB,EAAqB,GAAG,EAAuB,KAAK,EAAqB,GAoBtF,SAAgB,EAAiB,EAAyB,CACxD,IAAM,EAAc,EAAG,YAAc,EAAG,YACpC,EAAQ,EAAG,YACf,GAAI,CAAC,GAAe,CAAC,EAAG,kBAAmB,OAAO,EAElD,IAAM,EAAK,iBAAiB,CAAE,EACxB,EAAU,WAAW,EAAG,WAAW,GAAK,EACxC,EAAW,WAAW,EAAG,YAAY,GAAK,EAGhD,GAFI,IAAa,GAAS,GAEtB,EAAG,mBAAqB,CAAC,GAAe,EAAG,aAAe,EAAU,EAAW,EAAG,CACpF,IAAI,EAAU,IACV,EAAW,KAMf,GALA,EAAG,iBAAiB,GAAG,CAAC,CAAC,QAAS,GAAM,CACtC,IAAM,EAAI,EAAE,sBAAsB,EAC9B,EAAE,KAAO,IAAS,EAAU,EAAE,MAC9B,EAAE,MAAQ,IAAU,EAAW,EAAE,MACvC,CAAC,EACG,EAAW,EAAS,CACtB,IAAM,EAAO,KAAK,KAAK,EAAW,CAAO,EAAI,EAAU,EACnD,EAAO,IAAO,EAAQ,EAC5B,CACF,CACA,OAAO,CACT,CAGA,SAAgB,EAAmB,EAAqB,CACtD,MAAO,kBAAkB,EAAI,QAAQ,SAAU,MAAM,EAAE,GACzD,CAoBA,SAAgB,EAAe,EAAqB,CAClD,MAAO,YAAY,EAAI,QAAQ,kBAAmB,GAAG,GACvD,CAGA,SAAgB,EAAsB,EAAmC,CAGvE,OAFI,EAAI,MAAM,OAAS,QAAgB,EAAI,MAAM,GAC7C,EAAI,MAAM,OAAS,MAAO,IAC9B,KAA+B,EAAI,MAAM,QAAU,EACrD,CAOA,SAAgB,EAAuB,EAAyC,CAE9E,OADI,EAAQ,SAAW,EAAU,MAC1B,EAAQ,IAAK,GAAQ,OAAO,EAAe,EAAI,GAAG,EAAE,SAA6B,CAAC,CAAC,KAAK,GAAG,CACpG,CAIA,IAAa,EAAwB,gCAarC,SAAgB,EAAqB,EAAyD,CAC5F,GAAI,CAAC,GAAc,OAAO,OAAW,IAAa,OAAO,KACzD,GAAI,CACF,IAAM,EAAM,OAAO,aAAa,QAAQ,EAAwB,CAAU,EAC1E,GAAI,CAAC,EAAK,OAAO,KACjB,IAAM,EAAS,KAAK,MAAM,CAAG,EAC7B,GAAI,GAAU,MAAM,QAAQ,EAAO,OAAO,GAAK,MAAM,QAAQ,EAAO,KAAK,EAAG,CAC1E,IAAM,EAAiC,CAAC,EACxC,GAAI,EAAO,QAAU,OAAO,EAAO,QAAW,SACvC,IAAA,GAAM,CAAC,EAAK,KAAU,OAAO,QAAQ,EAAO,MAAM,EACjD,OAAO,GAAU,UAAY,OAAO,SAAS,CAAK,GAAK,EAAQ,IAAG,EAAO,GAAO,GACxF,MAAO,CACL,QAAS,EAAO,QAAQ,OAAQ,GAA4B,OAAO,GAAM,QAAQ,EACjF,MAAO,EAAO,MAAM,OAAQ,GAA4B,OAAO,GAAM,QAAQ,EAC7E,QACF,CACF,CACF,MAAQ,CAER,CACA,OAAO,IACT,CAGA,SAAgB,EAA4B,EAA2B,EAA6C,CAIlH,OAFI,EAAI,YAAoB,GACxB,GAAa,EAAU,MAAM,SAAS,EAAI,GAAG,EAAU,EAAU,QAAQ,SAAS,EAAI,GAAG,EACtF,CAAC,EAAI,aACd,CAQA,IAAI,EACJ,SAAS,GAA6B,CAEpC,MADA,KAAa,IAAI,KAAK,SAAS,IAAA,GAAW,CAAE,QAAS,GAAM,YAAa,MAAO,CAAC,EACzE,CACT,CAGA,SAAgB,EAAiB,EAA2B,CAC1D,OAAO,GAAS,MAAS,OAAO,GAAU,UAAY,OAAO,MAAM,CAAK,CAC1E,CAQA,SAAgB,EAAkB,EAAc,EAAsB,CACpE,IAAM,EAAK,aAAa,KAAO,EAAE,QAAQ,EAAI,OAAO,GAAM,UAAY,OAAO,CAAC,EAAI,EAC5E,EAAK,aAAa,KAAO,EAAE,QAAQ,EAAI,OAAO,GAAM,UAAY,OAAO,CAAC,EAAI,EAElF,OADI,OAAO,GAAO,UAAY,OAAO,GAAO,SAAiB,EAAY,CAAC,CAAC,QAAQ,OAAO,CAAE,EAAG,OAAO,CAAE,CAAC,EACjG,EAAiB,EAAgB,GAAM,IAAiB,EAClE,CAGA,SAAgB,EAAoB,EAAoC,CACtE,OAAO,EAAI,WAAa,MAAQ,EAAI,SAAW,MAAQ,EAAI,WAAa,EAC1E,CAGA,SAAgB,EAAS,EAAiC,EAAqC,CAE7F,MADI,CAAC,GAAW,EAAQ,MAAQ,EAAY,CAAE,MAAK,UAAW,KAAM,EAC7D,EAAQ,YAAc,MAAQ,CAAE,MAAK,UAAW,MAAO,EAAI,IACpE,CAQA,SAAgB,EACd,EACA,EACA,EACK,CACL,GAAI,CAAC,GAAQ,CAAC,EAAS,OAAO,EAC9B,IAAM,EAAM,EAAQ,KAAM,GAAM,EAAE,MAAQ,EAAK,GAAG,EAClD,GAAI,CAAC,GAAQ,EAAI,SAAW,MAAQ,EAAI,WAAa,KAAO,OAAO,EAEnE,IAAM,EAAM,EAAK,YAAc,MAAQ,EAAI,GACrC,CAAE,UAAS,aAAc,EAIzB,EAAY,EAAM,KAAK,EAAM,KAAW,CAAE,OAAM,OAAM,EAAE,EAiB9D,OAhBA,EAAU,MAAM,EAAG,IAAM,CACvB,IAAI,EACJ,GAAI,EACF,EAAS,EAAM,EAAQ,EAAE,KAAM,EAAE,IAAI,MAChC,CACL,IAAM,EAAK,EAAW,EAAE,IAAI,EACtB,EAAK,EAAW,EAAE,IAAI,EACtB,EAAS,EAAiB,CAAE,EAC5B,EAAS,EAAiB,CAAE,EAGlC,AACK,EADD,GAAU,EAAiB,IAAW,EAAS,EAAI,EAAS,EAAI,GACtD,EAAM,EAAkB,EAAI,CAAE,CAC9C,CACA,OAAO,IAAW,EAAa,EAAE,MAAQ,EAAE,MAArB,CACxB,CAAC,EACM,EAAU,IAAK,GAAM,EAAE,IAAI,CACpC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{PopoverAlign as e,PopoverPlacement as t}from"../popover/popover.types.mjs";import n from"../popover/popover.mjs";import r from"../checkbox/checkbox.mjs";import i from"./virtualList.module.mjs";import{isColumnSortable as a}from"./virtualList.utils.mjs";import{useHeaderNavigation as o}from"./useHeaderNavigation.mjs";import"react";import s from"classnames";import{FontAwesomeIcon as c}from"@fortawesome/react-fontawesome";import{faGear as l,faSort as u,faSortDown as d,faSortUp as f}from"@fortawesome/free-solid-svg-icons";import{jsx as p,jsxs as m}from"react/jsx-runtime";var h=10;function g({headerRef:e,columns:t,cols:n,resize:l,sort:g,onSort:v,multiSelect:y,allSelected:b,someSelected:x,onSelectAll:S,labels:C,classNames:w,styles:T}){let E=+!!y,D=E+n.visibleColumns.length+ +!!n.shouldShowToggle,O=o(D);return m(`div`,{ref:e,className:s(i.virtualListHeader,w?.header),style:{gridTemplateColumns:n.columnTemplate,...n.shouldShowToggle?{paddingRight:32}:{},...T?.header},role:`row`,"aria-rowindex":1,children:[y&&p(`div`,{...O.getStationProps(0),className:s(i.virtualListSelectCell,w?.selectCell),style:T?.selectCell,role:`columnheader`,onKeyDown:e=>{O.handleNavigationKey(e,0)||e.target===e.currentTarget&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),S())},children:p(r,{selected:b||x,onToggle:S,"aria-label":C.selectAllRows,tabIndex:-1})}),n.visibleColumns.map((e,t)=>{let n=a(e),r=g&&g.key===e.key?g.direction:null,o=l.getHandleProps(e),_=E+t;return m(`div`,{...O.getStationProps(_),onKeyDown:t=>{if(!O.handleNavigationKey(t,_)){if(t.altKey&&l.isResizable(e)){let n=t.shiftKey?1:h;if(t.key===`ArrowRight`)l.resizeBy(e.key,n);else if(t.key===`ArrowLeft`)l.resizeBy(e.key,-n);else if(t.key===`Home`)l.resizeToMin(e.key);else if(t.key===`End`)l.autoFit(e.key);else return;t.preventDefault();return}n&&t.target===t.currentTarget&&(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),v(e.key))}},className:s(i.virtualListHeaderCell,w?.headerCell),style:T?.headerCell,role:`columnheader`,"data-col-key":e.key,"aria-sort":n?r===`asc`?`ascending`:r===`desc`?`descending`:`none`:void 0,"data-fit-key":e.width.type===`fit`?e.key:void 0,children:[n?m(`button`,{type:`button`,className:s(i.virtualListHeaderSort,w?.headerSort),style:T?.headerSort,onClick:()=>v(e.key),tabIndex:-1,children:[p(`span`,{className:i.virtualListHeaderSortLabel,children:e.label}),p(c,{className:s(i.virtualListHeaderSortIcon,r&&i.virtualListHeaderSortIconActive,w?.sortIcon),style:T?.sortIcon,icon:r===`asc`?f:r===`desc`?d:u})]}):e.label,o&&p(`div`,{...o,className:s(i.virtualListHeaderResize,w?.resizeHandle),style:T?.resizeHandle})]},e.key)}),n.shouldShowToggle&&p(_,{station:D-1,nav:O,columns:t,cols:n,resize:l,labels:C,classNames:w,styles:T})]})}function _({station:a,nav:o,columns:u,cols:d,resize:f,labels:h,classNames:g,styles:_}){return m(`div`,{className:i.virtualListToggleWrapper,children:[p(n,{isOpen:d.toggleOpen,onOpenChange:d.setToggleOpen,placement:t.Bottom,align:e.End,constrainWidth:!1,classNames:{panel:i.virtualListTogglePanel},content:m(`div`,{className:s(i.virtualListTogglePopover,g?.togglePopover),style:_?.togglePopover,children:[u.filter(e=>!e.hideFromToggle).map(e=>p(r,{className:s(i.virtualListToggleItem,g?.toggleItem),style:_?.toggleItem,selected:d.effectiveVisible.has(e.key),onToggle:()=>d.handleToggleColumn(e.key),disabled:e.lockVisible,cursorDefault:!1,children:e.toggleLabel??e.label},e.key)),f.isFrozen&&p(`button`,{type:`button`,className:s(i.virtualListToggleReset,g?.toggleReset),style:_?.toggleReset,onClick:()=>{f.reset(),d.setToggleOpen(!1)},children:h.resetColumnWidths})]}),children:p(`button`,{...o.getStationProps(a),type:`button`,className:s(i.virtualListHeaderToggle,g?.headerToggle),style:_?.headerToggle,"aria-label":h.toggleColumns,onKeyDown:e=>o.handleNavigationKey(e,a),children:p(c,{icon:l,style:_?.headerToggle})})}),d.manuallyHiddenCount>0&&p(`span`,{className:s(i.virtualListColumnChip,g?.columnChip),style:_?.columnChip,"data-column-hidden-count":d.manuallyHiddenCount,"aria-label":h.columnsHidden(d.manuallyHiddenCount),children:d.manuallyHiddenCount})]})}export{g as default};
|
|
1
|
+
"use client";import{PopoverAlign as e,PopoverPlacement as t}from"../popover/popover.types.mjs";import n from"../popover/popover.mjs";import r from"../checkbox/checkbox.mjs";import i from"./virtualList.module.mjs";import{isColumnSortable as a}from"./virtualList.utils.mjs";import{useHeaderNavigation as o}from"./useHeaderNavigation.mjs";import"react";import s from"classnames";import{FontAwesomeIcon as c}from"@fortawesome/react-fontawesome";import{faGear as l,faSort as u,faSortDown as d,faSortUp as f}from"@fortawesome/free-solid-svg-icons";import{jsx as p,jsxs as m}from"react/jsx-runtime";var h=10;function g({headerRef:e,columns:t,cols:n,resize:l,sort:g,onSort:v,multiSelect:y,allSelected:b,someSelected:x,onSelectAll:S,labels:C,classNames:w,styles:T}){let E=+!!y,D=E+n.visibleColumns.length+ +!!n.shouldShowToggle,O=o(D);return m(`div`,{ref:e,className:s(i.virtualListHeader,w?.header),style:{gridTemplateColumns:n.columnTemplate,...n.shouldShowToggle?{paddingRight:32}:{},...T?.header},role:`row`,"aria-rowindex":1,children:[y&&p(`div`,{...O.getStationProps(0),className:s(i.virtualListSelectCell,w?.selectCell),style:T?.selectCell,role:`columnheader`,onKeyDown:e=>{O.handleNavigationKey(e,0)||e.target===e.currentTarget&&(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),S())},children:p(r,{selected:b||x,onToggle:S,"aria-label":C.selectAllRows,tabIndex:-1})}),n.visibleColumns.map((e,t)=>{let n=a(e),r=g&&g.key===e.key?g.direction:null,o=l.getHandleProps(e),_=E+t;return m(`div`,{...O.getStationProps(_),onKeyDown:t=>{if(!O.handleNavigationKey(t,_)){if(t.altKey&&l.isResizable(e)){let n=t.shiftKey?1:h;if(t.key===`ArrowRight`)l.resizeBy(e.key,n);else if(t.key===`ArrowLeft`)l.resizeBy(e.key,-n);else if(t.key===`Home`)l.resizeToMin(e.key);else if(t.key===`End`)l.autoFit(e.key);else return;t.preventDefault();return}n&&t.target===t.currentTarget&&(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),v(e.key))}},className:s(i.virtualListHeaderCell,w?.headerCell),style:T?.headerCell,role:`columnheader`,"data-col-key":e.key,"aria-sort":n?r===`asc`?`ascending`:r===`desc`?`descending`:`none`:void 0,"data-fit-key":e.width.type===`fit`?e.key:void 0,children:[n?m(`button`,{type:`button`,className:s(i.virtualListHeaderSort,w?.headerSort),style:T?.headerSort,onClick:()=>v(e.key),tabIndex:-1,children:[p(`span`,{className:i.virtualListHeaderSortLabel,children:e.label}),p(c,{className:s(i.virtualListHeaderSortIcon,r&&i.virtualListHeaderSortIconActive,w?.sortIcon),style:T?.sortIcon,icon:r===`asc`?f:r===`desc`?d:u})]}):e.label,o&&p(`div`,{...o,className:s(i.virtualListHeaderResize,w?.resizeHandle),style:T?.resizeHandle})]},e.key)}),n.shouldShowToggle&&p(_,{station:D-1,nav:O,columns:t,cols:n,resize:l,labels:C,classNames:w,styles:T})]})}function _({station:a,nav:o,columns:u,cols:d,resize:f,labels:h,classNames:g,styles:_}){return m(`div`,{className:i.virtualListToggleWrapper,children:[p(n,{isOpen:d.toggleOpen,onOpenChange:d.setToggleOpen,placement:t.Bottom,align:e.End,constrainWidth:!1,classNames:{panel:i.virtualListTogglePanel},content:m(`div`,{className:s(i.virtualListTogglePopover,g?.togglePopover),style:_?.togglePopover,children:[u.filter(e=>!e.hideFromToggle).map(e=>p(r,{className:s(i.virtualListToggleItem,g?.toggleItem),style:_?.toggleItem,selected:d.effectiveVisible.has(e.key),onToggle:()=>d.handleToggleColumn(e.key),disabled:e.lockVisible,cursorDefault:!1,children:e.toggleLabel??e.label},e.key)),f.isFrozen&&p(`button`,{type:`button`,className:s(i.virtualListToggleReset,g?.toggleReset),style:_?.toggleReset,onClick:()=>{f.reset(),d.setToggleOpen(!1)},children:h.resetColumnWidths})]}),children:p(`button`,{...o.getStationProps(a),type:`button`,className:s(i.virtualListHeaderToggle,g?.headerToggle),style:_?.headerToggle,"aria-label":h.toggleColumns,onKeyDown:e=>o.handleNavigationKey(e,a),children:p(c,{icon:l,style:_?.headerToggle})})}),d.manuallyHiddenCount>0&&p(`span`,{className:s(i.virtualListColumnChip,g?.columnChip),style:_?.columnChip,"data-column-hidden-count":d.manuallyHiddenCount,"aria-label":h.columnsHidden(d.manuallyHiddenCount),children:d.manuallyHiddenCount})]})}export{g as default};
|
|
2
2
|
//# sourceMappingURL=virtualListHeader.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtualListHeader.mjs","names":[],"sources":["../../../../package/common/virtualList/virtualListHeader.tsx"],"sourcesContent":["import React from 'react';\nimport cx from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faGear, faSort, faSortDown, faSortUp } from '@fortawesome/free-solid-svg-icons';\n\nimport styles from './virtualList.module.pcss';\nimport Checkbox from '../checkbox';\nimport Popover from '../popover';\nimport { PopoverAlign, PopoverPlacement } from '../popover/popover.types';\nimport { isColumnSortable } from './virtualList.utils';\nimport { useHeaderNavigation } from './useHeaderNavigation';\nimport type { UseColumnsResult } from './useColumns';\nimport type { UseColumnResizeResult } from './useColumnResize';\nimport type { SlotClassNames, SlotStyles } from '../types/slots.types';\nimport type { VirtualListColumn, VirtualListLabels, VirtualListSlots, VirtualListSort } from './virtualList.types';\n\n/** Width change of one Alt+arrow press, in px. Alt+Shift steps by one instead. */\nconst KEYBOARD_RESIZE_STEP = 10;\n\n/** FontAwesome's own style type, which carries the `--fa-font-*` custom properties. */\ntype FaStyle = React.CSSProperties & Record<`--fa-font-${string}`, string>;\n\ninterface VirtualListHeaderProps<T> {\n headerRef: React.RefObject<HTMLDivElement | null>;\n /** Every column, including hidden ones: the toggle menu lists them all. */\n columns: VirtualListColumn<T>[];\n cols: UseColumnsResult<T>;\n resize: UseColumnResizeResult<T>;\n sort: VirtualListSort | null;\n onSort: (key: string) => void;\n multiSelect: boolean;\n allSelected: boolean;\n someSelected: boolean;\n onSelectAll: () => void;\n labels: Required<VirtualListLabels>;\n classNames?: SlotClassNames<VirtualListSlots>;\n styles?: SlotStyles<VirtualListSlots>;\n}\n\n/**\n * The table-mode header row: one cell per visible column, each optionally a sort\n * button and a resize handle, plus the column-visibility menu pinned to the\n * right. It is a grid with the same template as every row, which is what keeps\n * the columns aligned across the separate grids.\n *\n * The whole header is a single tab stop (see `useHeaderNavigation`). Focus lands\n * on a header cell rather than on the button inside it, so every key a column\n * understands is handled in one place: Enter or Space sorts, Alt plus the arrow\n * keys resizes, Alt+Home and Alt+End take the column to its minimum or to its\n * content width.\n */\nfunction VirtualListHeader<T>({\n headerRef,\n columns,\n cols,\n resize,\n sort,\n onSort,\n multiSelect,\n allSelected,\n someSelected,\n onSelectAll,\n labels,\n classNames,\n styles: slotStyles,\n}: VirtualListHeaderProps<T>) {\n // Station order is the reading order: the select-all box, the columns, the menu.\n const columnOffset = multiSelect ? 1 : 0;\n const stationCount = columnOffset + cols.visibleColumns.length + (cols.shouldShowToggle ? 1 : 0);\n const nav = useHeaderNavigation(stationCount);\n\n return (\n <div\n ref={headerRef}\n className={cx(styles.virtualListHeader, classNames?.header)}\n style={{\n gridTemplateColumns: cols.columnTemplate,\n ...(cols.shouldShowToggle ? { paddingRight: 32 } : {}),\n ...slotStyles?.header,\n }}\n role='row'\n aria-rowindex={1}\n >\n {multiSelect && (\n <div\n {...nav.getStationProps(0)}\n className={cx(styles.virtualListSelectCell, classNames?.selectCell)}\n style={slotStyles?.selectCell}\n role='columnheader'\n onKeyDown={(event) => {\n if (nav.handleNavigationKey(event, 0)) return;\n if (event.target !== event.currentTarget) return;\n if (event.key !== 'Enter' && event.key !== ' ') return;\n event.preventDefault();\n onSelectAll();\n }}\n >\n <Checkbox\n selected={allSelected || someSelected}\n onToggle={onSelectAll}\n aria-label={labels.selectAllRows}\n tabIndex={-1}\n />\n </div>\n )}\n\n {cols.visibleColumns.map((col, columnIndex) => {\n const sortable = isColumnSortable(col);\n const direction = sort && sort.key === col.key ? sort.direction : null;\n const handleProps = resize.getHandleProps(col);\n const station = columnOffset + columnIndex;\n return (\n <div\n key={col.key}\n {...nav.getStationProps(station)}\n onKeyDown={(event) => {\n if (nav.handleNavigationKey(event, station)) return;\n if (event.altKey && resize.isResizable(col)) {\n const step = event.shiftKey ? 1 : KEYBOARD_RESIZE_STEP;\n if (event.key === 'ArrowRight') resize.resizeBy(col.key, step);\n else if (event.key === 'ArrowLeft') resize.resizeBy(col.key, -step);\n else if (event.key === 'Home') resize.resizeToMin(col.key);\n else if (event.key === 'End') resize.autoFit(col.key);\n else return;\n event.preventDefault();\n return;\n }\n // Only when the cell itself holds the focus: after a mouse click\n // the focus sits on the sort button, which activates on its own.\n if (!sortable || event.target !== event.currentTarget) return;\n if (event.key !== 'Enter' && event.key !== ' ') return;\n event.preventDefault();\n onSort(col.key);\n }}\n className={cx(styles.virtualListHeaderCell, classNames?.headerCell)}\n style={slotStyles?.headerCell}\n role='columnheader'\n data-col-key={col.key}\n aria-sort={\n sortable ? (direction === 'asc' ? 'ascending' : direction === 'desc' ? 'descending' : 'none') : undefined\n }\n data-fit-key={col.width.type === 'fit' ? col.key : undefined}\n >\n {sortable ? (\n <button\n type='button'\n className={cx(styles.virtualListHeaderSort, classNames?.headerSort)}\n style={slotStyles?.headerSort}\n onClick={() => onSort(col.key)}\n tabIndex={-1}\n >\n <span className={styles.virtualListHeaderSortLabel}>{col.label}</span>\n {/* Rendered in every state, inactive included: the header cell is\n measured for `fit` columns and those pins only ever grow, so an\n icon that appears on click would widen the column for good. */}\n <FontAwesomeIcon\n className={cx(\n styles.virtualListHeaderSortIcon,\n direction && styles.virtualListHeaderSortIconActive,\n classNames?.sortIcon,\n )}\n style={slotStyles?.sortIcon as FaStyle}\n icon={direction === 'asc' ? faSortUp : direction === 'desc' ? faSortDown : faSort}\n />\n </button>\n ) : (\n col.label\n )}\n {handleProps && (\n <div\n {...handleProps}\n className={cx(styles.virtualListHeaderResize, classNames?.resizeHandle)}\n style={slotStyles?.resizeHandle}\n />\n )}\n </div>\n );\n })}\n\n {cols.shouldShowToggle && (\n <ColumnToggle\n station={stationCount - 1}\n nav={nav}\n columns={columns}\n cols={cols}\n resize={resize}\n labels={labels}\n classNames={classNames}\n styles={slotStyles}\n />\n )}\n </div>\n );\n}\n\ntype ColumnToggleProps<T> = Pick<\n VirtualListHeaderProps<T>,\n 'columns' | 'cols' | 'resize' | 'labels' | 'classNames' | 'styles'\n> & {\n station: number;\n nav: ReturnType<typeof useHeaderNavigation>;\n};\n\n/**\n * The gear at the header's trailing edge: one checkbox per column, the reset for\n * user-set widths, and a badge counting the columns the user has hidden.\n */\nfunction ColumnToggle<T>({\n station,\n nav,\n columns,\n cols,\n resize,\n labels,\n classNames,\n styles: slotStyles,\n}: ColumnToggleProps<T>) {\n return (\n <div className={styles.virtualListToggleWrapper}>\n <Popover\n isOpen={cols.toggleOpen}\n onOpenChange={cols.setToggleOpen}\n placement={PopoverPlacement.Bottom}\n align={PopoverAlign.End}\n constrainWidth={false}\n classNames={{ panel: styles.virtualListTogglePanel }}\n content={\n <div\n className={cx(styles.virtualListTogglePopover, classNames?.togglePopover)}\n style={slotStyles?.togglePopover}\n >\n {columns\n .filter((col) => !col.hideFromToggle)\n .map((col) => (\n <Checkbox\n key={col.key}\n className={cx(styles.virtualListToggleItem, classNames?.toggleItem)}\n style={slotStyles?.toggleItem}\n selected={cols.effectiveVisible.has(col.key)}\n onToggle={() => cols.handleToggleColumn(col.key)}\n disabled={col.lockVisible}\n cursorDefault={false}\n >\n {col.toggleLabel ?? col.label}\n </Checkbox>\n ))}\n {resize.isFrozen && (\n <button\n type='button'\n className={cx(styles.virtualListToggleReset, classNames?.toggleReset)}\n style={slotStyles?.toggleReset}\n onClick={() => {\n resize.reset();\n cols.setToggleOpen(false);\n }}\n >\n {labels.resetColumnWidths}\n </button>\n )}\n </div>\n }\n >\n <button\n {...nav.getStationProps(station)}\n type='button'\n className={cx(styles.virtualListHeaderToggle, classNames?.headerToggle)}\n style={slotStyles?.headerToggle}\n aria-label={labels.toggleColumns}\n // Enter and Space are the button's own; only the arrows are ours.\n onKeyDown={(event) => nav.handleNavigationKey(event, station)}\n >\n <FontAwesomeIcon icon={faGear} style={slotStyles?.headerToggle as FaStyle} />\n </button>\n </Popover>\n {cols.manuallyHiddenCount > 0 && (\n <span\n className={cx(styles.virtualListColumnChip, classNames?.columnChip)}\n style={slotStyles?.columnChip}\n data-column-hidden-count={cols.manuallyHiddenCount}\n aria-label={labels.columnsHidden(cols.manuallyHiddenCount)}\n >\n {cols.manuallyHiddenCount}\n </span>\n )}\n </div>\n );\n}\n\nexport default VirtualListHeader;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"virtualListHeader.mjs","names":[],"sources":["../../../../package/common/virtualList/virtualListHeader.tsx"],"sourcesContent":["import React from 'react';\nimport cx from 'classnames';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faGear, faSort, faSortDown, faSortUp } from '@fortawesome/free-solid-svg-icons';\n\nimport styles from './virtualList.module.pcss';\nimport Checkbox from '../checkbox';\nimport Popover from '../popover';\nimport { PopoverAlign, PopoverPlacement } from '../popover/popover.types';\nimport { isColumnSortable } from './virtualList.utils';\nimport { useHeaderNavigation } from './useHeaderNavigation';\nimport type { UseColumnsResult } from './useColumns';\nimport type { UseColumnResizeResult } from './useColumnResize';\nimport type { SlotClassNames, SlotStyles } from '../types/slots.types';\nimport type { VirtualListColumn, VirtualListLabels, VirtualListSlots, VirtualListSort } from './virtualList.types';\n\n/** Width change of one Alt+arrow press, in px. Alt+Shift steps by one instead. */\nconst KEYBOARD_RESIZE_STEP = 10;\n\n/** FontAwesome's own style type, which carries the `--fa-font-*` custom properties. */\ntype FaStyle = React.CSSProperties & Record<`--fa-font-${string}`, string>;\n\ninterface VirtualListHeaderProps<T> {\n headerRef: React.RefObject<HTMLDivElement | null>;\n /** Every column, including hidden ones: the toggle menu lists them all. */\n columns: VirtualListColumn<T>[];\n cols: UseColumnsResult<T>;\n resize: UseColumnResizeResult<T>;\n sort: VirtualListSort | null;\n onSort: (key: string) => void;\n multiSelect: boolean;\n allSelected: boolean;\n someSelected: boolean;\n onSelectAll: () => void;\n labels: Required<VirtualListLabels>;\n classNames?: SlotClassNames<VirtualListSlots>;\n styles?: SlotStyles<VirtualListSlots>;\n}\n\n/**\n * The table-mode header row: one cell per visible column, each optionally a sort\n * button and a resize handle, plus the column-visibility menu pinned to the\n * right. It is a grid with the same template as every row, which is what keeps\n * the columns aligned across the separate grids.\n *\n * The whole header is a single tab stop (see `useHeaderNavigation`). Focus lands\n * on a header cell rather than on the button inside it, so every key a column\n * understands is handled in one place: Enter or Space sorts, Alt plus the arrow\n * keys resizes, Alt+Home and Alt+End take the column to its minimum or to its\n * content width.\n */\nfunction VirtualListHeader<T>({\n headerRef,\n columns,\n cols,\n resize,\n sort,\n onSort,\n multiSelect,\n allSelected,\n someSelected,\n onSelectAll,\n labels,\n classNames,\n styles: slotStyles,\n}: VirtualListHeaderProps<T>) {\n // Station order is the reading order: the select-all box, the columns, the menu.\n const columnOffset = multiSelect ? 1 : 0;\n const stationCount = columnOffset + cols.visibleColumns.length + (cols.shouldShowToggle ? 1 : 0);\n const nav = useHeaderNavigation(stationCount);\n\n return (\n <div\n ref={headerRef}\n className={cx(styles.virtualListHeader, classNames?.header)}\n style={{\n gridTemplateColumns: cols.columnTemplate,\n ...(cols.shouldShowToggle ? { paddingRight: 32 } : {}),\n ...slotStyles?.header,\n }}\n role='row'\n aria-rowindex={1}\n >\n {multiSelect && (\n <div\n {...nav.getStationProps(0)}\n className={cx(styles.virtualListSelectCell, classNames?.selectCell)}\n style={slotStyles?.selectCell}\n role='columnheader'\n onKeyDown={(event) => {\n if (nav.handleNavigationKey(event, 0)) return;\n if (event.target !== event.currentTarget) return;\n if (event.key !== 'Enter' && event.key !== ' ') return;\n event.preventDefault();\n onSelectAll();\n }}\n >\n <Checkbox\n selected={allSelected || someSelected}\n onToggle={onSelectAll}\n aria-label={labels.selectAllRows}\n tabIndex={-1}\n />\n </div>\n )}\n\n {cols.visibleColumns.map((col, columnIndex) => {\n const sortable = isColumnSortable(col);\n const direction = sort && sort.key === col.key ? sort.direction : null;\n const handleProps = resize.getHandleProps(col);\n const station = columnOffset + columnIndex;\n return (\n <div\n key={col.key}\n {...nav.getStationProps(station)}\n onKeyDown={(event) => {\n if (nav.handleNavigationKey(event, station)) return;\n if (event.altKey && resize.isResizable(col)) {\n const step = event.shiftKey ? 1 : KEYBOARD_RESIZE_STEP;\n if (event.key === 'ArrowRight') resize.resizeBy(col.key, step);\n else if (event.key === 'ArrowLeft') resize.resizeBy(col.key, -step);\n else if (event.key === 'Home') resize.resizeToMin(col.key);\n else if (event.key === 'End') resize.autoFit(col.key);\n else return;\n event.preventDefault();\n return;\n }\n // Only when the cell itself holds the focus: after a mouse click\n // the focus sits on the sort button, which activates on its own.\n if (!sortable || event.target !== event.currentTarget) return;\n if (event.key !== 'Enter' && event.key !== ' ') return;\n event.preventDefault();\n onSort(col.key);\n }}\n className={cx(styles.virtualListHeaderCell, classNames?.headerCell)}\n style={slotStyles?.headerCell}\n role='columnheader'\n data-col-key={col.key}\n aria-sort={\n sortable ? (direction === 'asc' ? 'ascending' : direction === 'desc' ? 'descending' : 'none') : undefined\n }\n data-fit-key={col.width.type === 'fit' ? col.key : undefined}\n >\n {sortable ? (\n <button\n type='button'\n className={cx(styles.virtualListHeaderSort, classNames?.headerSort)}\n style={slotStyles?.headerSort}\n onClick={() => onSort(col.key)}\n tabIndex={-1}\n >\n <span className={styles.virtualListHeaderSortLabel}>{col.label}</span>\n {/* Rendered in every state, inactive included: the header cell is\n measured for `fit` columns and those pins only ever grow, so an\n icon that appears on click would widen the column for good. */}\n <FontAwesomeIcon\n className={cx(\n styles.virtualListHeaderSortIcon,\n direction && styles.virtualListHeaderSortIconActive,\n classNames?.sortIcon,\n )}\n style={slotStyles?.sortIcon as FaStyle}\n icon={direction === 'asc' ? faSortUp : direction === 'desc' ? faSortDown : faSort}\n />\n </button>\n ) : (\n col.label\n )}\n {handleProps && (\n <div\n {...handleProps}\n className={cx(styles.virtualListHeaderResize, classNames?.resizeHandle)}\n style={slotStyles?.resizeHandle}\n />\n )}\n </div>\n );\n })}\n\n {cols.shouldShowToggle && (\n <ColumnToggle\n station={stationCount - 1}\n nav={nav}\n columns={columns}\n cols={cols}\n resize={resize}\n labels={labels}\n classNames={classNames}\n styles={slotStyles}\n />\n )}\n </div>\n );\n}\n\ntype ColumnToggleProps<T> = Pick<\n VirtualListHeaderProps<T>,\n 'columns' | 'cols' | 'resize' | 'labels' | 'classNames' | 'styles'\n> & {\n station: number;\n nav: ReturnType<typeof useHeaderNavigation>;\n};\n\n/**\n * The gear at the header's trailing edge: one checkbox per column, the reset for\n * user-set widths, and a badge counting the columns the user has hidden.\n */\nfunction ColumnToggle<T>({\n station,\n nav,\n columns,\n cols,\n resize,\n labels,\n classNames,\n styles: slotStyles,\n}: ColumnToggleProps<T>) {\n return (\n <div className={styles.virtualListToggleWrapper}>\n <Popover\n isOpen={cols.toggleOpen}\n onOpenChange={cols.setToggleOpen}\n placement={PopoverPlacement.Bottom}\n align={PopoverAlign.End}\n constrainWidth={false}\n classNames={{ panel: styles.virtualListTogglePanel }}\n content={\n <div\n className={cx(styles.virtualListTogglePopover, classNames?.togglePopover)}\n style={slotStyles?.togglePopover}\n >\n {columns\n .filter((col) => !col.hideFromToggle)\n .map((col) => (\n <Checkbox\n key={col.key}\n className={cx(styles.virtualListToggleItem, classNames?.toggleItem)}\n style={slotStyles?.toggleItem}\n selected={cols.effectiveVisible.has(col.key)}\n onToggle={() => cols.handleToggleColumn(col.key)}\n disabled={col.lockVisible}\n cursorDefault={false}\n >\n {col.toggleLabel ?? col.label}\n </Checkbox>\n ))}\n {resize.isFrozen && (\n <button\n type='button'\n className={cx(styles.virtualListToggleReset, classNames?.toggleReset)}\n style={slotStyles?.toggleReset}\n onClick={() => {\n resize.reset();\n cols.setToggleOpen(false);\n }}\n >\n {labels.resetColumnWidths}\n </button>\n )}\n </div>\n }\n >\n <button\n {...nav.getStationProps(station)}\n type='button'\n className={cx(styles.virtualListHeaderToggle, classNames?.headerToggle)}\n style={slotStyles?.headerToggle}\n aria-label={labels.toggleColumns}\n // Enter and Space are the button's own; only the arrows are ours.\n onKeyDown={(event) => nav.handleNavigationKey(event, station)}\n >\n <FontAwesomeIcon icon={faGear} style={slotStyles?.headerToggle as FaStyle} />\n </button>\n </Popover>\n {cols.manuallyHiddenCount > 0 && (\n <span\n className={cx(styles.virtualListColumnChip, classNames?.columnChip)}\n style={slotStyles?.columnChip}\n data-column-hidden-count={cols.manuallyHiddenCount}\n aria-label={labels.columnsHidden(cols.manuallyHiddenCount)}\n >\n {cols.manuallyHiddenCount}\n </span>\n )}\n </div>\n );\n}\n\nexport default VirtualListHeader;\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"./virtualList.module.mjs";import{ROW_FOCUSABLE_SELECTOR as t,ROW_PARKED_ATTRIBUTE as n}from"./virtualList.utils.mjs";import{useLayoutEffect as r,useRef as i}from"react";import a from"classnames";import{jsx as o,jsxs as s}from"react/jsx-runtime";function c({index:c,id:l,top:u,padding:d,columnTemplate:f,isSelected:p,isActive:m,manageTabStops:h,isEntered:g,activeClassName:_,activeStyle:v,showDivider:y,hover:b,onClick:x,observer:S,ariaRowIndex:C,ariaPosInSet:w,ariaSetSize:T,rowRole:E,reorderable:D,mouseDragEnabled:O,draggable:k,isDragging:A,reserveToggleGutter:j,onMouseDown:M,onMouseOver:N,onMouseLeave:P,onDragStart:F,onDragOver:I,onDragEnd:L,onDrop:R,onTouchStart:z,dropPosition:B,dropIndentPx:V,dropIndicatorClassName:H,dropIndicatorStyle:U,rowClassName:W,rowStyle:G,children:K}){let q=i(null);return r(()=>{let e=q.current;if(e&&S)return S.observe(e),()=>S.unobserve(e)},[S]),r(()=>{let e=q.current;if(!e||!h||g)return;let r=[];return e.querySelectorAll(t).forEach(e=>{r.push([e,e.getAttribute(`tabindex`)]),e.setAttribute(`tabindex`,`-1`),e.setAttribute(n,``)}),()=>{for(let[e,t]of r)t===null?e.removeAttribute(`tabindex`):e.setAttribute(`tabindex`,t),e.removeAttribute(n)}}),s(`div`,{ref:q,id:l,"data-index":c,className:a(e.virtualListRow,p&&e.virtualListRowSelected,m&&e.virtualListRowActive,m&&_,!y&&e.virtualListRowNoDivider,!b&&e.virtualListRowNoHover,D&&e.virtualListRowDraggable,A&&e.virtualListRowDragging,B===`inside`&&e.virtualListRowDropInside,W),style:{position:`absolute`,top:0,left:0,right:0,transform:`translateY(${u}px)`,...d==null?{}:{padding:d},...f?{display:`grid`,gridTemplateColumns:f}:{},...j?{paddingRight:32}:{},...G,...m?v:void 0},onClick:x,draggable:k,onMouseDown:M,onMouseOver:N,onMouseLeave:P,onDragStart:F,onDragOver:I,onDragEnd:L,onDrop:R??(O?e=>e.preventDefault():void 0),onTouchStart:z,onContextMenu:O?e=>e.preventDefault():void 0,"aria-selected":p,"aria-rowindex":C,"aria-posinset":w,"aria-setsize":T,role:E,children:[(B===`before`||B===`after`)&&o(`div`,{"data-drop-line":B,"aria-hidden":!0,className:a(e.virtualListDropLine,B===`before`?e.virtualListDropLineBefore:e.virtualListDropLineAfter,H),style:{left:V??0,...U}}),K]})}export{c as default};
|
|
1
|
+
"use client";import e from"./virtualList.module.mjs";import{ROW_FOCUSABLE_SELECTOR as t,ROW_PARKED_ATTRIBUTE as n}from"./virtualList.utils.mjs";import{useLayoutEffect as r,useRef as i}from"react";import a from"classnames";import{jsx as o,jsxs as s}from"react/jsx-runtime";function c({index:c,id:l,top:u,padding:d,columnTemplate:f,isSelected:p,isActive:m,manageTabStops:h,isEntered:g,activeClassName:_,activeStyle:v,showDivider:y,hover:b,onClick:x,observer:S,ariaRowIndex:C,ariaPosInSet:w,ariaSetSize:T,rowRole:E,reorderable:D,mouseDragEnabled:O,draggable:k,isDragging:A,reserveToggleGutter:j,onMouseDown:M,onMouseOver:N,onMouseLeave:P,onDragStart:F,onDragOver:I,onDragEnd:L,onDrop:R,onTouchStart:z,dropPosition:B,dropIndentPx:V,dropIndicatorClassName:H,dropIndicatorStyle:U,rowClassName:W,rowStyle:G,children:K}){let q=i(null);return r(()=>{let e=q.current;if(e&&S)return S.observe(e),()=>S.unobserve(e)},[S]),r(()=>{let e=q.current;if(!e||!h||g)return;let r=[];return e.querySelectorAll(t).forEach(e=>{r.push([e,e.getAttribute(`tabindex`)]),e.setAttribute(`tabindex`,`-1`),e.setAttribute(n,``)}),()=>{for(let[e,t]of r)t===null?e.removeAttribute(`tabindex`):e.setAttribute(`tabindex`,t),e.removeAttribute(n)}}),s(`div`,{ref:q,id:l,"data-index":c,className:a(e.virtualListRow,p&&e.virtualListRowSelected,m&&e.virtualListRowActive,m&&_,!y&&e.virtualListRowNoDivider,!b&&e.virtualListRowNoHover,D&&e.virtualListRowDraggable,A&&e.virtualListRowDragging,B===`inside`&&e.virtualListRowDropInside,W),style:{position:`absolute`,top:0,left:0,right:0,transform:`translateY(${u}px)`,...d==null?{}:{padding:d},...f?{display:`grid`,gridTemplateColumns:f}:{},...j?{paddingRight:32}:{},...G,...m?v:void 0},onClick:x,draggable:k,onMouseDown:M,onMouseOver:N,onMouseLeave:P,onDragStart:F,onDragOver:I,onDragEnd:L,onDrop:R??(O?e=>e.preventDefault():void 0),onTouchStart:z,onContextMenu:O?e=>e.preventDefault():void 0,"aria-selected":p,"aria-rowindex":C,"aria-posinset":w,"aria-setsize":T,role:E,children:[(B===`before`||B===`after`)&&o(`div`,{"data-drop-line":B,"aria-hidden":!0,className:a(e.virtualListDropLine,B===`before`?e.virtualListDropLineBefore:e.virtualListDropLineAfter,H),style:{left:V??0,...U}}),K]})}export{c as default};
|
|
2
2
|
//# sourceMappingURL=virtualRow.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"virtualRow.mjs","names":[],"sources":["../../../../package/common/virtualList/virtualRow.tsx"],"sourcesContent":["import React, { useRef, useLayoutEffect } from 'react';\nimport cx from 'classnames';\n\nimport styles from './virtualList.module.pcss';\nimport { ROW_FOCUSABLE_SELECTOR, ROW_PARKED_ATTRIBUTE } from './virtualList.utils';\nimport type { TreeDropPosition } from './virtualList.types';\n\nexport interface VirtualRowProps {\n index: number;\n /** Referenced by the list's `aria-activedescendant` while this row is active. */\n id?: string;\n top: number;\n /** Padding applied to the row (already normalised to a CSS string). */\n padding?: string;\n columnTemplate: string | undefined;\n isSelected: boolean;\n /** The row the arrow keys are on. Distinct from selection. */\n isActive?: boolean;\n /**\n * Hold this row's own controls out of the tab order unless it is the row being\n * used. Off when the list leaves the keyboard to its rows.\n */\n manageTabStops?: boolean;\n /** This is the row being used, so its controls are reachable with Tab. */\n isEntered?: boolean;\n activeClassName?: string;\n activeStyle?: React.CSSProperties;\n showDivider: boolean;\n hover: boolean;\n onClick: () => void;\n observer: ResizeObserver | null;\n ariaRowIndex?: number;\n ariaPosInSet?: number;\n ariaSetSize?: number;\n rowRole: string;\n reorderable?: boolean;\n /**\n * Native mouse DnD is active for the list. Distinct from `draggable`, which in\n * `dragHandle` mode is only set on the row the pointer has armed.\n */\n mouseDragEnabled?: boolean;\n draggable?: boolean;\n isDragging?: boolean;\n reserveToggleGutter?: boolean;\n onMouseDown?: (e: React.MouseEvent<HTMLDivElement>) => void;\n onMouseOver?: (e: React.MouseEvent<HTMLDivElement>) => void;\n onMouseLeave?: (e: React.MouseEvent<HTMLDivElement>) => void;\n onDragStart?: (e: React.DragEvent<HTMLDivElement>) => void;\n onDragOver?: (e: React.DragEvent<HTMLDivElement>) => void;\n onDragEnd?: () => void;\n onDrop?: (e: React.DragEvent<HTMLDivElement>) => void;\n onTouchStart?: (e: React.TouchEvent<HTMLDivElement>) => void;\n dropPosition?: TreeDropPosition;\n dropIndentPx?: number;\n dropIndicatorClassName?: string;\n dropIndicatorStyle?: React.CSSProperties;\n rowClassName?: string;\n rowStyle?: React.CSSProperties;\n children: React.ReactNode;\n}\n\n/**\n * A single virtualized row: absolutely positioned at its `top`, optionally a\n * grid (table mode), registering itself with the shared ResizeObserver and\n * carrying all the drag / drop-indicator wiring the parent assigns it.\n */\nfunction VirtualRow({\n index,\n id,\n top,\n padding,\n columnTemplate,\n isSelected,\n isActive,\n manageTabStops,\n isEntered,\n activeClassName,\n activeStyle,\n showDivider,\n hover,\n onClick,\n observer,\n ariaRowIndex,\n ariaPosInSet,\n ariaSetSize,\n rowRole,\n reorderable,\n mouseDragEnabled,\n draggable,\n isDragging,\n reserveToggleGutter,\n onMouseDown,\n onMouseOver,\n onMouseLeave,\n onDragStart,\n onDragOver,\n onDragEnd,\n onDrop,\n onTouchStart,\n dropPosition,\n dropIndentPx,\n dropIndicatorClassName,\n dropIndicatorStyle,\n rowClassName,\n rowStyle,\n children,\n}: VirtualRowProps) {\n const ref = useRef<HTMLDivElement>(null);\n\n // A single observer is shared across all rows (created by the parent); each\n // row just registers/unregisters its element. The parent reads the row index\n // back from the `data-index` attribute when the observer fires.\n useLayoutEffect(() => {\n const el = ref.current;\n if (!el || !observer) return;\n observer.observe(el);\n return () => observer.unobserve(el);\n }, [observer]);\n\n // One row at a time carries tab stops. Without this every control in every\n // rendered row is one, the set changes as the list scrolls, and tabbing\n // through a windowed list leaves it at an arbitrary point: the next row does\n // not exist in the DOM yet when the browser looks for the next stop.\n //\n // Runs on every commit of the row rather than on a dependency list, because\n // the cells are the consumer's and can change without anything here changing.\n // The selector only matches what is in the tab order to begin with, and an\n // attribute write invalidates no layout, so a scroll frame pays a query per\n // row and nothing else.\n useLayoutEffect(() => {\n const el = ref.current;\n if (!el || !manageTabStops || isEntered) return;\n const restore: [HTMLElement, string | null][] = [];\n el.querySelectorAll<HTMLElement>(ROW_FOCUSABLE_SELECTOR).forEach((node) => {\n restore.push([node, node.getAttribute('tabindex')]);\n node.setAttribute('tabindex', '-1');\n node.setAttribute(ROW_PARKED_ATTRIBUTE, '');\n });\n return () => {\n for (const [node, previous] of restore) {\n if (previous === null) node.removeAttribute('tabindex');\n else node.setAttribute('tabindex', previous);\n node.removeAttribute(ROW_PARKED_ATTRIBUTE);\n }\n };\n });\n\n return (\n <div\n ref={ref}\n id={id}\n data-index={index}\n className={cx(\n styles.virtualListRow,\n isSelected && styles.virtualListRowSelected,\n isActive && styles.virtualListRowActive,\n isActive && activeClassName,\n !showDivider && styles.virtualListRowNoDivider,\n !hover && styles.virtualListRowNoHover,\n reorderable && styles.virtualListRowDraggable,\n isDragging && styles.virtualListRowDragging,\n dropPosition === 'inside' && styles.virtualListRowDropInside,\n rowClassName,\n )}\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n transform: `translateY(${top}px)`,\n ...(padding != null ? { padding } : {}),\n ...(columnTemplate ? { display: 'grid', gridTemplateColumns: columnTemplate } : {}),\n // Match the header's reserved gutter for the column-toggle cog so row\n // cells line up with their header cells instead of drifting under it.\n // Applied after `padding` so the alignment gutter always wins on the right.\n ...(reserveToggleGutter ? { paddingRight: 32 } : {}),\n ...rowStyle,\n ...(isActive ? activeStyle : undefined),\n }}\n onClick={onClick}\n draggable={draggable}\n onMouseDown={onMouseDown}\n onMouseOver={onMouseOver}\n onMouseLeave={onMouseLeave}\n onDragStart={onDragStart}\n onDragOver={onDragOver}\n onDragEnd={onDragEnd}\n onDrop={onDrop ?? (mouseDragEnabled ? (e) => e.preventDefault() : undefined)}\n onTouchStart={onTouchStart}\n onContextMenu={mouseDragEnabled ? (e) => e.preventDefault() : undefined}\n aria-selected={isSelected}\n aria-rowindex={ariaRowIndex}\n aria-posinset={ariaPosInSet}\n aria-setsize={ariaSetSize}\n role={rowRole}\n >\n {(dropPosition === 'before' || dropPosition === 'after') && (\n <div\n data-drop-line={dropPosition}\n aria-hidden\n className={cx(\n styles.virtualListDropLine,\n dropPosition === 'before' ? styles.virtualListDropLineBefore : styles.virtualListDropLineAfter,\n dropIndicatorClassName,\n )}\n style={{ left: dropIndentPx ?? 0, ...dropIndicatorStyle }}\n />\n )}\n {children}\n </div>\n );\n}\n\nexport default VirtualRow;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"virtualRow.mjs","names":[],"sources":["../../../../package/common/virtualList/virtualRow.tsx"],"sourcesContent":["import React, { useRef, useLayoutEffect } from 'react';\nimport cx from 'classnames';\n\nimport styles from './virtualList.module.pcss';\nimport { ROW_FOCUSABLE_SELECTOR, ROW_PARKED_ATTRIBUTE } from './virtualList.utils';\nimport type { TreeDropPosition } from './virtualList.types';\n\nexport interface VirtualRowProps {\n index: number;\n /** Referenced by the list's `aria-activedescendant` while this row is active. */\n id?: string;\n top: number;\n /** Padding applied to the row (already normalised to a CSS string). */\n padding?: string;\n columnTemplate: string | undefined;\n isSelected: boolean;\n /** The row the arrow keys are on. Distinct from selection. */\n isActive?: boolean;\n /**\n * Hold this row's own controls out of the tab order unless it is the row being\n * used. Off when the list leaves the keyboard to its rows.\n */\n manageTabStops?: boolean;\n /** This is the row being used, so its controls are reachable with Tab. */\n isEntered?: boolean;\n activeClassName?: string;\n activeStyle?: React.CSSProperties;\n showDivider: boolean;\n hover: boolean;\n onClick: () => void;\n observer: ResizeObserver | null;\n ariaRowIndex?: number;\n ariaPosInSet?: number;\n ariaSetSize?: number;\n rowRole: string;\n reorderable?: boolean;\n /**\n * Native mouse DnD is active for the list. Distinct from `draggable`, which in\n * `dragHandle` mode is only set on the row the pointer has armed.\n */\n mouseDragEnabled?: boolean;\n draggable?: boolean;\n isDragging?: boolean;\n reserveToggleGutter?: boolean;\n onMouseDown?: (e: React.MouseEvent<HTMLDivElement>) => void;\n onMouseOver?: (e: React.MouseEvent<HTMLDivElement>) => void;\n onMouseLeave?: (e: React.MouseEvent<HTMLDivElement>) => void;\n onDragStart?: (e: React.DragEvent<HTMLDivElement>) => void;\n onDragOver?: (e: React.DragEvent<HTMLDivElement>) => void;\n onDragEnd?: () => void;\n onDrop?: (e: React.DragEvent<HTMLDivElement>) => void;\n onTouchStart?: (e: React.TouchEvent<HTMLDivElement>) => void;\n dropPosition?: TreeDropPosition;\n dropIndentPx?: number;\n dropIndicatorClassName?: string;\n dropIndicatorStyle?: React.CSSProperties;\n rowClassName?: string;\n rowStyle?: React.CSSProperties;\n children: React.ReactNode;\n}\n\n/**\n * A single virtualized row: absolutely positioned at its `top`, optionally a\n * grid (table mode), registering itself with the shared ResizeObserver and\n * carrying all the drag / drop-indicator wiring the parent assigns it.\n */\nfunction VirtualRow({\n index,\n id,\n top,\n padding,\n columnTemplate,\n isSelected,\n isActive,\n manageTabStops,\n isEntered,\n activeClassName,\n activeStyle,\n showDivider,\n hover,\n onClick,\n observer,\n ariaRowIndex,\n ariaPosInSet,\n ariaSetSize,\n rowRole,\n reorderable,\n mouseDragEnabled,\n draggable,\n isDragging,\n reserveToggleGutter,\n onMouseDown,\n onMouseOver,\n onMouseLeave,\n onDragStart,\n onDragOver,\n onDragEnd,\n onDrop,\n onTouchStart,\n dropPosition,\n dropIndentPx,\n dropIndicatorClassName,\n dropIndicatorStyle,\n rowClassName,\n rowStyle,\n children,\n}: VirtualRowProps) {\n const ref = useRef<HTMLDivElement>(null);\n\n // A single observer is shared across all rows (created by the parent); each\n // row just registers/unregisters its element. The parent reads the row index\n // back from the `data-index` attribute when the observer fires.\n useLayoutEffect(() => {\n const el = ref.current;\n if (!el || !observer) return;\n observer.observe(el);\n return () => observer.unobserve(el);\n }, [observer]);\n\n // One row at a time carries tab stops. Without this every control in every\n // rendered row is one, the set changes as the list scrolls, and tabbing\n // through a windowed list leaves it at an arbitrary point: the next row does\n // not exist in the DOM yet when the browser looks for the next stop.\n //\n // Runs on every commit of the row rather than on a dependency list, because\n // the cells are the consumer's and can change without anything here changing.\n // The selector only matches what is in the tab order to begin with, and an\n // attribute write invalidates no layout, so a scroll frame pays a query per\n // row and nothing else.\n useLayoutEffect(() => {\n const el = ref.current;\n if (!el || !manageTabStops || isEntered) return;\n const restore: [HTMLElement, string | null][] = [];\n el.querySelectorAll<HTMLElement>(ROW_FOCUSABLE_SELECTOR).forEach((node) => {\n restore.push([node, node.getAttribute('tabindex')]);\n node.setAttribute('tabindex', '-1');\n node.setAttribute(ROW_PARKED_ATTRIBUTE, '');\n });\n return () => {\n for (const [node, previous] of restore) {\n if (previous === null) node.removeAttribute('tabindex');\n else node.setAttribute('tabindex', previous);\n node.removeAttribute(ROW_PARKED_ATTRIBUTE);\n }\n };\n });\n\n return (\n <div\n ref={ref}\n id={id}\n data-index={index}\n className={cx(\n styles.virtualListRow,\n isSelected && styles.virtualListRowSelected,\n isActive && styles.virtualListRowActive,\n isActive && activeClassName,\n !showDivider && styles.virtualListRowNoDivider,\n !hover && styles.virtualListRowNoHover,\n reorderable && styles.virtualListRowDraggable,\n isDragging && styles.virtualListRowDragging,\n dropPosition === 'inside' && styles.virtualListRowDropInside,\n rowClassName,\n )}\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n transform: `translateY(${top}px)`,\n ...(padding != null ? { padding } : {}),\n ...(columnTemplate ? { display: 'grid', gridTemplateColumns: columnTemplate } : {}),\n // Match the header's reserved gutter for the column-toggle cog so row\n // cells line up with their header cells instead of drifting under it.\n // Applied after `padding` so the alignment gutter always wins on the right.\n ...(reserveToggleGutter ? { paddingRight: 32 } : {}),\n ...rowStyle,\n ...(isActive ? activeStyle : undefined),\n }}\n onClick={onClick}\n draggable={draggable}\n onMouseDown={onMouseDown}\n onMouseOver={onMouseOver}\n onMouseLeave={onMouseLeave}\n onDragStart={onDragStart}\n onDragOver={onDragOver}\n onDragEnd={onDragEnd}\n onDrop={onDrop ?? (mouseDragEnabled ? (e) => e.preventDefault() : undefined)}\n onTouchStart={onTouchStart}\n onContextMenu={mouseDragEnabled ? (e) => e.preventDefault() : undefined}\n aria-selected={isSelected}\n aria-rowindex={ariaRowIndex}\n aria-posinset={ariaPosInSet}\n aria-setsize={ariaSetSize}\n role={rowRole}\n >\n {(dropPosition === 'before' || dropPosition === 'after') && (\n <div\n data-drop-line={dropPosition}\n aria-hidden\n className={cx(\n styles.virtualListDropLine,\n dropPosition === 'before' ? styles.virtualListDropLineBefore : styles.virtualListDropLineAfter,\n dropIndicatorClassName,\n )}\n style={{ left: dropIndentPx ?? 0, ...dropIndicatorStyle }}\n />\n )}\n {children}\n </div>\n );\n}\n\nexport default VirtualRow;\n"],"mappings":"gRAkEA,SAAS,EAAW,CAClB,QACA,KACA,MACA,UACA,iBACA,aACA,WACA,iBACA,YACA,kBACA,cACA,cACA,QACA,UACA,WACA,eACA,eACA,cACA,UACA,cACA,mBACA,YACA,aACA,sBACA,cACA,cACA,eACA,cACA,aACA,YACA,SACA,eACA,eACA,eACA,yBACA,qBACA,eACA,WACA,YACkB,CAClB,IAAM,EAAM,EAAuB,IAAI,EAwCvC,OAnCA,MAAsB,CACpB,IAAM,EAAK,EAAI,QACX,GAAC,GAAO,EAEZ,OADA,EAAS,QAAQ,CAAE,MACN,EAAS,UAAU,CAAE,CACpC,EAAG,CAAC,CAAQ,CAAC,EAYb,MAAsB,CACpB,IAAM,EAAK,EAAI,QACf,GAAI,CAAC,GAAM,CAAC,GAAkB,EAAW,OACzC,IAAM,EAA0C,CAAC,EAMjD,OALA,EAAG,iBAA8B,CAAsB,CAAC,CAAC,QAAS,GAAS,CACzE,EAAQ,KAAK,CAAC,EAAM,EAAK,aAAa,UAAU,CAAC,CAAC,EAClD,EAAK,aAAa,WAAY,IAAI,EAClC,EAAK,aAAa,EAAsB,EAAE,CAC5C,CAAC,MACY,CACX,IAAK,GAAM,CAAC,EAAM,KAAa,EACzB,IAAa,KAAM,EAAK,gBAAgB,UAAU,EACjD,EAAK,aAAa,WAAY,CAAQ,EAC3C,EAAK,gBAAgB,CAAoB,CAE7C,CACF,CAAC,EAGC,EAAC,MAAD,CACO,MACD,KACJ,aAAY,EACZ,UAAW,EACT,EAAO,eACP,GAAc,EAAO,uBACrB,GAAY,EAAO,qBACnB,GAAY,EACZ,CAAC,GAAe,EAAO,wBACvB,CAAC,GAAS,EAAO,sBACjB,GAAe,EAAO,wBACtB,GAAc,EAAO,uBACrB,IAAiB,UAAY,EAAO,yBACpC,CACF,EACA,MAAO,CACL,SAAU,WACV,IAAK,EACL,KAAM,EACN,MAAO,EACP,UAAW,cAAc,EAAI,KAC7B,GAAI,GAAW,KAAqB,CAAC,EAAf,CAAE,SAAQ,EAChC,GAAI,EAAiB,CAAE,QAAS,OAAQ,oBAAqB,CAAe,EAAI,CAAC,EAIjF,GAAI,EAAsB,CAAE,aAAc,EAAG,EAAI,CAAC,EAClD,GAAG,EACH,GAAI,EAAW,EAAc,IAAA,EAC/B,EACS,UACE,YACE,cACA,cACC,eACD,cACD,aACD,YACX,OAAQ,IAAW,EAAoB,GAAM,EAAE,eAAe,EAAI,IAAA,IACpD,eACd,cAAe,EAAoB,GAAM,EAAE,eAAe,EAAI,IAAA,GAC9D,gBAAe,EACf,gBAAe,EACf,gBAAe,EACf,eAAc,EACd,KAAM,EA9CR,SAAA,EAgDI,IAAiB,UAAY,IAAiB,UAC9C,EAAC,MAAD,CACE,iBAAgB,EAChB,cAAA,GACA,UAAW,EACT,EAAO,oBACP,IAAiB,SAAW,EAAO,0BAA4B,EAAO,yBACtE,CACF,EACA,MAAO,CAAE,KAAM,GAAgB,EAAG,GAAG,CAAmB,CACzD,CAAA,EAEF,CACE,GAET"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"./wizard.module.mjs";import{useEffect as t,useRef as n,useState as r}from"react";import i from"classnames";import{jsx as a}from"react/jsx-runtime";function o({currentStep:o=0,stepCount:s=0,renderStep:c=()=>null,className:l,style:u,classNames:d,styles:f,...p}){let[m,h]=r(void 0),[g,_]=r(!1),[v,y]=r(o),b=n([]),x=n(null);o!==v&&(y(o),_(!0)),t(()=>{if(!g)return;let e=setTimeout(()=>_(!1),400);return()=>clearTimeout(e)},[g]),t(()=>{x.current?.disconnect();let e=b.current[o];if(e)return h(e.clientHeight),x.current=new ResizeObserver(()=>{h(e.clientHeight)}),x.current.observe(e),()=>x.current?.disconnect()},[o,s]);let S={...m===void 0?{}:{height:`${m}px`},...f?.root,...u};return a(`div`,{...p,className:i(e.wizard,d?.root,l),style:S,children:a(`div`,{className:i(e.wizardContentContainer,d?.container),style:{width:`${s*100}%`,marginLeft:`-${o*100}%`,...f?.container},children:Array.from({length:s},(t,n)=>a(`div`,{ref:e=>{b.current[n]=e},className:i(e.wizardContent,d?.step),style:{width:`${100/s}%`,marginLeft:`${100/s*n}%`,...f?.step},children:a(`div`,{className:i({[e.wizardContentOutOfFrame]:o!==n&&!g},d?.stepContent),style:f?.stepContent,inert:o!==n||void 0,children:c(n)})},`wizardStep${n}`))})})}export{o as default};
|
|
1
|
+
"use client";import e from"./wizard.module.mjs";import{useEffect as t,useRef as n,useState as r}from"react";import i from"classnames";import{jsx as a}from"react/jsx-runtime";function o({currentStep:o=0,stepCount:s=0,renderStep:c=()=>null,className:l,style:u,classNames:d,styles:f,...p}){let[m,h]=r(void 0),[g,_]=r(!1),[v,y]=r(o),b=n([]),x=n(null);o!==v&&(y(o),_(!0)),t(()=>{if(!g)return;let e=setTimeout(()=>_(!1),400);return()=>clearTimeout(e)},[g]),t(()=>{x.current?.disconnect();let e=b.current[o];if(e)return h(e.clientHeight),x.current=new ResizeObserver(()=>{h(e.clientHeight)}),x.current.observe(e),()=>x.current?.disconnect()},[o,s]);let S={...m===void 0?{}:{height:`${m}px`},...f?.root,...u};return a(`div`,{...p,className:i(e.wizard,d?.root,l),style:S,children:a(`div`,{className:i(e.wizardContentContainer,d?.container),style:{width:`${s*100}%`,marginLeft:`-${o*100}%`,...f?.container},children:Array.from({length:s},(t,n)=>a(`div`,{ref:e=>{b.current[n]=e},className:i(e.wizardContent,d?.step),style:{width:`${100/s}%`,marginLeft:`${100/s*n}%`,...f?.step},children:a(`div`,{className:i({[e.wizardContentOutOfFrame]:o!==n&&!g},d?.stepContent),style:f?.stepContent,inert:o!==n||void 0,children:c(n)})},`wizardStep${n}`))})})}export{o as default};
|
|
2
2
|
//# sourceMappingURL=wizard.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wizard.mjs","names":[],"sources":["../../../../package/common/wizard/wizard.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport cx from 'classnames';\nimport styles from './wizard.module.pcss';\nimport type { WizardProps } from './wizard.types';\n\nexport default function Wizard({\n currentStep = 0,\n stepCount = 0,\n renderStep = () => null,\n className,\n style,\n classNames,\n styles: slotStyles,\n ...rest\n}: WizardProps) {\n const [height, setHeight] = useState<number | undefined>(undefined);\n const [showOtherContent, setShowOtherContent] = useState(false);\n const [prevStep, setPrevStep] = useState(currentStep);\n const stepRefs = useRef<(HTMLDivElement | null)[]>([]);\n const resizeObserverRef = useRef<ResizeObserver | null>(null);\n\n // When currentStep changes, briefly show off-screen steps so they animate out.\n if (currentStep !== prevStep) {\n setPrevStep(currentStep);\n setShowOtherContent(true);\n }\n\n useEffect(() => {\n if (!showOtherContent) return;\n const id = setTimeout(() => setShowOtherContent(false), 400);\n return () => clearTimeout(id);\n }, [showOtherContent]);\n\n // Track the height of the active step via ResizeObserver.\n useEffect(() => {\n resizeObserverRef.current?.disconnect();\n const el = stepRefs.current[currentStep];\n if (!el) return;\n setHeight(el.clientHeight);\n resizeObserverRef.current = new ResizeObserver(() => {\n setHeight(el.clientHeight);\n });\n resizeObserverRef.current.observe(el);\n return () => resizeObserverRef.current?.disconnect();\n }, [currentStep, stepCount]);\n\n const rootStyle: React.CSSProperties = {\n ...(height !== undefined ? { height: `${height}px` } : {}),\n ...slotStyles?.root,\n ...style,\n };\n\n return (\n <div {...rest} className={cx(styles.wizard, classNames?.root, className)} style={rootStyle}>\n <div\n className={cx(styles.wizardContentContainer, classNames?.container)}\n style={{\n width: `${stepCount * 100}%`,\n marginLeft: `-${currentStep * 100}%`,\n ...slotStyles?.container,\n }}\n >\n {Array.from({ length: stepCount }, (_, index) => (\n <div\n key={`wizardStep${index}`}\n ref={(ref) => {\n stepRefs.current[index] = ref;\n }}\n className={cx(styles.wizardContent, classNames?.step)}\n style={{\n width: `${100 / stepCount}%`,\n marginLeft: `${(100 / stepCount) * index}%`,\n ...slotStyles?.step,\n }}\n >\n <div\n className={cx(\n { [styles.wizardContentOutOfFrame]: currentStep !== index && !showOtherContent },\n classNames?.stepContent,\n )}\n style={slotStyles?.stepContent}\n inert={currentStep !== index ? true : undefined}\n >\n {renderStep(index)}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"wizard.mjs","names":[],"sources":["../../../../package/common/wizard/wizard.tsx"],"sourcesContent":["import React, { useEffect, useRef, useState } from 'react';\nimport cx from 'classnames';\nimport styles from './wizard.module.pcss';\nimport type { WizardProps } from './wizard.types';\n\nexport default function Wizard({\n currentStep = 0,\n stepCount = 0,\n renderStep = () => null,\n className,\n style,\n classNames,\n styles: slotStyles,\n ...rest\n}: WizardProps) {\n const [height, setHeight] = useState<number | undefined>(undefined);\n const [showOtherContent, setShowOtherContent] = useState(false);\n const [prevStep, setPrevStep] = useState(currentStep);\n const stepRefs = useRef<(HTMLDivElement | null)[]>([]);\n const resizeObserverRef = useRef<ResizeObserver | null>(null);\n\n // When currentStep changes, briefly show off-screen steps so they animate out.\n if (currentStep !== prevStep) {\n setPrevStep(currentStep);\n setShowOtherContent(true);\n }\n\n useEffect(() => {\n if (!showOtherContent) return;\n const id = setTimeout(() => setShowOtherContent(false), 400);\n return () => clearTimeout(id);\n }, [showOtherContent]);\n\n // Track the height of the active step via ResizeObserver.\n useEffect(() => {\n resizeObserverRef.current?.disconnect();\n const el = stepRefs.current[currentStep];\n if (!el) return;\n setHeight(el.clientHeight);\n resizeObserverRef.current = new ResizeObserver(() => {\n setHeight(el.clientHeight);\n });\n resizeObserverRef.current.observe(el);\n return () => resizeObserverRef.current?.disconnect();\n }, [currentStep, stepCount]);\n\n const rootStyle: React.CSSProperties = {\n ...(height !== undefined ? { height: `${height}px` } : {}),\n ...slotStyles?.root,\n ...style,\n };\n\n return (\n <div {...rest} className={cx(styles.wizard, classNames?.root, className)} style={rootStyle}>\n <div\n className={cx(styles.wizardContentContainer, classNames?.container)}\n style={{\n width: `${stepCount * 100}%`,\n marginLeft: `-${currentStep * 100}%`,\n ...slotStyles?.container,\n }}\n >\n {Array.from({ length: stepCount }, (_, index) => (\n <div\n key={`wizardStep${index}`}\n ref={(ref) => {\n stepRefs.current[index] = ref;\n }}\n className={cx(styles.wizardContent, classNames?.step)}\n style={{\n width: `${100 / stepCount}%`,\n marginLeft: `${(100 / stepCount) * index}%`,\n ...slotStyles?.step,\n }}\n >\n <div\n className={cx(\n { [styles.wizardContentOutOfFrame]: currentStep !== index && !showOtherContent },\n classNames?.stepContent,\n )}\n style={slotStyles?.stepContent}\n inert={currentStep !== index ? true : undefined}\n >\n {renderStep(index)}\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n"],"mappings":"8KAKA,SAAwB,EAAO,CAC7B,cAAc,EACd,YAAY,EACZ,iBAAmB,KACnB,YACA,QACA,aACA,OAAQ,EACR,GAAG,GACW,CACd,GAAM,CAAC,EAAQ,GAAa,EAA6B,IAAA,EAAS,EAC5D,CAAC,EAAkB,GAAuB,EAAS,EAAK,EACxD,CAAC,EAAU,GAAe,EAAS,CAAW,EAC9C,EAAW,EAAkC,CAAC,CAAC,EAC/C,EAAoB,EAA8B,IAAI,EAGxD,IAAgB,IAClB,EAAY,CAAW,EACvB,EAAoB,EAAI,GAG1B,MAAgB,CACd,GAAI,CAAC,EAAkB,OACvB,IAAM,EAAK,eAAiB,EAAoB,EAAK,EAAG,GAAG,EAC3D,UAAa,aAAa,CAAE,CAC9B,EAAG,CAAC,CAAgB,CAAC,EAGrB,MAAgB,CACd,EAAkB,SAAS,WAAW,EACtC,IAAM,EAAK,EAAS,QAAQ,GACvB,KAML,OALA,EAAU,EAAG,YAAY,EACzB,EAAkB,QAAU,IAAI,mBAAqB,CACnD,EAAU,EAAG,YAAY,CAC3B,CAAC,EACD,EAAkB,QAAQ,QAAQ,CAAE,MACvB,EAAkB,SAAS,WAAW,CACrD,EAAG,CAAC,EAAa,CAAS,CAAC,EAE3B,IAAM,EAAiC,CACrC,GAAI,IAAW,IAAA,GAAwC,CAAC,EAA7B,CAAE,OAAQ,GAAG,EAAO,GAAI,EACnD,GAAG,GAAY,KACf,GAAG,CACL,EAEA,OACE,EAAC,MAAD,CAAK,GAAI,EAAM,UAAW,EAAG,EAAO,OAAQ,GAAY,KAAM,CAAS,EAAG,MAAO,EAC/E,SAAA,EAAC,MAAD,CACE,UAAW,EAAG,EAAO,uBAAwB,GAAY,SAAS,EAClE,MAAO,CACL,MAAO,GAAG,EAAY,IAAI,GAC1B,WAAY,IAAI,EAAc,IAAI,GAClC,GAAG,GAAY,SACjB,EAEC,SAAA,MAAM,KAAK,CAAE,OAAQ,CAAU,GAAI,EAAG,IACrC,EAAC,MAAD,CAEE,IAAM,GAAQ,CACZ,EAAS,QAAQ,GAAS,CAC5B,EACA,UAAW,EAAG,EAAO,cAAe,GAAY,IAAI,EACpD,MAAO,CACL,MAAO,GAAG,IAAM,EAAU,GAC1B,WAAY,GAAI,IAAM,EAAa,EAAM,GACzC,GAAG,GAAY,IACjB,EAEA,SAAA,EAAC,MAAD,CACE,UAAW,EACT,EAAG,EAAO,yBAA0B,IAAgB,GAAS,CAAC,CAAiB,EAC/E,GAAY,WACd,EACA,MAAO,GAAY,YACnB,MAAO,IAAgB,GAAe,IAAA,GAErC,SAAA,EAAW,CAAK,CACd,CAAA,CACF,EArBE,aAAa,GAqBf,CACN,CACE,CAAA,CACF,CAAA,CAET"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=`wizard_uRBAN`,t=`wizard-content_lcl4C`,n=`wizard-content-outOfFrame_Eks4Y`,r=`wizard-content-container_yxbCJ`,i={wizard:e,"wizard-content":`wizard-content_lcl4C`,wizardContent:t,"wizard-content-outOfFrame":`wizard-content-outOfFrame_Eks4Y`,wizardContentOutOfFrame:n,"wizard-content-container":`wizard-content-container_yxbCJ`,wizardContentContainer:r};export{i as default,e as wizard,t as wizardContent,r as wizardContentContainer,n as wizardContentOutOfFrame};
|
|
1
|
+
"use client";var e=`wizard_uRBAN`,t=`wizard-content_lcl4C`,n=`wizard-content-outOfFrame_Eks4Y`,r=`wizard-content-container_yxbCJ`,i={wizard:e,"wizard-content":`wizard-content_lcl4C`,wizardContent:t,"wizard-content-outOfFrame":`wizard-content-outOfFrame_Eks4Y`,wizardContentOutOfFrame:n,"wizard-content-container":`wizard-content-container_yxbCJ`,wizardContentContainer:r};export{i as default,e as wizard,t as wizardContent,r as wizardContentContainer,n as wizardContentOutOfFrame};
|
|
2
2
|
//# sourceMappingURL=wizard.module.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wizard.module.mjs","names":[],"sources":["../../../../package/common/wizard/wizard.module.pcss"],"sourcesContent":[".wizard {\n height: 100%;\n width: 100%;\n position: relative;\n overflow: hidden;\n transition: all 0.2s;\n padding: 1px;\n\n &-content {\n position: absolute;\n height: fit-content;\n\n &-outOfFrame {\n * {\n user-select: none;\n pointer-events: none;\n visibility: hidden;\n display: none;\n }\n }\n\n &-container {\n display: flex;\n transition: all 0.6s;\n position: relative;\n }\n }\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"wizard.module.mjs","names":[],"sources":["../../../../package/common/wizard/wizard.module.pcss"],"sourcesContent":[".wizard {\n height: 100%;\n width: 100%;\n position: relative;\n overflow: hidden;\n transition: all 0.2s;\n padding: 1px;\n\n &-content {\n position: absolute;\n height: fit-content;\n\n &-outOfFrame {\n * {\n user-select: none;\n pointer-events: none;\n visibility: hidden;\n display: none;\n }\n }\n\n &-container {\n display: flex;\n transition: all 0.6s;\n position: relative;\n }\n }\n}\n\n/* The step slide is the whole component's motion; without it a step change is an instant swap,\n which is the point. */\n@media (prefers-reduced-motion: reduce) {\n .wizard,\n .wizard-content-container {\n transition: none;\n }\n}\n"],"mappings":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useEffect as e,useState as t}from"react";var n=768;function r(){let[r,i]=t(()=>({width:window.innerWidth,height:window.innerHeight,isMobileSize:window.innerWidth<n}));return e(()=>{function e(){i({width:window.innerWidth,height:window.innerHeight,isMobileSize:window.innerWidth<n})}return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]),r}export{r as default};
|
|
1
|
+
"use client";import{useEffect as e,useState as t}from"react";var n=768;function r(){let[r,i]=t(()=>({width:window.innerWidth,height:window.innerHeight,isMobileSize:window.innerWidth<n}));return e(()=>{function e(){i({width:window.innerWidth,height:window.innerHeight,isMobileSize:window.innerWidth<n})}return window.addEventListener(`resize`,e),()=>window.removeEventListener(`resize`,e)},[]),r}export{r as default};
|
|
2
2
|
//# sourceMappingURL=useWindowSize.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWindowSize.mjs","names":[],"sources":["../../../package/hooks/useWindowSize.ts"],"sourcesContent":["import { useState, useEffect } from 'react';\n\nconst MOBILE_BREAKPOINT = 768;\n\nexport interface WindowSize {\n width: number;\n height: number;\n isMobileSize: boolean;\n}\n\nexport default function useWindowSize(): WindowSize {\n const [size, setSize] = useState<WindowSize>(() => ({\n width: window.innerWidth,\n height: window.innerHeight,\n isMobileSize: window.innerWidth < MOBILE_BREAKPOINT,\n }));\n\n useEffect(() => {\n function onResize() {\n setSize({\n width: window.innerWidth,\n height: window.innerHeight,\n isMobileSize: window.innerWidth < MOBILE_BREAKPOINT,\n });\n }\n window.addEventListener('resize', onResize);\n return () => window.removeEventListener('resize', onResize);\n }, []);\n\n return size;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useWindowSize.mjs","names":[],"sources":["../../../package/hooks/useWindowSize.ts"],"sourcesContent":["import { useState, useEffect } from 'react';\n\nconst MOBILE_BREAKPOINT = 768;\n\nexport interface WindowSize {\n width: number;\n height: number;\n isMobileSize: boolean;\n}\n\nexport default function useWindowSize(): WindowSize {\n const [size, setSize] = useState<WindowSize>(() => ({\n width: window.innerWidth,\n height: window.innerHeight,\n isMobileSize: window.innerWidth < MOBILE_BREAKPOINT,\n }));\n\n useEffect(() => {\n function onResize() {\n setSize({\n width: window.innerWidth,\n height: window.innerHeight,\n isMobileSize: window.innerWidth < MOBILE_BREAKPOINT,\n });\n }\n window.addEventListener('resize', onResize);\n return () => window.removeEventListener('resize', onResize);\n }, []);\n\n return size;\n}\n"],"mappings":"6DAEA,IAAM,EAAoB,IAQ1B,SAAwB,GAA4B,CAClD,GAAM,CAAC,EAAM,GAAW,OAA4B,CAClD,MAAO,OAAO,WACd,OAAQ,OAAO,YACf,aAAc,OAAO,WAAa,CACpC,EAAE,EAcF,OAZA,MAAgB,CACd,SAAS,GAAW,CAClB,EAAQ,CACN,MAAO,OAAO,WACd,OAAQ,OAAO,YACf,aAAc,OAAO,WAAa,CACpC,CAAC,CACH,CAEA,OADA,OAAO,iBAAiB,SAAU,CAAQ,MAC7B,OAAO,oBAAoB,SAAU,CAAQ,CAC5D,EAAG,CAAC,CAAC,EAEE,CACT"}
|
package/dist/esm/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{AccordionStyleType as e}from"./common/accordion/accordion.types.mjs";import t from"./common/configProvider/configProvider.mjs";import{useComponentDefaults as n}from"./common/configProvider/useComponentDefaults.mjs";import{useLabels as r}from"./common/configProvider/useLabels.mjs";import{usePresentationDefault as i}from"./common/configProvider/usePresentationDefault.mjs";import{Presentation as a}from"./common/configProvider/presentation.types.mjs";import o from"./common/accordion/accordion.mjs";import s from"./common/loading/spinnerLoading/index.mjs";import{ButtonSize as c,ButtonStyleType as l,ButtonType as u}from"./common/button/button.types.mjs";import d from"./common/ripple/ripple.mjs";import f from"./common/button/button.mjs";import p from"./common/actionButtons/actionButtons.mjs";import m from"./common/interactableDiv/index.mjs";import h from"./common/actionIcon/actionIcon.mjs";import{AlertStyleType as g}from"./common/alert/alert.types.mjs";import _ from"./common/alert/alert.mjs";import v from"./common/animatedLogo/animatedLogo.mjs";import{AnimatedTextUnit as y,AnimatedTextVariant as b}from"./common/animatedText/animatedText.types.mjs";import x from"./common/animatedText/animatedText.mjs";import{BadgePosition as S,BadgeStyleType as C}from"./common/badge/badge.types.mjs";import w from"./common/badge/badge.mjs";import T from"./common/avatar/avatar.mjs";import E from"./common/avatar/avatarGroup.mjs";import D from"./common/bodyEnd/bodyEnd.mjs";import{PopoverAlign as O,PopoverPlacement as k,PopoverTrigger as A}from"./common/popover/popover.types.mjs";import j from"./common/popover/popover.mjs";import M from"./common/breadcrumb/breadcrumb.mjs";import{ButtonGroupOrientation as N}from"./common/buttonGroup/buttonGroup.types.mjs";import P from"./common/buttonGroup/buttonGroup.mjs";import{CardStyleType as F}from"./common/card/card.types.mjs";import I from"./common/card/Card.mjs";import L from"./common/card/CardHeader.mjs";import R from"./common/card/CardMedia.mjs";import z from"./common/card/CardContent.mjs";import B from"./common/card/CardActions.mjs";import V from"./common/carousel/carousel.mjs";import H from"./common/checkbox/checkbox.mjs";import{ChipStyleType as U}from"./common/chip/chip.types.mjs";import W from"./common/chip/chip.mjs";import G from"./common/chip/chipContainer.mjs";import K from"./common/tooltip/tooltip.mjs";import{InputIconPosition as q,InputType as J}from"./common/input/input.types.mjs";import Y from"./common/input/input.mjs";import X from"./common/colorPicker/colorPicker.mjs";import Z from"./common/modal/modal.mjs";import Q from"./common/confirmModal/confirmModal.mjs";import{getLocale as $,mapLocale as ee,setLocale as te}from"./services/localization.mjs";import ne from"./common/infiniteBlock/infiniteBlock.mjs";import re from"./common/dropdown/dropdown.mjs";import ie from"./common/datePicker/datePicker.mjs";import{DividerOrientation as ae,DividerTextPosition as oe}from"./common/divider/divider.types.mjs";import se from"./common/divider/divider.mjs";import ce from"./common/drawer/drawer.mjs";import{DropZoneReturnType as le,DropZoneStatus as ue}from"./common/dropZone/dropZone.types.mjs";import de from"./common/dropZone/dropZone.mjs";import fe from"./common/emptyState/emptyState.mjs";import{showToast as pe}from"./common/toast/toastService.mjs";import me from"./common/toast/toastProvider.mjs";import he from"./common/errorBoundary/errorBoundary.mjs";import ge from"./common/fab/fab.mjs";import _e from"./common/flip/flip.mjs";import{DoorSwing as ve,OpeningKind as ye,PlanIssueKind as be,PlanUnitSystem as xe,WallType as Se}from"./common/floorPlan/floorPlan.types.mjs";import{MIN_OPENING_WIDTH as Ce,MIN_WALL_LENGTH as we}from"./common/floorPlan/floorPlan.geometry.mjs";import{DEFAULT_WALL_ATTRS as Te,addOpening as Ee,addRect as De,addWall as Oe,cleanupPlan as ke,detachWall as Ae,dissolveNode as je,mergeNodes as Me,moveNode as Ne,removeOpening as Pe,removeWall as Fe,scalePlan as Ie,splitWall as Le,transformPlan as Re,updateOpening as ze,validatePlan as Be,wallLength as Ve,weldShortWalls as He}from"./common/floorPlan/floorPlan.graph.mjs";import{MIN_FLOOR_HEIGHT as Ue,addFloor as We,duplicateFloor as Ge,emptyFloor as Ke,emptyFloorPlan as qe,floorBelow as Je,floorBounds as Ye,floorIndex as Xe,getFloor as Ze,moveFloor as Qe,removeFloor as $e,renameFloor as et,setFloor as tt,setFloorHeight as nt,updateFloor as rt}from"./common/floorPlan/floorPlan.plan.mjs";import{deriveFaces as it,nodeDegrees as at}from"./common/floorPlan/floorPlan.faces.mjs";import{commitDerivation as ot,derivePlan as st,pruneUnmatchedRooms as ct,roomAtPoint as lt}from"./common/floorPlan/floorPlan.rooms.mjs";import{buildWallPaths as ut,openingGeometry as dt,wallCentrelineSpans as ft}from"./common/floorPlan/floorPlan.path.mjs";import{HIT_PX as pt,HIT_PX_COARSE as mt,hitTest as ht,selectionsEqual as gt,worldTolerances as _t}from"./common/floorPlan/floorPlan.hit.mjs";import{DEFAULT_SNAP_OPTIONS as vt,SnapKind as yt,clientToWorld as bt,resolveSnap as xt,screenScale as St}from"./common/floorPlan/floorPlan.snap.mjs";import{PLAN_FORMAT_VERSION as Ct,planFromJson as wt,planToJson as Tt}from"./common/floorPlan/floorPlan.json.mjs";import{buildPlanMesh as Et}from"./common/floorPlan/floorPlan.mesh.mjs";import{planFromLegacySvg as Dt}from"./common/floorPlan/legacySvg.mjs";import Ot from"./common/iconPicker/iconPicker.mjs";import kt from"./common/idleManager/idleManager.mjs";import At from"./common/inputDropdown/inputDropdown.mjs";import jt from"./common/kanbanBoard/KanbanColumn.mjs";import Mt from"./common/kanbanBoard/KanbanBoard.mjs";import Nt from"./common/searchInput/searchInput.mjs";import Pt from"./common/klipyPicker/klipyPicker.mjs";import Ft from"./common/loading/iconLoading/index.mjs";import{isMenuAction as It,isMenuHeading as Lt,isMenuSeparator as Rt}from"./common/menu/menu.types.mjs";import zt from"./common/menu/menu.mjs";import Bt from"./common/multiSelect/multiSelect.mjs";import Vt from"./common/numberInput/index.mjs";import Ht from"./common/optionPicker/optionPicker.mjs";import{OtpInputCharset as Ut}from"./common/otpInput/otpInput.types.mjs";import Wt from"./common/otpInput/otpInput.mjs";import Gt from"./common/overscroll/overscroll.mjs";import Kt from"./common/pagination/pagination.mjs";import qt from"./common/progressBar/progressBar.mjs";import{RadioGroupOrientation as Jt}from"./common/radioGroup/radioGroup.types.mjs";import Yt from"./common/radioGroup/radioGroup.mjs";import Xt from"./common/rating/rating.mjs";import Zt from"./common/revealLens/revealLens.mjs";import Qt from"./common/roomDrawer/roomDrawer.mjs";import $t from"./common/roomViewer/roomViewer.mjs";import en from"./common/scrollbarProvider/index.mjs";import{SectionHeaderSize as tn}from"./common/sectionHeader/sectionHeader.types.mjs";import nn from"./common/sectionHeader/sectionHeader.mjs";import{SkeletonAnimation as rn,SkeletonVariant as an}from"./common/skeleton/skeleton.types.mjs";import on from"./common/skeleton/skeleton.mjs";import sn from"./common/slider/slider.mjs";import cn from"./common/splitButton/splitButton.mjs";import{StepperAlignment as ln,StepperCollapse as un,StepperLabelPlacement as dn,StepperStyleType as fn}from"./common/stepper/stepper.types.mjs";import pn from"./common/stepper/stepper.mjs";import mn from"./common/sticky/sticky.mjs";import hn from"./common/switch/switch.mjs";import gn from"./common/tabHeader/tabHeader.mjs";import _n from"./common/textarea/textarea.mjs";import{defaultTheme as vn}from"./common/themeProvider/defaultTheme.mjs";import yn from"./common/themeProvider/themeProvider.mjs";import{useTheme as bn}from"./common/themeProvider/useTheme.mjs";import xn,{TiltGroupContext as Sn,useTiltGroup as Cn}from"./common/tiltGroup/tiltGroup.mjs";import{defaultTiltEasing as wn}from"./common/tilt/tiltMath.mjs";import Tn from"./common/tilt/tilt.mjs";import En from"./common/timeInput/timeInput.mjs";import{TimelineAlignment as Dn,TimelineItemStatus as On}from"./common/timeline/timeline.types.mjs";import kn from"./common/timeline/timeline.mjs";import An from"./common/timer/timer.mjs";import jn from"./common/virtualList/virtualList.mjs";import{flattenTree as Mn}from"./common/tree/flattenTree.mjs";import Nn from"./common/tree/tree.mjs";import Pn from"./common/wizard/wizard.mjs";import Fn from"./services/formValidation/FormValidatorGroupWithForm.mjs";import In from"./services/formValidation/validatableComponent.mjs";import{useFormValidatorGroup as Ln}from"./services/formValidation/useFormValidatorGroup.mjs";import{FormValidator as Rn,Validators as zn,useFormValidator as Bn}from"./services/formValidation/index.mjs";import{hasEightPasswordChars as Vn,hasOnePasswordDigit as Hn,hasOnePasswordLetter as Un,isBic as Wn,isDate as Gn,isEmail as Kn,isISODate as qn,isNumber as Jn,isPassword as Yn,isURL as Xn}from"@ahrowe/form-validation";export{o as Accordion,e as AccordionStyleType,p as ActionButtons,h as ActionIcon,_ as Alert,g as AlertStyleType,v as AnimatedLogo,x as AnimatedText,y as AnimatedTextUnit,b as AnimatedTextVariant,T as Avatar,E as AvatarGroup,w as Badge,S as BadgePosition,C as BadgeStyleType,D as BodyEnd,M as Breadcrumb,f as Button,P as ButtonGroup,N as ButtonGroupOrientation,c as ButtonSize,l as ButtonStyleType,u as ButtonType,I as Card,B as CardActions,z as CardContent,L as CardHeader,R as CardMedia,F as CardStyleType,V as Carousel,H as Checkbox,W as Chip,G as ChipContainer,U as ChipStyleType,X as ColorPicker,t as ConfigProvider,Q as ConfirmModal,vt as DEFAULT_SNAP_OPTIONS,Te as DEFAULT_WALL_ATTRS,ie as DatePicker,se as Divider,ae as DividerOrientation,oe as DividerTextPosition,ve as DoorSwing,ce as Drawer,de as DropZone,le as DropZoneReturnType,ue as DropZoneStatus,re as Dropdown,fe as EmptyState,he as ErrorBoundary,ge as Fab,_e as Flip,Rn as FormValidator,Fn as FormValidatorGroup,pt as HIT_PX,mt as HIT_PX_COARSE,Ft as IconLoading,Ot as IconPicker,kt as IdleManager,ne as InfiniteBlock,Y as Input,At as InputDropdown,q as InputIconPosition,J as InputType,m as InteractableDiv,Mt as KanbanBoard,jt as KanbanColumn,Pt as KlipyPicker,Ue as MIN_FLOOR_HEIGHT,Ce as MIN_OPENING_WIDTH,we as MIN_WALL_LENGTH,zt as Menu,Z as Modal,Bt as MultiSelect,Vt as NumberInput,ye as OpeningKind,Ht as OptionPicker,Wt as OtpInput,Ut as OtpInputCharset,Gt as Overscroll,Ct as PLAN_FORMAT_VERSION,Kt as Pagination,be as PlanIssueKind,xe as PlanUnitSystem,j as Popover,O as PopoverAlign,k as PopoverPlacement,A as PopoverTrigger,a as Presentation,qt as ProgressBar,Yt as RadioGroup,Jt as RadioGroupOrientation,Xt as Rating,Zt as RevealLens,d as Ripple,Qt as RoomDrawer,$t as RoomViewer,en as ScrollbarProvider,Nt as SearchInput,nn as SectionHeader,tn as SectionHeaderSize,on as Skeleton,rn as SkeletonAnimation,an as SkeletonVariant,sn as Slider,yt as SnapKind,s as SpinnerLoading,cn as SplitButton,pn as Stepper,ln as StepperAlignment,un as StepperCollapse,dn as StepperLabelPlacement,fn as StepperStyleType,mn as Sticky,hn as Switch,gn as TabHeader,_n as Textarea,yn as ThemeProvider,Tn as Tilt,xn as TiltGroup,Sn as TiltGroupContext,En as TimeInput,kn as Timeline,Dn as TimelineAlignment,On as TimelineItemStatus,An as Timer,me as ToastProvider,K as Tooltip,Nn as Tree,In as ValidatableComponent,zn as Validators,jn as VirtualList,Se as WallType,Pn as Wizard,We as addFloor,Ee as addOpening,De as addRect,Oe as addWall,Et as buildPlanMesh,ut as buildWallPaths,ke as cleanupPlan,bt as clientToWorld,ot as commitDerivation,vn as defaultTheme,wn as defaultTiltEasing,it as deriveFaces,st as derivePlan,Ae as detachWall,je as dissolveNode,Ge as duplicateFloor,Ke as emptyFloor,qe as emptyFloorPlan,Mn as flattenTree,Je as floorBelow,Ye as floorBounds,Xe as floorIndex,Ze as getFloor,$ as getLocale,Vn as hasEightPasswordChars,Hn as hasOnePasswordDigit,Un as hasOnePasswordLetter,ht as hitTest,Wn as isBic,Gn as isDate,Kn as isEmail,qn as isISODate,It as isMenuAction,Lt as isMenuHeading,Rt as isMenuSeparator,Jn as isNumber,Yn as isPassword,Xn as isURL,ee as mapLocale,Me as mergeNodes,Qe as moveFloor,Ne as moveNode,at as nodeDegrees,dt as openingGeometry,wt as planFromJson,Dt as planFromLegacySvg,Tt as planToJson,ct as pruneUnmatchedRooms,$e as removeFloor,Pe as removeOpening,Fe as removeWall,et as renameFloor,xt as resolveSnap,lt as roomAtPoint,Ie as scalePlan,St as screenScale,gt as selectionsEqual,tt as setFloor,nt as setFloorHeight,te as setLocale,pe as showToast,Le as splitWall,Re as transformPlan,rt as updateFloor,ze as updateOpening,n as useComponentDefaults,Bn as useFormValidator,Ln as useFormValidatorGroup,r as useLabels,i as usePresentationDefault,bn as useTheme,Cn as useTiltGroup,Be as validatePlan,ft as wallCentrelineSpans,Ve as wallLength,He as weldShortWalls,_t as worldTolerances};
|
|
1
|
+
"use client";import{AccordionStyleType as e}from"./common/accordion/accordion.types.mjs";import t from"./common/configProvider/configProvider.mjs";import{useComponentDefaults as n}from"./common/configProvider/useComponentDefaults.mjs";import{useLabels as r}from"./common/configProvider/useLabels.mjs";import{usePresentationDefault as i}from"./common/configProvider/usePresentationDefault.mjs";import{Presentation as a}from"./common/configProvider/presentation.types.mjs";import o from"./common/accordion/accordion.mjs";import s from"./common/loading/spinnerLoading/index.mjs";import{ButtonSize as c,ButtonStyleType as l,ButtonType as u}from"./common/button/button.types.mjs";import d from"./common/ripple/ripple.mjs";import f from"./common/button/button.mjs";import p from"./common/actionButtons/actionButtons.mjs";import m from"./common/interactableDiv/index.mjs";import h from"./common/actionIcon/actionIcon.mjs";import{AlertStyleType as g}from"./common/alert/alert.types.mjs";import _ from"./common/alert/alert.mjs";import v from"./common/animatedLogo/animatedLogo.mjs";import{AnimatedTextUnit as y,AnimatedTextVariant as b}from"./common/animatedText/animatedText.types.mjs";import x from"./common/animatedText/animatedText.mjs";import{BadgePosition as S,BadgeStyleType as C}from"./common/badge/badge.types.mjs";import w from"./common/badge/badge.mjs";import T from"./common/avatar/avatar.mjs";import E from"./common/avatar/avatarGroup.mjs";import D from"./common/bodyEnd/bodyEnd.mjs";import{PopoverAlign as O,PopoverPlacement as k,PopoverTrigger as A}from"./common/popover/popover.types.mjs";import j from"./common/popover/popover.mjs";import M from"./common/breadcrumb/breadcrumb.mjs";import{ButtonGroupOrientation as N}from"./common/buttonGroup/buttonGroup.types.mjs";import P from"./common/buttonGroup/buttonGroup.mjs";import{CardStyleType as F}from"./common/card/card.types.mjs";import I from"./common/card/Card.mjs";import L from"./common/card/CardHeader.mjs";import R from"./common/card/CardMedia.mjs";import z from"./common/card/CardContent.mjs";import B from"./common/card/CardActions.mjs";import V from"./common/carousel/carousel.mjs";import H from"./common/checkbox/checkbox.mjs";import{ChipStyleType as U}from"./common/chip/chip.types.mjs";import W from"./common/chip/chip.mjs";import G from"./common/chip/chipContainer.mjs";import K from"./common/tooltip/tooltip.mjs";import{InputIconPosition as q,InputType as J}from"./common/input/input.types.mjs";import Y from"./common/input/input.mjs";import X from"./common/colorPicker/colorPicker.mjs";import Z from"./common/modal/modal.mjs";import Q from"./common/confirmModal/confirmModal.mjs";import{getLocale as $,mapLocale as ee,setLocale as te}from"./services/localization.mjs";import ne from"./common/dropdown/dropdown.mjs";import re from"./common/datePicker/datePicker.mjs";import{DividerOrientation as ie,DividerTextPosition as ae}from"./common/divider/divider.types.mjs";import oe from"./common/divider/divider.mjs";import se from"./common/drawer/drawer.mjs";import{DropZoneReturnType as ce,DropZoneStatus as le}from"./common/dropZone/dropZone.types.mjs";import ue from"./common/dropZone/dropZone.mjs";import de from"./common/emptyState/emptyState.mjs";import{showToast as fe}from"./common/toast/toastService.mjs";import pe from"./common/toast/toastProvider.mjs";import me from"./common/errorBoundary/errorBoundary.mjs";import he from"./common/fab/fab.mjs";import ge from"./common/flip/flip.mjs";import{DoorSwing as _e,OpeningKind as ve,PlanIssueKind as ye,PlanUnitSystem as be,WallType as xe}from"./common/floorPlan/floorPlan.types.mjs";import{MIN_OPENING_WIDTH as Se,MIN_WALL_LENGTH as Ce}from"./common/floorPlan/floorPlan.geometry.mjs";import{DEFAULT_WALL_ATTRS as we,addOpening as Te,addRect as Ee,addWall as De,cleanupPlan as Oe,detachWall as ke,dissolveNode as Ae,mergeNodes as je,moveNode as Me,removeOpening as Ne,removeWall as Pe,scalePlan as Fe,splitWall as Ie,transformPlan as Le,updateOpening as Re,validatePlan as ze,wallLength as Be,weldShortWalls as Ve}from"./common/floorPlan/floorPlan.graph.mjs";import{MIN_FLOOR_HEIGHT as He,addFloor as Ue,duplicateFloor as We,emptyFloor as Ge,emptyFloorPlan as Ke,floorBelow as qe,floorBounds as Je,floorIndex as Ye,getFloor as Xe,moveFloor as Ze,removeFloor as Qe,renameFloor as $e,setFloor as et,setFloorHeight as tt,updateFloor as nt}from"./common/floorPlan/floorPlan.plan.mjs";import{deriveFaces as rt,nodeDegrees as it}from"./common/floorPlan/floorPlan.faces.mjs";import{commitDerivation as at,derivePlan as ot,pruneUnmatchedRooms as st,roomAtPoint as ct}from"./common/floorPlan/floorPlan.rooms.mjs";import{buildWallPaths as lt,openingGeometry as ut,wallCentrelineSpans as dt}from"./common/floorPlan/floorPlan.path.mjs";import{HIT_PX as ft,HIT_PX_COARSE as pt,hitTest as mt,selectionsEqual as ht,worldTolerances as gt}from"./common/floorPlan/floorPlan.hit.mjs";import{DEFAULT_SNAP_OPTIONS as _t,SnapKind as vt,clientToWorld as yt,resolveSnap as bt,screenScale as xt}from"./common/floorPlan/floorPlan.snap.mjs";import{PLAN_FORMAT_VERSION as St,planFromJson as Ct,planToJson as wt}from"./common/floorPlan/floorPlan.json.mjs";import{buildPlanMesh as Tt}from"./common/floorPlan/floorPlan.mesh.mjs";import{planFromLegacySvg as Et}from"./common/floorPlan/legacySvg.mjs";import Dt from"./common/iconPicker/iconPicker.mjs";import Ot from"./common/idleManager/idleManager.mjs";import kt from"./common/inputDropdown/inputDropdown.mjs";import At from"./common/kanbanBoard/KanbanColumn.mjs";import jt from"./common/kanbanBoard/KanbanBoard.mjs";import Mt from"./common/searchInput/searchInput.mjs";import Nt from"./common/klipyPicker/klipyPicker.mjs";import Pt from"./common/loading/iconLoading/index.mjs";import{isMenuAction as Ft,isMenuHeading as It,isMenuSeparator as Lt}from"./common/menu/menu.types.mjs";import Rt from"./common/menu/menu.mjs";import zt from"./common/multiSelect/multiSelect.mjs";import Bt from"./common/numberInput/index.mjs";import Vt from"./common/optionPicker/optionPicker.mjs";import{OtpInputCharset as Ht}from"./common/otpInput/otpInput.types.mjs";import Ut from"./common/otpInput/otpInput.mjs";import Wt from"./common/overscroll/overscroll.mjs";import Gt from"./common/pagination/pagination.mjs";import Kt from"./common/progressBar/progressBar.mjs";import{RadioGroupOrientation as qt}from"./common/radioGroup/radioGroup.types.mjs";import Jt from"./common/radioGroup/radioGroup.mjs";import Yt from"./common/rating/rating.mjs";import Xt from"./common/revealLens/revealLens.mjs";import Zt from"./common/roomDrawer/roomDrawer.mjs";import Qt from"./common/roomViewer/roomViewer.mjs";import{ScrollFadeAxis as $t}from"./common/scrollFade/scrollFade.types.mjs";import en from"./common/scrollFade/scrollFade.mjs";import tn from"./common/scrollbarProvider/index.mjs";import{SectionHeaderSize as nn}from"./common/sectionHeader/sectionHeader.types.mjs";import rn from"./common/sectionHeader/sectionHeader.mjs";import{SkeletonAnimation as an,SkeletonVariant as on}from"./common/skeleton/skeleton.types.mjs";import sn from"./common/skeleton/skeleton.mjs";import cn from"./common/slider/slider.mjs";import ln from"./common/splitButton/splitButton.mjs";import{StepperAlignment as un,StepperCollapse as dn,StepperLabelPlacement as fn,StepperStyleType as pn}from"./common/stepper/stepper.types.mjs";import mn from"./common/stepper/stepper.mjs";import hn from"./common/sticky/sticky.mjs";import gn from"./common/switch/switch.mjs";import _n from"./common/tabHeader/tabHeader.mjs";import vn from"./common/textarea/textarea.mjs";import{defaultTheme as yn}from"./common/themeProvider/defaultTheme.mjs";import bn from"./common/themeProvider/themeProvider.mjs";import{lightTheme as xn}from"./common/themeProvider/lightTheme.mjs";import{useTheme as Sn}from"./common/themeProvider/useTheme.mjs";import Cn,{TiltGroupContext as wn,useTiltGroup as Tn}from"./common/tiltGroup/tiltGroup.mjs";import{defaultTiltEasing as En}from"./common/tilt/tiltMath.mjs";import Dn from"./common/tilt/tilt.mjs";import On from"./common/timeInput/timeInput.mjs";import{TimelineAlignment as kn,TimelineItemStatus as An}from"./common/timeline/timeline.types.mjs";import jn from"./common/timeline/timeline.mjs";import Mn from"./common/timer/timer.mjs";import Nn from"./common/virtualList/virtualList.mjs";import{flattenTree as Pn}from"./common/tree/flattenTree.mjs";import Fn from"./common/tree/tree.mjs";import In from"./common/wizard/wizard.mjs";import Ln from"./services/formValidation/FormValidatorGroupWithForm.mjs";import Rn from"./services/formValidation/validatableComponent.mjs";import{useFormValidatorGroup as zn}from"./services/formValidation/useFormValidatorGroup.mjs";import{FormValidator as Bn,Validators as Vn,useFormValidator as Hn}from"./services/formValidation/index.mjs";import{hasEightPasswordChars as Un,hasOnePasswordDigit as Wn,hasOnePasswordLetter as Gn,isBic as Kn,isDate as qn,isEmail as Jn,isISODate as Yn,isNumber as Xn,isPassword as Zn,isURL as Qn}from"@ahrowe/form-validation";export{o as Accordion,e as AccordionStyleType,p as ActionButtons,h as ActionIcon,_ as Alert,g as AlertStyleType,v as AnimatedLogo,x as AnimatedText,y as AnimatedTextUnit,b as AnimatedTextVariant,T as Avatar,E as AvatarGroup,w as Badge,S as BadgePosition,C as BadgeStyleType,D as BodyEnd,M as Breadcrumb,f as Button,P as ButtonGroup,N as ButtonGroupOrientation,c as ButtonSize,l as ButtonStyleType,u as ButtonType,I as Card,B as CardActions,z as CardContent,L as CardHeader,R as CardMedia,F as CardStyleType,V as Carousel,H as Checkbox,W as Chip,G as ChipContainer,U as ChipStyleType,X as ColorPicker,t as ConfigProvider,Q as ConfirmModal,_t as DEFAULT_SNAP_OPTIONS,we as DEFAULT_WALL_ATTRS,re as DatePicker,oe as Divider,ie as DividerOrientation,ae as DividerTextPosition,_e as DoorSwing,se as Drawer,ue as DropZone,ce as DropZoneReturnType,le as DropZoneStatus,ne as Dropdown,de as EmptyState,me as ErrorBoundary,he as Fab,ge as Flip,Bn as FormValidator,Ln as FormValidatorGroup,ft as HIT_PX,pt as HIT_PX_COARSE,Pt as IconLoading,Dt as IconPicker,Ot as IdleManager,Y as Input,kt as InputDropdown,q as InputIconPosition,J as InputType,m as InteractableDiv,jt as KanbanBoard,At as KanbanColumn,Nt as KlipyPicker,He as MIN_FLOOR_HEIGHT,Se as MIN_OPENING_WIDTH,Ce as MIN_WALL_LENGTH,Rt as Menu,Z as Modal,zt as MultiSelect,Bt as NumberInput,ve as OpeningKind,Vt as OptionPicker,Ut as OtpInput,Ht as OtpInputCharset,Wt as Overscroll,St as PLAN_FORMAT_VERSION,Gt as Pagination,ye as PlanIssueKind,be as PlanUnitSystem,j as Popover,O as PopoverAlign,k as PopoverPlacement,A as PopoverTrigger,a as Presentation,Kt as ProgressBar,Jt as RadioGroup,qt as RadioGroupOrientation,Yt as Rating,Xt as RevealLens,d as Ripple,Zt as RoomDrawer,Qt as RoomViewer,en as ScrollFade,$t as ScrollFadeAxis,tn as ScrollbarProvider,Mt as SearchInput,rn as SectionHeader,nn as SectionHeaderSize,sn as Skeleton,an as SkeletonAnimation,on as SkeletonVariant,cn as Slider,vt as SnapKind,s as SpinnerLoading,ln as SplitButton,mn as Stepper,un as StepperAlignment,dn as StepperCollapse,fn as StepperLabelPlacement,pn as StepperStyleType,hn as Sticky,gn as Switch,_n as TabHeader,vn as Textarea,bn as ThemeProvider,Dn as Tilt,Cn as TiltGroup,wn as TiltGroupContext,On as TimeInput,jn as Timeline,kn as TimelineAlignment,An as TimelineItemStatus,Mn as Timer,pe as ToastProvider,K as Tooltip,Fn as Tree,Rn as ValidatableComponent,Vn as Validators,Nn as VirtualList,xe as WallType,In as Wizard,Ue as addFloor,Te as addOpening,Ee as addRect,De as addWall,Tt as buildPlanMesh,lt as buildWallPaths,Oe as cleanupPlan,yt as clientToWorld,at as commitDerivation,yn as defaultTheme,En as defaultTiltEasing,rt as deriveFaces,ot as derivePlan,ke as detachWall,Ae as dissolveNode,We as duplicateFloor,Ge as emptyFloor,Ke as emptyFloorPlan,Pn as flattenTree,qe as floorBelow,Je as floorBounds,Ye as floorIndex,Xe as getFloor,$ as getLocale,Un as hasEightPasswordChars,Wn as hasOnePasswordDigit,Gn as hasOnePasswordLetter,mt as hitTest,Kn as isBic,qn as isDate,Jn as isEmail,Yn as isISODate,Ft as isMenuAction,It as isMenuHeading,Lt as isMenuSeparator,Xn as isNumber,Zn as isPassword,Qn as isURL,xn as lightTheme,ee as mapLocale,je as mergeNodes,Ze as moveFloor,Me as moveNode,it as nodeDegrees,ut as openingGeometry,Ct as planFromJson,Et as planFromLegacySvg,wt as planToJson,st as pruneUnmatchedRooms,Qe as removeFloor,Ne as removeOpening,Pe as removeWall,$e as renameFloor,bt as resolveSnap,ct as roomAtPoint,Fe as scalePlan,xt as screenScale,ht as selectionsEqual,et as setFloor,tt as setFloorHeight,te as setLocale,fe as showToast,Ie as splitWall,Le as transformPlan,nt as updateFloor,Re as updateOpening,n as useComponentDefaults,Hn as useFormValidator,zn as useFormValidatorGroup,r as useLabels,i as usePresentationDefault,Sn as useTheme,Tn as useTiltGroup,ze as validatePlan,dt as wallCentrelineSpans,Be as wallLength,Ve as weldShortWalls,gt as worldTolerances};
|
package/dist/esm/og.png
ADDED
|
Binary file
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{showToast as e}from"../../common/toast/toastService.mjs";import{FormValidatorGroup as t,createFormComponent as n}from"@ahrowe/form-validation";var r=t=>{e(t[0].message,{type:`error`})},i=class extends t{constructor(e,t=null,i){super(e,t,{...i,onSubmitError:i?.onSubmitError??r}),this.Form=n(this)}};export{i as default};
|
|
1
|
+
"use client";import{showToast as e}from"../../common/toast/toastService.mjs";import{FormValidatorGroup as t,createFormComponent as n}from"@ahrowe/form-validation";var r=t=>{e(t[0].message,{type:`error`})},i=class extends t{constructor(e,t=null,i){super(e,t,{...i,onSubmitError:i?.onSubmitError??r}),this.Form=n(this)}};export{i as default};
|
|
2
2
|
//# sourceMappingURL=FormValidatorGroupWithForm.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FormValidatorGroupWithForm.mjs","names":[],"sources":["../../../../package/services/formValidation/FormValidatorGroupWithForm.tsx"],"sourcesContent":["import { showToast } from 'components/common/toast';\nimport { FormValidatorGroup, createFormComponent } from '@ahrowe/form-validation';\nimport type { FormGroup, FormValidatorGroupOptions, InferGroupValues, ValidationError } from '@ahrowe/form-validation';\nimport type React from 'react';\n\n/** Default onSubmitError: surface the first error as an error toast. Callers can override via options.onSubmitError. */\nconst defaultOnSubmitError = (errors: ValidationError[]): void => {\n showToast(errors[0].message, { type: 'error' });\n};\n\n/**\n * FormValidatorGroup with `this.Form` automatically attached.\n * Kept in a .tsx file so formValidatorGroup.ts stays framework-agnostic.\n *\n * This is the class you should use everywhere — it is a drop-in replacement\n * for FormValidatorGroup with one extra property: `this.Form`.\n *\n * Also injects the default toast-based onSubmitError so both hook and class-component\n * consumers surface errors out of the box; pass options.onSubmitError to override.\n */\nexport default class FormValidatorGroupWithForm<\n TGroup extends FormGroup = FormGroup,\n TInitial = InferGroupValues<TGroup>,\n> extends FormValidatorGroup<TGroup, TInitial> {\n Form: React.FC<React.FormHTMLAttributes<HTMLFormElement>>;\n\n constructor(\n groupDef: TGroup,\n component: { forceUpdate: () => void } | null = null,\n options?: FormValidatorGroupOptions<TGroup, TInitial>,\n ) {\n super(groupDef, component, { ...options, onSubmitError: options?.onSubmitError ?? defaultOnSubmitError });\n this.Form = createFormComponent(this);\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"FormValidatorGroupWithForm.mjs","names":[],"sources":["../../../../package/services/formValidation/FormValidatorGroupWithForm.tsx"],"sourcesContent":["import { showToast } from 'components/common/toast';\nimport { FormValidatorGroup, createFormComponent } from '@ahrowe/form-validation';\nimport type { FormGroup, FormValidatorGroupOptions, InferGroupValues, ValidationError } from '@ahrowe/form-validation';\nimport type React from 'react';\n\n/** Default onSubmitError: surface the first error as an error toast. Callers can override via options.onSubmitError. */\nconst defaultOnSubmitError = (errors: ValidationError[]): void => {\n showToast(errors[0].message, { type: 'error' });\n};\n\n/**\n * FormValidatorGroup with `this.Form` automatically attached.\n * Kept in a .tsx file so formValidatorGroup.ts stays framework-agnostic.\n *\n * This is the class you should use everywhere — it is a drop-in replacement\n * for FormValidatorGroup with one extra property: `this.Form`.\n *\n * Also injects the default toast-based onSubmitError so both hook and class-component\n * consumers surface errors out of the box; pass options.onSubmitError to override.\n */\nexport default class FormValidatorGroupWithForm<\n TGroup extends FormGroup = FormGroup,\n TInitial = InferGroupValues<TGroup>,\n> extends FormValidatorGroup<TGroup, TInitial> {\n Form: React.FC<React.FormHTMLAttributes<HTMLFormElement>>;\n\n constructor(\n groupDef: TGroup,\n component: { forceUpdate: () => void } | null = null,\n options?: FormValidatorGroupOptions<TGroup, TInitial>,\n ) {\n super(groupDef, component, { ...options, onSubmitError: options?.onSubmitError ?? defaultOnSubmitError });\n this.Form = createFormComponent(this);\n }\n}\n"],"mappings":"mKAMA,IAAM,EAAwB,GAAoC,CAChE,EAAU,EAAO,EAAE,CAAC,QAAS,CAAE,KAAM,OAAQ,CAAC,CAChD,EAYqB,EAArB,cAGU,CAAqC,CAG7C,YACE,EACA,EAAgD,KAChD,EACA,CACA,MAAM,EAAU,EAAW,CAAE,GAAG,EAAS,cAAe,GAAS,eAAiB,CAAqB,CAAC,EACxG,KAAK,KAAO,EAAoB,IAAI,CACtC,CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import e from"./FormValidatorGroupWithForm.mjs";import t from"./validatableComponent.mjs";import{useFormValidatorGroup as n}from"./useFormValidatorGroup.mjs";import{FormValidator as r,Validators as i,useFormValidator as a}from"@ahrowe/form-validation";export{r as FormValidator,e as FormValidatorGroup,t as ValidatableComponent,i as Validators,a as useFormValidator,n as useFormValidatorGroup};
|
|
1
|
+
"use client";import e from"./FormValidatorGroupWithForm.mjs";import t from"./validatableComponent.mjs";import{useFormValidatorGroup as n}from"./useFormValidatorGroup.mjs";import{FormValidator as r,Validators as i,useFormValidator as a}from"@ahrowe/form-validation";export{r as FormValidator,e as FormValidatorGroup,t as ValidatableComponent,i as Validators,a as useFormValidator,n as useFormValidatorGroup};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"./FormValidatorGroupWithForm.mjs";import{useFormValidatorGroupInstance as t}from"@ahrowe/form-validation";function n(n,{initialValues:r,onSubmit:i,onValidate:a,errorParser:o,onSubmitError:s}={}){return t(()=>new e(n,null,{initialValues:r,errorParser:o,onSubmitError:s}),i,a)}export{n as useFormValidatorGroup};
|
|
1
|
+
"use client";import e from"./FormValidatorGroupWithForm.mjs";import{useFormValidatorGroupInstance as t}from"@ahrowe/form-validation";function n(n,{initialValues:r,onSubmit:i,onValidate:a,errorParser:o,onSubmitError:s}={}){return t(()=>new e(n,null,{initialValues:r,errorParser:o,onSubmitError:s}),i,a)}export{n as useFormValidatorGroup};
|
|
2
2
|
//# sourceMappingURL=useFormValidatorGroup.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFormValidatorGroup.mjs","names":[],"sources":["../../../../package/services/formValidation/useFormValidatorGroup.ts"],"sourcesContent":["import { useFormValidatorGroupInstance } from '@ahrowe/form-validation';\nimport type { FormGroup, FormValidatorGroupOptions, InferGroupValues } from '@ahrowe/form-validation';\nimport FormValidatorGroupWithForm from './FormValidatorGroupWithForm';\n\n/**\n * @ahrowe/ui's flavour of useFormValidatorGroup: the group it creates has\n * `.Form` attached and defaults `onSubmitError` to an error toast (see\n * FormValidatorGroupWithForm). Reuses the core package's reactive wiring\n * (useFormValidatorGroupInstance) so this and the pure hook share one\n * implementation of \"subscribe a function component to a group\".\n */\nexport function useFormValidatorGroup<TGroup extends FormGroup = FormGroup, TInitial = InferGroupValues<TGroup>>(\n groupDef: TGroup,\n { initialValues, onSubmit, onValidate, errorParser, onSubmitError }: FormValidatorGroupOptions<TGroup, TInitial> = {},\n): FormValidatorGroupWithForm<TGroup, TInitial> {\n return useFormValidatorGroupInstance(\n () => new FormValidatorGroupWithForm(groupDef, null, { initialValues, errorParser, onSubmitError }),\n onSubmit,\n onValidate,\n );\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useFormValidatorGroup.mjs","names":[],"sources":["../../../../package/services/formValidation/useFormValidatorGroup.ts"],"sourcesContent":["import { useFormValidatorGroupInstance } from '@ahrowe/form-validation';\nimport type { FormGroup, FormValidatorGroupOptions, InferGroupValues } from '@ahrowe/form-validation';\nimport FormValidatorGroupWithForm from './FormValidatorGroupWithForm';\n\n/**\n * @ahrowe/ui's flavour of useFormValidatorGroup: the group it creates has\n * `.Form` attached and defaults `onSubmitError` to an error toast (see\n * FormValidatorGroupWithForm). Reuses the core package's reactive wiring\n * (useFormValidatorGroupInstance) so this and the pure hook share one\n * implementation of \"subscribe a function component to a group\".\n */\nexport function useFormValidatorGroup<TGroup extends FormGroup = FormGroup, TInitial = InferGroupValues<TGroup>>(\n groupDef: TGroup,\n { initialValues, onSubmit, onValidate, errorParser, onSubmitError }: FormValidatorGroupOptions<TGroup, TInitial> = {},\n): FormValidatorGroupWithForm<TGroup, TInitial> {\n return useFormValidatorGroupInstance(\n () => new FormValidatorGroupWithForm(groupDef, null, { initialValues, errorParser, onSubmitError }),\n onSubmit,\n onValidate,\n );\n}\n"],"mappings":"qIAWA,SAAgB,EACd,EACA,CAAE,gBAAe,WAAU,aAAY,cAAa,iBAA+D,CAAC,EACtE,CAC9C,OAAO,MACC,IAAI,EAA2B,EAAU,KAAM,CAAE,gBAAe,cAAa,eAAc,CAAC,EAClG,EACA,CACF,CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"../../common/tooltip/tooltip.mjs";import{PureComponent as t}from"react";import{jsx as n}from"react/jsx-runtime";var r=class extends t{static{this.defaultProps={formValidator:null,onMouseEnter:null,onMouseLeave:null,onFocus:null,onBlur:null,onChange:null,errorMessage:``,isValid:!1,isRequired:!1,label:``}}constructor(e){super(e);let{formValidator:t}=e;t&&(t.label=e.label??``,t.validate(),t.registerOnUpdateListener(()=>{this.forceUpdate()})),this.state={isFocused:!1,isHovered:!1},this.onMouseEnter=this.onMouseEnter.bind(this),this.onMouseLeave=this.onMouseLeave.bind(this),this.onFocus=this.onFocus.bind(this),this.onBlur=this.onBlur.bind(this),this.hasError=this.hasError.bind(this),this.renderTooltip=this.renderTooltip.bind(this),this.onChange=this.onChange.bind(this)}componentDidMount(){setTimeout(()=>this.setState({isFocused:!1,isHovered:!1}),1)}componentDidUpdate(e){let{formValidator:t}=this.props;e.formValidator&&t&&e.formValidator!==t&&t.registerOnUpdateListener(()=>{this.forceUpdate()})}onMouseEnter(e){let{onMouseEnter:t}=this.props;this.setState({isHovered:!0}),t&&t(e)}onMouseLeave(e){let{onMouseLeave:t}=this.props;this.setState({isHovered:!1}),t&&t(e)}onFocus(e){let{onFocus:t}=this.props;this.setState({isFocused:!0}),t&&t(e)}onBlur(e){let{formValidator:t,onBlur:n}=this.props;t&&(t.touched=!0),this.setState({isFocused:!1}),n&&n(e)}hasError(){let{errorMessage:e,isValid:t,formValidator:n}=this.props;return n?n.touched&&n.hasError():!t||!!e}isRequired(){let{isRequired:e,formValidator:t}=this.props;return!!(e||t&&t.validators.find(e=>e.validatorId===`required`))}renderTooltip(){let{errorMessage:t,formValidator:r}=this.props,{isHovered:i,isFocused:a}=this.state;return n(e,{variant:`error`,message:r?r.getCurrentErrorMessage():t||``,isVisible:this.hasError()&&(a||i)})}onChange(e){let{onChange:t,formValidator:n}=this.props;if(n){let t=e;e&&e.target&&(t=e.target.value),n.set(t)}t&&t(e)}};export{r as default};
|
|
1
|
+
"use client";import e from"../../common/tooltip/tooltip.mjs";import{PureComponent as t}from"react";import{jsx as n}from"react/jsx-runtime";var r=class extends t{static{this.defaultProps={formValidator:null,onMouseEnter:null,onMouseLeave:null,onFocus:null,onBlur:null,onChange:null,errorMessage:``,isValid:!1,isRequired:!1,label:``}}constructor(e){super(e);let{formValidator:t}=e;t&&(t.label=e.label??``,t.validate(),t.registerOnUpdateListener(()=>{this.forceUpdate()})),this.state={isFocused:!1,isHovered:!1},this.onMouseEnter=this.onMouseEnter.bind(this),this.onMouseLeave=this.onMouseLeave.bind(this),this.onFocus=this.onFocus.bind(this),this.onBlur=this.onBlur.bind(this),this.hasError=this.hasError.bind(this),this.renderTooltip=this.renderTooltip.bind(this),this.onChange=this.onChange.bind(this)}componentDidMount(){setTimeout(()=>this.setState({isFocused:!1,isHovered:!1}),1)}componentDidUpdate(e){let{formValidator:t}=this.props;e.formValidator&&t&&e.formValidator!==t&&t.registerOnUpdateListener(()=>{this.forceUpdate()})}onMouseEnter(e){let{onMouseEnter:t}=this.props;this.setState({isHovered:!0}),t&&t(e)}onMouseLeave(e){let{onMouseLeave:t}=this.props;this.setState({isHovered:!1}),t&&t(e)}onFocus(e){let{onFocus:t}=this.props;this.setState({isFocused:!0}),t&&t(e)}onBlur(e){let{formValidator:t,onBlur:n}=this.props;t&&(t.touched=!0),this.setState({isFocused:!1}),n&&n(e)}hasError(){let{errorMessage:e,isValid:t,formValidator:n}=this.props;return n?n.touched&&n.hasError():!t||!!e}isRequired(){let{isRequired:e,formValidator:t}=this.props;return!!(e||t&&t.validators.find(e=>e.validatorId===`required`))}renderTooltip(){let{errorMessage:t,formValidator:r}=this.props,{isHovered:i,isFocused:a}=this.state;return n(e,{variant:`error`,message:r?r.getCurrentErrorMessage():t||``,isVisible:this.hasError()&&(a||i)})}onChange(e){let{onChange:t,formValidator:n}=this.props;if(n){let t=e;e&&e.target&&(t=e.target.value),n.set(t)}t&&t(e)}};export{r as default};
|
|
2
2
|
//# sourceMappingURL=validatableComponent.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validatableComponent.mjs","names":[],"sources":["../../../../package/services/formValidation/validatableComponent.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport { FormValidator } from '@ahrowe/form-validation';\nimport Tooltip from 'components/common/tooltip';\n\nexport interface ValidatableComponentProps {\n formValidator?: FormValidator | null;\n onMouseEnter?: ((event: React.MouseEvent) => void) | null;\n onMouseLeave?: ((event: React.MouseEvent) => void) | null;\n onFocus?: ((event: React.FocusEvent) => void) | null;\n onBlur?: ((event: React.FocusEvent) => void) | null;\n onChange?: ((value: unknown) => void) | null;\n errorMessage?: string;\n isValid?: boolean;\n isRequired?: boolean;\n label?: string;\n}\n\nexport interface ValidatableComponentState {\n isFocused: boolean;\n isHovered: boolean;\n}\n\n/**\n * Base class that extends PureComponent with FormValidator integration.\n * Manages hover/focus state and renders error tooltips.\n */\nexport default class ValidatableComponent<\n P extends ValidatableComponentProps = ValidatableComponentProps,\n S extends ValidatableComponentState = ValidatableComponentState,\n> extends PureComponent<P, S> {\n static defaultProps: Partial<ValidatableComponentProps> = {\n formValidator: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onFocus: null,\n onBlur: null,\n onChange: null,\n errorMessage: '',\n isValid: false,\n isRequired: false,\n label: '',\n };\n\n constructor(props: P) {\n super(props);\n const { formValidator } = props;\n\n if (formValidator) {\n formValidator.label = props.label ?? '';\n formValidator.validate();\n formValidator.registerOnUpdateListener(() => {\n this.forceUpdate();\n });\n }\n\n this.state = { isFocused: false, isHovered: false } as S;\n\n this.onMouseEnter = this.onMouseEnter.bind(this);\n this.onMouseLeave = this.onMouseLeave.bind(this);\n this.onFocus = this.onFocus.bind(this);\n this.onBlur = this.onBlur.bind(this);\n this.hasError = this.hasError.bind(this);\n this.renderTooltip = this.renderTooltip.bind(this);\n this.onChange = this.onChange.bind(this);\n }\n\n componentDidMount(): void {\n setTimeout(() => this.setState({ isFocused: false, isHovered: false } as S), 1);\n }\n\n componentDidUpdate(prevProps: P): void {\n const { formValidator } = this.props;\n if (prevProps.formValidator && formValidator && prevProps.formValidator !== formValidator) {\n formValidator.registerOnUpdateListener(() => {\n this.forceUpdate();\n });\n }\n }\n\n onMouseEnter(event: React.MouseEvent): void {\n const { onMouseEnter } = this.props;\n this.setState({ isHovered: true } as unknown as S);\n if (onMouseEnter) onMouseEnter(event);\n }\n\n onMouseLeave(event: React.MouseEvent): void {\n const { onMouseLeave } = this.props;\n this.setState({ isHovered: false } as unknown as S);\n if (onMouseLeave) onMouseLeave(event);\n }\n\n onFocus(event: React.FocusEvent): void {\n const { onFocus } = this.props;\n this.setState({ isFocused: true } as unknown as S);\n if (onFocus) onFocus(event);\n }\n\n onBlur(event: React.FocusEvent): void {\n const { formValidator, onBlur } = this.props;\n if (formValidator) formValidator.touched = true;\n this.setState({ isFocused: false } as unknown as S);\n if (onBlur) onBlur(event);\n }\n\n hasError(): boolean {\n const { errorMessage, isValid, formValidator } = this.props;\n return formValidator ? formValidator.touched && formValidator.hasError() : !isValid || !!errorMessage;\n }\n\n isRequired(): boolean {\n const { isRequired, formValidator } = this.props;\n return !!(\n isRequired ||\n (formValidator &&\n formValidator.validators.find((v) => (v as { validatorId?: string }).validatorId === 'required'))\n );\n }\n\n renderTooltip(): React.ReactNode {\n const { errorMessage, formValidator } = this.props;\n const { isHovered, isFocused } = this.state;\n return (\n <Tooltip\n variant='error'\n message={formValidator ? formValidator.getCurrentErrorMessage() : errorMessage || ''}\n isVisible={this.hasError() && (isFocused || isHovered)}\n />\n );\n }\n\n onChange(newVal: unknown): void {\n const { onChange, formValidator } = this.props;\n if (formValidator) {\n let extractedVal = newVal;\n if (newVal && (newVal as React.ChangeEvent<HTMLInputElement>).target) {\n extractedVal = (newVal as React.ChangeEvent<HTMLInputElement>).target.value;\n }\n formValidator.set(extractedVal);\n }\n if (onChange) onChange(newVal);\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"validatableComponent.mjs","names":[],"sources":["../../../../package/services/formValidation/validatableComponent.tsx"],"sourcesContent":["import React, { PureComponent } from 'react';\nimport { FormValidator } from '@ahrowe/form-validation';\nimport Tooltip from 'components/common/tooltip';\n\nexport interface ValidatableComponentProps {\n formValidator?: FormValidator | null;\n onMouseEnter?: ((event: React.MouseEvent) => void) | null;\n onMouseLeave?: ((event: React.MouseEvent) => void) | null;\n onFocus?: ((event: React.FocusEvent) => void) | null;\n onBlur?: ((event: React.FocusEvent) => void) | null;\n onChange?: ((value: unknown) => void) | null;\n errorMessage?: string;\n isValid?: boolean;\n isRequired?: boolean;\n label?: string;\n}\n\nexport interface ValidatableComponentState {\n isFocused: boolean;\n isHovered: boolean;\n}\n\n/**\n * Base class that extends PureComponent with FormValidator integration.\n * Manages hover/focus state and renders error tooltips.\n */\nexport default class ValidatableComponent<\n P extends ValidatableComponentProps = ValidatableComponentProps,\n S extends ValidatableComponentState = ValidatableComponentState,\n> extends PureComponent<P, S> {\n static defaultProps: Partial<ValidatableComponentProps> = {\n formValidator: null,\n onMouseEnter: null,\n onMouseLeave: null,\n onFocus: null,\n onBlur: null,\n onChange: null,\n errorMessage: '',\n isValid: false,\n isRequired: false,\n label: '',\n };\n\n constructor(props: P) {\n super(props);\n const { formValidator } = props;\n\n if (formValidator) {\n formValidator.label = props.label ?? '';\n formValidator.validate();\n formValidator.registerOnUpdateListener(() => {\n this.forceUpdate();\n });\n }\n\n this.state = { isFocused: false, isHovered: false } as S;\n\n this.onMouseEnter = this.onMouseEnter.bind(this);\n this.onMouseLeave = this.onMouseLeave.bind(this);\n this.onFocus = this.onFocus.bind(this);\n this.onBlur = this.onBlur.bind(this);\n this.hasError = this.hasError.bind(this);\n this.renderTooltip = this.renderTooltip.bind(this);\n this.onChange = this.onChange.bind(this);\n }\n\n componentDidMount(): void {\n setTimeout(() => this.setState({ isFocused: false, isHovered: false } as S), 1);\n }\n\n componentDidUpdate(prevProps: P): void {\n const { formValidator } = this.props;\n if (prevProps.formValidator && formValidator && prevProps.formValidator !== formValidator) {\n formValidator.registerOnUpdateListener(() => {\n this.forceUpdate();\n });\n }\n }\n\n onMouseEnter(event: React.MouseEvent): void {\n const { onMouseEnter } = this.props;\n this.setState({ isHovered: true } as unknown as S);\n if (onMouseEnter) onMouseEnter(event);\n }\n\n onMouseLeave(event: React.MouseEvent): void {\n const { onMouseLeave } = this.props;\n this.setState({ isHovered: false } as unknown as S);\n if (onMouseLeave) onMouseLeave(event);\n }\n\n onFocus(event: React.FocusEvent): void {\n const { onFocus } = this.props;\n this.setState({ isFocused: true } as unknown as S);\n if (onFocus) onFocus(event);\n }\n\n onBlur(event: React.FocusEvent): void {\n const { formValidator, onBlur } = this.props;\n if (formValidator) formValidator.touched = true;\n this.setState({ isFocused: false } as unknown as S);\n if (onBlur) onBlur(event);\n }\n\n hasError(): boolean {\n const { errorMessage, isValid, formValidator } = this.props;\n return formValidator ? formValidator.touched && formValidator.hasError() : !isValid || !!errorMessage;\n }\n\n isRequired(): boolean {\n const { isRequired, formValidator } = this.props;\n return !!(\n isRequired ||\n (formValidator &&\n formValidator.validators.find((v) => (v as { validatorId?: string }).validatorId === 'required'))\n );\n }\n\n renderTooltip(): React.ReactNode {\n const { errorMessage, formValidator } = this.props;\n const { isHovered, isFocused } = this.state;\n return (\n <Tooltip\n variant='error'\n message={formValidator ? formValidator.getCurrentErrorMessage() : errorMessage || ''}\n isVisible={this.hasError() && (isFocused || isHovered)}\n />\n );\n }\n\n onChange(newVal: unknown): void {\n const { onChange, formValidator } = this.props;\n if (formValidator) {\n let extractedVal = newVal;\n if (newVal && (newVal as React.ChangeEvent<HTMLInputElement>).target) {\n extractedVal = (newVal as React.ChangeEvent<HTMLInputElement>).target.value;\n }\n formValidator.set(extractedVal);\n }\n if (onChange) onChange(newVal);\n }\n}\n"],"mappings":"2IA0BA,IAAqB,EAArB,cAGU,CAAoB,QAC8B,KAAA,aAAA,CACxD,cAAe,KACf,aAAc,KACd,aAAc,KACd,QAAS,KACT,OAAQ,KACR,SAAU,KACV,aAAc,GACd,QAAS,GACT,WAAY,GACZ,MAAO,EACT,EAEA,YAAY,EAAU,CACpB,MAAM,CAAK,EACX,GAAM,CAAE,iBAAkB,EAEtB,IACF,EAAc,MAAQ,EAAM,OAAS,GACrC,EAAc,SAAS,EACvB,EAAc,6BAA+B,CAC3C,KAAK,YAAY,CACnB,CAAC,GAGH,KAAK,MAAQ,CAAE,UAAW,GAAO,UAAW,EAAM,EAElD,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,aAAe,KAAK,aAAa,KAAK,IAAI,EAC/C,KAAK,QAAU,KAAK,QAAQ,KAAK,IAAI,EACrC,KAAK,OAAS,KAAK,OAAO,KAAK,IAAI,EACnC,KAAK,SAAW,KAAK,SAAS,KAAK,IAAI,EACvC,KAAK,cAAgB,KAAK,cAAc,KAAK,IAAI,EACjD,KAAK,SAAW,KAAK,SAAS,KAAK,IAAI,CACzC,CAEA,mBAA0B,CACxB,eAAiB,KAAK,SAAS,CAAE,UAAW,GAAO,UAAW,EAAM,CAAM,EAAG,CAAC,CAChF,CAEA,mBAAmB,EAAoB,CACrC,GAAM,CAAE,iBAAkB,KAAK,MAC3B,EAAU,eAAiB,GAAiB,EAAU,gBAAkB,GAC1E,EAAc,6BAA+B,CAC3C,KAAK,YAAY,CACnB,CAAC,CAEL,CAEA,aAAa,EAA+B,CAC1C,GAAM,CAAE,gBAAiB,KAAK,MAC9B,KAAK,SAAS,CAAE,UAAW,EAAK,CAAiB,EAC7C,GAAc,EAAa,CAAK,CACtC,CAEA,aAAa,EAA+B,CAC1C,GAAM,CAAE,gBAAiB,KAAK,MAC9B,KAAK,SAAS,CAAE,UAAW,EAAM,CAAiB,EAC9C,GAAc,EAAa,CAAK,CACtC,CAEA,QAAQ,EAA+B,CACrC,GAAM,CAAE,WAAY,KAAK,MACzB,KAAK,SAAS,CAAE,UAAW,EAAK,CAAiB,EAC7C,GAAS,EAAQ,CAAK,CAC5B,CAEA,OAAO,EAA+B,CACpC,GAAM,CAAE,gBAAe,UAAW,KAAK,MACnC,IAAe,EAAc,QAAU,IAC3C,KAAK,SAAS,CAAE,UAAW,EAAM,CAAiB,EAC9C,GAAQ,EAAO,CAAK,CAC1B,CAEA,UAAoB,CAClB,GAAM,CAAE,eAAc,UAAS,iBAAkB,KAAK,MACtD,OAAO,EAAgB,EAAc,SAAW,EAAc,SAAS,EAAI,CAAC,GAAW,CAAC,CAAC,CAC3F,CAEA,YAAsB,CACpB,GAAM,CAAE,aAAY,iBAAkB,KAAK,MAC3C,MAAO,CAAC,EACN,GACC,GACC,EAAc,WAAW,KAAM,GAAO,EAA+B,cAAgB,UAAU,EAErG,CAEA,eAAiC,CAC/B,GAAM,CAAE,eAAc,iBAAkB,KAAK,MACvC,CAAE,YAAW,aAAc,KAAK,MACtC,OACE,EAAC,EAAD,CACE,QAAQ,QACR,QAAS,EAAgB,EAAc,uBAAuB,EAAI,GAAgB,GAClF,UAAW,KAAK,SAAS,IAAM,GAAa,EAC7C,CAAA,CAEL,CAEA,SAAS,EAAuB,CAC9B,GAAM,CAAE,WAAU,iBAAkB,KAAK,MACzC,GAAI,EAAe,CACjB,IAAI,EAAe,EACf,GAAW,EAA+C,SAC5D,EAAgB,EAA+C,OAAO,OAExE,EAAc,IAAI,CAAY,CAChC,CACI,GAAU,EAAS,CAAM,CAC/B,CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=`https://api.klipy.com/v2`,t=class{constructor(e){this.key=e}async search(t,n={}){let r=new URLSearchParams({q:t,key:this.key});return n.limit!=null&&r.set(`limit`,String(n.limit)),n.contentfilter!=null&&r.set(`contentfilter`,n.contentfilter),n.pos!=null&&r.set(`pos`,n.pos),(await fetch(`${e}/search?${r}`)).json()}async searchSuggestions(t){let n=new URLSearchParams({q:t,key:this.key});return(await fetch(`${e}/search_suggestions?${n}`)).json()}registerShare(t,n){let r=new URLSearchParams({id:n,q:t,key:this.key});fetch(`${e}/registershare?${r}`).catch(()=>null)}};export{t as default};
|
|
1
|
+
"use client";var e=`https://api.klipy.com/v2`,t=class{constructor(e){this.key=e}async search(t,n={}){let r=new URLSearchParams({q:t,key:this.key});return n.limit!=null&&r.set(`limit`,String(n.limit)),n.contentfilter!=null&&r.set(`contentfilter`,n.contentfilter),n.pos!=null&&r.set(`pos`,n.pos),(await fetch(`${e}/search?${r}`)).json()}async searchSuggestions(t){let n=new URLSearchParams({q:t,key:this.key});return(await fetch(`${e}/search_suggestions?${n}`)).json()}registerShare(t,n){let r=new URLSearchParams({id:n,q:t,key:this.key});fetch(`${e}/registershare?${r}`).catch(()=>null)}};export{t as default};
|
|
2
2
|
//# sourceMappingURL=klipy.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"klipy.mjs","names":[],"sources":["../../../package/services/klipy.ts"],"sourcesContent":["const BASE_URL = 'https://api.klipy.com/v2';\n\nexport interface KlipyMediaFormat {\n url: string;\n dims: [number, number];\n size: number;\n}\n\nexport interface KlipyResult {\n id: string;\n title: string;\n media_formats: {\n gif: KlipyMediaFormat;\n tinygif: KlipyMediaFormat;\n mediumgif: KlipyMediaFormat;\n mp4: KlipyMediaFormat;\n tinymp4: KlipyMediaFormat;\n };\n tags: string[];\n url: string;\n}\n\ninterface SearchOptions {\n limit?: number;\n contentfilter?: 'off' | 'low' | 'medium' | 'high';\n pos?: string;\n}\n\nexport default class KlipyService {\n private key: string;\n\n constructor(key: string) {\n this.key = key;\n }\n\n async search(query: string, options: SearchOptions = {}): Promise<{ results: KlipyResult[]; next: string }> {\n const params = new URLSearchParams({ q: query, key: this.key });\n if (options.limit != null) params.set('limit', String(options.limit));\n if (options.contentfilter != null) params.set('contentfilter', options.contentfilter);\n if (options.pos != null) params.set('pos', options.pos);\n\n const res = await fetch(`${BASE_URL}/search?${params}`);\n return res.json();\n }\n\n async searchSuggestions(query: string): Promise<{ results: string[] }> {\n const params = new URLSearchParams({ q: query, key: this.key });\n const res = await fetch(`${BASE_URL}/search_suggestions?${params}`);\n return res.json();\n }\n\n registerShare(query: string, id: string): void {\n const params = new URLSearchParams({ id, q: query, key: this.key });\n fetch(`${BASE_URL}/registershare?${params}`).catch(() => null);\n }\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"klipy.mjs","names":[],"sources":["../../../package/services/klipy.ts"],"sourcesContent":["const BASE_URL = 'https://api.klipy.com/v2';\n\nexport interface KlipyMediaFormat {\n url: string;\n dims: [number, number];\n size: number;\n}\n\nexport interface KlipyResult {\n id: string;\n title: string;\n media_formats: {\n gif: KlipyMediaFormat;\n tinygif: KlipyMediaFormat;\n mediumgif: KlipyMediaFormat;\n mp4: KlipyMediaFormat;\n tinymp4: KlipyMediaFormat;\n };\n tags: string[];\n url: string;\n}\n\ninterface SearchOptions {\n limit?: number;\n contentfilter?: 'off' | 'low' | 'medium' | 'high';\n pos?: string;\n}\n\nexport default class KlipyService {\n private key: string;\n\n constructor(key: string) {\n this.key = key;\n }\n\n async search(query: string, options: SearchOptions = {}): Promise<{ results: KlipyResult[]; next: string }> {\n const params = new URLSearchParams({ q: query, key: this.key });\n if (options.limit != null) params.set('limit', String(options.limit));\n if (options.contentfilter != null) params.set('contentfilter', options.contentfilter);\n if (options.pos != null) params.set('pos', options.pos);\n\n const res = await fetch(`${BASE_URL}/search?${params}`);\n return res.json();\n }\n\n async searchSuggestions(query: string): Promise<{ results: string[] }> {\n const params = new URLSearchParams({ q: query, key: this.key });\n const res = await fetch(`${BASE_URL}/search_suggestions?${params}`);\n return res.json();\n }\n\n registerShare(query: string, id: string): void {\n const params = new URLSearchParams({ id, q: query, key: this.key });\n fetch(`${BASE_URL}/registershare?${params}`).catch(() => null);\n }\n}\n"],"mappings":"aAAA,IAAM,EAAW,2BA4BI,EAArB,KAAkC,CAGhC,YAAY,EAAa,CACvB,KAAK,IAAM,CACb,CAEA,MAAM,OAAO,EAAe,EAAyB,CAAC,EAAsD,CAC1G,IAAM,EAAS,IAAI,gBAAgB,CAAE,EAAG,EAAO,IAAK,KAAK,GAAI,CAAC,EAM9D,OALI,EAAQ,OAAS,MAAM,EAAO,IAAI,QAAS,OAAO,EAAQ,KAAK,CAAC,EAChE,EAAQ,eAAiB,MAAM,EAAO,IAAI,gBAAiB,EAAQ,aAAa,EAChF,EAAQ,KAAO,MAAM,EAAO,IAAI,MAAO,EAAQ,GAAG,GAG/C,MADW,MAAM,GAAG,EAAS,UAAU,GAAQ,EAAA,CAC3C,KAAK,CAClB,CAEA,MAAM,kBAAkB,EAA+C,CACrE,IAAM,EAAS,IAAI,gBAAgB,CAAE,EAAG,EAAO,IAAK,KAAK,GAAI,CAAC,EAE9D,OAAO,MADW,MAAM,GAAG,EAAS,sBAAsB,GAAQ,EAAA,CACvD,KAAK,CAClB,CAEA,cAAc,EAAe,EAAkB,CAC7C,IAAM,EAAS,IAAI,gBAAgB,CAAE,KAAI,EAAG,EAAO,IAAK,KAAK,GAAI,CAAC,EAClE,MAAM,GAAG,EAAS,iBAAiB,GAAQ,CAAC,CAAC,UAAY,IAAI,CAC/D,CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=[`de_AT`,`de_CH`,`de_DE`,`en_US`,`en_GB`,`de`,`en`],t=`en_US`,n=()=>{let n=navigator.languages[0]?.replace(`-`,`_`)||t;return e.includes(n)?n===`en_GB`||n===`en`?`en_US`:n===`de`?`de_DE`:n:t},r=e=>{switch(e){case`en_US`:case`en_GB`:return`en`;case`de_DE`:case`de_CH`:case`de_AT`:return`de`;default:return`de`}},i=n();async function a(e){i=e}function o(e=`_`){return i.replace(`_`,e)}export{o as getLocale,r as mapLocale,a as setLocale};
|
|
1
|
+
"use client";var e=[`de_AT`,`de_CH`,`de_DE`,`en_US`,`en_GB`,`de`,`en`],t=`en_US`,n=()=>{let n=navigator.languages[0]?.replace(`-`,`_`)||t;return e.includes(n)?n===`en_GB`||n===`en`?`en_US`:n===`de`?`de_DE`:n:t},r=e=>{switch(e){case`en_US`:case`en_GB`:return`en`;case`de_DE`:case`de_CH`:case`de_AT`:return`de`;default:return`de`}},i=n();async function a(e){i=e}function o(e=`_`){return i.replace(`_`,e)}export{o as getLocale,r as mapLocale,a as setLocale};
|
|
2
2
|
//# sourceMappingURL=localization.mjs.map
|