@yamada-ui/react 2.2.6 → 2.2.7-dev-20260804111744
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/_virtual/_rolldown/runtime.cjs +1 -1
- package/dist/cjs/components/accordion/accordion.cjs +4 -2
- package/dist/cjs/components/accordion/accordion.cjs.map +1 -1
- package/dist/cjs/components/accordion/use-accordion.cjs +1 -0
- package/dist/cjs/components/accordion/use-accordion.cjs.map +1 -1
- package/dist/cjs/components/action-bar/action-bar.cjs +1 -0
- package/dist/cjs/components/action-bar/action-bar.cjs.map +1 -1
- package/dist/cjs/components/action-bar/use-action-bar.cjs +1 -0
- package/dist/cjs/components/action-bar/use-action-bar.cjs.map +1 -1
- package/dist/cjs/components/airy/airy.cjs +1 -0
- package/dist/cjs/components/airy/airy.cjs.map +1 -1
- package/dist/cjs/components/alert/alert.cjs +5 -2
- package/dist/cjs/components/alert/alert.cjs.map +1 -1
- package/dist/cjs/components/alpha-slider/alpha-slider.cjs +1 -0
- package/dist/cjs/components/alpha-slider/alpha-slider.cjs.map +1 -1
- package/dist/cjs/components/aspect-ratio/aspect-ratio.cjs +1 -0
- package/dist/cjs/components/aspect-ratio/aspect-ratio.cjs.map +1 -1
- package/dist/cjs/components/autocomplete/autocomplete.cjs +14 -10
- package/dist/cjs/components/autocomplete/autocomplete.cjs.map +1 -1
- package/dist/cjs/components/autocomplete/use-autocomplete.cjs +1 -0
- package/dist/cjs/components/autocomplete/use-autocomplete.cjs.map +1 -1
- package/dist/cjs/components/avatar/avatar-group.cjs +13 -11
- package/dist/cjs/components/avatar/avatar-group.cjs.map +1 -1
- package/dist/cjs/components/avatar/use-avatar-group.cjs +1 -0
- package/dist/cjs/components/avatar/use-avatar-group.cjs.map +1 -1
- package/dist/cjs/components/avatar/use-avatar.cjs +1 -0
- package/dist/cjs/components/avatar/use-avatar.cjs.map +1 -1
- package/dist/cjs/components/blockquote/blockquote.cjs +1 -0
- package/dist/cjs/components/blockquote/blockquote.cjs.map +1 -1
- package/dist/cjs/components/breadcrumb/breadcrumb.cjs +1 -0
- package/dist/cjs/components/breadcrumb/breadcrumb.cjs.map +1 -1
- package/dist/cjs/components/breadcrumb/use-breadcrumb.cjs +1 -0
- package/dist/cjs/components/breadcrumb/use-breadcrumb.cjs.map +1 -1
- package/dist/cjs/components/button/button-group.cjs +1 -0
- package/dist/cjs/components/button/button-group.cjs.map +1 -1
- package/dist/cjs/components/button/button.cjs +9 -5
- package/dist/cjs/components/button/button.cjs.map +1 -1
- package/dist/cjs/components/calendar/calendar.cjs +1 -0
- package/dist/cjs/components/calendar/calendar.cjs.map +1 -1
- package/dist/cjs/components/calendar/use-calendar.cjs.map +1 -1
- package/dist/cjs/components/carousel/carousel.cjs +27 -25
- package/dist/cjs/components/carousel/carousel.cjs.map +1 -1
- package/dist/cjs/components/carousel/use-carousel.cjs.map +1 -1
- package/dist/cjs/components/chart/area-chart.cjs +6 -4
- package/dist/cjs/components/chart/area-chart.cjs.map +1 -1
- package/dist/cjs/components/chart/bar-chart.cjs +6 -4
- package/dist/cjs/components/chart/bar-chart.cjs.map +1 -1
- package/dist/cjs/components/chart/cartesian-chart.cjs +146 -139
- package/dist/cjs/components/chart/cartesian-chart.cjs.map +1 -1
- package/dist/cjs/components/chart/chart.cjs +3 -1
- package/dist/cjs/components/chart/chart.cjs.map +1 -1
- package/dist/cjs/components/chart/composed-chart.cjs +16 -14
- package/dist/cjs/components/chart/composed-chart.cjs.map +1 -1
- package/dist/cjs/components/chart/donut-chart.cjs +8 -5
- package/dist/cjs/components/chart/donut-chart.cjs.map +1 -1
- package/dist/cjs/components/chart/line-chart.cjs +6 -4
- package/dist/cjs/components/chart/line-chart.cjs.map +1 -1
- package/dist/cjs/components/chart/pie-chart.cjs +8 -5
- package/dist/cjs/components/chart/pie-chart.cjs.map +1 -1
- package/dist/cjs/components/chart/polar-chart.cjs +119 -111
- package/dist/cjs/components/chart/polar-chart.cjs.map +1 -1
- package/dist/cjs/components/chart/radar-chart.cjs +6 -4
- package/dist/cjs/components/chart/radar-chart.cjs.map +1 -1
- package/dist/cjs/components/chart/radial-chart.cjs +1 -0
- package/dist/cjs/components/chart/radial-chart.cjs.map +1 -1
- package/dist/cjs/components/chart/use-cartesian-chart.cjs +1 -0
- package/dist/cjs/components/chart/use-cartesian-chart.cjs.map +1 -1
- package/dist/cjs/components/chart/use-chart.cjs +1 -0
- package/dist/cjs/components/chart/use-chart.cjs.map +1 -1
- package/dist/cjs/components/chart/use-polar-chart.cjs +1 -0
- package/dist/cjs/components/chart/use-polar-chart.cjs.map +1 -1
- package/dist/cjs/components/checkbox/checkbox-group.cjs +39 -36
- package/dist/cjs/components/checkbox/checkbox-group.cjs.map +1 -1
- package/dist/cjs/components/checkbox/checkbox.cjs +1 -0
- package/dist/cjs/components/checkbox/checkbox.cjs.map +1 -1
- package/dist/cjs/components/checkbox/use-checkbox-group.cjs +1 -0
- package/dist/cjs/components/checkbox/use-checkbox-group.cjs.map +1 -1
- package/dist/cjs/components/checkbox/use-checkbox.cjs +3 -1
- package/dist/cjs/components/checkbox/use-checkbox.cjs.map +1 -1
- package/dist/cjs/components/checkbox-card/checkbox-card-group.cjs +43 -40
- package/dist/cjs/components/checkbox-card/checkbox-card-group.cjs.map +1 -1
- package/dist/cjs/components/checkbox-card/checkbox-card.cjs +1 -0
- package/dist/cjs/components/checkbox-card/checkbox-card.cjs.map +1 -1
- package/dist/cjs/components/circle-progress/circle-progress.cjs.map +1 -1
- package/dist/cjs/components/client-only/client-only.cjs +2 -1
- package/dist/cjs/components/client-only/client-only.cjs.map +1 -1
- package/dist/cjs/components/collapse/collapse.cjs +1 -0
- package/dist/cjs/components/collapse/collapse.cjs.map +1 -1
- package/dist/cjs/components/color-picker/color-picker.cjs +3 -1
- package/dist/cjs/components/color-picker/color-picker.cjs.map +1 -1
- package/dist/cjs/components/color-picker/use-color-picker.cjs +1 -0
- package/dist/cjs/components/color-picker/use-color-picker.cjs.map +1 -1
- package/dist/cjs/components/color-selector/color-selector.cjs +3 -1
- package/dist/cjs/components/color-selector/color-selector.cjs.map +1 -1
- package/dist/cjs/components/color-selector/use-color-selector.cjs +1 -0
- package/dist/cjs/components/color-selector/use-color-selector.cjs.map +1 -1
- package/dist/cjs/components/color-swatch/color-swatch.cjs.map +1 -1
- package/dist/cjs/components/data-list/data-list.cjs +9 -5
- package/dist/cjs/components/data-list/data-list.cjs.map +1 -1
- package/dist/cjs/components/date-picker/date-picker.cjs +3 -1
- package/dist/cjs/components/date-picker/date-picker.cjs.map +1 -1
- package/dist/cjs/components/date-picker/use-date-picker.cjs.map +1 -1
- package/dist/cjs/components/drawer/drawer.cjs +1 -0
- package/dist/cjs/components/drawer/drawer.cjs.map +1 -1
- package/dist/cjs/components/drawer/use-drawer.cjs +2 -3
- package/dist/cjs/components/drawer/use-drawer.cjs.map +1 -1
- package/dist/cjs/components/dropzone/dropzone.cjs +3 -1
- package/dist/cjs/components/dropzone/dropzone.cjs.map +1 -1
- package/dist/cjs/components/dropzone/use-dropzone.cjs +1 -0
- package/dist/cjs/components/dropzone/use-dropzone.cjs.map +1 -1
- package/dist/cjs/components/editable/editable.cjs.map +1 -1
- package/dist/cjs/components/editable/use-editable.cjs +1 -0
- package/dist/cjs/components/editable/use-editable.cjs.map +1 -1
- package/dist/cjs/components/fade/fade.cjs +1 -0
- package/dist/cjs/components/fade/fade.cjs.map +1 -1
- package/dist/cjs/components/fade-scale/fade-scale.cjs +1 -0
- package/dist/cjs/components/fade-scale/fade-scale.cjs.map +1 -1
- package/dist/cjs/components/field/field.cjs +1 -0
- package/dist/cjs/components/field/field.cjs.map +1 -1
- package/dist/cjs/components/field/use-field-props.cjs +1 -0
- package/dist/cjs/components/field/use-field-props.cjs.map +1 -1
- package/dist/cjs/components/fieldset/fieldset.cjs +1 -0
- package/dist/cjs/components/fieldset/fieldset.cjs.map +1 -1
- package/dist/cjs/components/file-button/use-file-button.cjs +1 -0
- package/dist/cjs/components/file-button/use-file-button.cjs.map +1 -1
- package/dist/cjs/components/file-input/file-input.cjs +3 -1
- package/dist/cjs/components/file-input/file-input.cjs.map +1 -1
- package/dist/cjs/components/file-input/use-file-input.cjs +1 -0
- package/dist/cjs/components/file-input/use-file-input.cjs.map +1 -1
- package/dist/cjs/components/flip/flip.cjs +1 -0
- package/dist/cjs/components/flip/flip.cjs.map +1 -1
- package/dist/cjs/components/float/float.cjs.map +1 -1
- package/dist/cjs/components/focus-lock/focus-lock.cjs.map +1 -1
- package/dist/cjs/components/for/for.cjs.map +1 -1
- package/dist/cjs/components/form/form.cjs +1 -0
- package/dist/cjs/components/form/form.cjs.map +1 -1
- package/dist/cjs/components/format/use-format-byte.cjs +1 -0
- package/dist/cjs/components/format/use-format-byte.cjs.map +1 -1
- package/dist/cjs/components/format/use-format-date-time.cjs +1 -0
- package/dist/cjs/components/format/use-format-date-time.cjs.map +1 -1
- package/dist/cjs/components/format/use-format-number.cjs +1 -0
- package/dist/cjs/components/format/use-format-number.cjs.map +1 -1
- package/dist/cjs/components/grid/grid-item.cjs.map +1 -1
- package/dist/cjs/components/group/group.cjs.map +1 -1
- package/dist/cjs/components/group/use-group.cjs +1 -0
- package/dist/cjs/components/group/use-group.cjs.map +1 -1
- package/dist/cjs/components/highlight/highlight.cjs +1 -0
- package/dist/cjs/components/highlight/highlight.cjs.map +1 -1
- package/dist/cjs/components/highlight/use-highlight.cjs +1 -0
- package/dist/cjs/components/highlight/use-highlight.cjs.map +1 -1
- package/dist/cjs/components/hue-slider/hue-slider.cjs +1 -0
- package/dist/cjs/components/hue-slider/hue-slider.cjs.map +1 -1
- package/dist/cjs/components/icon/icons/index.cjs +30 -6
- package/dist/cjs/components/icon/icons/index.cjs.map +1 -1
- package/dist/cjs/components/icon/icons/layout-freeform-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/layout-freeform-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/icons/mic-audio-lines-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/mic-audio-lines-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/icons/mic-signal-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/mic-signal-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/icons/mosque-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/mosque-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/icons/rotate-ccw-clock-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/rotate-ccw-clock-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/icons/rotate-cw-fading-clock-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/rotate-cw-fading-clock-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/icons/scan-square-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/scan-square-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/icons/shield-keyhole-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/shield-keyhole-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/icons/square-off-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/square-off-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/icons/user-shield-icon.cjs +14 -0
- package/dist/cjs/components/icon/icons/user-shield-icon.cjs.map +1 -0
- package/dist/cjs/components/icon/index.cjs +20 -4
- package/dist/cjs/components/indicator/indicator.cjs +1 -0
- package/dist/cjs/components/indicator/indicator.cjs.map +1 -1
- package/dist/cjs/components/infinite-scroll-area/infinite-scroll-area.cjs +3 -1
- package/dist/cjs/components/infinite-scroll-area/infinite-scroll-area.cjs.map +1 -1
- package/dist/cjs/components/infinite-scroll-area/use-infinite-scroll.cjs +1 -0
- package/dist/cjs/components/infinite-scroll-area/use-infinite-scroll.cjs.map +1 -1
- package/dist/cjs/components/input/input-group.cjs +14 -12
- package/dist/cjs/components/input/input-group.cjs.map +1 -1
- package/dist/cjs/components/input/input.style.cjs.map +1 -1
- package/dist/cjs/components/input/use-input-border.cjs +1 -0
- package/dist/cjs/components/input/use-input-border.cjs.map +1 -1
- package/dist/cjs/components/link-box/link-box.cjs.map +1 -1
- package/dist/cjs/components/list/list.cjs +1 -0
- package/dist/cjs/components/list/list.cjs.map +1 -1
- package/dist/cjs/components/loading/audio.cjs.map +1 -1
- package/dist/cjs/components/loading/background.cjs +1 -0
- package/dist/cjs/components/loading/background.cjs.map +1 -1
- package/dist/cjs/components/loading/circles.cjs.map +1 -1
- package/dist/cjs/components/loading/dots.cjs.map +1 -1
- package/dist/cjs/components/loading/grid.cjs.map +1 -1
- package/dist/cjs/components/loading/loading-provider.cjs +1 -0
- package/dist/cjs/components/loading/loading-provider.cjs.map +1 -1
- package/dist/cjs/components/loading/oval.cjs.map +1 -1
- package/dist/cjs/components/loading/page.cjs +1 -0
- package/dist/cjs/components/loading/page.cjs.map +1 -1
- package/dist/cjs/components/loading/puff.cjs.map +1 -1
- package/dist/cjs/components/loading/rings.cjs.map +1 -1
- package/dist/cjs/components/loading/screen.cjs +1 -0
- package/dist/cjs/components/loading/screen.cjs.map +1 -1
- package/dist/cjs/components/loading/suspense.cjs +1 -0
- package/dist/cjs/components/loading/suspense.cjs.map +1 -1
- package/dist/cjs/components/loading/use-loading-component.cjs +1 -0
- package/dist/cjs/components/loading/use-loading-component.cjs.map +1 -1
- package/dist/cjs/components/menu/menu.cjs +13 -10
- package/dist/cjs/components/menu/menu.cjs.map +1 -1
- package/dist/cjs/components/menu/use-menu.cjs +1 -0
- package/dist/cjs/components/menu/use-menu.cjs.map +1 -1
- package/dist/cjs/components/modal/modal.cjs +1 -0
- package/dist/cjs/components/modal/modal.cjs.map +1 -1
- package/dist/cjs/components/modal/use-modal.cjs +1 -0
- package/dist/cjs/components/modal/use-modal.cjs.map +1 -1
- package/dist/cjs/components/motion/motion.cjs +1 -0
- package/dist/cjs/components/motion/motion.cjs.map +1 -1
- package/dist/cjs/components/motion/transition.cjs.map +1 -1
- package/dist/cjs/components/native-accordion/native-accordion.cjs +1 -0
- package/dist/cjs/components/native-accordion/native-accordion.cjs.map +1 -1
- package/dist/cjs/components/native-accordion/use-native-accordion.cjs +1 -0
- package/dist/cjs/components/native-accordion/use-native-accordion.cjs.map +1 -1
- package/dist/cjs/components/native-popover/native-popover.cjs +1 -0
- package/dist/cjs/components/native-popover/native-popover.cjs.map +1 -1
- package/dist/cjs/components/native-popover/use-native-popover.cjs +1 -0
- package/dist/cjs/components/native-popover/use-native-popover.cjs.map +1 -1
- package/dist/cjs/components/native-select/native-select.cjs +2 -1
- package/dist/cjs/components/native-select/native-select.cjs.map +1 -1
- package/dist/cjs/components/native-select/use-native-select.cjs +1 -0
- package/dist/cjs/components/native-select/use-native-select.cjs.map +1 -1
- package/dist/cjs/components/notice/notice-provider.cjs +1 -0
- package/dist/cjs/components/notice/notice-provider.cjs.map +1 -1
- package/dist/cjs/components/notice/notice.cjs +1 -0
- package/dist/cjs/components/notice/notice.cjs.map +1 -1
- package/dist/cjs/components/notice/use-notice.cjs +1 -0
- package/dist/cjs/components/notice/use-notice.cjs.map +1 -1
- package/dist/cjs/components/number-input/number-input.cjs +2 -1
- package/dist/cjs/components/number-input/number-input.cjs.map +1 -1
- package/dist/cjs/components/number-input/use-number-counter.cjs +1 -0
- package/dist/cjs/components/number-input/use-number-counter.cjs.map +1 -1
- package/dist/cjs/components/number-input/use-number-input.cjs +1 -0
- package/dist/cjs/components/number-input/use-number-input.cjs.map +1 -1
- package/dist/cjs/components/number-input/use-spinner.cjs +1 -0
- package/dist/cjs/components/number-input/use-spinner.cjs.map +1 -1
- package/dist/cjs/components/pagination/pagination.cjs +1 -0
- package/dist/cjs/components/pagination/pagination.cjs.map +1 -1
- package/dist/cjs/components/pagination/use-pagination.cjs +1 -0
- package/dist/cjs/components/pagination/use-pagination.cjs.map +1 -1
- package/dist/cjs/components/password-input/password-input.cjs +2 -1
- package/dist/cjs/components/password-input/password-input.cjs.map +1 -1
- package/dist/cjs/components/password-input/use-password-input.cjs +1 -0
- package/dist/cjs/components/password-input/use-password-input.cjs.map +1 -1
- package/dist/cjs/components/password-input/use-strength-meter.cjs +1 -0
- package/dist/cjs/components/password-input/use-strength-meter.cjs.map +1 -1
- package/dist/cjs/components/picture/picture.cjs +1 -0
- package/dist/cjs/components/picture/picture.cjs.map +1 -1
- package/dist/cjs/components/pin-input/pin-input.cjs +1 -0
- package/dist/cjs/components/pin-input/pin-input.cjs.map +1 -1
- package/dist/cjs/components/pin-input/use-pin-input.cjs +1 -0
- package/dist/cjs/components/pin-input/use-pin-input.cjs.map +1 -1
- package/dist/cjs/components/popover/popover.cjs +1 -0
- package/dist/cjs/components/popover/popover.cjs.map +1 -1
- package/dist/cjs/components/popover/use-popover.cjs +1 -0
- package/dist/cjs/components/popover/use-popover.cjs.map +1 -1
- package/dist/cjs/components/portal/portal.cjs +1 -0
- package/dist/cjs/components/portal/portal.cjs.map +1 -1
- package/dist/cjs/components/progress/progress.cjs.map +1 -1
- package/dist/cjs/components/progress/use-progress.cjs +1 -0
- package/dist/cjs/components/progress/use-progress.cjs.map +1 -1
- package/dist/cjs/components/qr-code/qr-code.cjs +1 -0
- package/dist/cjs/components/qr-code/qr-code.cjs.map +1 -1
- package/dist/cjs/components/qr-code/use-qr-code.cjs +1 -0
- package/dist/cjs/components/qr-code/use-qr-code.cjs.map +1 -1
- package/dist/cjs/components/radio/radio-group.cjs +37 -34
- package/dist/cjs/components/radio/radio-group.cjs.map +1 -1
- package/dist/cjs/components/radio/radio.cjs +1 -0
- package/dist/cjs/components/radio/radio.cjs.map +1 -1
- package/dist/cjs/components/radio/use-radio-group.cjs +1 -0
- package/dist/cjs/components/radio/use-radio-group.cjs.map +1 -1
- package/dist/cjs/components/radio/use-radio.cjs +3 -1
- package/dist/cjs/components/radio/use-radio.cjs.map +1 -1
- package/dist/cjs/components/radio-card/radio-card-group.cjs +41 -38
- package/dist/cjs/components/radio-card/radio-card-group.cjs.map +1 -1
- package/dist/cjs/components/radio-card/radio-card.cjs +1 -0
- package/dist/cjs/components/radio-card/radio-card.cjs.map +1 -1
- package/dist/cjs/components/rating/rating.cjs +1 -0
- package/dist/cjs/components/rating/rating.cjs.map +1 -1
- package/dist/cjs/components/rating/use-rating.cjs +1 -0
- package/dist/cjs/components/rating/use-rating.cjs.map +1 -1
- package/dist/cjs/components/reorder/use-reorder.cjs +1 -0
- package/dist/cjs/components/reorder/use-reorder.cjs.map +1 -1
- package/dist/cjs/components/resizable/resizable.cjs +13 -10
- package/dist/cjs/components/resizable/resizable.cjs.map +1 -1
- package/dist/cjs/components/resizable/use-resizable.cjs +1 -0
- package/dist/cjs/components/resizable/use-resizable.cjs.map +1 -1
- package/dist/cjs/components/ripple/ripple.cjs.map +1 -1
- package/dist/cjs/components/ripple/use-ripple.cjs +1 -0
- package/dist/cjs/components/ripple/use-ripple.cjs.map +1 -1
- package/dist/cjs/components/rotate/rotate.cjs +1 -0
- package/dist/cjs/components/rotate/rotate.cjs.map +1 -1
- package/dist/cjs/components/saturation-slider/saturation-slider.cjs +1 -0
- package/dist/cjs/components/saturation-slider/saturation-slider.cjs.map +1 -1
- package/dist/cjs/components/saturation-slider/use-saturation-slider.cjs +1 -0
- package/dist/cjs/components/saturation-slider/use-saturation-slider.cjs.map +1 -1
- package/dist/cjs/components/scroll-area/use-scroll-area.cjs +1 -0
- package/dist/cjs/components/scroll-area/use-scroll-area.cjs.map +1 -1
- package/dist/cjs/components/segmented-control/segmented-control.cjs +3 -1
- package/dist/cjs/components/segmented-control/segmented-control.cjs.map +1 -1
- package/dist/cjs/components/segmented-control/use-segmented-control.cjs +1 -0
- package/dist/cjs/components/segmented-control/use-segmented-control.cjs.map +1 -1
- package/dist/cjs/components/select/select.cjs +14 -10
- package/dist/cjs/components/select/select.cjs.map +1 -1
- package/dist/cjs/components/select/use-select.cjs +1 -0
- package/dist/cjs/components/select/use-select.cjs.map +1 -1
- package/dist/cjs/components/show/show.cjs +1 -0
- package/dist/cjs/components/show/show.cjs.map +1 -1
- package/dist/cjs/components/sidebar/sidebar.cjs +6 -3
- package/dist/cjs/components/sidebar/sidebar.cjs.map +1 -1
- package/dist/cjs/components/sidebar/use-sidebar.cjs +1 -0
- package/dist/cjs/components/sidebar/use-sidebar.cjs.map +1 -1
- package/dist/cjs/components/simple-grid/simple-grid.cjs +1 -0
- package/dist/cjs/components/simple-grid/simple-grid.cjs.map +1 -1
- package/dist/cjs/components/skeleton/skeleton.cjs.map +1 -1
- package/dist/cjs/components/slide/slide.cjs +1 -0
- package/dist/cjs/components/slide/slide.cjs.map +1 -1
- package/dist/cjs/components/slide-fade/slide-fade.cjs +1 -0
- package/dist/cjs/components/slide-fade/slide-fade.cjs.map +1 -1
- package/dist/cjs/components/slider/slider.cjs +3 -1
- package/dist/cjs/components/slider/slider.cjs.map +1 -1
- package/dist/cjs/components/slider/use-slider.cjs +3 -1
- package/dist/cjs/components/slider/use-slider.cjs.map +1 -1
- package/dist/cjs/components/slot/slot.cjs +1 -0
- package/dist/cjs/components/slot/slot.cjs.map +1 -1
- package/dist/cjs/components/snacks/snacks.cjs +1 -0
- package/dist/cjs/components/snacks/snacks.cjs.map +1 -1
- package/dist/cjs/components/snacks/use-snacks.cjs +1 -0
- package/dist/cjs/components/snacks/use-snacks.cjs.map +1 -1
- package/dist/cjs/components/stack/stack.cjs +1 -0
- package/dist/cjs/components/stack/stack.cjs.map +1 -1
- package/dist/cjs/components/stack/z-stack.cjs +5 -2
- package/dist/cjs/components/stack/z-stack.cjs.map +1 -1
- package/dist/cjs/components/steps/steps.cjs +51 -47
- package/dist/cjs/components/steps/steps.cjs.map +1 -1
- package/dist/cjs/components/steps/use-steps.cjs +1 -0
- package/dist/cjs/components/steps/use-steps.cjs.map +1 -1
- package/dist/cjs/components/switch/switch.cjs.map +1 -1
- package/dist/cjs/components/switch/use-switch.cjs +1 -0
- package/dist/cjs/components/switch/use-switch.cjs.map +1 -1
- package/dist/cjs/components/table/table.cjs +51 -49
- package/dist/cjs/components/table/table.cjs.map +1 -1
- package/dist/cjs/components/tabs/tabs.cjs +23 -20
- package/dist/cjs/components/tabs/tabs.cjs.map +1 -1
- package/dist/cjs/components/tabs/use-tabs.cjs +1 -0
- package/dist/cjs/components/tabs/use-tabs.cjs.map +1 -1
- package/dist/cjs/components/tag/tag.cjs +1 -0
- package/dist/cjs/components/tag/tag.cjs.map +1 -1
- package/dist/cjs/components/textarea/use-autosize.cjs +1 -0
- package/dist/cjs/components/textarea/use-autosize.cjs.map +1 -1
- package/dist/cjs/components/textarea/use-textarea.cjs +1 -0
- package/dist/cjs/components/textarea/use-textarea.cjs.map +1 -1
- package/dist/cjs/components/timeline/timeline.cjs +1 -0
- package/dist/cjs/components/timeline/timeline.cjs.map +1 -1
- package/dist/cjs/components/tip/tip.cjs.map +1 -1
- package/dist/cjs/components/toggle/toggle-group.cjs +27 -24
- package/dist/cjs/components/toggle/toggle-group.cjs.map +1 -1
- package/dist/cjs/components/toggle/use-toggle-group.cjs +1 -0
- package/dist/cjs/components/toggle/use-toggle-group.cjs.map +1 -1
- package/dist/cjs/components/toggle/use-toggle.cjs +1 -0
- package/dist/cjs/components/toggle/use-toggle.cjs.map +1 -1
- package/dist/cjs/components/tooltip/tooltip.cjs.map +1 -1
- package/dist/cjs/components/tooltip/use-tooltip.cjs +1 -0
- package/dist/cjs/components/tooltip/use-tooltip.cjs.map +1 -1
- package/dist/cjs/components/tree/tree.cjs +1 -0
- package/dist/cjs/components/tree/tree.cjs.map +1 -1
- package/dist/cjs/components/tree/use-tree.cjs +1 -0
- package/dist/cjs/components/tree/use-tree.cjs.map +1 -1
- package/dist/cjs/core/components/create-component.cjs +5 -2
- package/dist/cjs/core/components/create-component.cjs.map +1 -1
- package/dist/cjs/core/components/props.cjs.map +1 -1
- package/dist/cjs/core/components/use-component-style.cjs +11 -6
- package/dist/cjs/core/components/use-component-style.cjs.map +1 -1
- package/dist/cjs/core/components/utils.cjs.map +1 -1
- package/dist/cjs/core/css/animation.cjs.map +1 -1
- package/dist/cjs/core/css/at-rule.cjs.map +1 -1
- package/dist/cjs/core/css/calc.cjs.map +1 -1
- package/dist/cjs/core/css/color-mix.cjs.map +1 -1
- package/dist/cjs/core/css/color-scheme.cjs.map +1 -1
- package/dist/cjs/core/css/config.cjs.map +1 -1
- package/dist/cjs/core/css/css.cjs +5 -3
- package/dist/cjs/core/css/css.cjs.map +1 -1
- package/dist/cjs/core/css/gradient.cjs.map +1 -1
- package/dist/cjs/core/css/merge-css.cjs.map +1 -1
- package/dist/cjs/core/css/style.cjs.map +1 -1
- package/dist/cjs/core/css/use-css.cjs +1 -0
- package/dist/cjs/core/css/use-css.cjs.map +1 -1
- package/dist/cjs/core/css/use-inject-vars.cjs +1 -0
- package/dist/cjs/core/css/use-inject-vars.cjs.map +1 -1
- package/dist/cjs/core/css/utils.cjs.map +1 -1
- package/dist/cjs/core/system/breakpoint.cjs.map +1 -1
- package/dist/cjs/core/system/color-mode-provider.cjs +1 -0
- package/dist/cjs/core/system/color-mode-provider.cjs.map +1 -1
- package/dist/cjs/core/system/create-system.cjs.map +1 -1
- package/dist/cjs/core/system/environment-provider.cjs +1 -0
- package/dist/cjs/core/system/environment-provider.cjs.map +1 -1
- package/dist/cjs/core/system/layer.cjs.map +1 -1
- package/dist/cjs/core/system/storage-script.cjs.map +1 -1
- package/dist/cjs/core/system/styled.cjs.map +1 -1
- package/dist/cjs/core/system/system-provider.cjs +1 -0
- package/dist/cjs/core/system/system-provider.cjs.map +1 -1
- package/dist/cjs/core/system/theme-provider.cjs +5 -3
- package/dist/cjs/core/system/theme-provider.cjs.map +1 -1
- package/dist/cjs/core/system/use-system-color-mode.cjs +1 -0
- package/dist/cjs/core/system/use-system-color-mode.cjs.map +1 -1
- package/dist/cjs/core/system/var.cjs +2 -1
- package/dist/cjs/core/system/var.cjs.map +1 -1
- package/dist/cjs/hooks/use-animation/index.cjs +4 -2
- package/dist/cjs/hooks/use-animation/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-async/index.cjs +1 -0
- package/dist/cjs/hooks/use-async/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-async-callback/index.cjs +1 -0
- package/dist/cjs/hooks/use-async-callback/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-boolean/index.cjs +1 -0
- package/dist/cjs/hooks/use-boolean/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-breakpoint/use-breakpoint-effect.cjs +1 -0
- package/dist/cjs/hooks/use-breakpoint/use-breakpoint-effect.cjs.map +1 -1
- package/dist/cjs/hooks/use-breakpoint/use-breakpoint-state.cjs +3 -1
- package/dist/cjs/hooks/use-breakpoint/use-breakpoint-state.cjs.map +1 -1
- package/dist/cjs/hooks/use-breakpoint/use-breakpoint-value.cjs +1 -0
- package/dist/cjs/hooks/use-breakpoint/use-breakpoint-value.cjs.map +1 -1
- package/dist/cjs/hooks/use-breakpoint/use-breakpoint.cjs +1 -0
- package/dist/cjs/hooks/use-breakpoint/use-breakpoint.cjs.map +1 -1
- package/dist/cjs/hooks/use-clickable/index.cjs +1 -0
- package/dist/cjs/hooks/use-clickable/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-clipboard/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-combobox/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-controllable-state/index.cjs +1 -0
- package/dist/cjs/hooks/use-controllable-state/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-counter/index.cjs +1 -0
- package/dist/cjs/hooks/use-counter/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-descendants/index.cjs +1 -0
- package/dist/cjs/hooks/use-descendants/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-disclosure/use-disclosure.cjs +1 -0
- package/dist/cjs/hooks/use-disclosure/use-disclosure.cjs.map +1 -1
- package/dist/cjs/hooks/use-disclosure/use-promise-disclosure.cjs +1 -0
- package/dist/cjs/hooks/use-disclosure/use-promise-disclosure.cjs.map +1 -1
- package/dist/cjs/hooks/use-event-listener/index.cjs +1 -0
- package/dist/cjs/hooks/use-event-listener/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-eye-dropper/index.cjs +1 -0
- package/dist/cjs/hooks/use-eye-dropper/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-field-sizing/index.cjs +1 -0
- package/dist/cjs/hooks/use-field-sizing/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-focus/index.cjs +3 -1
- package/dist/cjs/hooks/use-focus/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-hover/index.cjs +1 -0
- package/dist/cjs/hooks/use-hover/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-idle/index.cjs +1 -0
- package/dist/cjs/hooks/use-idle/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-interval/index.cjs +1 -0
- package/dist/cjs/hooks/use-interval/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-lazy-mount/index.cjs +1 -0
- package/dist/cjs/hooks/use-lazy-mount/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-local-storage/index.cjs +1 -0
- package/dist/cjs/hooks/use-local-storage/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-media-query/index.cjs +1 -0
- package/dist/cjs/hooks/use-media-query/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-mounted/index.cjs +1 -0
- package/dist/cjs/hooks/use-mounted/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-online/index.cjs +1 -0
- package/dist/cjs/hooks/use-online/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-os/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-outside-click/index.cjs +1 -0
- package/dist/cjs/hooks/use-outside-click/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-pan-event/index.cjs +1 -0
- package/dist/cjs/hooks/use-pan-event/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-popper/index.cjs +1 -0
- package/dist/cjs/hooks/use-popper/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-previous/index.cjs +1 -0
- package/dist/cjs/hooks/use-previous/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-processing/index.cjs +1 -0
- package/dist/cjs/hooks/use-processing/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-resize-observer/index.cjs +1 -0
- package/dist/cjs/hooks/use-resize-observer/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-timeout/index.cjs +1 -0
- package/dist/cjs/hooks/use-timeout/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-value/index.cjs +1 -0
- package/dist/cjs/hooks/use-value/index.cjs.map +1 -1
- package/dist/cjs/hooks/use-window-event/index.cjs +1 -0
- package/dist/cjs/hooks/use-window-event/index.cjs.map +1 -1
- package/dist/cjs/index.cjs +30 -6
- package/dist/cjs/providers/i18n-provider/i18n-provider.cjs.map +1 -1
- package/dist/cjs/providers/ui-provider/ui-provider.cjs.map +1 -1
- package/dist/cjs/utils/children.cjs.map +1 -1
- package/dist/cjs/utils/context.cjs.map +1 -1
- package/dist/cjs/utils/dom.cjs.map +1 -1
- package/dist/cjs/utils/ref.cjs.map +1 -1
- package/dist/cjs/utils/ssr.cjs +1 -0
- package/dist/cjs/utils/ssr.cjs.map +1 -1
- package/dist/cjs/utils/store.cjs +1 -0
- package/dist/cjs/utils/store.cjs.map +1 -1
- package/dist/esm/components/accordion/accordion.js +3 -2
- package/dist/esm/components/accordion/accordion.js.map +1 -1
- package/dist/esm/components/accordion/use-accordion.js.map +1 -1
- package/dist/esm/components/action-bar/action-bar.js.map +1 -1
- package/dist/esm/components/action-bar/use-action-bar.js.map +1 -1
- package/dist/esm/components/airy/airy.js.map +1 -1
- package/dist/esm/components/alert/alert.js +4 -2
- package/dist/esm/components/alert/alert.js.map +1 -1
- package/dist/esm/components/alpha-slider/alpha-slider.js.map +1 -1
- package/dist/esm/components/aspect-ratio/aspect-ratio.js.map +1 -1
- package/dist/esm/components/autocomplete/autocomplete.js +13 -10
- package/dist/esm/components/autocomplete/autocomplete.js.map +1 -1
- package/dist/esm/components/autocomplete/use-autocomplete.js.map +1 -1
- package/dist/esm/components/avatar/avatar-group.js +12 -11
- package/dist/esm/components/avatar/avatar-group.js.map +1 -1
- package/dist/esm/components/avatar/use-avatar-group.js.map +1 -1
- package/dist/esm/components/avatar/use-avatar.js.map +1 -1
- package/dist/esm/components/breadcrumb/use-breadcrumb.js.map +1 -1
- package/dist/esm/components/button/button.js +8 -5
- package/dist/esm/components/button/button.js.map +1 -1
- package/dist/esm/components/calendar/calendar.js.map +1 -1
- package/dist/esm/components/calendar/use-calendar.js.map +1 -1
- package/dist/esm/components/carousel/carousel.js +26 -25
- package/dist/esm/components/carousel/carousel.js.map +1 -1
- package/dist/esm/components/carousel/use-carousel.js.map +1 -1
- package/dist/esm/components/chart/area-chart.js +5 -4
- package/dist/esm/components/chart/area-chart.js.map +1 -1
- package/dist/esm/components/chart/bar-chart.js +5 -4
- package/dist/esm/components/chart/bar-chart.js.map +1 -1
- package/dist/esm/components/chart/cartesian-chart.js +145 -139
- package/dist/esm/components/chart/cartesian-chart.js.map +1 -1
- package/dist/esm/components/chart/chart.js +2 -1
- package/dist/esm/components/chart/chart.js.map +1 -1
- package/dist/esm/components/chart/composed-chart.js +15 -14
- package/dist/esm/components/chart/composed-chart.js.map +1 -1
- package/dist/esm/components/chart/donut-chart.js +7 -5
- package/dist/esm/components/chart/donut-chart.js.map +1 -1
- package/dist/esm/components/chart/line-chart.js +5 -4
- package/dist/esm/components/chart/line-chart.js.map +1 -1
- package/dist/esm/components/chart/pie-chart.js +7 -5
- package/dist/esm/components/chart/pie-chart.js.map +1 -1
- package/dist/esm/components/chart/polar-chart.js +118 -111
- package/dist/esm/components/chart/polar-chart.js.map +1 -1
- package/dist/esm/components/chart/radar-chart.js +5 -4
- package/dist/esm/components/chart/radar-chart.js.map +1 -1
- package/dist/esm/components/chart/use-cartesian-chart.js.map +1 -1
- package/dist/esm/components/chart/use-chart.js.map +1 -1
- package/dist/esm/components/chart/use-polar-chart.js.map +1 -1
- package/dist/esm/components/checkbox/checkbox-group.js +38 -36
- package/dist/esm/components/checkbox/checkbox-group.js.map +1 -1
- package/dist/esm/components/checkbox/use-checkbox-group.js.map +1 -1
- package/dist/esm/components/checkbox/use-checkbox.js +2 -1
- package/dist/esm/components/checkbox/use-checkbox.js.map +1 -1
- package/dist/esm/components/checkbox-card/checkbox-card-group.js +42 -40
- package/dist/esm/components/checkbox-card/checkbox-card-group.js.map +1 -1
- package/dist/esm/components/circle-progress/circle-progress.js.map +1 -1
- package/dist/esm/components/client-only/client-only.js +2 -1
- package/dist/esm/components/client-only/client-only.js.map +1 -1
- package/dist/esm/components/collapse/collapse.js.map +1 -1
- package/dist/esm/components/color-picker/color-picker.js +2 -1
- package/dist/esm/components/color-picker/color-picker.js.map +1 -1
- package/dist/esm/components/color-picker/use-color-picker.js.map +1 -1
- package/dist/esm/components/color-selector/color-selector.js +2 -1
- package/dist/esm/components/color-selector/color-selector.js.map +1 -1
- package/dist/esm/components/color-selector/use-color-selector.js.map +1 -1
- package/dist/esm/components/color-swatch/color-swatch.js.map +1 -1
- package/dist/esm/components/data-list/data-list.js +8 -5
- package/dist/esm/components/data-list/data-list.js.map +1 -1
- package/dist/esm/components/date-picker/date-picker.js +2 -1
- package/dist/esm/components/date-picker/date-picker.js.map +1 -1
- package/dist/esm/components/date-picker/use-date-picker.js.map +1 -1
- package/dist/esm/components/drawer/drawer.js.map +1 -1
- package/dist/esm/components/drawer/use-drawer.js +1 -3
- package/dist/esm/components/drawer/use-drawer.js.map +1 -1
- package/dist/esm/components/dropzone/dropzone.js +2 -1
- package/dist/esm/components/dropzone/dropzone.js.map +1 -1
- package/dist/esm/components/dropzone/use-dropzone.js.map +1 -1
- package/dist/esm/components/editable/editable.js.map +1 -1
- package/dist/esm/components/editable/use-editable.js.map +1 -1
- package/dist/esm/components/field/field.js.map +1 -1
- package/dist/esm/components/field/use-field-props.js.map +1 -1
- package/dist/esm/components/fieldset/fieldset.js.map +1 -1
- package/dist/esm/components/file-input/file-input.js +2 -1
- package/dist/esm/components/file-input/file-input.js.map +1 -1
- package/dist/esm/components/file-input/use-file-input.js.map +1 -1
- package/dist/esm/components/flip/flip.js.map +1 -1
- package/dist/esm/components/float/float.js.map +1 -1
- package/dist/esm/components/focus-lock/focus-lock.js.map +1 -1
- package/dist/esm/components/for/for.js.map +1 -1
- package/dist/esm/components/form/form.js.map +1 -1
- package/dist/esm/components/grid/grid-item.js.map +1 -1
- package/dist/esm/components/group/group.js.map +1 -1
- package/dist/esm/components/group/use-group.js.map +1 -1
- package/dist/esm/components/highlight/use-highlight.js.map +1 -1
- package/dist/esm/components/icon/icons/index.js +21 -5
- package/dist/esm/components/icon/icons/index.js.map +1 -1
- package/dist/esm/components/icon/icons/layout-freeform-icon.js +14 -0
- package/dist/esm/components/icon/icons/layout-freeform-icon.js.map +1 -0
- package/dist/esm/components/icon/icons/mic-audio-lines-icon.js +14 -0
- package/dist/esm/components/icon/icons/mic-audio-lines-icon.js.map +1 -0
- package/dist/esm/components/icon/icons/mic-signal-icon.js +14 -0
- package/dist/esm/components/icon/icons/mic-signal-icon.js.map +1 -0
- package/dist/esm/components/icon/icons/mosque-icon.js +14 -0
- package/dist/esm/components/icon/icons/mosque-icon.js.map +1 -0
- package/dist/esm/components/icon/icons/rotate-ccw-clock-icon.js +14 -0
- package/dist/esm/components/icon/icons/rotate-ccw-clock-icon.js.map +1 -0
- package/dist/esm/components/icon/icons/rotate-cw-fading-clock-icon.js +14 -0
- package/dist/esm/components/icon/icons/rotate-cw-fading-clock-icon.js.map +1 -0
- package/dist/esm/components/icon/icons/scan-square-icon.js +14 -0
- package/dist/esm/components/icon/icons/scan-square-icon.js.map +1 -0
- package/dist/esm/components/icon/icons/shield-keyhole-icon.js +14 -0
- package/dist/esm/components/icon/icons/shield-keyhole-icon.js.map +1 -0
- package/dist/esm/components/icon/icons/square-off-icon.js +14 -0
- package/dist/esm/components/icon/icons/square-off-icon.js.map +1 -0
- package/dist/esm/components/icon/icons/user-shield-icon.js +14 -0
- package/dist/esm/components/icon/icons/user-shield-icon.js.map +1 -0
- package/dist/esm/components/icon/index.js +11 -3
- package/dist/esm/components/indicator/indicator.js.map +1 -1
- package/dist/esm/components/infinite-scroll-area/infinite-scroll-area.js +2 -1
- package/dist/esm/components/infinite-scroll-area/infinite-scroll-area.js.map +1 -1
- package/dist/esm/components/input/input-group.js +13 -12
- package/dist/esm/components/input/input-group.js.map +1 -1
- package/dist/esm/components/input/input.style.js.map +1 -1
- package/dist/esm/components/link-box/link-box.js.map +1 -1
- package/dist/esm/components/loading/audio.js.map +1 -1
- package/dist/esm/components/loading/circles.js.map +1 -1
- package/dist/esm/components/loading/dots.js.map +1 -1
- package/dist/esm/components/loading/grid.js.map +1 -1
- package/dist/esm/components/loading/loading-provider.js.map +1 -1
- package/dist/esm/components/loading/oval.js.map +1 -1
- package/dist/esm/components/loading/puff.js.map +1 -1
- package/dist/esm/components/loading/rings.js.map +1 -1
- package/dist/esm/components/loading/use-loading-component.js.map +1 -1
- package/dist/esm/components/menu/menu.js +12 -10
- package/dist/esm/components/menu/menu.js.map +1 -1
- package/dist/esm/components/menu/use-menu.js.map +1 -1
- package/dist/esm/components/modal/modal.js.map +1 -1
- package/dist/esm/components/modal/use-modal.js.map +1 -1
- package/dist/esm/components/motion/motion.js.map +1 -1
- package/dist/esm/components/motion/transition.js.map +1 -1
- package/dist/esm/components/native-accordion/use-native-accordion.js.map +1 -1
- package/dist/esm/components/native-popover/native-popover.js.map +1 -1
- package/dist/esm/components/native-popover/use-native-popover.js.map +1 -1
- package/dist/esm/components/native-select/native-select.js +2 -1
- package/dist/esm/components/native-select/native-select.js.map +1 -1
- package/dist/esm/components/native-select/use-native-select.js.map +1 -1
- package/dist/esm/components/notice/notice.js.map +1 -1
- package/dist/esm/components/notice/use-notice.js.map +1 -1
- package/dist/esm/components/number-input/number-input.js +2 -1
- package/dist/esm/components/number-input/number-input.js.map +1 -1
- package/dist/esm/components/number-input/use-number-counter.js.map +1 -1
- package/dist/esm/components/number-input/use-number-input.js.map +1 -1
- package/dist/esm/components/pagination/pagination.js.map +1 -1
- package/dist/esm/components/pagination/use-pagination.js.map +1 -1
- package/dist/esm/components/password-input/password-input.js +2 -1
- package/dist/esm/components/password-input/password-input.js.map +1 -1
- package/dist/esm/components/password-input/use-password-input.js.map +1 -1
- package/dist/esm/components/password-input/use-strength-meter.js.map +1 -1
- package/dist/esm/components/picture/picture.js.map +1 -1
- package/dist/esm/components/pin-input/use-pin-input.js.map +1 -1
- package/dist/esm/components/popover/popover.js.map +1 -1
- package/dist/esm/components/popover/use-popover.js.map +1 -1
- package/dist/esm/components/portal/portal.js.map +1 -1
- package/dist/esm/components/progress/progress.js.map +1 -1
- package/dist/esm/components/progress/use-progress.js.map +1 -1
- package/dist/esm/components/radio/radio-group.js +36 -34
- package/dist/esm/components/radio/radio-group.js.map +1 -1
- package/dist/esm/components/radio/use-radio-group.js.map +1 -1
- package/dist/esm/components/radio/use-radio.js +2 -1
- package/dist/esm/components/radio/use-radio.js.map +1 -1
- package/dist/esm/components/radio-card/radio-card-group.js +40 -38
- package/dist/esm/components/radio-card/radio-card-group.js.map +1 -1
- package/dist/esm/components/rating/rating.js.map +1 -1
- package/dist/esm/components/rating/use-rating.js.map +1 -1
- package/dist/esm/components/reorder/use-reorder.js.map +1 -1
- package/dist/esm/components/resizable/resizable.js +12 -10
- package/dist/esm/components/resizable/resizable.js.map +1 -1
- package/dist/esm/components/resizable/use-resizable.js.map +1 -1
- package/dist/esm/components/ripple/ripple.js.map +1 -1
- package/dist/esm/components/ripple/use-ripple.js.map +1 -1
- package/dist/esm/components/rotate/rotate.js.map +1 -1
- package/dist/esm/components/saturation-slider/use-saturation-slider.js.map +1 -1
- package/dist/esm/components/scroll-area/use-scroll-area.js.map +1 -1
- package/dist/esm/components/segmented-control/segmented-control.js +2 -1
- package/dist/esm/components/segmented-control/segmented-control.js.map +1 -1
- package/dist/esm/components/segmented-control/use-segmented-control.js.map +1 -1
- package/dist/esm/components/select/select.js +13 -10
- package/dist/esm/components/select/select.js.map +1 -1
- package/dist/esm/components/select/use-select.js.map +1 -1
- package/dist/esm/components/show/show.js.map +1 -1
- package/dist/esm/components/sidebar/sidebar.js +5 -3
- package/dist/esm/components/sidebar/sidebar.js.map +1 -1
- package/dist/esm/components/sidebar/use-sidebar.js.map +1 -1
- package/dist/esm/components/simple-grid/simple-grid.js.map +1 -1
- package/dist/esm/components/skeleton/skeleton.js.map +1 -1
- package/dist/esm/components/slider/slider.js +2 -1
- package/dist/esm/components/slider/slider.js.map +1 -1
- package/dist/esm/components/slider/use-slider.js +2 -1
- package/dist/esm/components/slider/use-slider.js.map +1 -1
- package/dist/esm/components/snacks/snacks.js.map +1 -1
- package/dist/esm/components/stack/stack.js.map +1 -1
- package/dist/esm/components/stack/z-stack.js +4 -2
- package/dist/esm/components/stack/z-stack.js.map +1 -1
- package/dist/esm/components/steps/steps.js +50 -47
- package/dist/esm/components/steps/steps.js.map +1 -1
- package/dist/esm/components/steps/use-steps.js.map +1 -1
- package/dist/esm/components/switch/switch.js.map +1 -1
- package/dist/esm/components/switch/use-switch.js.map +1 -1
- package/dist/esm/components/table/table.js +50 -49
- package/dist/esm/components/table/table.js.map +1 -1
- package/dist/esm/components/tabs/tabs.js +22 -20
- package/dist/esm/components/tabs/tabs.js.map +1 -1
- package/dist/esm/components/tabs/use-tabs.js.map +1 -1
- package/dist/esm/components/tag/tag.js.map +1 -1
- package/dist/esm/components/textarea/use-autosize.js.map +1 -1
- package/dist/esm/components/timeline/timeline.js.map +1 -1
- package/dist/esm/components/tip/tip.js.map +1 -1
- package/dist/esm/components/toggle/toggle-group.js +26 -24
- package/dist/esm/components/toggle/toggle-group.js.map +1 -1
- package/dist/esm/components/toggle/use-toggle-group.js.map +1 -1
- package/dist/esm/components/toggle/use-toggle.js.map +1 -1
- package/dist/esm/components/tooltip/tooltip.js.map +1 -1
- package/dist/esm/components/tooltip/use-tooltip.js.map +1 -1
- package/dist/esm/components/tree/tree.js.map +1 -1
- package/dist/esm/components/tree/use-tree.js.map +1 -1
- package/dist/esm/core/components/create-component.js +4 -2
- package/dist/esm/core/components/create-component.js.map +1 -1
- package/dist/esm/core/components/props.js.map +1 -1
- package/dist/esm/core/components/use-component-style.js +10 -6
- package/dist/esm/core/components/use-component-style.js.map +1 -1
- package/dist/esm/core/components/utils.js.map +1 -1
- package/dist/esm/core/css/animation.js.map +1 -1
- package/dist/esm/core/css/at-rule.js.map +1 -1
- package/dist/esm/core/css/calc.js.map +1 -1
- package/dist/esm/core/css/color-mix.js.map +1 -1
- package/dist/esm/core/css/color-scheme.js.map +1 -1
- package/dist/esm/core/css/config.js.map +1 -1
- package/dist/esm/core/css/css.js +5 -3
- package/dist/esm/core/css/css.js.map +1 -1
- package/dist/esm/core/css/gradient.js.map +1 -1
- package/dist/esm/core/css/merge-css.js.map +1 -1
- package/dist/esm/core/css/style.js.map +1 -1
- package/dist/esm/core/css/use-css.js.map +1 -1
- package/dist/esm/core/css/utils.js.map +1 -1
- package/dist/esm/core/system/breakpoint.js.map +1 -1
- package/dist/esm/core/system/color-mode-provider.js.map +1 -1
- package/dist/esm/core/system/create-system.js.map +1 -1
- package/dist/esm/core/system/environment-provider.js.map +1 -1
- package/dist/esm/core/system/layer.js.map +1 -1
- package/dist/esm/core/system/storage-script.js.map +1 -1
- package/dist/esm/core/system/styled.js.map +1 -1
- package/dist/esm/core/system/theme-provider.js +4 -3
- package/dist/esm/core/system/theme-provider.js.map +1 -1
- package/dist/esm/core/system/use-system-color-mode.js.map +1 -1
- package/dist/esm/core/system/var.js +2 -1
- package/dist/esm/core/system/var.js.map +1 -1
- package/dist/esm/hooks/use-animation/index.js +3 -2
- package/dist/esm/hooks/use-animation/index.js.map +1 -1
- package/dist/esm/hooks/use-breakpoint/use-breakpoint-state.js +2 -1
- package/dist/esm/hooks/use-breakpoint/use-breakpoint-state.js.map +1 -1
- package/dist/esm/hooks/use-breakpoint/use-breakpoint.js.map +1 -1
- package/dist/esm/hooks/use-clickable/index.js.map +1 -1
- package/dist/esm/hooks/use-clipboard/index.js.map +1 -1
- package/dist/esm/hooks/use-combobox/index.js.map +1 -1
- package/dist/esm/hooks/use-controllable-state/index.js.map +1 -1
- package/dist/esm/hooks/use-counter/index.js.map +1 -1
- package/dist/esm/hooks/use-descendants/index.js.map +1 -1
- package/dist/esm/hooks/use-event-listener/index.js.map +1 -1
- package/dist/esm/hooks/use-focus/index.js +2 -1
- package/dist/esm/hooks/use-focus/index.js.map +1 -1
- package/dist/esm/hooks/use-local-storage/index.js.map +1 -1
- package/dist/esm/hooks/use-os/index.js.map +1 -1
- package/dist/esm/hooks/use-outside-click/index.js.map +1 -1
- package/dist/esm/hooks/use-pan-event/index.js.map +1 -1
- package/dist/esm/hooks/use-resize-observer/index.js.map +1 -1
- package/dist/esm/hooks/use-value/index.js.map +1 -1
- package/dist/esm/index.js +21 -5
- package/dist/esm/providers/i18n-provider/i18n-provider.js.map +1 -1
- package/dist/esm/providers/ui-provider/ui-provider.js.map +1 -1
- package/dist/types/components/chart/polar-chart.style.d.ts +1 -1
- package/dist/types/components/color-picker/color-picker.style.d.ts +1 -1
- package/dist/types/components/color-selector/color-selector.style.d.ts +2 -2
- package/dist/types/components/drawer/drawer.style.d.ts +2 -2
- package/dist/types/components/file-input/file-input.style.d.ts +1 -1
- package/dist/types/components/icon/icons/index.d.ts +12 -4
- package/dist/types/components/icon/icons/index.types.d.ts +1 -1
- package/dist/types/components/icon/icons/layout-freeform-icon.d.ts +13 -0
- package/dist/types/components/icon/icons/mic-audio-lines-icon.d.ts +13 -0
- package/dist/types/components/icon/icons/mic-signal-icon.d.ts +13 -0
- package/dist/types/components/icon/icons/mosque-icon.d.ts +13 -0
- package/dist/types/components/icon/icons/rotate-ccw-clock-icon.d.ts +13 -0
- package/dist/types/components/icon/icons/rotate-cw-fading-clock-icon.d.ts +13 -0
- package/dist/types/components/icon/icons/scan-square-icon.d.ts +13 -0
- package/dist/types/components/icon/icons/shield-keyhole-icon.d.ts +13 -0
- package/dist/types/components/icon/icons/{history-icon.d.ts → square-off-icon.d.ts} +5 -5
- package/dist/types/components/icon/icons/user-shield-icon.d.ts +13 -0
- package/dist/types/components/icon/index.d.ts +11 -3
- package/dist/types/components/modal/modal.style.d.ts +2 -2
- package/dist/types/components/notice/notice.style.d.ts +1 -1
- package/dist/types/components/tag/tag.style.d.ts +1 -1
- package/dist/types/index.d.ts +12 -4
- package/package.json +9 -9
- package/dist/cjs/components/icon/icons/history-icon.cjs +0 -14
- package/dist/cjs/components/icon/icons/history-icon.cjs.map +0 -1
- package/dist/cjs/components/icon/icons/podcast-icon.cjs +0 -14
- package/dist/cjs/components/icon/icons/podcast-icon.cjs.map +0 -1
- package/dist/esm/components/icon/icons/history-icon.js +0 -14
- package/dist/esm/components/icon/icons/history-icon.js.map +0 -1
- package/dist/esm/components/icon/icons/podcast-icon.js +0 -14
- package/dist/esm/components/icon/icons/podcast-icon.js.map +0 -1
- package/dist/types/components/icon/icons/podcast-icon.d.ts +0 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["createContext"],"sources":["../../../../src/hooks/use-descendants/index.ts"],"sourcesContent":["\"use client\"\n\nimport type { RefCallback } from \"react\"\nimport { useRef } from \"react\"\nimport {\n createContext,\n isNumber,\n isTruthyDataAttr,\n mergeRefs,\n runIfFn,\n useSafeLayoutEffect,\n} from \"../../utils\"\n\nconst sortNodes = (nodes: Node[]) =>\n nodes.sort((a, b) => {\n const compare = a.compareDocumentPosition(b)\n\n if (\n compare & Node.DOCUMENT_POSITION_FOLLOWING ||\n compare & Node.DOCUMENT_POSITION_CONTAINED_BY\n )\n return -1\n\n if (\n compare & Node.DOCUMENT_POSITION_PRECEDING ||\n compare & Node.DOCUMENT_POSITION_CONTAINS\n )\n return 1\n\n if (\n compare & Node.DOCUMENT_POSITION_DISCONNECTED ||\n compare & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC\n ) {\n console.warn(\"Cannot sort the given nodes.\")\n return 0\n } else {\n return 0\n }\n })\n\nconst getNextIndex = (current: number, max: number, loop: boolean) => {\n let next = current + 1\n\n if (loop && next >= max) next = 0\n\n return next\n}\n\nconst getPrevIndex = (current: number, max: number, loop: boolean) => {\n let next = current - 1\n\n if (loop && next < 0) next = max\n\n return next\n}\n\nconst isMatch =\n <Y extends HTMLElement = HTMLElement, M = {}>(props?: Partial<M>) =>\n (descendant: Descendant<Y, M>) =>\n Object.entries(props ?? {}).every(\n ([key, value]) => descendant[key as keyof Descendant<Y, M>] === value,\n )\n\nexport type DescendantProps<Y extends HTMLElement = HTMLElement, M = {}> = M & {\n disabled?: ((node: Y) => boolean) | boolean\n}\n\nexport type Descendant<\n Y extends HTMLElement = HTMLElement,\n M = {},\n> = DescendantProps<Y, M> & {\n index: number\n node: Y\n recurred?: boolean\n}\n\nconst descendantManager = <Y extends HTMLElement = HTMLElement, M = {}>() => {\n const descendants = new Map<Y, Descendant<Y, M>>()\n\n const setIndexes = (next: Node[]) => {\n descendants.forEach((descendant) => {\n const index = next.indexOf(descendant.node)\n\n descendant.index = index\n descendant.node.dataset.index = descendant.index.toString()\n })\n }\n\n const set = (node: null | Y, props?: DescendantProps<Y, M>) => {\n if (!node) return\n\n if (descendants.has(node)) {\n const descendant = descendants.get(node)!\n\n descendants.set(node, {\n ...descendant,\n ...props,\n index: descendant.index,\n node: descendant.node,\n })\n } else {\n const keys = Array.from(descendants.keys()).concat(node)\n const sorted = sortNodes(keys)\n\n const descendant = { ...props, index: -1, node } as Descendant<Y, M>\n\n descendants.set(node, descendant)\n\n setIndexes(sorted)\n }\n }\n\n const destroy = () => descendants.clear()\n\n const register = (props?: DescendantProps<Y, M>): RefCallback<Y> => {\n return (node: null | Y) => set(node, props)\n }\n\n const unregister = (node?: null | Y) => {\n if (node == null) return\n\n descendants.delete(node)\n\n const sorted = sortNodes(Array.from(descendants.keys()))\n\n setIndexes(sorted)\n }\n\n const count = (props?: Partial<M>) => values(props).length\n\n const enabledCount = (props?: Partial<M>) => enabledValues(props).length\n\n const active = (\n target?: Descendant<Y, M> | null | Y,\n options?: FocusOptions,\n ) => {\n if (!target) return\n\n if (!(target instanceof Node)) target = target.node\n\n if (isTruthyDataAttr(target.dataset.activedescendant)) return\n\n const descendants = values()\n\n descendants.forEach(({ node }) => {\n delete node.dataset.activedescendant\n })\n\n target.dataset.activedescendant = \"\"\n\n if (options) target.focus(options)\n }\n\n const indexOf = (target?: Descendant<Y, M> | null | Y) => {\n if (!target) return -1\n\n if (target instanceof Node) return descendants.get(target)?.index ?? -1\n else return descendants.get(target.node)?.index ?? -1\n }\n\n const enabledIndexOf = (target?: Descendant<Y, M> | null | Y) => {\n if (!target) return -1\n\n if (target instanceof Node)\n return enabledValues().findIndex(({ node }) => node.isSameNode(target))\n else\n return enabledValues().findIndex(({ node }) =>\n node.isSameNode(target.node),\n )\n }\n\n const values = (props?: Partial<M>) =>\n Array.from(descendants.values())\n .filter(isMatch(props))\n .sort((a, b) => a.index - b.index)\n\n const enabledValues = (props?: Partial<M>) =>\n values(props).filter(({ disabled, node }) => !runIfFn(disabled, node))\n\n const value = (indexOrNode: null | number | Y) => {\n if (!count() || indexOrNode == null) return undefined\n\n return isNumber(indexOrNode)\n ? values()[indexOrNode]\n : descendants.get(indexOrNode)\n }\n\n const enabledValue = (indexOrNode: null | number | Y) => {\n if (!enabledCount() || indexOrNode == null) return undefined\n\n return enabledValues()[\n isNumber(indexOrNode) ? indexOrNode : enabledIndexOf(indexOrNode)\n ]\n }\n\n const firstValue = (props?: Partial<M>) => values(props).at(0)\n\n const enabledFirstValue = (props?: Partial<M>) => enabledValues(props).at(0)\n\n const lastValue = (props?: Partial<M>) => values(props).at(-1)\n\n const enabledLastValue = (props?: Partial<M>) => enabledValues(props).at(-1)\n\n const prevValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n props?: Partial<M>,\n ) => {\n const filtered = values(props)\n\n if (!filtered.length || indexOrNode == null) return undefined\n\n const currentIndex = isNumber(indexOrNode)\n ? filtered.findIndex((d) => d.index === indexOrNode)\n : filtered.findIndex((d) =>\n d.node.isSameNode(\n indexOrNode instanceof Node ? indexOrNode : indexOrNode.node,\n ),\n )\n\n if (currentIndex === -1) return undefined\n\n const prevIndex = getPrevIndex(currentIndex, filtered.length - 1, loop)\n\n return filtered[prevIndex]\n }\n\n const enabledPrevValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n props?: Partial<M>,\n ) => {\n if (!enabledCount(props)) return undefined\n\n let index = isNumber(indexOrNode) ? indexOrNode : indexOf(indexOrNode)\n let enabledValue = null\n let recurred = false\n\n while (enabledValue == null) {\n index--\n\n if (index < 0) {\n if (!loop) return\n\n index = count() - 1\n recurred = true\n }\n\n const descendant = value(index)\n\n enabledValue =\n descendant &&\n !runIfFn(descendant.disabled, descendant.node) &&\n isMatch<Y, M>(props)(descendant)\n ? descendant\n : null\n }\n\n if (recurred) enabledValue.recurred = recurred\n\n return enabledValue\n }\n\n const nextValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n props?: Partial<M>,\n ) => {\n const filtered = values(props)\n\n if (!filtered.length || indexOrNode == null) return undefined\n\n const currentIndex = isNumber(indexOrNode)\n ? filtered.findIndex((d) => d.index === indexOrNode)\n : filtered.findIndex((d) =>\n d.node.isSameNode(\n indexOrNode instanceof Node ? indexOrNode : indexOrNode.node,\n ),\n )\n\n if (currentIndex === -1) return undefined\n\n const nextIndex = getNextIndex(currentIndex, filtered.length, loop)\n\n return filtered[nextIndex]\n }\n\n const enabledNextValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n props?: Partial<M>,\n ) => {\n if (!enabledCount(props)) return undefined\n\n let index = isNumber(indexOrNode) ? indexOrNode : indexOf(indexOrNode)\n let enabledValue = null\n let recurred = false\n\n while (enabledValue == null) {\n index++\n\n if (index >= count()) {\n if (!loop) return\n\n index = 0\n recurred = true\n }\n\n const descendant = value(index)\n\n enabledValue =\n descendant &&\n !runIfFn(descendant.disabled, descendant.node) &&\n isMatch<Y, M>(props)(descendant)\n ? descendant\n : null\n }\n\n if (recurred) enabledValue.recurred = recurred\n\n return enabledValue\n }\n\n return {\n active,\n count,\n destroy,\n enabledCount,\n enabledFirstValue,\n enabledIndexOf,\n enabledLastValue,\n enabledNextValue,\n enabledPrevValue,\n enabledValue,\n enabledValues,\n firstValue,\n indexOf,\n lastValue,\n nextValue,\n prevValue,\n register,\n unregister,\n value,\n values,\n }\n}\n\nexport type Descendants<Y extends HTMLElement, M = {}> = ReturnType<\n typeof descendantManager<Y, M>\n>\n\nexport type CreateDescendantRegister<Y extends HTMLElement, M = {}> = (\n props?: DescendantProps<Y, M>,\n) => RefCallback<Y>\n\n/**\n * `useDescendants` is a custom hook that manages descendants.\n *\n * @see https://yamada-ui.com/docs/hooks/use-descendants\n */\nexport const createDescendants = <\n Y extends HTMLElement = HTMLElement,\n M = {},\n>() => {\n const [DescendantsContext, useDescendantsContext] = createContext<\n Descendants<Y, M>\n >({\n name: \"DescendantsContext\",\n })\n\n const useDescendantRegister = (descendants?: Descendants<Y, M>) => {\n const ref = useRef<Y>(null)\n\n useSafeLayoutEffect(() => {\n return () => {\n if (ref.current) descendants?.unregister(ref.current)\n }\n }, [])\n\n return (props?: DescendantProps<Y, M>): RefCallback<Y> =>\n mergeRefs(ref, descendants?.register(props))\n }\n\n const useDescendants = () => {\n const descendants = useRef(descendantManager<Y, M>())\n\n useSafeLayoutEffect(() => {\n return () => descendants.current.destroy()\n })\n\n return descendants.current\n }\n\n const useDescendant = (props?: DescendantProps<Y, M>) => {\n const descendants = useDescendantsContext()\n const createRegister = useDescendantRegister(descendants)\n\n return {\n descendants,\n register: createRegister(props),\n }\n }\n\n return {\n DescendantsContext,\n useDescendant,\n useDescendantRegister,\n useDescendants,\n useDescendantsContext,\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["isTruthyDataAttr","runIfFn","isNumber","createContext"],"sources":["../../../../src/hooks/use-descendants/index.ts"],"sourcesContent":["\"use client\"\n\nimport type { RefCallback } from \"react\"\nimport { useRef } from \"react\"\nimport {\n createContext,\n isNumber,\n isTruthyDataAttr,\n mergeRefs,\n runIfFn,\n useSafeLayoutEffect,\n} from \"../../utils\"\n\nconst sortNodes = (nodes: Node[]) =>\n nodes.sort((a, b) => {\n const compare = a.compareDocumentPosition(b)\n\n if (\n compare & Node.DOCUMENT_POSITION_FOLLOWING ||\n compare & Node.DOCUMENT_POSITION_CONTAINED_BY\n )\n return -1\n\n if (\n compare & Node.DOCUMENT_POSITION_PRECEDING ||\n compare & Node.DOCUMENT_POSITION_CONTAINS\n )\n return 1\n\n if (\n compare & Node.DOCUMENT_POSITION_DISCONNECTED ||\n compare & Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC\n ) {\n console.warn(\"Cannot sort the given nodes.\")\n return 0\n } else {\n return 0\n }\n })\n\nconst getNextIndex = (current: number, max: number, loop: boolean) => {\n let next = current + 1\n\n if (loop && next >= max) next = 0\n\n return next\n}\n\nconst getPrevIndex = (current: number, max: number, loop: boolean) => {\n let next = current - 1\n\n if (loop && next < 0) next = max\n\n return next\n}\n\nconst isMatch =\n <Y extends HTMLElement = HTMLElement, M = {}>(props?: Partial<M>) =>\n (descendant: Descendant<Y, M>) =>\n Object.entries(props ?? {}).every(\n ([key, value]) => descendant[key as keyof Descendant<Y, M>] === value,\n )\n\nexport type DescendantProps<Y extends HTMLElement = HTMLElement, M = {}> = M & {\n disabled?: ((node: Y) => boolean) | boolean\n}\n\nexport type Descendant<\n Y extends HTMLElement = HTMLElement,\n M = {},\n> = DescendantProps<Y, M> & {\n index: number\n node: Y\n recurred?: boolean\n}\n\nconst descendantManager = <Y extends HTMLElement = HTMLElement, M = {}>() => {\n const descendants = new Map<Y, Descendant<Y, M>>()\n\n const setIndexes = (next: Node[]) => {\n descendants.forEach((descendant) => {\n const index = next.indexOf(descendant.node)\n\n descendant.index = index\n descendant.node.dataset.index = descendant.index.toString()\n })\n }\n\n const set = (node: null | Y, props?: DescendantProps<Y, M>) => {\n if (!node) return\n\n if (descendants.has(node)) {\n const descendant = descendants.get(node)!\n\n descendants.set(node, {\n ...descendant,\n ...props,\n index: descendant.index,\n node: descendant.node,\n })\n } else {\n const keys = Array.from(descendants.keys()).concat(node)\n const sorted = sortNodes(keys)\n\n const descendant = { ...props, index: -1, node } as Descendant<Y, M>\n\n descendants.set(node, descendant)\n\n setIndexes(sorted)\n }\n }\n\n const destroy = () => descendants.clear()\n\n const register = (props?: DescendantProps<Y, M>): RefCallback<Y> => {\n return (node: null | Y) => set(node, props)\n }\n\n const unregister = (node?: null | Y) => {\n if (node == null) return\n\n descendants.delete(node)\n\n const sorted = sortNodes(Array.from(descendants.keys()))\n\n setIndexes(sorted)\n }\n\n const count = (props?: Partial<M>) => values(props).length\n\n const enabledCount = (props?: Partial<M>) => enabledValues(props).length\n\n const active = (\n target?: Descendant<Y, M> | null | Y,\n options?: FocusOptions,\n ) => {\n if (!target) return\n\n if (!(target instanceof Node)) target = target.node\n\n if (isTruthyDataAttr(target.dataset.activedescendant)) return\n\n const descendants = values()\n\n descendants.forEach(({ node }) => {\n delete node.dataset.activedescendant\n })\n\n target.dataset.activedescendant = \"\"\n\n if (options) target.focus(options)\n }\n\n const indexOf = (target?: Descendant<Y, M> | null | Y) => {\n if (!target) return -1\n\n if (target instanceof Node) return descendants.get(target)?.index ?? -1\n else return descendants.get(target.node)?.index ?? -1\n }\n\n const enabledIndexOf = (target?: Descendant<Y, M> | null | Y) => {\n if (!target) return -1\n\n if (target instanceof Node)\n return enabledValues().findIndex(({ node }) => node.isSameNode(target))\n else\n return enabledValues().findIndex(({ node }) =>\n node.isSameNode(target.node),\n )\n }\n\n const values = (props?: Partial<M>) =>\n Array.from(descendants.values())\n .filter(isMatch(props))\n .sort((a, b) => a.index - b.index)\n\n const enabledValues = (props?: Partial<M>) =>\n values(props).filter(({ disabled, node }) => !runIfFn(disabled, node))\n\n const value = (indexOrNode: null | number | Y) => {\n if (!count() || indexOrNode == null) return undefined\n\n return isNumber(indexOrNode)\n ? values()[indexOrNode]\n : descendants.get(indexOrNode)\n }\n\n const enabledValue = (indexOrNode: null | number | Y) => {\n if (!enabledCount() || indexOrNode == null) return undefined\n\n return enabledValues()[\n isNumber(indexOrNode) ? indexOrNode : enabledIndexOf(indexOrNode)\n ]\n }\n\n const firstValue = (props?: Partial<M>) => values(props).at(0)\n\n const enabledFirstValue = (props?: Partial<M>) => enabledValues(props).at(0)\n\n const lastValue = (props?: Partial<M>) => values(props).at(-1)\n\n const enabledLastValue = (props?: Partial<M>) => enabledValues(props).at(-1)\n\n const prevValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n props?: Partial<M>,\n ) => {\n const filtered = values(props)\n\n if (!filtered.length || indexOrNode == null) return undefined\n\n const currentIndex = isNumber(indexOrNode)\n ? filtered.findIndex((d) => d.index === indexOrNode)\n : filtered.findIndex((d) =>\n d.node.isSameNode(\n indexOrNode instanceof Node ? indexOrNode : indexOrNode.node,\n ),\n )\n\n if (currentIndex === -1) return undefined\n\n const prevIndex = getPrevIndex(currentIndex, filtered.length - 1, loop)\n\n return filtered[prevIndex]\n }\n\n const enabledPrevValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n props?: Partial<M>,\n ) => {\n if (!enabledCount(props)) return undefined\n\n let index = isNumber(indexOrNode) ? indexOrNode : indexOf(indexOrNode)\n let enabledValue = null\n let recurred = false\n\n while (enabledValue == null) {\n index--\n\n if (index < 0) {\n if (!loop) return\n\n index = count() - 1\n recurred = true\n }\n\n const descendant = value(index)\n\n enabledValue =\n descendant &&\n !runIfFn(descendant.disabled, descendant.node) &&\n isMatch<Y, M>(props)(descendant)\n ? descendant\n : null\n }\n\n if (recurred) enabledValue.recurred = recurred\n\n return enabledValue\n }\n\n const nextValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n props?: Partial<M>,\n ) => {\n const filtered = values(props)\n\n if (!filtered.length || indexOrNode == null) return undefined\n\n const currentIndex = isNumber(indexOrNode)\n ? filtered.findIndex((d) => d.index === indexOrNode)\n : filtered.findIndex((d) =>\n d.node.isSameNode(\n indexOrNode instanceof Node ? indexOrNode : indexOrNode.node,\n ),\n )\n\n if (currentIndex === -1) return undefined\n\n const nextIndex = getNextIndex(currentIndex, filtered.length, loop)\n\n return filtered[nextIndex]\n }\n\n const enabledNextValue = (\n indexOrNode: Descendant<Y, M> | null | number | Y,\n loop = true,\n props?: Partial<M>,\n ) => {\n if (!enabledCount(props)) return undefined\n\n let index = isNumber(indexOrNode) ? indexOrNode : indexOf(indexOrNode)\n let enabledValue = null\n let recurred = false\n\n while (enabledValue == null) {\n index++\n\n if (index >= count()) {\n if (!loop) return\n\n index = 0\n recurred = true\n }\n\n const descendant = value(index)\n\n enabledValue =\n descendant &&\n !runIfFn(descendant.disabled, descendant.node) &&\n isMatch<Y, M>(props)(descendant)\n ? descendant\n : null\n }\n\n if (recurred) enabledValue.recurred = recurred\n\n return enabledValue\n }\n\n return {\n active,\n count,\n destroy,\n enabledCount,\n enabledFirstValue,\n enabledIndexOf,\n enabledLastValue,\n enabledNextValue,\n enabledPrevValue,\n enabledValue,\n enabledValues,\n firstValue,\n indexOf,\n lastValue,\n nextValue,\n prevValue,\n register,\n unregister,\n value,\n values,\n }\n}\n\nexport type Descendants<Y extends HTMLElement, M = {}> = ReturnType<\n typeof descendantManager<Y, M>\n>\n\nexport type CreateDescendantRegister<Y extends HTMLElement, M = {}> = (\n props?: DescendantProps<Y, M>,\n) => RefCallback<Y>\n\n/**\n * `useDescendants` is a custom hook that manages descendants.\n *\n * @see https://yamada-ui.com/docs/hooks/use-descendants\n */\nexport const createDescendants = <\n Y extends HTMLElement = HTMLElement,\n M = {},\n>() => {\n const [DescendantsContext, useDescendantsContext] = createContext<\n Descendants<Y, M>\n >({\n name: \"DescendantsContext\",\n })\n\n const useDescendantRegister = (descendants?: Descendants<Y, M>) => {\n const ref = useRef<Y>(null)\n\n useSafeLayoutEffect(() => {\n return () => {\n if (ref.current) descendants?.unregister(ref.current)\n }\n }, [])\n\n return (props?: DescendantProps<Y, M>): RefCallback<Y> =>\n mergeRefs(ref, descendants?.register(props))\n }\n\n const useDescendants = () => {\n const descendants = useRef(descendantManager<Y, M>())\n\n useSafeLayoutEffect(() => {\n return () => descendants.current.destroy()\n })\n\n return descendants.current\n }\n\n const useDescendant = (props?: DescendantProps<Y, M>) => {\n const descendants = useDescendantsContext()\n const createRegister = useDescendantRegister(descendants)\n\n return {\n descendants,\n register: createRegister(props),\n }\n }\n\n return {\n DescendantsContext,\n useDescendant,\n useDescendantRegister,\n useDescendants,\n useDescendantsContext,\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/hooks/use-event-listener/index.ts"],"sourcesContent":["\"use client\"\n\nimport type { EventMap, EventType } from \"../../utils\"\nimport { useCallback, useEffect, useRef } from \"react\"\nimport { useEnvironment } from \"../../core\"\nimport { isFunction, useCallbackRef } from \"../../utils\"\n\nexport const useEventListener = <Y extends EventType>(\n target: (() => EventTarget | null) | EventTarget | null | undefined,\n ev: Y,\n handler: (ev: EventMap[Y]) => void,\n options?: AddEventListenerOptions | boolean,\n) => {\n const { getDocument } = useEnvironment()\n const listener = useCallbackRef(handler)\n\n useEffect(() => {\n const el = isFunction(target) ? target() : (target ?? getDocument())\n\n if (!el) return\n\n el.addEventListener(\n ev,\n listener as EventListenerOrEventListenerObject,\n options,\n )\n\n return () => {\n el.removeEventListener(\n ev,\n listener as EventListenerOrEventListenerObject,\n options,\n )\n }\n }, [ev, target, options, listener, handler, getDocument])\n\n return () => {\n const el = isFunction(target) ? target() : (target ?? document)\n\n el?.removeEventListener(\n ev,\n listener as EventListenerOrEventListenerObject,\n options,\n )\n }\n}\n\nexport const useEventListeners = () => {\n const listeners = useRef(new Map())\n const currentListeners = listeners.current\n\n const add = useCallback(\n <Y extends EventType>(\n el: EventTarget,\n ev: Y,\n listener: (ev: EventMap[Y]) => void,\n options?: AddEventListenerOptions | boolean,\n ) => {\n listeners.current.set(listener, { el, ev, options })\n\n el.addEventListener(\n ev,\n listener as EventListenerOrEventListenerObject,\n options,\n )\n },\n [],\n )\n\n const remove = useCallback(\n <Y extends EventType>(\n el: EventTarget,\n ev: Y,\n listener: (ev: EventMap[Y]) => void,\n options?: boolean | EventListenerOptions,\n ) => {\n el.removeEventListener(\n ev,\n listener as EventListenerOrEventListenerObject,\n options,\n )\n\n listeners.current.delete(listener)\n },\n [],\n )\n\n useEffect(\n () => () => {\n currentListeners.forEach(({ el, ev, options }, key) =>\n remove(el, ev, key, options),\n )\n },\n [remove, currentListeners],\n )\n\n return { add, remove }\n}\n"],"mappings":";;;;;;AAOA,MAAa,oBACX,QACA,IACA,SACA,YACG;CACH,MAAM,EAAE,gBAAgB,eAAe;CACvC,MAAM,WAAW,eAAe,OAAO;CAEvC,gBAAgB;EACd,MAAM,MAAA,
|
|
1
|
+
{"version":3,"file":"index.js","names":["isFunction"],"sources":["../../../../src/hooks/use-event-listener/index.ts"],"sourcesContent":["\"use client\"\n\nimport type { EventMap, EventType } from \"../../utils\"\nimport { useCallback, useEffect, useRef } from \"react\"\nimport { useEnvironment } from \"../../core\"\nimport { isFunction, useCallbackRef } from \"../../utils\"\n\nexport const useEventListener = <Y extends EventType>(\n target: (() => EventTarget | null) | EventTarget | null | undefined,\n ev: Y,\n handler: (ev: EventMap[Y]) => void,\n options?: AddEventListenerOptions | boolean,\n) => {\n const { getDocument } = useEnvironment()\n const listener = useCallbackRef(handler)\n\n useEffect(() => {\n const el = isFunction(target) ? target() : (target ?? getDocument())\n\n if (!el) return\n\n el.addEventListener(\n ev,\n listener as EventListenerOrEventListenerObject,\n options,\n )\n\n return () => {\n el.removeEventListener(\n ev,\n listener as EventListenerOrEventListenerObject,\n options,\n )\n }\n }, [ev, target, options, listener, handler, getDocument])\n\n return () => {\n const el = isFunction(target) ? target() : (target ?? document)\n\n el?.removeEventListener(\n ev,\n listener as EventListenerOrEventListenerObject,\n options,\n )\n }\n}\n\nexport const useEventListeners = () => {\n const listeners = useRef(new Map())\n const currentListeners = listeners.current\n\n const add = useCallback(\n <Y extends EventType>(\n el: EventTarget,\n ev: Y,\n listener: (ev: EventMap[Y]) => void,\n options?: AddEventListenerOptions | boolean,\n ) => {\n listeners.current.set(listener, { el, ev, options })\n\n el.addEventListener(\n ev,\n listener as EventListenerOrEventListenerObject,\n options,\n )\n },\n [],\n )\n\n const remove = useCallback(\n <Y extends EventType>(\n el: EventTarget,\n ev: Y,\n listener: (ev: EventMap[Y]) => void,\n options?: boolean | EventListenerOptions,\n ) => {\n el.removeEventListener(\n ev,\n listener as EventListenerOrEventListenerObject,\n options,\n )\n\n listeners.current.delete(listener)\n },\n [],\n )\n\n useEffect(\n () => () => {\n currentListeners.forEach(({ el, ev, options }, key) =>\n remove(el, ev, key, options),\n )\n },\n [remove, currentListeners],\n )\n\n return { add, remove }\n}\n"],"mappings":";;;;;;AAOA,MAAa,oBACX,QACA,IACA,SACA,YACG;CACH,MAAM,EAAE,gBAAgB,eAAe;CACvC,MAAM,WAAW,eAAe,OAAO;CAEvC,gBAAgB;EACd,MAAM,MAAA,GAAKA,cAAAA,WAAAA,CAAW,MAAM,IAAI,OAAO,IAAK,UAAU,YAAY;EAElE,IAAI,CAAC,IAAI;EAET,GAAG,iBACD,IACA,UACA,OACF;EAEA,aAAa;GACX,GAAG,oBACD,IACA,UACA,OACF;EACF;CACF,GAAG;EAAC;EAAI;EAAQ;EAAS;EAAU;EAAS;CAAW,CAAC;CAExD,aAAa;EAGX,EAAA,GAFWA,cAAAA,WAAAA,CAAW,MAAM,IAAI,OAAO,IAAK,UAAU,SAAA,EAElD,oBACF,IACA,UACA,OACF;CACF;AACF;AAEA,MAAa,0BAA0B;CACrC,MAAM,YAAY,uBAAO,IAAI,IAAI,CAAC;CAClC,MAAM,mBAAmB,UAAU;CAEnC,MAAM,MAAM,aAER,IACA,IACA,UACA,YACG;EACH,UAAU,QAAQ,IAAI,UAAU;GAAE;GAAI;GAAI;EAAQ,CAAC;EAEnD,GAAG,iBACD,IACA,UACA,OACF;CACF,GACA,CAAC,CACH;CAEA,MAAM,SAAS,aAEX,IACA,IACA,UACA,YACG;EACH,GAAG,oBACD,IACA,UACA,OACF;EAEA,UAAU,QAAQ,OAAO,QAAQ;CACnC,GACA,CAAC,CACH;CAEA,sBACc;EACV,iBAAiB,SAAS,EAAE,IAAI,IAAI,WAAW,QAC7C,OAAO,IAAI,IAAI,KAAK,OAAO,CAC7B;CACF,GACA,CAAC,QAAQ,gBAAgB,CAC3B;CAEA,OAAO;EAAE;EAAK;CAAO;AACvB"}
|
|
@@ -26,7 +26,8 @@ const useFocusOnShow = (refOrEl, { focusTarget: focusRefOrEl, preventScroll, sho
|
|
|
26
26
|
const target = getTarget();
|
|
27
27
|
if (!target || !trulyShouldFocus || focused.current) return;
|
|
28
28
|
const rootNode = target.getRootNode();
|
|
29
|
-
|
|
29
|
+
const root = (0, utils_exports.isShadowRoot)(rootNode) ? rootNode : (0, utils_exports.getDocument)(target);
|
|
30
|
+
if ((0, utils_exports.contains)(target, (0, utils_exports.getActiveElement)(root))) return;
|
|
30
31
|
const focusTarget = getFocusTarget();
|
|
31
32
|
if (focusTarget) requestAnimationFrame(() => {
|
|
32
33
|
focusTarget.focus({ preventScroll });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/hooks/use-focus/index.ts"],"sourcesContent":["\"use client\"\n\nimport type { RefObject } from \"react\"\nimport { useCallback, useRef } from \"react\"\nimport {\n contains,\n getActiveElement,\n getDocument,\n getFirstFocusableElement,\n isRefObject,\n isSafari,\n isShadowRoot,\n useUpdateEffect,\n} from \"../../utils\"\nimport { useEventListener } from \"../use-event-listener\"\n\nexport interface UseFocusOnShowProps {\n focusTarget?: HTMLElement | null | RefObject<HTMLElement | null>\n preventScroll?: boolean\n shouldFocus?: boolean\n visible?: boolean\n}\n\n/**\n * `useFocusOnShow` is a custom hook that focuses on the target element when it is shown.\n *\n * @see https://yamada-ui.com/docs/hooks/use-focus-on-show\n */\nexport const useFocusOnShow = <Y extends HTMLElement>(\n refOrEl: RefObject<null | Y> | Y,\n {\n focusTarget: focusRefOrEl,\n preventScroll,\n shouldFocus,\n visible,\n }: UseFocusOnShowProps = {\n preventScroll: true,\n shouldFocus: false,\n },\n) => {\n const trulyShouldFocus = shouldFocus && visible\n const focused = useRef(false)\n\n const getTarget = useCallback(() => {\n return isRefObject(refOrEl) ? refOrEl.current : refOrEl\n }, [refOrEl])\n\n const getFocusTarget = useCallback(() => {\n return isRefObject(focusRefOrEl) ? focusRefOrEl.current : focusRefOrEl\n }, [focusRefOrEl])\n\n const onFocus = useCallback(() => {\n const target = getTarget()\n\n if (!target || !trulyShouldFocus || focused.current) return\n const rootNode = target.getRootNode()\n const root = isShadowRoot(rootNode) ? rootNode : getDocument(target)\n if (contains(target, getActiveElement(root))) return\n\n const focusTarget = getFocusTarget()\n\n if (focusTarget) {\n requestAnimationFrame(() => {\n focusTarget.focus({ preventScroll })\n\n focused.current = true\n })\n } else {\n const firstFocusable = getFirstFocusableElement(target)\n\n if (firstFocusable)\n requestAnimationFrame(() => {\n firstFocusable.focus({ preventScroll })\n\n focused.current = true\n })\n else\n requestAnimationFrame(() => {\n target.focus({ preventScroll })\n\n focused.current = true\n })\n }\n }, [getTarget, trulyShouldFocus, getFocusTarget, preventScroll])\n\n useUpdateEffect(() => {\n focused.current = !trulyShouldFocus\n }, [trulyShouldFocus])\n\n useUpdateEffect(() => {\n requestAnimationFrame(onFocus)\n }, [onFocus])\n\n useEventListener(getTarget, \"transitionend\", onFocus)\n}\n\nexport interface UseFocusOnMouseDownProps {\n ref: RefObject<HTMLElement | null>\n elements?: (HTMLElement | null | RefObject<HTMLElement | null>)[]\n enabled?: boolean\n}\n\n/**\n * `useFocusOnPointerDown` is a custom hook that focuses on the target element when it is clicked.\n *\n * @see https://yamada-ui.com/docs/hooks/use-focus-on-pointer-down\n */\nexport const useFocusOnPointerDown = ({\n ref,\n elements,\n enabled,\n}: UseFocusOnMouseDownProps) => {\n useEventListener(\n () => ref.current?.getRootNode() ?? getDocument(ref.current),\n \"pointerdown\",\n (ev) => {\n if (!isSafari() || !enabled) return\n\n const target = ev.target as HTMLElement\n const els = elements ?? [ref]\n const rootNode = ref.current?.getRootNode()\n const root = isShadowRoot(rootNode) ? rootNode : getDocument(ref.current)\n const validTarget = els.some((elOrRef) => {\n const el = isRefObject(elOrRef) ? elOrRef.current : elOrRef\n\n return el?.contains(target) || el === target\n })\n\n if (getActiveElement(root) !== target && validTarget) {\n ev.preventDefault()\n\n target.focus()\n }\n },\n )\n}\n"],"mappings":";;;;;;;;;;;;AA4BA,MAAa,kBACX,SACA,EACE,aAAa,cACb,eACA,aACA,YACuB;CACvB,eAAe;CACf,aAAa;AACf,MACG;CACH,MAAM,mBAAmB,eAAe;CACxC,MAAM,UAAU,OAAO,KAAK;CAE5B,MAAM,YAAY,kBAAkB;EAClC,OAAO,YAAY,OAAO,IAAI,QAAQ,UAAU;CAClD,GAAG,CAAC,OAAO,CAAC;CAEZ,MAAM,iBAAiB,kBAAkB;EACvC,OAAO,YAAY,YAAY,IAAI,aAAa,UAAU;CAC5D,GAAG,CAAC,YAAY,CAAC;CAEjB,MAAM,UAAU,kBAAkB;EAChC,MAAM,SAAS,UAAU;EAEzB,IAAI,CAAC,UAAU,CAAC,oBAAoB,QAAQ,SAAS;EACrD,MAAM,WAAW,OAAO,YAAY;
|
|
1
|
+
{"version":3,"file":"index.js","names":["isShadowRoot","getDocument","contains","getActiveElement","getFirstFocusableElement","isSafari"],"sources":["../../../../src/hooks/use-focus/index.ts"],"sourcesContent":["\"use client\"\n\nimport type { RefObject } from \"react\"\nimport { useCallback, useRef } from \"react\"\nimport {\n contains,\n getActiveElement,\n getDocument,\n getFirstFocusableElement,\n isRefObject,\n isSafari,\n isShadowRoot,\n useUpdateEffect,\n} from \"../../utils\"\nimport { useEventListener } from \"../use-event-listener\"\n\nexport interface UseFocusOnShowProps {\n focusTarget?: HTMLElement | null | RefObject<HTMLElement | null>\n preventScroll?: boolean\n shouldFocus?: boolean\n visible?: boolean\n}\n\n/**\n * `useFocusOnShow` is a custom hook that focuses on the target element when it is shown.\n *\n * @see https://yamada-ui.com/docs/hooks/use-focus-on-show\n */\nexport const useFocusOnShow = <Y extends HTMLElement>(\n refOrEl: RefObject<null | Y> | Y,\n {\n focusTarget: focusRefOrEl,\n preventScroll,\n shouldFocus,\n visible,\n }: UseFocusOnShowProps = {\n preventScroll: true,\n shouldFocus: false,\n },\n) => {\n const trulyShouldFocus = shouldFocus && visible\n const focused = useRef(false)\n\n const getTarget = useCallback(() => {\n return isRefObject(refOrEl) ? refOrEl.current : refOrEl\n }, [refOrEl])\n\n const getFocusTarget = useCallback(() => {\n return isRefObject(focusRefOrEl) ? focusRefOrEl.current : focusRefOrEl\n }, [focusRefOrEl])\n\n const onFocus = useCallback(() => {\n const target = getTarget()\n\n if (!target || !trulyShouldFocus || focused.current) return\n const rootNode = target.getRootNode()\n const root = isShadowRoot(rootNode) ? rootNode : getDocument(target)\n if (contains(target, getActiveElement(root))) return\n\n const focusTarget = getFocusTarget()\n\n if (focusTarget) {\n requestAnimationFrame(() => {\n focusTarget.focus({ preventScroll })\n\n focused.current = true\n })\n } else {\n const firstFocusable = getFirstFocusableElement(target)\n\n if (firstFocusable)\n requestAnimationFrame(() => {\n firstFocusable.focus({ preventScroll })\n\n focused.current = true\n })\n else\n requestAnimationFrame(() => {\n target.focus({ preventScroll })\n\n focused.current = true\n })\n }\n }, [getTarget, trulyShouldFocus, getFocusTarget, preventScroll])\n\n useUpdateEffect(() => {\n focused.current = !trulyShouldFocus\n }, [trulyShouldFocus])\n\n useUpdateEffect(() => {\n requestAnimationFrame(onFocus)\n }, [onFocus])\n\n useEventListener(getTarget, \"transitionend\", onFocus)\n}\n\nexport interface UseFocusOnMouseDownProps {\n ref: RefObject<HTMLElement | null>\n elements?: (HTMLElement | null | RefObject<HTMLElement | null>)[]\n enabled?: boolean\n}\n\n/**\n * `useFocusOnPointerDown` is a custom hook that focuses on the target element when it is clicked.\n *\n * @see https://yamada-ui.com/docs/hooks/use-focus-on-pointer-down\n */\nexport const useFocusOnPointerDown = ({\n ref,\n elements,\n enabled,\n}: UseFocusOnMouseDownProps) => {\n useEventListener(\n () => ref.current?.getRootNode() ?? getDocument(ref.current),\n \"pointerdown\",\n (ev) => {\n if (!isSafari() || !enabled) return\n\n const target = ev.target as HTMLElement\n const els = elements ?? [ref]\n const rootNode = ref.current?.getRootNode()\n const root = isShadowRoot(rootNode) ? rootNode : getDocument(ref.current)\n const validTarget = els.some((elOrRef) => {\n const el = isRefObject(elOrRef) ? elOrRef.current : elOrRef\n\n return el?.contains(target) || el === target\n })\n\n if (getActiveElement(root) !== target && validTarget) {\n ev.preventDefault()\n\n target.focus()\n }\n },\n )\n}\n"],"mappings":";;;;;;;;;;;;AA4BA,MAAa,kBACX,SACA,EACE,aAAa,cACb,eACA,aACA,YACuB;CACvB,eAAe;CACf,aAAa;AACf,MACG;CACH,MAAM,mBAAmB,eAAe;CACxC,MAAM,UAAU,OAAO,KAAK;CAE5B,MAAM,YAAY,kBAAkB;EAClC,OAAO,YAAY,OAAO,IAAI,QAAQ,UAAU;CAClD,GAAG,CAAC,OAAO,CAAC;CAEZ,MAAM,iBAAiB,kBAAkB;EACvC,OAAO,YAAY,YAAY,IAAI,aAAa,UAAU;CAC5D,GAAG,CAAC,YAAY,CAAC;CAEjB,MAAM,UAAU,kBAAkB;EAChC,MAAM,SAAS,UAAU;EAEzB,IAAI,CAAC,UAAU,CAAC,oBAAoB,QAAQ,SAAS;EACrD,MAAM,WAAW,OAAO,YAAY;EACpC,MAAM,QAAA,GAAOA,cAAAA,aAAAA,CAAa,QAAQ,IAAI,YAAA,GAAWC,cAAAA,YAAAA,CAAY,MAAM;EACnE,KAAA,GAAIC,cAAAA,SAAAA,CAAS,SAAA,GAAQC,cAAAA,iBAAAA,CAAiB,IAAI,CAAC,GAAG;EAE9C,MAAM,cAAc,eAAe;EAEnC,IAAI,aACF,4BAA4B;GAC1B,YAAY,MAAM,EAAE,cAAc,CAAC;GAEnC,QAAQ,UAAU;EACpB,CAAC;OACI;GACL,MAAM,kBAAA,GAAiBC,cAAAA,yBAAAA,CAAyB,MAAM;GAEtD,IAAI,gBACF,4BAA4B;IAC1B,eAAe,MAAM,EAAE,cAAc,CAAC;IAEtC,QAAQ,UAAU;GACpB,CAAC;QAED,4BAA4B;IAC1B,OAAO,MAAM,EAAE,cAAc,CAAC;IAE9B,QAAQ,UAAU;GACpB,CAAC;EACL;CACF,GAAG;EAAC;EAAW;EAAkB;EAAgB;CAAa,CAAC;CAE/D,sBAAsB;EACpB,QAAQ,UAAU,CAAC;CACrB,GAAG,CAAC,gBAAgB,CAAC;CAErB,sBAAsB;EACpB,sBAAsB,OAAO;CAC/B,GAAG,CAAC,OAAO,CAAC;CAEZ,iBAAiB,WAAW,iBAAiB,OAAO;AACtD;;;;;;AAaA,MAAa,yBAAyB,EACpC,KACA,UACA,cAC8B;CAC9B,uBACQ,IAAI,SAAS,YAAY,MAAA,GAAKH,cAAAA,YAAAA,CAAY,IAAI,OAAO,GAC3D,gBACC,OAAO;EACN,IAAI,EAAA,GAACI,cAAAA,SAAAA,CAAS,KAAK,CAAC,SAAS;EAE7B,MAAM,SAAS,GAAG;EAClB,MAAM,MAAM,YAAY,CAAC,GAAG;EAC5B,MAAM,WAAW,IAAI,SAAS,YAAY;EAC1C,MAAM,QAAA,GAAOL,cAAAA,aAAAA,CAAa,QAAQ,IAAI,YAAA,GAAWC,cAAAA,YAAAA,CAAY,IAAI,OAAO;EACxE,MAAM,cAAc,IAAI,MAAM,YAAY;GACxC,MAAM,KAAK,YAAY,OAAO,IAAI,QAAQ,UAAU;GAEpD,OAAO,IAAI,SAAS,MAAM,KAAK,OAAO;EACxC,CAAC;EAED,KAAA,GAAIE,cAAAA,iBAAAA,CAAiB,IAAI,MAAM,UAAU,aAAa;GACpD,GAAG,eAAe;GAElB,OAAO,MAAM;EACf;CACF,CACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/hooks/use-local-storage/index.ts"],"sourcesContent":["\"use client\"\n\nimport { useCallback, useEffect, useState } from \"react\"\nimport { isFunction } from \"../../utils\"\nimport { useWindowEvent } from \"../use-window-event\"\n\nexport type StorageType = \"localStorage\" | \"sessionStorage\"\n\nexport interface StorageProps<Y> {\n key: string\n defaultValue?: Y\n getInitialValueInEffect?: boolean\n deserialize?: (value: string | undefined) => Y\n serialize?: (value: Y) => string\n}\n\nconst serializeJSON = <Y>(value: Y, name: string) => {\n try {\n return JSON.stringify(value)\n } catch {\n throw new Error(`useLocalStorage ${name}: Failed to serialize the value`)\n }\n}\n\nconst deserializeJSON = (value: string | undefined) => {\n if (!value) return value\n\n try {\n return JSON.parse(value)\n } catch {\n return value\n }\n}\n\nexport const createStorage = <Y>(type: StorageType, name: string) => {\n const eventName =\n type === \"localStorage\" ? \"local-storage\" : \"session-storage\"\n\n return ({\n key,\n defaultValue,\n deserialize = deserializeJSON,\n getInitialValueInEffect = true,\n serialize = (value: Y) => serializeJSON(value, name),\n }: StorageProps<Y>) => {\n const readStorageValue = useCallback(\n (skipStorage?: boolean): Y => {\n if (\n typeof window === \"undefined\" ||\n !(type in window) ||\n (window[type] as null | Storage | undefined) == null ||\n skipStorage\n )\n return (defaultValue ?? \"\") as Y\n\n const storageValue = window[type].getItem(key)\n\n return storageValue !== null\n ? deserialize(storageValue)\n : ((defaultValue ?? \"\") as Y)\n },\n [key, deserialize, defaultValue],\n )\n\n const [value, setValue] = useState<Y>(\n readStorageValue(getInitialValueInEffect),\n )\n\n const setStorageValue = useCallback(\n (valOrFn: ((prevState: Y) => Y) | Y) => {\n if (isFunction(valOrFn)) {\n setValue((current) => {\n const result = valOrFn(current)\n\n window[type].setItem(key, serialize(result))\n window.dispatchEvent(\n new CustomEvent(eventName, {\n detail: { key, value: valOrFn(current) },\n }),\n )\n\n return result\n })\n } else {\n window[type].setItem(key, serialize(valOrFn))\n window.dispatchEvent(\n new CustomEvent(eventName, { detail: { key, value: valOrFn } }),\n )\n\n setValue(valOrFn)\n }\n },\n [key, serialize],\n )\n\n const removeStorageValue = useCallback(() => {\n window[type].removeItem(key)\n setValue(defaultValue as Y)\n }, [defaultValue, key])\n\n useWindowEvent(\"storage\", (ev) => {\n if (ev.storageArea === window[type] && ev.key === key)\n setValue(deserialize(ev.newValue ?? undefined))\n })\n\n useWindowEvent(eventName, (ev) => {\n if (ev.detail.key === key) setValue(ev.detail.value)\n })\n\n useEffect(() => {\n if (defaultValue !== undefined && value === undefined)\n setStorageValue(defaultValue)\n }, [defaultValue, value, setStorageValue])\n\n useEffect(() => {\n if (getInitialValueInEffect) setValue(readStorageValue())\n }, [getInitialValueInEffect, readStorageValue])\n\n return [\n value === undefined ? defaultValue : value,\n setStorageValue,\n removeStorageValue,\n ] as const\n }\n}\n\n/**\n * `useLocalStorage` is a custom hook for storing, updating, and retrieving values in local storage.\n *\n * @see https://yamada-ui.com/docs/hooks/use-local-storage\n */\nexport const useLocalStorage = <Y = string>(props: StorageProps<Y>) =>\n createStorage<Y>(\"localStorage\", \"use-local-storage\")(props)\n"],"mappings":";;;;;AAgBA,MAAM,iBAAoB,OAAU,SAAiB;CACnD,IAAI;EACF,OAAO,KAAK,UAAU,KAAK;CAC7B,QAAQ;EACN,MAAM,IAAI,MAAM,mBAAmB,KAAK,gCAAgC;CAC1E;AACF;AAEA,MAAM,mBAAmB,UAA8B;CACrD,IAAI,CAAC,OAAO,OAAO;CAEnB,IAAI;EACF,OAAO,KAAK,MAAM,KAAK;CACzB,QAAQ;EACN,OAAO;CACT;AACF;AAEA,MAAa,iBAAoB,MAAmB,SAAiB;CACnE,MAAM,YACJ,SAAS,iBAAiB,kBAAkB;CAE9C,QAAQ,EACN,KACA,cACA,cAAc,iBACd,0BAA0B,MAC1B,aAAa,UAAa,cAAc,OAAO,IAAI,QAC9B;EACrB,MAAM,mBAAmB,aACtB,gBAA6B;GAC5B,IACE,OAAO,WAAW,eAClB,EAAE,QAAQ,WACT,OAAO,SAAwC,QAChD,aAEA,OAAQ,gBAAgB;GAE1B,MAAM,eAAe,OAAO,KAAK,CAAC,QAAQ,GAAG;GAE7C,OAAO,iBAAiB,OACpB,YAAY,YAAY,IACtB,gBAAgB;EACxB,GACA;GAAC;GAAK;GAAa;EAAY,CACjC;EAEA,MAAM,CAAC,OAAO,YAAY,SACxB,iBAAiB,uBAAuB,CAC1C;EAEA,MAAM,kBAAkB,aACrB,YAAuC;GACtC,KAAA,
|
|
1
|
+
{"version":3,"file":"index.js","names":["isFunction"],"sources":["../../../../src/hooks/use-local-storage/index.ts"],"sourcesContent":["\"use client\"\n\nimport { useCallback, useEffect, useState } from \"react\"\nimport { isFunction } from \"../../utils\"\nimport { useWindowEvent } from \"../use-window-event\"\n\nexport type StorageType = \"localStorage\" | \"sessionStorage\"\n\nexport interface StorageProps<Y> {\n key: string\n defaultValue?: Y\n getInitialValueInEffect?: boolean\n deserialize?: (value: string | undefined) => Y\n serialize?: (value: Y) => string\n}\n\nconst serializeJSON = <Y>(value: Y, name: string) => {\n try {\n return JSON.stringify(value)\n } catch {\n throw new Error(`useLocalStorage ${name}: Failed to serialize the value`)\n }\n}\n\nconst deserializeJSON = (value: string | undefined) => {\n if (!value) return value\n\n try {\n return JSON.parse(value)\n } catch {\n return value\n }\n}\n\nexport const createStorage = <Y>(type: StorageType, name: string) => {\n const eventName =\n type === \"localStorage\" ? \"local-storage\" : \"session-storage\"\n\n return ({\n key,\n defaultValue,\n deserialize = deserializeJSON,\n getInitialValueInEffect = true,\n serialize = (value: Y) => serializeJSON(value, name),\n }: StorageProps<Y>) => {\n const readStorageValue = useCallback(\n (skipStorage?: boolean): Y => {\n if (\n typeof window === \"undefined\" ||\n !(type in window) ||\n (window[type] as null | Storage | undefined) == null ||\n skipStorage\n )\n return (defaultValue ?? \"\") as Y\n\n const storageValue = window[type].getItem(key)\n\n return storageValue !== null\n ? deserialize(storageValue)\n : ((defaultValue ?? \"\") as Y)\n },\n [key, deserialize, defaultValue],\n )\n\n const [value, setValue] = useState<Y>(\n readStorageValue(getInitialValueInEffect),\n )\n\n const setStorageValue = useCallback(\n (valOrFn: ((prevState: Y) => Y) | Y) => {\n if (isFunction(valOrFn)) {\n setValue((current) => {\n const result = valOrFn(current)\n\n window[type].setItem(key, serialize(result))\n window.dispatchEvent(\n new CustomEvent(eventName, {\n detail: { key, value: valOrFn(current) },\n }),\n )\n\n return result\n })\n } else {\n window[type].setItem(key, serialize(valOrFn))\n window.dispatchEvent(\n new CustomEvent(eventName, { detail: { key, value: valOrFn } }),\n )\n\n setValue(valOrFn)\n }\n },\n [key, serialize],\n )\n\n const removeStorageValue = useCallback(() => {\n window[type].removeItem(key)\n setValue(defaultValue as Y)\n }, [defaultValue, key])\n\n useWindowEvent(\"storage\", (ev) => {\n if (ev.storageArea === window[type] && ev.key === key)\n setValue(deserialize(ev.newValue ?? undefined))\n })\n\n useWindowEvent(eventName, (ev) => {\n if (ev.detail.key === key) setValue(ev.detail.value)\n })\n\n useEffect(() => {\n if (defaultValue !== undefined && value === undefined)\n setStorageValue(defaultValue)\n }, [defaultValue, value, setStorageValue])\n\n useEffect(() => {\n if (getInitialValueInEffect) setValue(readStorageValue())\n }, [getInitialValueInEffect, readStorageValue])\n\n return [\n value === undefined ? defaultValue : value,\n setStorageValue,\n removeStorageValue,\n ] as const\n }\n}\n\n/**\n * `useLocalStorage` is a custom hook for storing, updating, and retrieving values in local storage.\n *\n * @see https://yamada-ui.com/docs/hooks/use-local-storage\n */\nexport const useLocalStorage = <Y = string>(props: StorageProps<Y>) =>\n createStorage<Y>(\"localStorage\", \"use-local-storage\")(props)\n"],"mappings":";;;;;AAgBA,MAAM,iBAAoB,OAAU,SAAiB;CACnD,IAAI;EACF,OAAO,KAAK,UAAU,KAAK;CAC7B,QAAQ;EACN,MAAM,IAAI,MAAM,mBAAmB,KAAK,gCAAgC;CAC1E;AACF;AAEA,MAAM,mBAAmB,UAA8B;CACrD,IAAI,CAAC,OAAO,OAAO;CAEnB,IAAI;EACF,OAAO,KAAK,MAAM,KAAK;CACzB,QAAQ;EACN,OAAO;CACT;AACF;AAEA,MAAa,iBAAoB,MAAmB,SAAiB;CACnE,MAAM,YACJ,SAAS,iBAAiB,kBAAkB;CAE9C,QAAQ,EACN,KACA,cACA,cAAc,iBACd,0BAA0B,MAC1B,aAAa,UAAa,cAAc,OAAO,IAAI,QAC9B;EACrB,MAAM,mBAAmB,aACtB,gBAA6B;GAC5B,IACE,OAAO,WAAW,eAClB,EAAE,QAAQ,WACT,OAAO,SAAwC,QAChD,aAEA,OAAQ,gBAAgB;GAE1B,MAAM,eAAe,OAAO,KAAK,CAAC,QAAQ,GAAG;GAE7C,OAAO,iBAAiB,OACpB,YAAY,YAAY,IACtB,gBAAgB;EACxB,GACA;GAAC;GAAK;GAAa;EAAY,CACjC;EAEA,MAAM,CAAC,OAAO,YAAY,SACxB,iBAAiB,uBAAuB,CAC1C;EAEA,MAAM,kBAAkB,aACrB,YAAuC;GACtC,KAAA,GAAIA,cAAAA,WAAAA,CAAW,OAAO,GACpB,UAAU,YAAY;IACpB,MAAM,SAAS,QAAQ,OAAO;IAE9B,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU,MAAM,CAAC;IAC3C,OAAO,cACL,IAAI,YAAY,WAAW,EACzB,QAAQ;KAAE;KAAK,OAAO,QAAQ,OAAO;IAAE,EACzC,CAAC,CACH;IAEA,OAAO;GACT,CAAC;QACI;IACL,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU,OAAO,CAAC;IAC5C,OAAO,cACL,IAAI,YAAY,WAAW,EAAE,QAAQ;KAAE;KAAK,OAAO;IAAQ,EAAE,CAAC,CAChE;IAEA,SAAS,OAAO;GAClB;EACF,GACA,CAAC,KAAK,SAAS,CACjB;EAEA,MAAM,qBAAqB,kBAAkB;GAC3C,OAAO,KAAK,CAAC,WAAW,GAAG;GAC3B,SAAS,YAAiB;EAC5B,GAAG,CAAC,cAAc,GAAG,CAAC;EAEtB,eAAe,YAAY,OAAO;GAChC,IAAI,GAAG,gBAAgB,OAAO,SAAS,GAAG,QAAQ,KAChD,SAAS,YAAY,GAAG,YAAY,KAAA,CAAS,CAAC;EAClD,CAAC;EAED,eAAe,YAAY,OAAO;GAChC,IAAI,GAAG,OAAO,QAAQ,KAAK,SAAS,GAAG,OAAO,KAAK;EACrD,CAAC;EAED,gBAAgB;GACd,IAAI,iBAAiB,KAAA,KAAa,UAAU,KAAA,GAC1C,gBAAgB,YAAY;EAChC,GAAG;GAAC;GAAc;GAAO;EAAe,CAAC;EAEzC,gBAAgB;GACd,IAAI,yBAAyB,SAAS,iBAAiB,CAAC;EAC1D,GAAG,CAAC,yBAAyB,gBAAgB,CAAC;EAE9C,OAAO;GACL,UAAU,KAAA,IAAY,eAAe;GACrC;GACA;EACF;CACF;AACF;;;;;;AAOA,MAAa,mBAA+B,UAC1C,cAAiB,gBAAgB,mBAAmB,CAAC,CAAC,KAAK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/hooks/use-os/index.ts"],"sourcesContent":["import { useEnvironment } from \"../../core\"\nimport { isUndefined } from \"../../utils\"\n\nexport type OS =\n | \"android\"\n | \"chromeos\"\n | \"ios\"\n | \"linux\"\n | \"macos\"\n | \"undetermined\"\n | \"windows\"\n\nconst getOS = ({ navigator: { userAgent } }: Window): OS => {\n const macos = /(Macintosh)|(MacIntel)|(MacPPC)|(Mac68K)/i\n const windows = /(Win32)|(Win64)|(Windows)|(WinCE)/i\n const ios = /(iPhone)|(iPad)|(iPod)/i\n const android = /Android/i\n const linux = /Linux/i\n const chromeos = /CrOS/i\n\n if (macos.test(userAgent)) return \"macos\"\n if (ios.test(userAgent)) return \"ios\"\n if (windows.test(userAgent)) return \"windows\"\n if (android.test(userAgent)) return \"android\"\n if (linux.test(userAgent)) return \"linux\"\n if (chromeos.test(userAgent)) return \"chromeos\"\n\n return \"undetermined\"\n}\n\n/**\n * `useOS` is a custom hook that returns the user's OS.\n *\n * @see https://yamada-ui.com/docs/hooks/use-os\n */\nexport const useOS = (): OS => {\n const { getWindow } = useEnvironment()\n const win = getWindow()\n\n if (!isUndefined(win)) return getOS(win)\n\n return \"undetermined\"\n}\n"],"mappings":";;;AAYA,MAAM,SAAS,EAAE,WAAW,EAAE,kBAA8B;CAC1D,MAAM,QAAQ;CACd,MAAM,UAAU;CAChB,MAAM,MAAM;CACZ,MAAM,UAAU;CAChB,MAAM,QAAQ;CACd,MAAM,WAAW;CAEjB,IAAI,MAAM,KAAK,SAAS,GAAG,OAAO;CAClC,IAAI,IAAI,KAAK,SAAS,GAAG,OAAO;CAChC,IAAI,QAAQ,KAAK,SAAS,GAAG,OAAO;CACpC,IAAI,QAAQ,KAAK,SAAS,GAAG,OAAO;CACpC,IAAI,MAAM,KAAK,SAAS,GAAG,OAAO;CAClC,IAAI,SAAS,KAAK,SAAS,GAAG,OAAO;CAErC,OAAO;AACT;;;;;;AAOA,MAAa,cAAkB;CAC7B,MAAM,EAAE,cAAc,eAAe;CACrC,MAAM,MAAM,UAAU;CAEtB,IAAI,EAAA,
|
|
1
|
+
{"version":3,"file":"index.js","names":["isUndefined"],"sources":["../../../../src/hooks/use-os/index.ts"],"sourcesContent":["import { useEnvironment } from \"../../core\"\nimport { isUndefined } from \"../../utils\"\n\nexport type OS =\n | \"android\"\n | \"chromeos\"\n | \"ios\"\n | \"linux\"\n | \"macos\"\n | \"undetermined\"\n | \"windows\"\n\nconst getOS = ({ navigator: { userAgent } }: Window): OS => {\n const macos = /(Macintosh)|(MacIntel)|(MacPPC)|(Mac68K)/i\n const windows = /(Win32)|(Win64)|(Windows)|(WinCE)/i\n const ios = /(iPhone)|(iPad)|(iPod)/i\n const android = /Android/i\n const linux = /Linux/i\n const chromeos = /CrOS/i\n\n if (macos.test(userAgent)) return \"macos\"\n if (ios.test(userAgent)) return \"ios\"\n if (windows.test(userAgent)) return \"windows\"\n if (android.test(userAgent)) return \"android\"\n if (linux.test(userAgent)) return \"linux\"\n if (chromeos.test(userAgent)) return \"chromeos\"\n\n return \"undetermined\"\n}\n\n/**\n * `useOS` is a custom hook that returns the user's OS.\n *\n * @see https://yamada-ui.com/docs/hooks/use-os\n */\nexport const useOS = (): OS => {\n const { getWindow } = useEnvironment()\n const win = getWindow()\n\n if (!isUndefined(win)) return getOS(win)\n\n return \"undetermined\"\n}\n"],"mappings":";;;AAYA,MAAM,SAAS,EAAE,WAAW,EAAE,kBAA8B;CAC1D,MAAM,QAAQ;CACd,MAAM,UAAU;CAChB,MAAM,MAAM;CACZ,MAAM,UAAU;CAChB,MAAM,QAAQ;CACd,MAAM,WAAW;CAEjB,IAAI,MAAM,KAAK,SAAS,GAAG,OAAO;CAClC,IAAI,IAAI,KAAK,SAAS,GAAG,OAAO;CAChC,IAAI,QAAQ,KAAK,SAAS,GAAG,OAAO;CACpC,IAAI,QAAQ,KAAK,SAAS,GAAG,OAAO;CACpC,IAAI,MAAM,KAAK,SAAS,GAAG,OAAO;CAClC,IAAI,SAAS,KAAK,SAAS,GAAG,OAAO;CAErC,OAAO;AACT;;;;;;AAOA,MAAa,cAAkB;CAC7B,MAAM,EAAE,cAAc,eAAe;CACrC,MAAM,MAAM,UAAU;CAEtB,IAAI,EAAA,GAACA,cAAAA,YAAAA,CAAY,GAAG,GAAG,OAAO,MAAM,GAAG;CAEvC,OAAO;AACT"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/hooks/use-outside-click/index.ts"],"sourcesContent":["\"use client\"\n\nimport type { RefObject } from \"react\"\nimport { useCallback, useEffect, useRef } from \"react\"\nimport { getDocument, isArray, useCallbackRef } from \"../../utils\"\n\nexport interface UseOutsideClickProps {\n ref: RefObject<HTMLElement | null> | RefObject<HTMLElement | null>[]\n enabled?: boolean\n handler?: (ev: Event) => void\n}\n\n/**\n * `useOutsideClick` is a custom hook that detects click events outside of an element.\n *\n * @see https://yamada-ui.com/docs/hooks/use-outside-click\n */\nexport const useOutsideClick = ({\n ref,\n enabled = true,\n handler,\n}: UseOutsideClickProps) => {\n const handlerRef = useCallbackRef(handler)\n\n const state = useRef({\n ignoreEmulatedMouseEvents: false,\n isPointerDown: false,\n })\n\n const onPointerDown = useCallback(\n (ev: MouseEvent | TouchEvent) => {\n if (isValidEvent(ev, ref)) state.current.isPointerDown = true\n },\n [ref],\n )\n\n const onMouseUp = useCallback(\n (ev: MouseEvent) => {\n if (state.current.ignoreEmulatedMouseEvents) {\n state.current.ignoreEmulatedMouseEvents = false\n\n return\n }\n\n if (state.current.isPointerDown && handler && isValidEvent(ev, ref)) {\n state.current.isPointerDown = false\n\n handlerRef(ev)\n }\n },\n [handler, handlerRef, ref],\n )\n\n const onTouchEnd = useCallback(\n (ev: TouchEvent) => {\n state.current.ignoreEmulatedMouseEvents = true\n\n if (state.current.isPointerDown && handler && isValidEvent(ev, ref)) {\n state.current.isPointerDown = false\n\n handlerRef(ev)\n }\n },\n [handler, handlerRef, ref],\n )\n\n useEffect(() => {\n if (!enabled) return\n\n const doc = getDocument(isArray(ref) ? ref[0]?.current : ref.current)\n\n doc.addEventListener(\"mousedown\", onPointerDown, true)\n doc.addEventListener(\"mouseup\", onMouseUp, true)\n doc.addEventListener(\"touchstart\", onPointerDown, true)\n doc.addEventListener(\"touchend\", onTouchEnd, true)\n\n return () => {\n doc.removeEventListener(\"mousedown\", onPointerDown, true)\n doc.removeEventListener(\"mouseup\", onMouseUp, true)\n doc.removeEventListener(\"touchstart\", onPointerDown, true)\n doc.removeEventListener(\"touchend\", onTouchEnd, true)\n }\n }, [\n handler,\n ref,\n handlerRef,\n state,\n enabled,\n onPointerDown,\n onMouseUp,\n onTouchEnd,\n ])\n}\n\nconst isValidEvent = (\n ev: MouseEvent | TouchEvent,\n ref: RefObject<HTMLElement | null> | RefObject<HTMLElement | null>[],\n) => {\n const target = ev.target as HTMLElement | null\n const path = ev.composedPath()\n\n if (\"button\" in ev && ev.button > 0) return false\n\n if (target) if (!getDocument(target).contains(target)) return false\n\n const contains = (el: HTMLElement | null) =>\n !!el && (path.includes(el) || el.contains(target))\n\n if (isArray(ref)) return !ref.some(({ current }) => contains(current))\n else return !contains(ref.current)\n}\n"],"mappings":";;;;;;;;;;AAiBA,MAAa,mBAAmB,EAC9B,KACA,UAAU,MACV,cAC0B;CAC1B,MAAM,aAAa,eAAe,OAAO;CAEzC,MAAM,QAAQ,OAAO;EACnB,2BAA2B;EAC3B,eAAe;CACjB,CAAC;CAED,MAAM,gBAAgB,aACnB,OAAgC;EAC/B,IAAI,aAAa,IAAI,GAAG,GAAG,MAAM,QAAQ,gBAAgB;CAC3D,GACA,CAAC,GAAG,CACN;CAEA,MAAM,YAAY,aACf,OAAmB;EAClB,IAAI,MAAM,QAAQ,2BAA2B;GAC3C,MAAM,QAAQ,4BAA4B;GAE1C;EACF;EAEA,IAAI,MAAM,QAAQ,iBAAiB,WAAW,aAAa,IAAI,GAAG,GAAG;GACnE,MAAM,QAAQ,gBAAgB;GAE9B,WAAW,EAAE;EACf;CACF,GACA;EAAC;EAAS;EAAY;CAAG,CAC3B;CAEA,MAAM,aAAa,aAChB,OAAmB;EAClB,MAAM,QAAQ,4BAA4B;EAE1C,IAAI,MAAM,QAAQ,iBAAiB,WAAW,aAAa,IAAI,GAAG,GAAG;GACnE,MAAM,QAAQ,gBAAgB;GAE9B,WAAW,EAAE;EACf;CACF,GACA;EAAC;EAAS;EAAY;CAAG,CAC3B;CAEA,gBAAgB;EACd,IAAI,CAAC,SAAS;EAEd,MAAM,OAAA,
|
|
1
|
+
{"version":3,"file":"index.js","names":["getDocument","isArray"],"sources":["../../../../src/hooks/use-outside-click/index.ts"],"sourcesContent":["\"use client\"\n\nimport type { RefObject } from \"react\"\nimport { useCallback, useEffect, useRef } from \"react\"\nimport { getDocument, isArray, useCallbackRef } from \"../../utils\"\n\nexport interface UseOutsideClickProps {\n ref: RefObject<HTMLElement | null> | RefObject<HTMLElement | null>[]\n enabled?: boolean\n handler?: (ev: Event) => void\n}\n\n/**\n * `useOutsideClick` is a custom hook that detects click events outside of an element.\n *\n * @see https://yamada-ui.com/docs/hooks/use-outside-click\n */\nexport const useOutsideClick = ({\n ref,\n enabled = true,\n handler,\n}: UseOutsideClickProps) => {\n const handlerRef = useCallbackRef(handler)\n\n const state = useRef({\n ignoreEmulatedMouseEvents: false,\n isPointerDown: false,\n })\n\n const onPointerDown = useCallback(\n (ev: MouseEvent | TouchEvent) => {\n if (isValidEvent(ev, ref)) state.current.isPointerDown = true\n },\n [ref],\n )\n\n const onMouseUp = useCallback(\n (ev: MouseEvent) => {\n if (state.current.ignoreEmulatedMouseEvents) {\n state.current.ignoreEmulatedMouseEvents = false\n\n return\n }\n\n if (state.current.isPointerDown && handler && isValidEvent(ev, ref)) {\n state.current.isPointerDown = false\n\n handlerRef(ev)\n }\n },\n [handler, handlerRef, ref],\n )\n\n const onTouchEnd = useCallback(\n (ev: TouchEvent) => {\n state.current.ignoreEmulatedMouseEvents = true\n\n if (state.current.isPointerDown && handler && isValidEvent(ev, ref)) {\n state.current.isPointerDown = false\n\n handlerRef(ev)\n }\n },\n [handler, handlerRef, ref],\n )\n\n useEffect(() => {\n if (!enabled) return\n\n const doc = getDocument(isArray(ref) ? ref[0]?.current : ref.current)\n\n doc.addEventListener(\"mousedown\", onPointerDown, true)\n doc.addEventListener(\"mouseup\", onMouseUp, true)\n doc.addEventListener(\"touchstart\", onPointerDown, true)\n doc.addEventListener(\"touchend\", onTouchEnd, true)\n\n return () => {\n doc.removeEventListener(\"mousedown\", onPointerDown, true)\n doc.removeEventListener(\"mouseup\", onMouseUp, true)\n doc.removeEventListener(\"touchstart\", onPointerDown, true)\n doc.removeEventListener(\"touchend\", onTouchEnd, true)\n }\n }, [\n handler,\n ref,\n handlerRef,\n state,\n enabled,\n onPointerDown,\n onMouseUp,\n onTouchEnd,\n ])\n}\n\nconst isValidEvent = (\n ev: MouseEvent | TouchEvent,\n ref: RefObject<HTMLElement | null> | RefObject<HTMLElement | null>[],\n) => {\n const target = ev.target as HTMLElement | null\n const path = ev.composedPath()\n\n if (\"button\" in ev && ev.button > 0) return false\n\n if (target) if (!getDocument(target).contains(target)) return false\n\n const contains = (el: HTMLElement | null) =>\n !!el && (path.includes(el) || el.contains(target))\n\n if (isArray(ref)) return !ref.some(({ current }) => contains(current))\n else return !contains(ref.current)\n}\n"],"mappings":";;;;;;;;;;AAiBA,MAAa,mBAAmB,EAC9B,KACA,UAAU,MACV,cAC0B;CAC1B,MAAM,aAAa,eAAe,OAAO;CAEzC,MAAM,QAAQ,OAAO;EACnB,2BAA2B;EAC3B,eAAe;CACjB,CAAC;CAED,MAAM,gBAAgB,aACnB,OAAgC;EAC/B,IAAI,aAAa,IAAI,GAAG,GAAG,MAAM,QAAQ,gBAAgB;CAC3D,GACA,CAAC,GAAG,CACN;CAEA,MAAM,YAAY,aACf,OAAmB;EAClB,IAAI,MAAM,QAAQ,2BAA2B;GAC3C,MAAM,QAAQ,4BAA4B;GAE1C;EACF;EAEA,IAAI,MAAM,QAAQ,iBAAiB,WAAW,aAAa,IAAI,GAAG,GAAG;GACnE,MAAM,QAAQ,gBAAgB;GAE9B,WAAW,EAAE;EACf;CACF,GACA;EAAC;EAAS;EAAY;CAAG,CAC3B;CAEA,MAAM,aAAa,aAChB,OAAmB;EAClB,MAAM,QAAQ,4BAA4B;EAE1C,IAAI,MAAM,QAAQ,iBAAiB,WAAW,aAAa,IAAI,GAAG,GAAG;GACnE,MAAM,QAAQ,gBAAgB;GAE9B,WAAW,EAAE;EACf;CACF,GACA;EAAC;EAAS;EAAY;CAAG,CAC3B;CAEA,gBAAgB;EACd,IAAI,CAAC,SAAS;EAEd,MAAM,OAAA,GAAMA,cAAAA,YAAAA,EAAAA,GAAYC,cAAAA,QAAAA,CAAQ,GAAG,IAAI,IAAI,EAAE,EAAE,UAAU,IAAI,OAAO;EAEpE,IAAI,iBAAiB,aAAa,eAAe,IAAI;EACrD,IAAI,iBAAiB,WAAW,WAAW,IAAI;EAC/C,IAAI,iBAAiB,cAAc,eAAe,IAAI;EACtD,IAAI,iBAAiB,YAAY,YAAY,IAAI;EAEjD,aAAa;GACX,IAAI,oBAAoB,aAAa,eAAe,IAAI;GACxD,IAAI,oBAAoB,WAAW,WAAW,IAAI;GAClD,IAAI,oBAAoB,cAAc,eAAe,IAAI;GACzD,IAAI,oBAAoB,YAAY,YAAY,IAAI;EACtD;CACF,GAAG;EACD;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACF,CAAC;AACH;AAEA,MAAM,gBACJ,IACA,QACG;CACH,MAAM,SAAS,GAAG;CAClB,MAAM,OAAO,GAAG,aAAa;CAE7B,IAAI,YAAY,MAAM,GAAG,SAAS,GAAG,OAAO;CAE5C,IAAI,QAAY;MAAA,EAAA,GAACD,cAAAA,YAAAA,CAAY,MAAM,CAAC,CAAC,SAAS,MAAM,GAAG,OAAO;CAAA;CAE9D,MAAM,YAAY,OAChB,CAAC,CAAC,OAAO,KAAK,SAAS,EAAE,KAAK,GAAG,SAAS,MAAM;CAElD,KAAA,GAAIC,cAAAA,QAAAA,CAAQ,GAAG,GAAG,OAAO,CAAC,IAAI,MAAM,EAAE,cAAc,SAAS,OAAO,CAAC;MAChE,OAAO,CAAC,SAAS,IAAI,OAAO;AACnC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/hooks/use-pan-event/index.ts"],"sourcesContent":["\"use client\"\n\nimport type {\n DataAttributes,\n HTMLAttributes,\n RefAttributes,\n RefObject,\n} from \"react\"\nimport type { Point } from \"../../utils\"\nimport { useCallback, useRef } from \"react\"\nimport { useEnvironment } from \"../../core\"\nimport {\n addDomEvent,\n getEventPoint,\n handlerAll,\n isMultiTouchEvent,\n mergeRefs,\n useCallbackRef,\n useUnmountEffect,\n} from \"../../utils\"\n\nexport interface PanEventProps {\n threshold?: number\n onEnd?: (ev: PointerEvent, point: Point, rect: DOMRect) => void\n onMove?: (ev: PointerEvent, point: Point, rect: DOMRect) => void\n onStart?: (ev: PointerEvent, point: Point, rect: DOMRect) => void\n}\n\ninterface Props<Y extends HTMLElement>\n extends DataAttributes, HTMLAttributes<Y>, RefAttributes<Y> {}\n\nexport const usePanEvent = <Y extends HTMLElement>({\n threshold = 3,\n ...rest\n}: PanEventProps = {}): [\n RefObject<null | Y>,\n (props?: Props<Y>) => Props<Y>,\n] => {\n const { getWindow } = useEnvironment()\n const onStart = useCallbackRef(rest.onStart)\n const onMove = useCallbackRef(rest.onMove)\n const onEnd = useCallbackRef(rest.onEnd)\n const latestPoint = useRef<null | Point>(null)\n const unsubscribe = useRef<(() => void)[]>([])\n const ref = useRef<Y>(null)\n\n const cleanup = useCallback(() => {\n unsubscribe.current.forEach((unsubscribe) => unsubscribe())\n\n latestPoint.current = null\n unsubscribe.current = []\n }, [])\n\n const shouldMove = useCallback(\n (point: Point) => {\n if (threshold === 0) return true\n if (!latestPoint.current) return true\n\n const distance = Math.sqrt(\n Math.pow(point.x - latestPoint.current.x, 2) +\n Math.pow(point.y - latestPoint.current.y, 2),\n )\n\n return distance >= threshold\n },\n [threshold],\n )\n\n useUnmountEffect(() => {\n cleanup()\n })\n\n const getProps = useCallback(\n (props: Props<Y> = {}) => {\n return {\n ...props,\n ref: mergeRefs(ref, props.ref),\n onPointerDown: handlerAll(props.onPointerDown, (ev) => {\n const win = ev.nativeEvent.view ?? getWindow()\n\n if (!win) return\n if (isMultiTouchEvent(ev.nativeEvent)) return\n if (!ref.current) return\n\n ev.preventDefault()\n\n const point = getEventPoint(ev.nativeEvent)\n const rect = ref.current.getBoundingClientRect()\n\n onStart(ev.nativeEvent, point, rect)\n\n latestPoint.current = point\n\n unsubscribe.current.push(\n addDomEvent(win, \"pointermove\", (ev) => {\n if (!ref.current) return\n\n const point = getEventPoint(ev)\n const rect = ref.current.getBoundingClientRect()\n\n if (!shouldMove(point)) return\n\n latestPoint.current = point\n\n onMove(ev, point, rect)\n }),\n )\n\n unsubscribe.current.push(\n addDomEvent(win, \"pointerup\", (ev) => {\n if (!ref.current) return\n\n cleanup()\n\n const point = getEventPoint(ev)\n const rect = ref.current.getBoundingClientRect()\n\n onEnd(ev, point, rect)\n }),\n )\n\n unsubscribe.current.push(\n addDomEvent(win, \"pointercancel\", (ev) => {\n if (!ref.current) return\n\n cleanup()\n\n const point = getEventPoint(ev)\n const rect = ref.current.getBoundingClientRect()\n\n onEnd(ev, point, rect)\n }),\n )\n }),\n }\n },\n [cleanup, getWindow, onEnd, onMove, onStart, shouldMove],\n )\n\n return [ref, getProps] as const\n}\n\nexport type UsePanEventReturn = ReturnType<typeof usePanEvent>\n"],"mappings":";;;;;;;AA+BA,MAAa,eAAsC,EACjD,YAAY,GACZ,GAAG,SACc,CAAC,MAGf;CACH,MAAM,EAAE,cAAc,eAAe;CACrC,MAAM,UAAU,eAAe,KAAK,OAAO;CAC3C,MAAM,SAAS,eAAe,KAAK,MAAM;CACzC,MAAM,QAAQ,eAAe,KAAK,KAAK;CACvC,MAAM,cAAc,OAAqB,IAAI;CAC7C,MAAM,cAAc,OAAuB,CAAC,CAAC;CAC7C,MAAM,MAAM,OAAU,IAAI;CAE1B,MAAM,UAAU,kBAAkB;EAChC,YAAY,QAAQ,SAAS,gBAAgB,YAAY,CAAC;EAE1D,YAAY,UAAU;EACtB,YAAY,UAAU,CAAC;CACzB,GAAG,CAAC,CAAC;CAEL,MAAM,aAAa,aAChB,UAAiB;EAChB,IAAI,cAAc,GAAG,OAAO;EAC5B,IAAI,CAAC,YAAY,SAAS,OAAO;EAOjC,OALiB,KAAK,KACpB,KAAK,IAAI,MAAM,IAAI,YAAY,QAAQ,GAAG,CAAC,IACzC,KAAK,IAAI,MAAM,IAAI,YAAY,QAAQ,GAAG,CAAC,CAGjC,KAAK;CACrB,GACA,CAAC,SAAS,CACZ;CAEA,uBAAuB;EACrB,QAAQ;CACV,CAAC;CAqED,OAAO,CAAC,KAnES,aACd,QAAkB,CAAC,MAAM;EACxB,OAAO;GACL,GAAG;GACH,KAAK,UAAU,KAAK,MAAM,GAAG;GAC7B,gBAAA,
|
|
1
|
+
{"version":3,"file":"index.js","names":["handlerAll","isMultiTouchEvent","getEventPoint","addDomEvent"],"sources":["../../../../src/hooks/use-pan-event/index.ts"],"sourcesContent":["\"use client\"\n\nimport type {\n DataAttributes,\n HTMLAttributes,\n RefAttributes,\n RefObject,\n} from \"react\"\nimport type { Point } from \"../../utils\"\nimport { useCallback, useRef } from \"react\"\nimport { useEnvironment } from \"../../core\"\nimport {\n addDomEvent,\n getEventPoint,\n handlerAll,\n isMultiTouchEvent,\n mergeRefs,\n useCallbackRef,\n useUnmountEffect,\n} from \"../../utils\"\n\nexport interface PanEventProps {\n threshold?: number\n onEnd?: (ev: PointerEvent, point: Point, rect: DOMRect) => void\n onMove?: (ev: PointerEvent, point: Point, rect: DOMRect) => void\n onStart?: (ev: PointerEvent, point: Point, rect: DOMRect) => void\n}\n\ninterface Props<Y extends HTMLElement>\n extends DataAttributes, HTMLAttributes<Y>, RefAttributes<Y> {}\n\nexport const usePanEvent = <Y extends HTMLElement>({\n threshold = 3,\n ...rest\n}: PanEventProps = {}): [\n RefObject<null | Y>,\n (props?: Props<Y>) => Props<Y>,\n] => {\n const { getWindow } = useEnvironment()\n const onStart = useCallbackRef(rest.onStart)\n const onMove = useCallbackRef(rest.onMove)\n const onEnd = useCallbackRef(rest.onEnd)\n const latestPoint = useRef<null | Point>(null)\n const unsubscribe = useRef<(() => void)[]>([])\n const ref = useRef<Y>(null)\n\n const cleanup = useCallback(() => {\n unsubscribe.current.forEach((unsubscribe) => unsubscribe())\n\n latestPoint.current = null\n unsubscribe.current = []\n }, [])\n\n const shouldMove = useCallback(\n (point: Point) => {\n if (threshold === 0) return true\n if (!latestPoint.current) return true\n\n const distance = Math.sqrt(\n Math.pow(point.x - latestPoint.current.x, 2) +\n Math.pow(point.y - latestPoint.current.y, 2),\n )\n\n return distance >= threshold\n },\n [threshold],\n )\n\n useUnmountEffect(() => {\n cleanup()\n })\n\n const getProps = useCallback(\n (props: Props<Y> = {}) => {\n return {\n ...props,\n ref: mergeRefs(ref, props.ref),\n onPointerDown: handlerAll(props.onPointerDown, (ev) => {\n const win = ev.nativeEvent.view ?? getWindow()\n\n if (!win) return\n if (isMultiTouchEvent(ev.nativeEvent)) return\n if (!ref.current) return\n\n ev.preventDefault()\n\n const point = getEventPoint(ev.nativeEvent)\n const rect = ref.current.getBoundingClientRect()\n\n onStart(ev.nativeEvent, point, rect)\n\n latestPoint.current = point\n\n unsubscribe.current.push(\n addDomEvent(win, \"pointermove\", (ev) => {\n if (!ref.current) return\n\n const point = getEventPoint(ev)\n const rect = ref.current.getBoundingClientRect()\n\n if (!shouldMove(point)) return\n\n latestPoint.current = point\n\n onMove(ev, point, rect)\n }),\n )\n\n unsubscribe.current.push(\n addDomEvent(win, \"pointerup\", (ev) => {\n if (!ref.current) return\n\n cleanup()\n\n const point = getEventPoint(ev)\n const rect = ref.current.getBoundingClientRect()\n\n onEnd(ev, point, rect)\n }),\n )\n\n unsubscribe.current.push(\n addDomEvent(win, \"pointercancel\", (ev) => {\n if (!ref.current) return\n\n cleanup()\n\n const point = getEventPoint(ev)\n const rect = ref.current.getBoundingClientRect()\n\n onEnd(ev, point, rect)\n }),\n )\n }),\n }\n },\n [cleanup, getWindow, onEnd, onMove, onStart, shouldMove],\n )\n\n return [ref, getProps] as const\n}\n\nexport type UsePanEventReturn = ReturnType<typeof usePanEvent>\n"],"mappings":";;;;;;;AA+BA,MAAa,eAAsC,EACjD,YAAY,GACZ,GAAG,SACc,CAAC,MAGf;CACH,MAAM,EAAE,cAAc,eAAe;CACrC,MAAM,UAAU,eAAe,KAAK,OAAO;CAC3C,MAAM,SAAS,eAAe,KAAK,MAAM;CACzC,MAAM,QAAQ,eAAe,KAAK,KAAK;CACvC,MAAM,cAAc,OAAqB,IAAI;CAC7C,MAAM,cAAc,OAAuB,CAAC,CAAC;CAC7C,MAAM,MAAM,OAAU,IAAI;CAE1B,MAAM,UAAU,kBAAkB;EAChC,YAAY,QAAQ,SAAS,gBAAgB,YAAY,CAAC;EAE1D,YAAY,UAAU;EACtB,YAAY,UAAU,CAAC;CACzB,GAAG,CAAC,CAAC;CAEL,MAAM,aAAa,aAChB,UAAiB;EAChB,IAAI,cAAc,GAAG,OAAO;EAC5B,IAAI,CAAC,YAAY,SAAS,OAAO;EAOjC,OALiB,KAAK,KACpB,KAAK,IAAI,MAAM,IAAI,YAAY,QAAQ,GAAG,CAAC,IACzC,KAAK,IAAI,MAAM,IAAI,YAAY,QAAQ,GAAG,CAAC,CAGjC,KAAK;CACrB,GACA,CAAC,SAAS,CACZ;CAEA,uBAAuB;EACrB,QAAQ;CACV,CAAC;CAqED,OAAO,CAAC,KAnES,aACd,QAAkB,CAAC,MAAM;EACxB,OAAO;GACL,GAAG;GACH,KAAK,UAAU,KAAK,MAAM,GAAG;GAC7B,gBAAA,GAAeA,cAAAA,WAAAA,CAAW,MAAM,gBAAgB,OAAO;IACrD,MAAM,MAAM,GAAG,YAAY,QAAQ,UAAU;IAE7C,IAAI,CAAC,KAAK;IACV,KAAA,GAAIC,cAAAA,kBAAAA,CAAkB,GAAG,WAAW,GAAG;IACvC,IAAI,CAAC,IAAI,SAAS;IAElB,GAAG,eAAe;IAElB,MAAM,SAAA,GAAQC,cAAAA,cAAAA,CAAc,GAAG,WAAW;IAC1C,MAAM,OAAO,IAAI,QAAQ,sBAAsB;IAE/C,QAAQ,GAAG,aAAa,OAAO,IAAI;IAEnC,YAAY,UAAU;IAEtB,YAAY,QAAQ,MAAA,GAClBC,cAAAA,YAAAA,CAAY,KAAK,gBAAgB,OAAO;KACtC,IAAI,CAAC,IAAI,SAAS;KAElB,MAAM,SAAA,GAAQD,cAAAA,cAAAA,CAAc,EAAE;KAC9B,MAAM,OAAO,IAAI,QAAQ,sBAAsB;KAE/C,IAAI,CAAC,WAAW,KAAK,GAAG;KAExB,YAAY,UAAU;KAEtB,OAAO,IAAI,OAAO,IAAI;IACxB,CAAC,CACH;IAEA,YAAY,QAAQ,MAAA,GAClBC,cAAAA,YAAAA,CAAY,KAAK,cAAc,OAAO;KACpC,IAAI,CAAC,IAAI,SAAS;KAElB,QAAQ;KAER,MAAM,SAAA,GAAQD,cAAAA,cAAAA,CAAc,EAAE;KAC9B,MAAM,OAAO,IAAI,QAAQ,sBAAsB;KAE/C,MAAM,IAAI,OAAO,IAAI;IACvB,CAAC,CACH;IAEA,YAAY,QAAQ,MAAA,GAClBC,cAAAA,YAAAA,CAAY,KAAK,kBAAkB,OAAO;KACxC,IAAI,CAAC,IAAI,SAAS;KAElB,QAAQ;KAER,MAAM,SAAA,GAAQD,cAAAA,cAAAA,CAAc,EAAE;KAC9B,MAAM,OAAO,IAAI,QAAQ,sBAAsB;KAE/C,MAAM,IAAI,OAAO,IAAI;IACvB,CAAC,CACH;GACF,CAAC;EACH;CACF,GACA;EAAC;EAAS;EAAW;EAAO;EAAQ;EAAS;CAAU,CAGrC,CAAC;AACvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/hooks/use-resize-observer/index.ts"],"sourcesContent":["\"use client\"\n\nimport { useEffect, useMemo, useRef, useState } from \"react\"\nimport { createdDom } from \"../../utils\"\n\nexport interface ObserverRect extends Omit<DOMRectReadOnly, \"toJSON\"> {}\n\nconst defaultRect: ObserverRect = {\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0,\n x: 0,\n y: 0,\n}\n\n/**\n * `useResizeObserver` is a custom hook that tracks changes in the size and position of an element.\n *\n * @see https://yamada-ui.com/docs/hooks/use-resize-observer\n */\nexport const useResizeObserver = <Y extends HTMLElement = any>() => {\n const id = useRef(0)\n const ref = useRef<Y>(null)\n const [rect, setRect] = useState<ObserverRect>(defaultRect)\n\n const observer = useMemo(() => {\n if (!createdDom()) return null\n\n return new ResizeObserver(([entry]) => {\n if (!entry) return\n\n cancelAnimationFrame(id.current)\n\n id.current = requestAnimationFrame(() => {\n if (ref.current) setRect(entry.contentRect)\n })\n })\n }, [])\n\n useEffect(() => {\n if (ref.current) observer?.observe(ref.current)\n\n return () => {\n observer?.disconnect()\n\n if (id.current) cancelAnimationFrame(id.current)\n }\n }, [observer])\n\n return [ref, rect] as const\n}\n\nexport const useElementSize = <Y extends HTMLElement = any>() => {\n const [ref, { height, width }] = useResizeObserver<Y>()\n\n return { ref, height, width }\n}\n"],"mappings":";;;;AAOA,MAAM,cAA4B;CAChC,QAAQ;CACR,QAAQ;CACR,MAAM;CACN,OAAO;CACP,KAAK;CACL,OAAO;CACP,GAAG;CACH,GAAG;AACL;;;;;;AAOA,MAAa,0BAAuD;CAClE,MAAM,KAAK,OAAO,CAAC;CACnB,MAAM,MAAM,OAAU,IAAI;CAC1B,MAAM,CAAC,MAAM,WAAW,SAAuB,WAAW;CAE1D,MAAM,WAAW,cAAc;EAC7B,IAAI,EAAA,
|
|
1
|
+
{"version":3,"file":"index.js","names":["createdDom"],"sources":["../../../../src/hooks/use-resize-observer/index.ts"],"sourcesContent":["\"use client\"\n\nimport { useEffect, useMemo, useRef, useState } from \"react\"\nimport { createdDom } from \"../../utils\"\n\nexport interface ObserverRect extends Omit<DOMRectReadOnly, \"toJSON\"> {}\n\nconst defaultRect: ObserverRect = {\n bottom: 0,\n height: 0,\n left: 0,\n right: 0,\n top: 0,\n width: 0,\n x: 0,\n y: 0,\n}\n\n/**\n * `useResizeObserver` is a custom hook that tracks changes in the size and position of an element.\n *\n * @see https://yamada-ui.com/docs/hooks/use-resize-observer\n */\nexport const useResizeObserver = <Y extends HTMLElement = any>() => {\n const id = useRef(0)\n const ref = useRef<Y>(null)\n const [rect, setRect] = useState<ObserverRect>(defaultRect)\n\n const observer = useMemo(() => {\n if (!createdDom()) return null\n\n return new ResizeObserver(([entry]) => {\n if (!entry) return\n\n cancelAnimationFrame(id.current)\n\n id.current = requestAnimationFrame(() => {\n if (ref.current) setRect(entry.contentRect)\n })\n })\n }, [])\n\n useEffect(() => {\n if (ref.current) observer?.observe(ref.current)\n\n return () => {\n observer?.disconnect()\n\n if (id.current) cancelAnimationFrame(id.current)\n }\n }, [observer])\n\n return [ref, rect] as const\n}\n\nexport const useElementSize = <Y extends HTMLElement = any>() => {\n const [ref, { height, width }] = useResizeObserver<Y>()\n\n return { ref, height, width }\n}\n"],"mappings":";;;;AAOA,MAAM,cAA4B;CAChC,QAAQ;CACR,QAAQ;CACR,MAAM;CACN,OAAO;CACP,KAAK;CACL,OAAO;CACP,GAAG;CACH,GAAG;AACL;;;;;;AAOA,MAAa,0BAAuD;CAClE,MAAM,KAAK,OAAO,CAAC;CACnB,MAAM,MAAM,OAAU,IAAI;CAC1B,MAAM,CAAC,MAAM,WAAW,SAAuB,WAAW;CAE1D,MAAM,WAAW,cAAc;EAC7B,IAAI,EAAA,GAACA,cAAAA,WAAAA,CAAW,GAAG,OAAO;EAE1B,OAAO,IAAI,gBAAgB,CAAC,WAAW;GACrC,IAAI,CAAC,OAAO;GAEZ,qBAAqB,GAAG,OAAO;GAE/B,GAAG,UAAU,4BAA4B;IACvC,IAAI,IAAI,SAAS,QAAQ,MAAM,WAAW;GAC5C,CAAC;EACH,CAAC;CACH,GAAG,CAAC,CAAC;CAEL,gBAAgB;EACd,IAAI,IAAI,SAAS,UAAU,QAAQ,IAAI,OAAO;EAE9C,aAAa;GACX,UAAU,WAAW;GAErB,IAAI,GAAG,SAAS,qBAAqB,GAAG,OAAO;EACjD;CACF,GAAG,CAAC,QAAQ,CAAC;CAEb,OAAO,CAAC,KAAK,IAAI;AACnB;AAEA,MAAa,uBAAoD;CAC/D,MAAM,CAAC,KAAK,EAAE,QAAQ,WAAW,kBAAqB;CAEtD,OAAO;EAAE;EAAK;EAAQ;CAAM;AAC9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../../../src/hooks/use-value/index.ts"],"sourcesContent":["\"use client\"\n\nimport type {\n Breakpoint,\n ColorMode,\n ColorModeArray,\n ResponsiveObject,\n System,\n} from \"../../core\"\nimport { useMemo } from \"react\"\nimport { getColorModeValue, useColorMode, useSystem } from \"../../core\"\nimport { isArray, isObject } from \"../../utils\"\nimport { getBreakpointValue, useBreakpoint } from \"../use-breakpoint\"\n\n/**\n * `useValue` is a custom hook that combines `useBreakpointValue` and `useColorModeValue`.\n *\n * @see https://yamada-ui.com/docs/hooks/use-value\n */\nexport const useValue = <Y>(\n value: ColorModeArray<Y, false> | ResponsiveObject<Y, false> | Y,\n): Y => {\n const system = useSystem()\n const breakpoint = useBreakpoint()\n const { colorMode } = useColorMode()\n\n return useMemo(() => {\n return getValue(value)(system, colorMode, breakpoint)\n }, [value, system, colorMode, breakpoint])\n}\n\nexport const getValue =\n <Y>(value: ColorModeArray<Y, false> | ResponsiveObject<Y, false> | Y) =>\n (system: System, colorMode: ColorMode, breakpoint: Breakpoint): Y => {\n if (isObject<ResponsiveObject<Y, false>>(value)) {\n return getBreakpointValue(value)(system, breakpoint)\n } else if (isArray<ColorModeArray<Y, false>>(value)) {\n const [light, dark] = value\n\n return getColorModeValue(light, dark)(colorMode)\n } else {\n return value\n }\n }\n"],"mappings":";;;;;;;;;;;;;;AAmBA,MAAa,YACX,UACM;CACN,MAAM,SAAS,UAAU;CACzB,MAAM,aAAa,cAAc;CACjC,MAAM,EAAE,cAAc,aAAa;CAEnC,OAAO,cAAc;EACnB,OAAO,SAAS,KAAK,CAAC,CAAC,QAAQ,WAAW,UAAU;CACtD,GAAG;EAAC;EAAO;EAAQ;EAAW;CAAU,CAAC;AAC3C;AAEA,MAAa,YACP,WACH,QAAgB,WAAsB,eAA8B;CACnE,KAAA,
|
|
1
|
+
{"version":3,"file":"index.js","names":["isObject","isArray"],"sources":["../../../../src/hooks/use-value/index.ts"],"sourcesContent":["\"use client\"\n\nimport type {\n Breakpoint,\n ColorMode,\n ColorModeArray,\n ResponsiveObject,\n System,\n} from \"../../core\"\nimport { useMemo } from \"react\"\nimport { getColorModeValue, useColorMode, useSystem } from \"../../core\"\nimport { isArray, isObject } from \"../../utils\"\nimport { getBreakpointValue, useBreakpoint } from \"../use-breakpoint\"\n\n/**\n * `useValue` is a custom hook that combines `useBreakpointValue` and `useColorModeValue`.\n *\n * @see https://yamada-ui.com/docs/hooks/use-value\n */\nexport const useValue = <Y>(\n value: ColorModeArray<Y, false> | ResponsiveObject<Y, false> | Y,\n): Y => {\n const system = useSystem()\n const breakpoint = useBreakpoint()\n const { colorMode } = useColorMode()\n\n return useMemo(() => {\n return getValue(value)(system, colorMode, breakpoint)\n }, [value, system, colorMode, breakpoint])\n}\n\nexport const getValue =\n <Y>(value: ColorModeArray<Y, false> | ResponsiveObject<Y, false> | Y) =>\n (system: System, colorMode: ColorMode, breakpoint: Breakpoint): Y => {\n if (isObject<ResponsiveObject<Y, false>>(value)) {\n return getBreakpointValue(value)(system, breakpoint)\n } else if (isArray<ColorModeArray<Y, false>>(value)) {\n const [light, dark] = value\n\n return getColorModeValue(light, dark)(colorMode)\n } else {\n return value\n }\n }\n"],"mappings":";;;;;;;;;;;;;;AAmBA,MAAa,YACX,UACM;CACN,MAAM,SAAS,UAAU;CACzB,MAAM,aAAa,cAAc;CACjC,MAAM,EAAE,cAAc,aAAa;CAEnC,OAAO,cAAc;EACnB,OAAO,SAAS,KAAK,CAAC,CAAC,QAAQ,WAAW,UAAU;CACtD,GAAG;EAAC;EAAO;EAAQ;EAAW;CAAU,CAAC;AAC3C;AAEA,MAAa,YACP,WACH,QAAgB,WAAsB,eAA8B;CACnE,KAAA,GAAIA,cAAAA,SAAAA,CAAqC,KAAK,GAC5C,OAAO,mBAAmB,KAAK,CAAC,CAAC,QAAQ,UAAU;MAC9C,KAAA,GAAIC,cAAAA,QAAAA,CAAkC,KAAK,GAAG;EACnD,MAAM,CAAC,OAAO,QAAQ;EAEtB,OAAO,kBAAkB,OAAO,IAAI,CAAC,CAAC,SAAS;CACjD,OACE,OAAO;AAEX"}
|