@mantine/hooks 6.0.11 → 7.0.0-alpha.10
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.js +6 -4
- package/cjs/index.js.map +1 -1
- package/cjs/use-callback-ref/use-callback-ref.js +16 -0
- package/cjs/use-callback-ref/use-callback-ref.js.map +1 -0
- package/cjs/use-click-outside/use-click-outside.js +21 -19
- package/cjs/use-click-outside/use-click-outside.js.map +1 -1
- package/cjs/use-clipboard/use-clipboard.js +26 -22
- package/cjs/use-clipboard/use-clipboard.js.map +1 -1
- package/cjs/use-color-scheme/use-color-scheme.js +3 -1
- package/cjs/use-color-scheme/use-color-scheme.js.map +1 -1
- package/cjs/use-counter/use-counter.js +9 -25
- package/cjs/use-counter/use-counter.js.map +1 -1
- package/cjs/use-debounced-callback/use-debounced-callback.js +19 -0
- package/cjs/use-debounced-callback/use-debounced-callback.js.map +1 -0
- package/cjs/use-debounced-state/use-debounced-state.js +19 -18
- package/cjs/use-debounced-state/use-debounced-state.js.map +1 -1
- package/cjs/use-debounced-value/use-debounced-value.js +25 -24
- package/cjs/use-debounced-value/use-debounced-value.js.map +1 -1
- package/cjs/use-did-update/use-did-update.js +11 -11
- package/cjs/use-did-update/use-did-update.js.map +1 -1
- package/cjs/use-disclosure/use-disclosure.js +24 -24
- package/cjs/use-disclosure/use-disclosure.js.map +1 -1
- package/cjs/use-document-title/use-document-title.js +5 -5
- package/cjs/use-document-title/use-document-title.js.map +1 -1
- package/cjs/use-document-visibility/use-document-visibility.js +7 -7
- package/cjs/use-document-visibility/use-document-visibility.js.map +1 -1
- package/cjs/use-event-listener/use-event-listener.js +9 -12
- package/cjs/use-event-listener/use-event-listener.js.map +1 -1
- package/cjs/use-eye-dropper/use-eye-dropper.js +12 -12
- package/cjs/use-eye-dropper/use-eye-dropper.js.map +1 -1
- package/cjs/use-favicon/use-favicon.js +23 -21
- package/cjs/use-favicon/use-favicon.js.map +1 -1
- package/cjs/use-focus-return/use-focus-return.js +29 -25
- package/cjs/use-focus-return/use-focus-return.js.map +1 -1
- package/cjs/use-focus-trap/create-aria-hider.js +36 -34
- package/cjs/use-focus-trap/create-aria-hider.js.map +1 -1
- package/cjs/use-focus-trap/scope-tab.js +15 -15
- package/cjs/use-focus-trap/scope-tab.js.map +1 -1
- package/cjs/use-focus-trap/tabbable.js +36 -31
- package/cjs/use-focus-trap/tabbable.js.map +1 -1
- package/cjs/use-focus-trap/use-focus-trap.js +67 -61
- package/cjs/use-focus-trap/use-focus-trap.js.map +1 -1
- package/cjs/use-focus-within/use-focus-within.js +37 -40
- package/cjs/use-focus-within/use-focus-within.js.map +1 -1
- package/cjs/use-force-update/use-force-update.js +3 -3
- package/cjs/use-force-update/use-force-update.js.map +1 -1
- package/cjs/use-fullscreen/use-fullscreen.js +83 -71
- package/cjs/use-fullscreen/use-fullscreen.js.map +1 -1
- package/cjs/use-hash/use-hash.js +16 -16
- package/cjs/use-hash/use-hash.js.map +1 -1
- package/cjs/use-headroom/use-headroom.js +23 -23
- package/cjs/use-headroom/use-headroom.js.map +1 -1
- package/cjs/use-hotkeys/parse-hotkey.js +49 -64
- package/cjs/use-hotkeys/parse-hotkey.js.map +1 -1
- package/cjs/use-hotkeys/use-hotkeys.js +22 -21
- package/cjs/use-hotkeys/use-hotkeys.js.map +1 -1
- package/cjs/use-hover/use-hover.js +17 -17
- package/cjs/use-hover/use-hover.js.map +1 -1
- package/cjs/use-id/use-id.js +12 -12
- package/cjs/use-id/use-id.js.map +1 -1
- package/cjs/use-id/use-react-id.js +3 -3
- package/cjs/use-id/use-react-id.js.map +1 -1
- package/cjs/use-idle/use-idle.js +26 -42
- package/cjs/use-idle/use-idle.js.map +1 -1
- package/cjs/use-input-state/use-input-state.js +22 -18
- package/cjs/use-input-state/use-input-state.js.map +1 -1
- package/cjs/use-intersection/use-intersection.js +17 -17
- package/cjs/use-intersection/use-intersection.js.map +1 -1
- package/cjs/use-interval/use-interval.js +28 -27
- package/cjs/use-interval/use-interval.js.map +1 -1
- package/cjs/use-isomorphic-effect/use-isomorphic-effect.js +3 -1
- package/cjs/use-isomorphic-effect/use-isomorphic-effect.js.map +1 -1
- package/cjs/use-list-state/use-list-state.js +55 -74
- package/cjs/use-list-state/use-list-state.js.map +1 -1
- package/cjs/use-local-storage/create-storage.js +70 -70
- package/cjs/use-local-storage/create-storage.js.map +1 -1
- package/cjs/use-local-storage/use-local-storage.js +1 -1
- package/cjs/use-local-storage/use-local-storage.js.map +1 -1
- package/cjs/use-logger/use-logger.js +9 -8
- package/cjs/use-logger/use-logger.js.map +1 -1
- package/cjs/use-media-query/use-media-query.js +31 -26
- package/cjs/use-media-query/use-media-query.js.map +1 -1
- package/cjs/use-merged-ref/use-merged-ref.js +14 -5
- package/cjs/use-merged-ref/use-merged-ref.js.map +1 -1
- package/cjs/use-mouse/use-mouse.js +25 -40
- package/cjs/use-mouse/use-mouse.js.map +1 -1
- package/cjs/use-move/use-move.js +88 -86
- package/cjs/use-move/use-move.js.map +1 -1
- package/cjs/use-network/use-network.js +32 -48
- package/cjs/use-network/use-network.js.map +1 -1
- package/cjs/use-os/use-os.js +30 -30
- package/cjs/use-os/use-os.js.map +1 -1
- package/cjs/use-page-leave/use-page-leave.js +4 -4
- package/cjs/use-page-leave/use-page-leave.js.map +1 -1
- package/cjs/use-pagination/use-pagination.js +58 -63
- package/cjs/use-pagination/use-pagination.js.map +1 -1
- package/cjs/use-previous/use-previous.js +5 -5
- package/cjs/use-previous/use-previous.js.map +1 -1
- package/cjs/use-queue/use-queue.js +24 -24
- package/cjs/use-queue/use-queue.js.map +1 -1
- package/cjs/use-reduced-motion/use-reduced-motion.js +1 -1
- package/cjs/use-reduced-motion/use-reduced-motion.js.map +1 -1
- package/cjs/use-resize-observer/use-resize-observer.js +36 -34
- package/cjs/use-resize-observer/use-resize-observer.js.map +1 -1
- package/cjs/use-scroll-into-view/use-scroll-into-view.js +77 -77
- package/cjs/use-scroll-into-view/use-scroll-into-view.js.map +1 -1
- package/cjs/use-scroll-into-view/utils/ease-in-out-quad.js +1 -1
- package/cjs/use-scroll-into-view/utils/ease-in-out-quad.js.map +1 -1
- package/cjs/use-scroll-into-view/utils/get-relative-position.js +46 -53
- package/cjs/use-scroll-into-view/utils/get-relative-position.js.map +1 -1
- package/cjs/use-scroll-into-view/utils/get-scroll-start.js +10 -9
- package/cjs/use-scroll-into-view/utils/get-scroll-start.js.map +1 -1
- package/cjs/use-scroll-into-view/utils/set-scroll-param.js +14 -11
- package/cjs/use-scroll-into-view/utils/set-scroll-param.js.map +1 -1
- package/cjs/use-session-storage/use-session-storage.js +1 -1
- package/cjs/use-session-storage/use-session-storage.js.map +1 -1
- package/cjs/use-set-state/use-set-state.js +3 -19
- package/cjs/use-set-state/use-set-state.js.map +1 -1
- package/cjs/use-shallow-effect/use-shallow-effect.js +22 -22
- package/cjs/use-shallow-effect/use-shallow-effect.js.map +1 -1
- package/cjs/use-text-selection/use-text-selection.js +12 -12
- package/cjs/use-text-selection/use-text-selection.js.map +1 -1
- package/cjs/use-timeout/use-timeout.js +22 -26
- package/cjs/use-timeout/use-timeout.js.map +1 -1
- package/cjs/use-toggle/use-toggle.js +6 -6
- package/cjs/use-toggle/use-toggle.js.map +1 -1
- package/cjs/use-uncontrolled/use-uncontrolled.js +10 -16
- package/cjs/use-uncontrolled/use-uncontrolled.js.map +1 -1
- package/cjs/use-validated-state/use-validated-state.js +14 -13
- package/cjs/use-validated-state/use-validated-state.js.map +1 -1
- package/cjs/use-viewport-size/use-viewport-size.js +12 -12
- package/cjs/use-viewport-size/use-viewport-size.js.map +1 -1
- package/cjs/use-window-event/use-window-event.js +4 -4
- package/cjs/use-window-event/use-window-event.js.map +1 -1
- package/cjs/use-window-scroll/use-window-scroll.js +19 -17
- package/cjs/use-window-scroll/use-window-scroll.js.map +1 -1
- package/cjs/utils/clamp/clamp.js +1 -1
- package/cjs/utils/clamp/clamp.js.map +1 -1
- package/cjs/utils/lower-first/lower-first.js +1 -1
- package/cjs/utils/lower-first/lower-first.js.map +1 -1
- package/cjs/utils/random-id/random-id.js +1 -1
- package/cjs/utils/random-id/random-id.js.map +1 -1
- package/cjs/utils/range/range.js +2 -2
- package/cjs/utils/range/range.js.map +1 -1
- package/cjs/utils/shallow-equal/shallow-equal.js +19 -19
- package/cjs/utils/shallow-equal/shallow-equal.js.map +1 -1
- package/cjs/utils/upper-first/upper-first.js +1 -1
- package/cjs/utils/upper-first/upper-first.js.map +1 -1
- package/esm/index.js +4 -3
- package/esm/index.js.map +1 -1
- package/esm/use-callback-ref/use-callback-ref.js +12 -0
- package/esm/use-callback-ref/use-callback-ref.js.map +1 -0
- package/esm/use-click-outside/use-click-outside.js +21 -19
- package/esm/use-click-outside/use-click-outside.js.map +1 -1
- package/esm/use-clipboard/use-clipboard.js +26 -22
- package/esm/use-clipboard/use-clipboard.js.map +1 -1
- package/esm/use-color-scheme/use-color-scheme.js +3 -1
- package/esm/use-color-scheme/use-color-scheme.js.map +1 -1
- package/esm/use-counter/use-counter.js +9 -25
- package/esm/use-counter/use-counter.js.map +1 -1
- package/esm/use-debounced-callback/use-debounced-callback.js +15 -0
- package/esm/use-debounced-callback/use-debounced-callback.js.map +1 -0
- package/esm/use-debounced-state/use-debounced-state.js +19 -18
- package/esm/use-debounced-state/use-debounced-state.js.map +1 -1
- package/esm/use-debounced-value/use-debounced-value.js +25 -24
- package/esm/use-debounced-value/use-debounced-value.js.map +1 -1
- package/esm/use-did-update/use-did-update.js +11 -11
- package/esm/use-did-update/use-did-update.js.map +1 -1
- package/esm/use-disclosure/use-disclosure.js +24 -24
- package/esm/use-disclosure/use-disclosure.js.map +1 -1
- package/esm/use-document-title/use-document-title.js +5 -5
- package/esm/use-document-title/use-document-title.js.map +1 -1
- package/esm/use-document-visibility/use-document-visibility.js +7 -7
- package/esm/use-document-visibility/use-document-visibility.js.map +1 -1
- package/esm/use-event-listener/use-event-listener.js +9 -12
- package/esm/use-event-listener/use-event-listener.js.map +1 -1
- package/esm/use-eye-dropper/use-eye-dropper.js +12 -12
- package/esm/use-eye-dropper/use-eye-dropper.js.map +1 -1
- package/esm/use-favicon/use-favicon.js +23 -21
- package/esm/use-favicon/use-favicon.js.map +1 -1
- package/esm/use-focus-return/use-focus-return.js +29 -25
- package/esm/use-focus-return/use-focus-return.js.map +1 -1
- package/esm/use-focus-trap/create-aria-hider.js +36 -34
- package/esm/use-focus-trap/create-aria-hider.js.map +1 -1
- package/esm/use-focus-trap/scope-tab.js +15 -15
- package/esm/use-focus-trap/scope-tab.js.map +1 -1
- package/esm/use-focus-trap/tabbable.js +36 -31
- package/esm/use-focus-trap/tabbable.js.map +1 -1
- package/esm/use-focus-trap/use-focus-trap.js +67 -61
- package/esm/use-focus-trap/use-focus-trap.js.map +1 -1
- package/esm/use-focus-within/use-focus-within.js +37 -40
- package/esm/use-focus-within/use-focus-within.js.map +1 -1
- package/esm/use-force-update/use-force-update.js +3 -3
- package/esm/use-force-update/use-force-update.js.map +1 -1
- package/esm/use-fullscreen/use-fullscreen.js +83 -71
- package/esm/use-fullscreen/use-fullscreen.js.map +1 -1
- package/esm/use-hash/use-hash.js +16 -16
- package/esm/use-hash/use-hash.js.map +1 -1
- package/esm/use-headroom/use-headroom.js +23 -23
- package/esm/use-headroom/use-headroom.js.map +1 -1
- package/esm/use-hotkeys/parse-hotkey.js +49 -64
- package/esm/use-hotkeys/parse-hotkey.js.map +1 -1
- package/esm/use-hotkeys/use-hotkeys.js +22 -21
- package/esm/use-hotkeys/use-hotkeys.js.map +1 -1
- package/esm/use-hover/use-hover.js +17 -17
- package/esm/use-hover/use-hover.js.map +1 -1
- package/esm/use-id/use-id.js +12 -12
- package/esm/use-id/use-id.js.map +1 -1
- package/esm/use-id/use-react-id.js +3 -3
- package/esm/use-id/use-react-id.js.map +1 -1
- package/esm/use-idle/use-idle.js +26 -42
- package/esm/use-idle/use-idle.js.map +1 -1
- package/esm/use-input-state/use-input-state.js +22 -18
- package/esm/use-input-state/use-input-state.js.map +1 -1
- package/esm/use-intersection/use-intersection.js +17 -17
- package/esm/use-intersection/use-intersection.js.map +1 -1
- package/esm/use-interval/use-interval.js +28 -27
- package/esm/use-interval/use-interval.js.map +1 -1
- package/esm/use-isomorphic-effect/use-isomorphic-effect.js +3 -1
- package/esm/use-isomorphic-effect/use-isomorphic-effect.js.map +1 -1
- package/esm/use-list-state/use-list-state.js +55 -74
- package/esm/use-list-state/use-list-state.js.map +1 -1
- package/esm/use-local-storage/create-storage.js +70 -70
- package/esm/use-local-storage/create-storage.js.map +1 -1
- package/esm/use-local-storage/use-local-storage.js +1 -1
- package/esm/use-local-storage/use-local-storage.js.map +1 -1
- package/esm/use-logger/use-logger.js +9 -8
- package/esm/use-logger/use-logger.js.map +1 -1
- package/esm/use-media-query/use-media-query.js +31 -26
- package/esm/use-media-query/use-media-query.js.map +1 -1
- package/esm/use-merged-ref/use-merged-ref.js +14 -6
- package/esm/use-merged-ref/use-merged-ref.js.map +1 -1
- package/esm/use-mouse/use-mouse.js +25 -40
- package/esm/use-mouse/use-mouse.js.map +1 -1
- package/esm/use-move/use-move.js +88 -86
- package/esm/use-move/use-move.js.map +1 -1
- package/esm/use-network/use-network.js +32 -48
- package/esm/use-network/use-network.js.map +1 -1
- package/esm/use-os/use-os.js +30 -30
- package/esm/use-os/use-os.js.map +1 -1
- package/esm/use-page-leave/use-page-leave.js +4 -4
- package/esm/use-page-leave/use-page-leave.js.map +1 -1
- package/esm/use-pagination/use-pagination.js +58 -63
- package/esm/use-pagination/use-pagination.js.map +1 -1
- package/esm/use-previous/use-previous.js +5 -5
- package/esm/use-previous/use-previous.js.map +1 -1
- package/esm/use-queue/use-queue.js +24 -24
- package/esm/use-queue/use-queue.js.map +1 -1
- package/esm/use-reduced-motion/use-reduced-motion.js +1 -1
- package/esm/use-reduced-motion/use-reduced-motion.js.map +1 -1
- package/esm/use-resize-observer/use-resize-observer.js +36 -34
- package/esm/use-resize-observer/use-resize-observer.js.map +1 -1
- package/esm/use-scroll-into-view/use-scroll-into-view.js +77 -77
- package/esm/use-scroll-into-view/use-scroll-into-view.js.map +1 -1
- package/esm/use-scroll-into-view/utils/ease-in-out-quad.js +1 -1
- package/esm/use-scroll-into-view/utils/ease-in-out-quad.js.map +1 -1
- package/esm/use-scroll-into-view/utils/get-relative-position.js +46 -53
- package/esm/use-scroll-into-view/utils/get-relative-position.js.map +1 -1
- package/esm/use-scroll-into-view/utils/get-scroll-start.js +10 -9
- package/esm/use-scroll-into-view/utils/get-scroll-start.js.map +1 -1
- package/esm/use-scroll-into-view/utils/set-scroll-param.js +14 -11
- package/esm/use-scroll-into-view/utils/set-scroll-param.js.map +1 -1
- package/esm/use-session-storage/use-session-storage.js +1 -1
- package/esm/use-session-storage/use-session-storage.js.map +1 -1
- package/esm/use-set-state/use-set-state.js +3 -19
- package/esm/use-set-state/use-set-state.js.map +1 -1
- package/esm/use-shallow-effect/use-shallow-effect.js +22 -22
- package/esm/use-shallow-effect/use-shallow-effect.js.map +1 -1
- package/esm/use-text-selection/use-text-selection.js +12 -12
- package/esm/use-text-selection/use-text-selection.js.map +1 -1
- package/esm/use-timeout/use-timeout.js +23 -27
- package/esm/use-timeout/use-timeout.js.map +1 -1
- package/esm/use-toggle/use-toggle.js +6 -6
- package/esm/use-toggle/use-toggle.js.map +1 -1
- package/esm/use-uncontrolled/use-uncontrolled.js +10 -16
- package/esm/use-uncontrolled/use-uncontrolled.js.map +1 -1
- package/esm/use-validated-state/use-validated-state.js +14 -13
- package/esm/use-validated-state/use-validated-state.js.map +1 -1
- package/esm/use-viewport-size/use-viewport-size.js +12 -12
- package/esm/use-viewport-size/use-viewport-size.js.map +1 -1
- package/esm/use-window-event/use-window-event.js +4 -4
- package/esm/use-window-event/use-window-event.js.map +1 -1
- package/esm/use-window-scroll/use-window-scroll.js +19 -17
- package/esm/use-window-scroll/use-window-scroll.js.map +1 -1
- package/esm/utils/clamp/clamp.js +1 -1
- package/esm/utils/clamp/clamp.js.map +1 -1
- package/esm/utils/lower-first/lower-first.js +1 -1
- package/esm/utils/lower-first/lower-first.js.map +1 -1
- package/esm/utils/random-id/random-id.js +1 -1
- package/esm/utils/random-id/random-id.js.map +1 -1
- package/esm/utils/range/range.js +2 -2
- package/esm/utils/range/range.js.map +1 -1
- package/esm/utils/shallow-equal/shallow-equal.js +19 -19
- package/esm/utils/shallow-equal/shallow-equal.js.map +1 -1
- package/esm/utils/upper-first/upper-first.js +1 -1
- package/esm/utils/upper-first/upper-first.js.map +1 -1
- package/lib/index.d.ts +4 -3
- package/lib/use-callback-ref/use-callback-ref.d.ts +1 -0
- package/lib/use-click-outside/use-click-outside.d.ts +1 -2
- package/lib/use-clipboard/use-clipboard.d.ts +2 -3
- package/lib/use-color-scheme/use-color-scheme.d.ts +0 -1
- package/lib/use-counter/use-counter.d.ts +0 -1
- package/lib/use-debounced-callback/use-debounced-callback.d.ts +1 -0
- package/lib/use-debounced-state/use-debounced-state.d.ts +0 -1
- package/lib/use-debounced-value/use-debounced-value.d.ts +0 -1
- package/lib/use-did-update/use-did-update.d.ts +0 -1
- package/lib/use-disclosure/use-disclosure.d.ts +0 -1
- package/lib/use-document-title/use-document-title.d.ts +0 -1
- package/lib/use-document-visibility/use-document-visibility.d.ts +0 -1
- package/lib/use-event-listener/use-event-listener.d.ts +1 -2
- package/lib/use-eye-dropper/use-eye-dropper.d.ts +1 -2
- package/lib/use-favicon/use-favicon.d.ts +0 -1
- package/lib/use-focus-return/use-focus-return.d.ts +0 -1
- package/lib/use-focus-trap/create-aria-hider.d.ts +0 -1
- package/lib/use-focus-trap/scope-tab.d.ts +0 -1
- package/lib/use-focus-trap/tabbable.d.ts +2 -3
- package/lib/use-focus-trap/use-focus-trap.d.ts +0 -1
- package/lib/use-focus-within/use-focus-within.d.ts +0 -1
- package/lib/use-force-update/use-force-update.d.ts +0 -1
- package/lib/use-fullscreen/use-fullscreen.d.ts +0 -1
- package/lib/use-hash/use-hash.d.ts +0 -1
- package/lib/use-headroom/use-headroom.d.ts +0 -1
- package/lib/use-hotkeys/parse-hotkey.d.ts +0 -1
- package/lib/use-hotkeys/use-hotkeys.d.ts +0 -1
- package/lib/use-hover/use-hover.d.ts +1 -2
- package/lib/use-id/use-id.d.ts +0 -1
- package/lib/use-id/use-react-id.d.ts +0 -1
- package/lib/use-idle/use-idle.d.ts +0 -1
- package/lib/use-input-state/use-input-state.d.ts +1 -2
- package/lib/use-intersection/use-intersection.d.ts +1 -2
- package/lib/use-interval/use-interval.d.ts +0 -1
- package/lib/use-isomorphic-effect/use-isomorphic-effect.d.ts +0 -1
- package/lib/use-list-state/use-list-state.d.ts +0 -1
- package/lib/use-local-storage/create-storage.d.ts +4 -5
- package/lib/use-local-storage/use-local-storage.d.ts +1 -2
- package/lib/use-logger/use-logger.d.ts +1 -2
- package/lib/use-media-query/use-media-query.d.ts +1 -2
- package/lib/use-merged-ref/use-merged-ref.d.ts +5 -5
- package/lib/use-mouse/use-mouse.d.ts +1 -2
- package/lib/use-move/use-move.d.ts +1 -2
- package/lib/use-network/use-network.d.ts +0 -1
- package/lib/use-os/use-os.d.ts +0 -1
- package/lib/use-page-leave/use-page-leave.d.ts +0 -1
- package/lib/use-pagination/use-pagination.d.ts +0 -1
- package/lib/use-previous/use-previous.d.ts +0 -1
- package/lib/use-queue/use-queue.d.ts +0 -1
- package/lib/use-reduced-motion/use-reduced-motion.d.ts +1 -2
- package/lib/use-resize-observer/use-resize-observer.d.ts +2 -3
- package/lib/use-scroll-into-view/use-scroll-into-view.d.ts +2 -3
- package/lib/use-scroll-into-view/utils/ease-in-out-quad.d.ts +0 -1
- package/lib/use-scroll-into-view/utils/get-relative-position.d.ts +1 -9
- package/lib/use-scroll-into-view/utils/get-scroll-start.d.ts +1 -5
- package/lib/use-scroll-into-view/utils/set-scroll-param.d.ts +1 -6
- package/lib/use-session-storage/use-session-storage.d.ts +1 -2
- package/lib/use-set-state/use-set-state.d.ts +0 -1
- package/lib/use-shallow-effect/use-shallow-effect.d.ts +0 -1
- package/lib/use-text-selection/use-text-selection.d.ts +0 -1
- package/lib/use-timeout/use-timeout.d.ts +0 -1
- package/lib/use-toggle/use-toggle.d.ts +0 -1
- package/lib/use-uncontrolled/use-uncontrolled.d.ts +0 -1
- package/lib/use-validated-state/use-validated-state.d.ts +1 -2
- package/lib/use-viewport-size/use-viewport-size.d.ts +0 -1
- package/lib/use-window-event/use-window-event.d.ts +0 -1
- package/lib/use-window-scroll/use-window-scroll.d.ts +0 -1
- package/lib/utils/clamp/clamp.d.ts +0 -1
- package/lib/utils/index.d.ts +0 -2
- package/lib/utils/lower-first/lower-first.d.ts +0 -1
- package/lib/utils/random-id/random-id.d.ts +0 -1
- package/lib/utils/range/range.d.ts +0 -1
- package/lib/utils/shallow-equal/shallow-equal.d.ts +0 -1
- package/lib/utils/upper-first/upper-first.d.ts +0 -1
- package/package.json +11 -5
- package/cjs/use-scroll-lock/use-scroll-lock.js +0 -54
- package/cjs/use-scroll-lock/use-scroll-lock.js.map +0 -1
- package/cjs/use-scroll-lock/utils/get-lock-styles.js +0 -20
- package/cjs/use-scroll-lock/utils/get-lock-styles.js.map +0 -1
- package/cjs/use-scroll-lock/utils/get-scroll-width.js +0 -14
- package/cjs/use-scroll-lock/utils/get-scroll-width.js.map +0 -1
- package/cjs/use-scroll-lock/utils/inject-style-tag.js +0 -14
- package/cjs/use-scroll-lock/utils/inject-style-tag.js.map +0 -1
- package/cjs/use-scroll-lock/utils/insert-style-tag.js +0 -11
- package/cjs/use-scroll-lock/utils/insert-style-tag.js.map +0 -1
- package/cjs/use-scroll-lock/utils/make-style-tag.js +0 -13
- package/cjs/use-scroll-lock/utils/make-style-tag.js.map +0 -1
- package/cjs/utils/assign-ref/assign-ref.js +0 -14
- package/cjs/utils/assign-ref/assign-ref.js.map +0 -1
- package/esm/use-scroll-lock/use-scroll-lock.js +0 -50
- package/esm/use-scroll-lock/use-scroll-lock.js.map +0 -1
- package/esm/use-scroll-lock/utils/get-lock-styles.js +0 -16
- package/esm/use-scroll-lock/utils/get-lock-styles.js.map +0 -1
- package/esm/use-scroll-lock/utils/get-scroll-width.js +0 -10
- package/esm/use-scroll-lock/utils/get-scroll-width.js.map +0 -1
- package/esm/use-scroll-lock/utils/inject-style-tag.js +0 -10
- package/esm/use-scroll-lock/utils/inject-style-tag.js.map +0 -1
- package/esm/use-scroll-lock/utils/insert-style-tag.js +0 -7
- package/esm/use-scroll-lock/utils/insert-style-tag.js.map +0 -1
- package/esm/use-scroll-lock/utils/make-style-tag.js +0 -9
- package/esm/use-scroll-lock/utils/make-style-tag.js.map +0 -1
- package/esm/utils/assign-ref/assign-ref.js +0 -10
- package/esm/utils/assign-ref/assign-ref.js.map +0 -1
- package/lib/index.d.ts.map +0 -1
- package/lib/use-click-outside/use-click-outside.d.ts.map +0 -1
- package/lib/use-clipboard/use-clipboard.d.ts.map +0 -1
- package/lib/use-color-scheme/use-color-scheme.d.ts.map +0 -1
- package/lib/use-counter/use-counter.d.ts.map +0 -1
- package/lib/use-debounced-state/use-debounced-state.d.ts.map +0 -1
- package/lib/use-debounced-value/use-debounced-value.d.ts.map +0 -1
- package/lib/use-did-update/use-did-update.d.ts.map +0 -1
- package/lib/use-disclosure/use-disclosure.d.ts.map +0 -1
- package/lib/use-document-title/use-document-title.d.ts.map +0 -1
- package/lib/use-document-visibility/use-document-visibility.d.ts.map +0 -1
- package/lib/use-event-listener/use-event-listener.d.ts.map +0 -1
- package/lib/use-eye-dropper/use-eye-dropper.d.ts.map +0 -1
- package/lib/use-favicon/use-favicon.d.ts.map +0 -1
- package/lib/use-focus-return/use-focus-return.d.ts.map +0 -1
- package/lib/use-focus-trap/create-aria-hider.d.ts.map +0 -1
- package/lib/use-focus-trap/scope-tab.d.ts.map +0 -1
- package/lib/use-focus-trap/tabbable.d.ts.map +0 -1
- package/lib/use-focus-trap/use-focus-trap.d.ts.map +0 -1
- package/lib/use-focus-within/use-focus-within.d.ts.map +0 -1
- package/lib/use-force-update/use-force-update.d.ts.map +0 -1
- package/lib/use-fullscreen/use-fullscreen.d.ts.map +0 -1
- package/lib/use-hash/use-hash.d.ts.map +0 -1
- package/lib/use-headroom/use-headroom.d.ts.map +0 -1
- package/lib/use-hotkeys/parse-hotkey.d.ts.map +0 -1
- package/lib/use-hotkeys/use-hotkeys.d.ts.map +0 -1
- package/lib/use-hover/use-hover.d.ts.map +0 -1
- package/lib/use-id/use-id.d.ts.map +0 -1
- package/lib/use-id/use-react-id.d.ts.map +0 -1
- package/lib/use-idle/use-idle.d.ts.map +0 -1
- package/lib/use-input-state/use-input-state.d.ts.map +0 -1
- package/lib/use-intersection/use-intersection.d.ts.map +0 -1
- package/lib/use-interval/use-interval.d.ts.map +0 -1
- package/lib/use-isomorphic-effect/use-isomorphic-effect.d.ts.map +0 -1
- package/lib/use-list-state/use-list-state.d.ts.map +0 -1
- package/lib/use-local-storage/create-storage.d.ts.map +0 -1
- package/lib/use-local-storage/use-local-storage.d.ts.map +0 -1
- package/lib/use-logger/use-logger.d.ts.map +0 -1
- package/lib/use-media-query/use-media-query.d.ts.map +0 -1
- package/lib/use-merged-ref/use-merged-ref.d.ts.map +0 -1
- package/lib/use-mouse/use-mouse.d.ts.map +0 -1
- package/lib/use-move/use-move.d.ts.map +0 -1
- package/lib/use-network/use-network.d.ts.map +0 -1
- package/lib/use-os/use-os.d.ts.map +0 -1
- package/lib/use-page-leave/use-page-leave.d.ts.map +0 -1
- package/lib/use-pagination/use-pagination.d.ts.map +0 -1
- package/lib/use-previous/use-previous.d.ts.map +0 -1
- package/lib/use-queue/use-queue.d.ts.map +0 -1
- package/lib/use-reduced-motion/use-reduced-motion.d.ts.map +0 -1
- package/lib/use-resize-observer/use-resize-observer.d.ts.map +0 -1
- package/lib/use-scroll-into-view/use-scroll-into-view.d.ts.map +0 -1
- package/lib/use-scroll-into-view/utils/ease-in-out-quad.d.ts.map +0 -1
- package/lib/use-scroll-into-view/utils/get-relative-position.d.ts.map +0 -1
- package/lib/use-scroll-into-view/utils/get-scroll-start.d.ts.map +0 -1
- package/lib/use-scroll-into-view/utils/set-scroll-param.d.ts.map +0 -1
- package/lib/use-scroll-lock/use-scroll-lock.d.ts +0 -5
- package/lib/use-scroll-lock/use-scroll-lock.d.ts.map +0 -1
- package/lib/use-scroll-lock/utils/get-lock-styles.d.ts +0 -4
- package/lib/use-scroll-lock/utils/get-lock-styles.d.ts.map +0 -1
- package/lib/use-scroll-lock/utils/get-scroll-width.d.ts +0 -2
- package/lib/use-scroll-lock/utils/get-scroll-width.d.ts.map +0 -1
- package/lib/use-scroll-lock/utils/inject-style-tag.d.ts +0 -2
- package/lib/use-scroll-lock/utils/inject-style-tag.d.ts.map +0 -1
- package/lib/use-scroll-lock/utils/insert-style-tag.d.ts +0 -2
- package/lib/use-scroll-lock/utils/insert-style-tag.d.ts.map +0 -1
- package/lib/use-scroll-lock/utils/make-style-tag.d.ts +0 -2
- package/lib/use-scroll-lock/utils/make-style-tag.d.ts.map +0 -1
- package/lib/use-session-storage/use-session-storage.d.ts.map +0 -1
- package/lib/use-set-state/use-set-state.d.ts.map +0 -1
- package/lib/use-shallow-effect/use-shallow-effect.d.ts.map +0 -1
- package/lib/use-text-selection/use-text-selection.d.ts.map +0 -1
- package/lib/use-timeout/use-timeout.d.ts.map +0 -1
- package/lib/use-toggle/use-toggle.d.ts.map +0 -1
- package/lib/use-uncontrolled/use-uncontrolled.d.ts.map +0 -1
- package/lib/use-validated-state/use-validated-state.d.ts.map +0 -1
- package/lib/use-viewport-size/use-viewport-size.d.ts.map +0 -1
- package/lib/use-window-event/use-window-event.d.ts.map +0 -1
- package/lib/use-window-scroll/use-window-scroll.d.ts.map +0 -1
- package/lib/utils/assign-ref/assign-ref.d.ts +0 -3
- package/lib/utils/assign-ref/assign-ref.d.ts.map +0 -1
- package/lib/utils/clamp/clamp.d.ts.map +0 -1
- package/lib/utils/index.d.ts.map +0 -1
- package/lib/utils/lower-first/lower-first.d.ts.map +0 -1
- package/lib/utils/random-id/random-id.d.ts.map +0 -1
- package/lib/utils/range/range.d.ts.map +0 -1
- package/lib/utils/shallow-equal/shallow-equal.d.ts.map +0 -1
- package/lib/utils/upper-first/upper-first.d.ts.map +0 -1
|
@@ -6,69 +6,64 @@ var React = require('react');
|
|
|
6
6
|
var useUncontrolled = require('../use-uncontrolled/use-uncontrolled.js');
|
|
7
7
|
var range = require('../utils/range/range.js');
|
|
8
8
|
|
|
9
|
-
const DOTS =
|
|
10
|
-
function usePagination({
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
})
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
next,
|
|
68
|
-
previous,
|
|
69
|
-
first,
|
|
70
|
-
last
|
|
71
|
-
};
|
|
9
|
+
const DOTS = 'dots';
|
|
10
|
+
function usePagination({ total, siblings = 1, boundaries = 1, page, initialPage = 1, onChange, }) {
|
|
11
|
+
const _total = Math.max(Math.trunc(total), 0);
|
|
12
|
+
const [activePage, setActivePage] = useUncontrolled.useUncontrolled({
|
|
13
|
+
value: page,
|
|
14
|
+
onChange,
|
|
15
|
+
defaultValue: initialPage,
|
|
16
|
+
finalValue: initialPage,
|
|
17
|
+
});
|
|
18
|
+
const setPage = (pageNumber) => {
|
|
19
|
+
if (pageNumber <= 0) {
|
|
20
|
+
setActivePage(1);
|
|
21
|
+
}
|
|
22
|
+
else if (pageNumber > _total) {
|
|
23
|
+
setActivePage(_total);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
setActivePage(pageNumber);
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
const next = () => setPage(activePage + 1);
|
|
30
|
+
const previous = () => setPage(activePage - 1);
|
|
31
|
+
const first = () => setPage(1);
|
|
32
|
+
const last = () => setPage(_total);
|
|
33
|
+
const paginationRange = React.useMemo(() => {
|
|
34
|
+
const totalPageNumbers = siblings * 2 + 3 + boundaries * 2;
|
|
35
|
+
if (totalPageNumbers >= _total) {
|
|
36
|
+
return range.range(1, _total);
|
|
37
|
+
}
|
|
38
|
+
const leftSiblingIndex = Math.max(activePage - siblings, boundaries);
|
|
39
|
+
const rightSiblingIndex = Math.min(activePage + siblings, _total - boundaries);
|
|
40
|
+
const shouldShowLeftDots = leftSiblingIndex > boundaries + 2;
|
|
41
|
+
const shouldShowRightDots = rightSiblingIndex < _total - (boundaries + 1);
|
|
42
|
+
if (!shouldShowLeftDots && shouldShowRightDots) {
|
|
43
|
+
const leftItemCount = siblings * 2 + boundaries + 2;
|
|
44
|
+
return [...range.range(1, leftItemCount), DOTS, ...range.range(_total - (boundaries - 1), _total)];
|
|
45
|
+
}
|
|
46
|
+
if (shouldShowLeftDots && !shouldShowRightDots) {
|
|
47
|
+
const rightItemCount = boundaries + 1 + 2 * siblings;
|
|
48
|
+
return [...range.range(1, boundaries), DOTS, ...range.range(_total - rightItemCount, _total)];
|
|
49
|
+
}
|
|
50
|
+
return [
|
|
51
|
+
...range.range(1, boundaries),
|
|
52
|
+
DOTS,
|
|
53
|
+
...range.range(leftSiblingIndex, rightSiblingIndex),
|
|
54
|
+
DOTS,
|
|
55
|
+
...range.range(_total - boundaries + 1, _total),
|
|
56
|
+
];
|
|
57
|
+
}, [_total, siblings, activePage]);
|
|
58
|
+
return {
|
|
59
|
+
range: paginationRange,
|
|
60
|
+
active: activePage,
|
|
61
|
+
setPage,
|
|
62
|
+
next,
|
|
63
|
+
previous,
|
|
64
|
+
first,
|
|
65
|
+
last,
|
|
66
|
+
};
|
|
72
67
|
}
|
|
73
68
|
|
|
74
69
|
exports.DOTS = DOTS;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-pagination.js","sources":["../../src/use-pagination/use-pagination.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { useUncontrolled } from '../use-uncontrolled/use-uncontrolled';\nimport { range } from '../utils';\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":["useUncontrolled","useMemo","range"],"mappings":";;;;;;;;
|
|
1
|
+
{"version":3,"file":"use-pagination.js","sources":["../../src/use-pagination/use-pagination.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { useUncontrolled } from '../use-uncontrolled/use-uncontrolled';\nimport { range } from '../utils';\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":["useUncontrolled","useMemo","range"],"mappings":"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"}
|
|
@@ -5,11 +5,11 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var React = require('react');
|
|
6
6
|
|
|
7
7
|
function usePrevious(value) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
const ref = React.useRef();
|
|
9
|
+
React.useEffect(() => {
|
|
10
|
+
ref.current = value;
|
|
11
|
+
}, [value]);
|
|
12
|
+
return ref.current;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
15
|
exports.usePrevious = usePrevious;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-previous.js","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":["useRef","useEffect"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"use-previous.js","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":["useRef","useEffect"],"mappings":";;;;;;SAEgB,WAAW,CAAI,KAAQ;IACrC,MAAM,GAAG,GAAGA,YAAM,EAAK,CAAC;IAExBC,eAAS,CAAC;QACR,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;KACrB,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO,GAAG,CAAC,OAAO,CAAC;AACrB;;;;"}
|
|
@@ -5,32 +5,32 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var React = require('react');
|
|
6
6
|
|
|
7
7
|
function useQueue({ initialValues = [], limit }) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
8
|
+
const [{ state, queue }, setState] = React.useState({
|
|
9
|
+
state: initialValues.slice(0, limit),
|
|
10
|
+
queue: initialValues.slice(limit),
|
|
11
|
+
});
|
|
12
|
+
const add = (...items) => setState((current) => {
|
|
13
|
+
const results = [...current.state, ...current.queue, ...items];
|
|
14
|
+
return {
|
|
15
|
+
state: results.slice(0, limit),
|
|
16
|
+
queue: results.slice(limit),
|
|
17
|
+
};
|
|
18
|
+
});
|
|
19
|
+
const update = (fn) => setState((current) => {
|
|
20
|
+
const results = fn([...current.state, ...current.queue]);
|
|
21
|
+
return {
|
|
22
|
+
state: results.slice(0, limit),
|
|
23
|
+
queue: results.slice(limit),
|
|
24
|
+
};
|
|
25
|
+
});
|
|
26
|
+
const cleanQueue = () => setState((current) => ({ state: current.state, queue: [] }));
|
|
14
27
|
return {
|
|
15
|
-
|
|
16
|
-
|
|
28
|
+
state,
|
|
29
|
+
queue,
|
|
30
|
+
add,
|
|
31
|
+
update,
|
|
32
|
+
cleanQueue,
|
|
17
33
|
};
|
|
18
|
-
});
|
|
19
|
-
const update = (fn) => setState((current) => {
|
|
20
|
-
const results = fn([...current.state, ...current.queue]);
|
|
21
|
-
return {
|
|
22
|
-
state: results.slice(0, limit),
|
|
23
|
-
queue: results.slice(limit)
|
|
24
|
-
};
|
|
25
|
-
});
|
|
26
|
-
const cleanQueue = () => setState((current) => ({ state: current.state, queue: [] }));
|
|
27
|
-
return {
|
|
28
|
-
state,
|
|
29
|
-
queue,
|
|
30
|
-
add,
|
|
31
|
-
update,
|
|
32
|
-
cleanQueue
|
|
33
|
-
};
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
exports.useQueue = useQueue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-queue.js","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, queue }, 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,\n queue,\n add,\n update,\n cleanQueue,\n };\n}\n"],"names":["useState"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"use-queue.js","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, queue }, 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,\n queue,\n add,\n update,\n cleanQueue,\n };\n}\n"],"names":["useState"],"mappings":";;;;;;SAEgB,QAAQ,CAAI,EAAE,aAAa,GAAG,EAAE,EAAE,KAAK,EAA0C;IAC/F,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,GAAGA,cAAQ,CAAC;QAC5C,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;QACpC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC;KAClC,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,CAAC,GAAG,KAAU,KACxB,QAAQ,CAAC,CAAC,OAAO;QACf,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC;QAE/D,OAAO;YACL,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;YAC9B,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;SAC5B,CAAC;KACH,CAAC,CAAC;IAEL,MAAM,MAAM,GAAG,CAAC,EAAuB,KACrC,QAAQ,CAAC,CAAC,OAAO;QACf,MAAM,OAAO,GAAG,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAEzD,OAAO;YACL,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;YAC9B,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;SAC5B,CAAC;KACH,CAAC,CAAC;IAEL,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,CAAC,OAAO,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAEtF,OAAO;QACL,KAAK;QACL,KAAK;QACL,GAAG;QACH,MAAM;QACN,UAAU;KACX,CAAC;AACJ;;;;"}
|
|
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var useMediaQuery = require('../use-media-query/use-media-query.js');
|
|
6
6
|
|
|
7
7
|
function useReducedMotion(initialValue, options) {
|
|
8
|
-
|
|
8
|
+
return useMediaQuery.useMediaQuery('(prefers-reduced-motion: reduce)', initialValue, options);
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
exports.useReducedMotion = useReducedMotion;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-reduced-motion.js","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":["useMediaQuery"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"use-reduced-motion.js","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":["useMediaQuery"],"mappings":";;;;;;SAEgB,gBAAgB,CAAC,YAAsB,EAAE,OAA8B;IACrF,OAAOA,2BAAa,CAAC,kCAAkC,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;AAClF;;;;"}
|
|
@@ -5,46 +5,48 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
5
5
|
var React = require('react');
|
|
6
6
|
|
|
7
7
|
const defaultState = {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
x: 0,
|
|
9
|
+
y: 0,
|
|
10
|
+
width: 0,
|
|
11
|
+
height: 0,
|
|
12
|
+
top: 0,
|
|
13
|
+
left: 0,
|
|
14
|
+
bottom: 0,
|
|
15
|
+
right: 0,
|
|
16
16
|
};
|
|
17
17
|
function useResizeObserver() {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
18
|
+
const frameID = React.useRef(0);
|
|
19
|
+
const ref = React.useRef(null);
|
|
20
|
+
const [rect, setRect] = React.useState(defaultState);
|
|
21
|
+
const observer = React.useMemo(() => typeof window !== 'undefined'
|
|
22
|
+
? new ResizeObserver((entries) => {
|
|
23
|
+
const entry = entries[0];
|
|
24
|
+
if (entry) {
|
|
25
|
+
cancelAnimationFrame(frameID.current);
|
|
26
|
+
frameID.current = requestAnimationFrame(() => {
|
|
27
|
+
if (ref.current) {
|
|
28
|
+
setRect(entry.contentRect);
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
})
|
|
33
|
+
: null, []);
|
|
34
|
+
React.useEffect(() => {
|
|
26
35
|
if (ref.current) {
|
|
27
|
-
|
|
36
|
+
observer === null || observer === void 0 ? void 0 : observer.observe(ref.current);
|
|
28
37
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
}
|
|
36
|
-
return
|
|
37
|
-
observer.disconnect();
|
|
38
|
-
if (frameID.current) {
|
|
39
|
-
cancelAnimationFrame(frameID.current);
|
|
40
|
-
}
|
|
41
|
-
};
|
|
42
|
-
}, [ref.current]);
|
|
43
|
-
return [ref, rect];
|
|
38
|
+
return () => {
|
|
39
|
+
observer === null || observer === void 0 ? void 0 : observer.disconnect();
|
|
40
|
+
if (frameID.current) {
|
|
41
|
+
cancelAnimationFrame(frameID.current);
|
|
42
|
+
}
|
|
43
|
+
};
|
|
44
|
+
}, [ref.current]);
|
|
45
|
+
return [ref, rect];
|
|
44
46
|
}
|
|
45
47
|
function useElementSize() {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
+
const [ref, { width, height }] = useResizeObserver();
|
|
49
|
+
return { ref, width, height };
|
|
48
50
|
}
|
|
49
51
|
|
|
50
52
|
exports.useElementSize = useElementSize;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-resize-observer.js","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>() {\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
|
|
1
|
+
{"version":3,"file":"use-resize-observer.js","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>() {\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);\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>() {\n const [ref, { width, height }] = useResizeObserver<T>();\n return { ref, width, height };\n}\n"],"names":["useRef","useState","useMemo","useEffect"],"mappings":";;;;;;AAIA,MAAM,YAAY,GAAiB;IACjC,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC;IACT,GAAG,EAAE,CAAC;IACN,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,CAAC;CACT,CAAC;SAEc,iBAAiB;IAC/B,MAAM,OAAO,GAAGA,YAAM,CAAC,CAAC,CAAC,CAAC;IAC1B,MAAM,GAAG,GAAGA,YAAM,CAAI,IAAI,CAAC,CAAC;IAE5B,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAGC,cAAQ,CAAe,YAAY,CAAC,CAAC;IAE7D,MAAM,QAAQ,GAAGC,aAAO,CACtB,MACE,OAAO,MAAM,KAAK,WAAW;UACzB,IAAI,cAAc,CAAC,CAAC,OAAY;YAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAEzB,IAAI,KAAK,EAAE;gBACT,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAEtC,OAAO,CAAC,OAAO,GAAG,qBAAqB,CAAC;oBACtC,IAAI,GAAG,CAAC,OAAO,EAAE;wBACf,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;qBAC5B;iBACF,CAAC,CAAC;aACJ;SACF,CAAC;UACF,IAAI,EACV,EAAE,CACH,CAAC;IAEFC,eAAS,CAAC;QACR,IAAI,GAAG,CAAC,OAAO,EAAE;YACf,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;SAChC;QAED,OAAO;YACL,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,UAAU,EAAE,CAAC;YAEvB,IAAI,OAAO,CAAC,OAAO,EAAE;gBACnB,oBAAoB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;aACvC;SACF,CAAC;KACH,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAElB,OAAO,CAAC,GAAG,EAAE,IAAI,CAAU,CAAC;AAC9B,CAAC;SAEe,cAAc;IAC5B,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,GAAG,iBAAiB,EAAK,CAAC;IACxD,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAChC;;;;;"}
|
|
@@ -10,83 +10,83 @@ var getRelativePosition = require('./utils/get-relative-position.js');
|
|
|
10
10
|
var getScrollStart = require('./utils/get-scroll-start.js');
|
|
11
11
|
var setScrollParam = require('./utils/set-scroll-param.js');
|
|
12
12
|
|
|
13
|
-
function useScrollIntoView({
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
13
|
+
function useScrollIntoView({ duration = 1250, axis = 'y', onScrollFinish, easing = easeInOutQuad.easeInOutQuad, offset = 0, cancelable = true, isList = false, } = {}) {
|
|
14
|
+
const frameID = React.useRef(0);
|
|
15
|
+
const startTime = React.useRef(0);
|
|
16
|
+
const shouldStop = React.useRef(false);
|
|
17
|
+
const scrollableRef = React.useRef(null);
|
|
18
|
+
const targetRef = React.useRef(null);
|
|
19
|
+
const reducedMotion = useReducedMotion.useReducedMotion();
|
|
20
|
+
const cancel = () => {
|
|
21
|
+
if (frameID.current) {
|
|
22
|
+
cancelAnimationFrame(frameID.current);
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
const scrollIntoView = React.useCallback(({ alignment = 'start' } = {}) => {
|
|
26
|
+
var _a;
|
|
27
|
+
shouldStop.current = false;
|
|
28
|
+
if (frameID.current) {
|
|
29
|
+
cancel();
|
|
30
|
+
}
|
|
31
|
+
const start = (_a = getScrollStart.getScrollStart({ parent: scrollableRef.current, axis })) !== null && _a !== void 0 ? _a : 0;
|
|
32
|
+
const change = getRelativePosition.getRelativePosition({
|
|
33
|
+
parent: scrollableRef.current,
|
|
34
|
+
target: targetRef.current,
|
|
35
|
+
axis,
|
|
36
|
+
alignment,
|
|
37
|
+
offset,
|
|
38
|
+
isList,
|
|
39
|
+
}) - (scrollableRef.current ? 0 : start);
|
|
40
|
+
function animateScroll() {
|
|
41
|
+
if (startTime.current === 0) {
|
|
42
|
+
startTime.current = performance.now();
|
|
43
|
+
}
|
|
44
|
+
const now = performance.now();
|
|
45
|
+
const elapsed = now - startTime.current;
|
|
46
|
+
// easing timing progress
|
|
47
|
+
const t = reducedMotion || duration === 0 ? 1 : elapsed / duration;
|
|
48
|
+
const distance = start + change * easing(t);
|
|
49
|
+
setScrollParam.setScrollParam({
|
|
50
|
+
parent: scrollableRef.current,
|
|
51
|
+
axis,
|
|
52
|
+
distance,
|
|
53
|
+
});
|
|
54
|
+
if (!shouldStop.current && t < 1) {
|
|
55
|
+
frameID.current = requestAnimationFrame(animateScroll);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
typeof onScrollFinish === 'function' && onScrollFinish();
|
|
59
|
+
startTime.current = 0;
|
|
60
|
+
frameID.current = 0;
|
|
61
|
+
cancel();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
animateScroll();
|
|
65
|
+
}, [axis, duration, easing, isList, offset, onScrollFinish, reducedMotion]);
|
|
66
|
+
const handleStop = () => {
|
|
67
|
+
if (cancelable) {
|
|
68
|
+
shouldStop.current = true;
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
/**
|
|
72
|
+
* detection of one of these events stops scroll animation
|
|
73
|
+
* wheel - mouse wheel / touch pad
|
|
74
|
+
* touchmove - any touchable device
|
|
75
|
+
*/
|
|
76
|
+
useWindowEvent.useWindowEvent('wheel', handleStop, {
|
|
77
|
+
passive: true,
|
|
78
|
+
});
|
|
79
|
+
useWindowEvent.useWindowEvent('touchmove', handleStop, {
|
|
80
|
+
passive: true,
|
|
81
|
+
});
|
|
82
|
+
// cleanup requestAnimationFrame
|
|
83
|
+
React.useEffect(() => cancel, []);
|
|
84
|
+
return {
|
|
85
|
+
scrollableRef,
|
|
86
|
+
targetRef,
|
|
87
|
+
scrollIntoView,
|
|
88
|
+
cancel,
|
|
89
|
+
};
|
|
90
90
|
}
|
|
91
91
|
|
|
92
92
|
exports.useScrollIntoView = useScrollIntoView;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-scroll-into-view.js","sources":["../../src/use-scroll-into-view/use-scroll-into-view.ts"],"sourcesContent":["import { useCallback, useRef, useEffect } from 'react';\nimport { useReducedMotion } from '../use-reduced-motion/use-reduced-motion';\nimport { useWindowEvent } from '../use-window-event/use-window-event';\nimport { easeInOutQuad } from './utils/ease-in-out-quad';\nimport { getRelativePosition } from './utils/get-relative-position';\nimport { getScrollStart } from './utils/get-scroll-start';\nimport { setScrollParam } from './utils/set-scroll-param';\n\ninterface ScrollIntoViewAnimation {\n /** target element alignment relatively to parent based on current axis */\n alignment?: 'start' | 'end' | 'center';\n}\n\ninterface ScrollIntoViewParams {\n /** callback fired after scroll */\n onScrollFinish?: () => void;\n\n /** duration of scroll in milliseconds */\n duration?: number;\n\n /** axis of scroll */\n axis?: 'x' | 'y';\n\n /** custom mathematical easing function */\n easing?: (t: number) => number;\n\n /** additional distance between nearest edge and element */\n offset?: number;\n\n /** indicator if animation may be interrupted by user scrolling */\n cancelable?: boolean;\n\n /** prevents content jumping in scrolling lists with multiple targets */\n isList?: boolean;\n}\n\nexport function useScrollIntoView<\n Target extends HTMLElement,\n Parent extends HTMLElement | null = null\n>({\n duration = 1250,\n axis = 'y',\n onScrollFinish,\n easing = easeInOutQuad,\n offset = 0,\n cancelable = true,\n isList = false,\n}: ScrollIntoViewParams = {}) {\n const frameID = useRef(0);\n const startTime = useRef(0);\n const shouldStop = useRef(false);\n\n const scrollableRef = useRef<Parent>(null);\n const targetRef = useRef<Target>(null);\n\n const reducedMotion = useReducedMotion();\n\n const cancel = (): void => {\n if (frameID.current) {\n cancelAnimationFrame(frameID.current);\n }\n };\n\n const scrollIntoView = useCallback(\n ({ alignment = 'start' }: ScrollIntoViewAnimation = {}) => {\n shouldStop.current = false;\n\n if (frameID.current) {\n cancel();\n }\n\n const start = getScrollStart({ parent: scrollableRef.current, axis }) ?? 0;\n\n const change =\n getRelativePosition({\n parent: scrollableRef.current,\n target: targetRef.current,\n axis,\n alignment,\n offset,\n isList,\n }) - (scrollableRef.current ? 0 : start);\n\n function animateScroll() {\n if (startTime.current === 0) {\n startTime.current = performance.now();\n }\n\n const now = performance.now();\n const elapsed = now - startTime.current;\n\n // easing timing progress\n const t = reducedMotion || duration === 0 ? 1 : elapsed / duration;\n\n const distance = start + change * easing(t);\n\n setScrollParam({\n parent: scrollableRef.current,\n axis,\n distance,\n });\n\n if (!shouldStop.current && t < 1) {\n frameID.current = requestAnimationFrame(animateScroll);\n } else {\n typeof onScrollFinish === 'function' && onScrollFinish();\n startTime.current = 0;\n frameID.current = 0;\n cancel();\n }\n }\n animateScroll();\n },\n [axis, duration, easing, isList, offset, onScrollFinish, reducedMotion]\n );\n\n const handleStop = () => {\n if (cancelable) {\n shouldStop.current = true;\n }\n };\n\n /**\n * detection of one of these events stops scroll animation\n * wheel - mouse wheel / touch pad\n * touchmove - any touchable device\n */\n\n useWindowEvent('wheel', handleStop, {\n passive: true,\n });\n\n useWindowEvent('touchmove', handleStop, {\n passive: true,\n });\n\n // cleanup requestAnimationFrame\n useEffect(() => cancel, []);\n\n return {\n scrollableRef,\n targetRef,\n scrollIntoView,\n cancel,\n };\n}\n"],"names":["easeInOutQuad","useRef","useReducedMotion","useCallback","getScrollStart","getRelativePosition","setScrollParam","useWindowEvent","useEffect"],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"use-scroll-into-view.js","sources":["../../src/use-scroll-into-view/use-scroll-into-view.ts"],"sourcesContent":["import { useCallback, useRef, useEffect } from 'react';\nimport { useReducedMotion } from '../use-reduced-motion/use-reduced-motion';\nimport { useWindowEvent } from '../use-window-event/use-window-event';\nimport { easeInOutQuad } from './utils/ease-in-out-quad';\nimport { getRelativePosition } from './utils/get-relative-position';\nimport { getScrollStart } from './utils/get-scroll-start';\nimport { setScrollParam } from './utils/set-scroll-param';\n\ninterface ScrollIntoViewAnimation {\n /** target element alignment relatively to parent based on current axis */\n alignment?: 'start' | 'end' | 'center';\n}\n\ninterface ScrollIntoViewParams {\n /** callback fired after scroll */\n onScrollFinish?: () => void;\n\n /** duration of scroll in milliseconds */\n duration?: number;\n\n /** axis of scroll */\n axis?: 'x' | 'y';\n\n /** custom mathematical easing function */\n easing?: (t: number) => number;\n\n /** additional distance between nearest edge and element */\n offset?: number;\n\n /** indicator if animation may be interrupted by user scrolling */\n cancelable?: boolean;\n\n /** prevents content jumping in scrolling lists with multiple targets */\n isList?: boolean;\n}\n\nexport function useScrollIntoView<\n Target extends HTMLElement,\n Parent extends HTMLElement | null = null\n>({\n duration = 1250,\n axis = 'y',\n onScrollFinish,\n easing = easeInOutQuad,\n offset = 0,\n cancelable = true,\n isList = false,\n}: ScrollIntoViewParams = {}) {\n const frameID = useRef(0);\n const startTime = useRef(0);\n const shouldStop = useRef(false);\n\n const scrollableRef = useRef<Parent>(null);\n const targetRef = useRef<Target>(null);\n\n const reducedMotion = useReducedMotion();\n\n const cancel = (): void => {\n if (frameID.current) {\n cancelAnimationFrame(frameID.current);\n }\n };\n\n const scrollIntoView = useCallback(\n ({ alignment = 'start' }: ScrollIntoViewAnimation = {}) => {\n shouldStop.current = false;\n\n if (frameID.current) {\n cancel();\n }\n\n const start = getScrollStart({ parent: scrollableRef.current, axis }) ?? 0;\n\n const change =\n getRelativePosition({\n parent: scrollableRef.current,\n target: targetRef.current,\n axis,\n alignment,\n offset,\n isList,\n }) - (scrollableRef.current ? 0 : start);\n\n function animateScroll() {\n if (startTime.current === 0) {\n startTime.current = performance.now();\n }\n\n const now = performance.now();\n const elapsed = now - startTime.current;\n\n // easing timing progress\n const t = reducedMotion || duration === 0 ? 1 : elapsed / duration;\n\n const distance = start + change * easing(t);\n\n setScrollParam({\n parent: scrollableRef.current,\n axis,\n distance,\n });\n\n if (!shouldStop.current && t < 1) {\n frameID.current = requestAnimationFrame(animateScroll);\n } else {\n typeof onScrollFinish === 'function' && onScrollFinish();\n startTime.current = 0;\n frameID.current = 0;\n cancel();\n }\n }\n animateScroll();\n },\n [axis, duration, easing, isList, offset, onScrollFinish, reducedMotion]\n );\n\n const handleStop = () => {\n if (cancelable) {\n shouldStop.current = true;\n }\n };\n\n /**\n * detection of one of these events stops scroll animation\n * wheel - mouse wheel / touch pad\n * touchmove - any touchable device\n */\n\n useWindowEvent('wheel', handleStop, {\n passive: true,\n });\n\n useWindowEvent('touchmove', handleStop, {\n passive: true,\n });\n\n // cleanup requestAnimationFrame\n useEffect(() => cancel, []);\n\n return {\n scrollableRef,\n targetRef,\n scrollIntoView,\n cancel,\n };\n}\n"],"names":["easeInOutQuad","useRef","useReducedMotion","useCallback","getScrollStart","getRelativePosition","setScrollParam","useWindowEvent","useEffect"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
const easeInOutQuad = (t) => t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;
|
|
5
|
+
const easeInOutQuad = (t) => (t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t);
|
|
6
6
|
|
|
7
7
|
exports.easeInOutQuad = easeInOutQuad;
|
|
8
8
|
//# sourceMappingURL=ease-in-out-quad.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ease-in-out-quad.js","sources":["../../../src/use-scroll-into-view/utils/ease-in-out-quad.ts"],"sourcesContent":["export const easeInOutQuad = (t: number) => (t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t);\n"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"ease-in-out-quad.js","sources":["../../../src/use-scroll-into-view/utils/ease-in-out-quad.ts"],"sourcesContent":["export const easeInOutQuad = (t: number) => (t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t);\n"],"names":[],"mappings":";;;;MAAa,aAAa,GAAG,CAAC,CAAS,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;;;;"}
|