@ahrowe/ui 0.34.0 → 0.35.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 +101 -40
- 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/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/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/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/infiniteBlock.mjs +1 -1
- package/dist/esm/common/infiniteBlock/infiniteBlock.mjs.map +1 -1
- package/dist/esm/common/infiniteBlock/infiniteBlock.module.mjs +1 -1
- 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/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/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/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/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/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/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/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/hooks/useWindowSize.mjs +1 -1
- package/dist/esm/hooks/useWindowSize.mjs.map +1 -1
- package/dist/esm/index.mjs +1 -1
- 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 +21096 -5
- package/dist/style.css +1 -1
- package/dist/types/common/actionIcon/actionIcon.types.d.ts +3 -1
- package/dist/types/common/card/card.types.d.ts +3 -1
- package/dist/types/common/checkbox/checkbox.types.d.ts +3 -1
- package/dist/types/common/colorPicker/colorPicker.types.d.ts +4 -0
- package/dist/types/common/configProvider/configProvider.types.d.ts +4 -0
- package/dist/types/common/flip/flip.d.ts +2 -2
- package/dist/types/common/flip/flip.types.d.ts +3 -1
- package/dist/types/common/input/input.types.d.ts +5 -0
- package/dist/types/common/interactableDiv/interactableDiv.d.ts +3 -2
- package/dist/types/common/loading/spinnerLoading/spinnerLoading.d.ts +0 -5
- package/dist/types/common/numberInput/numberInput.types.d.ts +2 -0
- package/dist/types/common/otpInput/otpInput.types.d.ts +2 -0
- package/dist/types/common/planCanvas/planCanvas.d.ts +1 -1
- package/dist/types/common/planCanvas/planCanvas.types.d.ts +3 -1
- package/dist/types/common/ripple/ripple.d.ts +1 -1
- package/dist/types/common/ripple/ripple.types.d.ts +1 -0
- package/dist/types/common/roomDrawer/roomDrawer.d.ts +2 -2
- package/dist/types/common/roomDrawer/roomDrawer.types.d.ts +3 -1
- package/dist/types/common/roomViewer/roomViewer.d.ts +2 -2
- package/dist/types/common/roomViewer/roomViewer.types.d.ts +3 -1
- package/dist/types/common/searchInput/searchInput.d.ts +1 -1
- package/dist/types/common/searchInput/searchInput.types.d.ts +3 -0
- package/dist/types/common/switch/switch.types.d.ts +3 -1
- package/dist/types/common/themeProvider/index.d.ts +1 -0
- package/dist/types/common/themeProvider/lightTheme.d.ts +13 -0
- package/dist/types/common/tilt/tilt.d.ts +2 -2
- package/dist/types/common/tilt/tilt.types.d.ts +3 -1
- package/dist/types/common/timer/timer.d.ts +2 -2
- package/dist/types/common/timer/timer.types.d.ts +3 -1
- package/dist/types/common/tooltip/tooltip.d.ts +1 -1
- package/dist/types/common/tooltip/tooltip.types.d.ts +7 -0
- package/dist/types/common/types/baseProps.types.d.ts +6 -0
- package/dist/types/common/utils/mergeRefs.d.ts +12 -0
- package/dist/types/common/virtualList/virtualList.d.ts +2 -4
- package/dist/types/common/virtualList/virtualList.types.d.ts +3 -1
- package/docs/Accordion.md +9 -0
- package/docs/ActionIcon.md +1 -0
- package/docs/CLAUDE.md +37 -0
- package/docs/Card.md +1 -0
- package/docs/Checkbox.md +1 -0
- package/docs/ColorPicker.md +12 -2
- package/docs/Input.md +1 -0
- package/docs/KlipyPicker.md +1 -1
- package/docs/NumberInput.md +1 -0
- package/docs/OtpInput.md +1 -0
- package/docs/SearchInput.md +1 -0
- package/docs/Switch.md +1 -0
- package/docs/Textarea.md +1 -0
- package/docs/ThemeProvider.md +30 -1
- package/docs/Tooltip.md +23 -1
- package/package.json +8 -7
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=`roomDrawer_SJj4-`,t=`roomDrawer-disabled_VRaTX`,n=`roomDrawer-toolbar_55H5p`,r=`roomDrawer-toolbar-separator_z-eRp`,i=`roomDrawer-toolButton_4GtjR`,a=`roomDrawer-viewButton_OnZR6`,o=`roomDrawer-toolButtonActive_-BXua`,s=`roomDrawer-toolIcon_mJ0vT`,c=`roomDrawer-viewControls_TKUQ1`,l=`roomDrawer-zoomLabel_xGvgk`,u=`roomDrawer-floorBar_PMWOg`,d=`roomDrawer-floorTab_lvLY-`,f=`roomDrawer-floorTab-active_pB7Oz`,p=`roomDrawer-floorTab-add_F46eU`,m=`roomDrawer-canvasWrapper_ctjFw`,h=`roomDrawer-canvasWrapper-drawing_8kVH2`,g=`roomDrawer-preview_vqJGn`,_=`roomDrawer-marquee_Vbm28`,v=`roomDrawer-handle_AFyj0`,y=`roomDrawer-handle-active_rfh4M`,b=`roomDrawer-toolButtonOn_et-K9`,x=`roomDrawer-guide_cg7gP`,S=`roomDrawer-guide-angle_3SLun`,C=`roomDrawer-snapMarker_2SDhf`,w=`roomDrawer-measureLine_Htenn`,T=`roomDrawer-measureLine-hovered_f6U9P`,E=`roomDrawer-measureGrip_OGY0c`,D=`roomDrawer-midHandle_rJVzW`,O=`roomDrawer-measure_N-cse`,k=`roomDrawer-measure-locked_FiNSg`,A=`roomDrawer-measure-offset_IdBYD`,j=`roomDrawer-measure-secondary_DgNzz`,M=`roomDrawer-inspector_hOVUl`,N=`roomDrawer-inspector-action_zMwML`,P=`roomDrawer-inspector-label_yA6NE`,F=`roomDrawer-inspector-kind_ebNzr`,I=`roomDrawer-inspector-kindEmpty_JIx7s`,L=`roomDrawer-inspector-field_-c8za`,R=`roomDrawer-inspector-name_3xHLm`,z=`roomDrawer-inspector-delete_MzEl2`,B=`roomDrawer-hint_3WTFa`,V=`roomDrawer-hint-report_oFtGt`,H=`roomDrawer-fileInput_EAZw-`,U={roomDrawer:e,"roomDrawer-disabled":`roomDrawer-disabled_VRaTX`,roomDrawerDisabled:t,"roomDrawer-toolbar":`roomDrawer-toolbar_55H5p`,roomDrawerToolbar:n,"roomDrawer-toolbar-separator":`roomDrawer-toolbar-separator_z-eRp`,roomDrawerToolbarSeparator:r,"roomDrawer-toolButton":`roomDrawer-toolButton_4GtjR`,roomDrawerToolButton:i,"roomDrawer-viewButton":`roomDrawer-viewButton_OnZR6`,roomDrawerViewButton:a,"roomDrawer-toolButtonActive":`roomDrawer-toolButtonActive_-BXua`,roomDrawerToolButtonActive:o,"roomDrawer-toolIcon":`roomDrawer-toolIcon_mJ0vT`,roomDrawerToolIcon:s,"roomDrawer-viewControls":`roomDrawer-viewControls_TKUQ1`,roomDrawerViewControls:c,"roomDrawer-zoomLabel":`roomDrawer-zoomLabel_xGvgk`,roomDrawerZoomLabel:l,"roomDrawer-floorBar":`roomDrawer-floorBar_PMWOg`,roomDrawerFloorBar:u,"roomDrawer-floorTab":`roomDrawer-floorTab_lvLY-`,roomDrawerFloorTab:d,"roomDrawer-floorTab-active":`roomDrawer-floorTab-active_pB7Oz`,roomDrawerFloorTabActive:f,"roomDrawer-floorTab-add":`roomDrawer-floorTab-add_F46eU`,roomDrawerFloorTabAdd:p,"roomDrawer-canvasWrapper":`roomDrawer-canvasWrapper_ctjFw`,roomDrawerCanvasWrapper:m,"roomDrawer-canvasWrapper-drawing":`roomDrawer-canvasWrapper-drawing_8kVH2`,roomDrawerCanvasWrapperDrawing:h,"roomDrawer-preview":`roomDrawer-preview_vqJGn`,roomDrawerPreview:g,"roomDrawer-marquee":`roomDrawer-marquee_Vbm28`,roomDrawerMarquee:_,"roomDrawer-handle":`roomDrawer-handle_AFyj0`,roomDrawerHandle:v,"roomDrawer-handle-active":`roomDrawer-handle-active_rfh4M`,roomDrawerHandleActive:y,"roomDrawer-toolButtonOn":`roomDrawer-toolButtonOn_et-K9`,roomDrawerToolButtonOn:b,"roomDrawer-guide":`roomDrawer-guide_cg7gP`,roomDrawerGuide:x,"roomDrawer-guide-angle":`roomDrawer-guide-angle_3SLun`,roomDrawerGuideAngle:S,"roomDrawer-snapMarker":`roomDrawer-snapMarker_2SDhf`,roomDrawerSnapMarker:C,"roomDrawer-measureLine":`roomDrawer-measureLine_Htenn`,roomDrawerMeasureLine:w,"roomDrawer-measureLine-hovered":`roomDrawer-measureLine-hovered_f6U9P`,roomDrawerMeasureLineHovered:T,"roomDrawer-measureGrip":`roomDrawer-measureGrip_OGY0c`,roomDrawerMeasureGrip:E,"roomDrawer-midHandle":`roomDrawer-midHandle_rJVzW`,roomDrawerMidHandle:D,"roomDrawer-measure":`roomDrawer-measure_N-cse`,roomDrawerMeasure:O,"roomDrawer-measure-locked":`roomDrawer-measure-locked_FiNSg`,roomDrawerMeasureLocked:k,"roomDrawer-measure-offset":`roomDrawer-measure-offset_IdBYD`,roomDrawerMeasureOffset:A,"roomDrawer-measure-secondary":`roomDrawer-measure-secondary_DgNzz`,roomDrawerMeasureSecondary:j,"roomDrawer-inspector":`roomDrawer-inspector_hOVUl`,roomDrawerInspector:M,"roomDrawer-inspector-action":`roomDrawer-inspector-action_zMwML`,roomDrawerInspectorAction:N,"roomDrawer-inspector-label":`roomDrawer-inspector-label_yA6NE`,roomDrawerInspectorLabel:P,"roomDrawer-inspector-kind":`roomDrawer-inspector-kind_ebNzr`,roomDrawerInspectorKind:F,"roomDrawer-inspector-kindEmpty":`roomDrawer-inspector-kindEmpty_JIx7s`,roomDrawerInspectorKindEmpty:I,"roomDrawer-inspector-field":`roomDrawer-inspector-field_-c8za`,roomDrawerInspectorField:L,"roomDrawer-inspector-name":`roomDrawer-inspector-name_3xHLm`,roomDrawerInspectorName:R,"roomDrawer-inspector-delete":`roomDrawer-inspector-delete_MzEl2`,roomDrawerInspectorDelete:z,"roomDrawer-hint":`roomDrawer-hint_3WTFa`,roomDrawerHint:B,"roomDrawer-hint-report":`roomDrawer-hint-report_oFtGt`,roomDrawerHintReport:V,"roomDrawer-fileInput":`roomDrawer-fileInput_EAZw-`,roomDrawerFileInput:H};export{U as default,e as roomDrawer,m as roomDrawerCanvasWrapper,h as roomDrawerCanvasWrapperDrawing,t as roomDrawerDisabled,H as roomDrawerFileInput,u as roomDrawerFloorBar,d as roomDrawerFloorTab,f as roomDrawerFloorTabActive,p as roomDrawerFloorTabAdd,x as roomDrawerGuide,S as roomDrawerGuideAngle,v as roomDrawerHandle,y as roomDrawerHandleActive,B as roomDrawerHint,V as roomDrawerHintReport,M as roomDrawerInspector,N as roomDrawerInspectorAction,z as roomDrawerInspectorDelete,L as roomDrawerInspectorField,F as roomDrawerInspectorKind,I as roomDrawerInspectorKindEmpty,P as roomDrawerInspectorLabel,R as roomDrawerInspectorName,_ as roomDrawerMarquee,O as roomDrawerMeasure,E as roomDrawerMeasureGrip,w as roomDrawerMeasureLine,T as roomDrawerMeasureLineHovered,k as roomDrawerMeasureLocked,A as roomDrawerMeasureOffset,j as roomDrawerMeasureSecondary,D as roomDrawerMidHandle,g as roomDrawerPreview,C as roomDrawerSnapMarker,i as roomDrawerToolButton,o as roomDrawerToolButtonActive,b as roomDrawerToolButtonOn,s as roomDrawerToolIcon,n as roomDrawerToolbar,r as roomDrawerToolbarSeparator,a as roomDrawerViewButton,c as roomDrawerViewControls,l as roomDrawerZoomLabel};
|
|
1
|
+
"use client";var e=`roomDrawer_SJj4-`,t=`roomDrawer-disabled_VRaTX`,n=`roomDrawer-toolbar_55H5p`,r=`roomDrawer-toolbar-separator_z-eRp`,i=`roomDrawer-toolButton_4GtjR`,a=`roomDrawer-viewButton_OnZR6`,o=`roomDrawer-toolButtonActive_-BXua`,s=`roomDrawer-toolIcon_mJ0vT`,c=`roomDrawer-viewControls_TKUQ1`,l=`roomDrawer-zoomLabel_xGvgk`,u=`roomDrawer-floorBar_PMWOg`,d=`roomDrawer-floorTab_lvLY-`,f=`roomDrawer-floorTab-active_pB7Oz`,p=`roomDrawer-floorTab-add_F46eU`,m=`roomDrawer-canvasWrapper_ctjFw`,h=`roomDrawer-canvasWrapper-drawing_8kVH2`,g=`roomDrawer-preview_vqJGn`,_=`roomDrawer-marquee_Vbm28`,v=`roomDrawer-handle_AFyj0`,y=`roomDrawer-handle-active_rfh4M`,b=`roomDrawer-toolButtonOn_et-K9`,x=`roomDrawer-guide_cg7gP`,S=`roomDrawer-guide-angle_3SLun`,C=`roomDrawer-snapMarker_2SDhf`,w=`roomDrawer-measureLine_Htenn`,T=`roomDrawer-measureLine-hovered_f6U9P`,E=`roomDrawer-measureGrip_OGY0c`,D=`roomDrawer-midHandle_rJVzW`,O=`roomDrawer-measure_N-cse`,k=`roomDrawer-measure-locked_FiNSg`,A=`roomDrawer-measure-offset_IdBYD`,j=`roomDrawer-measure-secondary_DgNzz`,M=`roomDrawer-inspector_hOVUl`,N=`roomDrawer-inspector-action_zMwML`,P=`roomDrawer-inspector-label_yA6NE`,F=`roomDrawer-inspector-kind_ebNzr`,I=`roomDrawer-inspector-kindEmpty_JIx7s`,L=`roomDrawer-inspector-field_-c8za`,R=`roomDrawer-inspector-name_3xHLm`,z=`roomDrawer-inspector-delete_MzEl2`,B=`roomDrawer-hint_3WTFa`,V=`roomDrawer-hint-report_oFtGt`,H=`roomDrawer-fileInput_EAZw-`,U={roomDrawer:e,"roomDrawer-disabled":`roomDrawer-disabled_VRaTX`,roomDrawerDisabled:t,"roomDrawer-toolbar":`roomDrawer-toolbar_55H5p`,roomDrawerToolbar:n,"roomDrawer-toolbar-separator":`roomDrawer-toolbar-separator_z-eRp`,roomDrawerToolbarSeparator:r,"roomDrawer-toolButton":`roomDrawer-toolButton_4GtjR`,roomDrawerToolButton:i,"roomDrawer-viewButton":`roomDrawer-viewButton_OnZR6`,roomDrawerViewButton:a,"roomDrawer-toolButtonActive":`roomDrawer-toolButtonActive_-BXua`,roomDrawerToolButtonActive:o,"roomDrawer-toolIcon":`roomDrawer-toolIcon_mJ0vT`,roomDrawerToolIcon:s,"roomDrawer-viewControls":`roomDrawer-viewControls_TKUQ1`,roomDrawerViewControls:c,"roomDrawer-zoomLabel":`roomDrawer-zoomLabel_xGvgk`,roomDrawerZoomLabel:l,"roomDrawer-floorBar":`roomDrawer-floorBar_PMWOg`,roomDrawerFloorBar:u,"roomDrawer-floorTab":`roomDrawer-floorTab_lvLY-`,roomDrawerFloorTab:d,"roomDrawer-floorTab-active":`roomDrawer-floorTab-active_pB7Oz`,roomDrawerFloorTabActive:f,"roomDrawer-floorTab-add":`roomDrawer-floorTab-add_F46eU`,roomDrawerFloorTabAdd:p,"roomDrawer-canvasWrapper":`roomDrawer-canvasWrapper_ctjFw`,roomDrawerCanvasWrapper:m,"roomDrawer-canvasWrapper-drawing":`roomDrawer-canvasWrapper-drawing_8kVH2`,roomDrawerCanvasWrapperDrawing:h,"roomDrawer-preview":`roomDrawer-preview_vqJGn`,roomDrawerPreview:g,"roomDrawer-marquee":`roomDrawer-marquee_Vbm28`,roomDrawerMarquee:_,"roomDrawer-handle":`roomDrawer-handle_AFyj0`,roomDrawerHandle:v,"roomDrawer-handle-active":`roomDrawer-handle-active_rfh4M`,roomDrawerHandleActive:y,"roomDrawer-toolButtonOn":`roomDrawer-toolButtonOn_et-K9`,roomDrawerToolButtonOn:b,"roomDrawer-guide":`roomDrawer-guide_cg7gP`,roomDrawerGuide:x,"roomDrawer-guide-angle":`roomDrawer-guide-angle_3SLun`,roomDrawerGuideAngle:S,"roomDrawer-snapMarker":`roomDrawer-snapMarker_2SDhf`,roomDrawerSnapMarker:C,"roomDrawer-measureLine":`roomDrawer-measureLine_Htenn`,roomDrawerMeasureLine:w,"roomDrawer-measureLine-hovered":`roomDrawer-measureLine-hovered_f6U9P`,roomDrawerMeasureLineHovered:T,"roomDrawer-measureGrip":`roomDrawer-measureGrip_OGY0c`,roomDrawerMeasureGrip:E,"roomDrawer-midHandle":`roomDrawer-midHandle_rJVzW`,roomDrawerMidHandle:D,"roomDrawer-measure":`roomDrawer-measure_N-cse`,roomDrawerMeasure:O,"roomDrawer-measure-locked":`roomDrawer-measure-locked_FiNSg`,roomDrawerMeasureLocked:k,"roomDrawer-measure-offset":`roomDrawer-measure-offset_IdBYD`,roomDrawerMeasureOffset:A,"roomDrawer-measure-secondary":`roomDrawer-measure-secondary_DgNzz`,roomDrawerMeasureSecondary:j,"roomDrawer-inspector":`roomDrawer-inspector_hOVUl`,roomDrawerInspector:M,"roomDrawer-inspector-action":`roomDrawer-inspector-action_zMwML`,roomDrawerInspectorAction:N,"roomDrawer-inspector-label":`roomDrawer-inspector-label_yA6NE`,roomDrawerInspectorLabel:P,"roomDrawer-inspector-kind":`roomDrawer-inspector-kind_ebNzr`,roomDrawerInspectorKind:F,"roomDrawer-inspector-kindEmpty":`roomDrawer-inspector-kindEmpty_JIx7s`,roomDrawerInspectorKindEmpty:I,"roomDrawer-inspector-field":`roomDrawer-inspector-field_-c8za`,roomDrawerInspectorField:L,"roomDrawer-inspector-name":`roomDrawer-inspector-name_3xHLm`,roomDrawerInspectorName:R,"roomDrawer-inspector-delete":`roomDrawer-inspector-delete_MzEl2`,roomDrawerInspectorDelete:z,"roomDrawer-hint":`roomDrawer-hint_3WTFa`,roomDrawerHint:B,"roomDrawer-hint-report":`roomDrawer-hint-report_oFtGt`,roomDrawerHintReport:V,"roomDrawer-fileInput":`roomDrawer-fileInput_EAZw-`,roomDrawerFileInput:H};export{U as default,e as roomDrawer,m as roomDrawerCanvasWrapper,h as roomDrawerCanvasWrapperDrawing,t as roomDrawerDisabled,H as roomDrawerFileInput,u as roomDrawerFloorBar,d as roomDrawerFloorTab,f as roomDrawerFloorTabActive,p as roomDrawerFloorTabAdd,x as roomDrawerGuide,S as roomDrawerGuideAngle,v as roomDrawerHandle,y as roomDrawerHandleActive,B as roomDrawerHint,V as roomDrawerHintReport,M as roomDrawerInspector,N as roomDrawerInspectorAction,z as roomDrawerInspectorDelete,L as roomDrawerInspectorField,F as roomDrawerInspectorKind,I as roomDrawerInspectorKindEmpty,P as roomDrawerInspectorLabel,R as roomDrawerInspectorName,_ as roomDrawerMarquee,O as roomDrawerMeasure,E as roomDrawerMeasureGrip,w as roomDrawerMeasureLine,T as roomDrawerMeasureLineHovered,k as roomDrawerMeasureLocked,A as roomDrawerMeasureOffset,j as roomDrawerMeasureSecondary,D as roomDrawerMidHandle,g as roomDrawerPreview,C as roomDrawerSnapMarker,i as roomDrawerToolButton,o as roomDrawerToolButtonActive,b as roomDrawerToolButtonOn,s as roomDrawerToolIcon,n as roomDrawerToolbar,r as roomDrawerToolbarSeparator,a as roomDrawerViewButton,c as roomDrawerViewControls,l as roomDrawerZoomLabel};
|
|
2
2
|
//# sourceMappingURL=roomDrawer.module.mjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useCallback as e,useRef as t,useState as n}from"react";var r=500;function i(i,a=50){let[o,s]=n(i),c=t([]),l=t([]),u=t(null),d=t(i),f=t(null),[,p]=n(0),m=e(e=>{d.current=e,s(e)},[]),h=e(e=>{c.current=[...c.current,e].slice(-a),l.current=[]},[a]),g=e(()=>{u.current=d.current},[]),_=e(e=>{m(e)},[m]),v=e(()=>{let e=u.current;return u.current=null,!e||e===d.current?!1:(h(e),f.current=null,p(e=>e+1),!0)},[h]),y=e(()=>{let e=u.current;return u.current=null,e?(m(e),e):null},[m]),b=e((e,t,n=[])=>{if(e===d.current)return;let i=n.join(`,`),a=Date.now(),o=f.current;o!==null&&o.reason===t&&o.targets===i&&a-o.at<r&&c.current.length>0?l.current=[]:h(d.current),f.current={reason:t,targets:i,at:a},m(e),p(e=>e+1)},[h,m]),x=e(e=>{m(e)},[m]),S=e(()=>{let e=c.current;if(e.length===0)return null;let t=e[e.length-1];return c.current=e.slice(0,-1),l.current=[d.current,...l.current],f.current=null,m(t),p(e=>e+1),t},[m]),C=e(()=>{let e=l.current;if(e.length===0)return null;let t=e[0];return l.current=e.slice(1),c.current=[...c.current,d.current].slice(-a),f.current=null,m(t),p(e=>e+1),t},[a,m]),w=e(()=>{c.current=[],l.current=[],f.current=null,p(e=>e+1)},[]),T=e(()=>u.current!==null,[]);return{present:o,canUndo:c.current.length>0,canRedo:l.current.length>0,beginGesture:g,updateGesture:_,endGesture:v,cancelGesture:y,commit:b,replace:x,undo:S,redo:C,clearHistory:w,isGestureActive:T}}export{i as usePlanHistory};
|
|
1
|
+
"use client";import{useCallback as e,useRef as t,useState as n}from"react";var r=500;function i(i,a=50){let[o,s]=n(i),c=t([]),l=t([]),u=t(null),d=t(i),f=t(null),[,p]=n(0),m=e(e=>{d.current=e,s(e)},[]),h=e(e=>{c.current=[...c.current,e].slice(-a),l.current=[]},[a]),g=e(()=>{u.current=d.current},[]),_=e(e=>{m(e)},[m]),v=e(()=>{let e=u.current;return u.current=null,!e||e===d.current?!1:(h(e),f.current=null,p(e=>e+1),!0)},[h]),y=e(()=>{let e=u.current;return u.current=null,e?(m(e),e):null},[m]),b=e((e,t,n=[])=>{if(e===d.current)return;let i=n.join(`,`),a=Date.now(),o=f.current;o!==null&&o.reason===t&&o.targets===i&&a-o.at<r&&c.current.length>0?l.current=[]:h(d.current),f.current={reason:t,targets:i,at:a},m(e),p(e=>e+1)},[h,m]),x=e(e=>{m(e)},[m]),S=e(()=>{let e=c.current;if(e.length===0)return null;let t=e[e.length-1];return c.current=e.slice(0,-1),l.current=[d.current,...l.current],f.current=null,m(t),p(e=>e+1),t},[m]),C=e(()=>{let e=l.current;if(e.length===0)return null;let t=e[0];return l.current=e.slice(1),c.current=[...c.current,d.current].slice(-a),f.current=null,m(t),p(e=>e+1),t},[a,m]),w=e(()=>{c.current=[],l.current=[],f.current=null,p(e=>e+1)},[]),T=e(()=>u.current!==null,[]);return{present:o,canUndo:c.current.length>0,canRedo:l.current.length>0,beginGesture:g,updateGesture:_,endGesture:v,cancelGesture:y,commit:b,replace:x,undo:S,redo:C,clearHistory:w,isGestureActive:T}}export{i as usePlanHistory};
|
|
2
2
|
//# sourceMappingURL=usePlanHistory.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePlanHistory.mjs","names":[],"sources":["../../../../package/common/roomDrawer/usePlanHistory.ts"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\n\nimport type { FloorPlan } from '../floorPlan';\nimport type { RoomDrawerChangeReason } from './roomDrawer.types';\n\n/**\n * Undo/redo over plan snapshots.\n *\n * Snapshots rather than command objects: every mutator already returns a fresh\n * immutable plan with structural sharing, so a snapshot costs a handful of pointers.\n * Commands would mean writing and testing an inverse for each of fifteen operations,\n * and an `addWall` that split three other walls on its way has no cheap inverse at all.\n *\n * The gesture API is what keeps a 200-move drag to ONE entry: `begin` stashes the plan\n * as it was, `update` replaces the present without pushing, and `end` pushes that single\n * stashed snapshot. A gesture that was aborted, or that ended where it started, pushes\n * nothing.\n */\n\n/** Discrete edits of the same kind on the same target merge if they land within this. */\nconst MERGE_WINDOW_MS = 500;\n\nexport interface PlanHistory {\n present: FloorPlan;\n canUndo: boolean;\n canRedo: boolean;\n\n /** Stashes the current plan as the snapshot a later `endGesture` would restore to. */\n beginGesture: () => void;\n /** Replaces the present mid-gesture. Pushes nothing. */\n updateGesture: (plan: FloorPlan) => void;\n /** Pushes the stashed snapshot, if the gesture actually changed anything. */\n endGesture: () => boolean;\n /** Discards the gesture and restores the stashed snapshot. */\n cancelGesture: () => FloorPlan | null;\n\n /** A discrete edit: pushes and replaces atomically. */\n commit: (plan: FloorPlan, reason: RoomDrawerChangeReason, targetIds?: string[]) => void;\n /** Replaces the present without touching history, for an externally driven value. */\n replace: (plan: FloorPlan) => void;\n\n undo: () => FloorPlan | null;\n redo: () => FloorPlan | null;\n clearHistory: () => void;\n isGestureActive: () => boolean;\n}\n\nexport function usePlanHistory(initial: FloorPlan, limit = 50): PlanHistory {\n const [present, setPresent] = useState<FloorPlan>(initial);\n const pastRef = useRef<FloorPlan[]>([]);\n const futureRef = useRef<FloorPlan[]>([]);\n const gestureStartRef = useRef<FloorPlan | null>(null);\n const presentRef = useRef<FloorPlan>(initial);\n const lastCommitRef = useRef<{ reason: string; targets: string; at: number } | null>(null);\n const [, forceCounter] = useState(0);\n\n const setBoth = useCallback((plan: FloorPlan) => {\n presentRef.current = plan;\n setPresent(plan);\n }, []);\n\n const push = useCallback(\n (snapshot: FloorPlan) => {\n pastRef.current = [...pastRef.current, snapshot].slice(-limit);\n futureRef.current = [];\n },\n [limit],\n );\n\n const beginGesture = useCallback(() => {\n gestureStartRef.current = presentRef.current;\n }, []);\n\n const updateGesture = useCallback(\n (plan: FloorPlan) => {\n setBoth(plan);\n },\n [setBoth],\n );\n\n const endGesture = useCallback(() => {\n const start = gestureStartRef.current;\n gestureStartRef.current = null;\n if (!start || start === presentRef.current) return false;\n push(start);\n lastCommitRef.current = null;\n forceCounter((n) => n + 1);\n return true;\n }, [push]);\n\n const cancelGesture = useCallback(() => {\n const start = gestureStartRef.current;\n gestureStartRef.current = null;\n if (!start) return null;\n setBoth(start);\n return start;\n }, [setBoth]);\n\n const commit = useCallback(\n (plan: FloorPlan, reason: RoomDrawerChangeReason, targetIds: string[] = []) => {\n if (plan === presentRef.current) return;\n const targets = targetIds.join(',');\n const now = Date.now();\n const last = lastCommitRef.current;\n // Typing a room name would otherwise flood the stack with one entry per keystroke.\n const mergeable =\n last !== null &&\n last.reason === reason &&\n last.targets === targets &&\n now - last.at < MERGE_WINDOW_MS &&\n pastRef.current.length > 0;\n\n if (!mergeable) push(presentRef.current);\n else futureRef.current = [];\n\n lastCommitRef.current = { reason, targets, at: now };\n setBoth(plan);\n forceCounter((n) => n + 1);\n },\n [push, setBoth],\n );\n\n const replace = useCallback(\n (plan: FloorPlan) => {\n setBoth(plan);\n },\n [setBoth],\n );\n\n const undo = useCallback(() => {\n const past = pastRef.current;\n if (past.length === 0) return null;\n const previous = past[past.length - 1];\n pastRef.current = past.slice(0, -1);\n futureRef.current = [presentRef.current, ...futureRef.current];\n lastCommitRef.current = null;\n setBoth(previous);\n forceCounter((n) => n + 1);\n return previous;\n }, [setBoth]);\n\n const redo = useCallback(() => {\n const future = futureRef.current;\n if (future.length === 0) return null;\n const next = future[0];\n futureRef.current = future.slice(1);\n pastRef.current = [...pastRef.current, presentRef.current].slice(-limit);\n lastCommitRef.current = null;\n setBoth(next);\n forceCounter((n) => n + 1);\n return next;\n }, [limit, setBoth]);\n\n const clearHistory = useCallback(() => {\n pastRef.current = [];\n futureRef.current = [];\n lastCommitRef.current = null;\n forceCounter((n) => n + 1);\n }, []);\n\n const isGestureActive = useCallback(() => gestureStartRef.current !== null, []);\n\n return {\n present,\n canUndo: pastRef.current.length > 0,\n canRedo: futureRef.current.length > 0,\n beginGesture,\n updateGesture,\n endGesture,\n cancelGesture,\n commit,\n replace,\n undo,\n redo,\n clearHistory,\n isGestureActive,\n };\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"usePlanHistory.mjs","names":[],"sources":["../../../../package/common/roomDrawer/usePlanHistory.ts"],"sourcesContent":["import { useCallback, useRef, useState } from 'react';\n\nimport type { FloorPlan } from '../floorPlan';\nimport type { RoomDrawerChangeReason } from './roomDrawer.types';\n\n/**\n * Undo/redo over plan snapshots.\n *\n * Snapshots rather than command objects: every mutator already returns a fresh\n * immutable plan with structural sharing, so a snapshot costs a handful of pointers.\n * Commands would mean writing and testing an inverse for each of fifteen operations,\n * and an `addWall` that split three other walls on its way has no cheap inverse at all.\n *\n * The gesture API is what keeps a 200-move drag to ONE entry: `begin` stashes the plan\n * as it was, `update` replaces the present without pushing, and `end` pushes that single\n * stashed snapshot. A gesture that was aborted, or that ended where it started, pushes\n * nothing.\n */\n\n/** Discrete edits of the same kind on the same target merge if they land within this. */\nconst MERGE_WINDOW_MS = 500;\n\nexport interface PlanHistory {\n present: FloorPlan;\n canUndo: boolean;\n canRedo: boolean;\n\n /** Stashes the current plan as the snapshot a later `endGesture` would restore to. */\n beginGesture: () => void;\n /** Replaces the present mid-gesture. Pushes nothing. */\n updateGesture: (plan: FloorPlan) => void;\n /** Pushes the stashed snapshot, if the gesture actually changed anything. */\n endGesture: () => boolean;\n /** Discards the gesture and restores the stashed snapshot. */\n cancelGesture: () => FloorPlan | null;\n\n /** A discrete edit: pushes and replaces atomically. */\n commit: (plan: FloorPlan, reason: RoomDrawerChangeReason, targetIds?: string[]) => void;\n /** Replaces the present without touching history, for an externally driven value. */\n replace: (plan: FloorPlan) => void;\n\n undo: () => FloorPlan | null;\n redo: () => FloorPlan | null;\n clearHistory: () => void;\n isGestureActive: () => boolean;\n}\n\nexport function usePlanHistory(initial: FloorPlan, limit = 50): PlanHistory {\n const [present, setPresent] = useState<FloorPlan>(initial);\n const pastRef = useRef<FloorPlan[]>([]);\n const futureRef = useRef<FloorPlan[]>([]);\n const gestureStartRef = useRef<FloorPlan | null>(null);\n const presentRef = useRef<FloorPlan>(initial);\n const lastCommitRef = useRef<{ reason: string; targets: string; at: number } | null>(null);\n const [, forceCounter] = useState(0);\n\n const setBoth = useCallback((plan: FloorPlan) => {\n presentRef.current = plan;\n setPresent(plan);\n }, []);\n\n const push = useCallback(\n (snapshot: FloorPlan) => {\n pastRef.current = [...pastRef.current, snapshot].slice(-limit);\n futureRef.current = [];\n },\n [limit],\n );\n\n const beginGesture = useCallback(() => {\n gestureStartRef.current = presentRef.current;\n }, []);\n\n const updateGesture = useCallback(\n (plan: FloorPlan) => {\n setBoth(plan);\n },\n [setBoth],\n );\n\n const endGesture = useCallback(() => {\n const start = gestureStartRef.current;\n gestureStartRef.current = null;\n if (!start || start === presentRef.current) return false;\n push(start);\n lastCommitRef.current = null;\n forceCounter((n) => n + 1);\n return true;\n }, [push]);\n\n const cancelGesture = useCallback(() => {\n const start = gestureStartRef.current;\n gestureStartRef.current = null;\n if (!start) return null;\n setBoth(start);\n return start;\n }, [setBoth]);\n\n const commit = useCallback(\n (plan: FloorPlan, reason: RoomDrawerChangeReason, targetIds: string[] = []) => {\n if (plan === presentRef.current) return;\n const targets = targetIds.join(',');\n const now = Date.now();\n const last = lastCommitRef.current;\n // Typing a room name would otherwise flood the stack with one entry per keystroke.\n const mergeable =\n last !== null &&\n last.reason === reason &&\n last.targets === targets &&\n now - last.at < MERGE_WINDOW_MS &&\n pastRef.current.length > 0;\n\n if (!mergeable) push(presentRef.current);\n else futureRef.current = [];\n\n lastCommitRef.current = { reason, targets, at: now };\n setBoth(plan);\n forceCounter((n) => n + 1);\n },\n [push, setBoth],\n );\n\n const replace = useCallback(\n (plan: FloorPlan) => {\n setBoth(plan);\n },\n [setBoth],\n );\n\n const undo = useCallback(() => {\n const past = pastRef.current;\n if (past.length === 0) return null;\n const previous = past[past.length - 1];\n pastRef.current = past.slice(0, -1);\n futureRef.current = [presentRef.current, ...futureRef.current];\n lastCommitRef.current = null;\n setBoth(previous);\n forceCounter((n) => n + 1);\n return previous;\n }, [setBoth]);\n\n const redo = useCallback(() => {\n const future = futureRef.current;\n if (future.length === 0) return null;\n const next = future[0];\n futureRef.current = future.slice(1);\n pastRef.current = [...pastRef.current, presentRef.current].slice(-limit);\n lastCommitRef.current = null;\n setBoth(next);\n forceCounter((n) => n + 1);\n return next;\n }, [limit, setBoth]);\n\n const clearHistory = useCallback(() => {\n pastRef.current = [];\n futureRef.current = [];\n lastCommitRef.current = null;\n forceCounter((n) => n + 1);\n }, []);\n\n const isGestureActive = useCallback(() => gestureStartRef.current !== null, []);\n\n return {\n present,\n canUndo: pastRef.current.length > 0,\n canRedo: futureRef.current.length > 0,\n beginGesture,\n updateGesture,\n endGesture,\n cancelGesture,\n commit,\n replace,\n undo,\n redo,\n clearHistory,\n isGestureActive,\n };\n}\n"],"mappings":"2EAoBA,IAAM,EAAkB,IA2BxB,SAAgB,EAAe,EAAoB,EAAQ,GAAiB,CAC1E,GAAM,CAAC,EAAS,GAAc,EAAoB,CAAO,EACnD,EAAU,EAAoB,CAAC,CAAC,EAChC,EAAY,EAAoB,CAAC,CAAC,EAClC,EAAkB,EAAyB,IAAI,EAC/C,EAAa,EAAkB,CAAO,EACtC,EAAgB,EAA+D,IAAI,EACnF,EAAG,GAAgB,EAAS,CAAC,EAE7B,EAAU,EAAa,GAAoB,CAC/C,EAAW,QAAU,EACrB,EAAW,CAAI,CACjB,EAAG,CAAC,CAAC,EAEC,EAAO,EACV,GAAwB,CACvB,EAAQ,QAAU,CAAC,GAAG,EAAQ,QAAS,CAAQ,CAAC,CAAC,MAAM,CAAC,CAAK,EAC7D,EAAU,QAAU,CAAC,CACvB,EACA,CAAC,CAAK,CACR,EAEM,EAAe,MAAkB,CACrC,EAAgB,QAAU,EAAW,OACvC,EAAG,CAAC,CAAC,EAEC,EAAgB,EACnB,GAAoB,CACnB,EAAQ,CAAI,CACd,EACA,CAAC,CAAO,CACV,EAEM,EAAa,MAAkB,CACnC,IAAM,EAAQ,EAAgB,QAM9B,MALA,GAAgB,QAAU,KACtB,CAAC,GAAS,IAAU,EAAW,QAAgB,IACnD,EAAK,CAAK,EACV,EAAc,QAAU,KACxB,EAAc,GAAM,EAAI,CAAC,EAClB,GACT,EAAG,CAAC,CAAI,CAAC,EAEH,EAAgB,MAAkB,CACtC,IAAM,EAAQ,EAAgB,QAI9B,MAHA,GAAgB,QAAU,KACrB,GACL,EAAQ,CAAK,EACN,GAFY,IAGrB,EAAG,CAAC,CAAO,CAAC,EAEN,EAAS,GACZ,EAAiB,EAAgC,EAAsB,CAAC,IAAM,CAC7E,GAAI,IAAS,EAAW,QAAS,OACjC,IAAM,EAAU,EAAU,KAAK,GAAG,EAC5B,EAAM,KAAK,IAAI,EACf,EAAO,EAAc,QAGzB,IAAS,MACT,EAAK,SAAW,GAChB,EAAK,UAAY,GACjB,EAAM,EAAK,GAAK,GAChB,EAAQ,QAAQ,OAAS,EAGtB,EAAU,QAAU,CAAC,EADV,EAAK,EAAW,OAAO,EAGvC,EAAc,QAAU,CAAE,SAAQ,UAAS,GAAI,CAAI,EACnD,EAAQ,CAAI,EACZ,EAAc,GAAM,EAAI,CAAC,CAC3B,EACA,CAAC,EAAM,CAAO,CAChB,EAEM,EAAU,EACb,GAAoB,CACnB,EAAQ,CAAI,CACd,EACA,CAAC,CAAO,CACV,EAEM,EAAO,MAAkB,CAC7B,IAAM,EAAO,EAAQ,QACrB,GAAI,EAAK,SAAW,EAAG,OAAO,KAC9B,IAAM,EAAW,EAAK,EAAK,OAAS,GAMpC,MALA,GAAQ,QAAU,EAAK,MAAM,EAAG,EAAE,EAClC,EAAU,QAAU,CAAC,EAAW,QAAS,GAAG,EAAU,OAAO,EAC7D,EAAc,QAAU,KACxB,EAAQ,CAAQ,EAChB,EAAc,GAAM,EAAI,CAAC,EAClB,CACT,EAAG,CAAC,CAAO,CAAC,EAEN,EAAO,MAAkB,CAC7B,IAAM,EAAS,EAAU,QACzB,GAAI,EAAO,SAAW,EAAG,OAAO,KAChC,IAAM,EAAO,EAAO,GAMpB,MALA,GAAU,QAAU,EAAO,MAAM,CAAC,EAClC,EAAQ,QAAU,CAAC,GAAG,EAAQ,QAAS,EAAW,OAAO,CAAC,CAAC,MAAM,CAAC,CAAK,EACvE,EAAc,QAAU,KACxB,EAAQ,CAAI,EACZ,EAAc,GAAM,EAAI,CAAC,EAClB,CACT,EAAG,CAAC,EAAO,CAAO,CAAC,EAEb,EAAe,MAAkB,CACrC,EAAQ,QAAU,CAAC,EACnB,EAAU,QAAU,CAAC,EACrB,EAAc,QAAU,KACxB,EAAc,GAAM,EAAI,CAAC,CAC3B,EAAG,CAAC,CAAC,EAEC,EAAkB,MAAkB,EAAgB,UAAY,KAAM,CAAC,CAAC,EAE9E,MAAO,CACL,UACA,QAAS,EAAQ,QAAQ,OAAS,EAClC,QAAS,EAAU,QAAQ,OAAS,EACpC,eACA,gBACA,aACA,gBACA,SACA,UACA,OACA,OACA,eACA,iBACF,CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useComponentDefaults as e}from"../configProvider/useComponentDefaults.mjs";import{renderIcon as t}from"../utils/renderIcon.mjs";import{floorBounds as n,getFloor as r}from"../floorPlan/floorPlan.plan.mjs";import{derivePlan as i}from"../floorPlan/floorPlan.rooms.mjs";import{clientToWorld as a}from"../floorPlan/floorPlan.snap.mjs";import o from"../planCanvas/planCanvas.mjs";import s from"./roomViewer.module.mjs";import{
|
|
1
|
+
"use client";import{useComponentDefaults as e}from"../configProvider/useComponentDefaults.mjs";import{renderIcon as t}from"../utils/renderIcon.mjs";import{floorBounds as n,getFloor as r}from"../floorPlan/floorPlan.plan.mjs";import{derivePlan as i}from"../floorPlan/floorPlan.rooms.mjs";import{clientToWorld as a}from"../floorPlan/floorPlan.snap.mjs";import o from"../planCanvas/planCanvas.mjs";import s from"./roomViewer.module.mjs";import{useCallback as c,useEffect as l,useId as ee,useImperativeHandle as te,useMemo as u,useRef as d,useState as f}from"react";import p from"classnames";import{faExpand as ne,faMagnifyingGlassMinus as re,faMagnifyingGlassPlus as ie}from"@fortawesome/free-solid-svg-icons";import{jsx as m,jsxs as h}from"react/jsx-runtime";var g=.002,_=4,ae=4;function oe(e){let t=e/1e6;return`${t<10?t.toFixed(1):Math.round(t)} m²`}function se(se){let{ref:ce,plan:v,activeFloorId:y,defaultActiveFloorId:le,onFloorChange:b,selectedRoomId:x,defaultSelectedRoomId:ue=null,onSelect:S,hoveredRoomId:C,onHoverChange:w,view:T,defaultView:de,onViewChange:E,interactive:D=!0,pannable:O=!0,fitOnMount:fe=!0,showFloorBar:pe=!0,showViewControls:me=!0,showGrid:he=!1,showRoomLabels:ge=!0,showOpeningSymbols:_e=!0,getRoomColor:ve,renderRoomLabel:ye,getRoomLabel:be,formatArea:xe=oe,height:Se=360,emptyState:Ce,labels:k,icons:A,className:we,style:Te,classNames:j,styles:M,"aria-label":N,...Ee}=e(`RoomViewer`,se),P=d(null),F=d(null),De=ee().replace(/:/g,``),I=v?.floors??[],[Oe,ke]=f(le),L=y??Oe??I[0]?.id,R=u(()=>v?r(v,L)??r(v):null,[v,L]),z=c(e=>{y===void 0&&ke(e),b?.(e)},[y,b]),B=u(()=>R?i(R).rooms:[],[R]),[Ae,je]=f(ue),V=x===void 0?Ae:x,[Me,Ne]=f(null),H=C===void 0?Me:C,U=c(e=>{x===void 0&&je(e);let t=e?B.find(t=>t.roomId===e)??null:null;S?.(e,t,R?.id??``)},[x,B,S,R?.id]),Pe=c(e=>{C===void 0&&Ne(e),w?.(e)},[C,w]),Fe=(()=>{let e=V?B.find(e=>e.roomId===V):void 0;if(!e)return k?.noRoomSelected??`No room selected`;let t=e.meta?.name||`Unnamed room`;return(k?.selectedRoom??`{name} selected, {area}`).replace(`{name}`,t).replace(`{area}`,xe(e.area))})(),[Ie,Le]=f(de??{x:0,y:0,zoom:.05}),W=T??Ie,G=d(W);G.current=W;let K=c(e=>{T===void 0&&Le(e),E?.(e)},[T,E]),q=d(!1),[J,Re]=f({width:800,height:360});l(()=>{let e=P.current;if(!e)return;let t=()=>{let t=e.getBoundingClientRect();t.width>0&&t.height>0&&Re({width:Math.round(t.width),height:Math.round(t.height)})},n=new ResizeObserver(t);return n.observe(e),t(),()=>n.disconnect()},[]);let Y=c((e={})=>{let t=e.padding??24,r=R?n(R):null;if(!r||r.width<=0||r.height<=0){K({x:-1e3,y:-1e3,zoom:.05});return}let i=Math.max(g,Math.min(_,Math.min((J.width-t*2)/r.width,(J.height-t*2)/r.height)));K({x:r.minX-(J.width/i-r.width)/2,y:r.minY-(J.height/i-r.height)/2,zoom:i})},[R,J.width,J.height,K]);l(()=>{fe&&!q.current&&(!R||J.width<=0||Object.keys(R.nodes).length===0||Y())},[fe,R,J.width,J.height,Y]);let X=c((e,t)=>{q.current=!0;let n=G.current,r=Math.max(g,Math.min(_,n.zoom*e));if(r===n.zoom)return;let i=t?.x??J.width/2,a=t?.y??J.height/2;K({x:n.x+i/n.zoom-i/r,y:n.y+a/n.zoom-a/r,zoom:r})},[K,J.width,J.height]),Z=d(new Map),Q=d(null),$=d(null),ze=c(e=>{if(O){if(Z.current.set(e.pointerId,{x:e.clientX,y:e.clientY}),Z.current.size===2){let[e,t]=[...Z.current.values()];$.current={dist:Math.hypot(t.x-e.x,t.y-e.y),view:G.current,mid:{x:(e.x+t.x)/2,y:(e.y+t.y)/2}},Q.current=null;return}Q.current={startClient:{x:e.clientX,y:e.clientY},startView:G.current,moved:!1}}},[O]),Be=c(e=>{Z.current.has(e.pointerId)&&Z.current.set(e.pointerId,{x:e.clientX,y:e.clientY});let t=$.current;if(t&&Z.current.size>=2){let[e,n]=[...Z.current.values()],r=Math.hypot(n.x-e.x,n.y-e.y);if(t.dist<=0)return;let i=Math.max(g,Math.min(_,t.view.zoom*(r/t.dist))),o=P.current?.getBoundingClientRect()??{left:0,top:0},s={x:(e.x+n.x)/2,y:(e.y+n.y)/2};q.current=!0;let c=a(t.mid.x,t.mid.y,o,t.view);K({x:c.x-(s.x-o.left)/i,y:c.y-(s.y-o.top)/i,zoom:i});return}let n=Q.current;if(!n)return;let r=e.clientX-n.startClient.x,i=e.clientY-n.startClient.y;!n.moved&&Math.hypot(r,i)<=ae||(n.moved||e.currentTarget.setPointerCapture?.(e.pointerId),n.moved=!0,q.current=!0,K({x:n.startView.x-r/n.startView.zoom,y:n.startView.y-i/n.startView.zoom,zoom:n.startView.zoom}))},[K]),Ve=c(e=>{Z.current.delete(e.pointerId),Z.current.size<2&&($.current=null),Q.current=null},[]);l(()=>{let e=P.current;if(!e||!O)return;let t=t=>{t.preventDefault();let n=e.getBoundingClientRect();X(t.deltaY<0?1.1:1/1.1,{x:t.clientX-n.left,y:t.clientY-n.top})};return e.addEventListener(`wheel`,t,{passive:!1}),()=>e.removeEventListener(`wheel`,t)},[O,X]),te(ce,()=>({fitToContent:Y,getView:()=>G.current,setView:K,zoomBy:e=>X(e),select:U,getFloorId:()=>R?.id??null,setFloorId:z,getSvgElement:()=>F.current}),[Y,K,X,U,R?.id,z]);let He=u(()=>V?[{type:`room`,id:V}]:[],[V]),Ue=u(()=>H?{type:`room`,id:H}:null,[H]),We=!R||Object.keys(R.walls).length===0;return h(`div`,{...Ee,className:p(s.roomViewer,we,j?.root),style:{...Te,...M?.root},"aria-label":N??`Floor plan`,children:[pe&&I.length>1&&m(`div`,{className:p(s.roomViewerFloorBar,j?.floorBar),style:M?.floorBar,role:`tablist`,"aria-label":k?.floors??`Floors`,children:[...I].reverse().map(e=>m(`button`,{type:`button`,role:`tab`,className:p(s.roomViewerFloorTab,e.id===R?.id&&s.roomViewerFloorTabActive,j?.floorTab),style:M?.floorTab,"aria-selected":e.id===R?.id,onClick:()=>z(e.id),children:e.label},e.id))}),h(`div`,{ref:P,className:p(s.roomViewerCanvasWrapper,O&&s.roomViewerCanvasWrapperPannable,j?.canvasWrapper),style:{height:Se,...M?.canvasWrapper},onPointerDown:ze,onPointerMove:Be,onPointerUp:Ve,onPointerCancel:Ve,children:[We?m(`div`,{className:p(s.roomViewerEmpty,j?.empty),style:M?.empty,children:Ce??k?.empty??`Nothing to show`}):m(o,{ref:F,floor:R,rooms:B,view:W,size:J,selection:He,hovered:Ue,interactiveRooms:D,showGrid:he,showRoomLabels:ge,showOpeningSymbols:_e,getRoomColor:ve,renderRoomLabel:ye,getRoomLabel:be,formatArea:xe,onRoomActivate:D?e=>U(e):void 0,onBackgroundActivate:D?()=>U(null):void 0,onHoverChange:D?e=>Pe(e?.type===`room`?e.id:null):void 0,classNames:{canvas:j?.canvas,grid:j?.grid,rooms:j?.rooms,roomFill:j?.roomFill,roomLabel:j?.roomLabel,walls:j?.walls,wallBody:j?.wallBody,openings:j?.openings,opening:j?.opening},styles:{canvas:M?.canvas,grid:M?.grid,rooms:M?.rooms,roomFill:M?.roomFill,roomLabel:M?.roomLabel,walls:M?.walls,wallBody:M?.wallBody,openings:M?.openings,opening:M?.opening},"aria-label":N??`Floor plan`}),me&&!We&&h(`div`,{className:p(s.roomViewerViewControls,j?.viewControls),style:M?.viewControls,children:[m(`button`,{type:`button`,className:p(s.roomViewerViewButton,j?.viewButton),style:M?.viewButton,title:k?.zoomOut??`Zoom out`,"aria-label":k?.zoomOut??`Zoom out`,onClick:()=>X(1/1.2),children:t(A?.zoomOut??re)}),m(`button`,{type:`button`,className:p(s.roomViewerViewButton,j?.viewButton),style:M?.viewButton,title:k?.fit??`Fit to view`,"aria-label":k?.fit??`Fit to view`,onClick:()=>{q.current=!1,Y()},children:t(A?.fit??ne)}),m(`button`,{type:`button`,className:p(s.roomViewerViewButton,j?.viewButton),style:M?.viewButton,title:k?.zoomIn??`Zoom in`,"aria-label":k?.zoomIn??`Zoom in`,onClick:()=>X(1.2),children:t(A?.zoomIn??ie)})]})]}),m(`div`,{id:De,className:s.roomViewerLive,role:`status`,"aria-live":`polite`,children:Fe})]})}export{se as default};
|
|
2
2
|
//# sourceMappingURL=roomViewer.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roomViewer.mjs","names":[],"sources":["../../../../package/common/roomViewer/roomViewer.tsx"],"sourcesContent":["import { forwardRef, useCallback, useEffect, useImperativeHandle, useId, useMemo, useRef, useState } from 'react';\nimport type { PointerEvent as ReactPointerEvent } from 'react';\nimport cx from 'classnames';\nimport { faExpand, faMagnifyingGlassMinus, faMagnifyingGlassPlus } from '@fortawesome/free-solid-svg-icons';\n\nimport { useComponentDefaults } from '../configProvider';\nimport {\n clientToWorld,\n derivePlan,\n floorBounds,\n getFloor,\n type PlanFloor,\n type PlanSelection,\n type PlanView,\n} from '../floorPlan';\nimport PlanCanvas from '../planCanvas';\nimport { renderIcon } from '../utils/renderIcon';\nimport type { RoomViewerHandle, RoomViewerProps } from './roomViewer.types';\nimport styles from './roomViewer.module.pcss';\n\nconst MIN_ZOOM = 0.002;\nconst MAX_ZOOM = 4;\n/** Past this many pixels a press is a pan rather than a click on a room. */\nconst PAN_THRESHOLD_PX = 4;\n\nfunction formatAreaDefault(areaMm2: number): string {\n const m2 = areaMm2 / 1e6;\n return `${m2 < 10 ? m2.toFixed(1) : Math.round(m2)} m²`;\n}\n\n/**\n * Read-only view of a floor plan.\n *\n * It renders the same `planCanvas` the drawer does, from the same `FloorPlan`, so the\n * two cannot drift apart. Selection and hover are React state rather than classes pushed\n * onto DOM nodes, which is what lets them be controlled from outside.\n */\nconst RoomViewer = forwardRef<RoomViewerHandle, RoomViewerProps>(function RoomViewer(props, ref) {\n const {\n plan,\n activeFloorId,\n defaultActiveFloorId,\n onFloorChange,\n selectedRoomId,\n defaultSelectedRoomId = null,\n onSelect,\n hoveredRoomId,\n onHoverChange,\n view,\n defaultView,\n onViewChange,\n interactive = true,\n pannable = true,\n fitOnMount = true,\n showFloorBar = true,\n showViewControls = true,\n showGrid = false,\n showRoomLabels = true,\n showOpeningSymbols = true,\n getRoomColor,\n renderRoomLabel,\n getRoomLabel,\n formatArea = formatAreaDefault,\n height = 360,\n emptyState,\n labels,\n icons,\n className,\n style,\n classNames,\n styles: slotStyles,\n 'aria-label': ariaLabel,\n ...rest\n } = useComponentDefaults('RoomViewer', props);\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n const svgRef = useRef<SVGSVGElement>(null);\n const liveId = useId().replace(/:/g, '');\n\n const floors = plan?.floors ?? [];\n\n // ─── Floor ────────────────────────────────────────────────────────────────────\n\n const [floorIdState, setFloorIdState] = useState<string | undefined>(defaultActiveFloorId);\n const currentFloorId = activeFloorId ?? floorIdState ?? floors[0]?.id;\n const floor: PlanFloor | null = useMemo(\n () => (plan ? (getFloor(plan, currentFloorId) ?? getFloor(plan)) : null),\n [plan, currentFloorId],\n );\n\n const selectFloor = useCallback(\n (nextId: string) => {\n if (activeFloorId === undefined) setFloorIdState(nextId);\n onFloorChange?.(nextId);\n },\n [activeFloorId, onFloorChange],\n );\n\n const rooms = useMemo(() => (floor ? derivePlan(floor).rooms : []), [floor]);\n\n // ─── Selection and hover ──────────────────────────────────────────────────────\n\n const [selectedState, setSelectedState] = useState<string | null>(defaultSelectedRoomId);\n const selected = selectedRoomId !== undefined ? selectedRoomId : selectedState;\n\n const [hoveredState, setHoveredState] = useState<string | null>(null);\n const hovered = hoveredRoomId !== undefined ? hoveredRoomId : hoveredState;\n\n const selectRoom = useCallback(\n (roomId: string | null) => {\n if (selectedRoomId === undefined) setSelectedState(roomId);\n const room = roomId ? (rooms.find((r) => r.roomId === roomId) ?? null) : null;\n onSelect?.(roomId, room, floor?.id ?? '');\n },\n [selectedRoomId, rooms, onSelect, floor?.id],\n );\n\n const setHovered = useCallback(\n (roomId: string | null) => {\n if (hoveredRoomId === undefined) setHoveredState(roomId);\n onHoverChange?.(roomId);\n },\n [hoveredRoomId, onHoverChange],\n );\n\n // A selection made by clicking a shape is silent to a screen reader, so it is\n // announced separately rather than relying on focus landing somewhere useful.\n const announcement = (() => {\n const room = selected ? rooms.find((r) => r.roomId === selected) : undefined;\n if (!room) return labels?.noRoomSelected ?? 'No room selected';\n const name = room.meta?.name || 'Unnamed room';\n return (labels?.selectedRoom ?? '{name} selected, {area}')\n .replace('{name}', name)\n .replace('{area}', formatArea(room.area));\n })();\n\n // ─── View ─────────────────────────────────────────────────────────────────────\n\n const [viewState, setViewState] = useState<PlanView>(defaultView ?? { x: 0, y: 0, zoom: 0.05 });\n const currentView = view ?? viewState;\n const viewRef = useRef(currentView);\n viewRef.current = currentView;\n\n const applyView = useCallback(\n (next: PlanView) => {\n if (view === undefined) setViewState(next);\n onViewChange?.(next);\n },\n [view, onViewChange],\n );\n\n const userMovedRef = useRef(false);\n const [size, setSize] = useState({ width: 800, height: 360 });\n useEffect(() => {\n const element = wrapperRef.current;\n if (!element) return;\n const measure = () => {\n const rect = element.getBoundingClientRect();\n if (rect.width > 0 && rect.height > 0) {\n setSize({ width: Math.round(rect.width), height: Math.round(rect.height) });\n }\n };\n const observer = new ResizeObserver(measure);\n observer.observe(element);\n measure();\n return () => observer.disconnect();\n }, []);\n\n const fitToContent = useCallback(\n (options: { padding?: number } = {}) => {\n const padding = options.padding ?? 24;\n const bounds = floor ? floorBounds(floor) : null;\n if (!bounds || bounds.width <= 0 || bounds.height <= 0) {\n applyView({ x: -1000, y: -1000, zoom: 0.05 });\n return;\n }\n const zoom = Math.max(\n MIN_ZOOM,\n Math.min(\n MAX_ZOOM,\n Math.min((size.width - padding * 2) / bounds.width, (size.height - padding * 2) / bounds.height),\n ),\n );\n applyView({\n x: bounds.minX - (size.width / zoom - bounds.width) / 2,\n y: bounds.minY - (size.height / zoom - bounds.height) / 2,\n zoom,\n });\n },\n [floor, size.width, size.height, applyView],\n );\n\n /**\n * Refit on anything that changes what \"fitted\" means — the floor, and the canvas size,\n * which is not known until the element has been measured. The moment the viewer pans or\n * zooms, the view is theirs and we stop touching it.\n */\n useEffect(() => {\n if (!fitOnMount || userMovedRef.current) return;\n if (!floor || size.width <= 0 || Object.keys(floor.nodes).length === 0) return;\n fitToContent();\n }, [fitOnMount, floor, size.width, size.height, fitToContent]);\n\n const zoomBy = useCallback(\n (factor: number, centre?: { x: number; y: number }) => {\n userMovedRef.current = true;\n const v = viewRef.current;\n const next = Math.max(MIN_ZOOM, Math.min(MAX_ZOOM, v.zoom * factor));\n if (next === v.zoom) return;\n const cx0 = centre?.x ?? size.width / 2;\n const cy0 = centre?.y ?? size.height / 2;\n // Keep the world point under the cursor where it is.\n applyView({\n x: v.x + cx0 / v.zoom - cx0 / next,\n y: v.y + cy0 / v.zoom - cy0 / next,\n zoom: next,\n });\n },\n [applyView, size.width, size.height],\n );\n\n // ─── Pan and pinch ────────────────────────────────────────────────────────────\n\n const pointersRef = useRef(new Map<number, { x: number; y: number }>());\n const panRef = useRef<{ startClient: { x: number; y: number }; startView: PlanView; moved: boolean } | null>(null);\n const pinchRef = useRef<{ dist: number; view: PlanView; mid: { x: number; y: number } } | null>(null);\n\n const handlePointerDown = useCallback(\n (event: ReactPointerEvent<HTMLDivElement>) => {\n if (!pannable) return;\n pointersRef.current.set(event.pointerId, { x: event.clientX, y: event.clientY });\n // Deliberately NOT capturing the pointer yet. While a capture is active the click\n // is dispatched to the capturing element instead of the shape under the cursor, so\n // capturing here would mean a room could never be clicked. The capture is taken in\n // the move handler, once the press has actually turned into a pan.\n if (pointersRef.current.size === 2) {\n const [p1, p2] = [...pointersRef.current.values()];\n pinchRef.current = {\n dist: Math.hypot(p2.x - p1.x, p2.y - p1.y),\n view: viewRef.current,\n mid: { x: (p1.x + p2.x) / 2, y: (p1.y + p2.y) / 2 },\n };\n panRef.current = null;\n return;\n }\n panRef.current = {\n startClient: { x: event.clientX, y: event.clientY },\n startView: viewRef.current,\n moved: false,\n };\n },\n [pannable],\n );\n\n const handlePointerMove = useCallback(\n (event: ReactPointerEvent<HTMLDivElement>) => {\n if (pointersRef.current.has(event.pointerId)) {\n pointersRef.current.set(event.pointerId, { x: event.clientX, y: event.clientY });\n }\n\n const pinch = pinchRef.current;\n if (pinch && pointersRef.current.size >= 2) {\n const [p1, p2] = [...pointersRef.current.values()];\n const now = Math.hypot(p2.x - p1.x, p2.y - p1.y);\n if (pinch.dist <= 0) return;\n const zoom = Math.max(MIN_ZOOM, Math.min(MAX_ZOOM, pinch.view.zoom * (now / pinch.dist)));\n const rect = wrapperRef.current?.getBoundingClientRect() ?? { left: 0, top: 0 };\n const mid = { x: (p1.x + p2.x) / 2, y: (p1.y + p2.y) / 2 };\n userMovedRef.current = true;\n const worldMid = clientToWorld(pinch.mid.x, pinch.mid.y, rect, pinch.view);\n applyView({\n x: worldMid.x - (mid.x - rect.left) / zoom,\n y: worldMid.y - (mid.y - rect.top) / zoom,\n zoom,\n });\n return;\n }\n\n const pan = panRef.current;\n if (!pan) return;\n const dx = event.clientX - pan.startClient.x;\n const dy = event.clientY - pan.startClient.y;\n if (!pan.moved && Math.hypot(dx, dy) <= PAN_THRESHOLD_PX) return;\n if (!pan.moved) {\n (event.currentTarget as HTMLElement).setPointerCapture?.(event.pointerId);\n }\n pan.moved = true;\n userMovedRef.current = true;\n applyView({\n x: pan.startView.x - dx / pan.startView.zoom,\n y: pan.startView.y - dy / pan.startView.zoom,\n zoom: pan.startView.zoom,\n });\n },\n [applyView],\n );\n\n const handlePointerUp = useCallback((event: ReactPointerEvent<HTMLDivElement>) => {\n pointersRef.current.delete(event.pointerId);\n if (pointersRef.current.size < 2) pinchRef.current = null;\n panRef.current = null;\n }, []);\n\n // React's onWheel is passive, so it cannot preventDefault and the page scrolls instead.\n useEffect(() => {\n const element = wrapperRef.current;\n if (!element || !pannable) return;\n const onWheel = (event: WheelEvent) => {\n event.preventDefault();\n const rect = element.getBoundingClientRect();\n zoomBy(event.deltaY < 0 ? 1.1 : 1 / 1.1, {\n x: event.clientX - rect.left,\n y: event.clientY - rect.top,\n });\n };\n element.addEventListener('wheel', onWheel, { passive: false });\n return () => element.removeEventListener('wheel', onWheel);\n }, [pannable, zoomBy]);\n\n // ─── Handle ───────────────────────────────────────────────────────────────────\n\n useImperativeHandle(\n ref,\n () => ({\n fitToContent,\n getView: () => viewRef.current,\n setView: applyView,\n zoomBy: (factor: number) => zoomBy(factor),\n select: selectRoom,\n getFloorId: () => floor?.id ?? null,\n setFloorId: selectFloor,\n getSvgElement: () => svgRef.current,\n }),\n [fitToContent, applyView, zoomBy, selectRoom, floor?.id, selectFloor],\n );\n\n // ─── Render ───────────────────────────────────────────────────────────────────\n\n const selection: readonly PlanSelection[] = useMemo(\n () => (selected ? [{ type: 'room', id: selected } as PlanSelection] : []),\n [selected],\n );\n const hoveredSelection: PlanSelection | null = useMemo(\n () => (hovered ? { type: 'room', id: hovered } : null),\n [hovered],\n );\n\n const isEmpty = !floor || Object.keys(floor.walls).length === 0;\n\n return (\n <div\n {...rest}\n className={cx(styles.roomViewer, className, classNames?.root)}\n style={{ ...style, ...slotStyles?.root }}\n aria-label={ariaLabel ?? 'Floor plan'}\n >\n {showFloorBar && floors.length > 1 && (\n <div\n className={cx(styles.roomViewerFloorBar, classNames?.floorBar)}\n style={slotStyles?.floorBar}\n role='tablist'\n aria-label={labels?.floors ?? 'Floors'}\n >\n {/* Top storey first, the way a building reads in section. */}\n {[...floors].reverse().map((f) => (\n <button\n key={f.id}\n type='button'\n role='tab'\n className={cx(\n styles.roomViewerFloorTab,\n f.id === floor?.id && styles.roomViewerFloorTabActive,\n classNames?.floorTab,\n )}\n style={slotStyles?.floorTab}\n aria-selected={f.id === floor?.id}\n onClick={() => selectFloor(f.id)}\n >\n {f.label}\n </button>\n ))}\n </div>\n )}\n\n <div\n ref={wrapperRef}\n className={cx(\n styles.roomViewerCanvasWrapper,\n pannable && styles.roomViewerCanvasWrapperPannable,\n classNames?.canvasWrapper,\n )}\n style={{ height, ...slotStyles?.canvasWrapper }}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n onPointerCancel={handlePointerUp}\n >\n {isEmpty ? (\n <div className={cx(styles.roomViewerEmpty, classNames?.empty)} style={slotStyles?.empty}>\n {emptyState ?? labels?.empty ?? 'Nothing to show'}\n </div>\n ) : (\n <PlanCanvas\n ref={svgRef}\n floor={floor}\n rooms={rooms}\n view={currentView}\n size={size}\n selection={selection}\n hovered={hoveredSelection}\n interactiveRooms={interactive}\n showGrid={showGrid}\n showRoomLabels={showRoomLabels}\n showOpeningSymbols={showOpeningSymbols}\n getRoomColor={getRoomColor}\n renderRoomLabel={renderRoomLabel}\n getRoomLabel={getRoomLabel}\n formatArea={formatArea}\n onRoomActivate={interactive ? (roomId) => selectRoom(roomId) : undefined}\n onBackgroundActivate={interactive ? () => selectRoom(null) : undefined}\n onHoverChange={interactive ? (target) => setHovered(target?.type === 'room' ? target.id : null) : undefined}\n classNames={{\n canvas: classNames?.canvas,\n grid: classNames?.grid,\n rooms: classNames?.rooms,\n roomFill: classNames?.roomFill,\n roomLabel: classNames?.roomLabel,\n walls: classNames?.walls,\n wallBody: classNames?.wallBody,\n openings: classNames?.openings,\n opening: classNames?.opening,\n }}\n styles={{\n canvas: slotStyles?.canvas,\n grid: slotStyles?.grid,\n rooms: slotStyles?.rooms,\n roomFill: slotStyles?.roomFill,\n roomLabel: slotStyles?.roomLabel,\n walls: slotStyles?.walls,\n wallBody: slotStyles?.wallBody,\n openings: slotStyles?.openings,\n opening: slotStyles?.opening,\n }}\n aria-label={ariaLabel ?? 'Floor plan'}\n />\n )}\n\n {showViewControls && !isEmpty && (\n <div className={cx(styles.roomViewerViewControls, classNames?.viewControls)} style={slotStyles?.viewControls}>\n <button\n type='button'\n className={cx(styles.roomViewerViewButton, classNames?.viewButton)}\n style={slotStyles?.viewButton}\n title={labels?.zoomOut ?? 'Zoom out'}\n aria-label={labels?.zoomOut ?? 'Zoom out'}\n onClick={() => zoomBy(1 / 1.2)}\n >\n {renderIcon(icons?.zoomOut ?? faMagnifyingGlassMinus)}\n </button>\n <button\n type='button'\n className={cx(styles.roomViewerViewButton, classNames?.viewButton)}\n style={slotStyles?.viewButton}\n title={labels?.fit ?? 'Fit to view'}\n aria-label={labels?.fit ?? 'Fit to view'}\n onClick={() => {\n userMovedRef.current = false;\n fitToContent();\n }}\n >\n {renderIcon(icons?.fit ?? faExpand)}\n </button>\n <button\n type='button'\n className={cx(styles.roomViewerViewButton, classNames?.viewButton)}\n style={slotStyles?.viewButton}\n title={labels?.zoomIn ?? 'Zoom in'}\n aria-label={labels?.zoomIn ?? 'Zoom in'}\n onClick={() => zoomBy(1.2)}\n >\n {renderIcon(icons?.zoomIn ?? faMagnifyingGlassPlus)}\n </button>\n </div>\n )}\n </div>\n\n <div id={liveId} className={styles.roomViewerLive} role='status' aria-live='polite'>\n {announcement}\n </div>\n </div>\n );\n});\n\nexport default RoomViewer;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"roomViewer.mjs","names":[],"sources":["../../../../package/common/roomViewer/roomViewer.tsx"],"sourcesContent":["import { useCallback, useEffect, useImperativeHandle, useId, useMemo, useRef, useState } from 'react';\nimport type { PointerEvent as ReactPointerEvent } from 'react';\nimport cx from 'classnames';\nimport { faExpand, faMagnifyingGlassMinus, faMagnifyingGlassPlus } from '@fortawesome/free-solid-svg-icons';\n\nimport { useComponentDefaults } from '../configProvider';\nimport {\n clientToWorld,\n derivePlan,\n floorBounds,\n getFloor,\n type PlanFloor,\n type PlanSelection,\n type PlanView,\n} from '../floorPlan';\nimport PlanCanvas from '../planCanvas';\nimport { renderIcon } from '../utils/renderIcon';\nimport type { RoomViewerProps } from './roomViewer.types';\nimport styles from './roomViewer.module.pcss';\n\nconst MIN_ZOOM = 0.002;\nconst MAX_ZOOM = 4;\n/** Past this many pixels a press is a pan rather than a click on a room. */\nconst PAN_THRESHOLD_PX = 4;\n\nfunction formatAreaDefault(areaMm2: number): string {\n const m2 = areaMm2 / 1e6;\n return `${m2 < 10 ? m2.toFixed(1) : Math.round(m2)} m²`;\n}\n\n/**\n * Read-only view of a floor plan.\n *\n * It renders the same `planCanvas` the drawer does, from the same `FloorPlan`, so the\n * two cannot drift apart. Selection and hover are React state rather than classes pushed\n * onto DOM nodes, which is what lets them be controlled from outside.\n */\nfunction RoomViewer(props: RoomViewerProps) {\n const {\n ref,\n plan,\n activeFloorId,\n defaultActiveFloorId,\n onFloorChange,\n selectedRoomId,\n defaultSelectedRoomId = null,\n onSelect,\n hoveredRoomId,\n onHoverChange,\n view,\n defaultView,\n onViewChange,\n interactive = true,\n pannable = true,\n fitOnMount = true,\n showFloorBar = true,\n showViewControls = true,\n showGrid = false,\n showRoomLabels = true,\n showOpeningSymbols = true,\n getRoomColor,\n renderRoomLabel,\n getRoomLabel,\n formatArea = formatAreaDefault,\n height = 360,\n emptyState,\n labels,\n icons,\n className,\n style,\n classNames,\n styles: slotStyles,\n 'aria-label': ariaLabel,\n ...rest\n } = useComponentDefaults('RoomViewer', props);\n\n const wrapperRef = useRef<HTMLDivElement>(null);\n const svgRef = useRef<SVGSVGElement>(null);\n const liveId = useId().replace(/:/g, '');\n\n const floors = plan?.floors ?? [];\n\n // ─── Floor ────────────────────────────────────────────────────────────────────\n\n const [floorIdState, setFloorIdState] = useState<string | undefined>(defaultActiveFloorId);\n const currentFloorId = activeFloorId ?? floorIdState ?? floors[0]?.id;\n const floor: PlanFloor | null = useMemo(\n () => (plan ? (getFloor(plan, currentFloorId) ?? getFloor(plan)) : null),\n [plan, currentFloorId],\n );\n\n const selectFloor = useCallback(\n (nextId: string) => {\n if (activeFloorId === undefined) setFloorIdState(nextId);\n onFloorChange?.(nextId);\n },\n [activeFloorId, onFloorChange],\n );\n\n const rooms = useMemo(() => (floor ? derivePlan(floor).rooms : []), [floor]);\n\n // ─── Selection and hover ──────────────────────────────────────────────────────\n\n const [selectedState, setSelectedState] = useState<string | null>(defaultSelectedRoomId);\n const selected = selectedRoomId !== undefined ? selectedRoomId : selectedState;\n\n const [hoveredState, setHoveredState] = useState<string | null>(null);\n const hovered = hoveredRoomId !== undefined ? hoveredRoomId : hoveredState;\n\n const selectRoom = useCallback(\n (roomId: string | null) => {\n if (selectedRoomId === undefined) setSelectedState(roomId);\n const room = roomId ? (rooms.find((r) => r.roomId === roomId) ?? null) : null;\n onSelect?.(roomId, room, floor?.id ?? '');\n },\n [selectedRoomId, rooms, onSelect, floor?.id],\n );\n\n const setHovered = useCallback(\n (roomId: string | null) => {\n if (hoveredRoomId === undefined) setHoveredState(roomId);\n onHoverChange?.(roomId);\n },\n [hoveredRoomId, onHoverChange],\n );\n\n // A selection made by clicking a shape is silent to a screen reader, so it is\n // announced separately rather than relying on focus landing somewhere useful.\n const announcement = (() => {\n const room = selected ? rooms.find((r) => r.roomId === selected) : undefined;\n if (!room) return labels?.noRoomSelected ?? 'No room selected';\n const name = room.meta?.name || 'Unnamed room';\n return (labels?.selectedRoom ?? '{name} selected, {area}')\n .replace('{name}', name)\n .replace('{area}', formatArea(room.area));\n })();\n\n // ─── View ─────────────────────────────────────────────────────────────────────\n\n const [viewState, setViewState] = useState<PlanView>(defaultView ?? { x: 0, y: 0, zoom: 0.05 });\n const currentView = view ?? viewState;\n const viewRef = useRef(currentView);\n viewRef.current = currentView;\n\n const applyView = useCallback(\n (next: PlanView) => {\n if (view === undefined) setViewState(next);\n onViewChange?.(next);\n },\n [view, onViewChange],\n );\n\n const userMovedRef = useRef(false);\n const [size, setSize] = useState({ width: 800, height: 360 });\n useEffect(() => {\n const element = wrapperRef.current;\n if (!element) return;\n const measure = () => {\n const rect = element.getBoundingClientRect();\n if (rect.width > 0 && rect.height > 0) {\n setSize({ width: Math.round(rect.width), height: Math.round(rect.height) });\n }\n };\n const observer = new ResizeObserver(measure);\n observer.observe(element);\n measure();\n return () => observer.disconnect();\n }, []);\n\n const fitToContent = useCallback(\n (options: { padding?: number } = {}) => {\n const padding = options.padding ?? 24;\n const bounds = floor ? floorBounds(floor) : null;\n if (!bounds || bounds.width <= 0 || bounds.height <= 0) {\n applyView({ x: -1000, y: -1000, zoom: 0.05 });\n return;\n }\n const zoom = Math.max(\n MIN_ZOOM,\n Math.min(\n MAX_ZOOM,\n Math.min((size.width - padding * 2) / bounds.width, (size.height - padding * 2) / bounds.height),\n ),\n );\n applyView({\n x: bounds.minX - (size.width / zoom - bounds.width) / 2,\n y: bounds.minY - (size.height / zoom - bounds.height) / 2,\n zoom,\n });\n },\n [floor, size.width, size.height, applyView],\n );\n\n /**\n * Refit on anything that changes what \"fitted\" means — the floor, and the canvas size,\n * which is not known until the element has been measured. The moment the viewer pans or\n * zooms, the view is theirs and we stop touching it.\n */\n useEffect(() => {\n if (!fitOnMount || userMovedRef.current) return;\n if (!floor || size.width <= 0 || Object.keys(floor.nodes).length === 0) return;\n fitToContent();\n }, [fitOnMount, floor, size.width, size.height, fitToContent]);\n\n const zoomBy = useCallback(\n (factor: number, centre?: { x: number; y: number }) => {\n userMovedRef.current = true;\n const v = viewRef.current;\n const next = Math.max(MIN_ZOOM, Math.min(MAX_ZOOM, v.zoom * factor));\n if (next === v.zoom) return;\n const cx0 = centre?.x ?? size.width / 2;\n const cy0 = centre?.y ?? size.height / 2;\n // Keep the world point under the cursor where it is.\n applyView({\n x: v.x + cx0 / v.zoom - cx0 / next,\n y: v.y + cy0 / v.zoom - cy0 / next,\n zoom: next,\n });\n },\n [applyView, size.width, size.height],\n );\n\n // ─── Pan and pinch ────────────────────────────────────────────────────────────\n\n const pointersRef = useRef(new Map<number, { x: number; y: number }>());\n const panRef = useRef<{ startClient: { x: number; y: number }; startView: PlanView; moved: boolean } | null>(null);\n const pinchRef = useRef<{ dist: number; view: PlanView; mid: { x: number; y: number } } | null>(null);\n\n const handlePointerDown = useCallback(\n (event: ReactPointerEvent<HTMLDivElement>) => {\n if (!pannable) return;\n pointersRef.current.set(event.pointerId, { x: event.clientX, y: event.clientY });\n // Deliberately NOT capturing the pointer yet. While a capture is active the click\n // is dispatched to the capturing element instead of the shape under the cursor, so\n // capturing here would mean a room could never be clicked. The capture is taken in\n // the move handler, once the press has actually turned into a pan.\n if (pointersRef.current.size === 2) {\n const [p1, p2] = [...pointersRef.current.values()];\n pinchRef.current = {\n dist: Math.hypot(p2.x - p1.x, p2.y - p1.y),\n view: viewRef.current,\n mid: { x: (p1.x + p2.x) / 2, y: (p1.y + p2.y) / 2 },\n };\n panRef.current = null;\n return;\n }\n panRef.current = {\n startClient: { x: event.clientX, y: event.clientY },\n startView: viewRef.current,\n moved: false,\n };\n },\n [pannable],\n );\n\n const handlePointerMove = useCallback(\n (event: ReactPointerEvent<HTMLDivElement>) => {\n if (pointersRef.current.has(event.pointerId)) {\n pointersRef.current.set(event.pointerId, { x: event.clientX, y: event.clientY });\n }\n\n const pinch = pinchRef.current;\n if (pinch && pointersRef.current.size >= 2) {\n const [p1, p2] = [...pointersRef.current.values()];\n const now = Math.hypot(p2.x - p1.x, p2.y - p1.y);\n if (pinch.dist <= 0) return;\n const zoom = Math.max(MIN_ZOOM, Math.min(MAX_ZOOM, pinch.view.zoom * (now / pinch.dist)));\n const rect = wrapperRef.current?.getBoundingClientRect() ?? { left: 0, top: 0 };\n const mid = { x: (p1.x + p2.x) / 2, y: (p1.y + p2.y) / 2 };\n userMovedRef.current = true;\n const worldMid = clientToWorld(pinch.mid.x, pinch.mid.y, rect, pinch.view);\n applyView({\n x: worldMid.x - (mid.x - rect.left) / zoom,\n y: worldMid.y - (mid.y - rect.top) / zoom,\n zoom,\n });\n return;\n }\n\n const pan = panRef.current;\n if (!pan) return;\n const dx = event.clientX - pan.startClient.x;\n const dy = event.clientY - pan.startClient.y;\n if (!pan.moved && Math.hypot(dx, dy) <= PAN_THRESHOLD_PX) return;\n if (!pan.moved) {\n (event.currentTarget as HTMLElement).setPointerCapture?.(event.pointerId);\n }\n pan.moved = true;\n userMovedRef.current = true;\n applyView({\n x: pan.startView.x - dx / pan.startView.zoom,\n y: pan.startView.y - dy / pan.startView.zoom,\n zoom: pan.startView.zoom,\n });\n },\n [applyView],\n );\n\n const handlePointerUp = useCallback((event: ReactPointerEvent<HTMLDivElement>) => {\n pointersRef.current.delete(event.pointerId);\n if (pointersRef.current.size < 2) pinchRef.current = null;\n panRef.current = null;\n }, []);\n\n // React's onWheel is passive, so it cannot preventDefault and the page scrolls instead.\n useEffect(() => {\n const element = wrapperRef.current;\n if (!element || !pannable) return;\n const onWheel = (event: WheelEvent) => {\n event.preventDefault();\n const rect = element.getBoundingClientRect();\n zoomBy(event.deltaY < 0 ? 1.1 : 1 / 1.1, {\n x: event.clientX - rect.left,\n y: event.clientY - rect.top,\n });\n };\n element.addEventListener('wheel', onWheel, { passive: false });\n return () => element.removeEventListener('wheel', onWheel);\n }, [pannable, zoomBy]);\n\n // ─── Handle ───────────────────────────────────────────────────────────────────\n\n useImperativeHandle(\n ref,\n () => ({\n fitToContent,\n getView: () => viewRef.current,\n setView: applyView,\n zoomBy: (factor: number) => zoomBy(factor),\n select: selectRoom,\n getFloorId: () => floor?.id ?? null,\n setFloorId: selectFloor,\n getSvgElement: () => svgRef.current,\n }),\n [fitToContent, applyView, zoomBy, selectRoom, floor?.id, selectFloor],\n );\n\n // ─── Render ───────────────────────────────────────────────────────────────────\n\n const selection: readonly PlanSelection[] = useMemo(\n () => (selected ? [{ type: 'room', id: selected } as PlanSelection] : []),\n [selected],\n );\n const hoveredSelection: PlanSelection | null = useMemo(\n () => (hovered ? { type: 'room', id: hovered } : null),\n [hovered],\n );\n\n const isEmpty = !floor || Object.keys(floor.walls).length === 0;\n\n return (\n <div\n {...rest}\n className={cx(styles.roomViewer, className, classNames?.root)}\n style={{ ...style, ...slotStyles?.root }}\n aria-label={ariaLabel ?? 'Floor plan'}\n >\n {showFloorBar && floors.length > 1 && (\n <div\n className={cx(styles.roomViewerFloorBar, classNames?.floorBar)}\n style={slotStyles?.floorBar}\n role='tablist'\n aria-label={labels?.floors ?? 'Floors'}\n >\n {/* Top storey first, the way a building reads in section. */}\n {[...floors].reverse().map((f) => (\n <button\n key={f.id}\n type='button'\n role='tab'\n className={cx(\n styles.roomViewerFloorTab,\n f.id === floor?.id && styles.roomViewerFloorTabActive,\n classNames?.floorTab,\n )}\n style={slotStyles?.floorTab}\n aria-selected={f.id === floor?.id}\n onClick={() => selectFloor(f.id)}\n >\n {f.label}\n </button>\n ))}\n </div>\n )}\n\n <div\n ref={wrapperRef}\n className={cx(\n styles.roomViewerCanvasWrapper,\n pannable && styles.roomViewerCanvasWrapperPannable,\n classNames?.canvasWrapper,\n )}\n style={{ height, ...slotStyles?.canvasWrapper }}\n onPointerDown={handlePointerDown}\n onPointerMove={handlePointerMove}\n onPointerUp={handlePointerUp}\n onPointerCancel={handlePointerUp}\n >\n {isEmpty ? (\n <div className={cx(styles.roomViewerEmpty, classNames?.empty)} style={slotStyles?.empty}>\n {emptyState ?? labels?.empty ?? 'Nothing to show'}\n </div>\n ) : (\n <PlanCanvas\n ref={svgRef}\n floor={floor}\n rooms={rooms}\n view={currentView}\n size={size}\n selection={selection}\n hovered={hoveredSelection}\n interactiveRooms={interactive}\n showGrid={showGrid}\n showRoomLabels={showRoomLabels}\n showOpeningSymbols={showOpeningSymbols}\n getRoomColor={getRoomColor}\n renderRoomLabel={renderRoomLabel}\n getRoomLabel={getRoomLabel}\n formatArea={formatArea}\n onRoomActivate={interactive ? (roomId) => selectRoom(roomId) : undefined}\n onBackgroundActivate={interactive ? () => selectRoom(null) : undefined}\n onHoverChange={interactive ? (target) => setHovered(target?.type === 'room' ? target.id : null) : undefined}\n classNames={{\n canvas: classNames?.canvas,\n grid: classNames?.grid,\n rooms: classNames?.rooms,\n roomFill: classNames?.roomFill,\n roomLabel: classNames?.roomLabel,\n walls: classNames?.walls,\n wallBody: classNames?.wallBody,\n openings: classNames?.openings,\n opening: classNames?.opening,\n }}\n styles={{\n canvas: slotStyles?.canvas,\n grid: slotStyles?.grid,\n rooms: slotStyles?.rooms,\n roomFill: slotStyles?.roomFill,\n roomLabel: slotStyles?.roomLabel,\n walls: slotStyles?.walls,\n wallBody: slotStyles?.wallBody,\n openings: slotStyles?.openings,\n opening: slotStyles?.opening,\n }}\n aria-label={ariaLabel ?? 'Floor plan'}\n />\n )}\n\n {showViewControls && !isEmpty && (\n <div className={cx(styles.roomViewerViewControls, classNames?.viewControls)} style={slotStyles?.viewControls}>\n <button\n type='button'\n className={cx(styles.roomViewerViewButton, classNames?.viewButton)}\n style={slotStyles?.viewButton}\n title={labels?.zoomOut ?? 'Zoom out'}\n aria-label={labels?.zoomOut ?? 'Zoom out'}\n onClick={() => zoomBy(1 / 1.2)}\n >\n {renderIcon(icons?.zoomOut ?? faMagnifyingGlassMinus)}\n </button>\n <button\n type='button'\n className={cx(styles.roomViewerViewButton, classNames?.viewButton)}\n style={slotStyles?.viewButton}\n title={labels?.fit ?? 'Fit to view'}\n aria-label={labels?.fit ?? 'Fit to view'}\n onClick={() => {\n userMovedRef.current = false;\n fitToContent();\n }}\n >\n {renderIcon(icons?.fit ?? faExpand)}\n </button>\n <button\n type='button'\n className={cx(styles.roomViewerViewButton, classNames?.viewButton)}\n style={slotStyles?.viewButton}\n title={labels?.zoomIn ?? 'Zoom in'}\n aria-label={labels?.zoomIn ?? 'Zoom in'}\n onClick={() => zoomBy(1.2)}\n >\n {renderIcon(icons?.zoomIn ?? faMagnifyingGlassPlus)}\n </button>\n </div>\n )}\n </div>\n\n <div id={liveId} className={styles.roomViewerLive} role='status' aria-live='polite'>\n {announcement}\n </div>\n </div>\n );\n}\n\nexport default RoomViewer;\n"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=`roomViewer_JtBDo`,t=`roomViewer-floorBar_Svfsf`,n=`roomViewer-floorTab_eH3Nl`,r=`roomViewer-floorTab-active_3ZQv9`,i=`roomViewer-canvasWrapper_UopaD`,a=`roomViewer-canvasWrapper-pannable_-Knr7`,o=`roomViewer-viewControls_XNVTI`,s=`roomViewer-viewButton_Q-o9G`,c=`roomViewer-empty_LL-4L`,l=`roomViewer-live_WSwUx`,u={roomViewer:e,"roomViewer-floorBar":`roomViewer-floorBar_Svfsf`,roomViewerFloorBar:t,"roomViewer-floorTab":`roomViewer-floorTab_eH3Nl`,roomViewerFloorTab:n,"roomViewer-floorTab-active":`roomViewer-floorTab-active_3ZQv9`,roomViewerFloorTabActive:r,"roomViewer-canvasWrapper":`roomViewer-canvasWrapper_UopaD`,roomViewerCanvasWrapper:i,"roomViewer-canvasWrapper-pannable":`roomViewer-canvasWrapper-pannable_-Knr7`,roomViewerCanvasWrapperPannable:a,"roomViewer-viewControls":`roomViewer-viewControls_XNVTI`,roomViewerViewControls:o,"roomViewer-viewButton":`roomViewer-viewButton_Q-o9G`,roomViewerViewButton:s,"roomViewer-empty":`roomViewer-empty_LL-4L`,roomViewerEmpty:c,"roomViewer-live":`roomViewer-live_WSwUx`,roomViewerLive:l};export{u as default,e as roomViewer,i as roomViewerCanvasWrapper,a as roomViewerCanvasWrapperPannable,c as roomViewerEmpty,t as roomViewerFloorBar,n as roomViewerFloorTab,r as roomViewerFloorTabActive,l as roomViewerLive,s as roomViewerViewButton,o as roomViewerViewControls};
|
|
1
|
+
"use client";var e=`roomViewer_JtBDo`,t=`roomViewer-floorBar_Svfsf`,n=`roomViewer-floorTab_eH3Nl`,r=`roomViewer-floorTab-active_3ZQv9`,i=`roomViewer-canvasWrapper_UopaD`,a=`roomViewer-canvasWrapper-pannable_-Knr7`,o=`roomViewer-viewControls_XNVTI`,s=`roomViewer-viewButton_Q-o9G`,c=`roomViewer-empty_LL-4L`,l=`roomViewer-live_WSwUx`,u={roomViewer:e,"roomViewer-floorBar":`roomViewer-floorBar_Svfsf`,roomViewerFloorBar:t,"roomViewer-floorTab":`roomViewer-floorTab_eH3Nl`,roomViewerFloorTab:n,"roomViewer-floorTab-active":`roomViewer-floorTab-active_3ZQv9`,roomViewerFloorTabActive:r,"roomViewer-canvasWrapper":`roomViewer-canvasWrapper_UopaD`,roomViewerCanvasWrapper:i,"roomViewer-canvasWrapper-pannable":`roomViewer-canvasWrapper-pannable_-Knr7`,roomViewerCanvasWrapperPannable:a,"roomViewer-viewControls":`roomViewer-viewControls_XNVTI`,roomViewerViewControls:o,"roomViewer-viewButton":`roomViewer-viewButton_Q-o9G`,roomViewerViewButton:s,"roomViewer-empty":`roomViewer-empty_LL-4L`,roomViewerEmpty:c,"roomViewer-live":`roomViewer-live_WSwUx`,roomViewerLive:l};export{u as default,e as roomViewer,i as roomViewerCanvasWrapper,a as roomViewerCanvasWrapperPannable,c as roomViewerEmpty,t as roomViewerFloorBar,n as roomViewerFloorTab,r as roomViewerFloorTabActive,l as roomViewerLive,s as roomViewerViewButton,o as roomViewerViewControls};
|
|
2
2
|
//# sourceMappingURL=roomViewer.module.mjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"./scrollbarProvider.mjs";var t=e;export{t as default};
|
|
1
|
+
"use client";import e from"./scrollbarProvider.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/scrollbarProvider/index.ts"],"sourcesContent":["import ScrollbarProvider from './scrollbarProvider';\n\nexport default ScrollbarProvider;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../../package/common/scrollbarProvider/index.ts"],"sourcesContent":["import ScrollbarProvider from './scrollbarProvider';\n\nexport default ScrollbarProvider;\n"],"mappings":"oDAEA,IAAA,EAAe"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"./scrollbarProvider.module.mjs";import t from"classnames";import{jsx as n}from"react/jsx-runtime";function r({className:r=void 0,children:i=void 0}){return n(`div`,{className:t(e.scrollbarProvider,r),children:i})}export{r as default};
|
|
1
|
+
"use client";import e from"./scrollbarProvider.module.mjs";import t from"classnames";import{jsx as n}from"react/jsx-runtime";function r({className:r=void 0,children:i=void 0}){return n(`div`,{className:t(e.scrollbarProvider,r),children:i})}export{r as default};
|
|
2
2
|
//# sourceMappingURL=scrollbarProvider.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scrollbarProvider.mjs","names":[],"sources":["../../../../package/common/scrollbarProvider/scrollbarProvider.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\nimport cx from 'classnames';\n\nimport styles from './scrollbarProvider.module.pcss';\n\ninterface Properties {\n className?: string | undefined;\n children?: React.ReactNode | undefined;\n}\n\nfunction ScrollbarProvider({ className = undefined, children = undefined }: Properties): ReactElement {\n return <div className={cx(styles.scrollbarProvider, className)}>{children}</div>;\n}\n\nexport default ScrollbarProvider;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"scrollbarProvider.mjs","names":[],"sources":["../../../../package/common/scrollbarProvider/scrollbarProvider.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\nimport cx from 'classnames';\n\nimport styles from './scrollbarProvider.module.pcss';\n\ninterface Properties {\n className?: string | undefined;\n children?: React.ReactNode | undefined;\n}\n\nfunction ScrollbarProvider({ className = undefined, children = undefined }: Properties): ReactElement {\n return <div className={cx(styles.scrollbarProvider, className)}>{children}</div>;\n}\n\nexport default ScrollbarProvider;\n"],"mappings":"6HAUA,SAAS,EAAkB,CAAE,YAAY,IAAA,GAAW,WAAW,IAAA,IAAuC,CACpG,OAAO,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,kBAAmB,CAAS,EAAI,UAAc,CAAA,CACjF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=`scrollbarProvider_IMBFu`,t={scrollbarProvider:e};export{t as default,e as scrollbarProvider};
|
|
1
|
+
"use client";var e=`scrollbarProvider_IMBFu`,t={scrollbarProvider:e};export{t as default,e as scrollbarProvider};
|
|
2
2
|
//# sourceMappingURL=scrollbarProvider.module.mjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useLabels as e}from"../configProvider/useLabels.mjs";import{InputType as t}from"../input/input.types.mjs";import n from"../input/input.mjs";import r from"./searchInput.module.mjs";import{useEffect as i,useRef as a}from"react";import o from"classnames";import{jsx as s,jsxs as c}from"react/jsx-runtime";var l={results:e=>`${e} ${e===1?`result`:`results`}`};function u({value:u,onChange:d,onDebounce:f,placeholder:p,label:m,debounceMs:h=500,totalAmount:g,showAmount:_=!0,className:v,width:y,style:b,classNames:x,styles:S,labels:C,...
|
|
1
|
+
"use client";import{useLabels as e}from"../configProvider/useLabels.mjs";import{InputType as t}from"../input/input.types.mjs";import n from"../input/input.mjs";import r from"./searchInput.module.mjs";import{useEffect as i,useRef as a}from"react";import o from"classnames";import{jsx as s,jsxs as c}from"react/jsx-runtime";var l={results:e=>`${e} ${e===1?`result`:`results`}`};function u({value:u,onChange:d,onDebounce:f,placeholder:p,label:m,debounceMs:h=500,totalAmount:g,showAmount:_=!0,className:v,width:y,style:b,classNames:x,styles:S,labels:C,ref:w,...T}){let E=e(`SearchInput`,C,l),D=a(null);i(()=>()=>{D.current!==null&&clearTimeout(D.current)},[]);function O(e){let t=e==null?``:String(e),n=t.trim()===``?``:t;d(n),D.current!==null&&clearTimeout(D.current),D.current=setTimeout(()=>{f?.(n)},h)}let k=_&&typeof g==`number`&&!Number.isNaN(g);return c(`div`,{...T,className:o(v,x?.root),style:{...y==null?void 0:{width:y},...b,...S?.root},children:[s(n,{ref:w,autoComplete:`off`,className:x?.input,style:S?.input,type:t.Search,label:m,placeholder:p,value:u,onChange:O}),k&&s(`p`,{className:o(r.resultCount,x?.resultCount),style:S?.resultCount,children:E.results(g)})]})}export{u as default};
|
|
2
2
|
//# sourceMappingURL=searchInput.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"searchInput.mjs","names":[],"sources":["../../../../package/common/searchInput/searchInput.tsx"],"sourcesContent":["import { useEffect, useRef, type ReactElement } from 'react';\nimport cx from 'classnames';\nimport Input from 'components/common/input';\nimport { InputType } from 'components/common/input/input.types';\nimport styles from './searchInput.module.pcss';\nimport { useLabels } from '../configProvider';\nimport type { SearchInputLabels, SearchInputProps } from './searchInput.types';\n\nconst DEFAULT_LABELS: Required<SearchInputLabels> = {\n results: (count) => `${count} ${count === 1 ? 'result' : 'results'}`,\n};\n\nexport default function SearchInput({\n value,\n onChange,\n onDebounce,\n placeholder,\n label,\n debounceMs = 500,\n totalAmount,\n showAmount = true,\n className,\n width,\n style,\n classNames,\n styles: slotStyles,\n labels,\n ...rest\n}: SearchInputProps): ReactElement {\n const text = useLabels('SearchInput', labels, DEFAULT_LABELS);\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(\n () => () => {\n if (timerRef.current !== null) clearTimeout(timerRef.current);\n },\n [],\n );\n\n function handleChange(val: unknown) {\n const str = val != null ? String(val) : '';\n const trimmed = str.trim() === '' ? '' : str;\n onChange(trimmed);\n if (timerRef.current !== null) clearTimeout(timerRef.current);\n timerRef.current = setTimeout(() => {\n onDebounce?.(trimmed);\n }, debounceMs);\n }\n\n const showCount = showAmount && typeof totalAmount === 'number' && !Number.isNaN(totalAmount);\n\n return (\n <div\n {...rest}\n className={cx(className, classNames?.root)}\n style={{ ...(width != null ? { width } : undefined), ...style, ...slotStyles?.root }}\n >\n <Input\n autoComplete='off'\n className={classNames?.input}\n style={slotStyles?.input}\n type={InputType.Search}\n label={label}\n placeholder={placeholder}\n value={value}\n onChange={handleChange}\n />\n {showCount && (\n <p className={cx(styles.resultCount, classNames?.resultCount)} style={slotStyles?.resultCount}>\n {text.results(totalAmount)}\n </p>\n )}\n </div>\n );\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"searchInput.mjs","names":[],"sources":["../../../../package/common/searchInput/searchInput.tsx"],"sourcesContent":["import { useEffect, useRef, type ReactElement } from 'react';\nimport cx from 'classnames';\nimport Input from 'components/common/input';\nimport { InputType } from 'components/common/input/input.types';\nimport styles from './searchInput.module.pcss';\nimport { useLabels } from '../configProvider';\nimport type { SearchInputLabels, SearchInputProps } from './searchInput.types';\n\nconst DEFAULT_LABELS: Required<SearchInputLabels> = {\n results: (count) => `${count} ${count === 1 ? 'result' : 'results'}`,\n};\n\nexport default function SearchInput({\n value,\n onChange,\n onDebounce,\n placeholder,\n label,\n debounceMs = 500,\n totalAmount,\n showAmount = true,\n className,\n width,\n style,\n classNames,\n styles: slotStyles,\n labels,\n ref,\n ...rest\n}: SearchInputProps): ReactElement {\n const text = useLabels('SearchInput', labels, DEFAULT_LABELS);\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(\n () => () => {\n if (timerRef.current !== null) clearTimeout(timerRef.current);\n },\n [],\n );\n\n function handleChange(val: unknown) {\n const str = val != null ? String(val) : '';\n const trimmed = str.trim() === '' ? '' : str;\n onChange(trimmed);\n if (timerRef.current !== null) clearTimeout(timerRef.current);\n timerRef.current = setTimeout(() => {\n onDebounce?.(trimmed);\n }, debounceMs);\n }\n\n const showCount = showAmount && typeof totalAmount === 'number' && !Number.isNaN(totalAmount);\n\n return (\n <div\n {...rest}\n className={cx(className, classNames?.root)}\n style={{ ...(width != null ? { width } : undefined), ...style, ...slotStyles?.root }}\n >\n <Input\n ref={ref}\n autoComplete='off'\n className={classNames?.input}\n style={slotStyles?.input}\n type={InputType.Search}\n label={label}\n placeholder={placeholder}\n value={value}\n onChange={handleChange}\n />\n {showCount && (\n <p className={cx(styles.resultCount, classNames?.resultCount)} style={slotStyles?.resultCount}>\n {text.results(totalAmount)}\n </p>\n )}\n </div>\n );\n}\n"],"mappings":"kUAQA,IAAM,EAA8C,CAClD,QAAU,GAAU,GAAG,EAAM,GAAG,IAAU,EAAI,SAAW,WAC3D,EAEA,SAAwB,EAAY,CAClC,QACA,WACA,aACA,cACA,QACA,aAAa,IACb,cACA,aAAa,GACb,YACA,QACA,QACA,aACA,OAAQ,EACR,SACA,MACA,GAAG,GAC8B,CACjC,IAAM,EAAO,EAAU,cAAe,EAAQ,CAAc,EACtD,EAAW,EAA6C,IAAI,EAElE,UACc,CACN,EAAS,UAAY,MAAM,aAAa,EAAS,OAAO,CAC9D,EACA,CAAC,CACH,EAEA,SAAS,EAAa,EAAc,CAClC,IAAM,EAAM,GAAO,KAAqB,GAAd,OAAO,CAAG,EAC9B,EAAU,EAAI,KAAK,IAAM,GAAK,GAAK,EACzC,EAAS,CAAO,EACZ,EAAS,UAAY,MAAM,aAAa,EAAS,OAAO,EAC5D,EAAS,QAAU,eAAiB,CAClC,IAAa,CAAO,CACtB,EAAG,CAAU,CACf,CAEA,IAAM,EAAY,GAAc,OAAO,GAAgB,UAAY,CAAC,OAAO,MAAM,CAAW,EAE5F,OACE,EAAC,MAAD,CACE,GAAI,EACJ,UAAW,EAAG,EAAW,GAAY,IAAI,EACzC,MAAO,CAAE,GAAI,GAAS,KAAmB,IAAA,GAAZ,CAAE,OAAM,EAAgB,GAAG,EAAO,GAAG,GAAY,IAAK,EAHrF,SAAA,CAKE,EAAC,EAAD,CACO,MACL,aAAa,MACb,UAAW,GAAY,MACvB,MAAO,GAAY,MACnB,KAAM,EAAU,OACT,QACM,cACN,QACP,SAAU,CACX,CAAA,EACA,GACC,EAAC,IAAD,CAAG,UAAW,EAAG,EAAO,YAAa,GAAY,WAAW,EAAG,MAAO,GAAY,YAC/E,SAAA,EAAK,QAAQ,CAAW,CACxB,CAAA,CAEF,GAET"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=`resultCount_Sn48Q`,t={resultCount:e};export{t as default,e as resultCount};
|
|
1
|
+
"use client";var e=`resultCount_Sn48Q`,t={resultCount:e};export{t as default,e as resultCount};
|
|
2
2
|
//# sourceMappingURL=searchInput.module.mjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useComponentDefaults as e}from"../configProvider/useComponentDefaults.mjs";import{renderIcon as t}from"../utils/renderIcon.mjs";import n from"../actionIcon/actionIcon.mjs";import r from"../divider/divider.mjs";import{SectionHeaderSize as i}from"./sectionHeader.types.mjs";import a from"./sectionHeader.module.mjs";import"react";import o from"classnames";import{Fragment as s,jsx as c,jsxs as l}from"react/jsx-runtime";var u={[i.Small]:a.sectionHeaderSizeSmall,[i.Medium]:a.sectionHeaderSizeMedium,[i.Large]:a.sectionHeaderSizeLarge};function d(d){let{title:f,subtitle:p,icon:m,thumbnail:h,left:g,center:_,actions:v,level:y=2,size:b=i.Medium,divider:x=!1,className:S,style:C,classNames:w,styles:T,...E}=e(`SectionHeader`,d),D=typeof h==`string`&&h.startsWith(`http`)?h:void 0,O=h!=null&&h!==``,k=O||m!=null,A=`h${y}`;return l(s,{children:[l(`div`,{...E,className:o(a.sectionHeader,u[b],S,w?.root),style:{...C,...T?.root},children:[l(`div`,{className:o(a.sectionHeaderIdentity,w?.identity),style:T?.identity,children:[k&&c(`div`,{className:o(a.sectionHeaderLeading,w?.leading),style:{...D?{backgroundImage:`url(${D})`}:{},...T?.leading},children:O?!D&&h:m?t(m):null}),l(`div`,{className:o(a.sectionHeaderTitles,w?.titles),style:T?.titles,children:[c(A,{className:o(a.sectionHeaderTitle,w?.title),style:T?.title,title:typeof f==`string`?f:void 0,children:f}),p!=null&&p!==``&&c(`div`,{className:o(a.sectionHeaderSubtitle,w?.subtitle),style:T?.subtitle,children:p})]})]}),l(`div`,{className:o(a.sectionHeaderTrailing,w?.trailing),style:T?.trailing,children:[c(`div`,{className:o(a.sectionHeaderLeft,w?.left),style:T?.left,children:g}),c(`div`,{className:o(a.sectionHeaderCenter,w?.center),style:T?.center,children:_}),c(`div`,{className:o(a.sectionHeaderActions,w?.actions),style:T?.actions,children:Array.isArray(v)?v.map((e,t)=>c(n,{title:e.title,onClick:e.onClick?t=>{t.stopPropagation(),e.onClick?.(t)}:void 0,icon:e.icon},t)):v})]})]}),x&&c(r,{className:a.sectionHeaderDivider})]})}export{d as default};
|
|
1
|
+
"use client";import{useComponentDefaults as e}from"../configProvider/useComponentDefaults.mjs";import{renderIcon as t}from"../utils/renderIcon.mjs";import n from"../actionIcon/actionIcon.mjs";import r from"../divider/divider.mjs";import{SectionHeaderSize as i}from"./sectionHeader.types.mjs";import a from"./sectionHeader.module.mjs";import"react";import o from"classnames";import{Fragment as s,jsx as c,jsxs as l}from"react/jsx-runtime";var u={[i.Small]:a.sectionHeaderSizeSmall,[i.Medium]:a.sectionHeaderSizeMedium,[i.Large]:a.sectionHeaderSizeLarge};function d(d){let{title:f,subtitle:p,icon:m,thumbnail:h,left:g,center:_,actions:v,level:y=2,size:b=i.Medium,divider:x=!1,className:S,style:C,classNames:w,styles:T,...E}=e(`SectionHeader`,d),D=typeof h==`string`&&h.startsWith(`http`)?h:void 0,O=h!=null&&h!==``,k=O||m!=null,A=`h${y}`;return l(s,{children:[l(`div`,{...E,className:o(a.sectionHeader,u[b],S,w?.root),style:{...C,...T?.root},children:[l(`div`,{className:o(a.sectionHeaderIdentity,w?.identity),style:T?.identity,children:[k&&c(`div`,{className:o(a.sectionHeaderLeading,w?.leading),style:{...D?{backgroundImage:`url(${D})`}:{},...T?.leading},children:O?!D&&h:m?t(m):null}),l(`div`,{className:o(a.sectionHeaderTitles,w?.titles),style:T?.titles,children:[c(A,{className:o(a.sectionHeaderTitle,w?.title),style:T?.title,title:typeof f==`string`?f:void 0,children:f}),p!=null&&p!==``&&c(`div`,{className:o(a.sectionHeaderSubtitle,w?.subtitle),style:T?.subtitle,children:p})]})]}),l(`div`,{className:o(a.sectionHeaderTrailing,w?.trailing),style:T?.trailing,children:[c(`div`,{className:o(a.sectionHeaderLeft,w?.left),style:T?.left,children:g}),c(`div`,{className:o(a.sectionHeaderCenter,w?.center),style:T?.center,children:_}),c(`div`,{className:o(a.sectionHeaderActions,w?.actions),style:T?.actions,children:Array.isArray(v)?v.map((e,t)=>c(n,{title:e.title,onClick:e.onClick?t=>{t.stopPropagation(),e.onClick?.(t)}:void 0,icon:e.icon},t)):v})]})]}),x&&c(r,{className:a.sectionHeaderDivider})]})}export{d as default};
|
|
2
2
|
//# sourceMappingURL=sectionHeader.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sectionHeader.mjs","names":[],"sources":["../../../../package/common/sectionHeader/sectionHeader.tsx"],"sourcesContent":["import React from 'react';\nimport type { ReactElement } from 'react';\nimport cx from 'classnames';\n\nimport { SectionHeaderSize } from './sectionHeader.types';\nimport type { SectionHeaderProps, SectionHeaderAction } from './sectionHeader.types';\nimport styles from './sectionHeader.module.pcss';\nimport ActionIcon from '../actionIcon';\nimport Divider from '../divider';\nimport { useComponentDefaults } from '../configProvider';\nimport { renderIcon } from '../utils/renderIcon';\n\nconst CLASS_BY_SIZE: Record<SectionHeaderSize, string> = {\n [SectionHeaderSize.Small]: styles.sectionHeaderSizeSmall,\n [SectionHeaderSize.Medium]: styles.sectionHeaderSizeMedium,\n [SectionHeaderSize.Large]: styles.sectionHeaderSizeLarge,\n};\n\nfunction SectionHeader(props: SectionHeaderProps): ReactElement {\n const {\n title,\n subtitle,\n icon,\n thumbnail,\n left,\n center,\n actions,\n level = 2,\n size = SectionHeaderSize.Medium,\n divider = false,\n className,\n style,\n classNames,\n styles: slotStyles,\n ...rest\n } = useComponentDefaults('SectionHeader', props);\n\n const thumbnailUrl = typeof thumbnail === 'string' && thumbnail.startsWith('http') ? thumbnail : undefined;\n const hasThumbnail = thumbnail != null && thumbnail !== '';\n const hasLeading = hasThumbnail || icon != null;\n\n const Heading = `h${level}` as keyof React.JSX.IntrinsicElements;\n\n return (\n <>\n <div\n {...rest}\n className={cx(styles.sectionHeader, CLASS_BY_SIZE[size], className, classNames?.root)}\n style={{ ...style, ...slotStyles?.root }}\n >\n <div className={cx(styles.sectionHeaderIdentity, classNames?.identity)} style={slotStyles?.identity}>\n {hasLeading && (\n <div\n className={cx(styles.sectionHeaderLeading, classNames?.leading)}\n style={{\n ...(thumbnailUrl ? { backgroundImage: `url(${thumbnailUrl})` } : {}),\n ...slotStyles?.leading,\n }}\n >\n {hasThumbnail ? !thumbnailUrl && thumbnail : icon ? renderIcon(icon) : null}\n </div>\n )}\n\n <div className={cx(styles.sectionHeaderTitles, classNames?.titles)} style={slotStyles?.titles}>\n <Heading\n className={cx(styles.sectionHeaderTitle, classNames?.title)}\n style={slotStyles?.title}\n // The title renders on a single line and truncates with an ellipsis,\n // so expose the full text on hover when it's plain text.\n title={typeof title === 'string' ? title : undefined}\n >\n {title}\n </Heading>\n {subtitle != null && subtitle !== '' && (\n <div className={cx(styles.sectionHeaderSubtitle, classNames?.subtitle)} style={slotStyles?.subtitle}>\n {subtitle}\n </div>\n )}\n </div>\n </div>\n\n <div className={cx(styles.sectionHeaderTrailing, classNames?.trailing)} style={slotStyles?.trailing}>\n <div className={cx(styles.sectionHeaderLeft, classNames?.left)} style={slotStyles?.left}>\n {left}\n </div>\n\n <div className={cx(styles.sectionHeaderCenter, classNames?.center)} style={slotStyles?.center}>\n {center}\n </div>\n\n <div className={cx(styles.sectionHeaderActions, classNames?.actions)} style={slotStyles?.actions}>\n {Array.isArray(actions)\n ? (actions as SectionHeaderAction[]).map((action, index) => (\n <ActionIcon\n key={index}\n title={action.title}\n onClick={\n action.onClick\n ? (e: React.MouseEvent<HTMLDivElement>) => {\n e.stopPropagation();\n action.onClick?.(e);\n }\n : undefined\n }\n icon={action.icon}\n />\n ))\n : (actions as React.ReactNode)}\n </div>\n </div>\n </div>\n {divider && <Divider className={styles.sectionHeaderDivider} />}\n </>\n );\n}\n\nexport default SectionHeader;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"sectionHeader.mjs","names":[],"sources":["../../../../package/common/sectionHeader/sectionHeader.tsx"],"sourcesContent":["import React from 'react';\nimport type { ReactElement } from 'react';\nimport cx from 'classnames';\n\nimport { SectionHeaderSize } from './sectionHeader.types';\nimport type { SectionHeaderProps, SectionHeaderAction } from './sectionHeader.types';\nimport styles from './sectionHeader.module.pcss';\nimport ActionIcon from '../actionIcon';\nimport Divider from '../divider';\nimport { useComponentDefaults } from '../configProvider';\nimport { renderIcon } from '../utils/renderIcon';\n\nconst CLASS_BY_SIZE: Record<SectionHeaderSize, string> = {\n [SectionHeaderSize.Small]: styles.sectionHeaderSizeSmall,\n [SectionHeaderSize.Medium]: styles.sectionHeaderSizeMedium,\n [SectionHeaderSize.Large]: styles.sectionHeaderSizeLarge,\n};\n\nfunction SectionHeader(props: SectionHeaderProps): ReactElement {\n const {\n title,\n subtitle,\n icon,\n thumbnail,\n left,\n center,\n actions,\n level = 2,\n size = SectionHeaderSize.Medium,\n divider = false,\n className,\n style,\n classNames,\n styles: slotStyles,\n ...rest\n } = useComponentDefaults('SectionHeader', props);\n\n const thumbnailUrl = typeof thumbnail === 'string' && thumbnail.startsWith('http') ? thumbnail : undefined;\n const hasThumbnail = thumbnail != null && thumbnail !== '';\n const hasLeading = hasThumbnail || icon != null;\n\n const Heading = `h${level}` as keyof React.JSX.IntrinsicElements;\n\n return (\n <>\n <div\n {...rest}\n className={cx(styles.sectionHeader, CLASS_BY_SIZE[size], className, classNames?.root)}\n style={{ ...style, ...slotStyles?.root }}\n >\n <div className={cx(styles.sectionHeaderIdentity, classNames?.identity)} style={slotStyles?.identity}>\n {hasLeading && (\n <div\n className={cx(styles.sectionHeaderLeading, classNames?.leading)}\n style={{\n ...(thumbnailUrl ? { backgroundImage: `url(${thumbnailUrl})` } : {}),\n ...slotStyles?.leading,\n }}\n >\n {hasThumbnail ? !thumbnailUrl && thumbnail : icon ? renderIcon(icon) : null}\n </div>\n )}\n\n <div className={cx(styles.sectionHeaderTitles, classNames?.titles)} style={slotStyles?.titles}>\n <Heading\n className={cx(styles.sectionHeaderTitle, classNames?.title)}\n style={slotStyles?.title}\n // The title renders on a single line and truncates with an ellipsis,\n // so expose the full text on hover when it's plain text.\n title={typeof title === 'string' ? title : undefined}\n >\n {title}\n </Heading>\n {subtitle != null && subtitle !== '' && (\n <div className={cx(styles.sectionHeaderSubtitle, classNames?.subtitle)} style={slotStyles?.subtitle}>\n {subtitle}\n </div>\n )}\n </div>\n </div>\n\n <div className={cx(styles.sectionHeaderTrailing, classNames?.trailing)} style={slotStyles?.trailing}>\n <div className={cx(styles.sectionHeaderLeft, classNames?.left)} style={slotStyles?.left}>\n {left}\n </div>\n\n <div className={cx(styles.sectionHeaderCenter, classNames?.center)} style={slotStyles?.center}>\n {center}\n </div>\n\n <div className={cx(styles.sectionHeaderActions, classNames?.actions)} style={slotStyles?.actions}>\n {Array.isArray(actions)\n ? (actions as SectionHeaderAction[]).map((action, index) => (\n <ActionIcon\n key={index}\n title={action.title}\n onClick={\n action.onClick\n ? (e: React.MouseEvent<HTMLDivElement>) => {\n e.stopPropagation();\n action.onClick?.(e);\n }\n : undefined\n }\n icon={action.icon}\n />\n ))\n : (actions as React.ReactNode)}\n </div>\n </div>\n </div>\n {divider && <Divider className={styles.sectionHeaderDivider} />}\n </>\n );\n}\n\nexport default SectionHeader;\n"],"mappings":"sbAYA,IAAM,EAAmD,EACtD,EAAkB,OAAQ,EAAO,wBACjC,EAAkB,QAAS,EAAO,yBAClC,EAAkB,OAAQ,EAAO,sBACpC,EAEA,SAAS,EAAc,EAAyC,CAC9D,GAAM,CACJ,QACA,WACA,OACA,YACA,OACA,SACA,UACA,QAAQ,EACR,OAAO,EAAkB,OACzB,UAAU,GACV,YACA,QACA,aACA,OAAQ,EACR,GAAG,GACD,EAAqB,gBAAiB,CAAK,EAEzC,EAAe,OAAO,GAAc,UAAY,EAAU,WAAW,MAAM,EAAI,EAAY,IAAA,GAC3F,EAAe,GAAa,MAAQ,IAAc,GAClD,EAAa,GAAgB,GAAQ,KAErC,EAAU,IAAI,IAEpB,OACE,EAAA,EAAA,CAAA,SAAA,CACE,EAAC,MAAD,CACE,GAAI,EACJ,UAAW,EAAG,EAAO,cAAe,EAAc,GAAO,EAAW,GAAY,IAAI,EACpF,MAAO,CAAE,GAAG,EAAO,GAAG,GAAY,IAAK,EAHzC,SAAA,CAKE,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,sBAAuB,GAAY,QAAQ,EAAG,MAAO,GAAY,SAA3F,SAAA,CACG,GACC,EAAC,MAAD,CACE,UAAW,EAAG,EAAO,qBAAsB,GAAY,OAAO,EAC9D,MAAO,CACL,GAAI,EAAe,CAAE,gBAAiB,OAAO,EAAa,EAAG,EAAI,CAAC,EAClE,GAAG,GAAY,OACjB,EAEC,SAAA,EAAe,CAAC,GAAgB,EAAY,EAAO,EAAW,CAAI,EAAI,IACpE,CAAA,EAGP,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,oBAAqB,GAAY,MAAM,EAAG,MAAO,GAAY,OAAvF,SAAA,CACE,EAAC,EAAD,CACE,UAAW,EAAG,EAAO,mBAAoB,GAAY,KAAK,EAC1D,MAAO,GAAY,MAGnB,MAAO,OAAO,GAAU,SAAW,EAAQ,IAAA,GAE1C,SAAA,CACM,CAAA,EACR,GAAY,MAAQ,IAAa,IAChC,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,sBAAuB,GAAY,QAAQ,EAAG,MAAO,GAAY,SACxF,SAAA,CACE,CAAA,CAEJ,CACF,CAAA,CAAA,CAEL,CAAA,EAAA,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,sBAAuB,GAAY,QAAQ,EAAG,MAAO,GAAY,SAA3F,SAAA,CACE,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,kBAAmB,GAAY,IAAI,EAAG,MAAO,GAAY,KAChF,SAAA,CACE,CAAA,EAEL,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,oBAAqB,GAAY,MAAM,EAAG,MAAO,GAAY,OACpF,SAAA,CACE,CAAA,EAEL,EAAC,MAAD,CAAK,UAAW,EAAG,EAAO,qBAAsB,GAAY,OAAO,EAAG,MAAO,GAAY,QACtF,SAAA,MAAM,QAAQ,CAAO,EACjB,EAAkC,KAAK,EAAQ,IAC9C,EAAC,EAAD,CAEE,MAAO,EAAO,MACd,QACE,EAAO,QACF,GAAwC,CACvC,EAAE,gBAAgB,EAClB,EAAO,UAAU,CAAC,CACpB,EACA,IAAA,GAEN,KAAM,EAAO,IACd,EAXM,CAWN,CACF,EACA,CACF,CAAA,CACF,CACF,CAAA,CAAA,CACJ,CAAA,EAAA,GAAW,EAAC,EAAD,CAAS,UAAW,EAAO,oBAAuB,CAAA,CAC9D,CAAA,CAAA,CAEN"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=`sectionHeader_X3bNj`,t=`sectionHeader-leading_d6opV`,n=`sectionHeader-identity_Qmlpt`,r=`sectionHeader-titles_iN9dT`,i=`sectionHeader-title_wH--S`,a=`sectionHeader-subtitle_WRK3Y`,o=`sectionHeader-trailing_ewWDV`,s=`sectionHeader-left_ZUuWs`,c=`sectionHeader-center_MzSev`,l=`sectionHeader-actions_E40ZS`,u=`sectionHeader-divider_Ovpev`,d=`sectionHeader-size-small_6OVWE`,f=`sectionHeader-size-medium_BVSe6`,p=`sectionHeader-size-large_bOZDP`,m={sectionHeader:e,"sectionHeader-leading":`sectionHeader-leading_d6opV`,sectionHeaderLeading:t,"sectionHeader-identity":`sectionHeader-identity_Qmlpt`,sectionHeaderIdentity:n,"sectionHeader-titles":`sectionHeader-titles_iN9dT`,sectionHeaderTitles:r,"sectionHeader-title":`sectionHeader-title_wH--S`,sectionHeaderTitle:i,"sectionHeader-subtitle":`sectionHeader-subtitle_WRK3Y`,sectionHeaderSubtitle:a,"sectionHeader-trailing":`sectionHeader-trailing_ewWDV`,sectionHeaderTrailing:o,"sectionHeader-left":`sectionHeader-left_ZUuWs`,sectionHeaderLeft:s,"sectionHeader-center":`sectionHeader-center_MzSev`,sectionHeaderCenter:c,"sectionHeader-actions":`sectionHeader-actions_E40ZS`,sectionHeaderActions:l,"sectionHeader-divider":`sectionHeader-divider_Ovpev`,sectionHeaderDivider:u,"sectionHeader-size-small":`sectionHeader-size-small_6OVWE`,sectionHeaderSizeSmall:d,"sectionHeader-size-medium":`sectionHeader-size-medium_BVSe6`,sectionHeaderSizeMedium:f,"sectionHeader-size-large":`sectionHeader-size-large_bOZDP`,sectionHeaderSizeLarge:p};export{m as default,e as sectionHeader,l as sectionHeaderActions,c as sectionHeaderCenter,u as sectionHeaderDivider,n as sectionHeaderIdentity,t as sectionHeaderLeading,s as sectionHeaderLeft,p as sectionHeaderSizeLarge,f as sectionHeaderSizeMedium,d as sectionHeaderSizeSmall,a as sectionHeaderSubtitle,i as sectionHeaderTitle,r as sectionHeaderTitles,o as sectionHeaderTrailing};
|
|
1
|
+
"use client";var e=`sectionHeader_X3bNj`,t=`sectionHeader-leading_d6opV`,n=`sectionHeader-identity_Qmlpt`,r=`sectionHeader-titles_iN9dT`,i=`sectionHeader-title_wH--S`,a=`sectionHeader-subtitle_WRK3Y`,o=`sectionHeader-trailing_ewWDV`,s=`sectionHeader-left_ZUuWs`,c=`sectionHeader-center_MzSev`,l=`sectionHeader-actions_E40ZS`,u=`sectionHeader-divider_Ovpev`,d=`sectionHeader-size-small_6OVWE`,f=`sectionHeader-size-medium_BVSe6`,p=`sectionHeader-size-large_bOZDP`,m={sectionHeader:e,"sectionHeader-leading":`sectionHeader-leading_d6opV`,sectionHeaderLeading:t,"sectionHeader-identity":`sectionHeader-identity_Qmlpt`,sectionHeaderIdentity:n,"sectionHeader-titles":`sectionHeader-titles_iN9dT`,sectionHeaderTitles:r,"sectionHeader-title":`sectionHeader-title_wH--S`,sectionHeaderTitle:i,"sectionHeader-subtitle":`sectionHeader-subtitle_WRK3Y`,sectionHeaderSubtitle:a,"sectionHeader-trailing":`sectionHeader-trailing_ewWDV`,sectionHeaderTrailing:o,"sectionHeader-left":`sectionHeader-left_ZUuWs`,sectionHeaderLeft:s,"sectionHeader-center":`sectionHeader-center_MzSev`,sectionHeaderCenter:c,"sectionHeader-actions":`sectionHeader-actions_E40ZS`,sectionHeaderActions:l,"sectionHeader-divider":`sectionHeader-divider_Ovpev`,sectionHeaderDivider:u,"sectionHeader-size-small":`sectionHeader-size-small_6OVWE`,sectionHeaderSizeSmall:d,"sectionHeader-size-medium":`sectionHeader-size-medium_BVSe6`,sectionHeaderSizeMedium:f,"sectionHeader-size-large":`sectionHeader-size-large_bOZDP`,sectionHeaderSizeLarge:p};export{m as default,e as sectionHeader,l as sectionHeaderActions,c as sectionHeaderCenter,u as sectionHeaderDivider,n as sectionHeaderIdentity,t as sectionHeaderLeading,s as sectionHeaderLeft,p as sectionHeaderSizeLarge,f as sectionHeaderSizeMedium,d as sectionHeaderSizeSmall,a as sectionHeaderSubtitle,i as sectionHeaderTitle,r as sectionHeaderTitles,o as sectionHeaderTrailing};
|
|
2
2
|
//# sourceMappingURL=sectionHeader.module.mjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=function(e){return e.Small=`small`,e.Medium=`medium`,e.Large=`large`,e}({});export{e as SectionHeaderSize};
|
|
1
|
+
"use client";var e=function(e){return e.Small=`small`,e.Medium=`medium`,e.Large=`large`,e}({});export{e as SectionHeaderSize};
|
|
2
2
|
//# sourceMappingURL=sectionHeader.types.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sectionHeader.types.mjs","names":[],"sources":["../../../../package/common/sectionHeader/sectionHeader.types.ts"],"sourcesContent":["import type { CSSProperties, ReactNode } from 'react';\nimport type { IconContent } from '../types/icon.types';\nimport type { SlotClassNames, SlotStyles, HtmlProps } from '../types/slots.types';\nimport type { IconAction } from '../types/actions.types';\n\nexport enum SectionHeaderSize {\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n}\n\nexport type SectionHeaderAction = IconAction;\n\nexport type SectionHeaderSlots =\n | 'root'\n | 'identity'\n | 'leading'\n | 'titles'\n | 'title'\n | 'subtitle'\n | 'trailing'\n | 'left'\n | 'center'\n | 'actions';\n\nexport interface SectionHeaderProps extends Omit<HtmlProps, 'title'> {\n title?: ReactNode;\n subtitle?: ReactNode;\n icon?: IconContent;\n thumbnail?: string | ReactNode;\n left?: ReactNode;\n center?: ReactNode;\n actions?: SectionHeaderAction[] | ReactNode;\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n size?: SectionHeaderSize;\n divider?: boolean;\n className?: string;\n style?: CSSProperties;\n classNames?: SlotClassNames<SectionHeaderSlots>;\n styles?: SlotStyles<SectionHeaderSlots>;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"sectionHeader.types.mjs","names":[],"sources":["../../../../package/common/sectionHeader/sectionHeader.types.ts"],"sourcesContent":["import type { CSSProperties, ReactNode } from 'react';\nimport type { IconContent } from '../types/icon.types';\nimport type { SlotClassNames, SlotStyles, HtmlProps } from '../types/slots.types';\nimport type { IconAction } from '../types/actions.types';\n\nexport enum SectionHeaderSize {\n Small = 'small',\n Medium = 'medium',\n Large = 'large',\n}\n\nexport type SectionHeaderAction = IconAction;\n\nexport type SectionHeaderSlots =\n | 'root'\n | 'identity'\n | 'leading'\n | 'titles'\n | 'title'\n | 'subtitle'\n | 'trailing'\n | 'left'\n | 'center'\n | 'actions';\n\nexport interface SectionHeaderProps extends Omit<HtmlProps, 'title'> {\n title?: ReactNode;\n subtitle?: ReactNode;\n icon?: IconContent;\n thumbnail?: string | ReactNode;\n left?: ReactNode;\n center?: ReactNode;\n actions?: SectionHeaderAction[] | ReactNode;\n level?: 1 | 2 | 3 | 4 | 5 | 6;\n size?: SectionHeaderSize;\n divider?: boolean;\n className?: string;\n style?: CSSProperties;\n classNames?: SlotClassNames<SectionHeaderSlots>;\n styles?: SlotStyles<SectionHeaderSlots>;\n}\n"],"mappings":"aAKA,IAAY,EAAL,SAAA,EAAA,OACL,GAAA,MAAA,QACA,EAAA,OAAA,SACA,EAAA,MAAA,SACF,EAAA,CAAA,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"../styles/sheet.module.mjs";import{useEffect as t,useRef as n}from"react";import r from"classnames";import{jsx as i}from"react/jsx-runtime";var a=[`pointerdown`,`pointerup`,`mousedown`,`mouseup`,`touchstart`,`touchend`];function o({onClose:o,className:s,style:c}){let l=n(null);return t(()=>{let e=l.current;if(!e)return;let t=e=>e.stopPropagation();return a.forEach(n=>e.addEventListener(n,t)),()=>a.forEach(n=>e.removeEventListener(n,t))},[]),i(`div`,{ref:l,className:r(e.sheetBackdrop,s),style:c,onClick:e=>{e.stopPropagation(),o()}})}export{o as default};
|
|
1
|
+
"use client";import e from"../styles/sheet.module.mjs";import{useEffect as t,useRef as n}from"react";import r from"classnames";import{jsx as i}from"react/jsx-runtime";var a=[`pointerdown`,`pointerup`,`mousedown`,`mouseup`,`touchstart`,`touchend`];function o({onClose:o,className:s,style:c}){let l=n(null);return t(()=>{let e=l.current;if(!e)return;let t=e=>e.stopPropagation();return a.forEach(n=>e.addEventListener(n,t)),()=>a.forEach(n=>e.removeEventListener(n,t))},[]),i(`div`,{ref:l,className:r(e.sheetBackdrop,s),style:c,onClick:e=>{e.stopPropagation(),o()}})}export{o as default};
|
|
2
2
|
//# sourceMappingURL=sheetBackdrop.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sheetBackdrop.mjs","names":[],"sources":["../../../../package/common/sheetBackdrop/sheetBackdrop.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport cx from 'classnames';\n\nimport styles from '../styles/sheet.module.pcss';\nimport type { SheetBackdropProps } from './sheetBackdrop.types';\n\n/** The pointer events a popup's own outside-click handling listens for. */\nconst SWALLOWED_EVENTS = ['pointerdown', 'pointerup', 'mousedown', 'mouseup', 'touchstart', 'touchend'];\n\n/**\n * The dimmed layer behind a bottom sheet, and the thing that closes it when tapped.\n *\n * It closes on its own `click` rather than letting the sheet's usual outside-click handling see\n * the press, because that handling fires on mousedown/mouseup — and the sheet, backdrop included,\n * unmounts the moment it closes. The browser then dispatches the `click` that completes the tap\n * at whatever is under the cursor by then, which is the page behind the sheet: tapping to dismiss\n * would also press a button underneath it.\n *\n * The press is stopped with native listeners rather than React's `stopPropagation`, which would\n * not be enough: React listens at its own root container, so a native handler on `document` or\n * `window` still runs afterwards.\n */\nfunction SheetBackdrop({ onClose, className, style }: SheetBackdropProps) {\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const element = ref.current;\n if (!element) return;\n const stop = (event: Event) => event.stopPropagation();\n SWALLOWED_EVENTS.forEach((type) => element.addEventListener(type, stop));\n return () => SWALLOWED_EVENTS.forEach((type) => element.removeEventListener(type, stop));\n }, []);\n\n return (\n <div\n ref={ref}\n className={cx(styles.sheetBackdrop, className)}\n style={style}\n onClick={(event) => {\n event.stopPropagation();\n onClose();\n }}\n />\n );\n}\n\nexport default SheetBackdrop;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"sheetBackdrop.mjs","names":[],"sources":["../../../../package/common/sheetBackdrop/sheetBackdrop.tsx"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport cx from 'classnames';\n\nimport styles from '../styles/sheet.module.pcss';\nimport type { SheetBackdropProps } from './sheetBackdrop.types';\n\n/** The pointer events a popup's own outside-click handling listens for. */\nconst SWALLOWED_EVENTS = ['pointerdown', 'pointerup', 'mousedown', 'mouseup', 'touchstart', 'touchend'];\n\n/**\n * The dimmed layer behind a bottom sheet, and the thing that closes it when tapped.\n *\n * It closes on its own `click` rather than letting the sheet's usual outside-click handling see\n * the press, because that handling fires on mousedown/mouseup — and the sheet, backdrop included,\n * unmounts the moment it closes. The browser then dispatches the `click` that completes the tap\n * at whatever is under the cursor by then, which is the page behind the sheet: tapping to dismiss\n * would also press a button underneath it.\n *\n * The press is stopped with native listeners rather than React's `stopPropagation`, which would\n * not be enough: React listens at its own root container, so a native handler on `document` or\n * `window` still runs afterwards.\n */\nfunction SheetBackdrop({ onClose, className, style }: SheetBackdropProps) {\n const ref = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const element = ref.current;\n if (!element) return;\n const stop = (event: Event) => event.stopPropagation();\n SWALLOWED_EVENTS.forEach((type) => element.addEventListener(type, stop));\n return () => SWALLOWED_EVENTS.forEach((type) => element.removeEventListener(type, stop));\n }, []);\n\n return (\n <div\n ref={ref}\n className={cx(styles.sheetBackdrop, className)}\n style={style}\n onClick={(event) => {\n event.stopPropagation();\n onClose();\n }}\n />\n );\n}\n\nexport default SheetBackdrop;\n"],"mappings":"uKAOA,IAAM,EAAmB,CAAC,cAAe,YAAa,YAAa,UAAW,aAAc,UAAU,EAetG,SAAS,EAAc,CAAE,UAAS,YAAW,SAA6B,CACxE,IAAM,EAAM,EAAuB,IAAI,EAUvC,OARA,MAAgB,CACd,IAAM,EAAU,EAAI,QACpB,GAAI,CAAC,EAAS,OACd,IAAM,EAAQ,GAAiB,EAAM,gBAAgB,EAErD,OADA,EAAiB,QAAS,GAAS,EAAQ,iBAAiB,EAAM,CAAI,CAAC,MAC1D,EAAiB,QAAS,GAAS,EAAQ,oBAAoB,EAAM,CAAI,CAAC,CACzF,EAAG,CAAC,CAAC,EAGH,EAAC,MAAD,CACO,MACL,UAAW,EAAG,EAAO,cAAe,CAAS,EACtC,QACP,QAAU,GAAU,CAClB,EAAM,gBAAgB,EACtB,EAAQ,CACV,CACD,CAAA,CAEL"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useComponentDefaults as e}from"../configProvider/useComponentDefaults.mjs";import{SkeletonAnimation as t,SkeletonVariant as n}from"./skeleton.types.mjs";import r from"./skeleton.module.mjs";import i from"classnames";import{jsx as a}from"react/jsx-runtime";var o={[n.Text]:r.skeletonText,[n.Circle]:r.skeletonCircle,[n.Rectangular]:r.skeletonRectangular},s={[t.Shimmer]:r.skeletonAnimationShimmer,[t.Pulse]:r.skeletonAnimationPulse,[t.None]:void 0};function c(c){let{variant:l=n.Text,animation:u=t.Shimmer,lines:d=1,className:f,style:p,classNames:m,styles:h,...g}=e(`Skeleton`,c),_=o[l],v=s[u];return l!==n.Text||d<=1?a(`span`,{...g,className:i(r.skeleton,_,v,f),style:p}):a(`span`,{...g,className:i(r.skeletonLines,f),style:p,children:Array.from({length:d},(e,t)=>a(`span`,{className:i(r.skeleton,_,v,t===d-1&&r.skeletonLineLast,m?.line),style:h?.line},t))})}export{c as default};
|
|
1
|
+
"use client";import{useComponentDefaults as e}from"../configProvider/useComponentDefaults.mjs";import{SkeletonAnimation as t,SkeletonVariant as n}from"./skeleton.types.mjs";import r from"./skeleton.module.mjs";import i from"classnames";import{jsx as a}from"react/jsx-runtime";var o={[n.Text]:r.skeletonText,[n.Circle]:r.skeletonCircle,[n.Rectangular]:r.skeletonRectangular},s={[t.Shimmer]:r.skeletonAnimationShimmer,[t.Pulse]:r.skeletonAnimationPulse,[t.None]:void 0};function c(c){let{variant:l=n.Text,animation:u=t.Shimmer,lines:d=1,className:f,style:p,classNames:m,styles:h,...g}=e(`Skeleton`,c),_=o[l],v=s[u];return l!==n.Text||d<=1?a(`span`,{...g,className:i(r.skeleton,_,v,f),style:p}):a(`span`,{...g,className:i(r.skeletonLines,f),style:p,children:Array.from({length:d},(e,t)=>a(`span`,{className:i(r.skeleton,_,v,t===d-1&&r.skeletonLineLast,m?.line),style:h?.line},t))})}export{c as default};
|
|
2
2
|
//# sourceMappingURL=skeleton.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skeleton.mjs","names":[],"sources":["../../../../package/common/skeleton/skeleton.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\nimport cx from 'classnames';\n\nimport { SkeletonVariant, SkeletonAnimation } from './skeleton.types';\nimport type { SkeletonProps } from './skeleton.types';\nimport styles from './skeleton.module.pcss';\nimport { useComponentDefaults } from '../configProvider';\n\nconst CLASS_BY_VARIANT: Record<SkeletonVariant, string> = {\n [SkeletonVariant.Text]: styles.skeletonText,\n [SkeletonVariant.Circle]: styles.skeletonCircle,\n [SkeletonVariant.Rectangular]: styles.skeletonRectangular,\n};\n\nconst CLASS_BY_ANIMATION: Record<SkeletonAnimation, string | undefined> = {\n [SkeletonAnimation.Shimmer]: styles.skeletonAnimationShimmer,\n [SkeletonAnimation.Pulse]: styles.skeletonAnimationPulse,\n [SkeletonAnimation.None]: undefined,\n};\n\nfunction Skeleton(props: SkeletonProps): ReactElement {\n const {\n variant = SkeletonVariant.Text,\n animation = SkeletonAnimation.Shimmer,\n lines = 1,\n className,\n style,\n classNames,\n styles: slotStyles,\n ...rest\n } = useComponentDefaults('Skeleton', props);\n const variantClass = CLASS_BY_VARIANT[variant];\n const animationClass = CLASS_BY_ANIMATION[animation];\n\n if (variant !== SkeletonVariant.Text || lines <= 1) {\n return <span {...rest} className={cx(styles.skeleton, variantClass, animationClass, className)} style={style} />;\n }\n\n return (\n <span {...rest} className={cx(styles.skeletonLines, className)} style={style}>\n {Array.from({ length: lines }, (_, index) => (\n <span\n key={index}\n className={cx(\n styles.skeleton,\n variantClass,\n animationClass,\n index === lines - 1 && styles.skeletonLineLast,\n classNames?.line,\n )}\n style={slotStyles?.line}\n />\n ))}\n </span>\n );\n}\n\nexport default Skeleton;\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"skeleton.mjs","names":[],"sources":["../../../../package/common/skeleton/skeleton.tsx"],"sourcesContent":["import type { ReactElement } from 'react';\nimport cx from 'classnames';\n\nimport { SkeletonVariant, SkeletonAnimation } from './skeleton.types';\nimport type { SkeletonProps } from './skeleton.types';\nimport styles from './skeleton.module.pcss';\nimport { useComponentDefaults } from '../configProvider';\n\nconst CLASS_BY_VARIANT: Record<SkeletonVariant, string> = {\n [SkeletonVariant.Text]: styles.skeletonText,\n [SkeletonVariant.Circle]: styles.skeletonCircle,\n [SkeletonVariant.Rectangular]: styles.skeletonRectangular,\n};\n\nconst CLASS_BY_ANIMATION: Record<SkeletonAnimation, string | undefined> = {\n [SkeletonAnimation.Shimmer]: styles.skeletonAnimationShimmer,\n [SkeletonAnimation.Pulse]: styles.skeletonAnimationPulse,\n [SkeletonAnimation.None]: undefined,\n};\n\nfunction Skeleton(props: SkeletonProps): ReactElement {\n const {\n variant = SkeletonVariant.Text,\n animation = SkeletonAnimation.Shimmer,\n lines = 1,\n className,\n style,\n classNames,\n styles: slotStyles,\n ...rest\n } = useComponentDefaults('Skeleton', props);\n const variantClass = CLASS_BY_VARIANT[variant];\n const animationClass = CLASS_BY_ANIMATION[animation];\n\n if (variant !== SkeletonVariant.Text || lines <= 1) {\n return <span {...rest} className={cx(styles.skeleton, variantClass, animationClass, className)} style={style} />;\n }\n\n return (\n <span {...rest} className={cx(styles.skeletonLines, className)} style={style}>\n {Array.from({ length: lines }, (_, index) => (\n <span\n key={index}\n className={cx(\n styles.skeleton,\n variantClass,\n animationClass,\n index === lines - 1 && styles.skeletonLineLast,\n classNames?.line,\n )}\n style={slotStyles?.line}\n />\n ))}\n </span>\n );\n}\n\nexport default Skeleton;\n"],"mappings":"oRAQA,IAAM,EAAoD,EACvD,EAAgB,MAAO,EAAO,cAC9B,EAAgB,QAAS,EAAO,gBAChC,EAAgB,aAAc,EAAO,mBACxC,EAEM,EAAoE,EACvE,EAAkB,SAAU,EAAO,0BACnC,EAAkB,OAAQ,EAAO,wBACjC,EAAkB,MAAO,IAAA,EAC5B,EAEA,SAAS,EAAS,EAAoC,CACpD,GAAM,CACJ,UAAU,EAAgB,KAC1B,YAAY,EAAkB,QAC9B,QAAQ,EACR,YACA,QACA,aACA,OAAQ,EACR,GAAG,GACD,EAAqB,WAAY,CAAK,EACpC,EAAe,EAAiB,GAChC,EAAiB,EAAmB,GAM1C,OAJI,IAAY,EAAgB,MAAQ,GAAS,EACxC,EAAC,OAAD,CAAM,GAAI,EAAM,UAAW,EAAG,EAAO,SAAU,EAAc,EAAgB,CAAS,EAAU,OAAQ,CAAA,EAI/G,EAAC,OAAD,CAAM,GAAI,EAAM,UAAW,EAAG,EAAO,cAAe,CAAS,EAAU,QACpE,SAAA,MAAM,KAAK,CAAE,OAAQ,CAAM,GAAI,EAAG,IACjC,EAAC,OAAD,CAEE,UAAW,EACT,EAAO,SACP,EACA,EACA,IAAU,EAAQ,GAAK,EAAO,iBAC9B,GAAY,IACd,EACA,MAAO,GAAY,IACpB,EATM,CASN,CACF,CACG,CAAA,CAEV"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=`skeleton_TSg1y`,t=`skeleton-lines_-Z-gf`,n=`skeleton-line-last_UFw21`,r=`skeleton-text_Jlefj`,i=`skeleton-circle_t0bbj`,a=`skeleton-rectangular_UtIyN`,o=`skeleton-animation-pulse_wGbPg`,s=`skeletonPulse_06yjn`,c=`skeleton-animation-shimmer_a0nwc`,l=`skeletonShimmer_wLPXR`,u={skeleton:e,"skeleton-lines":`skeleton-lines_-Z-gf`,skeletonLines:t,"skeleton-line-last":`skeleton-line-last_UFw21`,skeletonLineLast:n,"skeleton-text":`skeleton-text_Jlefj`,skeletonText:r,"skeleton-circle":`skeleton-circle_t0bbj`,skeletonCircle:i,"skeleton-rectangular":`skeleton-rectangular_UtIyN`,skeletonRectangular:a,"skeleton-animation-pulse":`skeleton-animation-pulse_wGbPg`,skeletonAnimationPulse:o,skeletonPulse:s,"skeleton-animation-shimmer":`skeleton-animation-shimmer_a0nwc`,skeletonAnimationShimmer:c,skeletonShimmer:l};export{u as default,e as skeleton,o as skeletonAnimationPulse,c as skeletonAnimationShimmer,i as skeletonCircle,n as skeletonLineLast,t as skeletonLines,s as skeletonPulse,a as skeletonRectangular,l as skeletonShimmer,r as skeletonText};
|
|
1
|
+
"use client";var e=`skeleton_TSg1y`,t=`skeleton-lines_-Z-gf`,n=`skeleton-line-last_UFw21`,r=`skeleton-text_Jlefj`,i=`skeleton-circle_t0bbj`,a=`skeleton-rectangular_UtIyN`,o=`skeleton-animation-pulse_wGbPg`,s=`skeletonPulse_06yjn`,c=`skeleton-animation-shimmer_a0nwc`,l=`skeletonShimmer_wLPXR`,u={skeleton:e,"skeleton-lines":`skeleton-lines_-Z-gf`,skeletonLines:t,"skeleton-line-last":`skeleton-line-last_UFw21`,skeletonLineLast:n,"skeleton-text":`skeleton-text_Jlefj`,skeletonText:r,"skeleton-circle":`skeleton-circle_t0bbj`,skeletonCircle:i,"skeleton-rectangular":`skeleton-rectangular_UtIyN`,skeletonRectangular:a,"skeleton-animation-pulse":`skeleton-animation-pulse_wGbPg`,skeletonAnimationPulse:o,skeletonPulse:s,"skeleton-animation-shimmer":`skeleton-animation-shimmer_a0nwc`,skeletonAnimationShimmer:c,skeletonShimmer:l};export{u as default,e as skeleton,o as skeletonAnimationPulse,c as skeletonAnimationShimmer,i as skeletonCircle,n as skeletonLineLast,t as skeletonLines,s as skeletonPulse,a as skeletonRectangular,l as skeletonShimmer,r as skeletonText};
|
|
2
2
|
//# sourceMappingURL=skeleton.module.mjs.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=function(e){return e.Text=`text`,e.Circle=`circle`,e.Rectangular=`rectangular`,e}({}),t=function(e){return e.Shimmer=`shimmer`,e.Pulse=`pulse`,e.None=`none`,e}({});export{t as SkeletonAnimation,e as SkeletonVariant};
|
|
1
|
+
"use client";var e=function(e){return e.Text=`text`,e.Circle=`circle`,e.Rectangular=`rectangular`,e}({}),t=function(e){return e.Shimmer=`shimmer`,e.Pulse=`pulse`,e.None=`none`,e}({});export{t as SkeletonAnimation,e as SkeletonVariant};
|
|
2
2
|
//# sourceMappingURL=skeleton.types.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skeleton.types.mjs","names":[],"sources":["../../../../package/common/skeleton/skeleton.types.ts"],"sourcesContent":["import type { CSSProperties } from 'react';\nimport type { SlotClassNames, SlotStyles, HtmlProps } from '../types/slots.types';\n\nexport enum SkeletonVariant {\n Text = 'text',\n Circle = 'circle',\n Rectangular = 'rectangular',\n}\n\nexport enum SkeletonAnimation {\n Shimmer = 'shimmer',\n Pulse = 'pulse',\n None = 'none',\n}\n\nexport type SkeletonSlots = 'line';\n\nexport interface SkeletonProps extends HtmlProps {\n variant?: SkeletonVariant;\n animation?: SkeletonAnimation;\n lines?: number;\n className?: string;\n style?: CSSProperties;\n classNames?: SlotClassNames<SkeletonSlots>;\n styles?: SlotStyles<SkeletonSlots>;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"skeleton.types.mjs","names":[],"sources":["../../../../package/common/skeleton/skeleton.types.ts"],"sourcesContent":["import type { CSSProperties } from 'react';\nimport type { SlotClassNames, SlotStyles, HtmlProps } from '../types/slots.types';\n\nexport enum SkeletonVariant {\n Text = 'text',\n Circle = 'circle',\n Rectangular = 'rectangular',\n}\n\nexport enum SkeletonAnimation {\n Shimmer = 'shimmer',\n Pulse = 'pulse',\n None = 'none',\n}\n\nexport type SkeletonSlots = 'line';\n\nexport interface SkeletonProps extends HtmlProps {\n variant?: SkeletonVariant;\n animation?: SkeletonAnimation;\n lines?: number;\n className?: string;\n style?: CSSProperties;\n classNames?: SlotClassNames<SkeletonSlots>;\n styles?: SlotStyles<SkeletonSlots>;\n}\n"],"mappings":"aAGA,IAAY,EAAL,SAAA,EAAA,OACL,GAAA,KAAA,OACA,EAAA,OAAA,SACA,EAAA,YAAA,eACF,EAAA,CAAA,CAAA,EAEY,EAAL,SAAA,EAAA,OACL,GAAA,QAAA,UACA,EAAA,MAAA,QACA,EAAA,KAAA,QACF,EAAA,CAAA,CAAA"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"./slider.module.mjs";import t,{useEffect as n,useRef as r,useState as i}from"react";import a from"classnames";import{jsx as o,jsxs as s}from"react/jsx-runtime";function c(e){let t=String(e),n=t.indexOf(`.`);return n===-1?0:t.length-n-1}function l(l){let{min:u=0,max:d=100,step:f=1,disabled:p=!1,marks:m,showValue:ee=!1,formatValue:h,size:g,tabIndex:_=0,className:v,style:y,classNames:b,styles:x,"aria-label":S,range:C,value:w,defaultValue:T,onChange:te,onChangeEnd:ne,minRange:E=0,thumbLabels:re,...ie}=l,D=te,O=ne,k=C===!0,A=r(null),j=r(null),M=r([]),N=r(null),[ae,P]=i(!1),F=c(f);function I(e){return Math.min(d,Math.max(u,e))}function oe(e){let t=Math.round((e-u)/f)*f+u;return Number(I(t).toFixed(F))}function L(e){if(k){let t=e??[u,d];return[I(t[0]),I(t[1])]}return[I(e??u)]}function R(e){let t=k?2:1;return e.length===t?e:k?[e[0],d]:[e[0]]}let z=w!==void 0,[B,V]=i(()=>L(T)),H=z?L(w):R(B),U=r(H);n(()=>{U.current=H},[H]);function W(e){return k?[e[0],e[1]]:e[0]}function G(e,t){return k?e===0?[u,t[1]-E]:[t[0]+E,d]:[u,d]}function K(e,t,n){let r=U.current,[i,a]=G(e,r),o=oe(t);if(o<i&&(o=Number(Math.max(u,i).toFixed(F))),o>a&&(o=Number(Math.min(d,a).toFixed(F))),o===r[e]){n&&O?.(W(r));return}let s=[...r];s[e]=o,U.current=s,z||V(s),D?.(W(s)),n&&O?.(W(s))}function q(e){let t=A.current;if(!t)return U.current[0];let n=t.getBoundingClientRect(),r=n.width?(e-n.left)/n.width:0;return u+Math.min(1,Math.max(0,r))*(d-u)}function se(e){if(!k)return 0;let[t,n]=U.current,r=Math.abs(e-t),i=Math.abs(e-n);return r===i?+(e>n):r<i?0:1}function ce(e){if(p)return;e.preventDefault();let t=q(e.clientX),n=se(t);(k?M.current[n]:j.current)?.focus(),j.current?.setPointerCapture?.(e.pointerId),N.current=n,P(!0),K(n,t,!1)}function le(e){let t=N.current;t!==null&&K(t,q(e.clientX),!1)}function ue(e){N.current!==null&&(N.current=null,P(!1),j.current?.releasePointerCapture?.(e.pointerId),O?.(W(U.current)))}function J(e,t){if(p)return;let n=f*10,r=H[t],i=null;switch(e.key){case`ArrowRight`:case`ArrowUp`:i=r+f;break;case`ArrowLeft`:case`ArrowDown`:i=r-f;break;case`PageUp`:i=r+n;break;case`PageDown`:i=r-n;break;case`Home`:i=u;break;case`End`:i=d;break;default:return}e.preventDefault(),K(t,i,!0)}let Y=e=>d>u?(I(e)-u)/(d-u):0,X=e=>`${Y(e)*100}%`,de=k?{left:X(H[0]),width:`${(Y(H[1])-Y(H[0]))*100}%`}:{width:X(H[0])},Z=!!m?.some(e=>e.label!=null),Q=e=>h?h(e):e;function $(e){let t=H[e],n=Q(t),[r,i]=G(e,H);return{role:`slider`,"aria-valuemin":Number(Math.max(u,r).toFixed(F)),"aria-valuemax":Number(Math.min(d,i).toFixed(F)),"aria-valuenow":t,"aria-valuetext":typeof n==`string`||typeof n==`number`?String(n):void 0,"aria-orientation":`horizontal`,"aria-disabled":p||void 0}}let fe=k?{role:`group`,"aria-label":S,"aria-disabled":p||void 0}:{...$(0),"aria-label":S,tabIndex:p?-1:_};return o(`div`,{...ie,...fe,ref:j,className:a(e.slider,p&&e.sliderDisabled,ae&&e.sliderDragging,Z&&e.sliderHasMarkLabels,v,b?.root),style:{...g?{"--slider-thumb-size":g}:null,...y,...x?.root},onPointerDown:ce,onPointerMove:le,onPointerUp:ue,onKeyDown:k?void 0:e=>J(e,0),children:s(`div`,{ref:A,className:a(e.sliderTrack,b?.track),style:x?.track,children:[o(`div`,{className:a(e.sliderRange,b?.range),style:{...de,...x?.range}}),m?.map(n=>{let r=X(n.value);return s(t.Fragment,{children:[o(`span`,{className:a(e.sliderMark,b?.mark),style:{left:r,...x?.mark}}),n.label!=null&&o(`span`,{className:a(e.sliderMarkLabel,b?.markLabel),style:{left:r,...x?.markLabel},children:n.label})]},n.value)}),H.map((t,n)=>o(`div`,{ref:e=>{M.current[n]=e},className:a(e.sliderThumb,b?.thumb),style:{left:X(t),...x?.thumb},...k?{...$(n),"aria-label":re?.[n]??(n===0?`From`:`To`),tabIndex:p?-1:_,onKeyDown:e=>J(e,n)}:{},children:ee&&o(`span`,{className:a(e.sliderValue,b?.value),style:x?.value,children:Q(t)})},n))]})})}export{l as default};
|
|
1
|
+
"use client";import e from"./slider.module.mjs";import t,{useEffect as n,useRef as r,useState as i}from"react";import a from"classnames";import{jsx as o,jsxs as s}from"react/jsx-runtime";function c(e){let t=String(e),n=t.indexOf(`.`);return n===-1?0:t.length-n-1}function l(l){let{min:u=0,max:d=100,step:f=1,disabled:p=!1,marks:m,showValue:ee=!1,formatValue:h,size:g,tabIndex:_=0,className:v,style:y,classNames:b,styles:x,"aria-label":S,range:C,value:w,defaultValue:T,onChange:te,onChangeEnd:ne,minRange:E=0,thumbLabels:re,...ie}=l,D=te,O=ne,k=C===!0,A=r(null),j=r(null),M=r([]),N=r(null),[ae,P]=i(!1),F=c(f);function I(e){return Math.min(d,Math.max(u,e))}function oe(e){let t=Math.round((e-u)/f)*f+u;return Number(I(t).toFixed(F))}function L(e){if(k){let t=e??[u,d];return[I(t[0]),I(t[1])]}return[I(e??u)]}function R(e){let t=k?2:1;return e.length===t?e:k?[e[0],d]:[e[0]]}let z=w!==void 0,[B,V]=i(()=>L(T)),H=z?L(w):R(B),U=r(H);n(()=>{U.current=H},[H]);function W(e){return k?[e[0],e[1]]:e[0]}function G(e,t){return k?e===0?[u,t[1]-E]:[t[0]+E,d]:[u,d]}function K(e,t,n){let r=U.current,[i,a]=G(e,r),o=oe(t);if(o<i&&(o=Number(Math.max(u,i).toFixed(F))),o>a&&(o=Number(Math.min(d,a).toFixed(F))),o===r[e]){n&&O?.(W(r));return}let s=[...r];s[e]=o,U.current=s,z||V(s),D?.(W(s)),n&&O?.(W(s))}function q(e){let t=A.current;if(!t)return U.current[0];let n=t.getBoundingClientRect(),r=n.width?(e-n.left)/n.width:0;return u+Math.min(1,Math.max(0,r))*(d-u)}function se(e){if(!k)return 0;let[t,n]=U.current,r=Math.abs(e-t),i=Math.abs(e-n);return r===i?+(e>n):r<i?0:1}function ce(e){if(p)return;e.preventDefault();let t=q(e.clientX),n=se(t);(k?M.current[n]:j.current)?.focus(),j.current?.setPointerCapture?.(e.pointerId),N.current=n,P(!0),K(n,t,!1)}function le(e){let t=N.current;t!==null&&K(t,q(e.clientX),!1)}function ue(e){N.current!==null&&(N.current=null,P(!1),j.current?.releasePointerCapture?.(e.pointerId),O?.(W(U.current)))}function J(e,t){if(p)return;let n=f*10,r=H[t],i=null;switch(e.key){case`ArrowRight`:case`ArrowUp`:i=r+f;break;case`ArrowLeft`:case`ArrowDown`:i=r-f;break;case`PageUp`:i=r+n;break;case`PageDown`:i=r-n;break;case`Home`:i=u;break;case`End`:i=d;break;default:return}e.preventDefault(),K(t,i,!0)}let Y=e=>d>u?(I(e)-u)/(d-u):0,X=e=>`${Y(e)*100}%`,de=k?{left:X(H[0]),width:`${(Y(H[1])-Y(H[0]))*100}%`}:{width:X(H[0])},Z=!!m?.some(e=>e.label!=null),Q=e=>h?h(e):e;function $(e){let t=H[e],n=Q(t),[r,i]=G(e,H);return{role:`slider`,"aria-valuemin":Number(Math.max(u,r).toFixed(F)),"aria-valuemax":Number(Math.min(d,i).toFixed(F)),"aria-valuenow":t,"aria-valuetext":typeof n==`string`||typeof n==`number`?String(n):void 0,"aria-orientation":`horizontal`,"aria-disabled":p||void 0}}let fe=k?{role:`group`,"aria-label":S,"aria-disabled":p||void 0}:{...$(0),"aria-label":S,tabIndex:p?-1:_};return o(`div`,{...ie,...fe,ref:j,className:a(e.slider,p&&e.sliderDisabled,ae&&e.sliderDragging,Z&&e.sliderHasMarkLabels,v,b?.root),style:{...g?{"--slider-thumb-size":g}:null,...y,...x?.root},onPointerDown:ce,onPointerMove:le,onPointerUp:ue,onKeyDown:k?void 0:e=>J(e,0),children:s(`div`,{ref:A,className:a(e.sliderTrack,b?.track),style:x?.track,children:[o(`div`,{className:a(e.sliderRange,b?.range),style:{...de,...x?.range}}),m?.map(n=>{let r=X(n.value);return s(t.Fragment,{children:[o(`span`,{className:a(e.sliderMark,b?.mark),style:{left:r,...x?.mark}}),n.label!=null&&o(`span`,{className:a(e.sliderMarkLabel,b?.markLabel),style:{left:r,...x?.markLabel},children:n.label})]},n.value)}),H.map((t,n)=>o(`div`,{ref:e=>{M.current[n]=e},className:a(e.sliderThumb,b?.thumb),style:{left:X(t),...x?.thumb},...k?{...$(n),"aria-label":re?.[n]??(n===0?`From`:`To`),tabIndex:p?-1:_,onKeyDown:e=>J(e,n)}:{},children:ee&&o(`span`,{className:a(e.sliderValue,b?.value),style:x?.value,children:Q(t)})},n))]})})}export{l as default};
|
|
2
2
|
//# sourceMappingURL=slider.mjs.map
|