@mantine/hooks 7.13.5-alpha.1 → 7.13.5-alpha.2
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/cjs/index.cjs +164 -0
- package/cjs/index.cjs.map +1 -0
- package/cjs/use-callback-ref/use-callback-ref.cjs +15 -0
- package/cjs/use-callback-ref/use-callback-ref.cjs.map +1 -0
- package/cjs/use-click-outside/use-click-outside.cjs +29 -0
- package/cjs/use-click-outside/use-click-outside.cjs.map +1 -0
- package/cjs/use-clipboard/use-clipboard.cjs +31 -0
- package/cjs/use-clipboard/use-clipboard.cjs.map +1 -0
- package/cjs/use-color-scheme/use-color-scheme.cjs +11 -0
- package/cjs/use-color-scheme/use-color-scheme.cjs.map +1 -0
- package/cjs/use-counter/use-counter.cjs +22 -0
- package/cjs/use-counter/use-counter.cjs.map +1 -0
- package/cjs/use-debounced-callback/use-debounced-callback.cjs +21 -0
- package/cjs/use-debounced-callback/use-debounced-callback.cjs.map +1 -0
- package/cjs/use-debounced-state/use-debounced-state.cjs +31 -0
- package/cjs/use-debounced-state/use-debounced-state.cjs.map +1 -0
- package/cjs/use-debounced-value/use-debounced-value.cjs +34 -0
- package/cjs/use-debounced-value/use-debounced-value.cjs.map +1 -0
- package/cjs/use-did-update/use-did-update.cjs +24 -0
- package/cjs/use-did-update/use-did-update.cjs.map +1 -0
- package/cjs/use-disclosure/use-disclosure.cjs +34 -0
- package/cjs/use-disclosure/use-disclosure.cjs.map +1 -0
- package/cjs/use-document-title/use-document-title.cjs +15 -0
- package/cjs/use-document-title/use-document-title.cjs.map +1 -0
- package/cjs/use-document-visibility/use-document-visibility.cjs +17 -0
- package/cjs/use-document-visibility/use-document-visibility.cjs.map +1 -0
- package/cjs/use-event-listener/use-event-listener.cjs +19 -0
- package/cjs/use-event-listener/use-event-listener.cjs.map +1 -0
- package/cjs/use-eye-dropper/use-eye-dropper.cjs +29 -0
- package/cjs/use-eye-dropper/use-eye-dropper.cjs.map +1 -0
- package/cjs/use-favicon/use-favicon.cjs +37 -0
- package/cjs/use-favicon/use-favicon.cjs.map +1 -0
- package/cjs/use-fetch/use-fetch.cjs +51 -0
- package/cjs/use-fetch/use-fetch.cjs.map +1 -0
- package/cjs/use-focus-return/use-focus-return.cjs +36 -0
- package/cjs/use-focus-return/use-focus-return.cjs.map +1 -0
- package/cjs/use-focus-trap/create-aria-hider.cjs +45 -0
- package/cjs/use-focus-trap/create-aria-hider.cjs.map +1 -0
- package/cjs/use-focus-trap/scope-tab.cjs +34 -0
- package/cjs/use-focus-trap/scope-tab.cjs.map +1 -0
- package/cjs/use-focus-trap/tabbable.cjs +58 -0
- package/cjs/use-focus-trap/tabbable.cjs.map +1 -0
- package/cjs/use-focus-trap/use-focus-trap.cjs +83 -0
- package/cjs/use-focus-trap/use-focus-trap.cjs.map +1 -0
- package/cjs/use-focus-within/use-focus-within.cjs +50 -0
- package/cjs/use-focus-within/use-focus-within.cjs.map +1 -0
- package/cjs/use-force-update/use-force-update.cjs +13 -0
- package/cjs/use-force-update/use-force-update.cjs.map +1 -0
- package/cjs/use-fullscreen/use-fullscreen.cjs +99 -0
- package/cjs/use-fullscreen/use-fullscreen.cjs.map +1 -0
- package/cjs/use-hash/use-hash.cjs +31 -0
- package/cjs/use-hash/use-hash.cjs.map +1 -0
- package/cjs/use-headroom/use-headroom.cjs +81 -0
- package/cjs/use-headroom/use-headroom.cjs.map +1 -0
- package/cjs/use-hotkeys/parse-hotkey.cjs +66 -0
- package/cjs/use-hotkeys/parse-hotkey.cjs.map +1 -0
- package/cjs/use-hotkeys/use-hotkeys.cjs +35 -0
- package/cjs/use-hotkeys/use-hotkeys.cjs.map +1 -0
- package/cjs/use-hover/use-hover.cjs +26 -0
- package/cjs/use-hover/use-hover.cjs.map +1 -0
- package/cjs/use-id/use-id.cjs +25 -0
- package/cjs/use-id/use-id.cjs.map +1 -0
- package/cjs/use-id/use-react-id.cjs +17 -0
- package/cjs/use-id/use-react-id.cjs.map +1 -0
- package/cjs/use-idle/use-idle.cjs +43 -0
- package/cjs/use-idle/use-idle.cjs.map +1 -0
- package/cjs/use-in-viewport/use-in-viewport.cjs +29 -0
- package/cjs/use-in-viewport/use-in-viewport.cjs.map +1 -0
- package/cjs/use-input-state/use-input-state.cjs +31 -0
- package/cjs/use-input-state/use-input-state.cjs.map +1 -0
- package/cjs/use-intersection/use-intersection.cjs +30 -0
- package/cjs/use-intersection/use-intersection.cjs.map +1 -0
- package/cjs/use-interval/use-interval.cjs +44 -0
- package/cjs/use-interval/use-interval.cjs.map +1 -0
- package/cjs/use-is-first-render/use-is-first-render.cjs +16 -0
- package/cjs/use-is-first-render/use-is-first-render.cjs.map +1 -0
- package/cjs/use-isomorphic-effect/use-isomorphic-effect.cjs +9 -0
- package/cjs/use-isomorphic-effect/use-isomorphic-effect.cjs.map +1 -0
- package/cjs/use-list-state/use-list-state.cjs +76 -0
- package/cjs/use-list-state/use-list-state.cjs.map +1 -0
- package/cjs/use-local-storage/create-storage.cjs +143 -0
- package/cjs/use-local-storage/create-storage.cjs.map +1 -0
- package/cjs/use-local-storage/use-local-storage.cjs +13 -0
- package/cjs/use-local-storage/use-local-storage.cjs.map +1 -0
- package/cjs/use-logger/use-logger.cjs +19 -0
- package/cjs/use-logger/use-logger.cjs.map +1 -0
- package/cjs/use-map/use-map.cjs +28 -0
- package/cjs/use-map/use-map.cjs.map +1 -0
- package/cjs/use-media-query/use-media-query.cjs +40 -0
- package/cjs/use-media-query/use-media-query.cjs.map +1 -0
- package/cjs/use-merged-ref/use-merged-ref.cjs +25 -0
- package/cjs/use-merged-ref/use-merged-ref.cjs.map +1 -0
- package/cjs/use-mounted/use-mounted.cjs +13 -0
- package/cjs/use-mounted/use-mounted.cjs.map +1 -0
- package/cjs/use-mouse/use-mouse.cjs +43 -0
- package/cjs/use-mouse/use-mouse.cjs.map +1 -0
- package/cjs/use-move/use-move.cjs +102 -0
- package/cjs/use-move/use-move.cjs.map +1 -0
- package/cjs/use-mutation-observer/use-mutation-observer.cjs +23 -0
- package/cjs/use-mutation-observer/use-mutation-observer.cjs.map +1 -0
- package/cjs/use-network/use-network.cjs +51 -0
- package/cjs/use-network/use-network.cjs.map +1 -0
- package/cjs/use-orientation/use-orientation.cjs +21 -0
- package/cjs/use-orientation/use-orientation.cjs.map +1 -0
- package/cjs/use-os/use-os.cjs +60 -0
- package/cjs/use-os/use-os.cjs.map +1 -0
- package/cjs/use-page-leave/use-page-leave.cjs +14 -0
- package/cjs/use-page-leave/use-page-leave.cjs.map +1 -0
- package/cjs/use-pagination/use-pagination.cjs +78 -0
- package/cjs/use-pagination/use-pagination.cjs.map +1 -0
- package/cjs/use-previous/use-previous.cjs +15 -0
- package/cjs/use-previous/use-previous.cjs.map +1 -0
- package/cjs/use-queue/use-queue.cjs +36 -0
- package/cjs/use-queue/use-queue.cjs.map +1 -0
- package/cjs/use-reduced-motion/use-reduced-motion.cjs +11 -0
- package/cjs/use-reduced-motion/use-reduced-motion.cjs.map +1 -0
- package/cjs/use-resize-observer/use-resize-observer.cjs +54 -0
- package/cjs/use-resize-observer/use-resize-observer.cjs.map +1 -0
- package/cjs/use-scroll-into-view/use-scroll-into-view.cjs +94 -0
- package/cjs/use-scroll-into-view/use-scroll-into-view.cjs.map +1 -0
- package/cjs/use-scroll-into-view/utils/ease-in-out-quad.cjs +7 -0
- package/cjs/use-scroll-into-view/utils/ease-in-out-quad.cjs.map +1 -0
- package/cjs/use-scroll-into-view/utils/get-relative-position.cjs +66 -0
- package/cjs/use-scroll-into-view/utils/get-relative-position.cjs.map +1 -0
- package/cjs/use-scroll-into-view/utils/get-scroll-start.cjs +17 -0
- package/cjs/use-scroll-into-view/utils/get-scroll-start.cjs.map +1 -0
- package/cjs/use-scroll-into-view/utils/set-scroll-param.cjs +19 -0
- package/cjs/use-scroll-into-view/utils/set-scroll-param.cjs.map +1 -0
- package/cjs/use-session-storage/use-session-storage.cjs +13 -0
- package/cjs/use-session-storage/use-session-storage.cjs.map +1 -0
- package/cjs/use-set/use-set.cjs +28 -0
- package/cjs/use-set/use-set.cjs.map +1 -0
- package/cjs/use-set-state/use-set-state.cjs +19 -0
- package/cjs/use-set-state/use-set-state.cjs.map +1 -0
- package/cjs/use-shallow-effect/use-shallow-effect.cjs +38 -0
- package/cjs/use-shallow-effect/use-shallow-effect.cjs.map +1 -0
- package/cjs/use-state-history/use-state-history.cjs +43 -0
- package/cjs/use-state-history/use-state-history.cjs.map +1 -0
- package/cjs/use-text-selection/use-text-selection.cjs +23 -0
- package/cjs/use-text-selection/use-text-selection.cjs.map +1 -0
- package/cjs/use-throttled-callback/use-throttled-callback.cjs +54 -0
- package/cjs/use-throttled-callback/use-throttled-callback.cjs.map +1 -0
- package/cjs/use-throttled-state/use-throttled-state.cjs +15 -0
- package/cjs/use-throttled-state/use-throttled-state.cjs.map +1 -0
- package/cjs/use-throttled-value/use-throttled-value.cjs +25 -0
- package/cjs/use-throttled-value/use-throttled-value.cjs.map +1 -0
- package/cjs/use-timeout/use-timeout.cjs +35 -0
- package/cjs/use-timeout/use-timeout.cjs.map +1 -0
- package/cjs/use-toggle/use-toggle.cjs +16 -0
- package/cjs/use-toggle/use-toggle.cjs.map +1 -0
- package/cjs/use-uncontrolled/use-uncontrolled.cjs +27 -0
- package/cjs/use-uncontrolled/use-uncontrolled.cjs.map +1 -0
- package/cjs/use-validated-state/use-validated-state.cjs +27 -0
- package/cjs/use-validated-state/use-validated-state.cjs.map +1 -0
- package/cjs/use-viewport-size/use-viewport-size.cjs +25 -0
- package/cjs/use-viewport-size/use-viewport-size.cjs.map +1 -0
- package/cjs/use-window-event/use-window-event.cjs +14 -0
- package/cjs/use-window-event/use-window-event.cjs.map +1 -0
- package/cjs/use-window-scroll/use-window-scroll.cjs +33 -0
- package/cjs/use-window-scroll/use-window-scroll.cjs.map +1 -0
- package/cjs/utils/clamp/clamp.cjs +18 -0
- package/cjs/utils/clamp/clamp.cjs.map +1 -0
- package/cjs/utils/lower-first/lower-first.cjs +9 -0
- package/cjs/utils/lower-first/lower-first.cjs.map +1 -0
- package/cjs/utils/random-id/random-id.cjs +9 -0
- package/cjs/utils/random-id/random-id.cjs.map +1 -0
- package/cjs/utils/range/range.cjs +14 -0
- package/cjs/utils/range/range.cjs.map +1 -0
- package/cjs/utils/shallow-equal/shallow-equal.cjs +29 -0
- package/cjs/utils/shallow-equal/shallow-equal.cjs.map +1 -0
- package/cjs/utils/upper-first/upper-first.cjs +9 -0
- package/cjs/utils/upper-first/upper-first.cjs.map +1 -0
- package/esm/index.mjs +77 -0
- package/esm/index.mjs.map +1 -0
- package/esm/use-callback-ref/use-callback-ref.mjs +13 -0
- package/esm/use-callback-ref/use-callback-ref.mjs.map +1 -0
- package/esm/use-click-outside/use-click-outside.mjs +27 -0
- package/esm/use-click-outside/use-click-outside.mjs.map +1 -0
- package/esm/use-clipboard/use-clipboard.mjs +29 -0
- package/esm/use-clipboard/use-clipboard.mjs.map +1 -0
- package/esm/use-color-scheme/use-color-scheme.mjs +9 -0
- package/esm/use-color-scheme/use-color-scheme.mjs.map +1 -0
- package/esm/use-counter/use-counter.mjs +20 -0
- package/esm/use-counter/use-counter.mjs.map +1 -0
- package/esm/use-debounced-callback/use-debounced-callback.mjs +19 -0
- package/esm/use-debounced-callback/use-debounced-callback.mjs.map +1 -0
- package/esm/use-debounced-state/use-debounced-state.mjs +29 -0
- package/esm/use-debounced-state/use-debounced-state.mjs.map +1 -0
- package/esm/use-debounced-value/use-debounced-value.mjs +32 -0
- package/esm/use-debounced-value/use-debounced-value.mjs.map +1 -0
- package/esm/use-did-update/use-did-update.mjs +22 -0
- package/esm/use-did-update/use-did-update.mjs.map +1 -0
- package/esm/use-disclosure/use-disclosure.mjs +32 -0
- package/esm/use-disclosure/use-disclosure.mjs.map +1 -0
- package/esm/use-document-title/use-document-title.mjs +13 -0
- package/esm/use-document-title/use-document-title.mjs.map +1 -0
- package/esm/use-document-visibility/use-document-visibility.mjs +15 -0
- package/esm/use-document-visibility/use-document-visibility.mjs.map +1 -0
- package/esm/use-event-listener/use-event-listener.mjs +17 -0
- package/esm/use-event-listener/use-event-listener.mjs.map +1 -0
- package/esm/use-eye-dropper/use-eye-dropper.mjs +27 -0
- package/esm/use-eye-dropper/use-eye-dropper.mjs.map +1 -0
- package/esm/use-favicon/use-favicon.mjs +35 -0
- package/esm/use-favicon/use-favicon.mjs.map +1 -0
- package/esm/use-fetch/use-fetch.mjs +49 -0
- package/esm/use-fetch/use-fetch.mjs.map +1 -0
- package/esm/use-focus-return/use-focus-return.mjs +34 -0
- package/esm/use-focus-return/use-focus-return.mjs.map +1 -0
- package/esm/use-focus-trap/create-aria-hider.mjs +43 -0
- package/esm/use-focus-trap/create-aria-hider.mjs.map +1 -0
- package/esm/use-focus-trap/scope-tab.mjs +32 -0
- package/esm/use-focus-trap/scope-tab.mjs.map +1 -0
- package/esm/use-focus-trap/tabbable.mjs +53 -0
- package/esm/use-focus-trap/tabbable.mjs.map +1 -0
- package/esm/use-focus-trap/use-focus-trap.mjs +81 -0
- package/esm/use-focus-trap/use-focus-trap.mjs.map +1 -0
- package/esm/use-focus-within/use-focus-within.mjs +48 -0
- package/esm/use-focus-within/use-focus-within.mjs.map +1 -0
- package/esm/use-force-update/use-force-update.mjs +11 -0
- package/esm/use-force-update/use-force-update.mjs.map +1 -0
- package/esm/use-fullscreen/use-fullscreen.mjs +97 -0
- package/esm/use-fullscreen/use-fullscreen.mjs.map +1 -0
- package/esm/use-hash/use-hash.mjs +29 -0
- package/esm/use-hash/use-hash.mjs.map +1 -0
- package/esm/use-headroom/use-headroom.mjs +76 -0
- package/esm/use-headroom/use-headroom.mjs.map +1 -0
- package/esm/use-hotkeys/parse-hotkey.mjs +62 -0
- package/esm/use-hotkeys/parse-hotkey.mjs.map +1 -0
- package/esm/use-hotkeys/use-hotkeys.mjs +33 -0
- package/esm/use-hotkeys/use-hotkeys.mjs.map +1 -0
- package/esm/use-hover/use-hover.mjs +24 -0
- package/esm/use-hover/use-hover.mjs.map +1 -0
- package/esm/use-id/use-id.mjs +23 -0
- package/esm/use-id/use-id.mjs.map +1 -0
- package/esm/use-id/use-react-id.mjs +11 -0
- package/esm/use-id/use-react-id.mjs.map +1 -0
- package/esm/use-idle/use-idle.mjs +41 -0
- package/esm/use-idle/use-idle.mjs.map +1 -0
- package/esm/use-in-viewport/use-in-viewport.mjs +27 -0
- package/esm/use-in-viewport/use-in-viewport.mjs.map +1 -0
- package/esm/use-input-state/use-input-state.mjs +28 -0
- package/esm/use-input-state/use-input-state.mjs.map +1 -0
- package/esm/use-intersection/use-intersection.mjs +28 -0
- package/esm/use-intersection/use-intersection.mjs.map +1 -0
- package/esm/use-interval/use-interval.mjs +42 -0
- package/esm/use-interval/use-interval.mjs.map +1 -0
- package/esm/use-is-first-render/use-is-first-render.mjs +14 -0
- package/esm/use-is-first-render/use-is-first-render.mjs.map +1 -0
- package/esm/use-isomorphic-effect/use-isomorphic-effect.mjs +7 -0
- package/esm/use-isomorphic-effect/use-isomorphic-effect.mjs.map +1 -0
- package/esm/use-list-state/use-list-state.mjs +74 -0
- package/esm/use-list-state/use-list-state.mjs.map +1 -0
- package/esm/use-local-storage/create-storage.mjs +140 -0
- package/esm/use-local-storage/create-storage.mjs.map +1 -0
- package/esm/use-local-storage/use-local-storage.mjs +10 -0
- package/esm/use-local-storage/use-local-storage.mjs.map +1 -0
- package/esm/use-logger/use-logger.mjs +17 -0
- package/esm/use-logger/use-logger.mjs.map +1 -0
- package/esm/use-map/use-map.mjs +26 -0
- package/esm/use-map/use-map.mjs.map +1 -0
- package/esm/use-media-query/use-media-query.mjs +38 -0
- package/esm/use-media-query/use-media-query.mjs.map +1 -0
- package/esm/use-merged-ref/use-merged-ref.mjs +21 -0
- package/esm/use-merged-ref/use-merged-ref.mjs.map +1 -0
- package/esm/use-mounted/use-mounted.mjs +11 -0
- package/esm/use-mounted/use-mounted.mjs.map +1 -0
- package/esm/use-mouse/use-mouse.mjs +41 -0
- package/esm/use-mouse/use-mouse.mjs.map +1 -0
- package/esm/use-move/use-move.mjs +99 -0
- package/esm/use-move/use-move.mjs.map +1 -0
- package/esm/use-mutation-observer/use-mutation-observer.mjs +21 -0
- package/esm/use-mutation-observer/use-mutation-observer.mjs.map +1 -0
- package/esm/use-network/use-network.mjs +49 -0
- package/esm/use-network/use-network.mjs.map +1 -0
- package/esm/use-orientation/use-orientation.mjs +19 -0
- package/esm/use-orientation/use-orientation.mjs.map +1 -0
- package/esm/use-os/use-os.mjs +58 -0
- package/esm/use-os/use-os.mjs.map +1 -0
- package/esm/use-page-leave/use-page-leave.mjs +12 -0
- package/esm/use-page-leave/use-page-leave.mjs.map +1 -0
- package/esm/use-pagination/use-pagination.mjs +75 -0
- package/esm/use-pagination/use-pagination.mjs.map +1 -0
- package/esm/use-previous/use-previous.mjs +13 -0
- package/esm/use-previous/use-previous.mjs.map +1 -0
- package/esm/use-queue/use-queue.mjs +34 -0
- package/esm/use-queue/use-queue.mjs.map +1 -0
- package/esm/use-reduced-motion/use-reduced-motion.mjs +9 -0
- package/esm/use-reduced-motion/use-reduced-motion.mjs.map +1 -0
- package/esm/use-resize-observer/use-resize-observer.mjs +51 -0
- package/esm/use-resize-observer/use-resize-observer.mjs.map +1 -0
- package/esm/use-scroll-into-view/use-scroll-into-view.mjs +92 -0
- package/esm/use-scroll-into-view/use-scroll-into-view.mjs.map +1 -0
- package/esm/use-scroll-into-view/utils/ease-in-out-quad.mjs +5 -0
- package/esm/use-scroll-into-view/utils/ease-in-out-quad.mjs.map +1 -0
- package/esm/use-scroll-into-view/utils/get-relative-position.mjs +64 -0
- package/esm/use-scroll-into-view/utils/get-relative-position.mjs.map +1 -0
- package/esm/use-scroll-into-view/utils/get-scroll-start.mjs +15 -0
- package/esm/use-scroll-into-view/utils/get-scroll-start.mjs.map +1 -0
- package/esm/use-scroll-into-view/utils/set-scroll-param.mjs +17 -0
- package/esm/use-scroll-into-view/utils/set-scroll-param.mjs.map +1 -0
- package/esm/use-session-storage/use-session-storage.mjs +10 -0
- package/esm/use-session-storage/use-session-storage.mjs.map +1 -0
- package/esm/use-set/use-set.mjs +26 -0
- package/esm/use-set/use-set.mjs.map +1 -0
- package/esm/use-set-state/use-set-state.mjs +17 -0
- package/esm/use-set-state/use-set-state.mjs.map +1 -0
- package/esm/use-shallow-effect/use-shallow-effect.mjs +36 -0
- package/esm/use-shallow-effect/use-shallow-effect.mjs.map +1 -0
- package/esm/use-state-history/use-state-history.mjs +41 -0
- package/esm/use-state-history/use-state-history.mjs.map +1 -0
- package/esm/use-text-selection/use-text-selection.mjs +21 -0
- package/esm/use-text-selection/use-text-selection.mjs.map +1 -0
- package/esm/use-throttled-callback/use-throttled-callback.mjs +51 -0
- package/esm/use-throttled-callback/use-throttled-callback.mjs.map +1 -0
- package/esm/use-throttled-state/use-throttled-state.mjs +13 -0
- package/esm/use-throttled-state/use-throttled-state.mjs.map +1 -0
- package/esm/use-throttled-value/use-throttled-value.mjs +23 -0
- package/esm/use-throttled-value/use-throttled-value.mjs.map +1 -0
- package/esm/use-timeout/use-timeout.mjs +33 -0
- package/esm/use-timeout/use-timeout.mjs.map +1 -0
- package/esm/use-toggle/use-toggle.mjs +14 -0
- package/esm/use-toggle/use-toggle.mjs.map +1 -0
- package/esm/use-uncontrolled/use-uncontrolled.mjs +25 -0
- package/esm/use-uncontrolled/use-uncontrolled.mjs.map +1 -0
- package/esm/use-validated-state/use-validated-state.mjs +25 -0
- package/esm/use-validated-state/use-validated-state.mjs.map +1 -0
- package/esm/use-viewport-size/use-viewport-size.mjs +23 -0
- package/esm/use-viewport-size/use-viewport-size.mjs.map +1 -0
- package/esm/use-window-event/use-window-event.mjs +12 -0
- package/esm/use-window-event/use-window-event.mjs.map +1 -0
- package/esm/use-window-scroll/use-window-scroll.mjs +31 -0
- package/esm/use-window-scroll/use-window-scroll.mjs.map +1 -0
- package/esm/utils/clamp/clamp.mjs +16 -0
- package/esm/utils/clamp/clamp.mjs.map +1 -0
- package/esm/utils/lower-first/lower-first.mjs +7 -0
- package/esm/utils/lower-first/lower-first.mjs.map +1 -0
- package/esm/utils/random-id/random-id.mjs +7 -0
- package/esm/utils/random-id/random-id.mjs.map +1 -0
- package/esm/utils/range/range.mjs +12 -0
- package/esm/utils/range/range.mjs.map +1 -0
- package/esm/utils/shallow-equal/shallow-equal.mjs +27 -0
- package/esm/utils/shallow-equal/shallow-equal.mjs.map +1 -0
- package/esm/utils/upper-first/upper-first.mjs +7 -0
- package/esm/utils/upper-first/upper-first.mjs.map +1 -0
- package/lib/index.d.mts +78 -0
- package/lib/index.d.ts +78 -0
- package/lib/use-callback-ref/use-callback-ref.d.ts +1 -0
- package/lib/use-click-outside/use-click-outside.d.ts +1 -0
- package/lib/use-clipboard/use-clipboard.d.ts +8 -0
- package/lib/use-color-scheme/use-color-scheme.d.ts +2 -0
- package/lib/use-counter/use-counter.d.ts +9 -0
- package/lib/use-debounced-callback/use-debounced-callback.d.ts +1 -0
- package/lib/use-debounced-state/use-debounced-state.d.ts +4 -0
- package/lib/use-debounced-value/use-debounced-value.d.ts +3 -0
- package/lib/use-did-update/use-did-update.d.ts +2 -0
- package/lib/use-disclosure/use-disclosure.d.ts +8 -0
- package/lib/use-document-title/use-document-title.d.ts +1 -0
- package/lib/use-document-visibility/use-document-visibility.d.ts +1 -0
- package/lib/use-event-listener/use-event-listener.d.ts +1 -0
- package/lib/use-eye-dropper/use-eye-dropper.d.ts +11 -0
- package/lib/use-favicon/use-favicon.d.ts +1 -0
- package/lib/use-fetch/use-fetch.d.ts +10 -0
- package/lib/use-focus-return/use-focus-return.d.ts +7 -0
- package/lib/use-focus-trap/create-aria-hider.d.ts +1 -0
- package/lib/use-focus-trap/scope-tab.d.ts +1 -0
- package/lib/use-focus-trap/tabbable.d.ts +4 -0
- package/lib/use-focus-trap/use-focus-trap.d.ts +1 -0
- package/lib/use-focus-within/use-focus-within.d.ts +8 -0
- package/lib/use-force-update/use-force-update.d.ts +1 -0
- package/lib/use-fullscreen/use-fullscreen.d.ts +5 -0
- package/lib/use-hash/use-hash.d.ts +5 -0
- package/lib/use-headroom/use-headroom.d.ts +17 -0
- package/lib/use-hotkeys/parse-hotkey.d.ts +19 -0
- package/lib/use-hotkeys/use-hotkeys.d.ts +5 -0
- package/lib/use-hover/use-hover.d.ts +4 -0
- package/lib/use-id/use-id.d.ts +1 -0
- package/lib/use-id/use-react-id.d.ts +1 -0
- package/lib/use-idle/use-idle.d.ts +4 -0
- package/lib/use-in-viewport/use-in-viewport.d.ts +4 -0
- package/lib/use-input-state/use-input-state.d.ts +2 -0
- package/lib/use-intersection/use-intersection.d.ts +4 -0
- package/lib/use-interval/use-interval.d.ts +11 -0
- package/lib/use-is-first-render/use-is-first-render.d.ts +1 -0
- package/lib/use-isomorphic-effect/use-isomorphic-effect.d.ts +2 -0
- package/lib/use-list-state/use-list-state.d.ts +24 -0
- package/lib/use-local-storage/create-storage.d.ts +15 -0
- package/lib/use-local-storage/use-local-storage.d.ts +3 -0
- package/lib/use-logger/use-logger.d.ts +1 -0
- package/lib/use-map/use-map.d.ts +1 -0
- package/lib/use-media-query/use-media-query.d.ts +4 -0
- package/lib/use-merged-ref/use-merged-ref.d.ts +6 -0
- package/lib/use-mounted/use-mounted.d.ts +1 -0
- package/lib/use-mouse/use-mouse.d.ts +7 -0
- package/lib/use-move/use-move.d.ts +17 -0
- package/lib/use-mutation-observer/use-mutation-observer.d.ts +2 -0
- package/lib/use-network/use-network.d.ts +12 -0
- package/lib/use-orientation/use-orientation.d.ts +4 -0
- package/lib/use-os/use-os.d.ts +6 -0
- package/lib/use-page-leave/use-page-leave.d.ts +1 -0
- package/lib/use-pagination/use-pagination.d.ts +24 -0
- package/lib/use-previous/use-previous.d.ts +1 -0
- package/lib/use-queue/use-queue.d.ts +10 -0
- package/lib/use-reduced-motion/use-reduced-motion.d.ts +2 -0
- package/lib/use-resize-observer/use-resize-observer.d.ts +8 -0
- package/lib/use-scroll-into-view/use-scroll-into-view.d.ts +28 -0
- package/lib/use-scroll-into-view/utils/ease-in-out-quad.d.ts +1 -0
- package/lib/use-scroll-into-view/utils/get-relative-position.d.ts +1 -0
- package/lib/use-scroll-into-view/utils/get-scroll-start.d.ts +1 -0
- package/lib/use-scroll-into-view/utils/set-scroll-param.d.ts +1 -0
- package/lib/use-session-storage/use-session-storage.d.ts +3 -0
- package/lib/use-set/use-set.d.ts +1 -0
- package/lib/use-set-state/use-set-state.d.ts +1 -0
- package/lib/use-shallow-effect/use-shallow-effect.d.ts +1 -0
- package/lib/use-state-history/use-state-history.d.ts +11 -0
- package/lib/use-text-selection/use-text-selection.d.ts +1 -0
- package/lib/use-throttled-callback/use-throttled-callback.d.ts +2 -0
- package/lib/use-throttled-state/use-throttled-state.d.ts +1 -0
- package/lib/use-throttled-value/use-throttled-value.d.ts +1 -0
- package/lib/use-timeout/use-timeout.d.ts +6 -0
- package/lib/use-toggle/use-toggle.d.ts +1 -0
- package/lib/use-uncontrolled/use-uncontrolled.d.ts +12 -0
- package/lib/use-validated-state/use-validated-state.d.ts +5 -0
- package/lib/use-viewport-size/use-viewport-size.d.ts +4 -0
- package/lib/use-window-event/use-window-event.d.ts +1 -0
- package/lib/use-window-scroll/use-window-scroll.d.ts +7 -0
- package/lib/utils/clamp/clamp.d.ts +1 -0
- package/lib/utils/index.d.ts +6 -0
- package/lib/utils/lower-first/lower-first.d.ts +1 -0
- package/lib/utils/random-id/random-id.d.ts +1 -0
- package/lib/utils/range/range.d.ts +1 -0
- package/lib/utils/shallow-equal/shallow-equal.d.ts +1 -0
- package/lib/utils/upper-first/upper-first.d.ts +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-move.mjs","sources":["../../src/use-move/use-move.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport { clamp } from '../utils';\n\nexport interface UseMovePosition {\n x: number;\n y: number;\n}\n\nexport function clampUseMovePosition(position: UseMovePosition) {\n return {\n x: clamp(position.x, 0, 1),\n y: clamp(position.y, 0, 1),\n };\n}\n\ninterface useMoveHandlers {\n onScrubStart?: () => void;\n onScrubEnd?: () => void;\n}\n\nexport function useMove<T extends HTMLElement = HTMLDivElement>(\n onChange: (value: UseMovePosition) => void,\n handlers?: useMoveHandlers,\n dir: 'ltr' | 'rtl' = 'ltr'\n) {\n const ref = useRef<T>(null);\n const mounted = useRef<boolean>(false);\n const isSliding = useRef(false);\n const frame = useRef(0);\n const [active, setActive] = useState(false);\n\n useEffect(() => {\n mounted.current = true;\n }, []);\n\n useEffect(() => {\n const onScrub = ({ x, y }: UseMovePosition) => {\n cancelAnimationFrame(frame.current);\n\n frame.current = requestAnimationFrame(() => {\n if (mounted.current && ref.current) {\n ref.current.style.userSelect = 'none';\n const rect = ref.current.getBoundingClientRect();\n\n if (rect.width && rect.height) {\n const _x = clamp((x - rect.left) / rect.width, 0, 1);\n onChange({\n x: dir === 'ltr' ? _x : 1 - _x,\n y: clamp((y - rect.top) / rect.height, 0, 1),\n });\n }\n }\n });\n };\n\n const bindEvents = () => {\n document.addEventListener('mousemove', onMouseMove);\n document.addEventListener('mouseup', stopScrubbing);\n document.addEventListener('touchmove', onTouchMove);\n document.addEventListener('touchend', stopScrubbing);\n };\n\n const unbindEvents = () => {\n document.removeEventListener('mousemove', onMouseMove);\n document.removeEventListener('mouseup', stopScrubbing);\n document.removeEventListener('touchmove', onTouchMove);\n document.removeEventListener('touchend', stopScrubbing);\n };\n\n const startScrubbing = () => {\n if (!isSliding.current && mounted.current) {\n isSliding.current = true;\n typeof handlers?.onScrubStart === 'function' && handlers.onScrubStart();\n setActive(true);\n bindEvents();\n }\n };\n\n const stopScrubbing = () => {\n if (isSliding.current && mounted.current) {\n isSliding.current = false;\n setActive(false);\n unbindEvents();\n setTimeout(() => {\n typeof handlers?.onScrubEnd === 'function' && handlers.onScrubEnd();\n }, 0);\n }\n };\n\n const onMouseDown = (event: MouseEvent) => {\n startScrubbing();\n event.preventDefault();\n onMouseMove(event);\n };\n\n const onMouseMove = (event: MouseEvent) => onScrub({ x: event.clientX, y: event.clientY });\n\n const onTouchStart = (event: TouchEvent) => {\n if (event.cancelable) {\n event.preventDefault();\n }\n\n startScrubbing();\n onTouchMove(event);\n };\n\n const onTouchMove = (event: TouchEvent) => {\n if (event.cancelable) {\n event.preventDefault();\n }\n\n onScrub({ x: event.changedTouches[0].clientX, y: event.changedTouches[0].clientY });\n };\n\n ref.current?.addEventListener('mousedown', onMouseDown);\n ref.current?.addEventListener('touchstart', onTouchStart, { passive: false });\n\n return () => {\n if (ref.current) {\n ref.current.removeEventListener('mousedown', onMouseDown);\n ref.current.removeEventListener('touchstart', onTouchStart);\n }\n };\n }, [dir, onChange]);\n\n return { ref, active };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useRef, useEffect } from 'react';
|
|
3
|
+
|
|
4
|
+
function useMutationObserver(callback, options, target) {
|
|
5
|
+
const observer = useRef();
|
|
6
|
+
const ref = useRef(null);
|
|
7
|
+
useEffect(() => {
|
|
8
|
+
const targetElement = typeof target === "function" ? target() : target;
|
|
9
|
+
if (targetElement || ref.current) {
|
|
10
|
+
observer.current = new MutationObserver(callback);
|
|
11
|
+
observer.current.observe(targetElement || ref.current, options);
|
|
12
|
+
}
|
|
13
|
+
return () => {
|
|
14
|
+
observer.current?.disconnect();
|
|
15
|
+
};
|
|
16
|
+
}, [callback, options]);
|
|
17
|
+
return ref;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
export { useMutationObserver };
|
|
21
|
+
//# sourceMappingURL=use-mutation-observer.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-mutation-observer.mjs","sources":["../../src/use-mutation-observer/use-mutation-observer.ts"],"sourcesContent":["import { RefObject, useEffect, useRef } from 'react';\n\nexport function useMutationObserver<Element extends HTMLElement>(\n callback: MutationCallback,\n options: MutationObserverInit,\n target?: HTMLElement | (() => HTMLElement) | null\n) {\n const observer = useRef<MutationObserver>();\n const ref: RefObject<Element> = useRef(null);\n\n useEffect(() => {\n const targetElement = typeof target === 'function' ? target() : target;\n\n if (targetElement || ref.current) {\n observer.current = new MutationObserver(callback);\n observer.current.observe(targetElement || ref.current!, options);\n }\n\n return () => {\n observer.current?.disconnect();\n };\n }, [callback, options]);\n\n return ref;\n}\n"],"names":[],"mappings":";;;AAEO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,mBAAmB,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,EAAE,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,MAAM,CAAE,CAAA,CAAA;AAC/D,CAAA,CAAE,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAE,CAAA,CAAA;AAC3B,CAAA,CAAE,MAAM,CAAG,CAAA,CAAA,CAAA,CAAA,CAAG,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,IAAI,CAAC,CAAA;AAC1B,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAClB,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAE,CAAA,CAAA,CAAA,CAAG,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC1E,CAAA,CAAA,CAAA,CAAI,IAAI,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAG,CAAA,CAAA,CAAC,OAAO,CAAE,CAAA,CAAA;AACtC,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAC,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,IAAI,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,QAAQ,CAAC,CAAA;AACvD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAa,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAG,CAAA,CAAA,CAAC,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,OAAO,CAAC,CAAA;AACrE,CAAA,CAAA,CAAA,CAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAI,OAAO,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACjB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,UAAU,CAAE,CAAA,CAAA;AACpC,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA;AACL,CAAA,CAAA,CAAG,EAAE,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAC,CAAC,CAAA;AACzB,CAAA,CAAE,OAAO,CAAG,CAAA,CAAA,CAAA;AACZ,CAAA;;"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useState, useCallback, useEffect } from 'react';
|
|
3
|
+
import { useWindowEvent } from '../use-window-event/use-window-event.mjs';
|
|
4
|
+
|
|
5
|
+
function getConnection() {
|
|
6
|
+
if (typeof navigator === "undefined") {
|
|
7
|
+
return {};
|
|
8
|
+
}
|
|
9
|
+
const _navigator = navigator;
|
|
10
|
+
const connection = _navigator.connection || _navigator.mozConnection || _navigator.webkitConnection;
|
|
11
|
+
if (!connection) {
|
|
12
|
+
return {};
|
|
13
|
+
}
|
|
14
|
+
return {
|
|
15
|
+
downlink: connection?.downlink,
|
|
16
|
+
downlinkMax: connection?.downlinkMax,
|
|
17
|
+
effectiveType: connection?.effectiveType,
|
|
18
|
+
rtt: connection?.rtt,
|
|
19
|
+
saveData: connection?.saveData,
|
|
20
|
+
type: connection?.type
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function useNetwork() {
|
|
24
|
+
const [status, setStatus] = useState({
|
|
25
|
+
online: true
|
|
26
|
+
});
|
|
27
|
+
const handleConnectionChange = useCallback(
|
|
28
|
+
() => setStatus((current) => ({ ...current, ...getConnection() })),
|
|
29
|
+
[]
|
|
30
|
+
);
|
|
31
|
+
useWindowEvent("online", () => setStatus({ online: true, ...getConnection() }));
|
|
32
|
+
useWindowEvent("offline", () => setStatus({ online: false, ...getConnection() }));
|
|
33
|
+
useEffect(() => {
|
|
34
|
+
const _navigator = navigator;
|
|
35
|
+
if (_navigator.connection) {
|
|
36
|
+
setStatus({ online: _navigator.onLine, ...getConnection() });
|
|
37
|
+
_navigator.connection.addEventListener("change", handleConnectionChange);
|
|
38
|
+
return () => _navigator.connection.removeEventListener("change", handleConnectionChange);
|
|
39
|
+
}
|
|
40
|
+
if (typeof _navigator.onLine === "boolean") {
|
|
41
|
+
setStatus((current) => ({ ...current, online: _navigator.onLine }));
|
|
42
|
+
}
|
|
43
|
+
return void 0;
|
|
44
|
+
}, []);
|
|
45
|
+
return status;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export { useNetwork };
|
|
49
|
+
//# sourceMappingURL=use-network.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-network.mjs","sources":["../../src/use-network/use-network.ts"],"sourcesContent":["import { useCallback, useEffect, useState } from 'react';\nimport { useWindowEvent } from '../use-window-event/use-window-event';\n\ninterface NetworkStatus {\n downlink?: number;\n downlinkMax?: number;\n effectiveType?: 'slow-2g' | '2g' | '3g' | '4g';\n rtt?: number;\n saveData?: boolean;\n type?: 'bluetooth' | 'cellular' | 'ethernet' | 'wifi' | 'wimax' | 'none' | 'other' | 'unknown';\n}\n\nfunction getConnection(): NetworkStatus {\n if (typeof navigator === 'undefined') {\n return {};\n }\n\n const _navigator = navigator as any;\n const connection: any =\n _navigator.connection || _navigator.mozConnection || _navigator.webkitConnection;\n\n if (!connection) {\n return {};\n }\n\n return {\n downlink: connection?.downlink,\n downlinkMax: connection?.downlinkMax,\n effectiveType: connection?.effectiveType,\n rtt: connection?.rtt,\n saveData: connection?.saveData,\n type: connection?.type,\n };\n}\n\nexport function useNetwork() {\n const [status, setStatus] = useState<{ online: boolean } & NetworkStatus>({\n online: true,\n });\n const handleConnectionChange = useCallback(\n () => setStatus((current) => ({ ...current, ...getConnection() })),\n []\n );\n\n useWindowEvent('online', () => setStatus({ online: true, ...getConnection() }));\n useWindowEvent('offline', () => setStatus({ online: false, ...getConnection() }));\n\n useEffect(() => {\n const _navigator = navigator as any;\n\n if (_navigator.connection) {\n setStatus({ online: _navigator.onLine, ...getConnection() });\n _navigator.connection.addEventListener('change', handleConnectionChange);\n return () => _navigator.connection.removeEventListener('change', handleConnectionChange);\n }\n\n if (typeof _navigator.onLine === 'boolean') {\n // Required for Firefox and other browsers that don't support navigator.connection\n setStatus((current) => ({ ...current, online: _navigator.onLine }));\n }\n\n return undefined;\n }, []);\n\n return status;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { useIsomorphicEffect } from '../use-isomorphic-effect/use-isomorphic-effect.mjs';
|
|
4
|
+
|
|
5
|
+
function useOrientation() {
|
|
6
|
+
const [orientation, setOrientation] = useState({ angle: 0, type: "landscape-primary" });
|
|
7
|
+
const handleOrientationChange = (event) => {
|
|
8
|
+
const target = event.currentTarget;
|
|
9
|
+
setOrientation({ angle: target?.angle || 0, type: target?.type || "landscape-primary" });
|
|
10
|
+
};
|
|
11
|
+
useIsomorphicEffect(() => {
|
|
12
|
+
window.screen.orientation?.addEventListener("change", handleOrientationChange);
|
|
13
|
+
return () => window.screen.orientation?.removeEventListener("change", handleOrientationChange);
|
|
14
|
+
}, []);
|
|
15
|
+
return orientation;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { useOrientation };
|
|
19
|
+
//# sourceMappingURL=use-orientation.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-orientation.mjs","sources":["../../src/use-orientation/use-orientation.ts"],"sourcesContent":["import { useState } from 'react';\nimport { useIsomorphicEffect } from '../use-isomorphic-effect/use-isomorphic-effect';\n\nexport function useOrientation() {\n const [orientation, setOrientation] = useState({ angle: 0, type: 'landscape-primary' });\n\n const handleOrientationChange = (event: Event) => {\n const target = event.currentTarget as ScreenOrientation;\n setOrientation({ angle: target?.angle || 0, type: target?.type || 'landscape-primary' });\n };\n\n useIsomorphicEffect(() => {\n window.screen.orientation?.addEventListener('change', handleOrientationChange);\n return () => window.screen.orientation?.removeEventListener('change', handleOrientationChange);\n }, []);\n\n return orientation;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { useIsomorphicEffect } from '../use-isomorphic-effect/use-isomorphic-effect.mjs';
|
|
4
|
+
|
|
5
|
+
function isMacOS(userAgent) {
|
|
6
|
+
const macosPattern = /(Macintosh)|(MacIntel)|(MacPPC)|(Mac68K)/i;
|
|
7
|
+
return macosPattern.test(userAgent);
|
|
8
|
+
}
|
|
9
|
+
function isIOS(userAgent) {
|
|
10
|
+
const iosPattern = /(iPhone)|(iPad)|(iPod)/i;
|
|
11
|
+
return iosPattern.test(userAgent);
|
|
12
|
+
}
|
|
13
|
+
function isWindows(userAgent) {
|
|
14
|
+
const windowsPattern = /(Win32)|(Win64)|(Windows)|(WinCE)/i;
|
|
15
|
+
return windowsPattern.test(userAgent);
|
|
16
|
+
}
|
|
17
|
+
function isAndroid(userAgent) {
|
|
18
|
+
const androidPattern = /Android/i;
|
|
19
|
+
return androidPattern.test(userAgent);
|
|
20
|
+
}
|
|
21
|
+
function isLinux(userAgent) {
|
|
22
|
+
const linuxPattern = /Linux/i;
|
|
23
|
+
return linuxPattern.test(userAgent);
|
|
24
|
+
}
|
|
25
|
+
function getOS() {
|
|
26
|
+
if (typeof window === "undefined") {
|
|
27
|
+
return "undetermined";
|
|
28
|
+
}
|
|
29
|
+
const { userAgent } = window.navigator;
|
|
30
|
+
if (isIOS(userAgent) || isMacOS(userAgent) && "ontouchend" in document) {
|
|
31
|
+
return "ios";
|
|
32
|
+
}
|
|
33
|
+
if (isMacOS(userAgent)) {
|
|
34
|
+
return "macos";
|
|
35
|
+
}
|
|
36
|
+
if (isWindows(userAgent)) {
|
|
37
|
+
return "windows";
|
|
38
|
+
}
|
|
39
|
+
if (isAndroid(userAgent)) {
|
|
40
|
+
return "android";
|
|
41
|
+
}
|
|
42
|
+
if (isLinux(userAgent)) {
|
|
43
|
+
return "linux";
|
|
44
|
+
}
|
|
45
|
+
return "undetermined";
|
|
46
|
+
}
|
|
47
|
+
function useOs(options = { getValueInEffect: true }) {
|
|
48
|
+
const [value, setValue] = useState(options.getValueInEffect ? "undetermined" : getOS());
|
|
49
|
+
useIsomorphicEffect(() => {
|
|
50
|
+
if (options.getValueInEffect) {
|
|
51
|
+
setValue(getOS);
|
|
52
|
+
}
|
|
53
|
+
}, []);
|
|
54
|
+
return value;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export { useOs };
|
|
58
|
+
//# sourceMappingURL=use-os.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-os.mjs","sources":["../../src/use-os/use-os.ts"],"sourcesContent":["import { useState } from 'react';\nimport { useIsomorphicEffect } from '../use-isomorphic-effect/use-isomorphic-effect';\n\nexport type OS = 'undetermined' | 'macos' | 'ios' | 'windows' | 'android' | 'linux';\n\nfunction isMacOS(userAgent: string): boolean {\n const macosPattern = /(Macintosh)|(MacIntel)|(MacPPC)|(Mac68K)/i;\n\n return macosPattern.test(userAgent);\n}\n\nfunction isIOS(userAgent: string): boolean {\n const iosPattern = /(iPhone)|(iPad)|(iPod)/i;\n\n return iosPattern.test(userAgent);\n}\n\nfunction isWindows(userAgent: string): boolean {\n const windowsPattern = /(Win32)|(Win64)|(Windows)|(WinCE)/i;\n\n return windowsPattern.test(userAgent);\n}\n\nfunction isAndroid(userAgent: string): boolean {\n const androidPattern = /Android/i;\n\n return androidPattern.test(userAgent);\n}\n\nfunction isLinux(userAgent: string): boolean {\n const linuxPattern = /Linux/i;\n\n return linuxPattern.test(userAgent);\n}\n\nfunction getOS(): OS {\n if (typeof window === 'undefined') {\n return 'undetermined';\n }\n\n const { userAgent } = window.navigator;\n\n if (isIOS(userAgent) || (isMacOS(userAgent) && 'ontouchend' in document)) {\n return 'ios';\n }\n if (isMacOS(userAgent)) {\n return 'macos';\n }\n if (isWindows(userAgent)) {\n return 'windows';\n }\n if (isAndroid(userAgent)) {\n return 'android';\n }\n if (isLinux(userAgent)) {\n return 'linux';\n }\n\n return 'undetermined';\n}\n\ninterface UseOsOptions {\n getValueInEffect: boolean;\n}\n\nexport function useOs(options: UseOsOptions = { getValueInEffect: true }): OS {\n const [value, setValue] = useState<OS>(options.getValueInEffect ? 'undetermined' : getOS());\n\n useIsomorphicEffect(() => {\n if (options.getValueInEffect) {\n setValue(getOS);\n }\n }, []);\n\n return value;\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useEffect } from 'react';
|
|
3
|
+
|
|
4
|
+
function usePageLeave(onPageLeave) {
|
|
5
|
+
useEffect(() => {
|
|
6
|
+
document.documentElement.addEventListener("mouseleave", onPageLeave);
|
|
7
|
+
return () => document.documentElement.removeEventListener("mouseleave", onPageLeave);
|
|
8
|
+
}, []);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { usePageLeave };
|
|
12
|
+
//# sourceMappingURL=use-page-leave.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-page-leave.mjs","sources":["../../src/use-page-leave/use-page-leave.ts"],"sourcesContent":["import { useEffect } from 'react';\n\nexport function usePageLeave(onPageLeave: () => void) {\n useEffect(() => {\n document.documentElement.addEventListener('mouseleave', onPageLeave);\n return () => document.documentElement.removeEventListener('mouseleave', onPageLeave);\n }, []);\n}\n"],"names":[],"mappings":";;;AAEO,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAE,CAAA,CAAA;AAC1C,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAClB,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAC,CAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,gBAAgB,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAC,CAAA;AACxE,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAmB,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAC,CAAA;AACxF,CAAG,CAAA,CAAA,CAAA,CAAE,EAAE,CAAC,CAAA;AACR,CAAA;;"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useMemo } from 'react';
|
|
3
|
+
import { useUncontrolled } from '../use-uncontrolled/use-uncontrolled.mjs';
|
|
4
|
+
|
|
5
|
+
function range(start, end) {
|
|
6
|
+
const length = end - start + 1;
|
|
7
|
+
return Array.from({ length }, (_, index) => index + start);
|
|
8
|
+
}
|
|
9
|
+
const DOTS = "dots";
|
|
10
|
+
function usePagination({
|
|
11
|
+
total,
|
|
12
|
+
siblings = 1,
|
|
13
|
+
boundaries = 1,
|
|
14
|
+
page,
|
|
15
|
+
initialPage = 1,
|
|
16
|
+
onChange
|
|
17
|
+
}) {
|
|
18
|
+
const _total = Math.max(Math.trunc(total), 0);
|
|
19
|
+
const [activePage, setActivePage] = useUncontrolled({
|
|
20
|
+
value: page,
|
|
21
|
+
onChange,
|
|
22
|
+
defaultValue: initialPage,
|
|
23
|
+
finalValue: initialPage
|
|
24
|
+
});
|
|
25
|
+
const setPage = (pageNumber) => {
|
|
26
|
+
if (pageNumber <= 0) {
|
|
27
|
+
setActivePage(1);
|
|
28
|
+
} else if (pageNumber > _total) {
|
|
29
|
+
setActivePage(_total);
|
|
30
|
+
} else {
|
|
31
|
+
setActivePage(pageNumber);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
const next = () => setPage(activePage + 1);
|
|
35
|
+
const previous = () => setPage(activePage - 1);
|
|
36
|
+
const first = () => setPage(1);
|
|
37
|
+
const last = () => setPage(_total);
|
|
38
|
+
const paginationRange = useMemo(() => {
|
|
39
|
+
const totalPageNumbers = siblings * 2 + 3 + boundaries * 2;
|
|
40
|
+
if (totalPageNumbers >= _total) {
|
|
41
|
+
return range(1, _total);
|
|
42
|
+
}
|
|
43
|
+
const leftSiblingIndex = Math.max(activePage - siblings, boundaries);
|
|
44
|
+
const rightSiblingIndex = Math.min(activePage + siblings, _total - boundaries);
|
|
45
|
+
const shouldShowLeftDots = leftSiblingIndex > boundaries + 2;
|
|
46
|
+
const shouldShowRightDots = rightSiblingIndex < _total - (boundaries + 1);
|
|
47
|
+
if (!shouldShowLeftDots && shouldShowRightDots) {
|
|
48
|
+
const leftItemCount = siblings * 2 + boundaries + 2;
|
|
49
|
+
return [...range(1, leftItemCount), DOTS, ...range(_total - (boundaries - 1), _total)];
|
|
50
|
+
}
|
|
51
|
+
if (shouldShowLeftDots && !shouldShowRightDots) {
|
|
52
|
+
const rightItemCount = boundaries + 1 + 2 * siblings;
|
|
53
|
+
return [...range(1, boundaries), DOTS, ...range(_total - rightItemCount, _total)];
|
|
54
|
+
}
|
|
55
|
+
return [
|
|
56
|
+
...range(1, boundaries),
|
|
57
|
+
DOTS,
|
|
58
|
+
...range(leftSiblingIndex, rightSiblingIndex),
|
|
59
|
+
DOTS,
|
|
60
|
+
...range(_total - boundaries + 1, _total)
|
|
61
|
+
];
|
|
62
|
+
}, [_total, siblings, activePage]);
|
|
63
|
+
return {
|
|
64
|
+
range: paginationRange,
|
|
65
|
+
active: activePage,
|
|
66
|
+
setPage,
|
|
67
|
+
next,
|
|
68
|
+
previous,
|
|
69
|
+
first,
|
|
70
|
+
last
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
export { DOTS, usePagination };
|
|
75
|
+
//# sourceMappingURL=use-pagination.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-pagination.mjs","sources":["../../src/use-pagination/use-pagination.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { useUncontrolled } from '../use-uncontrolled/use-uncontrolled';\n\nfunction range(start: number, end: number) {\n const length = end - start + 1;\n return Array.from({ length }, (_, index) => index + start);\n}\n\nexport const DOTS = 'dots';\n\nexport interface PaginationParams {\n /** Page selected on initial render, defaults to 1 */\n initialPage?: number;\n\n /** Controlled active page number */\n page?: number;\n\n /** Total amount of pages */\n total: number;\n\n /** Siblings amount on left/right side of selected page, defaults to 1 */\n siblings?: number;\n\n /** Amount of elements visible on left/right edges, defaults to 1 */\n boundaries?: number;\n\n /** Callback fired after change of each page */\n onChange?: (page: number) => void;\n}\n\nexport function usePagination({\n total,\n siblings = 1,\n boundaries = 1,\n page,\n initialPage = 1,\n onChange,\n}: PaginationParams) {\n const _total = Math.max(Math.trunc(total), 0);\n const [activePage, setActivePage] = useUncontrolled({\n value: page,\n onChange,\n defaultValue: initialPage,\n finalValue: initialPage,\n });\n\n const setPage = (pageNumber: number) => {\n if (pageNumber <= 0) {\n setActivePage(1);\n } else if (pageNumber > _total) {\n setActivePage(_total);\n } else {\n setActivePage(pageNumber);\n }\n };\n\n const next = () => setPage(activePage + 1);\n const previous = () => setPage(activePage - 1);\n const first = () => setPage(1);\n const last = () => setPage(_total);\n\n const paginationRange = useMemo((): (number | 'dots')[] => {\n const totalPageNumbers = siblings * 2 + 3 + boundaries * 2;\n if (totalPageNumbers >= _total) {\n return range(1, _total);\n }\n\n const leftSiblingIndex = Math.max(activePage - siblings, boundaries);\n const rightSiblingIndex = Math.min(activePage + siblings, _total - boundaries);\n\n const shouldShowLeftDots = leftSiblingIndex > boundaries + 2;\n const shouldShowRightDots = rightSiblingIndex < _total - (boundaries + 1);\n\n if (!shouldShowLeftDots && shouldShowRightDots) {\n const leftItemCount = siblings * 2 + boundaries + 2;\n return [...range(1, leftItemCount), DOTS, ...range(_total - (boundaries - 1), _total)];\n }\n\n if (shouldShowLeftDots && !shouldShowRightDots) {\n const rightItemCount = boundaries + 1 + 2 * siblings;\n return [...range(1, boundaries), DOTS, ...range(_total - rightItemCount, _total)];\n }\n\n return [\n ...range(1, boundaries),\n DOTS,\n ...range(leftSiblingIndex, rightSiblingIndex),\n DOTS,\n ...range(_total - boundaries + 1, _total),\n ];\n }, [_total, siblings, activePage]);\n\n return {\n range: paginationRange,\n active: activePage,\n setPage,\n next,\n previous,\n first,\n last,\n };\n}\n"],"names":[],"mappings":";;;;AAGA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAK,CAAA,CAAA,CAAA,CAAA,CAAC,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,GAAG,CAAE,CAAA,CAAA;AAC3B,CAAA,CAAE,MAAM,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,GAAG,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,GAAG,CAAC,CAAA;AAChC,CAAA,CAAE,OAAO,CAAK,CAAA,CAAA,CAAA,CAAA,CAAC,CAAI,CAAA,CAAA,CAAA,CAAC,EAAE,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CAAE,CAAA,CAAC,CAAC,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,KAAK,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,KAAK,CAAC,CAAA;AAC5D,CAAA;AACY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,IAAI,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACb,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,aAAa,CAAC,CAAA;AAC9B,CAAA,CAAE,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA;AACP,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,GAAG,CAAC,CAAA;AACd,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,GAAG,CAAC,CAAA;AAChB,CAAA,CAAE,CAAI,CAAA,CAAA,CAAA,CAAA;AACN,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,GAAG,CAAC,CAAA;AACjB,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACF,CAAC,CAAE,CAAA,CAAA;AACH,CAAA,CAAE,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAG,CAAA,CAAA,CAAC,CAAI,CAAA,CAAA,CAAA,CAAC,KAAK,CAAC,CAAA,CAAA,CAAA,CAAA,CAAK,CAAC,CAAA,CAAE,CAAC,CAAC,CAAA;AAC/C,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,aAAa,CAAC,CAAA,CAAA,CAAG,eAAe,CAAC,CAAA;AACtD,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,EAAE,CAAI,CAAA,CAAA,CAAA,CAAA;AACf,CAAA,CAAA,CAAA,CAAI,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACZ,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAY,EAAE,CAAW,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC7B,CAAA,CAAA,CAAA,CAAI,UAAU,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAChB,CAAA,CAAA,CAAG,CAAC,CAAA;AACJ,CAAA,CAAE,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAG,CAAA,CAAA,CAAC,UAAU,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA;AAClC,CAAA,CAAA,CAAA,CAAI,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAI,CAAA,CAAA,CAAA,CAAC,CAAE,CAAA,CAAA;AACzB,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CAAC,CAAC,CAAC,CAAA;AACtB,CAAA,CAAA,CAAA,CAAA,CAAK,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,MAAM,CAAE,CAAA,CAAA;AACpC,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAC,CAAA;AAC3B,CAAA,CAAA,CAAA,CAAA,CAAK,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACX,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAC,CAAA;AAC/B,CAAA,CAAA,CAAA,CAAA,CAAA;AACA,CAAG,CAAA,CAAA,CAAA;AACH,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,IAAI,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,OAAO,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAG,CAAA,CAAA,CAAC,CAAC,CAAA;AAC5C,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,QAAQ,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,OAAO,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAG,CAAA,CAAA,CAAC,CAAC,CAAA;AAChD,CAAA,CAAE,MAAM,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,MAAM,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAC,CAAC,CAAA;AAChC,CAAA,CAAE,MAAM,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,MAAM,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,MAAM,CAAC,CAAA;AACpC,CAAA,CAAE,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAe,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAC,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACxC,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,CAAC,CAAA,CAAA,CAAG,CAAC,CAAA,CAAA,CAAG,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,CAAC,CAAA;AAC9D,CAAA,CAAA,CAAA,CAAI,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAE,CAAA,CAAA;AACpC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,OAAO,CAAK,CAAA,CAAA,CAAA,CAAA,CAAC,CAAC,CAAA,CAAE,MAAM,CAAC,CAAA;AAC7B,CAAA,CAAA,CAAA,CAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAI,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAgB,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAA,CAAA,CAAG,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAC,CAAA;AACxE,CAAA,CAAA,CAAA,CAAI,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAiB,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAC,CAAG,CAAA,CAAA,CAAC,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,UAAU,CAAC,CAAA;AAClF,CAAA,CAAA,CAAA,CAAI,MAAM,CAAkB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,gBAAgB,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,GAAG,CAAC,CAAA;AAChE,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAmB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,CAAiB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,MAAM,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAG,CAAA,CAAA,CAAC,CAAC,CAAA;AAC7E,CAAA,CAAA,CAAA,CAAI,CAAI,CAAA,CAAA,CAAA,CAAC,CAAkB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,mBAAmB,CAAE,CAAA,CAAA;AACpD,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,aAAa,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAQ,GAAG,CAAC,CAAA,CAAA,CAAG,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,CAAC,CAAA;AACzD,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAC,CAAA,CAAA,CAAG,CAAK,CAAA,CAAA,CAAA,CAAA,CAAC,CAAC,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAa,CAAC,CAAA,CAAE,CAAI,CAAA,CAAA,CAAA,CAAA,CAAE,GAAG,CAAK,CAAA,CAAA,CAAA,CAAA,CAAC,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAI,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,CAAC,CAAC,CAAA,CAAE,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAC,CAAA;AAC5F,CAAA,CAAA,CAAA,CAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAI,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkB,CAAI,CAAA,CAAA,CAAA,CAAC,mBAAmB,CAAE,CAAA,CAAA;AACpD,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,cAAc,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,GAAG,CAAC,CAAA,CAAA,CAAG,CAAC,CAAA,CAAA,CAAG,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC1D,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAC,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,CAAC,CAAC,CAAA,CAAE,UAAU,CAAC,CAAA,CAAE,IAAI,CAAE,CAAA,CAAA,CAAA,CAAG,KAAK,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,GAAG,CAAc,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAC,CAAA;AACvF,CAAA,CAAA,CAAA,CAAA,CAAA;AACA,CAAA,CAAA,CAAA,CAAI,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACX,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,GAAG,CAAK,CAAA,CAAA,CAAA,CAAA,CAAC,CAAC,CAAA,CAAE,UAAU,CAAC,CAAA;AAC7B,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAI,CAAA,CAAA,CAAA,CAAA;AACV,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,GAAG,CAAK,CAAA,CAAA,CAAA,CAAA,CAAC,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,iBAAiB,CAAC,CAAA;AACnD,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAI,CAAA,CAAA,CAAA,CAAA;AACV,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,KAAK,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,GAAG,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,CAAC,CAAA,CAAE,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC9C,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA;AACL,CAAG,CAAA,CAAA,CAAA,CAAE,CAAC,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,QAAQ,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAU,CAAC,CAAC,CAAA;AACpC,CAAA,CAAE,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACT,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAK,EAAE,CAAe,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAC1B,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,EAAE,CAAU,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACtB,CAAA,CAAA,CAAA,CAAI,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACX,CAAA,CAAA,CAAA,CAAI,CAAI,CAAA,CAAA,CAAA,CAAA;AACR,CAAA,CAAA,CAAA,CAAI,CAAQ,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACZ,CAAA,CAAA,CAAA,CAAI,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA;AACT,CAAI,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACJ,CAAG,CAAA,CAAA,CAAA;AACH,CAAA;;"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useRef, useEffect } from 'react';
|
|
3
|
+
|
|
4
|
+
function usePrevious(value) {
|
|
5
|
+
const ref = useRef();
|
|
6
|
+
useEffect(() => {
|
|
7
|
+
ref.current = value;
|
|
8
|
+
}, [value]);
|
|
9
|
+
return ref.current;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export { usePrevious };
|
|
13
|
+
//# sourceMappingURL=use-previous.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-previous.mjs","sources":["../../src/use-previous/use-previous.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nexport function usePrevious<T>(value: T): T | undefined {\n const ref = useRef<T>();\n\n useEffect(() => {\n ref.current = value;\n }, [value]);\n\n return ref.current;\n}\n"],"names":[],"mappings":";;;AAEO,CAAS,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAW,CAAC,CAAA,CAAA,CAAA,CAAA,CAAK,CAAE,CAAA,CAAA;AACnC,CAAA,CAAE,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAM,CAAE,CAAA,CAAA;AACtB,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAC,CAAM,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAClB,CAAA,CAAA,CAAA,CAAI,CAAG,CAAA,CAAA,CAAC,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAG,CAAK,CAAA,CAAA,CAAA,CAAA,CAAA;AACvB,CAAA,CAAA,CAAG,CAAE,CAAA,CAAC,CAAK,CAAA,CAAA,CAAA,CAAA,CAAC,CAAC,CAAA;AACb,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,CAAG,CAAA,CAAA,CAAC,CAAO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AACpB,CAAA;;"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
|
|
4
|
+
function useQueue({ initialValues = [], limit }) {
|
|
5
|
+
const [state, setState] = useState({
|
|
6
|
+
state: initialValues.slice(0, limit),
|
|
7
|
+
queue: initialValues.slice(limit)
|
|
8
|
+
});
|
|
9
|
+
const add = (...items) => setState((current) => {
|
|
10
|
+
const results = [...current.state, ...current.queue, ...items];
|
|
11
|
+
return {
|
|
12
|
+
state: results.slice(0, limit),
|
|
13
|
+
queue: results.slice(limit)
|
|
14
|
+
};
|
|
15
|
+
});
|
|
16
|
+
const update = (fn) => setState((current) => {
|
|
17
|
+
const results = fn([...current.state, ...current.queue]);
|
|
18
|
+
return {
|
|
19
|
+
state: results.slice(0, limit),
|
|
20
|
+
queue: results.slice(limit)
|
|
21
|
+
};
|
|
22
|
+
});
|
|
23
|
+
const cleanQueue = () => setState((current) => ({ state: current.state, queue: [] }));
|
|
24
|
+
return {
|
|
25
|
+
state: state.state,
|
|
26
|
+
queue: state.queue,
|
|
27
|
+
add,
|
|
28
|
+
update,
|
|
29
|
+
cleanQueue
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export { useQueue };
|
|
34
|
+
//# sourceMappingURL=use-queue.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-queue.mjs","sources":["../../src/use-queue/use-queue.ts"],"sourcesContent":["import { useState } from 'react';\n\nexport function useQueue<T>({ initialValues = [], limit }: { initialValues?: T[]; limit: number }) {\n const [state, setState] = useState({\n state: initialValues.slice(0, limit),\n queue: initialValues.slice(limit),\n });\n\n const add = (...items: T[]) =>\n setState((current) => {\n const results = [...current.state, ...current.queue, ...items];\n\n return {\n state: results.slice(0, limit),\n queue: results.slice(limit),\n };\n });\n\n const update = (fn: (state: T[]) => T[]) =>\n setState((current) => {\n const results = fn([...current.state, ...current.queue]);\n\n return {\n state: results.slice(0, limit),\n queue: results.slice(limit),\n };\n });\n\n const cleanQueue = () => setState((current) => ({ state: current.state, queue: [] }));\n\n return {\n state: state.state,\n queue: state.queue,\n add,\n update,\n cleanQueue,\n };\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useMediaQuery } from '../use-media-query/use-media-query.mjs';
|
|
3
|
+
|
|
4
|
+
function useReducedMotion(initialValue, options) {
|
|
5
|
+
return useMediaQuery("(prefers-reduced-motion: reduce)", initialValue, options);
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export { useReducedMotion };
|
|
9
|
+
//# sourceMappingURL=use-reduced-motion.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-reduced-motion.mjs","sources":["../../src/use-reduced-motion/use-reduced-motion.ts"],"sourcesContent":["import { useMediaQuery, UseMediaQueryOptions } from '../use-media-query/use-media-query';\n\nexport function useReducedMotion(initialValue?: boolean, options?: UseMediaQueryOptions) {\n return useMediaQuery('(prefers-reduced-motion: reduce)', initialValue, options);\n}\n"],"names":[],"mappings":";;;AAEO,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAS,CAAgB,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAC,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,OAAO,CAAE,CAAA,CAAA;AACxD,CAAE,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAO,aAAa,CAAC,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAkC,EAAE,CAAY,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAE,OAAO,CAAC,CAAA;AACjF,CAAA;;"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useRef, useState, useMemo, useEffect } from 'react';
|
|
3
|
+
|
|
4
|
+
const defaultState = {
|
|
5
|
+
x: 0,
|
|
6
|
+
y: 0,
|
|
7
|
+
width: 0,
|
|
8
|
+
height: 0,
|
|
9
|
+
top: 0,
|
|
10
|
+
left: 0,
|
|
11
|
+
bottom: 0,
|
|
12
|
+
right: 0
|
|
13
|
+
};
|
|
14
|
+
function useResizeObserver(options) {
|
|
15
|
+
const frameID = useRef(0);
|
|
16
|
+
const ref = useRef(null);
|
|
17
|
+
const [rect, setRect] = useState(defaultState);
|
|
18
|
+
const observer = useMemo(
|
|
19
|
+
() => typeof window !== "undefined" ? new ResizeObserver((entries) => {
|
|
20
|
+
const entry = entries[0];
|
|
21
|
+
if (entry) {
|
|
22
|
+
cancelAnimationFrame(frameID.current);
|
|
23
|
+
frameID.current = requestAnimationFrame(() => {
|
|
24
|
+
if (ref.current) {
|
|
25
|
+
setRect(entry.contentRect);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}) : null,
|
|
30
|
+
[]
|
|
31
|
+
);
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
if (ref.current) {
|
|
34
|
+
observer?.observe(ref.current, options);
|
|
35
|
+
}
|
|
36
|
+
return () => {
|
|
37
|
+
observer?.disconnect();
|
|
38
|
+
if (frameID.current) {
|
|
39
|
+
cancelAnimationFrame(frameID.current);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
}, [ref.current]);
|
|
43
|
+
return [ref, rect];
|
|
44
|
+
}
|
|
45
|
+
function useElementSize(options) {
|
|
46
|
+
const [ref, { width, height }] = useResizeObserver(options);
|
|
47
|
+
return { ref, width, height };
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export { useElementSize, useResizeObserver };
|
|
51
|
+
//# sourceMappingURL=use-resize-observer.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-resize-observer.mjs","sources":["../../src/use-resize-observer/use-resize-observer.ts"],"sourcesContent":["import { 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: any) => {\n const entry = entries[0];\n\n if (entry) {\n cancelAnimationFrame(frameID.current);\n\n frameID.current = requestAnimationFrame(() => {\n if (ref.current) {\n setRect(entry.contentRect);\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":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { useRef, useCallback, useEffect } from 'react';
|
|
3
|
+
import { useReducedMotion } from '../use-reduced-motion/use-reduced-motion.mjs';
|
|
4
|
+
import { useWindowEvent } from '../use-window-event/use-window-event.mjs';
|
|
5
|
+
import { easeInOutQuad } from './utils/ease-in-out-quad.mjs';
|
|
6
|
+
import { getRelativePosition } from './utils/get-relative-position.mjs';
|
|
7
|
+
import { getScrollStart } from './utils/get-scroll-start.mjs';
|
|
8
|
+
import { setScrollParam } from './utils/set-scroll-param.mjs';
|
|
9
|
+
|
|
10
|
+
function useScrollIntoView({
|
|
11
|
+
duration = 1250,
|
|
12
|
+
axis = "y",
|
|
13
|
+
onScrollFinish,
|
|
14
|
+
easing = easeInOutQuad,
|
|
15
|
+
offset = 0,
|
|
16
|
+
cancelable = true,
|
|
17
|
+
isList = false
|
|
18
|
+
} = {}) {
|
|
19
|
+
const frameID = useRef(0);
|
|
20
|
+
const startTime = useRef(0);
|
|
21
|
+
const shouldStop = useRef(false);
|
|
22
|
+
const scrollableRef = useRef(null);
|
|
23
|
+
const targetRef = useRef(null);
|
|
24
|
+
const reducedMotion = useReducedMotion();
|
|
25
|
+
const cancel = () => {
|
|
26
|
+
if (frameID.current) {
|
|
27
|
+
cancelAnimationFrame(frameID.current);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
const scrollIntoView = useCallback(
|
|
31
|
+
({ alignment = "start" } = {}) => {
|
|
32
|
+
shouldStop.current = false;
|
|
33
|
+
if (frameID.current) {
|
|
34
|
+
cancel();
|
|
35
|
+
}
|
|
36
|
+
const start = getScrollStart({ parent: scrollableRef.current, axis }) ?? 0;
|
|
37
|
+
const change = getRelativePosition({
|
|
38
|
+
parent: scrollableRef.current,
|
|
39
|
+
target: targetRef.current,
|
|
40
|
+
axis,
|
|
41
|
+
alignment,
|
|
42
|
+
offset,
|
|
43
|
+
isList
|
|
44
|
+
}) - (scrollableRef.current ? 0 : start);
|
|
45
|
+
function animateScroll() {
|
|
46
|
+
if (startTime.current === 0) {
|
|
47
|
+
startTime.current = performance.now();
|
|
48
|
+
}
|
|
49
|
+
const now = performance.now();
|
|
50
|
+
const elapsed = now - startTime.current;
|
|
51
|
+
const t = reducedMotion || duration === 0 ? 1 : elapsed / duration;
|
|
52
|
+
const distance = start + change * easing(t);
|
|
53
|
+
setScrollParam({
|
|
54
|
+
parent: scrollableRef.current,
|
|
55
|
+
axis,
|
|
56
|
+
distance
|
|
57
|
+
});
|
|
58
|
+
if (!shouldStop.current && t < 1) {
|
|
59
|
+
frameID.current = requestAnimationFrame(animateScroll);
|
|
60
|
+
} else {
|
|
61
|
+
typeof onScrollFinish === "function" && onScrollFinish();
|
|
62
|
+
startTime.current = 0;
|
|
63
|
+
frameID.current = 0;
|
|
64
|
+
cancel();
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
animateScroll();
|
|
68
|
+
},
|
|
69
|
+
[axis, duration, easing, isList, offset, onScrollFinish, reducedMotion]
|
|
70
|
+
);
|
|
71
|
+
const handleStop = () => {
|
|
72
|
+
if (cancelable) {
|
|
73
|
+
shouldStop.current = true;
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
useWindowEvent("wheel", handleStop, {
|
|
77
|
+
passive: true
|
|
78
|
+
});
|
|
79
|
+
useWindowEvent("touchmove", handleStop, {
|
|
80
|
+
passive: true
|
|
81
|
+
});
|
|
82
|
+
useEffect(() => cancel, []);
|
|
83
|
+
return {
|
|
84
|
+
scrollableRef,
|
|
85
|
+
targetRef,
|
|
86
|
+
scrollIntoView,
|
|
87
|
+
cancel
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export { useScrollIntoView };
|
|
92
|
+
//# sourceMappingURL=use-scroll-into-view.mjs.map
|