@basic-ui/core 0.0.53 → 0.0.56
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/build/cjs/index.js +278 -505
- package/build/cjs/index.js.map +1 -1
- package/build/esm/Accordion/Accordion.js +20 -29
- package/build/esm/Accordion/Accordion.js.map +1 -1
- package/build/esm/Accordion/AccordionBody.js +18 -32
- package/build/esm/Accordion/AccordionBody.js.map +1 -1
- package/build/esm/Accordion/AccordionHeader.js +37 -74
- package/build/esm/Accordion/AccordionHeader.js.map +1 -1
- package/build/esm/Accordion/AccordionItem.js +19 -22
- package/build/esm/Accordion/AccordionItem.js.map +1 -1
- package/build/esm/Accordion/context.js +16 -13
- package/build/esm/Accordion/context.js.map +1 -1
- package/build/esm/Accordion/index.js.map +1 -1
- package/build/esm/Accordion/scopeQuery.js.map +1 -1
- package/build/esm/CheckBox/CheckBox.js +15 -25
- package/build/esm/CheckBox/CheckBox.js.map +1 -1
- package/build/esm/CheckBox/index.js.map +1 -1
- package/build/esm/ComboBox/Combobox.d.ts +7 -7
- package/build/esm/ComboBox/Combobox.js +52 -59
- package/build/esm/ComboBox/Combobox.js.map +1 -1
- package/build/esm/ComboBox/ComboboxButton.js +23 -28
- package/build/esm/ComboBox/ComboboxButton.js.map +1 -1
- package/build/esm/ComboBox/ComboboxInput.js +67 -70
- package/build/esm/ComboBox/ComboboxInput.js.map +1 -1
- package/build/esm/ComboBox/ComboboxLabel.js +15 -17
- package/build/esm/ComboBox/ComboboxLabel.js.map +1 -1
- package/build/esm/ComboBox/ComboboxList.js +19 -20
- package/build/esm/ComboBox/ComboboxList.js.map +1 -1
- package/build/esm/ComboBox/ComboboxOption.js +41 -45
- package/build/esm/ComboBox/ComboboxOption.js.map +1 -1
- package/build/esm/ComboBox/ComboboxPopover.js +22 -21
- package/build/esm/ComboBox/ComboboxPopover.js.map +1 -1
- package/build/esm/ComboBox/cities.js.map +1 -1
- package/build/esm/ComboBox/context.js +5 -6
- package/build/esm/ComboBox/context.js.map +1 -1
- package/build/esm/ComboBox/hooks.d.ts +2 -2
- package/build/esm/ComboBox/hooks.js +175 -148
- package/build/esm/ComboBox/hooks.js.map +1 -1
- package/build/esm/ComboBox/index.js.map +1 -1
- package/build/esm/ComboBox/makeHash.js +3 -6
- package/build/esm/ComboBox/makeHash.js.map +1 -1
- package/build/esm/ComboBox/scopeQuery.js.map +1 -1
- package/build/esm/FocusLock/FocusLock.js +26 -32
- package/build/esm/FocusLock/FocusLock.js.map +1 -1
- package/build/esm/FocusLock/index.js.map +1 -1
- package/build/esm/FocusLock/tabUtils.js +5 -7
- package/build/esm/FocusLock/tabUtils.js.map +1 -1
- package/build/esm/FocusLock/useFocusLock.js +14 -19
- package/build/esm/FocusLock/useFocusLock.js.map +1 -1
- package/build/esm/List/List.js +9 -11
- package/build/esm/List/List.js.map +1 -1
- package/build/esm/List/ListItem.js +9 -11
- package/build/esm/List/ListItem.js.map +1 -1
- package/build/esm/List/context.js +6 -6
- package/build/esm/List/context.js.map +1 -1
- package/build/esm/List/index.js.map +1 -1
- package/build/esm/Menu/ContextMenuTrigger.d.ts +4 -4
- package/build/esm/Menu/ContextMenuTrigger.js +32 -37
- package/build/esm/Menu/ContextMenuTrigger.js.map +1 -1
- package/build/esm/Menu/Menu.js +33 -49
- package/build/esm/Menu/Menu.js.map +1 -1
- package/build/esm/Menu/MenuButton.d.ts +4 -4
- package/build/esm/Menu/MenuButton.js +28 -44
- package/build/esm/Menu/MenuButton.js.map +1 -1
- package/build/esm/Menu/MenuItem.js +29 -38
- package/build/esm/Menu/MenuItem.js.map +1 -1
- package/build/esm/Menu/MenuList.js +61 -116
- package/build/esm/Menu/MenuList.js.map +1 -1
- package/build/esm/Menu/MenuPopover.js +16 -19
- package/build/esm/Menu/MenuPopover.js.map +1 -1
- package/build/esm/Menu/context.d.ts +1 -1
- package/build/esm/Menu/context.js +14 -12
- package/build/esm/Menu/context.js.map +1 -1
- package/build/esm/Menu/fixtures/countryList.js +1 -1
- package/build/esm/Menu/fixtures/countryList.js.map +1 -1
- package/build/esm/Menu/index.js.map +1 -1
- package/build/esm/Menu/scope.js.map +1 -1
- package/build/esm/Modal/Modal.js +13 -18
- package/build/esm/Modal/Modal.js.map +1 -1
- package/build/esm/Modal/ModalBackdrop.js +24 -33
- package/build/esm/Modal/ModalBackdrop.js.map +1 -1
- package/build/esm/Modal/index.js.map +1 -1
- package/build/esm/Popper/Popper.d.ts +3 -3
- package/build/esm/Popper/Popper.js +44 -61
- package/build/esm/Popper/Popper.js.map +1 -1
- package/build/esm/Popper/PopperArrow.js +11 -16
- package/build/esm/Popper/PopperArrow.js.map +1 -1
- package/build/esm/Popper/context.js +3 -5
- package/build/esm/Popper/context.js.map +1 -1
- package/build/esm/Popper/index.js.map +1 -1
- package/build/esm/Portal/Portal.js +9 -11
- package/build/esm/Portal/Portal.js.map +1 -1
- package/build/esm/Portal/PortalSelectorProvider.d.ts +3 -3
- package/build/esm/Portal/PortalSelectorProvider.js +6 -4
- package/build/esm/Portal/PortalSelectorProvider.js.map +1 -1
- package/build/esm/Portal/index.js.map +1 -1
- package/build/esm/RadioButton/RadioButton.js +17 -23
- package/build/esm/RadioButton/RadioButton.js.map +1 -1
- package/build/esm/RadioButton/RadioGroup.js +19 -28
- package/build/esm/RadioButton/RadioGroup.js.map +1 -1
- package/build/esm/RadioButton/context.d.ts +1 -1
- package/build/esm/RadioButton/context.js +8 -6
- package/build/esm/RadioButton/context.js.map +1 -1
- package/build/esm/RadioButton/index.js.map +1 -1
- package/build/esm/SkipNav/SkipNav.js +9 -11
- package/build/esm/SkipNav/SkipNav.js.map +1 -1
- package/build/esm/SkipNav/index.js.map +1 -1
- package/build/esm/Slider/Slider.d.ts +7 -7
- package/build/esm/Slider/Slider.js +340 -407
- package/build/esm/Slider/Slider.js.map +1 -1
- package/build/esm/Slider/index.js.map +1 -1
- package/build/esm/Spinner/Spinner.js +31 -59
- package/build/esm/Spinner/Spinner.js.map +1 -1
- package/build/esm/Spinner/SpinnerButton.js +14 -19
- package/build/esm/Spinner/SpinnerButton.js.map +1 -1
- package/build/esm/Spinner/context.js +8 -7
- package/build/esm/Spinner/context.js.map +1 -1
- package/build/esm/Spinner/index.js.map +1 -1
- package/build/esm/Tabs/Tab.js +32 -50
- package/build/esm/Tabs/Tab.js.map +1 -1
- package/build/esm/Tabs/TabList.js +24 -34
- package/build/esm/Tabs/TabList.js.map +1 -1
- package/build/esm/Tabs/TabPanel.js +16 -23
- package/build/esm/Tabs/TabPanel.js.map +1 -1
- package/build/esm/Tabs/TabPanels.js +15 -20
- package/build/esm/Tabs/TabPanels.js.map +1 -1
- package/build/esm/Tabs/Tabs.js +17 -33
- package/build/esm/Tabs/Tabs.js.map +1 -1
- package/build/esm/Tabs/context.js +16 -13
- package/build/esm/Tabs/context.js.map +1 -1
- package/build/esm/Tabs/index.js.map +1 -1
- package/build/esm/Tabs/scopeQuery.js.map +1 -1
- package/build/esm/Tooltip/Tooltip.d.ts +2 -2
- package/build/esm/Tooltip/Tooltip.js +20 -30
- package/build/esm/Tooltip/Tooltip.js.map +1 -1
- package/build/esm/Tooltip/index.js.map +1 -1
- package/build/esm/Tooltip/stateMachine.d.ts +2 -2
- package/build/esm/Tooltip/stateMachine.js +95 -81
- package/build/esm/Tooltip/stateMachine.js.map +1 -1
- package/build/esm/Tooltip/useTooltip.d.ts +2 -2
- package/build/esm/Tooltip/useTooltip.js +38 -50
- package/build/esm/Tooltip/useTooltip.js.map +1 -1
- package/build/esm/hooks/index.js.map +1 -1
- package/build/esm/hooks/useAutoFocus.js +3 -3
- package/build/esm/hooks/useAutoFocus.js.map +1 -1
- package/build/esm/hooks/useChildrenCounter.js +6 -8
- package/build/esm/hooks/useChildrenCounter.js.map +1 -1
- package/build/esm/hooks/useControlledState.js +6 -16
- package/build/esm/hooks/useControlledState.js.map +1 -1
- package/build/esm/hooks/useFocusReturn.js +8 -12
- package/build/esm/hooks/useFocusReturn.js.map +1 -1
- package/build/esm/hooks/useFocusState.d.ts +2 -2
- package/build/esm/hooks/useFocusState.js +9 -15
- package/build/esm/hooks/useFocusState.js.map +1 -1
- package/build/esm/hooks/useGestureHandlers.d.ts +1 -1
- package/build/esm/hooks/useGestureHandlers.js +80 -100
- package/build/esm/hooks/useGestureHandlers.js.map +1 -1
- package/build/esm/hooks/useMeasure.js +7 -15
- package/build/esm/hooks/useMeasure.js.map +1 -1
- package/build/esm/hooks/useOnClickOutside.js +4 -6
- package/build/esm/hooks/useOnClickOutside.js.map +1 -1
- package/build/esm/hooks/useOnKeyDown.js +3 -4
- package/build/esm/hooks/useOnKeyDown.js.map +1 -1
- package/build/esm/hooks/useReducerMachine.d.ts +1 -1
- package/build/esm/hooks/useReducerMachine.js +15 -26
- package/build/esm/hooks/useReducerMachine.js.map +1 -1
- package/build/esm/hooks/useRemoveBodyScroll.js +9 -14
- package/build/esm/hooks/useRemoveBodyScroll.js.map +1 -1
- package/build/esm/hooks/useScope.d.ts +2 -2
- package/build/esm/hooks/useScope.js +12 -14
- package/build/esm/hooks/useScope.js.map +1 -1
- package/build/esm/hooks/useThrottle.js +5 -10
- package/build/esm/hooks/useThrottle.js.map +1 -1
- package/build/esm/index.js +4 -2
- package/build/esm/index.js.map +1 -1
- package/build/esm/styles.d.js +2 -0
- package/build/esm/styles.d.js.map +1 -0
- package/build/esm/utils/assign-ref.js +3 -5
- package/build/esm/utils/assign-ref.js.map +1 -1
- package/build/esm/utils/can-use-dom.js.map +1 -1
- package/build/esm/utils/clamp.js.map +1 -1
- package/build/esm/utils/context.d.ts +1 -1
- package/build/esm/utils/context.js +13 -20
- package/build/esm/utils/context.js.map +1 -1
- package/build/esm/utils/create-subscription.js +5 -10
- package/build/esm/utils/create-subscription.js.map +1 -1
- package/build/esm/utils/get-circular-index.js +0 -1
- package/build/esm/utils/get-circular-index.js.map +1 -1
- package/build/esm/utils/index.js.map +1 -1
- package/build/esm/utils/is-right-click.js.map +1 -1
- package/build/esm/utils/owner-document.js +1 -1
- package/build/esm/utils/owner-document.js.map +1 -1
- package/build/esm/utils/polymorphic.d.ts +10 -10
- package/build/esm/utils/polymorphic.js.map +1 -1
- package/build/esm/utils/rubber-band-clamp.js +2 -5
- package/build/esm/utils/rubber-band-clamp.js.map +1 -1
- package/build/esm/utils/use-stable-callback.js +8 -10
- package/build/esm/utils/use-stable-callback.js.map +1 -1
- package/build/esm/utils/wrap-event.d.ts +1 -1
- package/build/esm/utils/wrap-event.js +2 -5
- package/build/esm/utils/wrap-event.js.map +1 -1
- package/build/tsconfig-build.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/src/Accordion/Accordion.tsx +1 -1
- package/src/Accordion/AccordionBody.tsx +1 -1
- package/src/Accordion/AccordionHeader.tsx +1 -2
- package/src/ComboBox/Combobox.tsx +2 -2
- package/src/ComboBox/ComboboxList.tsx +1 -1
- package/src/ComboBox/ComboboxOption.tsx +0 -1
- package/src/ComboBox/hooks.tsx +0 -3
- package/src/FocusLock/useFocusLock.ts +0 -1
- package/src/Menu/Menu.tsx +2 -3
- package/src/Menu/MenuItem.tsx +1 -2
- package/src/Menu/MenuList.tsx +4 -4
- package/src/Modal/Modal.story.tsx +11 -7
- package/src/Modal/ModalBackdrop.tsx +1 -1
- package/src/Modal/NavDrawer.story.tsx +9 -6
- package/src/Popper/Popper.story.tsx +23 -7
- package/src/Popper/Popper.tsx +2 -2
- package/src/RadioButton/RadioButton.story.tsx +2 -1
- package/src/Slider/Slider.tsx +6 -11
- package/src/Spinner/Spinner.tsx +1 -1
- package/src/Tabs/TabList.tsx +1 -1
- package/src/Tooltip/Tooltip.tsx +8 -5
- package/src/Tooltip/useTooltip.ts +1 -1
- package/src/hooks/useControlledState.ts +1 -6
- package/src/hooks/useGestureHandlers.ts +0 -4
- package/src/hooks/useRemoveBodyScroll.ts +0 -1
- package/src/hooks/useScope.ts +1 -1
- package/src/styles.d.ts +1 -0
- package/src/utils/polymorphic.ts +14 -10
- package/src/utils/use-stable-callback.ts +0 -1
- package/build/esm/Carousel/Carousel.d.ts +0 -9
- package/build/esm/Carousel/Carousel.js +0 -38
- package/build/esm/Carousel/Carousel.js.map +0 -1
- package/build/esm/Carousel/Fader.d.ts +0 -14
- package/build/esm/Carousel/Fader.js +0 -76
- package/build/esm/Carousel/Fader.js.map +0 -1
- package/build/esm/Carousel/FaderItem.d.ts +0 -5
- package/build/esm/Carousel/FaderItem.js +0 -16
- package/build/esm/Carousel/FaderItem.js.map +0 -1
- package/build/esm/Carousel/Preloader.d.ts +0 -7
- package/build/esm/Carousel/Preloader.js +0 -70
- package/build/esm/Carousel/Preloader.js.map +0 -1
- package/build/esm/Carousel/Slider.d.ts +0 -14
- package/build/esm/Carousel/Slider.js +0 -212
- package/build/esm/Carousel/Slider.js.map +0 -1
- package/build/esm/Carousel/SliderItem.d.ts +0 -12
- package/build/esm/Carousel/SliderItem.js +0 -41
- package/build/esm/Carousel/SliderItem.js.map +0 -1
- package/build/esm/Carousel/context.d.ts +0 -10
- package/build/esm/Carousel/context.js +0 -8
- package/build/esm/Carousel/context.js.map +0 -1
- package/build/esm/Carousel/getSliderParams.d.ts +0 -9
- package/build/esm/Carousel/getSliderParams.js +0 -85
- package/build/esm/Carousel/getSliderParams.js.map +0 -1
- package/build/esm/Carousel/index.d.ts +0 -7
- package/build/esm/Carousel/index.js +0 -8
- package/build/esm/Carousel/index.js.map +0 -1
- package/build/esm/Carousel/useCarouselGestures.d.ts +0 -30
- package/build/esm/Carousel/useCarouselGestures.js +0 -33
- package/build/esm/Carousel/useCarouselGestures.js.map +0 -1
- package/build/esm/DatePicker/DatePicker.d.ts +0 -24
- package/build/esm/DatePicker/DatePicker.js +0 -101
- package/build/esm/DatePicker/DatePicker.js.map +0 -1
- package/build/esm/DatePicker/DatePickerSelect.d.ts +0 -8
- package/build/esm/DatePicker/DatePickerSelect.js +0 -201
- package/build/esm/DatePicker/DatePickerSelect.js.map +0 -1
- package/build/esm/DatePicker/RangeDatePicker.d.ts +0 -28
- package/build/esm/DatePicker/RangeDatePicker.js +0 -94
- package/build/esm/DatePicker/RangeDatePicker.js.map +0 -1
- package/build/esm/DatePicker/adjustDates.d.ts +0 -4
- package/build/esm/DatePicker/adjustDates.js +0 -18
- package/build/esm/DatePicker/adjustDates.js.map +0 -1
- package/build/esm/DatePicker/contexts.d.ts +0 -31
- package/build/esm/DatePicker/contexts.js +0 -15
- package/build/esm/DatePicker/contexts.js.map +0 -1
- package/build/esm/DatePicker/dateTypes.d.ts +0 -2
- package/build/esm/DatePicker/dateTypes.js +0 -2
- package/build/esm/DatePicker/dateTypes.js.map +0 -1
- package/build/esm/DatePicker/hooks.d.ts +0 -36
- package/build/esm/DatePicker/hooks.js +0 -98
- package/build/esm/DatePicker/hooks.js.map +0 -1
- package/build/esm/DatePicker/index.d.ts +0 -5
- package/build/esm/DatePicker/index.js +0 -6
- package/build/esm/DatePicker/index.js.map +0 -1
- package/build/esm/hooks/useId.d.ts +0 -1
- package/build/esm/hooks/useId.js +0 -25
- package/build/esm/hooks/useId.js.map +0 -1
- package/build/esm/utils/assignRef.d.ts +0 -3
- package/build/esm/utils/assignRef.js +0 -25
- package/build/esm/utils/assignRef.js.map +0 -1
- package/build/esm/utils/getCircularIndex.d.ts +0 -1
- package/build/esm/utils/getCircularIndex.js +0 -8
- package/build/esm/utils/getCircularIndex.js.map +0 -1
- package/build/esm/utils/rubberBandClamp.d.ts +0 -2
- package/build/esm/utils/rubberBandClamp.js +0 -20
- package/build/esm/utils/rubberBandClamp.js.map +0 -1
- package/build/esm/utils/wrapEvent.d.ts +0 -3
- package/build/esm/utils/wrapEvent.js +0 -16
- package/build/esm/utils/wrapEvent.js.map +0 -1
- package/build/tsconfig.tsbuildinfo +0 -7270
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGestureHandlers.js","names":["useRef","getOwnerDocument","initialGestureHandlersState","target","x","xDelta","xDeltaPercent","xInitial","xPrev","xVelocity","y","yDelta","yDeltaPercent","yInitial","yPrev","yVelocity","startTime","down","scrollLocked","FRAMERATE_CONST","VELOCITY_DEPR_FACTOR","gestureHandlers","set","containerRef","options","ensureTargetIsContainer","minTouchDelta","handleUp","state","deltaTime","Date","now","calcVelocity","newState","handleDown","e","pageX","pageY","deltaSpace","prevVelocity","speed","depr","Math","min","handleMove","cancelable","preventDefault","getDeltaSum","currentPos","initialPos","prevPos","abs","current","width","offsetWidth","NaN","height","offsetHeight","handleTouchMove","touches","item","handleTouchStart","length","ownerDocument","currentTarget","ownerWindow","defaultView","window","addEventListener","passive","handleTouchEnd","removeEventListener","handleMouseDown","button","handleMouseUp","onMouseDown","onTouchStart","useGestureHandlers","onGesture","cb","handlers"],"sources":["../../../src/hooks/useGestureHandlers.ts"],"sourcesContent":["import type {\n MutableRefObject,\n MouseEvent as ReactMouseEvent,\n TouchEvent as ReactTouchEvent,\n} from 'react';\nimport { useRef } from 'react';\n\nimport { getOwnerDocument } from '../utils';\n\nexport interface GestureHandlersState {\n target: null | EventTarget;\n x: number;\n xDelta: number;\n xDeltaPercent: number;\n xInitial: number;\n xPrev: number;\n xVelocity: number;\n y: number;\n yDelta: number;\n yDeltaPercent: number;\n yInitial: number;\n yPrev: number;\n yVelocity: number;\n startTime: number;\n down: boolean;\n scrollLocked: boolean;\n}\n\ntype SetStateFunc<S> = (\n state: (prevState: Readonly<S>) => S,\n callback?: () => void\n) => void;\n\nexport interface GestureHandlersReturn {\n onMouseDown: (e: ReactMouseEvent<HTMLElement>) => void;\n onTouchStart: (e: ReactTouchEvent<HTMLElement>) => void;\n}\n\nexport interface GestureHandlerOptions {\n ensureTargetIsContainer?: boolean;\n minTouchDelta?: number;\n}\n\nexport const initialGestureHandlersState: GestureHandlersState = {\n target: null,\n x: 0,\n xDelta: 0,\n xDeltaPercent: 0,\n xInitial: 0,\n xPrev: 0,\n xVelocity: 0,\n y: 0,\n yDelta: 0,\n yDeltaPercent: 0,\n yInitial: 0,\n yPrev: 0,\n yVelocity: 0,\n startTime: 0,\n down: false,\n scrollLocked: false,\n};\n\nconst FRAMERATE_CONST = 1000 / 60; // 60 fps\nconst VELOCITY_DEPR_FACTOR = FRAMERATE_CONST * 2;\n\nexport function gestureHandlers(\n set: SetStateFunc<GestureHandlersState>,\n containerRef?: MutableRefObject<HTMLElement | null>,\n options: GestureHandlerOptions = {}\n): GestureHandlersReturn {\n const { ensureTargetIsContainer = false, minTouchDelta = 0 } = options;\n\n // Common handlers\n const handleUp = () => {\n set((state: GestureHandlersState) => {\n const deltaTime = Date.now() - state.startTime;\n const xDelta = state.x - state.xInitial;\n const yDelta = state.y - state.yInitial;\n const xVelocity = calcVelocity(xDelta, deltaTime, state.xVelocity);\n const yVelocity = calcVelocity(yDelta, deltaTime, state.yVelocity);\n const newState: GestureHandlersState = {\n ...state,\n xVelocity,\n yVelocity,\n target: null,\n down: false,\n };\n\n return newState;\n });\n };\n\n const handleDown = (e: MouseEvent) => {\n const { target, pageX, pageY } = e;\n\n set((state: GestureHandlersState) => {\n const newState = {\n ...state,\n target,\n x: pageX,\n xDelta: 0,\n xDeltaPercent: 0,\n xVelocity: 0,\n xInitial: pageX,\n xPrev: pageX,\n y: pageY,\n yDelta: 0,\n yDeltaPercent: 0,\n yVelocity: 0,\n yInitial: pageY,\n yPrev: pageY,\n startTime: Date.now(),\n down: true,\n scrollLocked: false,\n };\n\n return newState;\n });\n };\n\n function calcVelocity(\n deltaSpace: number,\n deltaTime: number,\n prevVelocity: number\n ) {\n if (deltaTime < 1) {\n deltaTime = 1;\n }\n const speed = deltaSpace / deltaTime;\n const depr = 0.5 + Math.min(deltaTime / VELOCITY_DEPR_FACTOR, 0.5);\n return speed * depr + prevVelocity * (1 - depr);\n }\n\n function handleMove(e: MouseEvent) {\n const { pageX, pageY } = e;\n if (e.cancelable) {\n // prevent drag & drop behaviour from browser\n e.preventDefault && e.preventDefault();\n }\n\n set((state: GestureHandlersState) => {\n function getDeltaSum(\n currentPos: number,\n initialPos: number,\n prevPos: number\n ): number {\n if (\n state.scrollLocked ||\n Math.abs(currentPos - initialPos) >= minTouchDelta\n ) {\n state.scrollLocked = true;\n return currentPos - prevPos;\n }\n return 0;\n }\n\n const target =\n (containerRef && containerRef.current) || (e as any).target;\n\n const deltaTime = Date.now() - state.startTime;\n\n const width = target ? target.offsetWidth : NaN;\n const xDelta = state.xDelta + getDeltaSum(pageX, state.xInitial, state.x);\n const xDeltaPercent = (xDelta * 100) / width;\n const xVelocity = calcVelocity(xDelta, deltaTime, state.xVelocity);\n\n const height = target ? target.offsetHeight : NaN;\n const yDelta = state.yDelta + getDeltaSum(pageY, state.yInitial, state.y);\n const yDeltaPercent = (yDelta * 100) / height;\n const yVelocity = calcVelocity(yDelta, deltaTime, state.yVelocity);\n\n const newState = {\n ...state,\n xDelta,\n xDeltaPercent,\n x: pageX,\n xPrev: state.x,\n xVelocity,\n yDelta,\n yDeltaPercent,\n y: pageY,\n yPrev: state.y,\n yVelocity,\n };\n\n return newState;\n });\n }\n\n // Touch handlers\n\n /* eslint-disable @typescript-eslint/no-use-before-define */\n function handleTouchMove(e: TouchEvent) {\n if (e.cancelable) {\n // prevent drag & drop behaviour from browser\n e.preventDefault();\n }\n handleMove(e.touches.item(0) as any);\n }\n\n function handleTouchStart(e: ReactTouchEvent<HTMLElement>) {\n // making sure we're not dragging the element when more than one finger press the screen\n const { touches } = e;\n if (touches.length > 1) {\n return;\n }\n\n if (\n ensureTargetIsContainer &&\n containerRef &&\n e.target !== containerRef.current\n ) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const ownerDocument = getOwnerDocument(e.currentTarget)!;\n const ownerWindow = ownerDocument.defaultView || window;\n ownerWindow.addEventListener('touchmove', handleTouchMove, {\n passive: false,\n });\n ownerWindow.addEventListener('touchend', handleTouchEnd);\n ownerWindow.addEventListener('touchcancel', handleTouchEnd);\n handleDown(e.touches.item(0) as any);\n }\n\n function handleTouchEnd(this: Window) {\n this.removeEventListener('touchmove', handleTouchMove);\n this.removeEventListener('touchend', handleTouchEnd);\n this.removeEventListener('touchcancel', handleTouchEnd);\n handleUp();\n }\n\n // Mouse handlers\n function handleMouseDown(e: ReactMouseEvent<HTMLElement>) {\n if (\n ensureTargetIsContainer &&\n containerRef &&\n e.target !== containerRef.current\n ) {\n return;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const ownerDocument = getOwnerDocument(e.currentTarget)!;\n const ownerWindow = ownerDocument.defaultView || window;\n if (e.button === 0) {\n ownerWindow.addEventListener('mousemove', handleMove);\n ownerWindow.addEventListener('mouseup', handleMouseUp);\n handleDown(e as any);\n }\n }\n\n function handleMouseUp(this: Window) {\n this.removeEventListener('mousemove', handleMove);\n this.removeEventListener('mouseup', handleMouseUp);\n handleUp();\n }\n /* eslint-enable @typescript-eslint/no-use-before-define */\n\n return {\n onMouseDown: handleMouseDown,\n onTouchStart: handleTouchStart,\n };\n}\n\nexport const useGestureHandlers = (\n containerRef: MutableRefObject<HTMLElement | null> | undefined,\n onGesture: (e: GestureHandlersState) => void,\n options: GestureHandlerOptions = {}\n) => {\n const state = useRef({ ...initialGestureHandlersState });\n\n const set = (\n cb: (prevState: GestureHandlersState) => GestureHandlersState\n ) => {\n state.current = cb(state.current);\n onGesture && onGesture(state.current);\n\n return state.current;\n };\n\n const handlers = gestureHandlers(set, containerRef, options);\n\n return { state: state.current, handlers };\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useGestureHandlers.js","names":["useRef","getOwnerDocument","initialGestureHandlersState","target","x","xDelta","xDeltaPercent","xInitial","xPrev","xVelocity","y","yDelta","yDeltaPercent","yInitial","yPrev","yVelocity","startTime","down","scrollLocked","FRAMERATE_CONST","VELOCITY_DEPR_FACTOR","gestureHandlers","set","containerRef","options","arguments","length","undefined","ensureTargetIsContainer","minTouchDelta","handleUp","state","deltaTime","Date","now","calcVelocity","newState","handleDown","e","pageX","pageY","deltaSpace","prevVelocity","speed","depr","Math","min","handleMove","cancelable","preventDefault","getDeltaSum","currentPos","initialPos","prevPos","abs","current","width","offsetWidth","NaN","height","offsetHeight","handleTouchMove","touches","item","handleTouchStart","ownerDocument","currentTarget","ownerWindow","defaultView","window","addEventListener","passive","handleTouchEnd","removeEventListener","handleMouseDown","button","handleMouseUp","onMouseDown","onTouchStart","useGestureHandlers","onGesture","cb","handlers"],"sources":["../../../src/hooks/useGestureHandlers.ts"],"sourcesContent":["import type {\n MutableRefObject,\n MouseEvent as ReactMouseEvent,\n TouchEvent as ReactTouchEvent,\n} from 'react';\nimport { useRef } from 'react';\n\nimport { getOwnerDocument } from '../utils';\n\nexport interface GestureHandlersState {\n target: null | EventTarget;\n x: number;\n xDelta: number;\n xDeltaPercent: number;\n xInitial: number;\n xPrev: number;\n xVelocity: number;\n y: number;\n yDelta: number;\n yDeltaPercent: number;\n yInitial: number;\n yPrev: number;\n yVelocity: number;\n startTime: number;\n down: boolean;\n scrollLocked: boolean;\n}\n\ntype SetStateFunc<S> = (\n state: (prevState: Readonly<S>) => S,\n callback?: () => void\n) => void;\n\nexport interface GestureHandlersReturn {\n onMouseDown: (e: ReactMouseEvent<HTMLElement>) => void;\n onTouchStart: (e: ReactTouchEvent<HTMLElement>) => void;\n}\n\nexport interface GestureHandlerOptions {\n ensureTargetIsContainer?: boolean;\n minTouchDelta?: number;\n}\n\nexport const initialGestureHandlersState: GestureHandlersState = {\n target: null,\n x: 0,\n xDelta: 0,\n xDeltaPercent: 0,\n xInitial: 0,\n xPrev: 0,\n xVelocity: 0,\n y: 0,\n yDelta: 0,\n yDeltaPercent: 0,\n yInitial: 0,\n yPrev: 0,\n yVelocity: 0,\n startTime: 0,\n down: false,\n scrollLocked: false,\n};\n\nconst FRAMERATE_CONST = 1000 / 60; // 60 fps\nconst VELOCITY_DEPR_FACTOR = FRAMERATE_CONST * 2;\n\nexport function gestureHandlers(\n set: SetStateFunc<GestureHandlersState>,\n containerRef?: MutableRefObject<HTMLElement | null>,\n options: GestureHandlerOptions = {}\n): GestureHandlersReturn {\n const { ensureTargetIsContainer = false, minTouchDelta = 0 } = options;\n\n // Common handlers\n const handleUp = () => {\n set((state: GestureHandlersState) => {\n const deltaTime = Date.now() - state.startTime;\n const xDelta = state.x - state.xInitial;\n const yDelta = state.y - state.yInitial;\n const xVelocity = calcVelocity(xDelta, deltaTime, state.xVelocity);\n const yVelocity = calcVelocity(yDelta, deltaTime, state.yVelocity);\n const newState: GestureHandlersState = {\n ...state,\n xVelocity,\n yVelocity,\n target: null,\n down: false,\n };\n\n return newState;\n });\n };\n\n const handleDown = (e: MouseEvent) => {\n const { target, pageX, pageY } = e;\n\n set((state: GestureHandlersState) => {\n const newState = {\n ...state,\n target,\n x: pageX,\n xDelta: 0,\n xDeltaPercent: 0,\n xVelocity: 0,\n xInitial: pageX,\n xPrev: pageX,\n y: pageY,\n yDelta: 0,\n yDeltaPercent: 0,\n yVelocity: 0,\n yInitial: pageY,\n yPrev: pageY,\n startTime: Date.now(),\n down: true,\n scrollLocked: false,\n };\n\n return newState;\n });\n };\n\n function calcVelocity(\n deltaSpace: number,\n deltaTime: number,\n prevVelocity: number\n ) {\n if (deltaTime < 1) {\n deltaTime = 1;\n }\n const speed = deltaSpace / deltaTime;\n const depr = 0.5 + Math.min(deltaTime / VELOCITY_DEPR_FACTOR, 0.5);\n return speed * depr + prevVelocity * (1 - depr);\n }\n\n function handleMove(e: MouseEvent) {\n const { pageX, pageY } = e;\n if (e.cancelable) {\n // prevent drag & drop behaviour from browser\n e.preventDefault && e.preventDefault();\n }\n\n set((state: GestureHandlersState) => {\n function getDeltaSum(\n currentPos: number,\n initialPos: number,\n prevPos: number\n ): number {\n if (\n state.scrollLocked ||\n Math.abs(currentPos - initialPos) >= minTouchDelta\n ) {\n state.scrollLocked = true;\n return currentPos - prevPos;\n }\n return 0;\n }\n\n const target =\n (containerRef && containerRef.current) || (e as any).target;\n\n const deltaTime = Date.now() - state.startTime;\n\n const width = target ? target.offsetWidth : NaN;\n const xDelta = state.xDelta + getDeltaSum(pageX, state.xInitial, state.x);\n const xDeltaPercent = (xDelta * 100) / width;\n const xVelocity = calcVelocity(xDelta, deltaTime, state.xVelocity);\n\n const height = target ? target.offsetHeight : NaN;\n const yDelta = state.yDelta + getDeltaSum(pageY, state.yInitial, state.y);\n const yDeltaPercent = (yDelta * 100) / height;\n const yVelocity = calcVelocity(yDelta, deltaTime, state.yVelocity);\n\n const newState = {\n ...state,\n xDelta,\n xDeltaPercent,\n x: pageX,\n xPrev: state.x,\n xVelocity,\n yDelta,\n yDeltaPercent,\n y: pageY,\n yPrev: state.y,\n yVelocity,\n };\n\n return newState;\n });\n }\n\n // Touch handlers\n\n function handleTouchMove(e: TouchEvent) {\n if (e.cancelable) {\n // prevent drag & drop behaviour from browser\n e.preventDefault();\n }\n handleMove(e.touches.item(0) as any);\n }\n\n function handleTouchStart(e: ReactTouchEvent<HTMLElement>) {\n // making sure we're not dragging the element when more than one finger press the screen\n const { touches } = e;\n if (touches.length > 1) {\n return;\n }\n\n if (\n ensureTargetIsContainer &&\n containerRef &&\n e.target !== containerRef.current\n ) {\n return;\n }\n\n const ownerDocument = getOwnerDocument(e.currentTarget)!;\n const ownerWindow = ownerDocument.defaultView || window;\n ownerWindow.addEventListener('touchmove', handleTouchMove, {\n passive: false,\n });\n ownerWindow.addEventListener('touchend', handleTouchEnd);\n ownerWindow.addEventListener('touchcancel', handleTouchEnd);\n handleDown(e.touches.item(0) as any);\n }\n\n function handleTouchEnd(this: Window) {\n this.removeEventListener('touchmove', handleTouchMove);\n this.removeEventListener('touchend', handleTouchEnd);\n this.removeEventListener('touchcancel', handleTouchEnd);\n handleUp();\n }\n\n // Mouse handlers\n function handleMouseDown(e: ReactMouseEvent<HTMLElement>) {\n if (\n ensureTargetIsContainer &&\n containerRef &&\n e.target !== containerRef.current\n ) {\n return;\n }\n\n const ownerDocument = getOwnerDocument(e.currentTarget)!;\n const ownerWindow = ownerDocument.defaultView || window;\n if (e.button === 0) {\n ownerWindow.addEventListener('mousemove', handleMove);\n ownerWindow.addEventListener('mouseup', handleMouseUp);\n handleDown(e as any);\n }\n }\n\n function handleMouseUp(this: Window) {\n this.removeEventListener('mousemove', handleMove);\n this.removeEventListener('mouseup', handleMouseUp);\n handleUp();\n }\n\n return {\n onMouseDown: handleMouseDown,\n onTouchStart: handleTouchStart,\n };\n}\n\nexport const useGestureHandlers = (\n containerRef: MutableRefObject<HTMLElement | null> | undefined,\n onGesture: (e: GestureHandlersState) => void,\n options: GestureHandlerOptions = {}\n) => {\n const state = useRef({ ...initialGestureHandlersState });\n\n const set = (\n cb: (prevState: GestureHandlersState) => GestureHandlersState\n ) => {\n state.current = cb(state.current);\n onGesture && onGesture(state.current);\n\n return state.current;\n };\n\n const handlers = gestureHandlers(set, containerRef, options);\n\n return { state: state.current, handlers };\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,31 +1,23 @@
|
|
|
1
|
-
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
1
|
import { useRef, useState, useEffect } from 'react';
|
|
3
2
|
export function useMeasure(ref) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
var _useState = useState({
|
|
3
|
+
const ro = useRef(null);
|
|
4
|
+
const [bounds, setBounds] = useState({
|
|
7
5
|
left: 0,
|
|
8
6
|
top: 0,
|
|
9
7
|
width: 0,
|
|
10
8
|
height: 0
|
|
11
|
-
})
|
|
12
|
-
|
|
13
|
-
bounds = _useState2[0],
|
|
14
|
-
setBounds = _useState2[1];
|
|
15
|
-
|
|
16
|
-
useEffect(function () {
|
|
9
|
+
});
|
|
10
|
+
useEffect(() => {
|
|
17
11
|
if (ro.current === null) {
|
|
18
|
-
ro.current = new ResizeObserver(
|
|
19
|
-
|
|
12
|
+
ro.current = new ResizeObserver(entries => {
|
|
13
|
+
const entry = entries[0];
|
|
20
14
|
setBounds(entry.contentRect);
|
|
21
15
|
});
|
|
22
16
|
}
|
|
23
|
-
|
|
24
17
|
if (ref.current) {
|
|
25
18
|
ro.current.observe(ref.current);
|
|
26
19
|
}
|
|
27
|
-
|
|
28
|
-
return function () {
|
|
20
|
+
return () => {
|
|
29
21
|
if (ro.current) {
|
|
30
22
|
ro.current.disconnect();
|
|
31
23
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMeasure.js","names":["useRef","useState","useEffect","useMeasure","ref","ro","
|
|
1
|
+
{"version":3,"file":"useMeasure.js","names":["useRef","useState","useEffect","useMeasure","ref","ro","bounds","setBounds","left","top","width","height","current","ResizeObserver","entries","entry","contentRect","observe","disconnect"],"sources":["../../../src/hooks/useMeasure.ts"],"sourcesContent":["import type { MutableRefObject } from 'react';\nimport { useRef, useState, useEffect } from 'react';\n\nexport function useMeasure(ref: MutableRefObject<HTMLElement | null>) {\n const ro = useRef<ResizeObserver | null>(null);\n const [bounds, setBounds] = useState({\n left: 0,\n top: 0,\n width: 0,\n height: 0,\n });\n\n useEffect(() => {\n if (ro.current === null) {\n ro.current = new ResizeObserver((entries: any) => {\n const entry = entries[0];\n setBounds(entry.contentRect);\n });\n }\n\n if (ref.current) {\n ro.current.observe(ref.current);\n }\n\n return () => {\n if (ro.current) {\n ro.current.disconnect();\n }\n };\n }, [ref]);\n\n return bounds;\n}\n"],"mappings":"AACA,SAASA,MAAM,EAAEC,QAAQ,EAAEC,SAAS,QAAQ,OAAO;AAEnD,OAAO,SAASC,UAAUA,CAACC,GAAyC,EAAE;EACpE,MAAMC,EAAE,GAAGL,MAAM,CAAwB,IAAI,CAAC;EAC9C,MAAM,CAACM,MAAM,EAAEC,SAAS,CAAC,GAAGN,QAAQ,CAAC;IACnCO,IAAI,EAAE,CAAC;IACPC,GAAG,EAAE,CAAC;IACNC,KAAK,EAAE,CAAC;IACRC,MAAM,EAAE;EACV,CAAC,CAAC;EAEFT,SAAS,CAAC,MAAM;IACd,IAAIG,EAAE,CAACO,OAAO,KAAK,IAAI,EAAE;MACvBP,EAAE,CAACO,OAAO,GAAG,IAAIC,cAAc,CAAEC,OAAY,IAAK;QAChD,MAAMC,KAAK,GAAGD,OAAO,CAAC,CAAC,CAAC;QACxBP,SAAS,CAACQ,KAAK,CAACC,WAAW,CAAC;MAC9B,CAAC,CAAC;IACJ;IAEA,IAAIZ,GAAG,CAACQ,OAAO,EAAE;MACfP,EAAE,CAACO,OAAO,CAACK,OAAO,CAACb,GAAG,CAACQ,OAAO,CAAC;IACjC;IAEA,OAAO,MAAM;MACX,IAAIP,EAAE,CAACO,OAAO,EAAE;QACdP,EAAE,CAACO,OAAO,CAACM,UAAU,CAAC,CAAC;MACzB;IACF,CAAC;EACH,CAAC,EAAE,CAACd,GAAG,CAAC,CAAC;EAET,OAAOE,MAAM;AACf","ignoreList":[]}
|
|
@@ -1,22 +1,20 @@
|
|
|
1
1
|
import { useEffect, useCallback } from 'react';
|
|
2
2
|
export function useOnClickOutside(ref, handler) {
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
let active = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
4
|
+
const listener = useCallback(event => {
|
|
5
5
|
// Do nothing if clicking ref's element or descendent elements
|
|
6
6
|
if (!ref.current || ref.current.contains(event.target)) {
|
|
7
7
|
return;
|
|
8
8
|
}
|
|
9
|
-
|
|
10
9
|
handler && handler(event);
|
|
11
10
|
}, [ref, handler]);
|
|
12
|
-
useEffect(
|
|
11
|
+
useEffect(() => {
|
|
13
12
|
if (active) {
|
|
14
13
|
document.addEventListener('pointerup', listener);
|
|
15
|
-
return
|
|
14
|
+
return () => {
|
|
16
15
|
document.removeEventListener('pointerup', listener);
|
|
17
16
|
};
|
|
18
17
|
}
|
|
19
|
-
|
|
20
18
|
return;
|
|
21
19
|
}, [listener, active]);
|
|
22
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOnClickOutside.js","names":["useEffect","useCallback","useOnClickOutside","ref","handler","active","listener","event","current","contains","target","document","addEventListener","removeEventListener"],"sources":["../../../src/hooks/useOnClickOutside.ts"],"sourcesContent":["import type { RefObject } from 'react';\nimport { useEffect, useCallback } from 'react';\n\nexport function useOnClickOutside(\n ref: RefObject<any>,\n handler: (e: PointerEvent) => void,\n active = true\n) {\n const listener = useCallback(\n (event: PointerEvent) => {\n // Do nothing if clicking ref's element or descendent elements\n if (!ref.current || ref.current.contains(event.target)) {\n return;\n }\n\n handler && handler(event);\n },\n [ref, handler]\n );\n\n useEffect(() => {\n if (active) {\n document.addEventListener('pointerup', listener);\n\n return () => {\n document.removeEventListener('pointerup', listener);\n };\n }\n\n return;\n }, [listener, active]);\n}\n"],"mappings":"AACA,SAASA,
|
|
1
|
+
{"version":3,"file":"useOnClickOutside.js","names":["useEffect","useCallback","useOnClickOutside","ref","handler","active","arguments","length","undefined","listener","event","current","contains","target","document","addEventListener","removeEventListener"],"sources":["../../../src/hooks/useOnClickOutside.ts"],"sourcesContent":["import type { RefObject } from 'react';\nimport { useEffect, useCallback } from 'react';\n\nexport function useOnClickOutside(\n ref: RefObject<any>,\n handler: (e: PointerEvent) => void,\n active = true\n) {\n const listener = useCallback(\n (event: PointerEvent) => {\n // Do nothing if clicking ref's element or descendent elements\n if (!ref.current || ref.current.contains(event.target)) {\n return;\n }\n\n handler && handler(event);\n },\n [ref, handler]\n );\n\n useEffect(() => {\n if (active) {\n document.addEventListener('pointerup', listener);\n\n return () => {\n document.removeEventListener('pointerup', listener);\n };\n }\n\n return;\n }, [listener, active]);\n}\n"],"mappings":"AACA,SAASA,SAAS,EAAEC,WAAW,QAAQ,OAAO;AAE9C,OAAO,SAASC,iBAAiBA,CAC/BC,GAAmB,EACnBC,OAAkC,EAElC;EAAA,IADAC,MAAM,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;EAEb,MAAMG,QAAQ,GAAGR,WAAW,CACzBS,KAAmB,IAAK;IACvB;IACA,IAAI,CAACP,GAAG,CAACQ,OAAO,IAAIR,GAAG,CAACQ,OAAO,CAACC,QAAQ,CAACF,KAAK,CAACG,MAAM,CAAC,EAAE;MACtD;IACF;IAEAT,OAAO,IAAIA,OAAO,CAACM,KAAK,CAAC;EAC3B,CAAC,EACD,CAACP,GAAG,EAAEC,OAAO,CACf,CAAC;EAEDJ,SAAS,CAAC,MAAM;IACd,IAAIK,MAAM,EAAE;MACVS,QAAQ,CAACC,gBAAgB,CAAC,WAAW,EAAEN,QAAQ,CAAC;MAEhD,OAAO,MAAM;QACXK,QAAQ,CAACE,mBAAmB,CAAC,WAAW,EAAEP,QAAQ,CAAC;MACrD,CAAC;IACH;IAEA;EACF,CAAC,EAAE,CAACA,QAAQ,EAAEJ,MAAM,CAAC,CAAC;AACxB","ignoreList":[]}
|
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
import { useEffect } from 'react';
|
|
2
2
|
export function useOnKeyDown(ownerWindow, handler) {
|
|
3
|
-
|
|
4
|
-
useEffect(
|
|
3
|
+
let active = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
|
|
4
|
+
useEffect(() => {
|
|
5
5
|
if (active) {
|
|
6
6
|
ownerWindow.addEventListener('keydown', handler);
|
|
7
|
-
return
|
|
7
|
+
return () => {
|
|
8
8
|
ownerWindow.removeEventListener('keydown', handler);
|
|
9
9
|
};
|
|
10
10
|
}
|
|
11
|
-
|
|
12
11
|
return;
|
|
13
12
|
}, [ownerWindow, active, handler]);
|
|
14
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOnKeyDown.js","names":["useEffect","useOnKeyDown","ownerWindow","handler","active","addEventListener","removeEventListener"],"sources":["../../../src/hooks/useOnKeyDown.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nexport function useOnKeyDown(\n ownerWindow: Window,\n handler: (e: KeyboardEvent) => void,\n active = true\n) {\n useEffect(() => {\n if (active) {\n ownerWindow.addEventListener('keydown', handler);\n\n return () => {\n ownerWindow.removeEventListener('keydown', handler);\n };\n }\n\n return;\n }, [ownerWindow, active, handler]);\n}\n"],"mappings":"AAAA,SAASA,
|
|
1
|
+
{"version":3,"file":"useOnKeyDown.js","names":["useEffect","useOnKeyDown","ownerWindow","handler","active","arguments","length","undefined","addEventListener","removeEventListener"],"sources":["../../../src/hooks/useOnKeyDown.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nexport function useOnKeyDown(\n ownerWindow: Window,\n handler: (e: KeyboardEvent) => void,\n active = true\n) {\n useEffect(() => {\n if (active) {\n ownerWindow.addEventListener('keydown', handler);\n\n return () => {\n ownerWindow.removeEventListener('keydown', handler);\n };\n }\n\n return;\n }, [ownerWindow, active, handler]);\n}\n"],"mappings":"AAAA,SAASA,SAAS,QAAQ,OAAO;AAEjC,OAAO,SAASC,YAAYA,CAC1BC,WAAmB,EACnBC,OAAmC,EAEnC;EAAA,IADAC,MAAM,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;EAEbL,SAAS,CAAC,MAAM;IACd,IAAII,MAAM,EAAE;MACVF,WAAW,CAACM,gBAAgB,CAAC,SAAS,EAAEL,OAAO,CAAC;MAEhD,OAAO,MAAM;QACXD,WAAW,CAACO,mBAAmB,CAAC,SAAS,EAAEN,OAAO,CAAC;MACrD,CAAC;IACH;IAEA;EACF,CAAC,EAAE,CAACD,WAAW,EAAEE,MAAM,EAAED,OAAO,CAAC,CAAC;AACpC","ignoreList":[]}
|
|
@@ -19,6 +19,6 @@ export interface StateMachineAction<STypes, ATypes> {
|
|
|
19
19
|
type: ATypes;
|
|
20
20
|
nextState: STypes;
|
|
21
21
|
}
|
|
22
|
-
|
|
22
|
+
type TransitionType<ATypes extends string> = (action: ATypes, payload: any) => void;
|
|
23
23
|
export declare function useReducerMachine<S extends StateMachineState<STypes, ATypes>, A extends StateMachineAction<STypes, ATypes>, STypes extends string, ATypes extends string>(chart: StateChart<STypes, ATypes>, reducer: Reducer<S, A>, initialData: S): [STypes, Omit<S, 'state'>, TransitionType<ATypes>];
|
|
24
24
|
export {};
|
|
@@ -1,39 +1,28 @@
|
|
|
1
|
-
import _extends from "@babel/runtime/helpers/extends";
|
|
2
|
-
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
|
-
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
4
|
-
var _excluded = ["state"];
|
|
5
1
|
import { useReducer } from 'react';
|
|
6
2
|
// This manages transitions between states with a built in reducer to manage
|
|
7
3
|
// the data that goes with those transitions.
|
|
8
4
|
export function useReducerMachine(chart, reducer, initialData) {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
var transition = function transition(action) {
|
|
18
|
-
var payload = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
19
|
-
var currentState = chart.states[state];
|
|
20
|
-
|
|
5
|
+
const [reducerState, dispatch] = useReducer(reducer, initialData);
|
|
6
|
+
const {
|
|
7
|
+
state,
|
|
8
|
+
...data
|
|
9
|
+
} = reducerState;
|
|
10
|
+
const transition = function (action) {
|
|
11
|
+
let payload = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
12
|
+
const currentState = chart.states[state];
|
|
21
13
|
if (!currentState) {
|
|
22
|
-
throw new Error(
|
|
14
|
+
throw new Error(`Unknown currentState "${state}"`);
|
|
23
15
|
}
|
|
24
|
-
|
|
25
|
-
var nextState = currentState.on[action];
|
|
26
|
-
|
|
16
|
+
const nextState = currentState.on[action];
|
|
27
17
|
if (!nextState) {
|
|
28
|
-
throw new Error(
|
|
18
|
+
throw new Error(`Unknown action "${action}" for state "${state}"`);
|
|
29
19
|
}
|
|
30
|
-
|
|
31
|
-
dispatch(_extends({
|
|
20
|
+
dispatch({
|
|
32
21
|
type: action,
|
|
33
|
-
nextState
|
|
34
|
-
|
|
22
|
+
nextState,
|
|
23
|
+
...payload
|
|
24
|
+
});
|
|
35
25
|
};
|
|
36
|
-
|
|
37
26
|
return [state, data, transition];
|
|
38
27
|
}
|
|
39
28
|
//# sourceMappingURL=useReducerMachine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useReducerMachine.js","names":["useReducer","useReducerMachine","chart","reducer","initialData","reducerState","dispatch","state","data","transition","action","payload","currentState","states","Error","nextState","on","type"],"sources":["../../../src/hooks/useReducerMachine.ts"],"sourcesContent":["import type { Reducer } from 'react';\nimport { useReducer } from 'react';\n\nexport interface StateChart<STypes extends string, ATypes extends string> {\n initial: STypes;\n states: {\n [state in STypes]?: {\n enter?: (prevState: STypes, payload: any) => void;\n leave?: (nextState: STypes, payload: any) => void;\n on: { [action in ATypes]?: STypes };\n };\n };\n}\n\nexport interface StateMachineState<STypes, ATypes> {\n state: STypes;\n lastActionType: ATypes;\n}\n\nexport interface StateMachineAction<STypes, ATypes> {\n type: ATypes;\n nextState: STypes;\n}\n\ntype TransitionType<ATypes extends string> = (\n action: ATypes,\n payload: any\n) => void;\n\n// This manages transitions between states with a built in reducer to manage\n// the data that goes with those transitions.\nexport function useReducerMachine<\n S extends StateMachineState<STypes, ATypes>,\n A extends StateMachineAction<STypes, ATypes>,\n STypes extends string,\n ATypes extends string\n>(\n chart: StateChart<STypes, ATypes>,\n reducer: Reducer<S, A>,\n initialData: S\n): [STypes, Omit<S, 'state'>, TransitionType<ATypes>] {\n const [reducerState, dispatch] = useReducer(reducer, initialData);\n const { state, ...data } = reducerState;\n\n const transition: TransitionType<ATypes> = (action, payload = {}) => {\n const currentState = chart.states[state];\n if (!currentState) {\n throw new Error(`Unknown currentState \"${state}\"`);\n }\n\n const nextState: STypes | undefined = currentState.on[action];\n if (!nextState) {\n throw new Error(`Unknown action \"${action}\" for state \"${state}\"`);\n }\n\n dispatch({ type: action, nextState, ...payload } as any);\n };\n\n return [state, data, transition];\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useReducerMachine.js","names":["useReducer","useReducerMachine","chart","reducer","initialData","reducerState","dispatch","state","data","transition","action","payload","arguments","length","undefined","currentState","states","Error","nextState","on","type"],"sources":["../../../src/hooks/useReducerMachine.ts"],"sourcesContent":["import type { Reducer } from 'react';\nimport { useReducer } from 'react';\n\nexport interface StateChart<STypes extends string, ATypes extends string> {\n initial: STypes;\n states: {\n [state in STypes]?: {\n enter?: (prevState: STypes, payload: any) => void;\n leave?: (nextState: STypes, payload: any) => void;\n on: { [action in ATypes]?: STypes };\n };\n };\n}\n\nexport interface StateMachineState<STypes, ATypes> {\n state: STypes;\n lastActionType: ATypes;\n}\n\nexport interface StateMachineAction<STypes, ATypes> {\n type: ATypes;\n nextState: STypes;\n}\n\ntype TransitionType<ATypes extends string> = (\n action: ATypes,\n payload: any\n) => void;\n\n// This manages transitions between states with a built in reducer to manage\n// the data that goes with those transitions.\nexport function useReducerMachine<\n S extends StateMachineState<STypes, ATypes>,\n A extends StateMachineAction<STypes, ATypes>,\n STypes extends string,\n ATypes extends string\n>(\n chart: StateChart<STypes, ATypes>,\n reducer: Reducer<S, A>,\n initialData: S\n): [STypes, Omit<S, 'state'>, TransitionType<ATypes>] {\n const [reducerState, dispatch] = useReducer(reducer, initialData);\n const { state, ...data } = reducerState;\n\n const transition: TransitionType<ATypes> = (action, payload = {}) => {\n const currentState = chart.states[state];\n if (!currentState) {\n throw new Error(`Unknown currentState \"${state}\"`);\n }\n\n const nextState: STypes | undefined = currentState.on[action];\n if (!nextState) {\n throw new Error(`Unknown action \"${action}\" for state \"${state}\"`);\n }\n\n dispatch({ type: action, nextState, ...payload } as any);\n };\n\n return [state, data, transition];\n}\n"],"mappings":"AACA,SAASA,UAAU,QAAQ,OAAO;AA4BlC;AACA;AACA,OAAO,SAASC,iBAAiBA,CAM/BC,KAAiC,EACjCC,OAAsB,EACtBC,WAAc,EACsC;EACpD,MAAM,CAACC,YAAY,EAAEC,QAAQ,CAAC,GAAGN,UAAU,CAACG,OAAO,EAAEC,WAAW,CAAC;EACjE,MAAM;IAAEG,KAAK;IAAE,GAAGC;EAAK,CAAC,GAAGH,YAAY;EAEvC,MAAMI,UAAkC,GAAG,SAAAA,CAACC,MAAM,EAAmB;IAAA,IAAjBC,OAAO,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,CAAC,CAAC;IAC9D,MAAMG,YAAY,GAAGb,KAAK,CAACc,MAAM,CAACT,KAAK,CAAC;IACxC,IAAI,CAACQ,YAAY,EAAE;MACjB,MAAM,IAAIE,KAAK,CAAC,yBAAyBV,KAAK,GAAG,CAAC;IACpD;IAEA,MAAMW,SAA6B,GAAGH,YAAY,CAACI,EAAE,CAACT,MAAM,CAAC;IAC7D,IAAI,CAACQ,SAAS,EAAE;MACd,MAAM,IAAID,KAAK,CAAC,mBAAmBP,MAAM,gBAAgBH,KAAK,GAAG,CAAC;IACpE;IAEAD,QAAQ,CAAC;MAAEc,IAAI,EAAEV,MAAM;MAAEQ,SAAS;MAAE,GAAGP;IAAQ,CAAQ,CAAC;EAC1D,CAAC;EAED,OAAO,CAACJ,KAAK,EAAEC,IAAI,EAAEC,UAAU,CAAC;AAClC","ignoreList":[]}
|
|
@@ -1,29 +1,24 @@
|
|
|
1
1
|
import { useEffect } from 'react';
|
|
2
2
|
import { getOwnerDocument } from '../utils';
|
|
3
|
-
|
|
3
|
+
let scrollBodyCount = 0;
|
|
4
4
|
export function useRemoveBodyScroll(open, elementRef) {
|
|
5
|
-
useEffect(
|
|
5
|
+
useEffect(() => {
|
|
6
6
|
if (open && elementRef.current) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
scrollBodyCount += 1; // calculate scrollbar width if mounting the first scroll lock
|
|
11
|
-
|
|
12
|
-
var scrollBarWidth = 0;
|
|
7
|
+
const ownerDocument = getOwnerDocument(elementRef.current);
|
|
8
|
+
const ownerWindow = ownerDocument.defaultView || window;
|
|
9
|
+
scrollBodyCount += 1;
|
|
13
10
|
|
|
11
|
+
// calculate scrollbar width if mounting the first scroll lock
|
|
12
|
+
let scrollBarWidth = 0;
|
|
14
13
|
if (scrollBodyCount === 1) {
|
|
15
14
|
scrollBarWidth = ownerWindow.innerWidth - ownerDocument.body.clientWidth;
|
|
16
15
|
}
|
|
17
|
-
|
|
18
16
|
ownerDocument.body.style.overflow = 'hidden';
|
|
19
|
-
|
|
20
17
|
if (scrollBarWidth > 0) {
|
|
21
|
-
ownerDocument.body.style.marginRight =
|
|
18
|
+
ownerDocument.body.style.marginRight = `${scrollBarWidth}px`;
|
|
22
19
|
}
|
|
23
|
-
|
|
24
|
-
return function () {
|
|
20
|
+
return () => {
|
|
25
21
|
scrollBodyCount -= 1;
|
|
26
|
-
|
|
27
22
|
if (scrollBodyCount === 0) {
|
|
28
23
|
ownerDocument.body.style.overflow = '';
|
|
29
24
|
ownerDocument.body.style.marginRight = '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useRemoveBodyScroll.js","names":["useEffect","getOwnerDocument","scrollBodyCount","useRemoveBodyScroll","open","elementRef","current","ownerDocument","ownerWindow","defaultView","window","scrollBarWidth","innerWidth","body","clientWidth","style","overflow","marginRight"],"sources":["../../../src/hooks/useRemoveBodyScroll.ts"],"sourcesContent":["import type { RefObject } from 'react';\nimport { useEffect } from 'react';\n\nimport { getOwnerDocument } from '../utils';\n\nlet scrollBodyCount = 0;\nexport function useRemoveBodyScroll(\n open: boolean,\n elementRef: RefObject<HTMLElement | null>\n) {\n useEffect(() => {\n if (open && elementRef.current) {\n
|
|
1
|
+
{"version":3,"file":"useRemoveBodyScroll.js","names":["useEffect","getOwnerDocument","scrollBodyCount","useRemoveBodyScroll","open","elementRef","current","ownerDocument","ownerWindow","defaultView","window","scrollBarWidth","innerWidth","body","clientWidth","style","overflow","marginRight"],"sources":["../../../src/hooks/useRemoveBodyScroll.ts"],"sourcesContent":["import type { RefObject } from 'react';\nimport { useEffect } from 'react';\n\nimport { getOwnerDocument } from '../utils';\n\nlet scrollBodyCount = 0;\nexport function useRemoveBodyScroll(\n open: boolean,\n elementRef: RefObject<HTMLElement | null>\n) {\n useEffect(() => {\n if (open && elementRef.current) {\n const ownerDocument = getOwnerDocument(elementRef.current)!;\n const ownerWindow = ownerDocument.defaultView || window;\n scrollBodyCount += 1;\n\n // calculate scrollbar width if mounting the first scroll lock\n let scrollBarWidth = 0;\n if (scrollBodyCount === 1) {\n scrollBarWidth =\n ownerWindow.innerWidth - ownerDocument.body.clientWidth;\n }\n\n ownerDocument.body.style.overflow = 'hidden';\n if (scrollBarWidth > 0) {\n ownerDocument.body.style.marginRight = `${scrollBarWidth}px`;\n }\n\n return () => {\n scrollBodyCount -= 1;\n if (scrollBodyCount === 0) {\n ownerDocument.body.style.overflow = '';\n ownerDocument.body.style.marginRight = '';\n }\n };\n }\n }, [elementRef, open]);\n}\n"],"mappings":"AACA,SAASA,SAAS,QAAQ,OAAO;AAEjC,SAASC,gBAAgB,QAAQ,UAAU;AAE3C,IAAIC,eAAe,GAAG,CAAC;AACvB,OAAO,SAASC,mBAAmBA,CACjCC,IAAa,EACbC,UAAyC,EACzC;EACAL,SAAS,CAAC,MAAM;IACd,IAAII,IAAI,IAAIC,UAAU,CAACC,OAAO,EAAE;MAC9B,MAAMC,aAAa,GAAGN,gBAAgB,CAACI,UAAU,CAACC,OAAO,CAAE;MAC3D,MAAME,WAAW,GAAGD,aAAa,CAACE,WAAW,IAAIC,MAAM;MACvDR,eAAe,IAAI,CAAC;;MAEpB;MACA,IAAIS,cAAc,GAAG,CAAC;MACtB,IAAIT,eAAe,KAAK,CAAC,EAAE;QACzBS,cAAc,GACZH,WAAW,CAACI,UAAU,GAAGL,aAAa,CAACM,IAAI,CAACC,WAAW;MAC3D;MAEAP,aAAa,CAACM,IAAI,CAACE,KAAK,CAACC,QAAQ,GAAG,QAAQ;MAC5C,IAAIL,cAAc,GAAG,CAAC,EAAE;QACtBJ,aAAa,CAACM,IAAI,CAACE,KAAK,CAACE,WAAW,GAAG,GAAGN,cAAc,IAAI;MAC9D;MAEA,OAAO,MAAM;QACXT,eAAe,IAAI,CAAC;QACpB,IAAIA,eAAe,KAAK,CAAC,EAAE;UACzBK,aAAa,CAACM,IAAI,CAACE,KAAK,CAACC,QAAQ,GAAG,EAAE;UACtCT,aAAa,CAACM,IAAI,CAACE,KAAK,CAACE,WAAW,GAAG,EAAE;QAC3C;MACF,CAAC;IACH;EACF,CAAC,EAAE,CAACZ,UAAU,EAAED,IAAI,CAAC,CAAC;AACxB","ignoreList":[]}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { MutableRefObject } from 'react';
|
|
2
|
-
export
|
|
2
|
+
export type ScopeMatcherFn = (nodeType: string, props: {
|
|
3
3
|
[key: string]: string;
|
|
4
4
|
}, instance: Element) => boolean;
|
|
5
|
-
export
|
|
5
|
+
export type Scope<T extends HTMLElement> = MutableRefObject<{
|
|
6
6
|
queryAllNodes: (matcherFn: ScopeMatcherFn) => T[];
|
|
7
7
|
}>;
|
|
8
8
|
export declare function getScope<T extends HTMLElement, R extends HTMLElement>(rootRef: MutableRefObject<R | undefined | null>): {
|
|
@@ -1,34 +1,32 @@
|
|
|
1
1
|
import { useRef } from 'react';
|
|
2
2
|
export function getScope(rootRef) {
|
|
3
|
-
|
|
3
|
+
const queryAllNodes = matcherFn => {
|
|
4
4
|
if (!rootRef.current) {
|
|
5
5
|
return [];
|
|
6
6
|
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
for (
|
|
15
|
-
|
|
7
|
+
const allNodes = rootRef.current.querySelectorAll('*');
|
|
8
|
+
const filtered = [];
|
|
9
|
+
allNodes.forEach(node => {
|
|
10
|
+
const props = {};
|
|
11
|
+
const {
|
|
12
|
+
attributes
|
|
13
|
+
} = node;
|
|
14
|
+
for (let i = 0; i < attributes.length; i++) {
|
|
15
|
+
const attr = attributes[i];
|
|
16
16
|
props[attr.name] = attr.value;
|
|
17
17
|
}
|
|
18
|
-
|
|
19
18
|
if (matcherFn(node.tagName.toLowerCase(), props, node)) {
|
|
20
19
|
filtered.push(node);
|
|
21
20
|
}
|
|
22
21
|
});
|
|
23
22
|
return filtered;
|
|
24
23
|
};
|
|
25
|
-
|
|
26
24
|
return {
|
|
27
|
-
queryAllNodes
|
|
25
|
+
queryAllNodes
|
|
28
26
|
};
|
|
29
27
|
}
|
|
30
28
|
export function useScope(rootRef) {
|
|
31
|
-
|
|
29
|
+
const scope = useRef(getScope(rootRef));
|
|
32
30
|
return scope;
|
|
33
31
|
}
|
|
34
32
|
//# sourceMappingURL=useScope.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useScope.js","names":["useRef","getScope","rootRef","queryAllNodes","matcherFn","current","allNodes","querySelectorAll","filtered","forEach","node","props","attributes","i","length","attr","name","value","tagName","toLowerCase","push","useScope","scope"],"sources":["../../../src/hooks/useScope.ts"],"sourcesContent":["import type { MutableRefObject } from 'react';\nimport { useRef } from 'react';\n\nexport type ScopeMatcherFn = (\n nodeType: string,\n props: {\n [key: string]: string;\n },\n instance: Element\n) => boolean;\n\nexport type Scope<T extends HTMLElement> = MutableRefObject<{\n queryAllNodes: (matcherFn: ScopeMatcherFn) => T[];\n}>;\n\nexport function getScope<T extends HTMLElement, R extends HTMLElement>(\n rootRef: MutableRefObject<R | undefined | null>\n) {\n const queryAllNodes = (matcherFn: ScopeMatcherFn) => {\n if (!rootRef.current) {\n return [];\n }\n\n const allNodes = rootRef.current.querySelectorAll('*');\n\n const filtered: T[] = [];\n allNodes.forEach((node) => {\n const props = {};\n const { attributes } = node;\n for (let i = 0; i < attributes.length; i++) {\n const attr = attributes[i];\n props[attr.name] = attr.value;\n }\n\n if (matcherFn(node.tagName.toLowerCase(), props, node)) {\n filtered.push(node as T);\n }\n });\n\n return filtered;\n };\n\n return { queryAllNodes };\n}\n\nexport function useScope<T extends HTMLElement, R extends HTMLElement>(\n rootRef: MutableRefObject<R | undefined | null>\n): Scope<T> {\n const scope: Scope<T> = useRef(getScope(rootRef));\n\n return scope;\n}\n"],"mappings":"AACA,SAASA,
|
|
1
|
+
{"version":3,"file":"useScope.js","names":["useRef","getScope","rootRef","queryAllNodes","matcherFn","current","allNodes","querySelectorAll","filtered","forEach","node","props","attributes","i","length","attr","name","value","tagName","toLowerCase","push","useScope","scope"],"sources":["../../../src/hooks/useScope.ts"],"sourcesContent":["import type { MutableRefObject } from 'react';\nimport { useRef } from 'react';\n\nexport type ScopeMatcherFn = (\n nodeType: string,\n props: {\n [key: string]: string;\n },\n instance: Element\n) => boolean;\n\nexport type Scope<T extends HTMLElement> = MutableRefObject<{\n queryAllNodes: (matcherFn: ScopeMatcherFn) => T[];\n}>;\n\nexport function getScope<T extends HTMLElement, R extends HTMLElement>(\n rootRef: MutableRefObject<R | undefined | null>\n) {\n const queryAllNodes = (matcherFn: ScopeMatcherFn) => {\n if (!rootRef.current) {\n return [];\n }\n\n const allNodes = rootRef.current.querySelectorAll('*');\n\n const filtered: T[] = [];\n allNodes.forEach((node) => {\n const props: Record<string, any> = {};\n const { attributes } = node;\n for (let i = 0; i < attributes.length; i++) {\n const attr = attributes[i];\n props[attr.name] = attr.value;\n }\n\n if (matcherFn(node.tagName.toLowerCase(), props, node)) {\n filtered.push(node as T);\n }\n });\n\n return filtered;\n };\n\n return { queryAllNodes };\n}\n\nexport function useScope<T extends HTMLElement, R extends HTMLElement>(\n rootRef: MutableRefObject<R | undefined | null>\n): Scope<T> {\n const scope: Scope<T> = useRef(getScope(rootRef));\n\n return scope;\n}\n"],"mappings":"AACA,SAASA,MAAM,QAAQ,OAAO;AAc9B,OAAO,SAASC,QAAQA,CACtBC,OAA+C,EAC/C;EACA,MAAMC,aAAa,GAAIC,SAAyB,IAAK;IACnD,IAAI,CAACF,OAAO,CAACG,OAAO,EAAE;MACpB,OAAO,EAAE;IACX;IAEA,MAAMC,QAAQ,GAAGJ,OAAO,CAACG,OAAO,CAACE,gBAAgB,CAAC,GAAG,CAAC;IAEtD,MAAMC,QAAa,GAAG,EAAE;IACxBF,QAAQ,CAACG,OAAO,CAAEC,IAAI,IAAK;MACzB,MAAMC,KAA0B,GAAG,CAAC,CAAC;MACrC,MAAM;QAAEC;MAAW,CAAC,GAAGF,IAAI;MAC3B,KAAK,IAAIG,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,UAAU,CAACE,MAAM,EAAED,CAAC,EAAE,EAAE;QAC1C,MAAME,IAAI,GAAGH,UAAU,CAACC,CAAC,CAAC;QAC1BF,KAAK,CAACI,IAAI,CAACC,IAAI,CAAC,GAAGD,IAAI,CAACE,KAAK;MAC/B;MAEA,IAAIb,SAAS,CAACM,IAAI,CAACQ,OAAO,CAACC,WAAW,CAAC,CAAC,EAAER,KAAK,EAAED,IAAI,CAAC,EAAE;QACtDF,QAAQ,CAACY,IAAI,CAACV,IAAS,CAAC;MAC1B;IACF,CAAC,CAAC;IAEF,OAAOF,QAAQ;EACjB,CAAC;EAED,OAAO;IAAEL;EAAc,CAAC;AAC1B;AAEA,OAAO,SAASkB,QAAQA,CACtBnB,OAA+C,EACrC;EACV,MAAMoB,KAAe,GAAGtB,MAAM,CAACC,QAAQ,CAACC,OAAO,CAAC,CAAC;EAEjD,OAAOoB,KAAK;AACd","ignoreList":[]}
|
|
@@ -1,18 +1,13 @@
|
|
|
1
|
-
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
2
1
|
import { useState, useEffect, useRef } from 'react';
|
|
3
2
|
export function useThrottle(value, limit) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
var lastRan = useRef(Date.now());
|
|
10
|
-
useEffect(function () {
|
|
11
|
-
var handler = setTimeout(function () {
|
|
3
|
+
const [throttledValue, setThrottledValue] = useState(value);
|
|
4
|
+
const lastRan = useRef(Date.now());
|
|
5
|
+
useEffect(() => {
|
|
6
|
+
const handler = setTimeout(() => {
|
|
12
7
|
setThrottledValue(value);
|
|
13
8
|
lastRan.current = Date.now();
|
|
14
9
|
}, limit - (Date.now() - lastRan.current));
|
|
15
|
-
return
|
|
10
|
+
return () => {
|
|
16
11
|
clearTimeout(handler);
|
|
17
12
|
};
|
|
18
13
|
}, [value, limit]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useThrottle.js","names":["useState","useEffect","useRef","useThrottle","value","limit","throttledValue","setThrottledValue","lastRan","Date","now","handler","setTimeout","current","clearTimeout"],"sources":["../../../src/hooks/useThrottle.ts"],"sourcesContent":["import { useState, useEffect, useRef } from 'react';\n\nexport function useThrottle<T>(value: T, limit: number) {\n const [throttledValue, setThrottledValue] = useState(value);\n const lastRan = useRef(Date.now());\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setThrottledValue(value);\n lastRan.current = Date.now();\n }, limit - (Date.now() - lastRan.current));\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, limit]);\n\n return throttledValue;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"useThrottle.js","names":["useState","useEffect","useRef","useThrottle","value","limit","throttledValue","setThrottledValue","lastRan","Date","now","handler","setTimeout","current","clearTimeout"],"sources":["../../../src/hooks/useThrottle.ts"],"sourcesContent":["import { useState, useEffect, useRef } from 'react';\n\nexport function useThrottle<T>(value: T, limit: number) {\n const [throttledValue, setThrottledValue] = useState(value);\n const lastRan = useRef(Date.now());\n\n useEffect(() => {\n const handler = setTimeout(() => {\n setThrottledValue(value);\n lastRan.current = Date.now();\n }, limit - (Date.now() - lastRan.current));\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, limit]);\n\n return throttledValue;\n}\n"],"mappings":"AAAA,SAASA,QAAQ,EAAEC,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAEnD,OAAO,SAASC,WAAWA,CAAIC,KAAQ,EAAEC,KAAa,EAAE;EACtD,MAAM,CAACC,cAAc,EAAEC,iBAAiB,CAAC,GAAGP,QAAQ,CAACI,KAAK,CAAC;EAC3D,MAAMI,OAAO,GAAGN,MAAM,CAACO,IAAI,CAACC,GAAG,CAAC,CAAC,CAAC;EAElCT,SAAS,CAAC,MAAM;IACd,MAAMU,OAAO,GAAGC,UAAU,CAAC,MAAM;MAC/BL,iBAAiB,CAACH,KAAK,CAAC;MACxBI,OAAO,CAACK,OAAO,GAAGJ,IAAI,CAACC,GAAG,CAAC,CAAC;IAC9B,CAAC,EAAEL,KAAK,IAAII,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGF,OAAO,CAACK,OAAO,CAAC,CAAC;IAE1C,OAAO,MAAM;MACXC,YAAY,CAACH,OAAO,CAAC;IACvB,CAAC;EACH,CAAC,EAAE,CAACP,KAAK,EAAEC,KAAK,CAAC,CAAC;EAElB,OAAOC,cAAc;AACvB","ignoreList":[]}
|
package/build/esm/index.js
CHANGED
|
@@ -11,9 +11,11 @@ export * from './RadioButton';
|
|
|
11
11
|
export * from './Slider';
|
|
12
12
|
export * from './Spinner';
|
|
13
13
|
export * from './Tabs';
|
|
14
|
-
export * from './Tooltip';
|
|
14
|
+
export * from './Tooltip';
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
// General React utilities
|
|
17
|
+
export * from './utils';
|
|
17
18
|
|
|
19
|
+
// Hooks
|
|
18
20
|
export * from './hooks';
|
|
19
21
|
//# sourceMappingURL=index.js.map
|
package/build/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["// Components\nexport * from './Accordion';\nexport * from './CheckBox';\nexport * from './ComboBox';\nexport * from './FocusLock';\nexport * from './Menu';\nexport * from './Modal';\nexport * from './Popper';\nexport * from './Portal';\nexport * from './RadioButton';\nexport * from './Slider';\nexport * from './Spinner';\nexport * from './Tabs';\nexport * from './Tooltip';\n\n// General React utilities\nexport * from './utils';\n\n// Hooks\nexport * from './hooks';\n"],"mappings":"AAAA;AACA,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/index.ts"],"sourcesContent":["// Components\nexport * from './Accordion';\nexport * from './CheckBox';\nexport * from './ComboBox';\nexport * from './FocusLock';\nexport * from './Menu';\nexport * from './Modal';\nexport * from './Popper';\nexport * from './Portal';\nexport * from './RadioButton';\nexport * from './Slider';\nexport * from './Spinner';\nexport * from './Tabs';\nexport * from './Tooltip';\n\n// General React utilities\nexport * from './utils';\n\n// Hooks\nexport * from './hooks';\n"],"mappings":"AAAA;AACA,cAAc,aAAa;AAC3B,cAAc,YAAY;AAC1B,cAAc,YAAY;AAC1B,cAAc,aAAa;AAC3B,cAAc,QAAQ;AACtB,cAAc,SAAS;AACvB,cAAc,UAAU;AACxB,cAAc,UAAU;AACxB,cAAc,eAAe;AAC7B,cAAc,UAAU;AACxB,cAAc,WAAW;AACzB,cAAc,QAAQ;AACtB,cAAc,WAAW;;AAEzB;AACA,cAAc,SAAS;;AAEvB;AACA,cAAc,SAAS","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"styles.d.js","names":[],"sources":["../../src/styles.d.ts"],"sourcesContent":["declare module '*.css';\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
export function assignRef(ref, value) {
|
|
2
2
|
if (ref == null) return;
|
|
3
|
-
|
|
4
3
|
if (typeof ref === 'function') {
|
|
5
4
|
ref(value);
|
|
6
5
|
} else {
|
|
7
6
|
try {
|
|
8
7
|
ref.current = value;
|
|
9
8
|
} catch (error) {
|
|
10
|
-
throw new Error(
|
|
9
|
+
throw new Error(`Cannot assign value "${value}" to ref "${ref}"`);
|
|
11
10
|
}
|
|
12
11
|
}
|
|
13
12
|
}
|
|
@@ -15,9 +14,8 @@ export function assignMultipleRefs() {
|
|
|
15
14
|
for (var _len = arguments.length, refs = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
16
15
|
refs[_key] = arguments[_key];
|
|
17
16
|
}
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
refs.forEach(function (ref) {
|
|
17
|
+
return node => {
|
|
18
|
+
refs.forEach(ref => {
|
|
21
19
|
assignRef(ref, node);
|
|
22
20
|
});
|
|
23
21
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assign-ref.js","names":["assignRef","ref","value","current","error","Error","assignMultipleRefs","refs","node","forEach"],"sources":["../../../src/utils/assign-ref.ts"],"sourcesContent":["import type { MutableRefObject, RefCallback } from 'react';\n\nexport function assignRef<T>(\n ref: MutableRefObject<T> | RefCallback<T> | null | undefined,\n value: T\n) {\n if (ref == null) return;\n if (typeof ref === 'function') {\n ref(value);\n } else {\n try {\n ref.current = value;\n } catch (error) {\n throw new Error(`Cannot assign value \"${value}\" to ref \"${ref}\"`);\n }\n }\n}\n\nexport function assignMultipleRefs<T>(\n ...refs: (MutableRefObject<T> | RefCallback<T> | null | undefined)[]\n): RefCallback<T> {\n return (node: T | null) => {\n refs.forEach((ref) => {\n assignRef(ref, node);\n });\n };\n}\n"],"mappings":"AAEA,OAAO,SAASA,
|
|
1
|
+
{"version":3,"file":"assign-ref.js","names":["assignRef","ref","value","current","error","Error","assignMultipleRefs","_len","arguments","length","refs","Array","_key","node","forEach"],"sources":["../../../src/utils/assign-ref.ts"],"sourcesContent":["import type { MutableRefObject, RefCallback } from 'react';\n\nexport function assignRef<T>(\n ref: MutableRefObject<T> | RefCallback<T> | null | undefined,\n value: T\n) {\n if (ref == null) return;\n if (typeof ref === 'function') {\n ref(value);\n } else {\n try {\n ref.current = value;\n } catch (error) {\n throw new Error(`Cannot assign value \"${value}\" to ref \"${ref}\"`);\n }\n }\n}\n\nexport function assignMultipleRefs<T>(\n ...refs: (MutableRefObject<T> | RefCallback<T> | null | undefined)[]\n): RefCallback<T> {\n return (node: T | null) => {\n refs.forEach((ref) => {\n assignRef(ref, node);\n });\n };\n}\n"],"mappings":"AAEA,OAAO,SAASA,SAASA,CACvBC,GAA4D,EAC5DC,KAAQ,EACR;EACA,IAAID,GAAG,IAAI,IAAI,EAAE;EACjB,IAAI,OAAOA,GAAG,KAAK,UAAU,EAAE;IAC7BA,GAAG,CAACC,KAAK,CAAC;EACZ,CAAC,MAAM;IACL,IAAI;MACFD,GAAG,CAACE,OAAO,GAAGD,KAAK;IACrB,CAAC,CAAC,OAAOE,KAAK,EAAE;MACd,MAAM,IAAIC,KAAK,CAAC,wBAAwBH,KAAK,aAAaD,GAAG,GAAG,CAAC;IACnE;EACF;AACF;AAEA,OAAO,SAASK,kBAAkBA,CAAA,EAEhB;EAAA,SAAAC,IAAA,GAAAC,SAAA,CAAAC,MAAA,EADbC,IAAI,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;IAAJF,IAAI,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA;EAAA;EAEP,OAAQC,IAAc,IAAK;IACzBH,IAAI,CAACI,OAAO,CAAEb,GAAG,IAAK;MACpBD,SAAS,CAACC,GAAG,EAAEY,IAAI,CAAC;IACtB,CAAC,CAAC;EACJ,CAAC;AACH","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"can-use-dom.js","names":["canUseDOM","window","document","createElement"],"sources":["../../../src/utils/can-use-dom.ts"],"sourcesContent":["export function canUseDOM() {\n return !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n );\n}\n"],"mappings":"AAAA,OAAO,SAASA,
|
|
1
|
+
{"version":3,"file":"can-use-dom.js","names":["canUseDOM","window","document","createElement"],"sources":["../../../src/utils/can-use-dom.ts"],"sourcesContent":["export function canUseDOM() {\n return !!(\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n );\n}\n"],"mappings":"AAAA,OAAO,SAASA,SAASA,CAAA,EAAG;EAC1B,OAAO,CAAC,EACN,OAAOC,MAAM,KAAK,WAAW,IAC7BA,MAAM,CAACC,QAAQ,IACfD,MAAM,CAACC,QAAQ,CAACC,aAAa,CAC9B;AACH","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clamp.js","names":["clamp","value","min","max","Math"],"sources":["../../../src/utils/clamp.ts"],"sourcesContent":["export function clamp(value: number, min: number, max: number) {\n return Math.min(Math.max(value, min), max);\n}\n"],"mappings":"AAAA,OAAO,SAASA,
|
|
1
|
+
{"version":3,"file":"clamp.js","names":["clamp","value","min","max","Math"],"sources":["../../../src/utils/clamp.ts"],"sourcesContent":["export function clamp(value: number, min: number, max: number) {\n return Math.min(Math.max(value, min), max);\n}\n"],"mappings":"AAAA,OAAO,SAASA,KAAKA,CAACC,KAAa,EAAEC,GAAW,EAAEC,GAAW,EAAE;EAC7D,OAAOC,IAAI,CAACF,GAAG,CAACE,IAAI,CAACD,GAAG,CAACF,KAAK,EAAEC,GAAG,CAAC,EAAEC,GAAG,CAAC;AAC5C","ignoreList":[]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { FC, PropsWithChildren } from 'react';
|
|
2
|
-
|
|
2
|
+
type ContextProvider<T> = FC<PropsWithChildren<T>>;
|
|
3
3
|
export declare function createContext<ContextValueType extends object | null>(rootName: string, defaultContext?: ContextValueType): [
|
|
4
4
|
ContextProvider<ContextValueType>,
|
|
5
5
|
(childName: string) => ContextValueType
|