@bioturing/components 0.31.0 → 0.32.1
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/components/badge/component.d.ts +7 -0
- package/dist/components/badge/component.d.ts.map +1 -0
- package/dist/components/badge/component.js.map +1 -1
- package/dist/components/badge/index.d.ts +2 -0
- package/dist/components/badge/index.d.ts.map +1 -0
- package/dist/components/breadcrumb/component.d.ts +6 -0
- package/dist/components/breadcrumb/component.d.ts.map +1 -0
- package/dist/components/breadcrumb/component.js.map +1 -1
- package/dist/components/breadcrumb/index.d.ts +3 -0
- package/dist/components/breadcrumb/index.d.ts.map +1 -0
- package/dist/components/breadcrumb/types.d.ts +19 -0
- package/dist/components/breadcrumb/types.d.ts.map +1 -0
- package/dist/components/breadcrumb/useItemRender.d.ts +7 -0
- package/dist/components/breadcrumb/useItemRender.d.ts.map +1 -0
- package/dist/components/breadcrumb/useItemRender.js.map +1 -1
- package/dist/components/button/component.d.ts +14 -0
- package/dist/components/button/component.d.ts.map +1 -0
- package/dist/components/button/component.js.map +1 -1
- package/dist/components/button/index.d.ts +2 -0
- package/dist/components/button/index.d.ts.map +1 -0
- package/dist/components/checkbox/component.d.ts +16 -0
- package/dist/components/checkbox/component.d.ts.map +1 -0
- package/dist/components/checkbox/component.js.map +1 -1
- package/dist/components/checkbox/index.d.ts +2 -0
- package/dist/components/checkbox/index.d.ts.map +1 -0
- package/dist/components/choice-list/component.d.ts +35 -0
- package/dist/components/choice-list/component.d.ts.map +1 -0
- package/dist/components/choice-list/component.js.map +1 -1
- package/dist/components/choice-list/index.d.ts +2 -0
- package/dist/components/choice-list/index.d.ts.map +1 -0
- package/dist/components/cmdk/command-score.d.ts +2 -0
- package/dist/components/cmdk/command-score.d.ts.map +1 -0
- package/dist/components/cmdk/command-score.js.map +1 -1
- package/dist/components/cmdk/index.d.ts +440 -0
- package/dist/components/cmdk/index.d.ts.map +1 -0
- package/dist/components/cmdk/index.js +332 -348
- package/dist/components/cmdk/index.js.map +1 -1
- package/dist/components/code-block/component.d.ts +3 -0
- package/dist/components/code-block/component.d.ts.map +1 -0
- package/dist/components/code-block/component.js +83 -84
- package/dist/components/code-block/component.js.map +1 -1
- package/dist/components/code-block/index.d.ts +3 -0
- package/dist/components/code-block/index.d.ts.map +1 -0
- package/dist/components/code-block/types.d.ts +64 -0
- package/dist/components/code-block/types.d.ts.map +1 -0
- package/dist/components/collapse/component.d.ts +14 -0
- package/dist/components/collapse/component.d.ts.map +1 -0
- package/dist/components/collapse/component.js.map +1 -1
- package/dist/components/collapse/index.d.ts +2 -0
- package/dist/components/collapse/index.d.ts.map +1 -0
- package/dist/components/color-select/component.d.ts +36 -0
- package/dist/components/color-select/component.d.ts.map +1 -0
- package/dist/components/color-select/component.js +28 -30
- package/dist/components/color-select/component.js.map +1 -1
- package/dist/components/color-select/index.d.ts +2 -0
- package/dist/components/color-select/index.d.ts.map +1 -0
- package/dist/components/combobox/component.d.ts +119 -0
- package/dist/components/combobox/component.d.ts.map +1 -0
- package/dist/components/combobox/component.js +166 -162
- package/dist/components/combobox/component.js.map +1 -1
- package/dist/components/combobox/index.d.ts +3 -0
- package/dist/components/combobox/index.d.ts.map +1 -0
- package/dist/components/command-palette/component.d.ts +41 -0
- package/dist/components/command-palette/component.d.ts.map +1 -0
- package/dist/components/command-palette/component.js +36 -36
- package/dist/components/command-palette/component.js.map +1 -1
- package/dist/components/command-palette/index.d.ts +2 -0
- package/dist/components/command-palette/index.d.ts.map +1 -0
- package/dist/components/command-palette/style.css +1 -1
- package/dist/components/drag-drop/context.d.ts +10 -0
- package/dist/components/drag-drop/context.d.ts.map +1 -0
- package/dist/components/drag-drop/context.js.map +1 -1
- package/dist/components/drag-drop/draggable.d.ts +6 -0
- package/dist/components/drag-drop/draggable.d.ts.map +1 -0
- package/dist/components/drag-drop/draggable.js.map +1 -1
- package/dist/components/drag-drop/droppable.d.ts +9 -0
- package/dist/components/drag-drop/droppable.d.ts.map +1 -0
- package/dist/components/drag-drop/droppable.js.map +1 -1
- package/dist/components/drag-drop/hooks.d.ts +42 -0
- package/dist/components/drag-drop/hooks.d.ts.map +1 -0
- package/dist/components/drag-drop/hooks.js +71 -73
- package/dist/components/drag-drop/hooks.js.map +1 -1
- package/dist/components/drag-drop/index.d.ts +26 -0
- package/dist/components/drag-drop/index.d.ts.map +1 -0
- package/dist/components/drag-drop/index.js.map +1 -1
- package/dist/components/drag-drop/types.d.ts +232 -0
- package/dist/components/drag-drop/types.d.ts.map +1 -0
- package/dist/components/drag-drop/value.d.ts +8 -0
- package/dist/components/drag-drop/value.d.ts.map +1 -0
- package/dist/components/drag-drop/value.js +66 -66
- package/dist/components/drag-drop/value.js.map +1 -1
- package/dist/components/dropdown-menu/component.d.ts +79 -0
- package/dist/components/dropdown-menu/component.d.ts.map +1 -0
- package/dist/components/dropdown-menu/component.js +108 -106
- package/dist/components/dropdown-menu/component.js.map +1 -1
- package/dist/components/dropdown-menu/divider.d.ts +6 -0
- package/dist/components/dropdown-menu/divider.d.ts.map +1 -0
- package/dist/components/dropdown-menu/divider.js.map +1 -1
- package/dist/components/dropdown-menu/index.d.ts +4 -0
- package/dist/components/dropdown-menu/index.d.ts.map +1 -0
- package/dist/components/dropdown-menu/item.d.ts +56 -0
- package/dist/components/dropdown-menu/item.d.ts.map +1 -0
- package/dist/components/dropdown-menu/item.js +72 -66
- package/dist/components/dropdown-menu/item.js.map +1 -1
- package/dist/components/dropdown-menu/types.d.ts +88 -0
- package/dist/components/dropdown-menu/types.d.ts.map +1 -0
- package/dist/components/dropdown-menu/useDropdownMenu.d.ts +58 -0
- package/dist/components/dropdown-menu/useDropdownMenu.d.ts.map +1 -0
- package/dist/components/dropdown-menu/useDropdownMenu.js +80 -77
- package/dist/components/dropdown-menu/useDropdownMenu.js.map +1 -1
- package/dist/components/ds-root/component.d.ts +14 -0
- package/dist/components/ds-root/component.d.ts.map +1 -0
- package/dist/components/ds-root/component.js.map +1 -1
- package/dist/components/ds-root/context.d.ts +8 -0
- package/dist/components/ds-root/context.d.ts.map +1 -0
- package/dist/components/ds-root/index.d.ts +3 -0
- package/dist/components/ds-root/index.d.ts.map +1 -0
- package/dist/components/empty/component.d.ts +13 -0
- package/dist/components/empty/component.d.ts.map +1 -0
- package/dist/components/empty/component.js.map +1 -1
- package/dist/components/empty/index.d.ts +2 -0
- package/dist/components/empty/index.d.ts.map +1 -0
- package/dist/components/field/component.d.ts +42 -0
- package/dist/components/field/component.d.ts.map +1 -0
- package/dist/components/field/component.js.map +1 -1
- package/dist/components/field/index.d.ts +2 -0
- package/dist/components/field/index.d.ts.map +1 -0
- package/dist/components/form/component.d.ts +22 -0
- package/dist/components/form/component.d.ts.map +1 -0
- package/dist/components/form/component.js.map +1 -1
- package/dist/components/form/index.d.ts +2 -0
- package/dist/components/form/index.d.ts.map +1 -0
- package/dist/components/form/item.d.ts +24 -0
- package/dist/components/form/item.d.ts.map +1 -0
- package/dist/components/form/item.js +24 -24
- package/dist/components/form/item.js.map +1 -1
- package/dist/components/form/label.d.ts +32 -0
- package/dist/components/form/label.d.ts.map +1 -0
- package/dist/components/form/label.js.map +1 -1
- package/dist/components/hooks/antd.d.ts +11 -0
- package/dist/components/hooks/antd.d.ts.map +1 -0
- package/dist/components/hooks/antd.js.map +1 -1
- package/dist/components/hooks/base-ui.d.ts +11 -0
- package/dist/components/hooks/base-ui.d.ts.map +1 -0
- package/dist/components/hooks/base-ui.js +22 -25
- package/dist/components/hooks/base-ui.js.map +1 -1
- package/dist/components/hooks/index.d.ts +11 -0
- package/dist/components/hooks/index.d.ts.map +1 -0
- package/dist/components/hooks/useBreakpoint.d.ts +39 -0
- package/dist/components/hooks/useBreakpoint.d.ts.map +1 -0
- package/dist/components/hooks/useBreakpoint.js +14 -15
- package/dist/components/hooks/useBreakpoint.js.map +1 -1
- package/dist/components/hooks/useCSSVariables.d.ts +7 -0
- package/dist/components/hooks/useCSSVariables.d.ts.map +1 -0
- package/dist/components/hooks/useCSSVariables.js.map +1 -1
- package/dist/components/hooks/useCharts.d.ts +41 -0
- package/dist/components/hooks/useCharts.d.ts.map +1 -0
- package/dist/components/hooks/useCharts.js.map +1 -1
- package/dist/components/hooks/useControlledState.d.ts +13 -0
- package/dist/components/hooks/useControlledState.d.ts.map +1 -0
- package/dist/components/hooks/useControlledState.js.map +1 -1
- package/dist/components/hooks/useDraggable.d.ts +4 -0
- package/dist/components/hooks/useDraggable.d.ts.map +1 -0
- package/dist/components/hooks/useDraggable.js +19 -20
- package/dist/components/hooks/useDraggable.js.map +1 -1
- package/dist/components/hooks/useHover.d.ts +5 -0
- package/dist/components/hooks/useHover.d.ts.map +1 -0
- package/dist/components/hooks/useHover.js +16 -17
- package/dist/components/hooks/useHover.js.map +1 -1
- package/dist/components/hooks/useResizeObserver.d.ts +9 -0
- package/dist/components/hooks/useResizeObserver.d.ts.map +1 -0
- package/dist/components/hooks/useResizeObserver.js +29 -30
- package/dist/components/hooks/useResizeObserver.js.map +1 -1
- package/dist/components/hooks/useTransitionStatus.d.ts +13 -0
- package/dist/components/hooks/useTransitionStatus.d.ts.map +1 -0
- package/dist/components/hooks/useTransitionStatus.js.map +1 -1
- package/dist/components/hooks/useWindowSize.d.ts +5 -0
- package/dist/components/hooks/useWindowSize.d.ts.map +1 -0
- package/dist/components/hooks/useWindowSize.js.map +1 -1
- package/dist/components/icon-button/component.d.ts +45 -0
- package/dist/components/icon-button/component.d.ts.map +1 -0
- package/dist/components/icon-button/component.js.map +1 -1
- package/dist/components/icon-button/index.d.ts +2 -0
- package/dist/components/icon-button/index.d.ts.map +1 -0
- package/dist/components/index.d.ts +53 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/input/component.d.ts +29 -0
- package/dist/components/input/component.d.ts.map +1 -0
- package/dist/components/input/component.js +42 -41
- package/dist/components/input/component.js.map +1 -1
- package/dist/components/input/index.d.ts +2 -0
- package/dist/components/input/index.d.ts.map +1 -0
- package/dist/components/keyboard-shortcut/component.d.ts +15 -0
- package/dist/components/keyboard-shortcut/component.d.ts.map +1 -0
- package/dist/components/keyboard-shortcut/component.js.map +1 -1
- package/dist/components/keyboard-shortcut/index.d.ts +2 -0
- package/dist/components/keyboard-shortcut/index.d.ts.map +1 -0
- package/dist/components/loader/component.d.ts +5 -0
- package/dist/components/loader/component.d.ts.map +1 -0
- package/dist/components/loader/component.js.map +1 -1
- package/dist/components/loader/index.d.ts +2 -0
- package/dist/components/loader/index.d.ts.map +1 -0
- package/dist/components/modal/Modal.d.ts +85 -0
- package/dist/components/modal/Modal.d.ts.map +1 -0
- package/dist/components/modal/Modal.js +75 -75
- package/dist/components/modal/Modal.js.map +1 -1
- package/dist/components/modal/ModalProvider.d.ts +6 -0
- package/dist/components/modal/ModalProvider.d.ts.map +1 -0
- package/dist/components/modal/ModalProvider.js +25 -25
- package/dist/components/modal/ModalProvider.js.map +1 -1
- package/dist/components/modal/ModalService.d.ts +34 -0
- package/dist/components/modal/ModalService.d.ts.map +1 -0
- package/dist/components/modal/ModalService.js +5 -10
- package/dist/components/modal/ModalService.js.map +1 -1
- package/dist/components/modal/constants.d.ts +10 -0
- package/dist/components/modal/constants.d.ts.map +1 -0
- package/dist/components/modal/constants.js.map +1 -1
- package/dist/components/modal/functions.d.ts +28 -0
- package/dist/components/modal/functions.d.ts.map +1 -0
- package/dist/components/modal/functions.js.map +1 -1
- package/dist/components/modal/index.d.ts +16 -0
- package/dist/components/modal/index.d.ts.map +1 -0
- package/dist/components/modal/index.js.map +1 -1
- package/dist/components/nav/context.d.ts +10 -0
- package/dist/components/nav/context.d.ts.map +1 -0
- package/dist/components/nav/context.js.map +1 -1
- package/dist/components/nav/group.d.ts +15 -0
- package/dist/components/nav/group.d.ts.map +1 -0
- package/dist/components/nav/group.js.map +1 -1
- package/dist/components/nav/heading.d.ts +6 -0
- package/dist/components/nav/heading.d.ts.map +1 -0
- package/dist/components/nav/heading.js.map +1 -1
- package/dist/components/nav/index.d.ts +12 -0
- package/dist/components/nav/index.d.ts.map +1 -0
- package/dist/components/nav/item.d.ts +35 -0
- package/dist/components/nav/item.d.ts.map +1 -0
- package/dist/components/nav/item.js.map +1 -1
- package/dist/components/popover/component.d.ts +10 -0
- package/dist/components/popover/component.d.ts.map +1 -0
- package/dist/components/popover/component.js.map +1 -1
- package/dist/components/popover/index.d.ts +2 -0
- package/dist/components/popover/index.d.ts.map +1 -0
- package/dist/components/popup-panel/component.d.ts +100 -0
- package/dist/components/popup-panel/component.d.ts.map +1 -0
- package/dist/components/popup-panel/component.js +105 -105
- package/dist/components/popup-panel/component.js.map +1 -1
- package/dist/components/popup-panel/constants.d.ts +8 -0
- package/dist/components/popup-panel/constants.d.ts.map +1 -0
- package/dist/components/popup-panel/constants.js.map +1 -1
- package/dist/components/popup-panel/index.d.ts +2 -0
- package/dist/components/popup-panel/index.d.ts.map +1 -0
- package/dist/components/radio/component.d.ts +8 -0
- package/dist/components/radio/component.d.ts.map +1 -0
- package/dist/components/radio/component.js.map +1 -1
- package/dist/components/radio/index.d.ts +3 -0
- package/dist/components/radio/index.d.ts.map +1 -0
- package/dist/components/radio/interface.d.ts +6 -0
- package/dist/components/radio/interface.d.ts.map +1 -0
- package/dist/components/resizable/component.d.ts +70 -0
- package/dist/components/resizable/component.d.ts.map +1 -0
- package/dist/components/resizable/component.js +147 -147
- package/dist/components/resizable/component.js.map +1 -1
- package/dist/components/resizable/index.d.ts +3 -0
- package/dist/components/resizable/index.d.ts.map +1 -0
- package/dist/components/scroll-area/component.d.ts +67 -0
- package/dist/components/scroll-area/component.d.ts.map +1 -0
- package/dist/components/scroll-area/component.js +75 -56
- package/dist/components/scroll-area/component.js.map +1 -1
- package/dist/components/scroll-area/index.d.ts +2 -0
- package/dist/components/scroll-area/index.d.ts.map +1 -0
- package/dist/components/segmented/component.d.ts +10 -0
- package/dist/components/segmented/component.d.ts.map +1 -0
- package/dist/components/segmented/component.js.map +1 -1
- package/dist/components/segmented/index.d.ts +2 -0
- package/dist/components/segmented/index.d.ts.map +1 -0
- package/dist/components/select/component.d.ts +48 -0
- package/dist/components/select/component.d.ts.map +1 -0
- package/dist/components/select/component.js +93 -94
- package/dist/components/select/component.js.map +1 -1
- package/dist/components/select/index.d.ts +2 -0
- package/dist/components/select/index.d.ts.map +1 -0
- package/dist/components/select/item.d.ts +14 -0
- package/dist/components/select/item.d.ts.map +1 -0
- package/dist/components/select/item.js.map +1 -1
- package/dist/components/select-trigger/component.d.ts +45 -0
- package/dist/components/select-trigger/component.d.ts.map +1 -0
- package/dist/components/select-trigger/component.js +96 -96
- package/dist/components/select-trigger/component.js.map +1 -1
- package/dist/components/select-trigger/index.d.ts +3 -0
- package/dist/components/select-trigger/index.d.ts.map +1 -0
- package/dist/components/slider/component.d.ts +6 -0
- package/dist/components/slider/component.d.ts.map +1 -0
- package/dist/components/slider/component.js.map +1 -1
- package/dist/components/slider/index.d.ts +2 -0
- package/dist/components/slider/index.d.ts.map +1 -0
- package/dist/components/spin/component.d.ts +6 -0
- package/dist/components/spin/component.d.ts.map +1 -0
- package/dist/components/spin/component.js.map +1 -1
- package/dist/components/spin/index.d.ts +2 -0
- package/dist/components/spin/index.d.ts.map +1 -0
- package/dist/components/splitter/component.d.ts +10 -0
- package/dist/components/splitter/component.d.ts.map +1 -0
- package/dist/components/splitter/component.js +7 -7
- package/dist/components/splitter/component.js.map +1 -1
- package/dist/components/splitter/context.d.ts +5 -0
- package/dist/components/splitter/context.d.ts.map +1 -0
- package/dist/components/splitter/context.js.map +1 -1
- package/dist/components/splitter/index.d.ts +2 -0
- package/dist/components/splitter/index.d.ts.map +1 -0
- package/dist/components/splitter/splitter-panel.d.ts +12 -0
- package/dist/components/splitter/splitter-panel.d.ts.map +1 -0
- package/dist/components/splitter/splitter-panel.js.map +1 -1
- package/dist/components/splitter/splitter.d.ts +11 -0
- package/dist/components/splitter/splitter.d.ts.map +1 -0
- package/dist/components/splitter/splitter.js +112 -112
- package/dist/components/splitter/splitter.js.map +1 -1
- package/dist/components/splitter/useSizes.d.ts +9 -0
- package/dist/components/splitter/useSizes.d.ts.map +1 -0
- package/dist/components/splitter/useSizes.js +35 -35
- package/dist/components/splitter/useSizes.js.map +1 -1
- package/dist/components/stack/Stack.d.ts +40 -0
- package/dist/components/stack/Stack.d.ts.map +1 -0
- package/dist/components/stack/Stack.js.map +1 -1
- package/dist/components/stack/StackChild.d.ts +31 -0
- package/dist/components/stack/StackChild.d.ts.map +1 -0
- package/dist/components/stack/StackChild.js.map +1 -1
- package/dist/components/stack/index.d.ts +8 -0
- package/dist/components/stack/index.d.ts.map +1 -0
- package/dist/components/stack/index.js.map +1 -1
- package/dist/components/status-icon/component.d.ts +23 -0
- package/dist/components/status-icon/component.d.ts.map +1 -0
- package/dist/components/status-icon/component.js.map +1 -1
- package/dist/components/status-icon/index.d.ts +2 -0
- package/dist/components/status-icon/index.d.ts.map +1 -0
- package/dist/components/switch/component.d.ts +9 -0
- package/dist/components/switch/component.d.ts.map +1 -0
- package/dist/components/switch/component.js.map +1 -1
- package/dist/components/switch/index.d.ts +2 -0
- package/dist/components/switch/index.d.ts.map +1 -0
- package/dist/components/table/component.d.ts +32 -0
- package/dist/components/table/component.d.ts.map +1 -0
- package/dist/components/table/component.js +57 -58
- package/dist/components/table/component.js.map +1 -1
- package/dist/components/table/index.d.ts +2 -0
- package/dist/components/table/index.d.ts.map +1 -0
- package/dist/components/tag/component.d.ts +22 -0
- package/dist/components/tag/component.d.ts.map +1 -0
- package/dist/components/tag/component.js.map +1 -1
- package/dist/components/tag/index.d.ts +2 -0
- package/dist/components/tag/index.d.ts.map +1 -0
- package/dist/components/theme-provider/component.d.ts +7 -0
- package/dist/components/theme-provider/component.d.ts.map +1 -0
- package/dist/components/theme-provider/component.js.map +1 -1
- package/dist/components/theme-provider/index.d.ts +2 -0
- package/dist/components/theme-provider/index.d.ts.map +1 -0
- package/dist/components/toast/component.d.ts +15 -0
- package/dist/components/toast/component.d.ts.map +1 -0
- package/dist/components/toast/component.js +49 -50
- package/dist/components/toast/component.js.map +1 -1
- package/dist/components/toast/function.d.ts +11 -0
- package/dist/components/toast/function.d.ts.map +1 -0
- package/dist/components/toast/function.js.map +1 -1
- package/dist/components/toast/index.d.ts +4 -0
- package/dist/components/toast/index.d.ts.map +1 -0
- package/dist/components/toast/types.d.ts +4 -0
- package/dist/components/toast/types.d.ts.map +1 -0
- package/dist/components/tooltip/component.d.ts +10 -0
- package/dist/components/tooltip/component.d.ts.map +1 -0
- package/dist/components/tooltip/component.js.map +1 -1
- package/dist/components/tooltip/index.d.ts +2 -0
- package/dist/components/tooltip/index.d.ts.map +1 -0
- package/dist/components/tour/component.d.ts +8 -0
- package/dist/components/tour/component.d.ts.map +1 -0
- package/dist/components/tour/component.js.map +1 -1
- package/dist/components/tour/index.d.ts +2 -0
- package/dist/components/tour/index.d.ts.map +1 -0
- package/dist/components/transition/component.d.ts +30 -0
- package/dist/components/transition/component.d.ts.map +1 -0
- package/dist/components/transition/component.js +32 -32
- package/dist/components/transition/component.js.map +1 -1
- package/dist/components/transition/index.d.ts +2 -0
- package/dist/components/transition/index.d.ts.map +1 -0
- package/dist/components/tree/components.d.ts +14 -0
- package/dist/components/tree/components.d.ts.map +1 -0
- package/dist/components/tree/components.js.map +1 -1
- package/dist/components/tree/helpers.d.ts +6 -0
- package/dist/components/tree/helpers.d.ts.map +1 -0
- package/dist/components/tree/helpers.js.map +1 -1
- package/dist/components/tree/index.d.ts +5 -0
- package/dist/components/tree/index.d.ts.map +1 -0
- package/dist/components/tree/types.d.ts +56 -0
- package/dist/components/tree/types.d.ts.map +1 -0
- package/dist/components/tree/useTreeCommon.d.ts +179 -0
- package/dist/components/tree/useTreeCommon.d.ts.map +1 -0
- package/dist/components/tree/useTreeCommon.js +29 -29
- package/dist/components/tree/useTreeCommon.js.map +1 -1
- package/dist/components/tree/useUniqueKeysTree.d.ts +34 -0
- package/dist/components/tree/useUniqueKeysTree.d.ts.map +1 -0
- package/dist/components/tree/useUniqueKeysTree.js.map +1 -1
- package/dist/components/truncate/component.d.ts +17 -0
- package/dist/components/truncate/component.d.ts.map +1 -0
- package/dist/components/truncate/component.js +38 -39
- package/dist/components/truncate/component.js.map +1 -1
- package/dist/components/truncate/helpers.d.ts +17 -0
- package/dist/components/truncate/helpers.d.ts.map +1 -0
- package/dist/components/truncate/helpers.js +27 -30
- package/dist/components/truncate/helpers.js.map +1 -1
- package/dist/components/truncate/index.d.ts +2 -0
- package/dist/components/truncate/index.d.ts.map +1 -0
- package/dist/components/upload/component.d.ts +17 -0
- package/dist/components/upload/component.d.ts.map +1 -0
- package/dist/components/upload/component.js.map +1 -1
- package/dist/components/upload/dragger.d.ts +14 -0
- package/dist/components/upload/dragger.d.ts.map +1 -0
- package/dist/components/upload/dragger.js.map +1 -1
- package/dist/components/upload/hooks.d.ts +6 -0
- package/dist/components/upload/hooks.d.ts.map +1 -0
- package/dist/components/upload/hooks.js.map +1 -1
- package/dist/components/upload/index.d.ts +4 -0
- package/dist/components/upload/index.d.ts.map +1 -0
- package/dist/components/upload/item.d.ts +12 -0
- package/dist/components/upload/item.d.ts.map +1 -0
- package/dist/components/upload/item.js.map +1 -1
- package/dist/components/upload/utils.d.ts +2 -0
- package/dist/components/upload/utils.d.ts.map +1 -0
- package/dist/components/upload/utils.js.map +1 -1
- package/dist/components/utils/WithAntdTokens.d.ts +8 -0
- package/dist/components/utils/WithAntdTokens.d.ts.map +1 -0
- package/dist/components/utils/WithAntdTokens.js.map +1 -1
- package/dist/components/utils/WithRenderProp.d.ts +14 -0
- package/dist/components/utils/WithRenderProp.d.ts.map +1 -0
- package/dist/components/utils/WithRenderProp.js.map +1 -1
- package/dist/components/utils/antdUtils.d.ts +11 -0
- package/dist/components/utils/antdUtils.d.ts.map +1 -0
- package/dist/components/utils/antdUtils.js +9 -12
- package/dist/components/utils/antdUtils.js.map +1 -1
- package/dist/components/utils/client.d.ts +6 -0
- package/dist/components/utils/client.d.ts.map +1 -0
- package/dist/components/utils/cn.d.ts +5 -0
- package/dist/components/utils/cn.d.ts.map +1 -0
- package/dist/components/utils/cn.js.map +1 -1
- package/dist/components/utils/colors.d.ts +2 -0
- package/dist/components/utils/colors.d.ts.map +1 -0
- package/dist/components/utils/constants.d.ts +15 -0
- package/dist/components/utils/constants.d.ts.map +1 -0
- package/dist/components/utils/index.d.ts +6 -0
- package/dist/components/utils/index.d.ts.map +1 -0
- package/dist/components/utils/isTracebackError.d.ts +2 -0
- package/dist/components/utils/isTracebackError.d.ts.map +1 -0
- package/dist/components/utils/isTracebackError.js.map +1 -1
- package/dist/components/utils/main.d.ts +7 -0
- package/dist/components/utils/main.d.ts.map +1 -0
- package/dist/components/utils/placement.d.ts +21 -0
- package/dist/components/utils/placement.d.ts.map +1 -0
- package/dist/components/utils/placement.js.map +1 -1
- package/dist/components/utils/reactElement.d.ts +2 -0
- package/dist/components/utils/reactElement.d.ts.map +1 -0
- package/dist/components/utils/reactToString.d.ts +3 -0
- package/dist/components/utils/reactToString.d.ts.map +1 -0
- package/dist/components/utils/reactToString.js.map +1 -1
- package/dist/components/utils/selectionRange.d.ts +2 -0
- package/dist/components/utils/selectionRange.d.ts.map +1 -0
- package/dist/components/utils/selectionRange.js.map +1 -1
- package/dist/components/utils/theme.d.ts +6 -0
- package/dist/components/utils/theme.d.ts.map +1 -0
- package/dist/components/utils/theme.js.map +1 -1
- package/dist/components/utils/types.d.ts +12 -0
- package/dist/components/utils/types.d.ts.map +1 -0
- package/dist/components/vertical-collapsible-panel/component.d.ts +65 -0
- package/dist/components/vertical-collapsible-panel/component.d.ts.map +1 -0
- package/dist/components/vertical-collapsible-panel/component.js.map +1 -1
- package/dist/components/vertical-collapsible-panel/index.d.ts +2 -0
- package/dist/components/vertical-collapsible-panel/index.d.ts.map +1 -0
- package/dist/index.d.ts +4 -4390
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +166 -164
- package/dist/index.js.map +1 -1
- package/dist/metadata.d.ts +446 -0
- package/dist/metadata.d.ts.map +1 -0
- package/dist/metadata.js.map +1 -1
- package/dist/tokens/and-theme/index.d.ts +2 -0
- package/dist/tokens/and-theme/index.d.ts.map +1 -0
- package/dist/tokens/and-theme/tokens.d.ts +6 -0
- package/dist/tokens/and-theme/tokens.d.ts.map +1 -0
- package/dist/tokens/and-theme/tokens.js.map +1 -1
- package/dist/tokens/charts/index.d.ts +5 -0
- package/dist/tokens/charts/index.d.ts.map +1 -0
- package/dist/tokens/charts/palettes/cloudscape.d.ts +460 -0
- package/dist/tokens/charts/palettes/cloudscape.d.ts.map +1 -0
- package/dist/tokens/charts/palettes/cloudscape.js.map +1 -1
- package/dist/tokens/charts/palettes/colorbrewer.d.ts +338 -0
- package/dist/tokens/charts/palettes/colorbrewer.d.ts.map +1 -0
- package/dist/tokens/charts/palettes/colorbrewer.js.map +1 -1
- package/dist/tokens/charts/palettes/index.d.ts +24 -0
- package/dist/tokens/charts/palettes/index.d.ts.map +1 -0
- package/dist/tokens/charts/palettes/index.js.map +1 -1
- package/dist/tokens/charts/palettes/tableau.d.ts +11 -0
- package/dist/tokens/charts/palettes/tableau.d.ts.map +1 -0
- package/dist/tokens/index.d.ts +5 -0
- package/dist/tokens/index.d.ts.map +1 -0
- package/dist/tokens/types.d.ts +10 -0
- package/dist/tokens/types.d.ts.map +1 -0
- package/dist/tokens/utils.d.ts +9 -0
- package/dist/tokens/utils.d.ts.map +1 -0
- package/dist/tokens/utils.js.map +1 -1
- package/package.json +2 -2
- package/dist/tailwind.d.ts +0 -1
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { SequentialPaletteName, CategoricalPaletteName, Theme } from '../../tokens';
|
|
2
|
+
export interface UseChartsOptions {
|
|
3
|
+
/**
|
|
4
|
+
* The palette to use for the charts.
|
|
5
|
+
* @default "cloudscape"
|
|
6
|
+
*/
|
|
7
|
+
palette?: SequentialPaletteName | CategoricalPaletteName;
|
|
8
|
+
/**
|
|
9
|
+
* The theme to use for the charts.
|
|
10
|
+
* @default "light"
|
|
11
|
+
*/
|
|
12
|
+
theme?: Theme;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Get chart colors and axis configuration based on the current theme.
|
|
16
|
+
* @param options
|
|
17
|
+
* @returns
|
|
18
|
+
*/
|
|
19
|
+
export declare const useCharts: (options?: UseChartsOptions) => {
|
|
20
|
+
axisLineColor: string;
|
|
21
|
+
splitLineColor: string;
|
|
22
|
+
axisLabelColor: string;
|
|
23
|
+
chartColors: string[];
|
|
24
|
+
echartsAxisConfig: {
|
|
25
|
+
axisLine: {
|
|
26
|
+
lineStyle: {
|
|
27
|
+
color: string;
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
splitLine: {
|
|
31
|
+
lineStyle: {
|
|
32
|
+
color: string;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
axisLabel: {
|
|
36
|
+
color: string;
|
|
37
|
+
fontFamily: string;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=useCharts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCharts.d.ts","sourceRoot":"","sources":["../../../src/components/hooks/useCharts.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EAKtB,KAAK,EACN,MAAM,cAAc,CAAC;AAGtB,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,OAAO,CAAC,EAAE,qBAAqB,GAAG,sBAAsB,CAAC;IACzD;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED;;;;GAIG;AACH,eAAO,MAAM,SAAS,GACpB,UAAS,gBAGR;;;;;;;;;;;;;;;;;;;;;CAsCF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useCharts.js","sources":["../../../src/components/hooks/useCharts.ts"],"sourcesContent":["import { useDS } from \"../ds-root/context\";\nimport { getTokensByTheme } from \"../../tokens/utils\";\nimport { chartColorTokens } from \"../../tokens/charts/palettes/cloudscape\";\n\nimport {\n SequentialPaletteName,\n CategoricalPaletteName,\n CATEGORICAL_PALETTE_NAMES,\n getCategoricalChartColors,\n getSequentialChartColors,\n SEQUENTIAL_PALETTE_NAMES,\n Theme,\n} from \"../../tokens\";\nimport { useMemo } from \"react\";\n\nexport interface UseChartsOptions {\n /**\n * The palette to use for the charts.\n * @default \"cloudscape\"\n */\n palette?: SequentialPaletteName | CategoricalPaletteName;\n /**\n * The theme to use for the charts.\n * @default \"light\"\n */\n theme?: Theme;\n}\n\n/**\n * Get chart colors and axis configuration based on the current theme.\n * @param options\n * @returns\n */\nexport const useCharts = (\n options: UseChartsOptions = {\n palette: \"cloudscape\",\n theme: undefined,\n }\n) => {\n const { theme: themeContext } = useDS();\n const theme = options.theme || themeContext;\n\n const chartInfo = useMemo(() => {\n const themedChartColorTokens = getTokensByTheme(chartColorTokens, theme);\n const axisLineColor = themedChartColorTokens[\"colorChartsLineAxis\"];\n const splitLineColor = themedChartColorTokens[\"colorChartsLineGrid\"];\n const axisLabelColor = themedChartColorTokens[\"colorChartsLabelAxis\"];\n\n const palette = options.palette;\n\n const chartColors = CATEGORICAL_PALETTE_NAMES.includes(\n palette as CategoricalPaletteName\n )\n ? getCategoricalChartColors(palette as CategoricalPaletteName, theme)\n : SEQUENTIAL_PALETTE_NAMES.includes(palette as SequentialPaletteName)\n ? getSequentialChartColors(palette as SequentialPaletteName, theme)\n : [];\n const echartsAxisConfig = {\n axisLine: { lineStyle: { color: axisLineColor } },\n splitLine: { lineStyle: { color: splitLineColor } },\n axisLabel: {\n color: axisLabelColor,\n fontFamily: \"InterVariable, Inter, Helvetica, Arial, sans-serif\",\n },\n };\n return {\n axisLineColor,\n splitLineColor,\n axisLabelColor,\n chartColors,\n echartsAxisConfig,\n };\n }, [theme, options.palette]);\n\n return chartInfo;\n};\n"],"names":["useCharts","options","themeContext","useDS","theme","useMemo","themedChartColorTokens","getTokensByTheme","chartColorTokens","axisLineColor","splitLineColor","axisLabelColor","palette","chartColors","CATEGORICAL_PALETTE_NAMES","getCategoricalChartColors","SEQUENTIAL_PALETTE_NAMES","getSequentialChartColors"],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"useCharts.js","sources":["../../../src/components/hooks/useCharts.ts"],"sourcesContent":["import { useDS } from \"../ds-root/context\";\nimport { getTokensByTheme } from \"../../tokens/utils\";\nimport { chartColorTokens } from \"../../tokens/charts/palettes/cloudscape\";\n\nimport {\n SequentialPaletteName,\n CategoricalPaletteName,\n CATEGORICAL_PALETTE_NAMES,\n getCategoricalChartColors,\n getSequentialChartColors,\n SEQUENTIAL_PALETTE_NAMES,\n Theme,\n} from \"../../tokens\";\nimport { useMemo } from \"react\";\n\nexport interface UseChartsOptions {\n /**\n * The palette to use for the charts.\n * @default \"cloudscape\"\n */\n palette?: SequentialPaletteName | CategoricalPaletteName;\n /**\n * The theme to use for the charts.\n * @default \"light\"\n */\n theme?: Theme;\n}\n\n/**\n * Get chart colors and axis configuration based on the current theme.\n * @param options\n * @returns\n */\nexport const useCharts = (\n options: UseChartsOptions = {\n palette: \"cloudscape\",\n theme: undefined,\n }\n) => {\n const { theme: themeContext } = useDS();\n const theme = options.theme || themeContext;\n\n const chartInfo = useMemo(() => {\n const themedChartColorTokens = getTokensByTheme(chartColorTokens, theme);\n const axisLineColor = themedChartColorTokens[\"colorChartsLineAxis\"];\n const splitLineColor = themedChartColorTokens[\"colorChartsLineGrid\"];\n const axisLabelColor = themedChartColorTokens[\"colorChartsLabelAxis\"];\n\n const palette = options.palette;\n\n const chartColors = CATEGORICAL_PALETTE_NAMES.includes(\n palette as CategoricalPaletteName\n )\n ? getCategoricalChartColors(palette as CategoricalPaletteName, theme)\n : SEQUENTIAL_PALETTE_NAMES.includes(palette as SequentialPaletteName)\n ? getSequentialChartColors(palette as SequentialPaletteName, theme)\n : [];\n const echartsAxisConfig = {\n axisLine: { lineStyle: { color: axisLineColor } },\n splitLine: { lineStyle: { color: splitLineColor } },\n axisLabel: {\n color: axisLabelColor,\n fontFamily: \"InterVariable, Inter, Helvetica, Arial, sans-serif\",\n },\n };\n return {\n axisLineColor,\n splitLineColor,\n axisLabelColor,\n chartColors,\n echartsAxisConfig,\n };\n }, [theme, options.palette]);\n\n return chartInfo;\n};\n"],"names":["useCharts","options","themeContext","useDS","theme","useMemo","themedChartColorTokens","getTokensByTheme","chartColorTokens","axisLineColor","splitLineColor","axisLabelColor","palette","chartColors","CATEGORICAL_PALETTE_NAMES","getCategoricalChartColors","SEQUENTIAL_PALETTE_NAMES","getSequentialChartColors"],"mappings":";;;;;AAiCO,MAAMA,IAAY,CACvBC,IAA4B;AAAA,EAC1B,SAAS;AAAA,EACT,OAAO;AACT,MACG;AACH,QAAM,EAAE,OAAOC,EAAA,IAAiBC,EAAA,GAC1BC,IAAQH,EAAQ,SAASC;AAkC/B,SAhCkBG,EAAQ,MAAM;AAC9B,UAAMC,IAAyBC,EAAiBC,GAAkBJ,CAAK,GACjEK,IAAgBH,EAAuB,qBACvCI,IAAiBJ,EAAuB,qBACxCK,IAAiBL,EAAuB,sBAExCM,IAAUX,EAAQ,SAElBY,IAAcC,EAA0B;AAAA,MAC5CF;AAAA,IAAA,IAEEG,EAA0BH,GAAmCR,CAAK,IAClEY,EAAyB,SAASJ,CAAgC,IAClEK,EAAyBL,GAAkCR,CAAK,IAChE,CAAA;AASJ,WAAO;AAAA,MACL,eAAAK;AAAA,MACA,gBAAAC;AAAA,MACA,gBAAAC;AAAA,MACA,aAAAE;AAAA,MACA,mBAbwB;AAAA,QACxB,UAAU,EAAE,WAAW,EAAE,OAAOJ,IAAc;AAAA,QAC9C,WAAW,EAAE,WAAW,EAAE,OAAOC,IAAe;AAAA,QAChD,WAAW;AAAA,UACT,OAAOC;AAAA,UACP,YAAY;AAAA,QAAA;AAAA,MACd;AAAA,IAOA;AAAA,EAEJ,GAAG,CAACP,GAAOH,EAAQ,OAAO,CAAC;AAG7B;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A hook that manages state that can be either controlled or uncontrolled.
|
|
3
|
+
*
|
|
4
|
+
* @param value - The controlled value
|
|
5
|
+
* @param onChange - Callback when the value changes
|
|
6
|
+
* @param defaultValue - Default value for uncontrolled state
|
|
7
|
+
* @returns [currentValue, setValue] - Current value and setter function
|
|
8
|
+
*/
|
|
9
|
+
export declare function useControlledState<T, K extends unknown[] = []>(value?: T, onChange?: ((value: T, ...args: K | []) => void) | React.Dispatch<React.SetStateAction<T>>, defaultValue?: T): [
|
|
10
|
+
T | undefined,
|
|
11
|
+
(value: T | ((prev: T | undefined) => T), ...args: K | []) => void
|
|
12
|
+
];
|
|
13
|
+
//# sourceMappingURL=useControlledState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useControlledState.d.ts","sourceRoot":"","sources":["../../../src/components/hooks/useControlledState.ts"],"names":[],"mappings":"AAOA;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,CAAC,SAAS,OAAO,EAAE,GAAG,EAAE,EAC5D,KAAK,CAAC,EAAE,CAAC,EACT,QAAQ,CAAC,EACL,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,IAAI,CAAC,GACrC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAC3C,YAAY,CAAC,EAAE,CAAC,GACf;IACD,CAAC,GAAG,SAAS;IACb,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,SAAS,KAAK,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,IAAI;CACnE,CAkDA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useControlledState.js","sources":["../../../src/components/hooks/useControlledState.ts"],"sourcesContent":["\"use client\";\nimport { useCallback, useState } from \"react\";\n\n// Ref:\n// https://github.com/adobe/react-spectrum/blob/main/packages/%40react-stately/utils/src/useControlledState.ts\n// https://github.com/chakra-ui/chakra-ui/tree/main/packages/hooks/use-controllable-state\n\n/**\n * A hook that manages state that can be either controlled or uncontrolled.\n *\n * @param value - The controlled value\n * @param onChange - Callback when the value changes\n * @param defaultValue - Default value for uncontrolled state\n * @returns [currentValue, setValue] - Current value and setter function\n */\nexport function useControlledState<T, K extends unknown[] = []>(\n value?: T,\n onChange?:\n | ((value: T, ...args: K | []) => void)\n | React.Dispatch<React.SetStateAction<T>>,\n defaultValue?: T\n): [\n T | undefined,\n (value: T | ((prev: T | undefined) => T), ...args: K | []) => void\n] {\n const [internalState, setInternalState] = useState<T | undefined>(\n defaultValue\n );\n\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalState;\n\n // This is a generic setter function that works with both controlled and uncontrolled modes\n // and preserves the ability to pass additional arguments to the onChange handler\n const setValue = useCallback(\n function setValue(\n nextValue: T | ((prev: T | undefined) => T),\n ...args: K | []\n ): void {\n // If nextValue is a function, call it with the current value\n const resolvedValue =\n typeof nextValue === \"function\"\n ? (nextValue as (prev: T | undefined) => T)(currentValue)\n : nextValue;\n\n // Only update internal state if we're not controlled\n if (!isControlled) {\n setInternalState(resolvedValue);\n }\n\n // Call onChange if provided\n if (onChange) {\n if (typeof onChange === \"function\") {\n // Check if onChange is the multi-argument form\n if (onChange.length > 1) {\n // It's the form: (value: T, ...args: K) => void\n // Use a type assertion to handle the variable arguments\n (onChange as (value: T, ...args: K) => void)(\n resolvedValue,\n ...(args as K)\n );\n } else {\n // It's the React.Dispatch form or a simple (value: T) => void\n (onChange as React.Dispatch<React.SetStateAction<T>>)(\n resolvedValue\n );\n }\n }\n }\n },\n [isControlled, onChange, currentValue]\n );\n\n return [currentValue, setValue];\n}\n"],"names":["useControlledState","value","onChange","defaultValue","internalState","setInternalState","useState","isControlled","currentValue","setValue","useCallback","nextValue","args","resolvedValue"],"mappings":";;
|
|
1
|
+
{"version":3,"file":"useControlledState.js","sources":["../../../src/components/hooks/useControlledState.ts"],"sourcesContent":["\"use client\";\nimport { useCallback, useState } from \"react\";\n\n// Ref:\n// https://github.com/adobe/react-spectrum/blob/main/packages/%40react-stately/utils/src/useControlledState.ts\n// https://github.com/chakra-ui/chakra-ui/tree/main/packages/hooks/use-controllable-state\n\n/**\n * A hook that manages state that can be either controlled or uncontrolled.\n *\n * @param value - The controlled value\n * @param onChange - Callback when the value changes\n * @param defaultValue - Default value for uncontrolled state\n * @returns [currentValue, setValue] - Current value and setter function\n */\nexport function useControlledState<T, K extends unknown[] = []>(\n value?: T,\n onChange?:\n | ((value: T, ...args: K | []) => void)\n | React.Dispatch<React.SetStateAction<T>>,\n defaultValue?: T\n): [\n T | undefined,\n (value: T | ((prev: T | undefined) => T), ...args: K | []) => void\n] {\n const [internalState, setInternalState] = useState<T | undefined>(\n defaultValue\n );\n\n const isControlled = value !== undefined;\n const currentValue = isControlled ? value : internalState;\n\n // This is a generic setter function that works with both controlled and uncontrolled modes\n // and preserves the ability to pass additional arguments to the onChange handler\n const setValue = useCallback(\n function setValue(\n nextValue: T | ((prev: T | undefined) => T),\n ...args: K | []\n ): void {\n // If nextValue is a function, call it with the current value\n const resolvedValue =\n typeof nextValue === \"function\"\n ? (nextValue as (prev: T | undefined) => T)(currentValue)\n : nextValue;\n\n // Only update internal state if we're not controlled\n if (!isControlled) {\n setInternalState(resolvedValue);\n }\n\n // Call onChange if provided\n if (onChange) {\n if (typeof onChange === \"function\") {\n // Check if onChange is the multi-argument form\n if (onChange.length > 1) {\n // It's the form: (value: T, ...args: K) => void\n // Use a type assertion to handle the variable arguments\n (onChange as (value: T, ...args: K) => void)(\n resolvedValue,\n ...(args as K)\n );\n } else {\n // It's the React.Dispatch form or a simple (value: T) => void\n (onChange as React.Dispatch<React.SetStateAction<T>>)(\n resolvedValue\n );\n }\n }\n }\n },\n [isControlled, onChange, currentValue]\n );\n\n return [currentValue, setValue];\n}\n"],"names":["useControlledState","value","onChange","defaultValue","internalState","setInternalState","useState","isControlled","currentValue","setValue","useCallback","nextValue","args","resolvedValue"],"mappings":";;AAeO,SAASA,EACdC,GACAC,GAGAC,GAIA;AACA,QAAM,CAACC,GAAeC,CAAgB,IAAIC;AAAA,IACxCH;AAAA,EAAA,GAGII,IAAeN,MAAU,QACzBO,IAAeD,IAAeN,IAAQG,GAItCK,IAAWC;AAAA,IACf,SACEC,MACGC,GACG;AAEN,YAAMC,IACJ,OAAOF,KAAc,aAChBA,EAAyCH,CAAY,IACtDG;AAGN,MAAKJ,KACHF,EAAiBQ,CAAa,GAI5BX,KACE,OAAOA,KAAa,eAElBA,EAAS,SAAS,IAGnBA;AAAA,QACCW;AAAA,QACA,GAAID;AAAA,MAAA,IAILV;AAAA,QACCW;AAAA,MAAA;AAAA,IAKV;AAAA,IACA,CAACN,GAAcL,GAAUM,CAAY;AAAA,EAAA;AAGvC,SAAO,CAACA,GAAcC,CAAQ;AAChC;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDraggable.d.ts","sourceRoot":"","sources":["../../../src/components/hooks/useDraggable.ts"],"names":[],"mappings":"AAGA,wBAAgB,YAAY,CAAC,OAAO,GAAE,OAAc;mBAChB,WAAW,GAAG,IAAI;EAyMrD"}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { useCallback as H } from "react";
|
|
3
|
-
function T(
|
|
3
|
+
function T(u = !0) {
|
|
4
4
|
return { ref: H((n) => {
|
|
5
|
-
if (!n || !
|
|
6
|
-
let i = !1,
|
|
7
|
-
n.addEventListener("mousedown",
|
|
5
|
+
if (!n || !u) return;
|
|
6
|
+
let i = !1, d = 0, m = 0, f = 0, v = 0, o = null;
|
|
7
|
+
n.addEventListener("mousedown", p);
|
|
8
8
|
function z(t) {
|
|
9
|
-
var s, c;
|
|
10
9
|
let e = t;
|
|
11
10
|
for (; e && e !== n; ) {
|
|
12
|
-
if (e.classList.contains("resize-handle") || e.classList.contains("ds-resizable-resize-handle") || e.getAttribute("data-resize-handle") ||
|
|
13
|
-
|
|
11
|
+
if (e.classList.contains("resize-handle") || e.classList.contains("ds-resizable-resize-handle") || e.getAttribute("data-resize-handle") || e.getAttribute("data-testid")?.includes("resize") || e.getAttribute("data-placement") || // Resizable handles have data-placement
|
|
12
|
+
e.style.cursor?.includes("resize") || // Check for react-use-resizable specific classes/attributes
|
|
14
13
|
e.classList.contains("resizable-handle") || e.hasAttribute("data-resizable-handle") || // Check for common resize cursor styles
|
|
15
14
|
["n-resize", "s-resize", "e-resize", "w-resize", "ne-resize", "nw-resize", "se-resize", "sw-resize"].includes(e.style.cursor))
|
|
16
15
|
return !0;
|
|
@@ -28,28 +27,28 @@ function T(d = !0) {
|
|
|
28
27
|
function L(t, e, s) {
|
|
29
28
|
t.style.transform = `translate(${e}px, ${s}px)`;
|
|
30
29
|
}
|
|
31
|
-
function
|
|
30
|
+
function p(t) {
|
|
32
31
|
const e = t.target;
|
|
33
32
|
if (z(e))
|
|
34
33
|
return;
|
|
35
34
|
if (n.closest("[data-resizable]")) {
|
|
36
|
-
const r = n.getBoundingClientRect(), E = t.clientX - r.left, b = t.clientY - r.top,
|
|
35
|
+
const r = n.getBoundingClientRect(), E = t.clientX - r.left, b = t.clientY - r.top, c = 8, w = b <= c, x = b >= r.height - c, S = E <= c, A = E >= r.width - c, D = n.querySelector('.ds-resizable-resize-handle[data-placement*="top"]'), X = n.querySelector('.ds-resizable-resize-handle[data-placement*="bottom"]'), Y = n.querySelector('.ds-resizable-resize-handle[data-placement*="left"]'), q = n.querySelector('.ds-resizable-resize-handle[data-placement*="right"]');
|
|
37
36
|
if (w && D || x && X || S && Y || A && q)
|
|
38
37
|
return;
|
|
39
38
|
}
|
|
40
|
-
t.preventDefault(), t.stopPropagation(), i = !0,
|
|
39
|
+
t.preventDefault(), t.stopPropagation(), i = !0, d = t.clientX, m = t.clientY;
|
|
41
40
|
const s = y(n);
|
|
42
|
-
|
|
41
|
+
f = s.x, v = s.y, document.body.style.cursor = "grabbing", document.body.style.userSelect = "none", n.querySelectorAll('button, a, input, select, textarea, [role="button"]').forEach((r) => {
|
|
43
42
|
r.style.pointerEvents = "auto";
|
|
44
|
-
}), document.addEventListener("mousemove",
|
|
43
|
+
}), document.addEventListener("mousemove", l, { passive: !1 }), document.addEventListener("mouseup", a), document.addEventListener("touchmove", h, { passive: !1 }), document.addEventListener("touchend", a);
|
|
45
44
|
}
|
|
46
|
-
function
|
|
45
|
+
function l(t) {
|
|
47
46
|
!i || !n || (t.preventDefault(), o && cancelAnimationFrame(o), o = requestAnimationFrame(() => {
|
|
48
|
-
const e = t.clientX -
|
|
49
|
-
L(n,
|
|
47
|
+
const e = t.clientX - d, s = t.clientY - m, g = f + e, r = v + s;
|
|
48
|
+
L(n, g, r);
|
|
50
49
|
}));
|
|
51
50
|
}
|
|
52
|
-
function
|
|
51
|
+
function h(t) {
|
|
53
52
|
if (!i || !n) return;
|
|
54
53
|
t.preventDefault();
|
|
55
54
|
const e = t.touches[0];
|
|
@@ -59,17 +58,17 @@ function T(d = !0) {
|
|
|
59
58
|
clientY: e.clientY,
|
|
60
59
|
bubbles: !0
|
|
61
60
|
});
|
|
62
|
-
|
|
61
|
+
l(s);
|
|
63
62
|
}
|
|
64
63
|
function a() {
|
|
65
64
|
i && (i = !1, o && (cancelAnimationFrame(o), o = null), document.body.style.cursor = "", document.body.style.userSelect = "", n && n.querySelectorAll('button, a, input, select, textarea, [role="button"]').forEach((e) => {
|
|
66
65
|
e.style.pointerEvents = "";
|
|
67
|
-
}), document.removeEventListener("mousemove",
|
|
66
|
+
}), document.removeEventListener("mousemove", l), document.removeEventListener("mouseup", a), document.removeEventListener("touchmove", h), document.removeEventListener("touchend", a));
|
|
68
67
|
}
|
|
69
68
|
return () => {
|
|
70
|
-
n.removeEventListener("mousedown",
|
|
69
|
+
n.removeEventListener("mousedown", p), a();
|
|
71
70
|
};
|
|
72
|
-
}, [
|
|
71
|
+
}, [u]) };
|
|
73
72
|
}
|
|
74
73
|
export {
|
|
75
74
|
T as useDraggable
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDraggable.js","sources":["../../../src/components/hooks/useDraggable.ts"],"sourcesContent":["\"use client\";\nimport { useCallback } from \"react\";\n\nexport function useDraggable(enabled: boolean = true) {\n const ref = useCallback((element: HTMLElement | null) => {\n if (!element || !enabled) return;\n \n let isDragging = false;\n let startX = 0;\n let startY = 0;\n let initialLeft = 0;\n let initialTop = 0;\n let rafId: number | null = null;\n\n element.addEventListener(\"mousedown\", dragMouseDown);\n\n function isResizeHandle(target: HTMLElement): boolean {\n // Check if the element or any of its parents is a resize handle\n let current = target;\n while (current && current !== element) {\n // Check for various resize handle indicators\n if (\n current.classList.contains('resize-handle') ||\n current.classList.contains('ds-resizable-resize-handle') ||\n current.getAttribute('data-resize-handle') ||\n current.getAttribute('data-testid')?.includes('resize') ||\n current.getAttribute('data-placement') || // Resizable handles have data-placement\n current.style.cursor?.includes('resize') ||\n // Check for react-use-resizable specific classes/attributes\n current.classList.contains('resizable-handle') ||\n current.hasAttribute('data-resizable-handle') ||\n // Check for common resize cursor styles\n ['n-resize', 's-resize', 'e-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize'].includes(current.style.cursor)\n ) {\n return true;\n }\n current = current.parentElement as HTMLElement;\n }\n return false;\n }\n\n function getElementPosition(el: HTMLElement) {\n const style = window.getComputedStyle(el);\n const matrix = new DOMMatrix(style.transform);\n return {\n x: matrix.m41 || parseInt(style.left) || 0,\n y: matrix.m42 || parseInt(style.top) || 0\n };\n }\n\n function setElementPosition(el: HTMLElement, x: number, y: number) {\n // Use transform for better performance and smoother animation\n el.style.transform = `translate(${x}px, ${y}px)`;\n }\n\n function dragMouseDown(e: MouseEvent) {\n const target = e.target as HTMLElement;\n \n // Check if the click is on a resize handle\n if (isResizeHandle(target)) {\n return; // Don't start dragging\n }\n \n // Let resize handles take priority - if we reach this point and there's a resizable container,\n // we should check if there are actual resize handles present before preventing drag\n if (element.closest('[data-resizable]')) {\n const rect = element.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n const handleSize = 8;\n \n // Only prevent drag if we're near an edge AND there are actual resize handles\n const nearTopEdge = y <= handleSize;\n const nearBottomEdge = y >= rect.height - handleSize;\n const nearLeftEdge = x <= handleSize;\n const nearRightEdge = x >= rect.width - handleSize;\n \n // Check if resize handles exist for the edges we're near\n const hasTopHandle = element.querySelector('.ds-resizable-resize-handle[data-placement*=\"top\"]');\n const hasBottomHandle = element.querySelector('.ds-resizable-resize-handle[data-placement*=\"bottom\"]');\n const hasLeftHandle = element.querySelector('.ds-resizable-resize-handle[data-placement*=\"left\"]');\n const hasRightHandle = element.querySelector('.ds-resizable-resize-handle[data-placement*=\"right\"]');\n \n if (\n (nearTopEdge && hasTopHandle) ||\n (nearBottomEdge && hasBottomHandle) ||\n (nearLeftEdge && hasLeftHandle) ||\n (nearRightEdge && hasRightHandle)\n ) {\n return; // Let resize handle it\n }\n }\n \n e.preventDefault();\n e.stopPropagation();\n \n isDragging = true;\n \n // Store initial mouse position\n startX = e.clientX;\n startY = e.clientY;\n \n // Get initial element position\n const pos = getElementPosition(element);\n initialLeft = pos.x;\n initialTop = pos.y;\n \n // Set initial cursor style and prevent text selection\n document.body.style.cursor = 'grabbing';\n document.body.style.userSelect = 'none';\n \n // Only disable pointer events on content areas, not buttons/interactive elements\n const interactiveElements = element.querySelectorAll('button, a, input, select, textarea, [role=\"button\"]');\n interactiveElements.forEach(el => {\n (el as HTMLElement).style.pointerEvents = 'auto';\n });\n \n // Add move and up listeners\n document.addEventListener(\"mousemove\", elementDrag, { passive: false });\n document.addEventListener(\"mouseup\", closeDragElement);\n \n // Add touch events for mobile support\n document.addEventListener(\"touchmove\", handleTouchMove, { passive: false });\n document.addEventListener(\"touchend\", closeDragElement);\n }\n\n function elementDrag(e: MouseEvent) {\n if (!isDragging || !element) return;\n \n e.preventDefault();\n \n // Cancel any previous animation frame\n if (rafId) {\n cancelAnimationFrame(rafId);\n }\n \n // Use requestAnimationFrame for smooth animation\n rafId = requestAnimationFrame(() => {\n const deltaX = e.clientX - startX;\n const deltaY = e.clientY - startY;\n \n const newX = initialLeft + deltaX;\n const newY = initialTop + deltaY;\n \n // Apply position directly without bounds checking\n setElementPosition(element, newX, newY);\n });\n }\n\n function handleTouchMove(e: TouchEvent) {\n if (!isDragging || !element) return;\n \n e.preventDefault();\n \n const touch = e.touches[0];\n if (!touch) return;\n \n // Convert touch event to mouse-like event\n const mouseEvent = new MouseEvent('mousemove', {\n clientX: touch.clientX,\n clientY: touch.clientY,\n bubbles: true\n });\n \n elementDrag(mouseEvent);\n }\n\n function closeDragElement() {\n if (!isDragging) return;\n \n isDragging = false;\n \n // Cancel any pending animation frame\n if (rafId) {\n cancelAnimationFrame(rafId);\n rafId = null;\n }\n \n // Restore styles\n document.body.style.cursor = '';\n document.body.style.userSelect = '';\n \n // Restore pointer events for interactive elements\n if (element) {\n const interactiveElements = element.querySelectorAll('button, a, input, select, textarea, [role=\"button\"]');\n interactiveElements.forEach(el => {\n (el as HTMLElement).style.pointerEvents = '';\n });\n }\n \n // Remove event listeners\n document.removeEventListener(\"mousemove\", elementDrag);\n document.removeEventListener(\"mouseup\", closeDragElement);\n document.removeEventListener(\"touchmove\", handleTouchMove);\n document.removeEventListener(\"touchend\", closeDragElement);\n }\n\n // Cleanup function\n return () => {\n element.removeEventListener(\"mousedown\", dragMouseDown);\n closeDragElement();\n };\n }, [enabled]);\n \n return { ref };\n}\n"],"names":["useDraggable","enabled","useCallback","element","isDragging","startX","startY","initialLeft","initialTop","rafId","dragMouseDown","isResizeHandle","target","current","_a","_b","getElementPosition","el","style","matrix","setElementPosition","x","y","e","rect","handleSize","nearTopEdge","nearBottomEdge","nearLeftEdge","nearRightEdge","hasTopHandle","hasBottomHandle","hasLeftHandle","hasRightHandle","pos","elementDrag","closeDragElement","handleTouchMove","deltaX","deltaY","newX","newY","touch","mouseEvent"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useDraggable.js","sources":["../../../src/components/hooks/useDraggable.ts"],"sourcesContent":["\"use client\";\nimport { useCallback } from \"react\";\n\nexport function useDraggable(enabled: boolean = true) {\n const ref = useCallback((element: HTMLElement | null) => {\n if (!element || !enabled) return;\n \n let isDragging = false;\n let startX = 0;\n let startY = 0;\n let initialLeft = 0;\n let initialTop = 0;\n let rafId: number | null = null;\n\n element.addEventListener(\"mousedown\", dragMouseDown);\n\n function isResizeHandle(target: HTMLElement): boolean {\n // Check if the element or any of its parents is a resize handle\n let current = target;\n while (current && current !== element) {\n // Check for various resize handle indicators\n if (\n current.classList.contains('resize-handle') ||\n current.classList.contains('ds-resizable-resize-handle') ||\n current.getAttribute('data-resize-handle') ||\n current.getAttribute('data-testid')?.includes('resize') ||\n current.getAttribute('data-placement') || // Resizable handles have data-placement\n current.style.cursor?.includes('resize') ||\n // Check for react-use-resizable specific classes/attributes\n current.classList.contains('resizable-handle') ||\n current.hasAttribute('data-resizable-handle') ||\n // Check for common resize cursor styles\n ['n-resize', 's-resize', 'e-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize'].includes(current.style.cursor)\n ) {\n return true;\n }\n current = current.parentElement as HTMLElement;\n }\n return false;\n }\n\n function getElementPosition(el: HTMLElement) {\n const style = window.getComputedStyle(el);\n const matrix = new DOMMatrix(style.transform);\n return {\n x: matrix.m41 || parseInt(style.left) || 0,\n y: matrix.m42 || parseInt(style.top) || 0\n };\n }\n\n function setElementPosition(el: HTMLElement, x: number, y: number) {\n // Use transform for better performance and smoother animation\n el.style.transform = `translate(${x}px, ${y}px)`;\n }\n\n function dragMouseDown(e: MouseEvent) {\n const target = e.target as HTMLElement;\n \n // Check if the click is on a resize handle\n if (isResizeHandle(target)) {\n return; // Don't start dragging\n }\n \n // Let resize handles take priority - if we reach this point and there's a resizable container,\n // we should check if there are actual resize handles present before preventing drag\n if (element.closest('[data-resizable]')) {\n const rect = element.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n const handleSize = 8;\n \n // Only prevent drag if we're near an edge AND there are actual resize handles\n const nearTopEdge = y <= handleSize;\n const nearBottomEdge = y >= rect.height - handleSize;\n const nearLeftEdge = x <= handleSize;\n const nearRightEdge = x >= rect.width - handleSize;\n \n // Check if resize handles exist for the edges we're near\n const hasTopHandle = element.querySelector('.ds-resizable-resize-handle[data-placement*=\"top\"]');\n const hasBottomHandle = element.querySelector('.ds-resizable-resize-handle[data-placement*=\"bottom\"]');\n const hasLeftHandle = element.querySelector('.ds-resizable-resize-handle[data-placement*=\"left\"]');\n const hasRightHandle = element.querySelector('.ds-resizable-resize-handle[data-placement*=\"right\"]');\n \n if (\n (nearTopEdge && hasTopHandle) ||\n (nearBottomEdge && hasBottomHandle) ||\n (nearLeftEdge && hasLeftHandle) ||\n (nearRightEdge && hasRightHandle)\n ) {\n return; // Let resize handle it\n }\n }\n \n e.preventDefault();\n e.stopPropagation();\n \n isDragging = true;\n \n // Store initial mouse position\n startX = e.clientX;\n startY = e.clientY;\n \n // Get initial element position\n const pos = getElementPosition(element);\n initialLeft = pos.x;\n initialTop = pos.y;\n \n // Set initial cursor style and prevent text selection\n document.body.style.cursor = 'grabbing';\n document.body.style.userSelect = 'none';\n \n // Only disable pointer events on content areas, not buttons/interactive elements\n const interactiveElements = element.querySelectorAll('button, a, input, select, textarea, [role=\"button\"]');\n interactiveElements.forEach(el => {\n (el as HTMLElement).style.pointerEvents = 'auto';\n });\n \n // Add move and up listeners\n document.addEventListener(\"mousemove\", elementDrag, { passive: false });\n document.addEventListener(\"mouseup\", closeDragElement);\n \n // Add touch events for mobile support\n document.addEventListener(\"touchmove\", handleTouchMove, { passive: false });\n document.addEventListener(\"touchend\", closeDragElement);\n }\n\n function elementDrag(e: MouseEvent) {\n if (!isDragging || !element) return;\n \n e.preventDefault();\n \n // Cancel any previous animation frame\n if (rafId) {\n cancelAnimationFrame(rafId);\n }\n \n // Use requestAnimationFrame for smooth animation\n rafId = requestAnimationFrame(() => {\n const deltaX = e.clientX - startX;\n const deltaY = e.clientY - startY;\n \n const newX = initialLeft + deltaX;\n const newY = initialTop + deltaY;\n \n // Apply position directly without bounds checking\n setElementPosition(element, newX, newY);\n });\n }\n\n function handleTouchMove(e: TouchEvent) {\n if (!isDragging || !element) return;\n \n e.preventDefault();\n \n const touch = e.touches[0];\n if (!touch) return;\n \n // Convert touch event to mouse-like event\n const mouseEvent = new MouseEvent('mousemove', {\n clientX: touch.clientX,\n clientY: touch.clientY,\n bubbles: true\n });\n \n elementDrag(mouseEvent);\n }\n\n function closeDragElement() {\n if (!isDragging) return;\n \n isDragging = false;\n \n // Cancel any pending animation frame\n if (rafId) {\n cancelAnimationFrame(rafId);\n rafId = null;\n }\n \n // Restore styles\n document.body.style.cursor = '';\n document.body.style.userSelect = '';\n \n // Restore pointer events for interactive elements\n if (element) {\n const interactiveElements = element.querySelectorAll('button, a, input, select, textarea, [role=\"button\"]');\n interactiveElements.forEach(el => {\n (el as HTMLElement).style.pointerEvents = '';\n });\n }\n \n // Remove event listeners\n document.removeEventListener(\"mousemove\", elementDrag);\n document.removeEventListener(\"mouseup\", closeDragElement);\n document.removeEventListener(\"touchmove\", handleTouchMove);\n document.removeEventListener(\"touchend\", closeDragElement);\n }\n\n // Cleanup function\n return () => {\n element.removeEventListener(\"mousedown\", dragMouseDown);\n closeDragElement();\n };\n }, [enabled]);\n \n return { ref };\n}\n"],"names":["useDraggable","enabled","useCallback","element","isDragging","startX","startY","initialLeft","initialTop","rafId","dragMouseDown","isResizeHandle","target","current","getElementPosition","el","style","matrix","setElementPosition","x","y","e","rect","handleSize","nearTopEdge","nearBottomEdge","nearLeftEdge","nearRightEdge","hasTopHandle","hasBottomHandle","hasLeftHandle","hasRightHandle","pos","elementDrag","closeDragElement","handleTouchMove","deltaX","deltaY","newX","newY","touch","mouseEvent"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHover.d.ts","sourceRoot":"","sources":["../../../src/components/hooks/useHover.ts"],"names":[],"mappings":"AAIA,wBAAgB,QAAQ,CAAC,CAAC,SAAS,WAAW,KAAK;IACjD,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI;IACjB,OAAO;CACR,CAoCA"}
|
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { useState as
|
|
3
|
-
function
|
|
4
|
-
const [
|
|
5
|
-
|
|
6
|
-
}, []),
|
|
7
|
-
|
|
2
|
+
import { useState as c, useRef as v, useCallback as s } from "react";
|
|
3
|
+
function i() {
|
|
4
|
+
const [u, o] = c(!1), e = v(null), n = s(() => {
|
|
5
|
+
o(!0);
|
|
6
|
+
}, []), r = s(() => {
|
|
7
|
+
o(!1);
|
|
8
8
|
}, []);
|
|
9
|
-
return [
|
|
10
|
-
(
|
|
11
|
-
|
|
12
|
-
((o = t.current) == null ? void 0 : o.nodeType) === Node.ELEMENT_NODE && (t.current.removeEventListener(
|
|
9
|
+
return [s(
|
|
10
|
+
(t) => {
|
|
11
|
+
e.current?.nodeType === Node.ELEMENT_NODE && (e.current.removeEventListener(
|
|
13
12
|
"mouseenter",
|
|
14
|
-
|
|
15
|
-
),
|
|
13
|
+
n
|
|
14
|
+
), e.current.removeEventListener(
|
|
16
15
|
"mouseleave",
|
|
17
|
-
|
|
18
|
-
)),
|
|
16
|
+
r
|
|
17
|
+
)), t?.nodeType === Node.ELEMENT_NODE && (t.addEventListener("mouseenter", n), t.addEventListener("mouseleave", r)), e.current = t;
|
|
19
18
|
},
|
|
20
|
-
[
|
|
21
|
-
),
|
|
19
|
+
[n, r]
|
|
20
|
+
), u];
|
|
22
21
|
}
|
|
23
22
|
export {
|
|
24
|
-
|
|
23
|
+
i as useHover
|
|
25
24
|
};
|
|
26
25
|
//# sourceMappingURL=useHover.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useHover.js","sources":["../../../src/components/hooks/useHover.ts"],"sourcesContent":["\"use client\";\n\nimport { useState, useCallback, useRef } from \"react\";\n\nexport function useHover<T extends HTMLElement>(): [\n (node: T) => void,\n boolean\n] {\n const [hovering, setHovering] = useState(false);\n const previousNode = useRef(null);\n\n const handleMouseEnter = useCallback(() => {\n setHovering(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setHovering(false);\n }, []);\n\n const customRef = useCallback(\n (node: T) => {\n if (previousNode.current?.nodeType === Node.ELEMENT_NODE) {\n previousNode.current.removeEventListener(\n \"mouseenter\",\n handleMouseEnter\n );\n previousNode.current.removeEventListener(\n \"mouseleave\",\n handleMouseLeave\n );\n }\n\n if (node?.nodeType === Node.ELEMENT_NODE) {\n node.addEventListener(\"mouseenter\", handleMouseEnter);\n node.addEventListener(\"mouseleave\", handleMouseLeave);\n }\n\n previousNode.current = node;\n },\n [handleMouseEnter, handleMouseLeave]\n );\n\n return [customRef, hovering];\n}\n"],"names":["useHover","hovering","setHovering","useState","previousNode","useRef","handleMouseEnter","useCallback","handleMouseLeave","node"
|
|
1
|
+
{"version":3,"file":"useHover.js","sources":["../../../src/components/hooks/useHover.ts"],"sourcesContent":["\"use client\";\n\nimport { useState, useCallback, useRef } from \"react\";\n\nexport function useHover<T extends HTMLElement>(): [\n (node: T) => void,\n boolean\n] {\n const [hovering, setHovering] = useState(false);\n const previousNode = useRef(null);\n\n const handleMouseEnter = useCallback(() => {\n setHovering(true);\n }, []);\n\n const handleMouseLeave = useCallback(() => {\n setHovering(false);\n }, []);\n\n const customRef = useCallback(\n (node: T) => {\n if (previousNode.current?.nodeType === Node.ELEMENT_NODE) {\n previousNode.current.removeEventListener(\n \"mouseenter\",\n handleMouseEnter\n );\n previousNode.current.removeEventListener(\n \"mouseleave\",\n handleMouseLeave\n );\n }\n\n if (node?.nodeType === Node.ELEMENT_NODE) {\n node.addEventListener(\"mouseenter\", handleMouseEnter);\n node.addEventListener(\"mouseleave\", handleMouseLeave);\n }\n\n previousNode.current = node;\n },\n [handleMouseEnter, handleMouseLeave]\n );\n\n return [customRef, hovering];\n}\n"],"names":["useHover","hovering","setHovering","useState","previousNode","useRef","handleMouseEnter","useCallback","handleMouseLeave","node"],"mappings":";;AAIO,SAASA,IAGd;AACA,QAAM,CAACC,GAAUC,CAAW,IAAIC,EAAS,EAAK,GACxCC,IAAeC,EAAO,IAAI,GAE1BC,IAAmBC,EAAY,MAAM;AACzC,IAAAL,EAAY,EAAI;AAAA,EAClB,GAAG,CAAA,CAAE,GAECM,IAAmBD,EAAY,MAAM;AACzC,IAAAL,EAAY,EAAK;AAAA,EACnB,GAAG,CAAA,CAAE;AAyBL,SAAO,CAvBWK;AAAA,IAChB,CAACE,MAAY;AACX,MAAIL,EAAa,SAAS,aAAa,KAAK,iBAC1CA,EAAa,QAAQ;AAAA,QACnB;AAAA,QACAE;AAAA,MAAA,GAEFF,EAAa,QAAQ;AAAA,QACnB;AAAA,QACAI;AAAA,MAAA,IAIAC,GAAM,aAAa,KAAK,iBAC1BA,EAAK,iBAAiB,cAAcH,CAAgB,GACpDG,EAAK,iBAAiB,cAAcD,CAAgB,IAGtDJ,EAAa,UAAUK;AAAA,IACzB;AAAA,IACA,CAACH,GAAkBE,CAAgB;AAAA,EAAA,GAGlBP,CAAQ;AAC7B;"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type ObserverRect = Omit<DOMRectReadOnly, 'toJSON'>;
|
|
2
|
+
export declare function useResizeObserver<T extends HTMLElement = any>(options?: ResizeObserverOptions): readonly [import('react').RefObject<T>, ObserverRect];
|
|
3
|
+
export declare function useElementSize<T extends HTMLElement = any>(options?: ResizeObserverOptions): {
|
|
4
|
+
ref: import('react').RefObject<T>;
|
|
5
|
+
width: number;
|
|
6
|
+
height: number;
|
|
7
|
+
};
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=useResizeObserver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useResizeObserver.d.ts","sourceRoot":"","sources":["../../../src/components/hooks/useResizeObserver.ts"],"names":[],"mappings":"AAGA,KAAK,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;AAapD,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,WAAW,GAAG,GAAG,EAAE,OAAO,CAAC,EAAE,qBAAqB,yDA0D7F;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,WAAW,GAAG,GAAG,EAAE,OAAO,CAAC,EAAE,qBAAqB;;;;EAG1F"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { useRef as
|
|
3
|
-
const
|
|
2
|
+
import { useRef as u, useState as a, useMemo as h, useEffect as R } from "react";
|
|
3
|
+
const b = {
|
|
4
4
|
x: 0,
|
|
5
5
|
y: 0,
|
|
6
6
|
width: 0,
|
|
@@ -10,43 +10,42 @@ const S = {
|
|
|
10
10
|
bottom: 0,
|
|
11
11
|
right: 0
|
|
12
12
|
};
|
|
13
|
-
function
|
|
14
|
-
const n =
|
|
15
|
-
() => typeof window < "u" ? new ResizeObserver((
|
|
16
|
-
const
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
right: t.contentRect.right
|
|
13
|
+
function d(c) {
|
|
14
|
+
const n = u(0), t = u(null), [o, i] = a(b), s = h(
|
|
15
|
+
() => typeof window < "u" ? new ResizeObserver((f) => {
|
|
16
|
+
const e = f[0];
|
|
17
|
+
e && (cancelAnimationFrame(n.current), n.current = requestAnimationFrame(() => {
|
|
18
|
+
if (t.current) {
|
|
19
|
+
const r = e.borderBoxSize?.[0] || e.contentBoxSize?.[0];
|
|
20
|
+
if (r) {
|
|
21
|
+
const l = r.inlineSize, m = r.blockSize;
|
|
22
|
+
i({
|
|
23
|
+
width: l,
|
|
24
|
+
height: m,
|
|
25
|
+
x: e.contentRect.x,
|
|
26
|
+
y: e.contentRect.y,
|
|
27
|
+
top: e.contentRect.top,
|
|
28
|
+
left: e.contentRect.left,
|
|
29
|
+
bottom: e.contentRect.bottom,
|
|
30
|
+
right: e.contentRect.right
|
|
32
31
|
});
|
|
33
32
|
} else
|
|
34
|
-
|
|
33
|
+
i(e.contentRect);
|
|
35
34
|
}
|
|
36
35
|
}));
|
|
37
36
|
}) : null,
|
|
38
37
|
[]
|
|
39
38
|
);
|
|
40
|
-
return
|
|
41
|
-
|
|
42
|
-
}), [
|
|
39
|
+
return R(() => (t.current && s?.observe(t.current, c), () => {
|
|
40
|
+
s?.disconnect(), n.current && cancelAnimationFrame(n.current);
|
|
41
|
+
}), [t.current]), [t, o];
|
|
43
42
|
}
|
|
44
|
-
function
|
|
45
|
-
const [n, { width:
|
|
46
|
-
return { ref: n, width:
|
|
43
|
+
function S(c) {
|
|
44
|
+
const [n, { width: t, height: o }] = d(c);
|
|
45
|
+
return { ref: n, width: t, height: o };
|
|
47
46
|
}
|
|
48
47
|
export {
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
S as useElementSize,
|
|
49
|
+
d as useResizeObserver
|
|
51
50
|
};
|
|
52
51
|
//# sourceMappingURL=useResizeObserver.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useResizeObserver.js","sources":["../../../src/components/hooks/useResizeObserver.ts"],"sourcesContent":["\"use client\";\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\ntype ObserverRect = Omit<DOMRectReadOnly, 'toJSON'>;\n\nconst defaultState: ObserverRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n};\n\nexport function useResizeObserver<T extends HTMLElement = any>(options?: ResizeObserverOptions) {\n const frameID = useRef(0);\n const ref = useRef<T>(null);\n\n const [rect, setRect] = useState<ObserverRect>(defaultState);\n\n const observer = useMemo(\n () =>\n typeof window !== 'undefined'\n ? new ResizeObserver((entries) => {\n const entry = entries[0];\n\n if (entry) {\n cancelAnimationFrame(frameID.current);\n\n frameID.current = requestAnimationFrame(() => {\n if (ref.current) {\n const boxSize = entry.borderBoxSize?.[0] || entry.contentBoxSize?.[0];\n if (boxSize) {\n const width = boxSize.inlineSize;\n const height = boxSize.blockSize;\n\n setRect({\n width,\n height,\n x: entry.contentRect.x,\n y: entry.contentRect.y,\n top: entry.contentRect.top,\n left: entry.contentRect.left,\n bottom: entry.contentRect.bottom,\n right: entry.contentRect.right,\n });\n } else {\n setRect(entry.contentRect);\n }\n }\n });\n }\n })\n : null,\n []\n );\n\n useEffect(() => {\n if (ref.current) {\n observer?.observe(ref.current, options);\n }\n\n return () => {\n observer?.disconnect();\n\n if (frameID.current) {\n cancelAnimationFrame(frameID.current);\n }\n };\n }, [ref.current]);\n\n return [ref, rect] as const;\n}\n\nexport function useElementSize<T extends HTMLElement = any>(options?: ResizeObserverOptions) {\n const [ref, { width, height }] = useResizeObserver<T>(options);\n return { ref, width, height };\n}\n"],"names":["defaultState","useResizeObserver","options","frameID","useRef","ref","rect","setRect","useState","observer","useMemo","entries","entry","boxSize","
|
|
1
|
+
{"version":3,"file":"useResizeObserver.js","sources":["../../../src/components/hooks/useResizeObserver.ts"],"sourcesContent":["\"use client\";\nimport { useEffect, useMemo, useRef, useState } from 'react';\n\ntype ObserverRect = Omit<DOMRectReadOnly, 'toJSON'>;\n\nconst defaultState: ObserverRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n top: 0,\n left: 0,\n bottom: 0,\n right: 0,\n};\n\nexport function useResizeObserver<T extends HTMLElement = any>(options?: ResizeObserverOptions) {\n const frameID = useRef(0);\n const ref = useRef<T>(null);\n\n const [rect, setRect] = useState<ObserverRect>(defaultState);\n\n const observer = useMemo(\n () =>\n typeof window !== 'undefined'\n ? new ResizeObserver((entries) => {\n const entry = entries[0];\n\n if (entry) {\n cancelAnimationFrame(frameID.current);\n\n frameID.current = requestAnimationFrame(() => {\n if (ref.current) {\n const boxSize = entry.borderBoxSize?.[0] || entry.contentBoxSize?.[0];\n if (boxSize) {\n const width = boxSize.inlineSize;\n const height = boxSize.blockSize;\n\n setRect({\n width,\n height,\n x: entry.contentRect.x,\n y: entry.contentRect.y,\n top: entry.contentRect.top,\n left: entry.contentRect.left,\n bottom: entry.contentRect.bottom,\n right: entry.contentRect.right,\n });\n } else {\n setRect(entry.contentRect);\n }\n }\n });\n }\n })\n : null,\n []\n );\n\n useEffect(() => {\n if (ref.current) {\n observer?.observe(ref.current, options);\n }\n\n return () => {\n observer?.disconnect();\n\n if (frameID.current) {\n cancelAnimationFrame(frameID.current);\n }\n };\n }, [ref.current]);\n\n return [ref, rect] as const;\n}\n\nexport function useElementSize<T extends HTMLElement = any>(options?: ResizeObserverOptions) {\n const [ref, { width, height }] = useResizeObserver<T>(options);\n return { ref, width, height };\n}\n"],"names":["defaultState","useResizeObserver","options","frameID","useRef","ref","rect","setRect","useState","observer","useMemo","entries","entry","boxSize","width","height","useEffect","useElementSize"],"mappings":";;AAKA,MAAMA,IAA6B;AAAA,EACjC,GAAG;AAAA,EACH,GAAG;AAAA,EACH,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,KAAK;AAAA,EACL,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,OAAO;AACT;AAEO,SAASC,EAA+CC,GAAiC;AAC9F,QAAMC,IAAUC,EAAO,CAAC,GAClBC,IAAMD,EAAU,IAAI,GAEpB,CAACE,GAAMC,CAAO,IAAIC,EAAuBR,CAAY,GAErDS,IAAWC;AAAA,IACf,MACE,OAAO,SAAW,MACd,IAAI,eAAe,CAACC,MAAY;AAC9B,YAAMC,IAAQD,EAAQ,CAAC;AAEvB,MAAIC,MACF,qBAAqBT,EAAQ,OAAO,GAEpCA,EAAQ,UAAU,sBAAsB,MAAM;AAC5C,YAAIE,EAAI,SAAS;AACf,gBAAMQ,IAAUD,EAAM,gBAAgB,CAAC,KAAKA,EAAM,iBAAiB,CAAC;AACpE,cAAIC,GAAS;AACX,kBAAMC,IAAQD,EAAQ,YAChBE,IAASF,EAAQ;AAEvB,YAAAN,EAAQ;AAAA,cACN,OAAAO;AAAA,cACA,QAAAC;AAAA,cACA,GAAGH,EAAM,YAAY;AAAA,cACrB,GAAGA,EAAM,YAAY;AAAA,cACrB,KAAKA,EAAM,YAAY;AAAA,cACvB,MAAMA,EAAM,YAAY;AAAA,cACxB,QAAQA,EAAM,YAAY;AAAA,cAC1B,OAAOA,EAAM,YAAY;AAAA,YAAA,CAC1B;AAAA,UACH;AACE,YAAAL,EAAQK,EAAM,WAAW;AAAA,QAE7B;AAAA,MACF,CAAC;AAAA,IAEL,CAAC,IACD;AAAA,IACN,CAAA;AAAA,EAAC;AAGH,SAAAI,EAAU,OACJX,EAAI,WACNI,GAAU,QAAQJ,EAAI,SAASH,CAAO,GAGjC,MAAM;AACX,IAAAO,GAAU,WAAA,GAENN,EAAQ,WACV,qBAAqBA,EAAQ,OAAO;AAAA,EAExC,IACC,CAACE,EAAI,OAAO,CAAC,GAET,CAACA,GAAKC,CAAI;AACnB;AAEO,SAASW,EAA4Cf,GAAiC;AAC3F,QAAM,CAACG,GAAK,EAAE,OAAAS,GAAO,QAAAC,GAAQ,IAAId,EAAqBC,CAAO;AAC7D,SAAO,EAAE,KAAAG,GAAK,OAAAS,GAAO,QAAAC,EAAA;AACvB;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
export type TransitionStatus = "starting" | "ending" | "idle" | undefined;
|
|
3
|
+
/**
|
|
4
|
+
* Provides a status string for CSS animations.
|
|
5
|
+
* @param open - a boolean that determines if the element is open.
|
|
6
|
+
* @param enableIdleState - a boolean that enables the `'idle'` state between `'starting'` and `'ending'`
|
|
7
|
+
*/
|
|
8
|
+
export declare function useTransitionStatus(open: boolean, enableIdleState?: boolean, deferEndingState?: boolean): {
|
|
9
|
+
mounted: boolean;
|
|
10
|
+
setMounted: React.Dispatch<React.SetStateAction<boolean>>;
|
|
11
|
+
transitionStatus: TransitionStatus;
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=useTransitionStatus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTransitionStatus.d.ts","sourceRoot":"","sources":["../../../src/components/hooks/useTransitionStatus.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAE1E;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,OAAO,EACb,eAAe,GAAE,OAAe,EAChC,gBAAgB,GAAE,OAAe;;;;EA6ElC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTransitionStatus.js","sources":["../../../src/components/hooks/useTransitionStatus.ts"],"sourcesContent":["\"use client\";\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { useIsoLayoutEffect } from \"@base-ui-components/utils/useIsoLayoutEffect\";\nimport { AnimationFrame } from \"@base-ui-components/utils/useAnimationFrame\";\n\nexport type TransitionStatus = \"starting\" | \"ending\" | \"idle\" | undefined;\n\n/**\n * Provides a status string for CSS animations.\n * @param open - a boolean that determines if the element is open.\n * @param enableIdleState - a boolean that enables the `'idle'` state between `'starting'` and `'ending'`\n */\nexport function useTransitionStatus(\n open: boolean,\n enableIdleState: boolean = false,\n deferEndingState: boolean = false\n) {\n const [transitionStatus, setTransitionStatus] =\n React.useState<TransitionStatus>(\n open && enableIdleState ? \"idle\" : undefined\n );\n const [mounted, setMounted] = React.useState(open);\n\n if (open && !mounted) {\n setMounted(true);\n setTransitionStatus(\"starting\");\n }\n\n if (!open && mounted && transitionStatus !== \"ending\" && !deferEndingState) {\n setTransitionStatus(\"ending\");\n }\n\n if (!open && !mounted && transitionStatus === \"ending\") {\n setTransitionStatus(undefined);\n }\n\n useIsoLayoutEffect(() => {\n if (!open && mounted && transitionStatus !== \"ending\" && deferEndingState) {\n const frame = AnimationFrame.request(() => {\n setTransitionStatus(\"ending\");\n });\n\n return () => {\n AnimationFrame.cancel(frame);\n };\n }\n\n return undefined;\n }, [open, mounted, transitionStatus, deferEndingState]);\n\n useIsoLayoutEffect(() => {\n if (!open || enableIdleState) {\n return undefined;\n }\n\n const frame = AnimationFrame.request(() => {\n ReactDOM.flushSync(() => {\n setTransitionStatus(undefined);\n });\n });\n\n return () => {\n AnimationFrame.cancel(frame);\n };\n }, [enableIdleState, open]);\n\n useIsoLayoutEffect(() => {\n if (!open || !enableIdleState) {\n return undefined;\n }\n\n if (open && mounted && transitionStatus !== \"idle\") {\n setTransitionStatus(\"starting\");\n }\n\n const frame = AnimationFrame.request(() => {\n setTransitionStatus(\"idle\");\n });\n\n return () => {\n AnimationFrame.cancel(frame);\n };\n }, [enableIdleState, open, mounted, setTransitionStatus, transitionStatus]);\n\n return React.useMemo(\n () => ({\n mounted,\n setMounted,\n transitionStatus,\n }),\n [mounted, transitionStatus]\n );\n}\n"],"names":["useTransitionStatus","open","enableIdleState","deferEndingState","transitionStatus","setTransitionStatus","React","mounted","setMounted","useIsoLayoutEffect","frame","AnimationFrame","ReactDOM"],"mappings":";;;;;AAaO,SAASA,EACdC,GACAC,IAA2B,IAC3BC,IAA4B,IAC5B;AACA,QAAM,CAACC,GAAkBC,CAAmB,IAC1CC,EAAM;AAAA,IACJL,KAAQC,IAAkB,SAAS;AAAA,
|
|
1
|
+
{"version":3,"file":"useTransitionStatus.js","sources":["../../../src/components/hooks/useTransitionStatus.ts"],"sourcesContent":["\"use client\";\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { useIsoLayoutEffect } from \"@base-ui-components/utils/useIsoLayoutEffect\";\nimport { AnimationFrame } from \"@base-ui-components/utils/useAnimationFrame\";\n\nexport type TransitionStatus = \"starting\" | \"ending\" | \"idle\" | undefined;\n\n/**\n * Provides a status string for CSS animations.\n * @param open - a boolean that determines if the element is open.\n * @param enableIdleState - a boolean that enables the `'idle'` state between `'starting'` and `'ending'`\n */\nexport function useTransitionStatus(\n open: boolean,\n enableIdleState: boolean = false,\n deferEndingState: boolean = false\n) {\n const [transitionStatus, setTransitionStatus] =\n React.useState<TransitionStatus>(\n open && enableIdleState ? \"idle\" : undefined\n );\n const [mounted, setMounted] = React.useState(open);\n\n if (open && !mounted) {\n setMounted(true);\n setTransitionStatus(\"starting\");\n }\n\n if (!open && mounted && transitionStatus !== \"ending\" && !deferEndingState) {\n setTransitionStatus(\"ending\");\n }\n\n if (!open && !mounted && transitionStatus === \"ending\") {\n setTransitionStatus(undefined);\n }\n\n useIsoLayoutEffect(() => {\n if (!open && mounted && transitionStatus !== \"ending\" && deferEndingState) {\n const frame = AnimationFrame.request(() => {\n setTransitionStatus(\"ending\");\n });\n\n return () => {\n AnimationFrame.cancel(frame);\n };\n }\n\n return undefined;\n }, [open, mounted, transitionStatus, deferEndingState]);\n\n useIsoLayoutEffect(() => {\n if (!open || enableIdleState) {\n return undefined;\n }\n\n const frame = AnimationFrame.request(() => {\n ReactDOM.flushSync(() => {\n setTransitionStatus(undefined);\n });\n });\n\n return () => {\n AnimationFrame.cancel(frame);\n };\n }, [enableIdleState, open]);\n\n useIsoLayoutEffect(() => {\n if (!open || !enableIdleState) {\n return undefined;\n }\n\n if (open && mounted && transitionStatus !== \"idle\") {\n setTransitionStatus(\"starting\");\n }\n\n const frame = AnimationFrame.request(() => {\n setTransitionStatus(\"idle\");\n });\n\n return () => {\n AnimationFrame.cancel(frame);\n };\n }, [enableIdleState, open, mounted, setTransitionStatus, transitionStatus]);\n\n return React.useMemo(\n () => ({\n mounted,\n setMounted,\n transitionStatus,\n }),\n [mounted, transitionStatus]\n );\n}\n"],"names":["useTransitionStatus","open","enableIdleState","deferEndingState","transitionStatus","setTransitionStatus","React","mounted","setMounted","useIsoLayoutEffect","frame","AnimationFrame","ReactDOM"],"mappings":";;;;;AAaO,SAASA,EACdC,GACAC,IAA2B,IAC3BC,IAA4B,IAC5B;AACA,QAAM,CAACC,GAAkBC,CAAmB,IAC1CC,EAAM;AAAA,IACJL,KAAQC,IAAkB,SAAS;AAAA,EAAA,GAEjC,CAACK,GAASC,CAAU,IAAIF,EAAM,SAASL,CAAI;AAEjD,SAAIA,KAAQ,CAACM,MACXC,EAAW,EAAI,GACfH,EAAoB,UAAU,IAG5B,CAACJ,KAAQM,KAAWH,MAAqB,YAAY,CAACD,KACxDE,EAAoB,QAAQ,GAG1B,CAACJ,KAAQ,CAACM,KAAWH,MAAqB,YAC5CC,EAAoB,MAAS,GAG/BI,EAAmB,MAAM;AACvB,QAAI,CAACR,KAAQM,KAAWH,MAAqB,YAAYD,GAAkB;AACzE,YAAMO,IAAQC,EAAe,QAAQ,MAAM;AACzC,QAAAN,EAAoB,QAAQ;AAAA,MAC9B,CAAC;AAED,aAAO,MAAM;AACX,QAAAM,EAAe,OAAOD,CAAK;AAAA,MAC7B;AAAA,IACF;AAAA,EAGF,GAAG,CAACT,GAAMM,GAASH,GAAkBD,CAAgB,CAAC,GAEtDM,EAAmB,MAAM;AACvB,QAAI,CAACR,KAAQC;AACX;AAGF,UAAMQ,IAAQC,EAAe,QAAQ,MAAM;AACzC,MAAAC,EAAS,UAAU,MAAM;AACvB,QAAAP,EAAoB,MAAS;AAAA,MAC/B,CAAC;AAAA,IACH,CAAC;AAED,WAAO,MAAM;AACX,MAAAM,EAAe,OAAOD,CAAK;AAAA,IAC7B;AAAA,EACF,GAAG,CAACR,GAAiBD,CAAI,CAAC,GAE1BQ,EAAmB,MAAM;AACvB,QAAI,CAACR,KAAQ,CAACC;AACZ;AAGF,IAAID,KAAQM,KAAWH,MAAqB,UAC1CC,EAAoB,UAAU;AAGhC,UAAMK,IAAQC,EAAe,QAAQ,MAAM;AACzC,MAAAN,EAAoB,MAAM;AAAA,IAC5B,CAAC;AAED,WAAO,MAAM;AACX,MAAAM,EAAe,OAAOD,CAAK;AAAA,IAC7B;AAAA,EACF,GAAG,CAACR,GAAiBD,GAAMM,GAASF,GAAqBD,CAAgB,CAAC,GAEnEE,EAAM;AAAA,IACX,OAAO;AAAA,MACL,SAAAC;AAAA,MACA,YAAAC;AAAA,MACA,kBAAAJ;AAAA,IAAA;AAAA,IAEF,CAACG,GAASH,CAAgB;AAAA,EAAA;AAE9B;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWindowSize.d.ts","sourceRoot":"","sources":["../../../src/components/hooks/useWindowSize.ts"],"names":[],"mappings":"AAGA,wBAAgB,aAAa;;;EAuB5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useWindowSize.js","sources":["../../../src/components/hooks/useWindowSize.ts"],"sourcesContent":["\"use client\";\nimport React from 'react';\n\nexport function useWindowSize() {\n const [size, setSize] = React.useState({\n width: null,\n height: null,\n });\n\n React.useLayoutEffect(() => {\n const handleResize = () => {\n setSize({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n };\n\n handleResize();\n window.addEventListener(\"resize\", handleResize);\n\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }, []);\n\n return size;\n}\n"],"names":["useWindowSize","size","setSize","React","handleResize"],"mappings":";;AAGO,SAASA,IAAgB;AAC9B,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAAM,SAAS;AAAA,IACrC,OAAO;AAAA,IACP,QAAQ;AAAA,EAAA,CACT;AAEDA,SAAAA,EAAM,gBAAgB,MAAM;AAC1B,UAAMC,IAAe,MAAM;
|
|
1
|
+
{"version":3,"file":"useWindowSize.js","sources":["../../../src/components/hooks/useWindowSize.ts"],"sourcesContent":["\"use client\";\nimport React from 'react';\n\nexport function useWindowSize() {\n const [size, setSize] = React.useState({\n width: null,\n height: null,\n });\n\n React.useLayoutEffect(() => {\n const handleResize = () => {\n setSize({\n width: window.innerWidth,\n height: window.innerHeight,\n });\n };\n\n handleResize();\n window.addEventListener(\"resize\", handleResize);\n\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }, []);\n\n return size;\n}\n"],"names":["useWindowSize","size","setSize","React","handleResize"],"mappings":";;AAGO,SAASA,IAAgB;AAC9B,QAAM,CAACC,GAAMC,CAAO,IAAIC,EAAM,SAAS;AAAA,IACrC,OAAO;AAAA,IACP,QAAQ;AAAA,EAAA,CACT;AAEDA,SAAAA,EAAM,gBAAgB,MAAM;AAC1B,UAAMC,IAAe,MAAM;AACzB,MAAAF,EAAQ;AAAA,QACN,OAAO,OAAO;AAAA,QACd,QAAQ,OAAO;AAAA,MAAA,CAChB;AAAA,IACH;AAEA,WAAAE,EAAA,GACA,OAAO,iBAAiB,UAAUA,CAAY,GAEvC,MAAM;AACX,aAAO,oBAAoB,UAAUA,CAAY;AAAA,IACnD;AAAA,EACF,GAAG,CAAA,CAAE,GAEEH;AACT;"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { default as React, ElementType, Ref, ComponentPropsWithRef } from 'react';
|
|
2
|
+
import { TooltipProps } from '../tooltip';
|
|
3
|
+
import { WithRenderPropProps, ElementTypeToDOMType } from '../utils';
|
|
4
|
+
export type IconButtonProps<E extends ElementType = "button"> = WithRenderPropProps<E, {
|
|
5
|
+
loading: boolean;
|
|
6
|
+
}> & {
|
|
7
|
+
/**
|
|
8
|
+
* Label text or element to display within tooltip
|
|
9
|
+
* @default undefined
|
|
10
|
+
*/
|
|
11
|
+
label?: React.ReactNode;
|
|
12
|
+
/**
|
|
13
|
+
* Size of the icon button: small (1.25rem) or medium (1.5rem)
|
|
14
|
+
* @default medium
|
|
15
|
+
*/
|
|
16
|
+
size?: "small" | "medium";
|
|
17
|
+
/**
|
|
18
|
+
* Whether to apply negative margin for better visual alignment
|
|
19
|
+
* @default true
|
|
20
|
+
*/
|
|
21
|
+
negativeMargin?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Whether to show loading state
|
|
24
|
+
* @default false
|
|
25
|
+
*/
|
|
26
|
+
loading?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Props to pass to the Tooltip component when wrapping the button
|
|
29
|
+
*/
|
|
30
|
+
tooltipProps?: TooltipProps;
|
|
31
|
+
/**
|
|
32
|
+
* Whether to show active state
|
|
33
|
+
* @default false
|
|
34
|
+
*/
|
|
35
|
+
active?: boolean;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Implementation of the IconButton component
|
|
39
|
+
*/
|
|
40
|
+
declare const IconButtonImpl: <E extends ElementType = "button">({ label, size, negativeMargin, children, className, tooltipProps, active, as, href, target, rel, download, hrefLang, referrerPolicy, loading, render, ...rest }: IconButtonProps<E>, ref: Ref<ElementTypeToDOMType<E>>) => import("react/jsx-runtime").JSX.Element;
|
|
41
|
+
export declare const IconButton: <E extends ElementType = "button">(props: IconButtonProps<E> & {
|
|
42
|
+
ref?: ComponentPropsWithRef<E>["ref"];
|
|
43
|
+
}) => ReturnType<typeof IconButtonImpl>;
|
|
44
|
+
export {};
|
|
45
|
+
//# sourceMappingURL=component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../src/components/icon-button/component.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,EAEZ,KAAK,WAAW,EAChB,KAAK,GAAG,EACR,qBAAqB,EACtB,MAAM,OAAO,CAAC;AACf,OAAO,EAAW,YAAY,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAGL,mBAAmB,EAEnB,oBAAoB,EACrB,MAAM,UAAU,CAAC;AAIlB,OAAO,aAAa,CAAC;AAGrB,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,WAAW,GAAG,QAAQ,IAC1D,mBAAmB,CAAC,CAAC,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,GAAG;IAC7C;;;OAGG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC1B;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;OAEG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEJ;;GAEG;AACH,QAAA,MAAM,cAAc,GAAI,CAAC,SAAS,WAAW,GAAG,QAAQ,EACtD,iKAmBG,eAAe,CAAC,CAAC,CAAC,EACrB,KAAK,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,4CAqDlC,CAAC;AAGF,eAAO,MAAM,UAAU,EAAiC,CACtD,CAAC,SAAS,WAAW,GAAG,QAAQ,EAEhC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG;IAAE,GAAG,CAAC,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;CAAE,KAClE,UAAU,CAAC,OAAO,cAAc,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"component.js","sources":["../../../src/components/icon-button/component.tsx"],"sourcesContent":["\"use client\";\nimport React, {\n forwardRef,\n type ElementType,\n type Ref,\n ComponentPropsWithRef,\n} from \"react\";\nimport { Tooltip, TooltipProps } from \"../tooltip\";\nimport {\n useCls,\n clsx,\n WithRenderPropProps,\n WithRenderProp,\n ElementTypeToDOMType,\n} from \"../utils\";\nimport { Spin } from \"../spin\";\n\n// Import component-specific styles\nimport \"./style.css\";\n\n// Base props without href/as handling\nexport type IconButtonProps<E extends ElementType = \"button\"> =\n WithRenderPropProps<E, { loading: boolean }> & {\n /**\n * Label text or element to display within tooltip\n * @default undefined\n */\n label?: React.ReactNode;\n /**\n * Size of the icon button: small (1.25rem) or medium (1.5rem)\n * @default medium\n */\n size?: \"small\" | \"medium\";\n /**\n * Whether to apply negative margin for better visual alignment\n * @default true\n */\n negativeMargin?: boolean;\n /**\n * Whether to show loading state\n * @default false\n */\n loading?: boolean;\n /**\n * Props to pass to the Tooltip component when wrapping the button\n */\n tooltipProps?: TooltipProps;\n /**\n * Whether to show active state\n * @default false\n */\n active?: boolean;\n };\n\n/**\n * Implementation of the IconButton component\n */\nconst IconButtonImpl = <E extends ElementType = \"button\">(\n {\n label,\n size = \"medium\",\n negativeMargin = true,\n children,\n className,\n tooltipProps = {},\n active = false,\n as,\n href,\n // Extract anchor-specific props\n target,\n rel,\n download,\n hrefLang,\n referrerPolicy,\n loading,\n render,\n ...rest\n }: IconButtonProps<E>,\n ref: Ref<ElementTypeToDOMType<E>>\n) => {\n const cls = useCls();\n const buttonClasses = clsx(\n cls(\n \"icon-button\",\n `icon-button-${size}`,\n active && \"icon-button-active\",\n negativeMargin && \"icon-button-negative-margin\"\n ),\n className\n );\n\n // Use a type assertion for the component to avoid TypeScript errors\n const Component = (as || (href ? \"a\" : \"button\")) as ElementType;\n\n const elementProps = {\n ref,\n className: buttonClasses,\n ...(Component === \"button\" && { type: \"button\" }),\n ...(Component === \"a\"\n ? {\n ...(href && { href }),\n ...(target !== undefined && { target }),\n ...(rel !== undefined && { rel }),\n ...(download !== undefined && { download }),\n ...(hrefLang !== undefined && { hrefLang }),\n ...(referrerPolicy !== undefined && { referrerPolicy }),\n }\n : {}),\n \"data-loading\": loading,\n children: loading ? <Spin /> : children,\n ...rest,\n };\n\n const element = (\n <WithRenderProp\n as={Component}\n render={render}\n {...elementProps}\n state={{\n loading,\n }}\n />\n );\n\n return label ? (\n <Tooltip title={label} arrow={false} {...tooltipProps}>\n {element}\n </Tooltip>\n ) : (\n element\n );\n};\n\n// Export with correct typing\nexport const IconButton = forwardRef(IconButtonImpl) as <\n E extends ElementType = \"button\"\n>(\n props: IconButtonProps<E> & { ref?: ComponentPropsWithRef<E>[\"ref\"] }\n) => ReturnType<typeof IconButtonImpl>;\n"],"names":["IconButtonImpl","label","size","negativeMargin","children","className","tooltipProps","active","as","href","target","rel","download","hrefLang","referrerPolicy","loading","render","rest","ref","cls","useCls","buttonClasses","clsx","Component","elementProps","jsx","Spin","element","WithRenderProp","Tooltip","IconButton","forwardRef"],"mappings":";;;;;;;;;AAyDA,MAAMA,IAAiB,CACrB;AAAA,EACE,OAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,gBAAAC,IAAiB;AAAA,EACjB,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,cAAAC,IAAe,
|
|
1
|
+
{"version":3,"file":"component.js","sources":["../../../src/components/icon-button/component.tsx"],"sourcesContent":["\"use client\";\nimport React, {\n forwardRef,\n type ElementType,\n type Ref,\n ComponentPropsWithRef,\n} from \"react\";\nimport { Tooltip, TooltipProps } from \"../tooltip\";\nimport {\n useCls,\n clsx,\n WithRenderPropProps,\n WithRenderProp,\n ElementTypeToDOMType,\n} from \"../utils\";\nimport { Spin } from \"../spin\";\n\n// Import component-specific styles\nimport \"./style.css\";\n\n// Base props without href/as handling\nexport type IconButtonProps<E extends ElementType = \"button\"> =\n WithRenderPropProps<E, { loading: boolean }> & {\n /**\n * Label text or element to display within tooltip\n * @default undefined\n */\n label?: React.ReactNode;\n /**\n * Size of the icon button: small (1.25rem) or medium (1.5rem)\n * @default medium\n */\n size?: \"small\" | \"medium\";\n /**\n * Whether to apply negative margin for better visual alignment\n * @default true\n */\n negativeMargin?: boolean;\n /**\n * Whether to show loading state\n * @default false\n */\n loading?: boolean;\n /**\n * Props to pass to the Tooltip component when wrapping the button\n */\n tooltipProps?: TooltipProps;\n /**\n * Whether to show active state\n * @default false\n */\n active?: boolean;\n };\n\n/**\n * Implementation of the IconButton component\n */\nconst IconButtonImpl = <E extends ElementType = \"button\">(\n {\n label,\n size = \"medium\",\n negativeMargin = true,\n children,\n className,\n tooltipProps = {},\n active = false,\n as,\n href,\n // Extract anchor-specific props\n target,\n rel,\n download,\n hrefLang,\n referrerPolicy,\n loading,\n render,\n ...rest\n }: IconButtonProps<E>,\n ref: Ref<ElementTypeToDOMType<E>>\n) => {\n const cls = useCls();\n const buttonClasses = clsx(\n cls(\n \"icon-button\",\n `icon-button-${size}`,\n active && \"icon-button-active\",\n negativeMargin && \"icon-button-negative-margin\"\n ),\n className\n );\n\n // Use a type assertion for the component to avoid TypeScript errors\n const Component = (as || (href ? \"a\" : \"button\")) as ElementType;\n\n const elementProps = {\n ref,\n className: buttonClasses,\n ...(Component === \"button\" && { type: \"button\" }),\n ...(Component === \"a\"\n ? {\n ...(href && { href }),\n ...(target !== undefined && { target }),\n ...(rel !== undefined && { rel }),\n ...(download !== undefined && { download }),\n ...(hrefLang !== undefined && { hrefLang }),\n ...(referrerPolicy !== undefined && { referrerPolicy }),\n }\n : {}),\n \"data-loading\": loading,\n children: loading ? <Spin /> : children,\n ...rest,\n };\n\n const element = (\n <WithRenderProp\n as={Component}\n render={render}\n {...elementProps}\n state={{\n loading,\n }}\n />\n );\n\n return label ? (\n <Tooltip title={label} arrow={false} {...tooltipProps}>\n {element}\n </Tooltip>\n ) : (\n element\n );\n};\n\n// Export with correct typing\nexport const IconButton = forwardRef(IconButtonImpl) as <\n E extends ElementType = \"button\"\n>(\n props: IconButtonProps<E> & { ref?: ComponentPropsWithRef<E>[\"ref\"] }\n) => ReturnType<typeof IconButtonImpl>;\n"],"names":["IconButtonImpl","label","size","negativeMargin","children","className","tooltipProps","active","as","href","target","rel","download","hrefLang","referrerPolicy","loading","render","rest","ref","cls","useCls","buttonClasses","clsx","Component","elementProps","jsx","Spin","element","WithRenderProp","Tooltip","IconButton","forwardRef"],"mappings":";;;;;;;;;AAyDA,MAAMA,IAAiB,CACrB;AAAA,EACE,OAAAC;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,gBAAAC,IAAiB;AAAA,EACjB,UAAAC;AAAA,EACA,WAAAC;AAAA,EACA,cAAAC,IAAe,CAAA;AAAA,EACf,QAAAC,IAAS;AAAA,EACT,IAAAC;AAAA,EACA,MAAAC;AAAA;AAAA,EAEA,QAAAC;AAAA,EACA,KAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,SAAAC;AAAA,EACA,QAAAC;AAAA,EACA,GAAGC;AACL,GACAC,MACG;AACH,QAAMC,IAAMC,EAAA,GACNC,IAAgBC;AAAA,IACpBH;AAAA,MACE;AAAA,MACA,eAAejB,CAAI;AAAA,MACnBK,KAAU;AAAA,MACVJ,KAAkB;AAAA,IAAA;AAAA,IAEpBE;AAAA,EAAA,GAIIkB,IAAaf,MAAOC,IAAO,MAAM,WAEjCe,IAAe;AAAA,IACnB,KAAAN;AAAA,IACA,WAAWG;AAAA,IACX,GAAIE,MAAc,YAAY,EAAE,MAAM,SAAA;AAAA,IACtC,GAAIA,MAAc,MACd;AAAA,MACE,GAAId,KAAQ,EAAE,MAAAA,EAAA;AAAA,MACd,GAAIC,MAAW,UAAa,EAAE,QAAAA,EAAA;AAAA,MAC9B,GAAIC,MAAQ,UAAa,EAAE,KAAAA,EAAA;AAAA,MAC3B,GAAIC,MAAa,UAAa,EAAE,UAAAA,EAAA;AAAA,MAChC,GAAIC,MAAa,UAAa,EAAE,UAAAA,EAAA;AAAA,MAChC,GAAIC,MAAmB,UAAa,EAAE,gBAAAA,EAAA;AAAA,IAAe,IAEvD,CAAA;AAAA,IACJ,gBAAgBC;AAAA,IAChB,UAAUA,IAAU,gBAAAU,EAACC,GAAA,CAAA,CAAK,IAAKtB;AAAA,IAC/B,GAAGa;AAAA,EAAA,GAGCU,IACJ,gBAAAF;AAAA,IAACG;AAAA,IAAA;AAAA,MACC,IAAIL;AAAA,MACJ,QAAAP;AAAA,MACC,GAAGQ;AAAA,MACJ,OAAO;AAAA,QACL,SAAAT;AAAA,MAAA;AAAA,IACF;AAAA,EAAA;AAIJ,SAAOd,IACL,gBAAAwB,EAACI,GAAA,EAAQ,OAAO5B,GAAO,OAAO,IAAQ,GAAGK,GACtC,UAAAqB,EAAA,CACH,IAEAA;AAEJ,GAGaG,IAAaC,EAAW/B,CAAc;"}
|