@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactableDiv.mjs","names":[],"sources":["../../../../package/common/interactableDiv/interactableDiv.tsx"],"sourcesContent":["import cx from 'classnames';\nimport React, { useCallback, type KeyboardEvent, type ReactElement } from 'react';\n\nimport styles from './interactableDiv.module.pcss';\nimport type { DataProps } from '../types/baseProps.types';\nimport { isSelfActivation } from '../utils/activationKey';\n\ninterface Properties extends DataProps, Omit<React.HTMLAttributes<HTMLDivElement>, 'tabIndex'> {\n tabIndex?: number | null;\n}\n\
|
|
1
|
+
{"version":3,"file":"interactableDiv.mjs","names":[],"sources":["../../../../package/common/interactableDiv/interactableDiv.tsx"],"sourcesContent":["import cx from 'classnames';\nimport React, { useCallback, type KeyboardEvent, type MouseEvent, type ReactElement } from 'react';\n\nimport styles from './interactableDiv.module.pcss';\nimport type { DataProps } from '../types/baseProps.types';\nimport { isSelfActivation } from '../utils/activationKey';\nimport { isInteractiveTarget } from '../utils/interactiveTarget';\n\ninterface Properties extends DataProps, Omit<React.HTMLAttributes<HTMLDivElement>, 'tabIndex'> {\n tabIndex?: number | null;\n ref?: React.Ref<HTMLDivElement>;\n}\n\nfunction InteractableDiv({\n className,\n children,\n onClick,\n onKeyDown,\n tabIndex,\n ref,\n ...props\n}: Properties): ReactElement {\n const onClickHandler = useCallback(\n (e: MouseEvent<HTMLDivElement>) => {\n // The pointer half of `isSelfActivation`: while only keydown checked its target, a click\n // into a card's text field counted as pressing the card and a Space typed into it did not.\n if (isInteractiveTarget(e.target, e.currentTarget)) return;\n onClick?.(e);\n },\n [onClick],\n );\n\n const onKeyDownHandler = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n if (isSelfActivation(e)) {\n if (e.key === ' ') e.preventDefault();\n // A real click, the way a native button answers Enter and Space, rather\n // than calling `onClick` directly: it arrives as a MouseEvent instead of\n // a keyboard event wearing one, and it bubbles, so a parent that owns the\n // click sees it too. That parent is how a `Popover` or `Menu` opens from\n // a trigger that is not a button.\n e.currentTarget.click();\n }\n onKeyDown?.(e);\n },\n [onKeyDown],\n );\n\n // Compared to undefined rather than using ??, so an explicit null still means \"no tabindex\"\n // instead of falling through to the default.\n return (\n <div\n className={cx(styles.interactableDiv, className)}\n onClick={onClick ? onClickHandler : undefined}\n tabIndex={tabIndex === undefined ? (onClick ? 0 : undefined) : (tabIndex ?? undefined)}\n role={onClick ? 'button' : undefined}\n onKeyDown={onKeyDownHandler}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nexport default InteractableDiv;\n"],"mappings":"kSAaA,SAAS,EAAgB,CACvB,YACA,WACA,UACA,YACA,WACA,MACA,GAAG,GACwB,CAC3B,IAAM,EAAiB,EACpB,GAAkC,CAG7B,EAAoB,EAAE,OAAQ,EAAE,aAAa,GACjD,IAAU,CAAC,CACb,EACA,CAAC,CAAO,CACV,EAEM,EAAmB,EACtB,GAAqC,CAChC,EAAiB,CAAC,IAChB,EAAE,MAAQ,KAAK,EAAE,eAAe,EAMpC,EAAE,cAAc,MAAM,GAExB,IAAY,CAAC,CACf,EACA,CAAC,CAAS,CACZ,EAIA,OACE,EAAC,MAAD,CACE,UAAW,EAAG,EAAO,gBAAiB,CAAS,EAC/C,QAAS,EAAU,EAAiB,IAAA,GACpC,SAAU,IAAa,IAAA,GAAa,EAAU,EAAI,IAAA,GAAc,GAAY,IAAA,GAC5E,KAAM,EAAU,SAAW,IAAA,GAC3B,UAAW,EACN,MACL,GAAI,EAEH,UACE,CAAA,CAET"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=`interactableDiv_Ej8Fi`,t={interactableDiv:e};export{t as default,e as interactableDiv};
|
|
1
|
+
"use client";var e=`interactableDiv_Ej8Fi`,t={interactableDiv:e};export{t as default,e as interactableDiv};
|
|
2
2
|
//# sourceMappingURL=interactableDiv.module.mjs.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import e from"./kanbanBoard.module.mjs";import t from"./KanbanColumn.mjs";import{buildAnnouncements as n,columnsEqual as r,isColumnDragData as i,kanbanCollisionDetection as a,kanbanKeyboardCoordinateGetter as o,moveColumn as s,moveItem as c}from"./kanbanBoard.utils.mjs";import{useMemo as l,useRef as u,useState as d}from"react";import f from"classnames";import{jsx as p,jsxs as m}from"react/jsx-runtime";import{DndContext as h,DragOverlay as g,KeyboardSensor as _,MouseSensor as v,TouchSensor as y,useSensor as b,useSensors as x}from"@dnd-kit/core";import{SortableContext as S,horizontalListSortingStrategy as C}from"@dnd-kit/sortable";var ee=(e,t)=>t,te={activationConstraint:{distance:8}},ne={activationConstraint:{delay:250,tolerance:5}},re={coordinateGetter:o},w={draggable:`
|
|
1
|
+
"use client";import e from"./kanbanBoard.module.mjs";import t from"./KanbanColumn.mjs";import{buildAnnouncements as n,columnsEqual as r,isColumnDragData as i,kanbanCollisionDetection as a,kanbanKeyboardCoordinateGetter as o,moveColumn as s,moveItem as c}from"./kanbanBoard.utils.mjs";import{useMemo as l,useRef as u,useState as d}from"react";import f from"classnames";import{jsx as p,jsxs as m}from"react/jsx-runtime";import{DndContext as h,DragOverlay as g,KeyboardSensor as _,MouseSensor as v,TouchSensor as y,useSensor as b,useSensors as x}from"@dnd-kit/core";import{SortableContext as S,horizontalListSortingStrategy as C}from"@dnd-kit/sortable";var ee=(e,t)=>t,te={activationConstraint:{distance:8}},ne={activationConstraint:{delay:250,tolerance:5}},re={coordinateGetter:o},w={draggable:`
|
|
2
2
|
To pick up a card or column, press space or enter.
|
|
3
3
|
While dragging, use the arrow keys to move it — for a card, between positions and columns;
|
|
4
4
|
for a column, left/right to reorder it.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KanbanBoard.mjs","names":[],"sources":["../../../../package/common/kanbanBoard/KanbanBoard.tsx"],"sourcesContent":["import { useMemo, useRef, useState } from 'react';\nimport {\n DndContext,\n DragOverlay,\n KeyboardSensor,\n MouseSensor,\n TouchSensor,\n useSensor,\n useSensors,\n type DragStartEvent,\n type DragOverEvent,\n type DragEndEvent,\n type ScreenReaderInstructions,\n} from '@dnd-kit/core';\nimport { SortableContext, horizontalListSortingStrategy } from '@dnd-kit/sortable';\nimport cx from 'classnames';\n\nimport type { KanbanBoardProps, KanbanColumnDef } from './kanbanBoard.types';\nimport styles from './kanbanBoard.module.pcss';\nimport KanbanColumn from './KanbanColumn';\nimport {\n buildAnnouncements,\n columnsEqual,\n isColumnDragData,\n kanbanCollisionDetection,\n kanbanKeyboardCoordinateGetter,\n moveColumn,\n moveItem,\n} from './kanbanBoard.utils';\n\nconst defaultGetItemLabel = <T,>(_item: T, id: string): string => id;\n\n// Hoisted so these are referentially stable across renders — inline literals here would give\n// `useSensor` a new options object every render (including every dragOver during an active\n// drag), which defeats its own memoization and makes `sensors` a new array each time too.\n//\n// Mouse and touch are split (rather than one combined `PointerSensor`) because they need\n// different activation constraints: a small movement threshold for mouse starts a drag\n// immediately without interfering with clicks, but the same threshold on a touchscreen would\n// hijack an ordinary scroll gesture as soon as the finger moves a few pixels. Touch instead\n// requires a brief press-and-hold before a drag arms, so a normal swipe-to-scroll passes through\n// untouched — the same pattern `VirtualList`'s `longPressDelay` uses.\nconst MOUSE_SENSOR_OPTIONS = { activationConstraint: { distance: 8 } };\nconst TOUCH_SENSOR_OPTIONS = { activationConstraint: { delay: 250, tolerance: 5 } };\nconst KEYBOARD_SENSOR_OPTIONS = { coordinateGetter: kanbanKeyboardCoordinateGetter };\n\nconst SCREEN_READER_INSTRUCTIONS: ScreenReaderInstructions = {\n draggable: `\n To pick up a card or column, press space or enter.\n While dragging, use the arrow keys to move it — for a card, between positions and columns;\n for a column, left/right to reorder it.\n Press space or enter again to drop it, or press escape to cancel.\n `,\n};\n\nfunction KanbanBoard<T = unknown>({\n columns,\n items,\n renderItem,\n onChange,\n dragHandle,\n getItemLabel = defaultGetItemLabel,\n getItemDisabled,\n renderEmptyColumn,\n renderColumnActions,\n reorderableColumns,\n collapseEmptyColumns,\n columnMaxHeight,\n onLoadMore,\n loadMoreThreshold,\n className,\n style,\n classNames,\n styles: slotStyles,\n ...rest\n}: KanbanBoardProps<T>) {\n const [activeId, setActiveId] = useState<string | null>(null);\n const [activeIsColumn, setActiveIsColumn] = useState(false);\n const [shadowColumns, setShadowColumns] = useState<KanbanColumnDef[] | null>(null);\n\n // Guards against a self-sustaining reorder loop: applying a card move reflows the columns\n // involved, which can shift a *different* card under an otherwise-stationary pointer. dnd-kit\n // then re-fires `dragOver` with that new `over`, even though the user hasn't moved anything —\n // and if the geometry decision for that new target flips back once applied, the two states\n // (or more) can bounce forever, purely from our own layout changes, eventually tripping React's\n // \"Maximum update depth exceeded\" guard. `activeRect` only changes when the dragged card's own\n // position actually moves (real pointer/keyboard input), so it's used here as a proxy for \"did\n // anything the user did actually change\" — a reorder is only applied once per distinct\n // `activeRect`, which lets a drag settle and then holds still instead of oscillating.\n const lastAppliedActiveRectKeyRef = useRef<string | null>(null);\n\n const sensors = useSensors(\n useSensor(MouseSensor, MOUSE_SENSOR_OPTIONS),\n useSensor(TouchSensor, TOUCH_SENSOR_OPTIONS),\n useSensor(KeyboardSensor, KEYBOARD_SENSOR_OPTIONS),\n );\n\n const displayColumns = shadowColumns ?? columns;\n\n // `SortableContext` memoizes its own derived `items`/context value keyed on this array's\n // *reference*, not its contents — an inline `.map()` here would hand it a new array every\n // render (including every `dragOver` while a drag is in progress, via `shadowColumns`), forcing\n // every column's own `useSortable` to recompute and its whole subtree to re-render on every\n // board render, not just when the column order actually changes. Same class of bug as the\n // sensor options and the `data`/`disabled` objects in `KanbanColumn.tsx`/`KanbanItem.tsx`.\n const columnIds = useMemo(() => displayColumns.map((col) => col.id), [displayColumns]);\n\n const announcements = useMemo(\n () => buildAnnouncements(displayColumns, items, getItemLabel),\n [displayColumns, items, getItemLabel],\n );\n\n const accessibility = useMemo(\n () => ({ announcements, screenReaderInstructions: SCREEN_READER_INSTRUCTIONS }),\n [announcements],\n );\n\n function handleDragStart({ active }: DragStartEvent) {\n setActiveId(String(active.id));\n setActiveIsColumn(isColumnDragData(active.data.current));\n // `moveItem`/`moveColumn` never mutate what's passed in, only returning new objects/arrays\n // for the column(s) actually touched — so seeding the shadow state directly with `columns`\n // (rather than a full deep clone) is safe, and skips an O(total cards) clone on every drag.\n setShadowColumns(columns);\n lastAppliedActiveRectKeyRef.current = null;\n }\n\n function handleDragOver({ active, over }: DragOverEvent) {\n if (!over) return;\n\n if (isColumnDragData(active.data.current)) {\n const activeColumnId = String(active.id);\n const overColumnId = String(over.id);\n\n setShadowColumns((prev) => {\n const base = prev ?? columns;\n const next = moveColumn(base, activeColumnId, overColumnId);\n return next === base ? prev : next;\n });\n return;\n }\n\n const activeItemId = String(active.id);\n const overId = String(over.id);\n const activeRect = active.rect.current.translated ?? active.rect.current.initial;\n\n const activeRectKey = activeRect ? `${activeRect.top}:${activeRect.left}` : null;\n if (activeRectKey !== null && activeRectKey === lastAppliedActiveRectKeyRef.current) {\n return;\n }\n lastAppliedActiveRectKeyRef.current = activeRectKey;\n\n setShadowColumns((prev) => {\n const base = prev ?? columns;\n const next = moveItem(base, activeItemId, overId, { activeRect, overRect: over.rect });\n return next === base ? prev : next;\n });\n }\n\n function handleDragEnd({ over }: DragEndEvent) {\n setActiveId(null);\n setActiveIsColumn(false);\n\n if (!over || !shadowColumns) {\n setShadowColumns(null);\n return;\n }\n\n if (!columnsEqual(shadowColumns, columns)) {\n onChange(shadowColumns);\n }\n setShadowColumns(null);\n }\n\n function handleDragCancel() {\n setActiveId(null);\n setActiveIsColumn(false);\n setShadowColumns(null);\n }\n\n const activeColumn = activeId && activeIsColumn ? displayColumns.find((col) => col.id === activeId) : undefined;\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={kanbanCollisionDetection}\n onDragStart={handleDragStart}\n onDragOver={handleDragOver}\n onDragEnd={handleDragEnd}\n onDragCancel={handleDragCancel}\n accessibility={accessibility}\n >\n <SortableContext id='kanban-columns' items={columnIds} strategy={horizontalListSortingStrategy}>\n <div {...rest} className={cx(styles.board, className)} style={style}>\n {displayColumns.map((col) => (\n <KanbanColumn\n key={col.id}\n id={col.id}\n title={col.title}\n itemIds={col.itemIds}\n maxItems={col.maxItems}\n disabled={col.disabled}\n getItemDisabled={getItemDisabled}\n emptyPlaceholder={renderEmptyColumn?.(col)}\n actions={renderColumnActions?.(col)}\n reorderable={reorderableColumns}\n activeIsColumn={activeId !== null && activeIsColumn}\n collapseEmptyColumns={collapseEmptyColumns}\n columnMaxHeight={columnMaxHeight}\n hasMore={col.hasMore}\n onLoadMore={onLoadMore ? () => onLoadMore(col.id) : undefined}\n loadMoreThreshold={loadMoreThreshold}\n items={items}\n renderItem={renderItem}\n dragHandle={dragHandle}\n preserveSizeWhileEmpty={activeId !== null}\n />\n ))}\n </div>\n </SortableContext>\n <DragOverlay>\n {activeColumn ? (\n <div className={cx(styles.column, styles.columnDragOverlay)}>\n <div className={styles.columnHeader}>\n <span className={styles.columnHeaderTitle}>{activeColumn.title}</span>\n </div>\n </div>\n ) : activeId && !activeIsColumn && items[activeId] !== undefined ? (\n <div className={cx(styles.dragOverlay, classNames?.dragOverlay)} style={slotStyles?.dragOverlay}>\n {renderItem(items[activeId], activeId)}\n </div>\n ) : null}\n </DragOverlay>\n </DndContext>\n );\n}\n\nexport default KanbanBoard;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"KanbanBoard.mjs","names":[],"sources":["../../../../package/common/kanbanBoard/KanbanBoard.tsx"],"sourcesContent":["import { useMemo, useRef, useState } from 'react';\nimport {\n DndContext,\n DragOverlay,\n KeyboardSensor,\n MouseSensor,\n TouchSensor,\n useSensor,\n useSensors,\n type DragStartEvent,\n type DragOverEvent,\n type DragEndEvent,\n type ScreenReaderInstructions,\n} from '@dnd-kit/core';\nimport { SortableContext, horizontalListSortingStrategy } from '@dnd-kit/sortable';\nimport cx from 'classnames';\n\nimport type { KanbanBoardProps, KanbanColumnDef } from './kanbanBoard.types';\nimport styles from './kanbanBoard.module.pcss';\nimport KanbanColumn from './KanbanColumn';\nimport {\n buildAnnouncements,\n columnsEqual,\n isColumnDragData,\n kanbanCollisionDetection,\n kanbanKeyboardCoordinateGetter,\n moveColumn,\n moveItem,\n} from './kanbanBoard.utils';\n\nconst defaultGetItemLabel = <T,>(_item: T, id: string): string => id;\n\n// Hoisted so these are referentially stable across renders — inline literals here would give\n// `useSensor` a new options object every render (including every dragOver during an active\n// drag), which defeats its own memoization and makes `sensors` a new array each time too.\n//\n// Mouse and touch are split (rather than one combined `PointerSensor`) because they need\n// different activation constraints: a small movement threshold for mouse starts a drag\n// immediately without interfering with clicks, but the same threshold on a touchscreen would\n// hijack an ordinary scroll gesture as soon as the finger moves a few pixels. Touch instead\n// requires a brief press-and-hold before a drag arms, so a normal swipe-to-scroll passes through\n// untouched — the same pattern `VirtualList`'s `longPressDelay` uses.\nconst MOUSE_SENSOR_OPTIONS = { activationConstraint: { distance: 8 } };\nconst TOUCH_SENSOR_OPTIONS = { activationConstraint: { delay: 250, tolerance: 5 } };\nconst KEYBOARD_SENSOR_OPTIONS = { coordinateGetter: kanbanKeyboardCoordinateGetter };\n\nconst SCREEN_READER_INSTRUCTIONS: ScreenReaderInstructions = {\n draggable: `\n To pick up a card or column, press space or enter.\n While dragging, use the arrow keys to move it — for a card, between positions and columns;\n for a column, left/right to reorder it.\n Press space or enter again to drop it, or press escape to cancel.\n `,\n};\n\nfunction KanbanBoard<T = unknown>({\n columns,\n items,\n renderItem,\n onChange,\n dragHandle,\n getItemLabel = defaultGetItemLabel,\n getItemDisabled,\n renderEmptyColumn,\n renderColumnActions,\n reorderableColumns,\n collapseEmptyColumns,\n columnMaxHeight,\n onLoadMore,\n loadMoreThreshold,\n className,\n style,\n classNames,\n styles: slotStyles,\n ...rest\n}: KanbanBoardProps<T>) {\n const [activeId, setActiveId] = useState<string | null>(null);\n const [activeIsColumn, setActiveIsColumn] = useState(false);\n const [shadowColumns, setShadowColumns] = useState<KanbanColumnDef[] | null>(null);\n\n // Guards against a self-sustaining reorder loop: applying a card move reflows the columns\n // involved, which can shift a *different* card under an otherwise-stationary pointer. dnd-kit\n // then re-fires `dragOver` with that new `over`, even though the user hasn't moved anything —\n // and if the geometry decision for that new target flips back once applied, the two states\n // (or more) can bounce forever, purely from our own layout changes, eventually tripping React's\n // \"Maximum update depth exceeded\" guard. `activeRect` only changes when the dragged card's own\n // position actually moves (real pointer/keyboard input), so it's used here as a proxy for \"did\n // anything the user did actually change\" — a reorder is only applied once per distinct\n // `activeRect`, which lets a drag settle and then holds still instead of oscillating.\n const lastAppliedActiveRectKeyRef = useRef<string | null>(null);\n\n const sensors = useSensors(\n useSensor(MouseSensor, MOUSE_SENSOR_OPTIONS),\n useSensor(TouchSensor, TOUCH_SENSOR_OPTIONS),\n useSensor(KeyboardSensor, KEYBOARD_SENSOR_OPTIONS),\n );\n\n const displayColumns = shadowColumns ?? columns;\n\n // `SortableContext` memoizes its own derived `items`/context value keyed on this array's\n // *reference*, not its contents — an inline `.map()` here would hand it a new array every\n // render (including every `dragOver` while a drag is in progress, via `shadowColumns`), forcing\n // every column's own `useSortable` to recompute and its whole subtree to re-render on every\n // board render, not just when the column order actually changes. Same class of bug as the\n // sensor options and the `data`/`disabled` objects in `KanbanColumn.tsx`/`KanbanItem.tsx`.\n const columnIds = useMemo(() => displayColumns.map((col) => col.id), [displayColumns]);\n\n const announcements = useMemo(\n () => buildAnnouncements(displayColumns, items, getItemLabel),\n [displayColumns, items, getItemLabel],\n );\n\n const accessibility = useMemo(\n () => ({ announcements, screenReaderInstructions: SCREEN_READER_INSTRUCTIONS }),\n [announcements],\n );\n\n function handleDragStart({ active }: DragStartEvent) {\n setActiveId(String(active.id));\n setActiveIsColumn(isColumnDragData(active.data.current));\n // `moveItem`/`moveColumn` never mutate what's passed in, only returning new objects/arrays\n // for the column(s) actually touched — so seeding the shadow state directly with `columns`\n // (rather than a full deep clone) is safe, and skips an O(total cards) clone on every drag.\n setShadowColumns(columns);\n lastAppliedActiveRectKeyRef.current = null;\n }\n\n function handleDragOver({ active, over }: DragOverEvent) {\n if (!over) return;\n\n if (isColumnDragData(active.data.current)) {\n const activeColumnId = String(active.id);\n const overColumnId = String(over.id);\n\n setShadowColumns((prev) => {\n const base = prev ?? columns;\n const next = moveColumn(base, activeColumnId, overColumnId);\n return next === base ? prev : next;\n });\n return;\n }\n\n const activeItemId = String(active.id);\n const overId = String(over.id);\n const activeRect = active.rect.current.translated ?? active.rect.current.initial;\n\n const activeRectKey = activeRect ? `${activeRect.top}:${activeRect.left}` : null;\n if (activeRectKey !== null && activeRectKey === lastAppliedActiveRectKeyRef.current) {\n return;\n }\n lastAppliedActiveRectKeyRef.current = activeRectKey;\n\n setShadowColumns((prev) => {\n const base = prev ?? columns;\n const next = moveItem(base, activeItemId, overId, { activeRect, overRect: over.rect });\n return next === base ? prev : next;\n });\n }\n\n function handleDragEnd({ over }: DragEndEvent) {\n setActiveId(null);\n setActiveIsColumn(false);\n\n if (!over || !shadowColumns) {\n setShadowColumns(null);\n return;\n }\n\n if (!columnsEqual(shadowColumns, columns)) {\n onChange(shadowColumns);\n }\n setShadowColumns(null);\n }\n\n function handleDragCancel() {\n setActiveId(null);\n setActiveIsColumn(false);\n setShadowColumns(null);\n }\n\n const activeColumn = activeId && activeIsColumn ? displayColumns.find((col) => col.id === activeId) : undefined;\n\n return (\n <DndContext\n sensors={sensors}\n collisionDetection={kanbanCollisionDetection}\n onDragStart={handleDragStart}\n onDragOver={handleDragOver}\n onDragEnd={handleDragEnd}\n onDragCancel={handleDragCancel}\n accessibility={accessibility}\n >\n <SortableContext id='kanban-columns' items={columnIds} strategy={horizontalListSortingStrategy}>\n <div {...rest} className={cx(styles.board, className)} style={style}>\n {displayColumns.map((col) => (\n <KanbanColumn\n key={col.id}\n id={col.id}\n title={col.title}\n itemIds={col.itemIds}\n maxItems={col.maxItems}\n disabled={col.disabled}\n getItemDisabled={getItemDisabled}\n emptyPlaceholder={renderEmptyColumn?.(col)}\n actions={renderColumnActions?.(col)}\n reorderable={reorderableColumns}\n activeIsColumn={activeId !== null && activeIsColumn}\n collapseEmptyColumns={collapseEmptyColumns}\n columnMaxHeight={columnMaxHeight}\n hasMore={col.hasMore}\n onLoadMore={onLoadMore ? () => onLoadMore(col.id) : undefined}\n loadMoreThreshold={loadMoreThreshold}\n items={items}\n renderItem={renderItem}\n dragHandle={dragHandle}\n preserveSizeWhileEmpty={activeId !== null}\n />\n ))}\n </div>\n </SortableContext>\n <DragOverlay>\n {activeColumn ? (\n <div className={cx(styles.column, styles.columnDragOverlay)}>\n <div className={styles.columnHeader}>\n <span className={styles.columnHeaderTitle}>{activeColumn.title}</span>\n </div>\n </div>\n ) : activeId && !activeIsColumn && items[activeId] !== undefined ? (\n <div className={cx(styles.dragOverlay, classNames?.dragOverlay)} style={slotStyles?.dragOverlay}>\n {renderItem(items[activeId], activeId)}\n </div>\n ) : null}\n </DragOverlay>\n </DndContext>\n );\n}\n\nexport default KanbanBoard;\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"../loading/spinnerLoading/index.mjs";import t from"./kanbanBoard.module.mjs";import n from"./KanbanItem.mjs";import{useCallback as r,useEffect as i,useRef as a,useState as o}from"react";import s from"classnames";import{jsx as c,jsxs as l}from"react/jsx-runtime";import{useDroppable as u}from"@dnd-kit/core";import{SortableContext as d,useSortable as f,verticalListSortingStrategy as p}from"@dnd-kit/sortable";import{CSS as m}from"@dnd-kit/utilities";var h={type:`column`},g={draggable:!0,droppable:!0};function _({id:_,title:v,itemIds:y,items:b,renderItem:x,dragHandle:S,preserveSizeWhileEmpty:C,collapseEmptyColumns:w=!0,maxItems:T,disabled:E,getItemDisabled:D,emptyPlaceholder:O,actions:k,reorderable:A,activeIsColumn:j,columnMaxHeight:M,hasMore:N,onLoadMore:P,loadMoreThreshold:F=100,className:I,style:L,classNames:R,styles:z,...B}){let V=`column-${_}`,{setNodeRef:H,isOver:U}=u({id:V,disabled:E}),W=w&&y.length===0&&!C,G=T!=null&&y.length>T,K=a(null),q=r(e=>{K.current=e,H(e)},[H]),J=a(!1),[Y,X]=o(!1),Z=r(()=>{P&&!J.current&&(J.current=!0,X(!0),Promise.resolve(P()).finally(()=>{J.current=!1,X(!1)}))},[P]),Q=r(e=>{if(!N)return;let t=e.currentTarget;t.scrollTop+t.clientHeight>=t.scrollHeight-F&&Z()},[N,F,Z]),$=a(``);i(()=>{if(!N||!M||Y)return;let e=K.current;if(!e||e.clientHeight===0||e.scrollHeight>e.clientHeight)return;let t=`${y.length}:${e.clientHeight}`;$.current!==t&&($.current=t,Z())},[N,M,Y,y.length,Z]);let{attributes:ee,listeners:te,setNodeRef:ne,transform:re,transition:ie,isDragging:ae,isOver:oe}=f({id:_,data:h,disabled:!A&&g});return l(`div`,{...B,ref:ne,id:_,className:s(t.column,U&&!j&&t.columnOver,oe&&t.columnDropTarget,W&&t.columnEmpty,G&&t.columnOverLimit,E&&t.columnDisabled,ae&&t.columnDragging,I),style:{transform:m.Transform.toString(re),transition:ie,...L},children:[l(`div`,{className:s(t.columnHeader,A&&t.columnHeaderReorderable,R?.header),style:z?.header,...A?ee:void 0,...A?te:void 0,children:[c(`span`,{className:t.columnHeaderTitle,children:v}),l(`div`,{className:t.columnHeaderTrailing,children:[T!=null&&l(`span`,{className:s(t.columnHeaderCount,G&&t.columnHeaderCountOver,R?.count),style:z?.count,children:[y.length,`/`,T]}),k!=null&&c(`div`,{className:s(t.columnHeaderActions,R?.actions),style:z?.actions,children:k})]})]}),c(d,{id:_,items:y,strategy:p,children:l(`div`,{ref:q,className:s(t.columnItems,R?.items),style:{maxHeight:M,overflowY:M?`auto`:void 0,...z?.items},onScroll:M?Q:void 0,children:[y.length===0&&O!=null?c(`div`,{className:s(t.columnPlaceholder,R?.placeholder),style:z?.placeholder,children:O}):null,y.map(e=>c(n,{id:e,dragHandle:S,disabled:E||b[e]!==void 0&&(D?.(b[e],e)??!1),preventAsDropTarget:E,children:b[e]===void 0?null:x(b[e],e)},e)),Y&&c(`div`,{className:s(t.columnLoadingIndicator,R?.loadingIndicator),style:z?.loadingIndicator,children:c(e,{className:t.columnLoadingSpinner})})]})})]})}export{_ as default};
|
|
1
|
+
"use client";import e from"../loading/spinnerLoading/index.mjs";import t from"./kanbanBoard.module.mjs";import n from"./KanbanItem.mjs";import{useCallback as r,useEffect as i,useRef as a,useState as o}from"react";import s from"classnames";import{jsx as c,jsxs as l}from"react/jsx-runtime";import{useDroppable as u}from"@dnd-kit/core";import{SortableContext as d,useSortable as f,verticalListSortingStrategy as p}from"@dnd-kit/sortable";import{CSS as m}from"@dnd-kit/utilities";var h={type:`column`},g={draggable:!0,droppable:!0};function _({id:_,title:v,itemIds:y,items:b,renderItem:x,dragHandle:S,preserveSizeWhileEmpty:C,collapseEmptyColumns:w=!0,maxItems:T,disabled:E,getItemDisabled:D,emptyPlaceholder:O,actions:k,reorderable:A,activeIsColumn:j,columnMaxHeight:M,hasMore:N,onLoadMore:P,loadMoreThreshold:F=100,className:I,style:L,classNames:R,styles:z,...B}){let V=`column-${_}`,{setNodeRef:H,isOver:U}=u({id:V,disabled:E}),W=w&&y.length===0&&!C,G=T!=null&&y.length>T,K=a(null),q=r(e=>{K.current=e,H(e)},[H]),J=a(!1),[Y,X]=o(!1),Z=r(()=>{P&&!J.current&&(J.current=!0,X(!0),Promise.resolve(P()).finally(()=>{J.current=!1,X(!1)}))},[P]),Q=r(e=>{if(!N)return;let t=e.currentTarget;t.scrollTop+t.clientHeight>=t.scrollHeight-F&&Z()},[N,F,Z]),$=a(``);i(()=>{if(!N||!M||Y)return;let e=K.current;if(!e||e.clientHeight===0||e.scrollHeight>e.clientHeight)return;let t=`${y.length}:${e.clientHeight}`;$.current!==t&&($.current=t,Z())},[N,M,Y,y.length,Z]);let{attributes:ee,listeners:te,setNodeRef:ne,transform:re,transition:ie,isDragging:ae,isOver:oe}=f({id:_,data:h,disabled:!A&&g});return l(`div`,{...B,ref:ne,id:_,className:s(t.column,U&&!j&&t.columnOver,oe&&t.columnDropTarget,W&&t.columnEmpty,G&&t.columnOverLimit,E&&t.columnDisabled,ae&&t.columnDragging,I),style:{transform:m.Transform.toString(re),transition:ie,...L},children:[l(`div`,{className:s(t.columnHeader,A&&t.columnHeaderReorderable,R?.header),style:z?.header,...A?ee:void 0,...A?te:void 0,children:[c(`span`,{className:t.columnHeaderTitle,children:v}),l(`div`,{className:t.columnHeaderTrailing,children:[T!=null&&l(`span`,{className:s(t.columnHeaderCount,G&&t.columnHeaderCountOver,R?.count),style:z?.count,children:[y.length,`/`,T]}),k!=null&&c(`div`,{className:s(t.columnHeaderActions,R?.actions),style:z?.actions,children:k})]})]}),c(d,{id:_,items:y,strategy:p,children:l(`div`,{ref:q,className:s(t.columnItems,R?.items),style:{maxHeight:M,overflowY:M?`auto`:void 0,...z?.items},onScroll:M?Q:void 0,children:[y.length===0&&O!=null?c(`div`,{className:s(t.columnPlaceholder,R?.placeholder),style:z?.placeholder,children:O}):null,y.map(e=>c(n,{id:e,dragHandle:S,disabled:E||b[e]!==void 0&&(D?.(b[e],e)??!1),preventAsDropTarget:E,children:b[e]===void 0?null:x(b[e],e)},e)),Y&&c(`div`,{className:s(t.columnLoadingIndicator,R?.loadingIndicator),style:z?.loadingIndicator,children:c(e,{className:t.columnLoadingSpinner})})]})})]})}export{_ as default};
|
|
2
2
|
//# sourceMappingURL=KanbanColumn.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KanbanColumn.mjs","names":[],"sources":["../../../../package/common/kanbanBoard/KanbanColumn.tsx"],"sourcesContent":["import type { ReactNode, UIEvent } from 'react';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { useDroppable } from '@dnd-kit/core';\nimport { SortableContext, useSortable, verticalListSortingStrategy } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport cx from 'classnames';\n\nimport type { KanbanColumnProps } from './kanbanBoard.types';\nimport styles from './kanbanBoard.module.pcss';\nimport KanbanItem from './KanbanItem';\nimport SpinnerLoading from '../loading/spinnerLoading';\n\n// Hoisted so these are referentially stable across renders — inline literals here would give\n// `useSortable` a new `data`/`disabled` object every render (every column re-renders on every\n// `dragOver` while a drag is in progress, via `shadowColumns`), which can spin dnd-kit's own\n// registration effect into a render loop that eventually trips React's \"Maximum update depth\n// exceeded\" guard. Same fix as the sensor options in `KanbanBoard.tsx`.\nconst COLUMN_SORTABLE_DATA = { type: 'column' };\nconst COLUMN_SORTABLE_DISABLED = { draggable: true, droppable: true };\n\ninterface KanbanColumnInternalProps<T> extends KanbanColumnProps {\n itemIds: string[];\n items: Record<string, T>;\n renderItem: (item: T, id: string) => ReactNode;\n dragHandle?: boolean;\n /**\n * Keep the column at its normal flex width even when `itemIds` is empty. Used while a drag\n * is in progress: the empty-column collapse is driven by transient shadow state during a\n * drag, and letting the column shrink mid-drag shifts every column's layout underneath the\n * pointer, which can flip the collision target back and forth forever.\n */\n preserveSizeWhileEmpty?: boolean;\n /** Shrink to a narrow strip when empty — see `KanbanBoardProps.collapseEmptyColumns`. Defaults to `true`. */\n collapseEmptyColumns?: boolean;\n /** Work-in-progress limit — see `KanbanColumnDef.maxItems`. Display-only. */\n maxItems?: number;\n /** Freezes the column — see `KanbanColumnDef.disabled`. */\n disabled?: boolean;\n /** Returns whether a specific card can't be picked up — see `KanbanBoardProps.getItemDisabled`. */\n getItemDisabled?: (item: T, id: string) => boolean;\n /** Custom content shown when the column has no cards — see `KanbanBoardProps.renderEmptyColumn`. */\n emptyPlaceholder?: ReactNode;\n /** Custom header actions — see `KanbanBoardProps.renderColumnActions`. */\n actions?: ReactNode;\n /** Allow the whole column to be dragged (by its header) to reorder it — see `KanbanBoardProps.reorderableColumns`. */\n reorderable?: boolean;\n /**\n * Whether the card currently being dragged (if any) is actually a column. Suppresses the\n * cards drop-target highlight, which otherwise lights up on every column a dragged column\n * passes over — that highlight means \"drop a card here\", which doesn't apply mid-column-drag.\n */\n activeIsColumn?: boolean;\n /** Bounds the column's height and makes its card list scroll — see `KanbanBoardProps.columnMaxHeight`. */\n columnMaxHeight?: string;\n /** Whether more items exist for this column — see `KanbanColumnDef.hasMore`. */\n hasMore?: boolean;\n /** Requests the next page for this column — see `KanbanBoardProps.onLoadMore`. */\n onLoadMore?: () => void | Promise<void>;\n /** Scroll distance from the bottom that triggers `onLoadMore` — see `KanbanBoardProps.loadMoreThreshold`. */\n loadMoreThreshold?: number;\n}\n\nfunction KanbanColumn<T>({\n id,\n title,\n itemIds,\n items,\n renderItem,\n dragHandle,\n preserveSizeWhileEmpty,\n collapseEmptyColumns = true,\n maxItems,\n disabled,\n getItemDisabled,\n emptyPlaceholder,\n actions,\n reorderable,\n activeIsColumn,\n columnMaxHeight,\n hasMore,\n onLoadMore,\n loadMoreThreshold = 100,\n className,\n style,\n classNames,\n styles: slotStyles,\n ...rest\n}: KanbanColumnInternalProps<T>) {\n const droppableId = `column-${id}`;\n const { setNodeRef, isOver } = useDroppable({ id: droppableId, disabled });\n const isEmpty = collapseEmptyColumns && itemIds.length === 0 && !preserveSizeWhileEmpty;\n const isOverLimit = maxItems != null && itemIds.length > maxItems;\n\n const itemsRef = useRef<HTMLDivElement | null>(null);\n const setItemsRef = useCallback(\n (node: HTMLDivElement | null) => {\n itemsRef.current = node;\n setNodeRef(node);\n },\n [setNodeRef],\n );\n const isLoadingMoreRef = useRef(false);\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n\n const triggerLoadMore = useCallback(() => {\n if (!onLoadMore || isLoadingMoreRef.current) return;\n isLoadingMoreRef.current = true;\n setIsLoadingMore(true);\n Promise.resolve(onLoadMore()).finally(() => {\n isLoadingMoreRef.current = false;\n setIsLoadingMore(false);\n });\n }, [onLoadMore]);\n\n const handleItemsScroll = useCallback(\n (event: UIEvent<HTMLDivElement>) => {\n if (!hasMore) return;\n const el = event.currentTarget;\n if (el.scrollTop + el.clientHeight >= el.scrollHeight - loadMoreThreshold) triggerLoadMore();\n },\n [hasMore, loadMoreThreshold, triggerLoadMore],\n );\n\n // The scroll trigger above can only fire once the list actually overflows and scrolls. A batch\n // smaller than the column's own visible height never generates a scroll event, which would\n // otherwise dead-end pagination after the first page. Re-probes at most once per (item count,\n // visible height) pair, so settled content can't re-ask a source that already ran dry.\n const fillProbeRef = useRef('');\n useEffect(() => {\n if (!hasMore || !columnMaxHeight || isLoadingMore) return;\n const el = itemsRef.current;\n if (!el || el.clientHeight === 0) return;\n if (el.scrollHeight > el.clientHeight) return;\n const probe = `${itemIds.length}:${el.clientHeight}`;\n if (fillProbeRef.current === probe) return;\n fillProbeRef.current = probe;\n triggerLoadMore();\n }, [hasMore, columnMaxHeight, isLoadingMore, itemIds.length, triggerLoadMore]);\n\n const {\n attributes: columnAttributes,\n listeners: columnListeners,\n setNodeRef: setColumnNodeRef,\n transform: columnTransform,\n transition: columnTransition,\n isDragging: isColumnDragging,\n isOver: isColumnOver,\n } = useSortable({\n id,\n data: COLUMN_SORTABLE_DATA,\n disabled: reorderable ? false : COLUMN_SORTABLE_DISABLED,\n });\n\n return (\n <div\n {...rest}\n ref={setColumnNodeRef}\n id={id}\n className={cx(\n styles.column,\n isOver && !activeIsColumn && styles.columnOver,\n isColumnOver && styles.columnDropTarget,\n isEmpty && styles.columnEmpty,\n isOverLimit && styles.columnOverLimit,\n disabled && styles.columnDisabled,\n isColumnDragging && styles.columnDragging,\n className,\n )}\n style={{ transform: CSS.Transform.toString(columnTransform), transition: columnTransition, ...style }}\n >\n <div\n className={cx(styles.columnHeader, reorderable && styles.columnHeaderReorderable, classNames?.header)}\n style={slotStyles?.header}\n {...(reorderable ? columnAttributes : undefined)}\n {...(reorderable ? columnListeners : undefined)}\n >\n <span className={styles.columnHeaderTitle}>{title}</span>\n <div className={styles.columnHeaderTrailing}>\n {maxItems != null && (\n <span\n className={cx(styles.columnHeaderCount, isOverLimit && styles.columnHeaderCountOver, classNames?.count)}\n style={slotStyles?.count}\n >\n {itemIds.length}/{maxItems}\n </span>\n )}\n {actions != null && (\n <div className={cx(styles.columnHeaderActions, classNames?.actions)} style={slotStyles?.actions}>\n {actions}\n </div>\n )}\n </div>\n </div>\n <SortableContext id={id} items={itemIds} strategy={verticalListSortingStrategy}>\n <div\n ref={setItemsRef}\n className={cx(styles.columnItems, classNames?.items)}\n style={{ maxHeight: columnMaxHeight, overflowY: columnMaxHeight ? 'auto' : undefined, ...slotStyles?.items }}\n onScroll={columnMaxHeight ? handleItemsScroll : undefined}\n >\n {itemIds.length === 0 && emptyPlaceholder != null ? (\n <div className={cx(styles.columnPlaceholder, classNames?.placeholder)} style={slotStyles?.placeholder}>\n {emptyPlaceholder}\n </div>\n ) : null}\n {itemIds.map((itemId) => (\n <KanbanItem\n key={itemId}\n id={itemId}\n dragHandle={dragHandle}\n disabled={\n disabled || (items[itemId] !== undefined && (getItemDisabled?.(items[itemId], itemId) ?? false))\n }\n preventAsDropTarget={disabled}\n >\n {items[itemId] !== undefined ? renderItem(items[itemId], itemId) : null}\n </KanbanItem>\n ))}\n {isLoadingMore && (\n <div\n className={cx(styles.columnLoadingIndicator, classNames?.loadingIndicator)}\n style={slotStyles?.loadingIndicator}\n >\n <SpinnerLoading className={styles.columnLoadingSpinner} />\n </div>\n )}\n </div>\n </SortableContext>\n </div>\n );\n}\n\nexport default KanbanColumn;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"KanbanColumn.mjs","names":[],"sources":["../../../../package/common/kanbanBoard/KanbanColumn.tsx"],"sourcesContent":["import type { ReactNode, UIEvent } from 'react';\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport { useDroppable } from '@dnd-kit/core';\nimport { SortableContext, useSortable, verticalListSortingStrategy } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport cx from 'classnames';\n\nimport type { KanbanColumnProps } from './kanbanBoard.types';\nimport styles from './kanbanBoard.module.pcss';\nimport KanbanItem from './KanbanItem';\nimport SpinnerLoading from '../loading/spinnerLoading';\n\n// Hoisted so these are referentially stable across renders — inline literals here would give\n// `useSortable` a new `data`/`disabled` object every render (every column re-renders on every\n// `dragOver` while a drag is in progress, via `shadowColumns`), which can spin dnd-kit's own\n// registration effect into a render loop that eventually trips React's \"Maximum update depth\n// exceeded\" guard. Same fix as the sensor options in `KanbanBoard.tsx`.\nconst COLUMN_SORTABLE_DATA = { type: 'column' };\nconst COLUMN_SORTABLE_DISABLED = { draggable: true, droppable: true };\n\ninterface KanbanColumnInternalProps<T> extends KanbanColumnProps {\n itemIds: string[];\n items: Record<string, T>;\n renderItem: (item: T, id: string) => ReactNode;\n dragHandle?: boolean;\n /**\n * Keep the column at its normal flex width even when `itemIds` is empty. Used while a drag\n * is in progress: the empty-column collapse is driven by transient shadow state during a\n * drag, and letting the column shrink mid-drag shifts every column's layout underneath the\n * pointer, which can flip the collision target back and forth forever.\n */\n preserveSizeWhileEmpty?: boolean;\n /** Shrink to a narrow strip when empty — see `KanbanBoardProps.collapseEmptyColumns`. Defaults to `true`. */\n collapseEmptyColumns?: boolean;\n /** Work-in-progress limit — see `KanbanColumnDef.maxItems`. Display-only. */\n maxItems?: number;\n /** Freezes the column — see `KanbanColumnDef.disabled`. */\n disabled?: boolean;\n /** Returns whether a specific card can't be picked up — see `KanbanBoardProps.getItemDisabled`. */\n getItemDisabled?: (item: T, id: string) => boolean;\n /** Custom content shown when the column has no cards — see `KanbanBoardProps.renderEmptyColumn`. */\n emptyPlaceholder?: ReactNode;\n /** Custom header actions — see `KanbanBoardProps.renderColumnActions`. */\n actions?: ReactNode;\n /** Allow the whole column to be dragged (by its header) to reorder it — see `KanbanBoardProps.reorderableColumns`. */\n reorderable?: boolean;\n /**\n * Whether the card currently being dragged (if any) is actually a column. Suppresses the\n * cards drop-target highlight, which otherwise lights up on every column a dragged column\n * passes over — that highlight means \"drop a card here\", which doesn't apply mid-column-drag.\n */\n activeIsColumn?: boolean;\n /** Bounds the column's height and makes its card list scroll — see `KanbanBoardProps.columnMaxHeight`. */\n columnMaxHeight?: string;\n /** Whether more items exist for this column — see `KanbanColumnDef.hasMore`. */\n hasMore?: boolean;\n /** Requests the next page for this column — see `KanbanBoardProps.onLoadMore`. */\n onLoadMore?: () => void | Promise<void>;\n /** Scroll distance from the bottom that triggers `onLoadMore` — see `KanbanBoardProps.loadMoreThreshold`. */\n loadMoreThreshold?: number;\n}\n\nfunction KanbanColumn<T>({\n id,\n title,\n itemIds,\n items,\n renderItem,\n dragHandle,\n preserveSizeWhileEmpty,\n collapseEmptyColumns = true,\n maxItems,\n disabled,\n getItemDisabled,\n emptyPlaceholder,\n actions,\n reorderable,\n activeIsColumn,\n columnMaxHeight,\n hasMore,\n onLoadMore,\n loadMoreThreshold = 100,\n className,\n style,\n classNames,\n styles: slotStyles,\n ...rest\n}: KanbanColumnInternalProps<T>) {\n const droppableId = `column-${id}`;\n const { setNodeRef, isOver } = useDroppable({ id: droppableId, disabled });\n const isEmpty = collapseEmptyColumns && itemIds.length === 0 && !preserveSizeWhileEmpty;\n const isOverLimit = maxItems != null && itemIds.length > maxItems;\n\n const itemsRef = useRef<HTMLDivElement | null>(null);\n const setItemsRef = useCallback(\n (node: HTMLDivElement | null) => {\n itemsRef.current = node;\n setNodeRef(node);\n },\n [setNodeRef],\n );\n const isLoadingMoreRef = useRef(false);\n const [isLoadingMore, setIsLoadingMore] = useState(false);\n\n const triggerLoadMore = useCallback(() => {\n if (!onLoadMore || isLoadingMoreRef.current) return;\n isLoadingMoreRef.current = true;\n setIsLoadingMore(true);\n Promise.resolve(onLoadMore()).finally(() => {\n isLoadingMoreRef.current = false;\n setIsLoadingMore(false);\n });\n }, [onLoadMore]);\n\n const handleItemsScroll = useCallback(\n (event: UIEvent<HTMLDivElement>) => {\n if (!hasMore) return;\n const el = event.currentTarget;\n if (el.scrollTop + el.clientHeight >= el.scrollHeight - loadMoreThreshold) triggerLoadMore();\n },\n [hasMore, loadMoreThreshold, triggerLoadMore],\n );\n\n // The scroll trigger above can only fire once the list actually overflows and scrolls. A batch\n // smaller than the column's own visible height never generates a scroll event, which would\n // otherwise dead-end pagination after the first page. Re-probes at most once per (item count,\n // visible height) pair, so settled content can't re-ask a source that already ran dry.\n const fillProbeRef = useRef('');\n useEffect(() => {\n if (!hasMore || !columnMaxHeight || isLoadingMore) return;\n const el = itemsRef.current;\n if (!el || el.clientHeight === 0) return;\n if (el.scrollHeight > el.clientHeight) return;\n const probe = `${itemIds.length}:${el.clientHeight}`;\n if (fillProbeRef.current === probe) return;\n fillProbeRef.current = probe;\n triggerLoadMore();\n }, [hasMore, columnMaxHeight, isLoadingMore, itemIds.length, triggerLoadMore]);\n\n const {\n attributes: columnAttributes,\n listeners: columnListeners,\n setNodeRef: setColumnNodeRef,\n transform: columnTransform,\n transition: columnTransition,\n isDragging: isColumnDragging,\n isOver: isColumnOver,\n } = useSortable({\n id,\n data: COLUMN_SORTABLE_DATA,\n disabled: reorderable ? false : COLUMN_SORTABLE_DISABLED,\n });\n\n return (\n <div\n {...rest}\n ref={setColumnNodeRef}\n id={id}\n className={cx(\n styles.column,\n isOver && !activeIsColumn && styles.columnOver,\n isColumnOver && styles.columnDropTarget,\n isEmpty && styles.columnEmpty,\n isOverLimit && styles.columnOverLimit,\n disabled && styles.columnDisabled,\n isColumnDragging && styles.columnDragging,\n className,\n )}\n style={{ transform: CSS.Transform.toString(columnTransform), transition: columnTransition, ...style }}\n >\n <div\n className={cx(styles.columnHeader, reorderable && styles.columnHeaderReorderable, classNames?.header)}\n style={slotStyles?.header}\n {...(reorderable ? columnAttributes : undefined)}\n {...(reorderable ? columnListeners : undefined)}\n >\n <span className={styles.columnHeaderTitle}>{title}</span>\n <div className={styles.columnHeaderTrailing}>\n {maxItems != null && (\n <span\n className={cx(styles.columnHeaderCount, isOverLimit && styles.columnHeaderCountOver, classNames?.count)}\n style={slotStyles?.count}\n >\n {itemIds.length}/{maxItems}\n </span>\n )}\n {actions != null && (\n <div className={cx(styles.columnHeaderActions, classNames?.actions)} style={slotStyles?.actions}>\n {actions}\n </div>\n )}\n </div>\n </div>\n <SortableContext id={id} items={itemIds} strategy={verticalListSortingStrategy}>\n <div\n ref={setItemsRef}\n className={cx(styles.columnItems, classNames?.items)}\n style={{ maxHeight: columnMaxHeight, overflowY: columnMaxHeight ? 'auto' : undefined, ...slotStyles?.items }}\n onScroll={columnMaxHeight ? handleItemsScroll : undefined}\n >\n {itemIds.length === 0 && emptyPlaceholder != null ? (\n <div className={cx(styles.columnPlaceholder, classNames?.placeholder)} style={slotStyles?.placeholder}>\n {emptyPlaceholder}\n </div>\n ) : null}\n {itemIds.map((itemId) => (\n <KanbanItem\n key={itemId}\n id={itemId}\n dragHandle={dragHandle}\n disabled={\n disabled || (items[itemId] !== undefined && (getItemDisabled?.(items[itemId], itemId) ?? false))\n }\n preventAsDropTarget={disabled}\n >\n {items[itemId] !== undefined ? renderItem(items[itemId], itemId) : null}\n </KanbanItem>\n ))}\n {isLoadingMore && (\n <div\n className={cx(styles.columnLoadingIndicator, classNames?.loadingIndicator)}\n style={slotStyles?.loadingIndicator}\n >\n <SpinnerLoading className={styles.columnLoadingSpinner} />\n </div>\n )}\n </div>\n </SortableContext>\n </div>\n );\n}\n\nexport default KanbanColumn;\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"./kanbanBoard.module.mjs";import t from"classnames";import{jsx as n}from"react/jsx-runtime";import{useSortable as r}from"@dnd-kit/sortable";import{CSS as i}from"@dnd-kit/utilities";var a={draggable:!0,droppable:!0},o={draggable:!0,droppable:!1};function s({id:s,dragHandle:c,disabled:l,preventAsDropTarget:u,children:d}){let{attributes:f,listeners:p,setNodeRef:m,transform:h,transition:g,isDragging:_}=r({id:s,disabled:l?u?a:o:void 0});function v(e){e.target.closest(`[data-drag-handle]`)&&p?.onPointerDown?.(e)}return n(`div`,{ref:m,style:{transform:i.Transform.toString(h),transition:g},className:t(e.item,c&&e.itemHandled,_&&e.itemDragging,l&&e.itemDisabled),...f,...p,onPointerDown:c?v:p?.onPointerDown,children:d})}export{s as default};
|
|
1
|
+
"use client";import e from"./kanbanBoard.module.mjs";import t from"classnames";import{jsx as n}from"react/jsx-runtime";import{useSortable as r}from"@dnd-kit/sortable";import{CSS as i}from"@dnd-kit/utilities";var a={draggable:!0,droppable:!0},o={draggable:!0,droppable:!1};function s({id:s,dragHandle:c,disabled:l,preventAsDropTarget:u,children:d}){let{attributes:f,listeners:p,setNodeRef:m,transform:h,transition:g,isDragging:_}=r({id:s,disabled:l?u?a:o:void 0});function v(e){e.target.closest(`[data-drag-handle]`)&&p?.onPointerDown?.(e)}return n(`div`,{ref:m,style:{transform:i.Transform.toString(h),transition:g},className:t(e.item,c&&e.itemHandled,_&&e.itemDragging,l&&e.itemDisabled),...f,...p,onPointerDown:c?v:p?.onPointerDown,children:d})}export{s as default};
|
|
2
2
|
//# sourceMappingURL=KanbanItem.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KanbanItem.mjs","names":[],"sources":["../../../../package/common/kanbanBoard/KanbanItem.tsx"],"sourcesContent":["import type { PointerEvent as ReactPointerEvent, PointerEventHandler } from 'react';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport cx from 'classnames';\n\nimport type { KanbanItemProps } from './kanbanBoard.types';\nimport styles from './kanbanBoard.module.pcss';\n\n// Hoisted so these are referentially stable across renders — an inline object literal here would\n// give `useSortable` a new `disabled` value every render (every card re-renders on every\n// `dragOver` while a drag is in progress, via `shadowColumns`), which can spin dnd-kit's own\n// registration effect into a render loop that eventually trips React's \"Maximum update depth\n// exceeded\" guard. Same fix as the sensor options in `KanbanBoard.tsx` and `data`/`disabled` in\n// `KanbanColumn.tsx`. Only two shapes are ever needed, so both are hoisted rather than memoized.\nconst ITEM_DISABLED_DRAG_AND_DROP = { draggable: true, droppable: true };\nconst ITEM_DISABLED_DRAG_ONLY = { draggable: true, droppable: false };\n\nfunction KanbanItem({ id, dragHandle, disabled, preventAsDropTarget, children }: KanbanItemProps) {\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id,\n // The boolean shorthand only disables dragging *out* of the card — dnd-kit hard-codes\n // `droppable: false` for it either way (\"backwards compatibility\"). That's actually what we\n // want for a card pinned individually (`getItemDisabled`): it can't be dragged, but other\n // cards should still be able to land before/after it normally. Only a frozen *column*\n // (`preventAsDropTarget`) also disables droppable, so nothing can be dropped into it at all.\n disabled: disabled ? (preventAsDropTarget ? ITEM_DISABLED_DRAG_AND_DROP : ITEM_DISABLED_DRAG_ONLY) : undefined,\n });\n\n function handlePointerDown(event: ReactPointerEvent<HTMLDivElement>) {\n if (!(event.target as HTMLElement).closest('[data-drag-handle]')) return;\n listeners?.onPointerDown?.(event);\n }\n\n return (\n <div\n ref={setNodeRef}\n style={{ transform: CSS.Transform.toString(transform), transition }}\n className={cx(\n styles.item,\n dragHandle && styles.itemHandled,\n isDragging && styles.itemDragging,\n disabled && styles.itemDisabled,\n )}\n {...attributes}\n {...listeners}\n onPointerDown={\n dragHandle ? handlePointerDown : (listeners?.onPointerDown as PointerEventHandler<HTMLDivElement> | undefined)\n }\n >\n {children}\n </div>\n );\n}\n\nexport default KanbanItem;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"KanbanItem.mjs","names":[],"sources":["../../../../package/common/kanbanBoard/KanbanItem.tsx"],"sourcesContent":["import type { PointerEvent as ReactPointerEvent, PointerEventHandler } from 'react';\nimport { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport cx from 'classnames';\n\nimport type { KanbanItemProps } from './kanbanBoard.types';\nimport styles from './kanbanBoard.module.pcss';\n\n// Hoisted so these are referentially stable across renders — an inline object literal here would\n// give `useSortable` a new `disabled` value every render (every card re-renders on every\n// `dragOver` while a drag is in progress, via `shadowColumns`), which can spin dnd-kit's own\n// registration effect into a render loop that eventually trips React's \"Maximum update depth\n// exceeded\" guard. Same fix as the sensor options in `KanbanBoard.tsx` and `data`/`disabled` in\n// `KanbanColumn.tsx`. Only two shapes are ever needed, so both are hoisted rather than memoized.\nconst ITEM_DISABLED_DRAG_AND_DROP = { draggable: true, droppable: true };\nconst ITEM_DISABLED_DRAG_ONLY = { draggable: true, droppable: false };\n\nfunction KanbanItem({ id, dragHandle, disabled, preventAsDropTarget, children }: KanbanItemProps) {\n const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({\n id,\n // The boolean shorthand only disables dragging *out* of the card — dnd-kit hard-codes\n // `droppable: false` for it either way (\"backwards compatibility\"). That's actually what we\n // want for a card pinned individually (`getItemDisabled`): it can't be dragged, but other\n // cards should still be able to land before/after it normally. Only a frozen *column*\n // (`preventAsDropTarget`) also disables droppable, so nothing can be dropped into it at all.\n disabled: disabled ? (preventAsDropTarget ? ITEM_DISABLED_DRAG_AND_DROP : ITEM_DISABLED_DRAG_ONLY) : undefined,\n });\n\n function handlePointerDown(event: ReactPointerEvent<HTMLDivElement>) {\n if (!(event.target as HTMLElement).closest('[data-drag-handle]')) return;\n listeners?.onPointerDown?.(event);\n }\n\n return (\n <div\n ref={setNodeRef}\n style={{ transform: CSS.Transform.toString(transform), transition }}\n className={cx(\n styles.item,\n dragHandle && styles.itemHandled,\n isDragging && styles.itemDragging,\n disabled && styles.itemDisabled,\n )}\n {...attributes}\n {...listeners}\n onPointerDown={\n dragHandle ? handlePointerDown : (listeners?.onPointerDown as PointerEventHandler<HTMLDivElement> | undefined)\n }\n >\n {children}\n </div>\n );\n}\n\nexport default KanbanItem;\n"],"mappings":"gNAcA,IAAM,EAA8B,CAAE,UAAW,GAAM,UAAW,EAAK,EACjE,EAA0B,CAAE,UAAW,GAAM,UAAW,EAAM,EAEpE,SAAS,EAAW,CAAE,KAAI,aAAY,WAAU,sBAAqB,YAA6B,CAChG,GAAM,CAAE,aAAY,YAAW,aAAY,YAAW,aAAY,cAAe,EAAY,CAC3F,KAMA,SAAU,EAAY,EAAsB,EAA8B,EAA2B,IAAA,EACvG,CAAC,EAED,SAAS,EAAkB,EAA0C,CAC7D,EAAM,OAAuB,QAAQ,oBAAoB,GAC/D,GAAW,gBAAgB,CAAK,CAClC,CAEA,OACE,EAAC,MAAD,CACE,IAAK,EACL,MAAO,CAAE,UAAW,EAAI,UAAU,SAAS,CAAS,EAAG,YAAW,EAClE,UAAW,EACT,EAAO,KACP,GAAc,EAAO,YACrB,GAAc,EAAO,aACrB,GAAY,EAAO,YACrB,EACA,GAAI,EACJ,GAAI,EACJ,cACE,EAAa,EAAqB,GAAW,cAG9C,UACE,CAAA,CAET"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=`board_6KRdw`,t=`column_NrNeF`,n=`column-empty_5KYsJ`,r=`column-over_sO7oD`,i=`column-over-limit_QmeZF`,a=`column-drop-target_mznmc`,o=`column-disabled_ehcz3`,s=`column-items_xY5er`,c=`column-dragging_6F5TK`,l=`column-drag-overlay_ctehQ`,u=`column-header_PLeKG`,d=`column-header-reorderable_Jtgii`,f=`column-header-title_FQhHQ`,p=`column-header-count_3t83e`,m=`column-header-count-over_AkAdo`,h=`column-header-trailing_6625D`,g=`column-header-actions_XKY3t`,_=`column-placeholder_WGyF-`,v=`column-loading-indicator_2Q70t`,y=`column-loading-spinner_4ca6l`,b=`item_T8CJK`,x=`item-dragging_iWurw`,S=`item-handled_l28gq`,C=`item-disabled_n8Nuq`,w=`dragOverlay_DSyKz`,T={board:e,column:t,"column-empty":`column-empty_5KYsJ`,columnEmpty:n,"column-over":`column-over_sO7oD`,columnOver:r,"column-over-limit":`column-over-limit_QmeZF`,columnOverLimit:i,"column-drop-target":`column-drop-target_mznmc`,columnDropTarget:a,"column-disabled":`column-disabled_ehcz3`,columnDisabled:o,"column-items":`column-items_xY5er`,columnItems:s,"column-dragging":`column-dragging_6F5TK`,columnDragging:c,"column-drag-overlay":`column-drag-overlay_ctehQ`,columnDragOverlay:l,"column-header":`column-header_PLeKG`,columnHeader:u,"column-header-reorderable":`column-header-reorderable_Jtgii`,columnHeaderReorderable:d,"column-header-title":`column-header-title_FQhHQ`,columnHeaderTitle:f,"column-header-count":`column-header-count_3t83e`,columnHeaderCount:p,"column-header-count-over":`column-header-count-over_AkAdo`,columnHeaderCountOver:m,"column-header-trailing":`column-header-trailing_6625D`,columnHeaderTrailing:h,"column-header-actions":`column-header-actions_XKY3t`,columnHeaderActions:g,"column-placeholder":`column-placeholder_WGyF-`,columnPlaceholder:_,"column-loading-indicator":`column-loading-indicator_2Q70t`,columnLoadingIndicator:v,"column-loading-spinner":`column-loading-spinner_4ca6l`,columnLoadingSpinner:y,item:b,"item-dragging":`item-dragging_iWurw`,itemDragging:x,"item-handled":`item-handled_l28gq`,itemHandled:S,"item-disabled":`item-disabled_n8Nuq`,itemDisabled:C,dragOverlay:w};export{e as board,t as column,o as columnDisabled,l as columnDragOverlay,c as columnDragging,a as columnDropTarget,n as columnEmpty,u as columnHeader,g as columnHeaderActions,p as columnHeaderCount,m as columnHeaderCountOver,d as columnHeaderReorderable,f as columnHeaderTitle,h as columnHeaderTrailing,s as columnItems,v as columnLoadingIndicator,y as columnLoadingSpinner,r as columnOver,i as columnOverLimit,_ as columnPlaceholder,T as default,w as dragOverlay,b as item,C as itemDisabled,x as itemDragging,S as itemHandled};
|
|
1
|
+
"use client";var e=`board_6KRdw`,t=`column_NrNeF`,n=`column-empty_5KYsJ`,r=`column-over_sO7oD`,i=`column-over-limit_QmeZF`,a=`column-drop-target_mznmc`,o=`column-disabled_ehcz3`,s=`column-items_xY5er`,c=`column-dragging_6F5TK`,l=`column-drag-overlay_ctehQ`,u=`column-header_PLeKG`,d=`column-header-reorderable_Jtgii`,f=`column-header-title_FQhHQ`,p=`column-header-count_3t83e`,m=`column-header-count-over_AkAdo`,h=`column-header-trailing_6625D`,g=`column-header-actions_XKY3t`,_=`column-placeholder_WGyF-`,v=`column-loading-indicator_2Q70t`,y=`column-loading-spinner_4ca6l`,b=`item_T8CJK`,x=`item-dragging_iWurw`,S=`item-handled_l28gq`,C=`item-disabled_n8Nuq`,w=`dragOverlay_DSyKz`,T={board:e,column:t,"column-empty":`column-empty_5KYsJ`,columnEmpty:n,"column-over":`column-over_sO7oD`,columnOver:r,"column-over-limit":`column-over-limit_QmeZF`,columnOverLimit:i,"column-drop-target":`column-drop-target_mznmc`,columnDropTarget:a,"column-disabled":`column-disabled_ehcz3`,columnDisabled:o,"column-items":`column-items_xY5er`,columnItems:s,"column-dragging":`column-dragging_6F5TK`,columnDragging:c,"column-drag-overlay":`column-drag-overlay_ctehQ`,columnDragOverlay:l,"column-header":`column-header_PLeKG`,columnHeader:u,"column-header-reorderable":`column-header-reorderable_Jtgii`,columnHeaderReorderable:d,"column-header-title":`column-header-title_FQhHQ`,columnHeaderTitle:f,"column-header-count":`column-header-count_3t83e`,columnHeaderCount:p,"column-header-count-over":`column-header-count-over_AkAdo`,columnHeaderCountOver:m,"column-header-trailing":`column-header-trailing_6625D`,columnHeaderTrailing:h,"column-header-actions":`column-header-actions_XKY3t`,columnHeaderActions:g,"column-placeholder":`column-placeholder_WGyF-`,columnPlaceholder:_,"column-loading-indicator":`column-loading-indicator_2Q70t`,columnLoadingIndicator:v,"column-loading-spinner":`column-loading-spinner_4ca6l`,columnLoadingSpinner:y,item:b,"item-dragging":`item-dragging_iWurw`,itemDragging:x,"item-handled":`item-handled_l28gq`,itemHandled:S,"item-disabled":`item-disabled_n8Nuq`,itemDisabled:C,dragOverlay:w};export{e as board,t as column,o as columnDisabled,l as columnDragOverlay,c as columnDragging,a as columnDropTarget,n as columnEmpty,u as columnHeader,g as columnHeaderActions,p as columnHeaderCount,m as columnHeaderCountOver,d as columnHeaderReorderable,f as columnHeaderTitle,h as columnHeaderTrailing,s as columnItems,v as columnLoadingIndicator,y as columnLoadingSpinner,r as columnOver,i as columnOverLimit,_ as columnPlaceholder,T as default,w as dragOverlay,b as item,C as itemDisabled,x as itemDragging,S as itemHandled};
|
|
2
2
|
//# sourceMappingURL=kanbanBoard.module.mjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{KeyboardCode as e,closestCorners as t}from"@dnd-kit/core";import{arrayMove as n,hasSortableData as r}from"@dnd-kit/sortable";function i(e,t){return e.length===t.length&&e.every((e,n)=>{let r=t[n];return e.id===r.id&&e.itemIds.length===r.itemIds.length&&e.itemIds.every((e,t)=>e===r.itemIds[t])})}function a(e,t){return e.findIndex(e=>e.itemIds.includes(t))}function o(e){return!!(e&&typeof e==`object`&&e.type===`column`)}function s(e,t,r){let i=e.findIndex(e=>e.id===t),a=e.findIndex(e=>e.id===r);return i===-1||a===-1||i===a?e:n(e,i,a)}var c=e=>{let n=o(e.active.data.current),r=e.droppableContainers.filter(e=>n?o(e.data.current):!o(e.data.current));return t({...e,droppableContainers:r})};function l(e){return e.startsWith(`column-`)?e.slice(7):null}function u(e,t,r,i){let o=a(e,t);if(o===-1)return e;let s=l(r),c=s===null?a(e,r):e.findIndex(e=>e.id===s);if(c===-1)return e;if(o===c){let a=e[o],c=a.itemIds.indexOf(t);if(c===-1)return e;if(s!==null){let{activeRect:t,overRect:r}=i,s=t&&t.top+t.height/2>r.top+r.height/2?a.itemIds.length-1:0;if(s===c)return e;let l=[...e];return l[o]={...a,itemIds:n(a.itemIds,c,s)},l}let l=a.itemIds.indexOf(r);if(l===-1||c===l)return e;let u=[...e];return u[o]={...a,itemIds:n(a.itemIds,c,l)},u}let u=e[o],d=e[c],f=[...d.itemIds],{activeRect:p,overRect:m}=i,h;if(s!==null)h=p&&p.top+p.height/2>m.top+m.height/2?f.length:0;else{let e=f.indexOf(r),t=e!==-1&&e===f.length-1,n=!!(p&&p.top+p.height/2>m.top+m.height);h=e===-1?f.length:t&&n?e+1:e}f.splice(h,0,t);let g=[...e];return g[o]={...u,itemIds:u.itemIds.filter(e=>e!==t)},g[c]={...d,itemIds:f},g}function d(e,t,n){function r(e){let r=t[e];return r===void 0?e:n(r,e)}function i(t){let n=l(t);if(n!==null){let t=e.find(e=>e.id===n);return t?`the ${t.title} column`:`a column`}let i=e.find(e=>e.itemIds.includes(t));return i?`${r(t)}, in the ${i.title} column`:r(t)}function a(t){return e.find(e=>e.id===t)?.title??t}return{onDragStart({active:e}){return o(e.data.current)?`Picked up column ${a(String(e.id))}.`:`Picked up card ${r(String(e.id))}.`},onDragOver({active:e,over:t}){return o(e.data.current)?t?`Column ${a(String(e.id))} is over column ${a(String(t.id))}.`:`Column ${a(String(e.id))} is no longer over a droppable area.`:t?`Card ${r(String(e.id))} is over ${i(String(t.id))}.`:`Card ${r(String(e.id))} is no longer over a droppable area.`},onDragEnd({active:e,over:t}){return o(e.data.current)?t?`Column ${a(String(e.id))} was dropped over column ${a(String(t.id))}.`:`Column ${a(String(e.id))} was dropped.`:t?`Card ${r(String(e.id))} was dropped over ${i(String(t.id))}.`:`Card ${r(String(e.id))} was dropped.`},onDragCancel({active:e}){return o(e.data.current)?`Dragging cancelled. Column ${a(String(e.id))} was returned to its original position.`:`Dragging cancelled. Card ${r(String(e.id))} was returned to its original position.`}}}function f(e,t,n){let i=[];for(let a of e){if(!r(a)||a.data.current.sortable.containerId!==n)continue;let e=t.get(a.id);e&&i.push({container:a,rect:e})}return i.sort((e,t)=>e.rect.top-t.rect.top)}var p=(t,{context:n})=>{let{active:i,collisionRect:a,droppableRects:s,droppableContainers:c}=n;if(!i||!a||!r(i))return;let u=t.code===e.Down||t.code===e.Up,d=t.code===e.Left||t.code===e.Right;if(!u&&!d)return;t.preventDefault();let p=i.data.current.sortable.containerId,m=c.getEnabled();if(o(i.data.current)){if(!d)return;let n=t.code===e.Right?1:-1,r=f(m,s,p).sort((e,t)=>e.rect.left-t.rect.left),o=r.findIndex(e=>e.container.id===i.id);if(o===-1)return;let c=r[o+n];return c?{x:c.rect.left,y:a.top}:void 0}if(u){let n=t.code===e.Down?1:-1,r=f(m,s,p),o=r.findIndex(e=>e.container.id===i.id);if(o===-1)return;let c=r[o+n];return c?{x:a.left,y:c.rect.top}:void 0}let h=t.code===e.Right?1:-1,g=[];for(let e of m){if(l(String(e.id))===null)continue;let t=s.get(e.id);t&&g.push({container:e,rect:t})}g.sort((e,t)=>e.rect.left-t.rect.left);let _=g.findIndex(e=>l(String(e.container.id))===p);if(_===-1)return;let v=g[_+h];if(!v)return;let y=f(m,s,l(String(v.container.id))),b=v.rect;return y.length>0&&(b=y.reduce((e,t)=>Math.abs(t.rect.top-a.top)<Math.abs(e.rect.top-a.top)?t:e).rect),{x:b.left,y:b.top}};export{d as buildAnnouncements,i as columnsEqual,a as findColumnForItem,o as isColumnDragData,c as kanbanCollisionDetection,p as kanbanKeyboardCoordinateGetter,s as moveColumn,u as moveItem,l as resolveColumnDropId};
|
|
1
|
+
"use client";import{KeyboardCode as e,closestCorners as t}from"@dnd-kit/core";import{arrayMove as n,hasSortableData as r}from"@dnd-kit/sortable";function i(e,t){return e.length===t.length&&e.every((e,n)=>{let r=t[n];return e.id===r.id&&e.itemIds.length===r.itemIds.length&&e.itemIds.every((e,t)=>e===r.itemIds[t])})}function a(e,t){return e.findIndex(e=>e.itemIds.includes(t))}function o(e){return!!(e&&typeof e==`object`&&e.type===`column`)}function s(e,t,r){let i=e.findIndex(e=>e.id===t),a=e.findIndex(e=>e.id===r);return i===-1||a===-1||i===a?e:n(e,i,a)}var c=e=>{let n=o(e.active.data.current),r=e.droppableContainers.filter(e=>n?o(e.data.current):!o(e.data.current));return t({...e,droppableContainers:r})};function l(e){return e.startsWith(`column-`)?e.slice(7):null}function u(e,t,r,i){let o=a(e,t);if(o===-1)return e;let s=l(r),c=s===null?a(e,r):e.findIndex(e=>e.id===s);if(c===-1)return e;if(o===c){let a=e[o],c=a.itemIds.indexOf(t);if(c===-1)return e;if(s!==null){let{activeRect:t,overRect:r}=i,s=t&&t.top+t.height/2>r.top+r.height/2?a.itemIds.length-1:0;if(s===c)return e;let l=[...e];return l[o]={...a,itemIds:n(a.itemIds,c,s)},l}let l=a.itemIds.indexOf(r);if(l===-1||c===l)return e;let u=[...e];return u[o]={...a,itemIds:n(a.itemIds,c,l)},u}let u=e[o],d=e[c],f=[...d.itemIds],{activeRect:p,overRect:m}=i,h;if(s!==null)h=p&&p.top+p.height/2>m.top+m.height/2?f.length:0;else{let e=f.indexOf(r),t=e!==-1&&e===f.length-1,n=!!(p&&p.top+p.height/2>m.top+m.height);h=e===-1?f.length:t&&n?e+1:e}f.splice(h,0,t);let g=[...e];return g[o]={...u,itemIds:u.itemIds.filter(e=>e!==t)},g[c]={...d,itemIds:f},g}function d(e,t,n){function r(e){let r=t[e];return r===void 0?e:n(r,e)}function i(t){let n=l(t);if(n!==null){let t=e.find(e=>e.id===n);return t?`the ${t.title} column`:`a column`}let i=e.find(e=>e.itemIds.includes(t));return i?`${r(t)}, in the ${i.title} column`:r(t)}function a(t){return e.find(e=>e.id===t)?.title??t}return{onDragStart({active:e}){return o(e.data.current)?`Picked up column ${a(String(e.id))}.`:`Picked up card ${r(String(e.id))}.`},onDragOver({active:e,over:t}){return o(e.data.current)?t?`Column ${a(String(e.id))} is over column ${a(String(t.id))}.`:`Column ${a(String(e.id))} is no longer over a droppable area.`:t?`Card ${r(String(e.id))} is over ${i(String(t.id))}.`:`Card ${r(String(e.id))} is no longer over a droppable area.`},onDragEnd({active:e,over:t}){return o(e.data.current)?t?`Column ${a(String(e.id))} was dropped over column ${a(String(t.id))}.`:`Column ${a(String(e.id))} was dropped.`:t?`Card ${r(String(e.id))} was dropped over ${i(String(t.id))}.`:`Card ${r(String(e.id))} was dropped.`},onDragCancel({active:e}){return o(e.data.current)?`Dragging cancelled. Column ${a(String(e.id))} was returned to its original position.`:`Dragging cancelled. Card ${r(String(e.id))} was returned to its original position.`}}}function f(e,t,n){let i=[];for(let a of e){if(!r(a)||a.data.current.sortable.containerId!==n)continue;let e=t.get(a.id);e&&i.push({container:a,rect:e})}return i.sort((e,t)=>e.rect.top-t.rect.top)}var p=(t,{context:n})=>{let{active:i,collisionRect:a,droppableRects:s,droppableContainers:c}=n;if(!i||!a||!r(i))return;let u=t.code===e.Down||t.code===e.Up,d=t.code===e.Left||t.code===e.Right;if(!u&&!d)return;t.preventDefault();let p=i.data.current.sortable.containerId,m=c.getEnabled();if(o(i.data.current)){if(!d)return;let n=t.code===e.Right?1:-1,r=f(m,s,p).sort((e,t)=>e.rect.left-t.rect.left),o=r.findIndex(e=>e.container.id===i.id);if(o===-1)return;let c=r[o+n];return c?{x:c.rect.left,y:a.top}:void 0}if(u){let n=t.code===e.Down?1:-1,r=f(m,s,p),o=r.findIndex(e=>e.container.id===i.id);if(o===-1)return;let c=r[o+n];return c?{x:a.left,y:c.rect.top}:void 0}let h=t.code===e.Right?1:-1,g=[];for(let e of m){if(l(String(e.id))===null)continue;let t=s.get(e.id);t&&g.push({container:e,rect:t})}g.sort((e,t)=>e.rect.left-t.rect.left);let _=g.findIndex(e=>l(String(e.container.id))===p);if(_===-1)return;let v=g[_+h];if(!v)return;let y=f(m,s,l(String(v.container.id))),b=v.rect;return y.length>0&&(b=y.reduce((e,t)=>Math.abs(t.rect.top-a.top)<Math.abs(e.rect.top-a.top)?t:e).rect),{x:b.left,y:b.top}};export{d as buildAnnouncements,i as columnsEqual,a as findColumnForItem,o as isColumnDragData,c as kanbanCollisionDetection,p as kanbanKeyboardCoordinateGetter,s as moveColumn,u as moveItem,l as resolveColumnDropId};
|
|
2
2
|
//# sourceMappingURL=kanbanBoard.utils.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kanbanBoard.utils.mjs","names":[],"sources":["../../../../package/common/kanbanBoard/kanbanBoard.utils.ts"],"sourcesContent":["import { arrayMove, hasSortableData } from '@dnd-kit/sortable';\nimport {\n closestCorners,\n KeyboardCode,\n type Announcements,\n type ClientRect,\n type CollisionDetection,\n type DroppableContainer,\n type KeyboardCoordinateGetter,\n type UniqueIdentifier,\n} from '@dnd-kit/core';\n\nimport type { KanbanColumnDef } from './kanbanBoard.types';\n\nexport function columnsEqual(a: KanbanColumnDef[], b: KanbanColumnDef[]): boolean {\n if (a.length !== b.length) return false;\n return a.every((col, i) => {\n const other = b[i];\n return (\n col.id === other.id &&\n col.itemIds.length === other.itemIds.length &&\n col.itemIds.every((itemId, j) => itemId === other.itemIds[j])\n );\n });\n}\n\nexport function findColumnForItem(columns: KanbanColumnDef[], itemId: string): number {\n return columns.findIndex((col) => col.itemIds.includes(itemId));\n}\n\n/** Whether a drag's `active`/`over` participant is a whole column (vs. a card) — see `reorderableColumns`. */\nexport function isColumnDragData(data: unknown): boolean {\n return Boolean(data && typeof data === 'object' && (data as { type?: string }).type === 'column');\n}\n\n/**\n * Reorders whole columns: moves `activeColumnId` to `overColumnId`'s position. Returns the same\n * `columns` reference, unchanged, when either id doesn't resolve to a column or they're the same\n * — callers can use that to skip a state update.\n */\nexport function moveColumn(\n columns: KanbanColumnDef[],\n activeColumnId: string,\n overColumnId: string,\n): KanbanColumnDef[] {\n const oldIndex = columns.findIndex((col) => col.id === activeColumnId);\n const overIndex = columns.findIndex((col) => col.id === overColumnId);\n if (oldIndex === -1 || overIndex === -1 || oldIndex === overIndex) return columns;\n\n return arrayMove(columns, oldIndex, overIndex);\n}\n\n/**\n * Collision detection for the board's shared `DndContext`, which has to pick between two very\n * differently-scaled sets of droppables at once: individual cards / a column's own card list\n * (small, numerous) and whole columns (large, few). Plain `closestCorners` weighs every\n * registered droppable together regardless of what's actually being dragged, so while dragging a\n * column it competes against every card and card-list droppable it happens to fly over too — the\n * column-level target only wins when the pointer lands somewhere that geometrically favors it,\n * which reads as needing to \"wiggle it around\" before the right drop target lights up. This\n * restricts the candidates to only the same kind as whatever is being dragged: a column drag only\n * considers other columns, a card drag only considers cards and card lists.\n */\nexport const kanbanCollisionDetection: CollisionDetection = (args) => {\n const draggingColumn = isColumnDragData(args.active.data.current);\n const droppableContainers = args.droppableContainers.filter((container) =>\n draggingColumn ? isColumnDragData(container.data.current) : !isColumnDragData(container.data.current),\n );\n\n return closestCorners({ ...args, droppableContainers });\n};\n\n/** Extracts the column id from a column droppable's `column-<id>` identifier, or `null` for a card id. */\nexport function resolveColumnDropId(overId: string): string | null {\n return overId.startsWith('column-') ? overId.slice('column-'.length) : null;\n}\n\nexport interface DragGeometry {\n /** The dragged card's current rect (translated by the drag delta), if measured. */\n activeRect: ClientRect | null;\n /** The rect of whatever `overId` refers to — a card, or a column's own droppable. */\n overRect: ClientRect;\n}\n\n/**\n * Computes the columns that result from dragging `activeItemId` over `overId` (a card id, or a\n * `column-<id>` droppable id for empty column space). Returns the same `columns` reference,\n * unchanged, when the drag doesn't resolve to a valid source/destination — callers can use that\n * to skip a state update.\n *\n * `geometry` resolves cross-column drops that land on a card or gap with more than one possible\n * position (see the two branches below for what each one decides).\n */\nexport function moveItem(\n columns: KanbanColumnDef[],\n activeItemId: string,\n overId: string,\n geometry: DragGeometry,\n): KanbanColumnDef[] {\n // Only the source/destination column(s) actually change, so only those get new object/array\n // references — every other column keeps its exact `columns` reference. Cloning every column's\n // `itemIds` up front (as this used to) cost O(total cards across the whole board) on *every*\n // drag-over event, not just the couple of columns actually involved in the move.\n const sourceColIndex = findColumnForItem(columns, activeItemId);\n if (sourceColIndex === -1) return columns;\n\n const destColId = resolveColumnDropId(overId);\n const destColIndex =\n destColId !== null ? columns.findIndex((col) => col.id === destColId) : findColumnForItem(columns, overId);\n if (destColIndex === -1) return columns;\n\n if (sourceColIndex === destColIndex) {\n const col = columns[sourceColIndex];\n const oldIndex = col.itemIds.indexOf(activeItemId);\n if (oldIndex === -1) return columns;\n\n if (destColId !== null) {\n // over is the column's own droppable, not a card: nothing else claimed the collision,\n // which happens hovering the empty gap above/below the cards, or — critically — an edge\n // next to a disabled/pinned card with no other card nearby, since a disabled card's own\n // droppable is excluded from collision candidates entirely. Without this branch, that\n // case fell through to `col.itemIds.indexOf(overId)` below, which is always -1 for a\n // `column-<id>` id (it's not a card id), silently no-op-ing instead of reordering.\n const { activeRect, overRect } = geometry;\n const isBelowCenter = Boolean(\n activeRect && activeRect.top + activeRect.height / 2 > overRect.top + overRect.height / 2,\n );\n const targetIndex = isBelowCenter ? col.itemIds.length - 1 : 0;\n if (targetIndex === oldIndex) return columns;\n\n const next = [...columns];\n next[sourceColIndex] = { ...col, itemIds: arrayMove(col.itemIds, oldIndex, targetIndex) };\n return next;\n }\n\n const newIndex = col.itemIds.indexOf(overId);\n if (newIndex === -1 || oldIndex === newIndex) return columns;\n\n const next = [...columns];\n next[sourceColIndex] = { ...col, itemIds: arrayMove(col.itemIds, oldIndex, newIndex) };\n return next;\n }\n\n const sourceCol = columns[sourceColIndex];\n const destCol = columns[destColIndex];\n const destItemIds = [...destCol.itemIds];\n const { activeRect, overRect } = geometry;\n\n let insertAt: number;\n if (destColId !== null) {\n // Hovering the column's own droppable directly, rather than a specific card: the empty gap\n // above the first card, the empty gap below the last card, or the whole area when the column\n // has no cards at all. Comparing centers against the *container's* full-height rect is a\n // coarse but reliable way to tell the top gap (insert at the start) from the bottom gap\n // (append at the end) — treating every container hover as \"append\" put a card dropped just\n // above the first item at the end of the column instead.\n const isBelowCenter = Boolean(\n activeRect && activeRect.top + activeRect.height / 2 > overRect.top + overRect.height / 2,\n );\n insertAt = isBelowCenter ? destItemIds.length : 0;\n } else {\n const overIndex = destItemIds.indexOf(overId);\n\n // Only the last card's own drop zone extends past its bottom edge with nothing after it to\n // compete for the collision, so it's the one case where the dragged card can end up \"after\"\n // it. Requiring the dragged rect's *center* (not its top edge) to pass the hovered card's\n // bottom edge is deliberately more forgiving than requiring the whole dragged card to clear it\n // — that stricter version needs the user to drag a full card's height past the last item\n // before it registers, which in practice almost never happens before the drop, silently\n // landing the card second-to-last every time despite the live preview showing it last. A pure\n // center-to-center comparison is too lenient in the other direction: the dragged rect's center\n // still carries the grab offset from wherever in the source card it was originally picked up,\n // so a low enough grab point reads as \"past\" well before the drag is visually past the card at\n // all. Anchoring to the target's *bottom* edge (not its center) keeps that grab-offset problem\n // from creeping back in while still being achievable in a normal drag.\n const isLastItem = overIndex !== -1 && overIndex === destItemIds.length - 1;\n const hasClearedItem = Boolean(\n activeRect && activeRect.top + activeRect.height / 2 > overRect.top + overRect.height,\n );\n insertAt = overIndex === -1 ? destItemIds.length : isLastItem && hasClearedItem ? overIndex + 1 : overIndex;\n }\n\n destItemIds.splice(insertAt, 0, activeItemId);\n\n const next = [...columns];\n next[sourceColIndex] = { ...sourceCol, itemIds: sourceCol.itemIds.filter((id) => id !== activeItemId) };\n next[destColIndex] = { ...destCol, itemIds: destItemIds };\n return next;\n}\n\n/**\n * Builds screen-reader drag announcements against the columns layout as currently understood\n * (the live shadow layout while a drag is in progress, or the settled `columns` prop otherwise).\n */\nexport function buildAnnouncements<T>(\n columns: KanbanColumnDef[],\n items: Record<string, T>,\n getItemLabel: (item: T, id: string) => string,\n): Announcements {\n function labelFor(id: string): string {\n const item = items[id];\n return item !== undefined ? getItemLabel(item, id) : id;\n }\n\n function describeOver(overId: string): string {\n const destColId = resolveColumnDropId(overId);\n if (destColId !== null) {\n const col = columns.find((c) => c.id === destColId);\n return col ? `the ${col.title} column` : 'a column';\n }\n\n const col = columns.find((c) => c.itemIds.includes(overId));\n return col ? `${labelFor(overId)}, in the ${col.title} column` : labelFor(overId);\n }\n\n function columnTitle(id: string): string {\n return columns.find((c) => c.id === id)?.title ?? id;\n }\n\n return {\n onDragStart({ active }) {\n if (isColumnDragData(active.data.current)) return `Picked up column ${columnTitle(String(active.id))}.`;\n return `Picked up card ${labelFor(String(active.id))}.`;\n },\n onDragOver({ active, over }) {\n if (isColumnDragData(active.data.current)) {\n if (!over) return `Column ${columnTitle(String(active.id))} is no longer over a droppable area.`;\n return `Column ${columnTitle(String(active.id))} is over column ${columnTitle(String(over.id))}.`;\n }\n if (!over) return `Card ${labelFor(String(active.id))} is no longer over a droppable area.`;\n return `Card ${labelFor(String(active.id))} is over ${describeOver(String(over.id))}.`;\n },\n onDragEnd({ active, over }) {\n if (isColumnDragData(active.data.current)) {\n if (!over) return `Column ${columnTitle(String(active.id))} was dropped.`;\n return `Column ${columnTitle(String(active.id))} was dropped over column ${columnTitle(String(over.id))}.`;\n }\n if (!over) return `Card ${labelFor(String(active.id))} was dropped.`;\n return `Card ${labelFor(String(active.id))} was dropped over ${describeOver(String(over.id))}.`;\n },\n onDragCancel({ active }) {\n if (isColumnDragData(active.data.current)) {\n return `Dragging cancelled. Column ${columnTitle(String(active.id))} was returned to its original position.`;\n }\n return `Dragging cancelled. Card ${labelFor(String(active.id))} was returned to its original position.`;\n },\n };\n}\n\ninterface ContainerRect {\n container: DroppableContainer;\n rect: ClientRect;\n}\n\nfunction collectColumnItemRects(\n containers: DroppableContainer[],\n droppableRects: Map<UniqueIdentifier, ClientRect>,\n containerId: UniqueIdentifier,\n): ContainerRect[] {\n const entries: ContainerRect[] = [];\n for (const container of containers) {\n if (!hasSortableData(container)) continue;\n if (container.data.current.sortable.containerId !== containerId) continue;\n const rect = droppableRects.get(container.id);\n if (!rect) continue;\n entries.push({ container, rect });\n }\n return entries.sort((a, b) => a.rect.top - b.rect.top);\n}\n\n/**\n * Custom keyboard coordinate getter for the board's multi-column, multi-`SortableContext`\n * layout. dnd-kit's default `sortableKeyboardCoordinates` picks the geometrically closest\n * droppable across the *entire* board — cards and column containers alike — which is unreliable\n * once cards live inside independent per-column `SortableContext`s: up/down and left/right end up\n * interchangeable depending on incidental rect positions. This instead restricts up/down to\n * reordering within the active card's own column, and left/right to moving into the adjacent\n * column (landing on the closest card there by vertical position, or the column itself when\n * empty). Requires each `KanbanColumn`'s `SortableContext` to be given an explicit `id` matching\n * its column id, so a card's `sortable.containerId` can be correlated with its `column-<id>`\n * droppable.\n */\nexport const kanbanKeyboardCoordinateGetter: KeyboardCoordinateGetter = (event, { context }) => {\n const { active, collisionRect, droppableRects, droppableContainers } = context;\n\n if (!active || !collisionRect || !hasSortableData(active)) return undefined;\n\n const isVertical = event.code === KeyboardCode.Down || event.code === KeyboardCode.Up;\n const isHorizontal = event.code === KeyboardCode.Left || event.code === KeyboardCode.Right;\n if (!isVertical && !isHorizontal) return undefined;\n\n event.preventDefault();\n\n const activeContainerId = active.data.current.sortable.containerId;\n const allContainers = droppableContainers.getEnabled();\n\n if (isColumnDragData(active.data.current)) {\n // Reordering a whole column: only left/right matters, moving it within the top-level\n // column `SortableContext` (siblings share its containerId, same as cards share their\n // own column's). Up/down has nothing to do — columns don't have a \"column above/below\".\n if (!isHorizontal) return undefined;\n\n const direction = event.code === KeyboardCode.Right ? 1 : -1;\n const siblings = collectColumnItemRects(allContainers, droppableRects, activeContainerId).sort(\n (a, b) => a.rect.left - b.rect.left,\n );\n const currentIndex = siblings.findIndex((s) => s.container.id === active.id);\n if (currentIndex === -1) return undefined;\n\n const target = siblings[currentIndex + direction];\n if (!target) return undefined;\n\n return { x: target.rect.left, y: collisionRect.top };\n }\n\n if (isVertical) {\n const direction = event.code === KeyboardCode.Down ? 1 : -1;\n const siblings = collectColumnItemRects(allContainers, droppableRects, activeContainerId);\n const currentIndex = siblings.findIndex((s) => s.container.id === active.id);\n if (currentIndex === -1) return undefined;\n\n const target = siblings[currentIndex + direction];\n if (!target) return undefined;\n\n return { x: collisionRect.left, y: target.rect.top };\n }\n\n const direction = event.code === KeyboardCode.Right ? 1 : -1;\n\n const columns: ContainerRect[] = [];\n for (const container of allContainers) {\n const columnId = resolveColumnDropId(String(container.id));\n if (columnId === null) continue;\n const rect = droppableRects.get(container.id);\n if (!rect) continue;\n columns.push({ container, rect });\n }\n columns.sort((a, b) => a.rect.left - b.rect.left);\n\n const activeColumnIndex = columns.findIndex((c) => resolveColumnDropId(String(c.container.id)) === activeContainerId);\n if (activeColumnIndex === -1) return undefined;\n\n const targetColumn = columns[activeColumnIndex + direction];\n if (!targetColumn) return undefined;\n\n const targetContainerId = resolveColumnDropId(String(targetColumn.container.id)) as UniqueIdentifier;\n const targetItems = collectColumnItemRects(allContainers, droppableRects, targetContainerId);\n\n let targetRect = targetColumn.rect;\n if (targetItems.length > 0) {\n targetRect = targetItems.reduce((closest, item) =>\n Math.abs(item.rect.top - collisionRect.top) < Math.abs(closest.rect.top - collisionRect.top) ? item : closest,\n ).rect;\n }\n\n return { x: targetRect.left, y: targetRect.top };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"kanbanBoard.utils.mjs","names":[],"sources":["../../../../package/common/kanbanBoard/kanbanBoard.utils.ts"],"sourcesContent":["import { arrayMove, hasSortableData } from '@dnd-kit/sortable';\nimport {\n closestCorners,\n KeyboardCode,\n type Announcements,\n type ClientRect,\n type CollisionDetection,\n type DroppableContainer,\n type KeyboardCoordinateGetter,\n type UniqueIdentifier,\n} from '@dnd-kit/core';\n\nimport type { KanbanColumnDef } from './kanbanBoard.types';\n\nexport function columnsEqual(a: KanbanColumnDef[], b: KanbanColumnDef[]): boolean {\n if (a.length !== b.length) return false;\n return a.every((col, i) => {\n const other = b[i];\n return (\n col.id === other.id &&\n col.itemIds.length === other.itemIds.length &&\n col.itemIds.every((itemId, j) => itemId === other.itemIds[j])\n );\n });\n}\n\nexport function findColumnForItem(columns: KanbanColumnDef[], itemId: string): number {\n return columns.findIndex((col) => col.itemIds.includes(itemId));\n}\n\n/** Whether a drag's `active`/`over` participant is a whole column (vs. a card) — see `reorderableColumns`. */\nexport function isColumnDragData(data: unknown): boolean {\n return Boolean(data && typeof data === 'object' && (data as { type?: string }).type === 'column');\n}\n\n/**\n * Reorders whole columns: moves `activeColumnId` to `overColumnId`'s position. Returns the same\n * `columns` reference, unchanged, when either id doesn't resolve to a column or they're the same\n * — callers can use that to skip a state update.\n */\nexport function moveColumn(\n columns: KanbanColumnDef[],\n activeColumnId: string,\n overColumnId: string,\n): KanbanColumnDef[] {\n const oldIndex = columns.findIndex((col) => col.id === activeColumnId);\n const overIndex = columns.findIndex((col) => col.id === overColumnId);\n if (oldIndex === -1 || overIndex === -1 || oldIndex === overIndex) return columns;\n\n return arrayMove(columns, oldIndex, overIndex);\n}\n\n/**\n * Collision detection for the board's shared `DndContext`, which has to pick between two very\n * differently-scaled sets of droppables at once: individual cards / a column's own card list\n * (small, numerous) and whole columns (large, few). Plain `closestCorners` weighs every\n * registered droppable together regardless of what's actually being dragged, so while dragging a\n * column it competes against every card and card-list droppable it happens to fly over too — the\n * column-level target only wins when the pointer lands somewhere that geometrically favors it,\n * which reads as needing to \"wiggle it around\" before the right drop target lights up. This\n * restricts the candidates to only the same kind as whatever is being dragged: a column drag only\n * considers other columns, a card drag only considers cards and card lists.\n */\nexport const kanbanCollisionDetection: CollisionDetection = (args) => {\n const draggingColumn = isColumnDragData(args.active.data.current);\n const droppableContainers = args.droppableContainers.filter((container) =>\n draggingColumn ? isColumnDragData(container.data.current) : !isColumnDragData(container.data.current),\n );\n\n return closestCorners({ ...args, droppableContainers });\n};\n\n/** Extracts the column id from a column droppable's `column-<id>` identifier, or `null` for a card id. */\nexport function resolveColumnDropId(overId: string): string | null {\n return overId.startsWith('column-') ? overId.slice('column-'.length) : null;\n}\n\nexport interface DragGeometry {\n /** The dragged card's current rect (translated by the drag delta), if measured. */\n activeRect: ClientRect | null;\n /** The rect of whatever `overId` refers to — a card, or a column's own droppable. */\n overRect: ClientRect;\n}\n\n/**\n * Computes the columns that result from dragging `activeItemId` over `overId` (a card id, or a\n * `column-<id>` droppable id for empty column space). Returns the same `columns` reference,\n * unchanged, when the drag doesn't resolve to a valid source/destination — callers can use that\n * to skip a state update.\n *\n * `geometry` resolves cross-column drops that land on a card or gap with more than one possible\n * position (see the two branches below for what each one decides).\n */\nexport function moveItem(\n columns: KanbanColumnDef[],\n activeItemId: string,\n overId: string,\n geometry: DragGeometry,\n): KanbanColumnDef[] {\n // Only the source/destination column(s) actually change, so only those get new object/array\n // references — every other column keeps its exact `columns` reference. Cloning every column's\n // `itemIds` up front (as this used to) cost O(total cards across the whole board) on *every*\n // drag-over event, not just the couple of columns actually involved in the move.\n const sourceColIndex = findColumnForItem(columns, activeItemId);\n if (sourceColIndex === -1) return columns;\n\n const destColId = resolveColumnDropId(overId);\n const destColIndex =\n destColId !== null ? columns.findIndex((col) => col.id === destColId) : findColumnForItem(columns, overId);\n if (destColIndex === -1) return columns;\n\n if (sourceColIndex === destColIndex) {\n const col = columns[sourceColIndex];\n const oldIndex = col.itemIds.indexOf(activeItemId);\n if (oldIndex === -1) return columns;\n\n if (destColId !== null) {\n // over is the column's own droppable, not a card: nothing else claimed the collision,\n // which happens hovering the empty gap above/below the cards, or — critically — an edge\n // next to a disabled/pinned card with no other card nearby, since a disabled card's own\n // droppable is excluded from collision candidates entirely. Without this branch, that\n // case fell through to `col.itemIds.indexOf(overId)` below, which is always -1 for a\n // `column-<id>` id (it's not a card id), silently no-op-ing instead of reordering.\n const { activeRect, overRect } = geometry;\n const isBelowCenter = Boolean(\n activeRect && activeRect.top + activeRect.height / 2 > overRect.top + overRect.height / 2,\n );\n const targetIndex = isBelowCenter ? col.itemIds.length - 1 : 0;\n if (targetIndex === oldIndex) return columns;\n\n const next = [...columns];\n next[sourceColIndex] = { ...col, itemIds: arrayMove(col.itemIds, oldIndex, targetIndex) };\n return next;\n }\n\n const newIndex = col.itemIds.indexOf(overId);\n if (newIndex === -1 || oldIndex === newIndex) return columns;\n\n const next = [...columns];\n next[sourceColIndex] = { ...col, itemIds: arrayMove(col.itemIds, oldIndex, newIndex) };\n return next;\n }\n\n const sourceCol = columns[sourceColIndex];\n const destCol = columns[destColIndex];\n const destItemIds = [...destCol.itemIds];\n const { activeRect, overRect } = geometry;\n\n let insertAt: number;\n if (destColId !== null) {\n // Hovering the column's own droppable directly, rather than a specific card: the empty gap\n // above the first card, the empty gap below the last card, or the whole area when the column\n // has no cards at all. Comparing centers against the *container's* full-height rect is a\n // coarse but reliable way to tell the top gap (insert at the start) from the bottom gap\n // (append at the end) — treating every container hover as \"append\" put a card dropped just\n // above the first item at the end of the column instead.\n const isBelowCenter = Boolean(\n activeRect && activeRect.top + activeRect.height / 2 > overRect.top + overRect.height / 2,\n );\n insertAt = isBelowCenter ? destItemIds.length : 0;\n } else {\n const overIndex = destItemIds.indexOf(overId);\n\n // Only the last card's own drop zone extends past its bottom edge with nothing after it to\n // compete for the collision, so it's the one case where the dragged card can end up \"after\"\n // it. Requiring the dragged rect's *center* (not its top edge) to pass the hovered card's\n // bottom edge is deliberately more forgiving than requiring the whole dragged card to clear it\n // — that stricter version needs the user to drag a full card's height past the last item\n // before it registers, which in practice almost never happens before the drop, silently\n // landing the card second-to-last every time despite the live preview showing it last. A pure\n // center-to-center comparison is too lenient in the other direction: the dragged rect's center\n // still carries the grab offset from wherever in the source card it was originally picked up,\n // so a low enough grab point reads as \"past\" well before the drag is visually past the card at\n // all. Anchoring to the target's *bottom* edge (not its center) keeps that grab-offset problem\n // from creeping back in while still being achievable in a normal drag.\n const isLastItem = overIndex !== -1 && overIndex === destItemIds.length - 1;\n const hasClearedItem = Boolean(\n activeRect && activeRect.top + activeRect.height / 2 > overRect.top + overRect.height,\n );\n insertAt = overIndex === -1 ? destItemIds.length : isLastItem && hasClearedItem ? overIndex + 1 : overIndex;\n }\n\n destItemIds.splice(insertAt, 0, activeItemId);\n\n const next = [...columns];\n next[sourceColIndex] = { ...sourceCol, itemIds: sourceCol.itemIds.filter((id) => id !== activeItemId) };\n next[destColIndex] = { ...destCol, itemIds: destItemIds };\n return next;\n}\n\n/**\n * Builds screen-reader drag announcements against the columns layout as currently understood\n * (the live shadow layout while a drag is in progress, or the settled `columns` prop otherwise).\n */\nexport function buildAnnouncements<T>(\n columns: KanbanColumnDef[],\n items: Record<string, T>,\n getItemLabel: (item: T, id: string) => string,\n): Announcements {\n function labelFor(id: string): string {\n const item = items[id];\n return item !== undefined ? getItemLabel(item, id) : id;\n }\n\n function describeOver(overId: string): string {\n const destColId = resolveColumnDropId(overId);\n if (destColId !== null) {\n const col = columns.find((c) => c.id === destColId);\n return col ? `the ${col.title} column` : 'a column';\n }\n\n const col = columns.find((c) => c.itemIds.includes(overId));\n return col ? `${labelFor(overId)}, in the ${col.title} column` : labelFor(overId);\n }\n\n function columnTitle(id: string): string {\n return columns.find((c) => c.id === id)?.title ?? id;\n }\n\n return {\n onDragStart({ active }) {\n if (isColumnDragData(active.data.current)) return `Picked up column ${columnTitle(String(active.id))}.`;\n return `Picked up card ${labelFor(String(active.id))}.`;\n },\n onDragOver({ active, over }) {\n if (isColumnDragData(active.data.current)) {\n if (!over) return `Column ${columnTitle(String(active.id))} is no longer over a droppable area.`;\n return `Column ${columnTitle(String(active.id))} is over column ${columnTitle(String(over.id))}.`;\n }\n if (!over) return `Card ${labelFor(String(active.id))} is no longer over a droppable area.`;\n return `Card ${labelFor(String(active.id))} is over ${describeOver(String(over.id))}.`;\n },\n onDragEnd({ active, over }) {\n if (isColumnDragData(active.data.current)) {\n if (!over) return `Column ${columnTitle(String(active.id))} was dropped.`;\n return `Column ${columnTitle(String(active.id))} was dropped over column ${columnTitle(String(over.id))}.`;\n }\n if (!over) return `Card ${labelFor(String(active.id))} was dropped.`;\n return `Card ${labelFor(String(active.id))} was dropped over ${describeOver(String(over.id))}.`;\n },\n onDragCancel({ active }) {\n if (isColumnDragData(active.data.current)) {\n return `Dragging cancelled. Column ${columnTitle(String(active.id))} was returned to its original position.`;\n }\n return `Dragging cancelled. Card ${labelFor(String(active.id))} was returned to its original position.`;\n },\n };\n}\n\ninterface ContainerRect {\n container: DroppableContainer;\n rect: ClientRect;\n}\n\nfunction collectColumnItemRects(\n containers: DroppableContainer[],\n droppableRects: Map<UniqueIdentifier, ClientRect>,\n containerId: UniqueIdentifier,\n): ContainerRect[] {\n const entries: ContainerRect[] = [];\n for (const container of containers) {\n if (!hasSortableData(container)) continue;\n if (container.data.current.sortable.containerId !== containerId) continue;\n const rect = droppableRects.get(container.id);\n if (!rect) continue;\n entries.push({ container, rect });\n }\n return entries.sort((a, b) => a.rect.top - b.rect.top);\n}\n\n/**\n * Custom keyboard coordinate getter for the board's multi-column, multi-`SortableContext`\n * layout. dnd-kit's default `sortableKeyboardCoordinates` picks the geometrically closest\n * droppable across the *entire* board — cards and column containers alike — which is unreliable\n * once cards live inside independent per-column `SortableContext`s: up/down and left/right end up\n * interchangeable depending on incidental rect positions. This instead restricts up/down to\n * reordering within the active card's own column, and left/right to moving into the adjacent\n * column (landing on the closest card there by vertical position, or the column itself when\n * empty). Requires each `KanbanColumn`'s `SortableContext` to be given an explicit `id` matching\n * its column id, so a card's `sortable.containerId` can be correlated with its `column-<id>`\n * droppable.\n */\nexport const kanbanKeyboardCoordinateGetter: KeyboardCoordinateGetter = (event, { context }) => {\n const { active, collisionRect, droppableRects, droppableContainers } = context;\n\n if (!active || !collisionRect || !hasSortableData(active)) return undefined;\n\n const isVertical = event.code === KeyboardCode.Down || event.code === KeyboardCode.Up;\n const isHorizontal = event.code === KeyboardCode.Left || event.code === KeyboardCode.Right;\n if (!isVertical && !isHorizontal) return undefined;\n\n event.preventDefault();\n\n const activeContainerId = active.data.current.sortable.containerId;\n const allContainers = droppableContainers.getEnabled();\n\n if (isColumnDragData(active.data.current)) {\n // Reordering a whole column: only left/right matters, moving it within the top-level\n // column `SortableContext` (siblings share its containerId, same as cards share their\n // own column's). Up/down has nothing to do — columns don't have a \"column above/below\".\n if (!isHorizontal) return undefined;\n\n const direction = event.code === KeyboardCode.Right ? 1 : -1;\n const siblings = collectColumnItemRects(allContainers, droppableRects, activeContainerId).sort(\n (a, b) => a.rect.left - b.rect.left,\n );\n const currentIndex = siblings.findIndex((s) => s.container.id === active.id);\n if (currentIndex === -1) return undefined;\n\n const target = siblings[currentIndex + direction];\n if (!target) return undefined;\n\n return { x: target.rect.left, y: collisionRect.top };\n }\n\n if (isVertical) {\n const direction = event.code === KeyboardCode.Down ? 1 : -1;\n const siblings = collectColumnItemRects(allContainers, droppableRects, activeContainerId);\n const currentIndex = siblings.findIndex((s) => s.container.id === active.id);\n if (currentIndex === -1) return undefined;\n\n const target = siblings[currentIndex + direction];\n if (!target) return undefined;\n\n return { x: collisionRect.left, y: target.rect.top };\n }\n\n const direction = event.code === KeyboardCode.Right ? 1 : -1;\n\n const columns: ContainerRect[] = [];\n for (const container of allContainers) {\n const columnId = resolveColumnDropId(String(container.id));\n if (columnId === null) continue;\n const rect = droppableRects.get(container.id);\n if (!rect) continue;\n columns.push({ container, rect });\n }\n columns.sort((a, b) => a.rect.left - b.rect.left);\n\n const activeColumnIndex = columns.findIndex((c) => resolveColumnDropId(String(c.container.id)) === activeContainerId);\n if (activeColumnIndex === -1) return undefined;\n\n const targetColumn = columns[activeColumnIndex + direction];\n if (!targetColumn) return undefined;\n\n const targetContainerId = resolveColumnDropId(String(targetColumn.container.id)) as UniqueIdentifier;\n const targetItems = collectColumnItemRects(allContainers, droppableRects, targetContainerId);\n\n let targetRect = targetColumn.rect;\n if (targetItems.length > 0) {\n targetRect = targetItems.reduce((closest, item) =>\n Math.abs(item.rect.top - collisionRect.top) < Math.abs(closest.rect.top - collisionRect.top) ? item : closest,\n ).rect;\n }\n\n return { x: targetRect.left, y: targetRect.top };\n};\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"../../../interactableDiv/index.mjs";import t from"./gifPreview.module.mjs";import n from"classnames";import{Fragment as r,jsx as i}from"react/jsx-runtime";function a({className:a,previewItems:o=[],onSelect:s,onLoadAdditional:c}){function l(e){let t=e.currentTarget,n=t.scrollHeight-t.clientHeight*1.5;t.scrollTop>=n&&c?.()}return i(r,{children:o.length>0&&i(`div`,{className:n(t.gifPreview,a),onScroll:l,children:o.map((n,r)=>i(e,{className:t.gifPreviewImageContainer,onClick:()=>s?.(n),children:i(`div`,{className:t.gifPreviewImage,style:{backgroundImage:`url(${n.media_formats.tinygif.url})`}})},`${n.id}_${r}`))})})}export{a as default};
|
|
1
|
+
"use client";import e from"../../../interactableDiv/index.mjs";import t from"./gifPreview.module.mjs";import n from"classnames";import{Fragment as r,jsx as i}from"react/jsx-runtime";function a({className:a,previewItems:o=[],onSelect:s,onLoadAdditional:c}){function l(e){let t=e.currentTarget,n=t.scrollHeight-t.clientHeight*1.5;t.scrollTop>=n&&c?.()}return i(r,{children:o.length>0&&i(`div`,{className:n(t.gifPreview,a),onScroll:l,children:o.map((n,r)=>i(e,{className:t.gifPreviewImageContainer,onClick:()=>s?.(n),children:i(`div`,{className:t.gifPreviewImage,style:{backgroundImage:`url(${n.media_formats.tinygif.url})`}})},`${n.id}_${r}`))})})}export{a as default};
|
|
2
2
|
//# sourceMappingURL=gifPreview.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gifPreview.mjs","names":[],"sources":["../../../../../../package/common/klipyPicker/components/gifPreview/gifPreview.tsx"],"sourcesContent":["import cx from 'classnames';\nimport type { ReactElement, UIEvent } from 'react';\nimport InteractableDiv from 'components/common/interactableDiv';\nimport type { GifPreviewProps } from './gifPreview.types';\nimport styles from './gifPreview.module.pcss';\n\nexport default function GifPreview({\n className,\n previewItems = [],\n onSelect,\n onLoadAdditional,\n}: GifPreviewProps): ReactElement {\n function handleScroll(event: UIEvent<HTMLDivElement>) {\n const el = event.currentTarget;\n const loadAdditionalHeight = el.scrollHeight - el.clientHeight * 1.5;\n if (el.scrollTop >= loadAdditionalHeight) {\n onLoadAdditional?.();\n }\n }\n\n return (\n <>\n {previewItems.length > 0 && (\n <div className={cx(styles.gifPreview, className)} onScroll={handleScroll}>\n {previewItems.map((preview, index) => (\n <InteractableDiv\n key={`${preview.id}_${index}`}\n className={styles.gifPreviewImageContainer}\n onClick={() => onSelect?.(preview)}\n >\n <div\n className={styles.gifPreviewImage}\n style={{ backgroundImage: `url(${preview.media_formats.tinygif.url})` }}\n />\n </InteractableDiv>\n ))}\n </div>\n )}\n </>\n );\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"gifPreview.mjs","names":[],"sources":["../../../../../../package/common/klipyPicker/components/gifPreview/gifPreview.tsx"],"sourcesContent":["import cx from 'classnames';\nimport type { ReactElement, UIEvent } from 'react';\nimport InteractableDiv from 'components/common/interactableDiv';\nimport type { GifPreviewProps } from './gifPreview.types';\nimport styles from './gifPreview.module.pcss';\n\nexport default function GifPreview({\n className,\n previewItems = [],\n onSelect,\n onLoadAdditional,\n}: GifPreviewProps): ReactElement {\n function handleScroll(event: UIEvent<HTMLDivElement>) {\n const el = event.currentTarget;\n const loadAdditionalHeight = el.scrollHeight - el.clientHeight * 1.5;\n if (el.scrollTop >= loadAdditionalHeight) {\n onLoadAdditional?.();\n }\n }\n\n return (\n <>\n {previewItems.length > 0 && (\n <div className={cx(styles.gifPreview, className)} onScroll={handleScroll}>\n {previewItems.map((preview, index) => (\n <InteractableDiv\n key={`${preview.id}_${index}`}\n className={styles.gifPreviewImageContainer}\n onClick={() => onSelect?.(preview)}\n >\n <div\n className={styles.gifPreviewImage}\n style={{ backgroundImage: `url(${preview.media_formats.tinygif.url})` }}\n />\n </InteractableDiv>\n ))}\n </div>\n )}\n </>\n );\n}\n"],"mappings":"sLAMA,SAAwB,EAAW,CACjC,YACA,eAAe,CAAC,EAChB,WACA,oBACgC,CAChC,SAAS,EAAa,EAAgC,CACpD,IAAM,EAAK,EAAM,cACX,EAAuB,EAAG,aAAe,EAAG,aAAe,IAC7D,EAAG,WAAa,GAClB,IAAmB,CAEvB,CAEA,OACE,EAAA,EAAA,CAAA,SACG,EAAa,OAAS,GACrB,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,WAAY,CAAS,EAAG,SAAU,EACzD,SAAA,EAAa,KAAK,EAAS,IAC1B,EAAC,EAAD,CAEE,UAAW,EAAO,yBAClB,YAAe,IAAW,CAAO,EAEjC,SAAA,EAAC,MAAD,CACE,UAAW,EAAO,gBAClB,MAAO,CAAE,gBAAiB,OAAO,EAAQ,cAAc,QAAQ,IAAI,EAAG,CACvE,CAAA,CACc,EARV,GAAG,EAAQ,GAAG,GAAG,GAQP,CAClB,CACE,CAAA,CAEP,CAAA,CAEN"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=`gifPreview_jAXT2`,t=`gifPreview-image_41bwm`,n=`gifPreview-image-container_5hAjJ`,r=`gradientBottomLeftToTopRight_9EI0A`,i={gifPreview:e,"gifPreview-image":`gifPreview-image_41bwm`,gifPreviewImage:t,"gifPreview-image-container":`gifPreview-image-container_5hAjJ`,gifPreviewImageContainer:n,gradientBottomLeftToTopRight:r};export{i as default,e as gifPreview,t as gifPreviewImage,n as gifPreviewImageContainer,r as gradientBottomLeftToTopRight};
|
|
1
|
+
"use client";var e=`gifPreview_jAXT2`,t=`gifPreview-image_41bwm`,n=`gifPreview-image-container_5hAjJ`,r=`gradientBottomLeftToTopRight_9EI0A`,i={gifPreview:e,"gifPreview-image":`gifPreview-image_41bwm`,gifPreviewImage:t,"gifPreview-image-container":`gifPreview-image-container_5hAjJ`,gifPreviewImageContainer:n,gradientBottomLeftToTopRight:r};export{i as default,e as gifPreview,t as gifPreviewImage,n as gifPreviewImageContainer,r as gradientBottomLeftToTopRight};
|
|
2
2
|
//# sourceMappingURL=gifPreview.module.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gifPreview.module.mjs","names":[],"sources":["../../../../../../package/common/klipyPicker/components/gifPreview/gifPreview.module.pcss"],"sourcesContent":[".gifPreview {\n width: min(420px, 90vw);\n aspect-ratio: 1;\n display: flex;\n flex-wrap: wrap;\n\n --gif-preview-gap-size: 5px;\n\n gap: var(--gif-preview-gap-size);\n position: relative;\n justify-content: center;\n overflow: auto;\n\n &-image {\n background-position: center;\n background-size: cover;\n width: 100%;\n height: 100%;\n\n &-container {\n aspect-ratio: 1;\n background: linear-gradient(\n 45deg,\n var(--primary-color) 10%,\n var(--primary-lighter),\n var(--primary-accent),\n var(--primary-color) 85%\n );\n background-size: 500% 500%;\n animation: gradientBottomLeftToTopRight 1s infinite linear;\n border-radius: var(--default-border-radius);\n overflow: hidden;\n width: min(calc(140px - var(--gif-preview-gap-size)), calc(33.3% - var(--gif-preview-gap-size)));\n }\n }\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"gifPreview.module.mjs","names":[],"sources":["../../../../../../package/common/klipyPicker/components/gifPreview/gifPreview.module.pcss"],"sourcesContent":[".gifPreview {\n width: min(420px, 90vw);\n aspect-ratio: 1;\n display: flex;\n flex-wrap: wrap;\n\n --gif-preview-gap-size: 5px;\n\n gap: var(--gif-preview-gap-size);\n position: relative;\n justify-content: center;\n overflow: auto;\n\n &-image {\n background-position: center;\n background-size: cover;\n width: 100%;\n height: 100%;\n\n &-container {\n aspect-ratio: 1;\n background: linear-gradient(\n 45deg,\n var(--primary-color) 10%,\n var(--primary-lighter),\n var(--primary-accent),\n var(--primary-color) 85%\n );\n background-size: 500% 500%;\n animation: gradientBottomLeftToTopRight 1s infinite linear;\n border-radius: var(--default-border-radius);\n overflow: hidden;\n width: min(calc(140px - var(--gif-preview-gap-size)), calc(33.3% - var(--gif-preview-gap-size)));\n }\n }\n}\n\n/* The gradient stops sweeping and stays a plain block, which still reads as \"loading\". */\n@media (prefers-reduced-motion: reduce) {\n .gifPreview-image-container {\n animation: none;\n }\n}\n"],"mappings":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"./gifView.module.mjs";import{useState as t}from"react";import n from"classnames";import{jsx as r,jsxs as i}from"react/jsx-runtime";function a({className:a,src:o=``}){let[s,c]=t(null),l=s!==o;return i(`div`,{className:n(e.gifView,a),children:[r(`img`,{className:e.klipyPickerSelected,src:o,onLoad:()=>c(o)}),l&&r(`div`,{className:e.gifViewLoading})]})}export{a as default};
|
|
1
|
+
"use client";import e from"./gifView.module.mjs";import{useState as t}from"react";import n from"classnames";import{jsx as r,jsxs as i}from"react/jsx-runtime";function a({className:a,src:o=``}){let[s,c]=t(null),l=s!==o;return i(`div`,{className:n(e.gifView,a),children:[r(`img`,{className:e.klipyPickerSelected,src:o,onLoad:()=>c(o)}),l&&r(`div`,{className:e.gifViewLoading})]})}export{a as default};
|
|
2
2
|
//# sourceMappingURL=gifView.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gifView.mjs","names":[],"sources":["../../../../../../package/common/klipyPicker/components/gifView/gifView.tsx"],"sourcesContent":["import { useState } from 'react';\nimport cx from 'classnames';\nimport type { ReactElement } from 'react';\nimport type { GifViewProps } from './gifView.types';\nimport styles from './gifView.module.pcss';\n\nexport default function GifView({ className, src = '' }: GifViewProps): ReactElement {\n const [loadedSrc, setLoadedSrc] = useState<string | null>(null);\n const isLoading = loadedSrc !== src;\n\n return (\n <div className={cx(styles.gifView, className)}>\n <img className={styles.klipyPickerSelected} src={src} onLoad={() => setLoadedSrc(src)} />\n {isLoading && <div className={styles.gifViewLoading} />}\n </div>\n );\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"gifView.mjs","names":[],"sources":["../../../../../../package/common/klipyPicker/components/gifView/gifView.tsx"],"sourcesContent":["import { useState } from 'react';\nimport cx from 'classnames';\nimport type { ReactElement } from 'react';\nimport type { GifViewProps } from './gifView.types';\nimport styles from './gifView.module.pcss';\n\nexport default function GifView({ className, src = '' }: GifViewProps): ReactElement {\n const [loadedSrc, setLoadedSrc] = useState<string | null>(null);\n const isLoading = loadedSrc !== src;\n\n return (\n <div className={cx(styles.gifView, className)}>\n <img className={styles.klipyPickerSelected} src={src} onLoad={() => setLoadedSrc(src)} />\n {isLoading && <div className={styles.gifViewLoading} />}\n </div>\n );\n}\n"],"mappings":"8JAMA,SAAwB,EAAQ,CAAE,YAAW,MAAM,IAAkC,CACnF,GAAM,CAAC,EAAW,GAAgB,EAAwB,IAAI,EACxD,EAAY,IAAc,EAEhC,OACE,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,QAAS,CAAS,EAA5C,SAAA,CACE,EAAC,MAAD,CAAK,UAAW,EAAO,oBAA0B,MAAK,WAAc,EAAa,CAAG,CAAI,CAAA,EACvF,GAAa,EAAC,MAAD,CAAK,UAAW,EAAO,cAAiB,CAAA,CACnD,GAET"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=`gifView_YUeLK`,t=`gifView-loading_N1Lzx`,n=`gradientBottomLeftToTopRight_OmJUc`,r={gifView:e,"gifView-loading":`gifView-loading_N1Lzx`,gifViewLoading:t,gradientBottomLeftToTopRight:n};export{r as default,e as gifView,t as gifViewLoading,n as gradientBottomLeftToTopRight};
|
|
1
|
+
"use client";var e=`gifView_YUeLK`,t=`gifView-loading_N1Lzx`,n=`gradientBottomLeftToTopRight_OmJUc`,r={gifView:e,"gifView-loading":`gifView-loading_N1Lzx`,gifViewLoading:t,gradientBottomLeftToTopRight:n};export{r as default,e as gifView,t as gifViewLoading,n as gradientBottomLeftToTopRight};
|
|
2
2
|
//# sourceMappingURL=gifView.module.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gifView.module.mjs","names":[],"sources":["../../../../../../package/common/klipyPicker/components/gifView/gifView.module.pcss"],"sourcesContent":[".gifView {\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n\n img {\n max-width: 100%;\n border-radius: var(--default-border-radius);\n overflow: hidden;\n }\n\n &-loading {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n background: linear-gradient(\n 45deg,\n var(--primary-color) 10%,\n var(--primary-lighter),\n var(--primary-accent),\n var(--primary-color) 85%\n );\n background-size: 500% 500%;\n animation: gradientBottomLeftToTopRight 1s infinite linear;\n border-radius: var(--default-border-radius);\n overflow: hidden;\n }\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"gifView.module.mjs","names":[],"sources":["../../../../../../package/common/klipyPicker/components/gifView/gifView.module.pcss"],"sourcesContent":[".gifView {\n display: flex;\n justify-content: center;\n align-items: center;\n position: relative;\n\n img {\n max-width: 100%;\n border-radius: var(--default-border-radius);\n overflow: hidden;\n }\n\n &-loading {\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n background: linear-gradient(\n 45deg,\n var(--primary-color) 10%,\n var(--primary-lighter),\n var(--primary-accent),\n var(--primary-color) 85%\n );\n background-size: 500% 500%;\n animation: gradientBottomLeftToTopRight 1s infinite linear;\n border-radius: var(--default-border-radius);\n overflow: hidden;\n }\n}\n\n/* The gradient stops sweeping and stays a plain block, which still reads as \"loading\". */\n@media (prefers-reduced-motion: reduce) {\n .gifView-loading {\n animation: none;\n }\n}\n"],"mappings":""}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useLabels as e}from"../configProvider/useLabels.mjs";import t from"../actionButtons/actionButtons.module.mjs";import{ButtonStyleType as n}from"../button/button.types.mjs";import r from"../button/button.mjs";import{PopoverAlign as i,PopoverPlacement as a}from"../popover/popover.types.mjs";import o from"../popover/popover.mjs";import s from"../chip/chip.mjs";import c from"../chip/chipContainer.mjs";import l from"../modal/modal.mjs";import u from"../../services/klipy.mjs";import d from"../searchInput/searchInput.mjs";import f from"./components/gifPreview/gifPreview.mjs";import p from"./components/gifView/gifView.mjs";import m from"./klipyPicker.module.mjs";import{useMemo as h,useState as g}from"react";import _ from"classnames";import{Fragment as v,jsx as y,jsxs as b}from"react/jsx-runtime";var x={search:`Pick gif`};function S({className:S,token:C=``,isModal:w=!1,onSelect:T=()=>void 0,selected:E=null,labels:D}){let O=e(`KlipyPicker`,D,x),k=h(()=>new u(C),[C]),[A,j]=g(``),[M,N]=g([]),[P,F]=g([]),[I,L]=g(null),[R,z]=g(!1);async function B(e){if(j(e),!e.trim()){N([]),F([]),L(null);return}let[{results:t=[],next:n=null},{results:r=[]}]=await Promise.all([k.search(e,{limit:18,contentfilter:`medium`}),k.searchSuggestions(e)]);N(t),L(n),F(r)}async function V(){let{results:e=[],next:t=null}=await k.search(A,{limit:36,pos:I??void 0,contentfilter:`medium`});L(t),N(t=>[...t,...e])}async function H(e){await T(e),z(!1),e&&k.registerShare(A,e.id)}function U(){return y(c,{inline:!0,className:m.klipyPickerSuggestionsContainer,children:P.map(e=>y(s,{className:m.klipyPickerSuggestionsItem,text:e,onClick:()=>B(e)},e))})}function W(){return y(f,{previewItems:M,onSelect:H,onLoadAdditional:V})}function G(){return y(d,{label:O.search,value:A,onDebounce:B,onChange:j})}return w?b(`div`,{className:_(m.klipyPicker,S),children:[b(`div`,{className:t.actionButtons,children:[y(r,{onClick:()=>z(!0),children:`Pick gif`}),E&&y(r,{styleType:n.Delete,onClick:()=>H(null),children:`Remove gif`})]}),E&&y(p,{className:m.klipyPickerSelected,src:E}),y(l,{isOpen:R,onClose:()=>z(!1),children:b(`div`,{className:m.klipyPickerModalContent,children:[G(),U(),W()]})})]}):b(`div`,{className:_(m.klipyPicker,S),children:[y(o,{placement:a.Bottom,align:i.Start,isOpen:M.length>0&&R,onOpenChange:z,closeOnTriggerClick:!1,constrainWidth:!1,content:b(v,{children:[U(),W()]}),children:G()}),E&&y(r,{styleType:n.Delete,onClick:()=>H(null),children:`Remove gif`}),E&&y(p,{className:m.klipyPickerSelected,src:E})]})}export{S as default};
|
|
1
|
+
"use client";import{useLabels as e}from"../configProvider/useLabels.mjs";import t from"../actionButtons/actionButtons.module.mjs";import{ButtonStyleType as n}from"../button/button.types.mjs";import r from"../button/button.mjs";import{PopoverAlign as i,PopoverPlacement as a}from"../popover/popover.types.mjs";import o from"../popover/popover.mjs";import s from"../chip/chip.mjs";import c from"../chip/chipContainer.mjs";import l from"../modal/modal.mjs";import u from"../../services/klipy.mjs";import d from"../searchInput/searchInput.mjs";import f from"./components/gifPreview/gifPreview.mjs";import p from"./components/gifView/gifView.mjs";import m from"./klipyPicker.module.mjs";import{useMemo as h,useState as g}from"react";import _ from"classnames";import{Fragment as v,jsx as y,jsxs as b}from"react/jsx-runtime";var x={search:`Pick gif`};function S({className:S,token:C=``,isModal:w=!1,onSelect:T=()=>void 0,selected:E=null,labels:D}){let O=e(`KlipyPicker`,D,x),k=h(()=>new u(C),[C]),[A,j]=g(``),[M,N]=g([]),[P,F]=g([]),[I,L]=g(null),[R,z]=g(!1);async function B(e){if(j(e),!e.trim()){N([]),F([]),L(null);return}let[{results:t=[],next:n=null},{results:r=[]}]=await Promise.all([k.search(e,{limit:18,contentfilter:`medium`}),k.searchSuggestions(e)]);N(t),L(n),F(r)}async function V(){let{results:e=[],next:t=null}=await k.search(A,{limit:36,pos:I??void 0,contentfilter:`medium`});L(t),N(t=>[...t,...e])}async function H(e){await T(e),z(!1),e&&k.registerShare(A,e.id)}function U(){return y(c,{inline:!0,className:m.klipyPickerSuggestionsContainer,children:P.map(e=>y(s,{className:m.klipyPickerSuggestionsItem,text:e,onClick:()=>B(e)},e))})}function W(){return y(f,{previewItems:M,onSelect:H,onLoadAdditional:V})}function G(){return y(d,{label:O.search,value:A,onDebounce:B,onChange:j})}return w?b(`div`,{className:_(m.klipyPicker,S),children:[b(`div`,{className:t.actionButtons,children:[y(r,{onClick:()=>z(!0),children:`Pick gif`}),E&&y(r,{styleType:n.Delete,onClick:()=>H(null),children:`Remove gif`})]}),E&&y(p,{className:m.klipyPickerSelected,src:E}),y(l,{isOpen:R,onClose:()=>z(!1),children:b(`div`,{className:m.klipyPickerModalContent,children:[G(),U(),W()]})})]}):b(`div`,{className:_(m.klipyPicker,S),children:[y(o,{placement:a.Bottom,align:i.Start,isOpen:M.length>0&&R,onOpenChange:z,closeOnTriggerClick:!1,constrainWidth:!1,content:b(v,{children:[U(),W()]}),children:G()}),E&&y(r,{styleType:n.Delete,onClick:()=>H(null),children:`Remove gif`}),E&&y(p,{className:m.klipyPickerSelected,src:E})]})}export{S as default};
|
|
2
2
|
//# sourceMappingURL=klipyPicker.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"klipyPicker.mjs","names":[],"sources":["../../../../package/common/klipyPicker/klipyPicker.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport cx from 'classnames';\nimport type { ReactElement, ReactNode } from 'react';\nimport KlipyService from 'services/klipy';\nimport type { KlipyResult } from 'services/klipy';\nimport SearchInput from '../searchInput';\nimport GifPreview from './components/gifPreview';\nimport Popover from '../popover';\nimport Button, { ButtonStyleType } from '../button';\nimport Modal from '../modal';\nimport Chip, { ChipContainer } from '../chip';\nimport GifView from './components/gifView';\nimport type { KlipyPickerLabels, KlipyPickerProps } from './klipyPicker.types';\nimport { useLabels } from '../configProvider';\n\nconst DEFAULT_LABELS: Required<KlipyPickerLabels> = {\n search: 'Pick gif',\n};\nimport styles from './klipyPicker.module.pcss';\nimport actionButtonStyles from 'components/common/actionButtons/actionButtons.module.pcss';\nimport { PopoverAlign, PopoverPlacement } from '../popover/popover.types';\n\nexport default function KlipyPicker({\n className,\n token = '',\n isModal = false,\n onSelect = () => undefined,\n selected = null,\n labels,\n}: KlipyPickerProps): ReactElement {\n const text = useLabels('KlipyPicker', labels, DEFAULT_LABELS);\n const klipyService = useMemo(() => new KlipyService(token), [token]);\n\n const [searchText, setSearchText] = useState('');\n const [currentPreviews, setCurrentPreviews] = useState<KlipyResult[]>([]);\n const [currentSuggestions, setCurrentSuggestions] = useState<string[]>([]);\n const [lastNext, setLastNext] = useState<string | null>(null);\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n\n async function searchFor(query: string) {\n setSearchText(query);\n if (!query.trim()) {\n setCurrentPreviews([]);\n setCurrentSuggestions([]);\n setLastNext(null);\n return;\n }\n const [{ results: searchResults = [], next = null }, { results: suggestionResults = [] }] = await Promise.all([\n klipyService.search(query, { limit: 18, contentfilter: 'medium' }),\n klipyService.searchSuggestions(query),\n ]);\n setCurrentPreviews(searchResults);\n setLastNext(next);\n setCurrentSuggestions(suggestionResults);\n }\n\n async function handleLoadAdditional() {\n const { results: searchResults = [], next = null } = await klipyService.search(searchText, {\n limit: 36,\n pos: lastNext ?? undefined,\n contentfilter: 'medium',\n });\n setLastNext(next);\n setCurrentPreviews((prev) => [...prev, ...searchResults]);\n }\n\n async function handlePreviewSelect(preview: KlipyResult | null) {\n await onSelect(preview);\n setIsMenuOpen(false);\n if (preview) klipyService.registerShare(searchText, preview.id);\n }\n\n function renderSuggestions(): ReactNode {\n return (\n <ChipContainer inline className={styles.klipyPickerSuggestionsContainer}>\n {currentSuggestions.map((suggestion) => (\n <Chip\n className={styles.klipyPickerSuggestionsItem}\n key={suggestion}\n text={suggestion}\n onClick={() => searchFor(suggestion)}\n />\n ))}\n </ChipContainer>\n );\n }\n\n function renderPreviewPicker(): ReactNode {\n return (\n <GifPreview\n previewItems={currentPreviews}\n onSelect={handlePreviewSelect}\n onLoadAdditional={handleLoadAdditional}\n />\n );\n }\n\n function renderSearchInput(): ReactNode {\n return <SearchInput label={text.search} value={searchText} onDebounce={searchFor} onChange={setSearchText} />;\n }\n\n if (isModal) {\n return (\n <div className={cx(styles.klipyPicker, className)}>\n <div className={actionButtonStyles.actionButtons}>\n <Button onClick={() => setIsMenuOpen(true)}>Pick gif</Button>\n {selected && (\n <Button styleType={ButtonStyleType.Delete} onClick={() => handlePreviewSelect(null)}>\n Remove gif\n </Button>\n )}\n </div>\n {selected && <GifView className={styles.klipyPickerSelected} src={selected} />}\n <Modal isOpen={isMenuOpen} onClose={() => setIsMenuOpen(false)}>\n <div className={styles.klipyPickerModalContent}>\n {renderSearchInput()}\n {renderSuggestions()}\n {renderPreviewPicker()}\n </div>\n </Modal>\n </div>\n );\n }\n\n return (\n <div className={cx(styles.klipyPicker, className)}>\n <Popover\n placement={PopoverPlacement.Bottom}\n align={PopoverAlign.Start}\n isOpen={currentPreviews.length > 0 && isMenuOpen}\n onOpenChange={setIsMenuOpen}\n // The panel opens while the user is typing in the search field, so a\n // click back into the field must not close it again.\n closeOnTriggerClick={false}\n // The grid sets its own 420px cap.\n constrainWidth={false}\n content={\n <>\n {renderSuggestions()}\n {renderPreviewPicker()}\n </>\n }\n >\n {renderSearchInput()}\n </Popover>\n {selected && (\n <Button styleType={ButtonStyleType.Delete} onClick={() => handlePreviewSelect(null)}>\n Remove gif\n </Button>\n )}\n {selected && <GifView className={styles.klipyPickerSelected} src={selected} />}\n </div>\n );\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"klipyPicker.mjs","names":[],"sources":["../../../../package/common/klipyPicker/klipyPicker.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport cx from 'classnames';\nimport type { ReactElement, ReactNode } from 'react';\nimport KlipyService from 'services/klipy';\nimport type { KlipyResult } from 'services/klipy';\nimport SearchInput from '../searchInput';\nimport GifPreview from './components/gifPreview';\nimport Popover from '../popover';\nimport Button, { ButtonStyleType } from '../button';\nimport Modal from '../modal';\nimport Chip, { ChipContainer } from '../chip';\nimport GifView from './components/gifView';\nimport type { KlipyPickerLabels, KlipyPickerProps } from './klipyPicker.types';\nimport { useLabels } from '../configProvider';\n\nconst DEFAULT_LABELS: Required<KlipyPickerLabels> = {\n search: 'Pick gif',\n};\nimport styles from './klipyPicker.module.pcss';\nimport actionButtonStyles from 'components/common/actionButtons/actionButtons.module.pcss';\nimport { PopoverAlign, PopoverPlacement } from '../popover/popover.types';\n\nexport default function KlipyPicker({\n className,\n token = '',\n isModal = false,\n onSelect = () => undefined,\n selected = null,\n labels,\n}: KlipyPickerProps): ReactElement {\n const text = useLabels('KlipyPicker', labels, DEFAULT_LABELS);\n const klipyService = useMemo(() => new KlipyService(token), [token]);\n\n const [searchText, setSearchText] = useState('');\n const [currentPreviews, setCurrentPreviews] = useState<KlipyResult[]>([]);\n const [currentSuggestions, setCurrentSuggestions] = useState<string[]>([]);\n const [lastNext, setLastNext] = useState<string | null>(null);\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n\n async function searchFor(query: string) {\n setSearchText(query);\n if (!query.trim()) {\n setCurrentPreviews([]);\n setCurrentSuggestions([]);\n setLastNext(null);\n return;\n }\n const [{ results: searchResults = [], next = null }, { results: suggestionResults = [] }] = await Promise.all([\n klipyService.search(query, { limit: 18, contentfilter: 'medium' }),\n klipyService.searchSuggestions(query),\n ]);\n setCurrentPreviews(searchResults);\n setLastNext(next);\n setCurrentSuggestions(suggestionResults);\n }\n\n async function handleLoadAdditional() {\n const { results: searchResults = [], next = null } = await klipyService.search(searchText, {\n limit: 36,\n pos: lastNext ?? undefined,\n contentfilter: 'medium',\n });\n setLastNext(next);\n setCurrentPreviews((prev) => [...prev, ...searchResults]);\n }\n\n async function handlePreviewSelect(preview: KlipyResult | null) {\n await onSelect(preview);\n setIsMenuOpen(false);\n if (preview) klipyService.registerShare(searchText, preview.id);\n }\n\n function renderSuggestions(): ReactNode {\n return (\n <ChipContainer inline className={styles.klipyPickerSuggestionsContainer}>\n {currentSuggestions.map((suggestion) => (\n <Chip\n className={styles.klipyPickerSuggestionsItem}\n key={suggestion}\n text={suggestion}\n onClick={() => searchFor(suggestion)}\n />\n ))}\n </ChipContainer>\n );\n }\n\n function renderPreviewPicker(): ReactNode {\n return (\n <GifPreview\n previewItems={currentPreviews}\n onSelect={handlePreviewSelect}\n onLoadAdditional={handleLoadAdditional}\n />\n );\n }\n\n function renderSearchInput(): ReactNode {\n return <SearchInput label={text.search} value={searchText} onDebounce={searchFor} onChange={setSearchText} />;\n }\n\n if (isModal) {\n return (\n <div className={cx(styles.klipyPicker, className)}>\n <div className={actionButtonStyles.actionButtons}>\n <Button onClick={() => setIsMenuOpen(true)}>Pick gif</Button>\n {selected && (\n <Button styleType={ButtonStyleType.Delete} onClick={() => handlePreviewSelect(null)}>\n Remove gif\n </Button>\n )}\n </div>\n {selected && <GifView className={styles.klipyPickerSelected} src={selected} />}\n <Modal isOpen={isMenuOpen} onClose={() => setIsMenuOpen(false)}>\n <div className={styles.klipyPickerModalContent}>\n {renderSearchInput()}\n {renderSuggestions()}\n {renderPreviewPicker()}\n </div>\n </Modal>\n </div>\n );\n }\n\n return (\n <div className={cx(styles.klipyPicker, className)}>\n <Popover\n placement={PopoverPlacement.Bottom}\n align={PopoverAlign.Start}\n isOpen={currentPreviews.length > 0 && isMenuOpen}\n onOpenChange={setIsMenuOpen}\n // The panel opens while the user is typing in the search field, so a\n // click back into the field must not close it again.\n closeOnTriggerClick={false}\n // The grid sets its own 420px cap.\n constrainWidth={false}\n content={\n <>\n {renderSuggestions()}\n {renderPreviewPicker()}\n </>\n }\n >\n {renderSearchInput()}\n </Popover>\n {selected && (\n <Button styleType={ButtonStyleType.Delete} onClick={() => handlePreviewSelect(null)}>\n Remove gif\n </Button>\n )}\n {selected && <GifView className={styles.klipyPickerSelected} src={selected} />}\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=`klipyPicker-selected_Watxl`,t=`klipyPicker-modal-content_3CBV9`,n=`klipyPicker-suggestions-container_-csDI`,r=`klipyPicker-suggestions-item_nHHSA`,i={"klipyPicker-selected":`klipyPicker-selected_Watxl`,klipyPickerSelected:e,"klipyPicker-modal-content":`klipyPicker-modal-content_3CBV9`,klipyPickerModalContent:t,"klipyPicker-suggestions-container":`klipyPicker-suggestions-container_-csDI`,klipyPickerSuggestionsContainer:n,"klipyPicker-suggestions-item":`klipyPicker-suggestions-item_nHHSA`,klipyPickerSuggestionsItem:r};export{i as default,t as klipyPickerModalContent,e as klipyPickerSelected,n as klipyPickerSuggestionsContainer,r as klipyPickerSuggestionsItem};
|
|
1
|
+
"use client";var e=`klipyPicker-selected_Watxl`,t=`klipyPicker-modal-content_3CBV9`,n=`klipyPicker-suggestions-container_-csDI`,r=`klipyPicker-suggestions-item_nHHSA`,i={"klipyPicker-selected":`klipyPicker-selected_Watxl`,klipyPickerSelected:e,"klipyPicker-modal-content":`klipyPicker-modal-content_3CBV9`,klipyPickerModalContent:t,"klipyPicker-suggestions-container":`klipyPicker-suggestions-container_-csDI`,klipyPickerSuggestionsContainer:n,"klipyPicker-suggestions-item":`klipyPicker-suggestions-item_nHHSA`,klipyPickerSuggestionsItem:r};export{i as default,t as klipyPickerModalContent,e as klipyPickerSelected,n as klipyPickerSuggestionsContainer,r as klipyPickerSuggestionsItem};
|
|
2
2
|
//# sourceMappingURL=klipyPicker.module.mjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"./iconLoading.module.mjs";import"react";import t from"classnames";import{jsx as n,jsxs as r}from"react/jsx-runtime";function i({className:i=``}){return n(`div`,{className:t(e.iconLoading,i),children:r(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`-8 -1 16 14`,children:[n(`path`,{className:e.iconLoadingFirst,d:`M 0 0 C 3 5 6 5 6 12`,strokeWidth:`1.7`,fill:`none`}),n(`path`,{className:e.iconLoadingFirst,d:`M 0 0 C -3 5 -6 5 -6 12`,strokeWidth:`1.7`,fill:`none`}),n(`path`,{className:e.iconLoadingFirst,d:`M 0 0 L 0 10`,strokeWidth:`1.7`,fill:`none`}),n(`path`,{className:e.iconLoadingSecond,d:`M 0.1 10 C -3 10 -4 10 -6 12`,strokeWidth:`1.7`,fill:`none`}),n(`path`,{className:e.iconLoadingSecond,d:`M -0.1 10 C 3 10 4 10 6 12`,strokeWidth:`1.7`,fill:`none`})]})})}export{i as default};
|
|
1
|
+
"use client";import e from"./iconLoading.module.mjs";import"react";import t from"classnames";import{jsx as n,jsxs as r}from"react/jsx-runtime";function i({className:i=``}){return n(`div`,{className:t(e.iconLoading,i),children:r(`svg`,{xmlns:`http://www.w3.org/2000/svg`,viewBox:`-8 -1 16 14`,children:[n(`path`,{className:e.iconLoadingFirst,d:`M 0 0 C 3 5 6 5 6 12`,strokeWidth:`1.7`,fill:`none`}),n(`path`,{className:e.iconLoadingFirst,d:`M 0 0 C -3 5 -6 5 -6 12`,strokeWidth:`1.7`,fill:`none`}),n(`path`,{className:e.iconLoadingFirst,d:`M 0 0 L 0 10`,strokeWidth:`1.7`,fill:`none`}),n(`path`,{className:e.iconLoadingSecond,d:`M 0.1 10 C -3 10 -4 10 -6 12`,strokeWidth:`1.7`,fill:`none`}),n(`path`,{className:e.iconLoadingSecond,d:`M -0.1 10 C 3 10 4 10 6 12`,strokeWidth:`1.7`,fill:`none`})]})})}export{i as default};
|
|
2
2
|
//# sourceMappingURL=iconLoading.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"iconLoading.mjs","names":[],"sources":["../../../../../package/common/loading/iconLoading/iconLoading.tsx"],"sourcesContent":["import React from 'react';\nimport cx from 'classnames';\n\nimport styles from './iconLoading.module.pcss';\n\nfunction IconLoading({ className = '' }) {\n return (\n <div className={cx(styles.iconLoading, className)}>\n <svg xmlns='http://www.w3.org/2000/svg' viewBox='-8 -1 16 14'>\n <path className={styles.iconLoadingFirst} d='M 0 0 C 3 5 6 5 6 12' strokeWidth='1.7' fill='none' />\n <path className={styles.iconLoadingFirst} d='M 0 0 C -3 5 -6 5 -6 12' strokeWidth='1.7' fill='none' />\n <path className={styles.iconLoadingFirst} d='M 0 0 L 0 10' strokeWidth='1.7' fill='none' />\n <path className={styles.iconLoadingSecond} d='M 0.1 10 C -3 10 -4 10 -6 12' strokeWidth='1.7' fill='none' />\n <path className={styles.iconLoadingSecond} d='M -0.1 10 C 3 10 4 10 6 12' strokeWidth='1.7' fill='none' />\n </svg>\n </div>\n );\n}\n\nexport default IconLoading;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"iconLoading.mjs","names":[],"sources":["../../../../../package/common/loading/iconLoading/iconLoading.tsx"],"sourcesContent":["import React from 'react';\nimport cx from 'classnames';\n\nimport styles from './iconLoading.module.pcss';\n\nfunction IconLoading({ className = '' }) {\n return (\n <div className={cx(styles.iconLoading, className)}>\n <svg xmlns='http://www.w3.org/2000/svg' viewBox='-8 -1 16 14'>\n <path className={styles.iconLoadingFirst} d='M 0 0 C 3 5 6 5 6 12' strokeWidth='1.7' fill='none' />\n <path className={styles.iconLoadingFirst} d='M 0 0 C -3 5 -6 5 -6 12' strokeWidth='1.7' fill='none' />\n <path className={styles.iconLoadingFirst} d='M 0 0 L 0 10' strokeWidth='1.7' fill='none' />\n <path className={styles.iconLoadingSecond} d='M 0.1 10 C -3 10 -4 10 -6 12' strokeWidth='1.7' fill='none' />\n <path className={styles.iconLoadingSecond} d='M -0.1 10 C 3 10 4 10 6 12' strokeWidth='1.7' fill='none' />\n </svg>\n </div>\n );\n}\n\nexport default IconLoading;\n"],"mappings":"+IAKA,SAAS,EAAY,CAAE,YAAY,IAAM,CACvC,OACE,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,YAAa,CAAS,EAC9C,SAAA,EAAC,MAAD,CAAK,MAAM,6BAA6B,QAAQ,cAAhD,SAAA,CACE,EAAC,OAAD,CAAM,UAAW,EAAO,iBAAkB,EAAE,uBAAuB,YAAY,MAAM,KAAK,MAAQ,CAAA,EAClG,EAAC,OAAD,CAAM,UAAW,EAAO,iBAAkB,EAAE,0BAA0B,YAAY,MAAM,KAAK,MAAQ,CAAA,EACrG,EAAC,OAAD,CAAM,UAAW,EAAO,iBAAkB,EAAE,eAAe,YAAY,MAAM,KAAK,MAAQ,CAAA,EAC1F,EAAC,OAAD,CAAM,UAAW,EAAO,kBAAmB,EAAE,+BAA+B,YAAY,MAAM,KAAK,MAAQ,CAAA,EAC3G,EAAC,OAAD,CAAM,UAAW,EAAO,kBAAmB,EAAE,6BAA6B,YAAY,MAAM,KAAK,MAAQ,CAAA,CACtG,GACF,CAAA,CAET"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=`iconLoading_wovj4`,t=`spin-to-oblivion_0tZtm`,n=`iconLoading-first_SBwP3`,r=`draw-line_1NiWA`,i=`iconLoading-second_nHrW3`,a=`draw-line-two_HmaHl`,o={iconLoading:e,"spin-to-oblivion":`spin-to-oblivion_0tZtm`,spinToOblivion:t,"iconLoading-first":`iconLoading-first_SBwP3`,iconLoadingFirst:n,"draw-line":`draw-line_1NiWA`,drawLine:r,"iconLoading-second":`iconLoading-second_nHrW3`,iconLoadingSecond:i,"draw-line-two":`draw-line-two_HmaHl`,drawLineTwo:a};export{o as default,r as drawLine,a as drawLineTwo,e as iconLoading,n as iconLoadingFirst,i as iconLoadingSecond,t as spinToOblivion};
|
|
1
|
+
"use client";var e=`iconLoading_wovj4`,t=`spin-to-oblivion_0tZtm`,n=`iconLoading-first_SBwP3`,r=`draw-line_1NiWA`,i=`iconLoading-second_nHrW3`,a=`draw-line-two_HmaHl`,o={iconLoading:e,"spin-to-oblivion":`spin-to-oblivion_0tZtm`,spinToOblivion:t,"iconLoading-first":`iconLoading-first_SBwP3`,iconLoadingFirst:n,"draw-line":`draw-line_1NiWA`,drawLine:r,"iconLoading-second":`iconLoading-second_nHrW3`,iconLoadingSecond:i,"draw-line-two":`draw-line-two_HmaHl`,drawLineTwo:a};export{o as default,r as drawLine,a as drawLineTwo,e as iconLoading,n as iconLoadingFirst,i as iconLoadingSecond,t as spinToOblivion};
|
|
2
2
|
//# sourceMappingURL=iconLoading.module.mjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"./iconLoading.mjs";var t=e;export{t as default};
|
|
1
|
+
"use client";import e from"./iconLoading.mjs";var t=e;export{t as default};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../../package/common/loading/iconLoading/index.ts"],"sourcesContent":["import IconLoading from './iconLoading.js';\n\nexport default IconLoading;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../../package/common/loading/iconLoading/index.ts"],"sourcesContent":["import IconLoading from './iconLoading.js';\n\nexport default IconLoading;\n"],"mappings":"8CAEA,IAAA,EAAe"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"./spinnerLoading.mjs";var t=e;export{t as default};
|
|
1
|
+
"use client";import e from"./spinnerLoading.mjs";var t=e;export{t as default};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../../package/common/loading/spinnerLoading/index.ts"],"sourcesContent":["import SpinnerLoading from './spinnerLoading';\n\nexport default SpinnerLoading;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../../package/common/loading/spinnerLoading/index.ts"],"sourcesContent":["import SpinnerLoading from './spinnerLoading';\n\nexport default SpinnerLoading;\n"],"mappings":"iDAEA,IAAA,EAAe"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"./spinnerLoading.module.mjs";import t from"classnames";import{jsx as n}from"react/jsx-runtime";function r({className:r}){return n(`svg`,{"data-testid":`spinner`,className:t(e.spinnerLoading,r),xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,fill:`none`,stroke:`var(--primary-color)`,children:n(`circle`,{cx:`50`,cy:`50`,r:`45`,strokeWidth:`10`})})}
|
|
1
|
+
"use client";import e from"./spinnerLoading.module.mjs";import t from"classnames";import{jsx as n}from"react/jsx-runtime";function r({className:r}){return n(`svg`,{"data-testid":`spinner`,className:t(e.spinnerLoading,r),xmlns:`http://www.w3.org/2000/svg`,viewBox:`0 0 100 100`,fill:`none`,stroke:`var(--primary-color)`,children:n(`circle`,{cx:`50`,cy:`50`,r:`45`,strokeWidth:`10`})})}export{r as default};
|
|
2
2
|
//# sourceMappingURL=spinnerLoading.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spinnerLoading.mjs","names":[],"sources":["../../../../../package/common/loading/spinnerLoading/spinnerLoading.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\nimport cx from 'classnames';\n\nimport styles from './spinnerLoading.module.pcss';\n\ninterface Properties {\n className?: string | undefined;\n}\n\nfunction SpinnerLoading({ className }: Properties): ReactElement {\n return (\n <svg\n data-testid='spinner'\n className={cx(styles.spinnerLoading, className)}\n xmlns='http://www.w3.org/2000/svg'\n viewBox='0 0 100 100'\n fill='none'\n stroke='var(--primary-color)'\n >\n <circle cx='50' cy='50' r='45' strokeWidth='10' />\n </svg>\n );\n}\n\
|
|
1
|
+
{"version":3,"file":"spinnerLoading.mjs","names":[],"sources":["../../../../../package/common/loading/spinnerLoading/spinnerLoading.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\nimport cx from 'classnames';\n\nimport styles from './spinnerLoading.module.pcss';\n\ninterface Properties {\n className?: string | undefined;\n}\n\nfunction SpinnerLoading({ className }: Properties): ReactElement {\n return (\n <svg\n data-testid='spinner'\n className={cx(styles.spinnerLoading, className)}\n xmlns='http://www.w3.org/2000/svg'\n viewBox='0 0 100 100'\n fill='none'\n stroke='var(--primary-color)'\n >\n <circle cx='50' cy='50' r='45' strokeWidth='10' />\n </svg>\n );\n}\n\nexport default SpinnerLoading;\n"],"mappings":"0HASA,SAAS,EAAe,CAAE,aAAuC,CAC/D,OACE,EAAC,MAAD,CACE,cAAY,UACZ,UAAW,EAAG,EAAO,eAAgB,CAAS,EAC9C,MAAM,6BACN,QAAQ,cACR,KAAK,OACL,OAAO,uBAEP,SAAA,EAAC,SAAD,CAAQ,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,YAAY,IAAM,CAAA,CAC9C,CAAA,CAET"}
|