@mantine/hooks 5.0.0-alpha.1 → 5.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 +2 -3
- package/cjs/index.js.map +1 -1
- package/cjs/use-click-outside/use-click-outside.js +3 -3
- package/cjs/use-clipboard/use-clipboard.js +4 -4
- package/cjs/use-counter/use-counter.js +6 -14
- package/cjs/use-counter/use-counter.js.map +1 -1
- package/cjs/use-debounced-value/use-debounced-value.js +7 -7
- package/cjs/use-did-update/use-did-update.js +3 -3
- package/cjs/use-disclosure/use-disclosure.js +2 -2
- package/cjs/use-document-visibility/use-document-visibility.js +3 -3
- package/cjs/use-event-listener/use-event-listener.js +3 -3
- package/cjs/use-focus-return/use-focus-return.js +3 -3
- package/cjs/use-focus-return/use-focus-return.js.map +1 -1
- package/cjs/use-focus-trap/use-focus-trap.js +5 -5
- package/cjs/use-focus-within/use-focus-within.js +5 -5
- package/cjs/use-force-update/use-force-update.js +2 -2
- package/cjs/use-fullscreen/use-fullscreen.js +8 -8
- package/cjs/use-hash/use-hash.js +2 -2
- package/cjs/use-hotkeys/use-hotkeys.js +2 -2
- package/cjs/use-hover/use-hover.js +6 -6
- package/cjs/use-id/use-id.js +21 -5
- package/cjs/use-id/use-id.js.map +1 -1
- package/cjs/use-idle/use-idle.js +4 -4
- package/cjs/use-input-state/use-input-state.js +2 -2
- package/cjs/use-intersection/use-intersection.js +5 -5
- package/cjs/use-intersection/use-intersection.js.map +1 -1
- package/cjs/use-interval/use-interval.js +9 -7
- package/cjs/use-interval/use-interval.js.map +1 -1
- package/cjs/use-isomorphic-effect/use-isomorphic-effect.js +2 -2
- package/cjs/use-list-state/use-list-state.js +2 -2
- package/cjs/use-list-state/use-list-state.js.map +1 -1
- package/cjs/use-local-storage/use-local-storage.js +5 -5
- package/cjs/use-logger/use-logger.js +2 -2
- package/cjs/use-media-query/use-media-query.js +4 -4
- package/cjs/use-merged-ref/use-merged-ref.js +2 -2
- package/cjs/use-mouse/use-mouse.js +4 -4
- package/cjs/use-move/use-move.js +13 -13
- package/cjs/use-move/use-move.js.map +1 -1
- package/cjs/use-network/use-network.js +4 -4
- package/cjs/use-page-leave/use-page-leave.js +2 -2
- package/cjs/use-pagination/use-pagination.js +3 -4
- package/cjs/use-pagination/use-pagination.js.map +1 -1
- package/cjs/use-queue/use-queue.js +2 -2
- package/cjs/use-resize-observer/use-resize-observer.js +6 -6
- package/cjs/use-scroll-into-view/use-scroll-into-view.js +8 -8
- package/cjs/use-scroll-lock/use-scroll-lock.js +7 -7
- package/cjs/use-set-state/use-set-state.js +2 -2
- package/cjs/use-shallow-effect/use-shallow-effect.js +4 -4
- package/cjs/use-timeout/use-timeout.js +33 -0
- package/cjs/use-timeout/use-timeout.js.map +1 -0
- package/cjs/use-toggle/use-toggle.js +3 -7
- package/cjs/use-toggle/use-toggle.js.map +1 -1
- package/cjs/use-uncontrolled/use-uncontrolled.js +8 -26
- package/cjs/use-uncontrolled/use-uncontrolled.js.map +1 -1
- package/cjs/use-validated-state/use-validated-state.js +4 -4
- package/cjs/use-viewport-size/use-viewport-size.js +3 -3
- package/cjs/use-window-event/use-window-event.js +2 -2
- package/cjs/use-window-scroll/use-window-scroll.js +2 -2
- package/cjs/utils/clamp/clamp.js +1 -1
- package/cjs/utils/clamp/clamp.js.map +1 -1
- package/esm/index.js +2 -2
- package/esm/use-counter/use-counter.js +5 -13
- package/esm/use-counter/use-counter.js.map +1 -1
- package/esm/use-focus-return/use-focus-return.js +1 -1
- package/esm/use-focus-return/use-focus-return.js.map +1 -1
- package/esm/use-id/use-id.js +17 -5
- package/esm/use-id/use-id.js.map +1 -1
- package/esm/use-intersection/use-intersection.js +1 -1
- package/esm/use-intersection/use-intersection.js.map +1 -1
- package/esm/use-interval/use-interval.js +6 -4
- package/esm/use-interval/use-interval.js.map +1 -1
- package/esm/use-list-state/use-list-state.js.map +1 -1
- package/esm/use-move/use-move.js +5 -5
- package/esm/use-move/use-move.js.map +1 -1
- package/esm/use-pagination/use-pagination.js +1 -2
- package/esm/use-pagination/use-pagination.js.map +1 -1
- package/esm/use-timeout/use-timeout.js +29 -0
- package/esm/use-timeout/use-timeout.js.map +1 -0
- package/esm/use-toggle/use-toggle.js +3 -6
- package/esm/use-toggle/use-toggle.js.map +1 -1
- package/esm/use-uncontrolled/use-uncontrolled.js +8 -26
- package/esm/use-uncontrolled/use-uncontrolled.js.map +1 -1
- package/esm/utils/clamp/clamp.js +1 -1
- package/esm/utils/clamp/clamp.js.map +1 -1
- package/lib/index.d.ts +3 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/use-counter/use-counter.d.ts.map +1 -1
- package/lib/use-id/use-id.d.ts +1 -1
- package/lib/use-id/use-id.d.ts.map +1 -1
- package/lib/use-intersection/use-intersection.d.ts +4 -1
- package/lib/use-intersection/use-intersection.d.ts.map +1 -1
- package/lib/use-interval/use-interval.d.ts.map +1 -1
- package/lib/use-list-state/use-list-state.d.ts +2 -2
- package/lib/use-list-state/use-list-state.d.ts.map +1 -1
- package/lib/use-pagination/use-pagination.d.ts.map +1 -1
- package/lib/use-timeout/use-timeout.d.ts +7 -0
- package/lib/use-timeout/use-timeout.d.ts.map +1 -0
- package/lib/use-toggle/use-toggle.d.ts +1 -2
- package/lib/use-toggle/use-toggle.d.ts.map +1 -1
- package/lib/use-uncontrolled/use-uncontrolled.d.ts +11 -9
- package/lib/use-uncontrolled/use-uncontrolled.d.ts.map +1 -1
- package/lib/utils/clamp/clamp.d.ts +1 -7
- package/lib/utils/clamp/clamp.d.ts.map +1 -1
- package/package.json +1 -1
- package/cjs/use-uuid/use-uuid.js +0 -18
- package/cjs/use-uuid/use-uuid.js.map +0 -1
- package/esm/use-uuid/use-uuid.js +0 -14
- package/esm/use-uuid/use-uuid.js.map +0 -1
- package/lib/use-uuid/use-uuid.d.ts +0 -2
- package/lib/use-uuid/use-uuid.d.ts.map +0 -1
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var React = require('react');
|
|
6
6
|
|
|
7
7
|
var __defProp = Object.defineProperty;
|
|
8
8
|
var __defProps = Object.defineProperties;
|
|
@@ -24,7 +24,7 @@ var __spreadValues = (a, b) => {
|
|
|
24
24
|
};
|
|
25
25
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
26
26
|
function useListState(initialValue = []) {
|
|
27
|
-
const [state, setState] =
|
|
27
|
+
const [state, setState] = React.useState(initialValue);
|
|
28
28
|
const append = (...items) => setState((current) => [...current, ...items]);
|
|
29
29
|
const prepend = (...items) => setState((current) => [...items, ...current]);
|
|
30
30
|
const insert = (index, ...items) => setState((current) => [...current.slice(0, index), ...items, ...current.slice(index)]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-list-state.js","sources":["../../src/use-list-state/use-list-state.ts"],"sourcesContent":["import React, { useState } from 'react';\n\nexport interface
|
|
1
|
+
{"version":3,"file":"use-list-state.js","sources":["../../src/use-list-state/use-list-state.ts"],"sourcesContent":["import React, { useState } from 'react';\n\nexport interface UseListStateHandlers<T> {\n setState: React.Dispatch<React.SetStateAction<T[]>>;\n append: (...items: T[]) => void;\n prepend: (...items: T[]) => void;\n insert: (index: number, ...items: T[]) => void;\n pop: () => void;\n shift: () => void;\n apply: (fn: (item: T, index?: number) => T) => void;\n applyWhere: (\n condition: (item: T, index: number) => boolean,\n fn: (item: T, index?: number) => T\n ) => void;\n remove: (...indices: number[]) => void;\n reorder: ({ from, to }: { from: number; to: number }) => void;\n setItem: (index: number, item: T) => void;\n setItemProp: <K extends keyof T, U extends T[K]>(index: number, prop: K, value: U) => void;\n}\n\nexport type UseListState<T> = [T[], UseListStateHandlers<T>];\n\nexport function useListState<T>(initialValue: T[] = []): UseListState<T> {\n const [state, setState] = useState(initialValue);\n\n const append = (...items: T[]) => setState((current) => [...current, ...items]);\n const prepend = (...items: T[]) => setState((current) => [...items, ...current]);\n\n const insert = (index: number, ...items: T[]) =>\n setState((current) => [...current.slice(0, index), ...items, ...current.slice(index)]);\n\n const apply = (fn: (item: T, index?: number) => T) =>\n setState((current) => current.map((item, index) => fn(item, index)));\n\n const remove = (...indices: number[]) =>\n setState((current) => current.filter((_, index) => !indices.includes(index)));\n\n const pop = () =>\n setState((current) => {\n const cloned = [...current];\n cloned.pop();\n return cloned;\n });\n\n const shift = () =>\n setState((current) => {\n const cloned = [...current];\n cloned.shift();\n return cloned;\n });\n\n const reorder = ({ from, to }: { from: number; to: number }) =>\n setState((current) => {\n const cloned = [...current];\n const item = current[from];\n\n cloned.splice(from, 1);\n cloned.splice(to, 0, item);\n\n return cloned;\n });\n\n const setItem = (index: number, item: T) =>\n setState((current) => {\n const cloned = [...current];\n cloned[index] = item;\n return cloned;\n });\n\n const setItemProp = <K extends keyof T, U extends T[K]>(index: number, prop: K, value: U) =>\n setState((current) => {\n const cloned = [...current];\n cloned[index] = { ...cloned[index], [prop]: value };\n return cloned;\n });\n\n const applyWhere = (\n condition: (item: T, index: number) => boolean,\n fn: (item: T, index?: number) => T\n ) =>\n setState((current) =>\n current.map((item, index) => (condition(item, index) ? fn(item, index) : item))\n );\n\n return [\n state,\n {\n setState,\n append,\n prepend,\n insert,\n pop,\n shift,\n apply,\n applyWhere,\n remove,\n reorder,\n setItem,\n setItemProp,\n },\n ];\n}\n"],"names":["useState"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var React = require('react');
|
|
6
6
|
var useWindowEvent = require('../use-window-event/use-window-event.js');
|
|
7
7
|
|
|
8
8
|
function serializeJSON(value) {
|
|
@@ -27,8 +27,8 @@ function useLocalStorage({
|
|
|
27
27
|
serialize = serializeJSON
|
|
28
28
|
}) {
|
|
29
29
|
var _a;
|
|
30
|
-
const [value, setValue] =
|
|
31
|
-
const setLocalStorageValue =
|
|
30
|
+
const [value, setValue] = React.useState(typeof window !== "undefined" && "localStorage" in window && !getInitialValueInEffect ? deserialize((_a = window.localStorage.getItem(key)) != null ? _a : void 0) : defaultValue != null ? defaultValue : "");
|
|
31
|
+
const setLocalStorageValue = React.useCallback((val) => {
|
|
32
32
|
if (val instanceof Function) {
|
|
33
33
|
setValue((current) => {
|
|
34
34
|
const result = val(current);
|
|
@@ -53,12 +53,12 @@ function useLocalStorage({
|
|
|
53
53
|
setValue(event.detail.value);
|
|
54
54
|
}
|
|
55
55
|
});
|
|
56
|
-
|
|
56
|
+
React.useEffect(() => {
|
|
57
57
|
if (defaultValue !== void 0 && value === void 0) {
|
|
58
58
|
setLocalStorageValue(defaultValue);
|
|
59
59
|
}
|
|
60
60
|
}, [defaultValue, value, setLocalStorageValue]);
|
|
61
|
-
|
|
61
|
+
React.useEffect(() => {
|
|
62
62
|
var _a2;
|
|
63
63
|
if (getInitialValueInEffect) {
|
|
64
64
|
setValue(deserialize((_a2 = window.localStorage.getItem(key)) != null ? _a2 : void 0) || (defaultValue != null ? defaultValue : ""));
|
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var React = require('react');
|
|
6
6
|
var useDidUpdate = require('../use-did-update/use-did-update.js');
|
|
7
7
|
|
|
8
8
|
function useLogger(componentName, props) {
|
|
9
|
-
|
|
9
|
+
React.useEffect(() => {
|
|
10
10
|
console.log(`${componentName} mounted`, ...props);
|
|
11
11
|
return () => console.log(`${componentName} unmounted`);
|
|
12
12
|
}, []);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var React = require('react');
|
|
6
6
|
|
|
7
7
|
function attachMediaListener(query, callback) {
|
|
8
8
|
try {
|
|
@@ -23,9 +23,9 @@ function getInitialValue(query, initialValue) {
|
|
|
23
23
|
return false;
|
|
24
24
|
}
|
|
25
25
|
function useMediaQuery(query, initialValue) {
|
|
26
|
-
const [matches, setMatches] =
|
|
27
|
-
const queryRef =
|
|
28
|
-
|
|
26
|
+
const [matches, setMatches] = React.useState(getInitialValue(query, initialValue));
|
|
27
|
+
const queryRef = React.useRef();
|
|
28
|
+
React.useEffect(() => {
|
|
29
29
|
if ("matchMedia" in window) {
|
|
30
30
|
queryRef.current = window.matchMedia(query);
|
|
31
31
|
setMatches(queryRef.current.matches);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var React = require('react');
|
|
6
6
|
var assignRef = require('../utils/assign-ref/assign-ref.js');
|
|
7
7
|
|
|
8
8
|
function mergeRefs(...refs) {
|
|
@@ -11,7 +11,7 @@ function mergeRefs(...refs) {
|
|
|
11
11
|
};
|
|
12
12
|
}
|
|
13
13
|
function useMergedRef(...refs) {
|
|
14
|
-
return
|
|
14
|
+
return React.useCallback(mergeRefs(...refs), refs);
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
exports.mergeRefs = mergeRefs;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var React = require('react');
|
|
6
6
|
|
|
7
7
|
var __defProp = Object.defineProperty;
|
|
8
8
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
@@ -21,8 +21,8 @@ var __spreadValues = (a, b) => {
|
|
|
21
21
|
return a;
|
|
22
22
|
};
|
|
23
23
|
function useMouse() {
|
|
24
|
-
const [position, setPosition] =
|
|
25
|
-
const ref =
|
|
24
|
+
const [position, setPosition] = React.useState({ x: 0, y: 0 });
|
|
25
|
+
const ref = React.useRef();
|
|
26
26
|
const setMousePosition = (event) => {
|
|
27
27
|
if (ref.current) {
|
|
28
28
|
const rect = event.currentTarget.getBoundingClientRect();
|
|
@@ -33,7 +33,7 @@ function useMouse() {
|
|
|
33
33
|
setPosition({ x: event.clientX, y: event.clientY });
|
|
34
34
|
}
|
|
35
35
|
};
|
|
36
|
-
|
|
36
|
+
React.useEffect(() => {
|
|
37
37
|
const element = (ref == null ? void 0 : ref.current) ? ref.current : document;
|
|
38
38
|
element.addEventListener("mousemove", setMousePosition);
|
|
39
39
|
return () => element.removeEventListener("mousemove", setMousePosition);
|
package/cjs/use-move/use-move.js
CHANGED
|
@@ -2,23 +2,23 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var React = require('react');
|
|
6
6
|
var clamp = require('../utils/clamp/clamp.js');
|
|
7
7
|
|
|
8
8
|
const clampUseMovePosition = (position) => ({
|
|
9
|
-
x: clamp.clamp(
|
|
10
|
-
y: clamp.clamp(
|
|
9
|
+
x: clamp.clamp(position.x, 0, 1),
|
|
10
|
+
y: clamp.clamp(position.y, 0, 1)
|
|
11
11
|
});
|
|
12
12
|
function useMove(onChange, handlers, dir = "ltr") {
|
|
13
|
-
const ref =
|
|
14
|
-
const mounted =
|
|
15
|
-
const isSliding =
|
|
16
|
-
const frame =
|
|
17
|
-
const [active, setActive] =
|
|
18
|
-
|
|
13
|
+
const ref = React.useRef();
|
|
14
|
+
const mounted = React.useRef(false);
|
|
15
|
+
const isSliding = React.useRef(false);
|
|
16
|
+
const frame = React.useRef(0);
|
|
17
|
+
const [active, setActive] = React.useState(false);
|
|
18
|
+
React.useEffect(() => {
|
|
19
19
|
mounted.current = true;
|
|
20
20
|
}, []);
|
|
21
|
-
|
|
21
|
+
React.useEffect(() => {
|
|
22
22
|
const onScrub = ({ x, y }) => {
|
|
23
23
|
cancelAnimationFrame(frame.current);
|
|
24
24
|
frame.current = requestAnimationFrame(() => {
|
|
@@ -26,10 +26,10 @@ function useMove(onChange, handlers, dir = "ltr") {
|
|
|
26
26
|
ref.current.style.userSelect = "none";
|
|
27
27
|
const rect = ref.current.getBoundingClientRect();
|
|
28
28
|
if (rect.width && rect.height) {
|
|
29
|
-
const _x = clamp.clamp(
|
|
29
|
+
const _x = clamp.clamp((x - rect.left) / rect.width, 0, 1);
|
|
30
30
|
onChange({
|
|
31
31
|
x: dir === "ltr" ? _x : 1 - _x,
|
|
32
|
-
y: clamp.clamp(
|
|
32
|
+
y: clamp.clamp((y - rect.top) / rect.height, 0, 1)
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
35
|
}
|
|
@@ -80,7 +80,7 @@ function useMove(onChange, handlers, dir = "ltr") {
|
|
|
80
80
|
onScrub({ x: event.changedTouches[0].clientX, y: event.changedTouches[0].clientY });
|
|
81
81
|
};
|
|
82
82
|
ref.current.addEventListener("mousedown", onMouseDown);
|
|
83
|
-
ref.current.addEventListener("touchstart", onTouchStart);
|
|
83
|
+
ref.current.addEventListener("touchstart", onTouchStart, { passive: false });
|
|
84
84
|
return () => {
|
|
85
85
|
if (ref.current) {
|
|
86
86
|
ref.current.removeEventListener("mousedown", onMouseDown);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-move.js","sources":["../../src/use-move/use-move.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { useEffect, useState, useRef } from 'react';\nimport { clamp } from '../utils';\n\nexport interface UseMovePosition {\n x: number;\n y: number;\n}\n\nexport const clampUseMovePosition = (position: UseMovePosition) => ({\n x: clamp(
|
|
1
|
+
{"version":3,"file":"use-move.js","sources":["../../src/use-move/use-move.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-use-before-define */\nimport { useEffect, useState, useRef } from 'react';\nimport { clamp } from '../utils';\n\nexport interface UseMovePosition {\n x: number;\n y: number;\n}\n\nexport const clampUseMovePosition = (position: UseMovePosition) => ({\n x: clamp(position.x, 0, 1),\n y: clamp(position.y, 0, 1),\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>();\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 onMouseMove(event);\n };\n\n const onMouseMove = (event: MouseEvent) => onScrub({ x: event.clientX, y: event.clientY });\n\n const onTouchStart = (event: TouchEvent) => {\n startScrubbing();\n event?.preventDefault();\n onTouchMove(event);\n };\n\n const onTouchMove = (event: TouchEvent) => {\n event?.preventDefault();\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":["clamp","useRef","useState","useEffect"],"mappings":";;;;;;;AAEY,MAAC,oBAAoB,GAAG,CAAC,QAAQ,MAAM;AACnD,EAAE,CAAC,EAAEA,WAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5B,EAAE,CAAC,EAAEA,WAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;AAC5B,CAAC,EAAE;AACI,SAAS,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,GAAG,KAAK,EAAE;AACzD,EAAE,MAAM,GAAG,GAAGC,YAAM,EAAE,CAAC;AACvB,EAAE,MAAM,OAAO,GAAGA,YAAM,CAAC,KAAK,CAAC,CAAC;AAChC,EAAE,MAAM,SAAS,GAAGA,YAAM,CAAC,KAAK,CAAC,CAAC;AAClC,EAAE,MAAM,KAAK,GAAGA,YAAM,CAAC,CAAC,CAAC,CAAC;AAC1B,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAGC,cAAQ,CAAC,KAAK,CAAC,CAAC;AAC9C,EAAEC,eAAS,CAAC,MAAM;AAClB,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;AAC3B,GAAG,EAAE,EAAE,CAAC,CAAC;AACT,EAAEA,eAAS,CAAC,MAAM;AAClB,IAAI,MAAM,OAAO,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK;AAClC,MAAM,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC1C,MAAM,KAAK,CAAC,OAAO,GAAG,qBAAqB,CAAC,MAAM;AAClD,QAAQ,IAAI,OAAO,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE;AAC5C,UAAU,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;AAChD,UAAU,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;AAC3D,UAAU,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;AACzC,YAAY,MAAM,EAAE,GAAGH,WAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACjE,YAAY,QAAQ,CAAC;AACrB,cAAc,CAAC,EAAE,GAAG,KAAK,KAAK,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE;AAC5C,cAAc,CAAC,EAAEA,WAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1D,aAAa,CAAC,CAAC;AACf,WAAW;AACX,SAAS;AACT,OAAO,CAAC,CAAC;AACT,KAAK,CAAC;AACN,IAAI,MAAM,UAAU,GAAG,MAAM;AAC7B,MAAM,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAC1D,MAAM,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAC1D,MAAM,QAAQ,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAC1D,MAAM,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAC3D,KAAK,CAAC;AACN,IAAI,MAAM,YAAY,GAAG,MAAM;AAC/B,MAAM,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAC7D,MAAM,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAC7D,MAAM,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAC7D,MAAM,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAC9D,KAAK,CAAC;AACN,IAAI,MAAM,cAAc,GAAG,MAAM;AACjC,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE;AACjD,QAAQ,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC;AACjC,QAAQ,QAAQ,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,UAAU,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;AAC7G,QAAQ,SAAS,CAAC,IAAI,CAAC,CAAC;AACxB,QAAQ,UAAU,EAAE,CAAC;AACrB,OAAO;AACP,KAAK,CAAC;AACN,IAAI,MAAM,aAAa,GAAG,MAAM;AAChC,MAAM,IAAI,SAAS,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE;AAChD,QAAQ,SAAS,CAAC,OAAO,GAAG,KAAK,CAAC;AAClC,QAAQ,SAAS,CAAC,KAAK,CAAC,CAAC;AACzB,QAAQ,YAAY,EAAE,CAAC;AACvB,QAAQ,UAAU,CAAC,MAAM;AACzB,UAAU,QAAQ,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,KAAK,UAAU,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;AAC3G,SAAS,EAAE,CAAC,CAAC,CAAC;AACd,OAAO;AACP,KAAK,CAAC;AACN,IAAI,MAAM,WAAW,GAAG,CAAC,KAAK,KAAK;AACnC,MAAM,cAAc,EAAE,CAAC;AACvB,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;AACzB,KAAK,CAAC;AACN,IAAI,MAAM,WAAW,GAAG,CAAC,KAAK,KAAK,OAAO,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;AACnF,IAAI,MAAM,YAAY,GAAG,CAAC,KAAK,KAAK;AACpC,MAAM,cAAc,EAAE,CAAC;AACvB,MAAM,KAAK,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;AACtD,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;AACzB,KAAK,CAAC;AACN,IAAI,MAAM,WAAW,GAAG,CAAC,KAAK,KAAK;AACnC,MAAM,KAAK,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC;AACtD,MAAM,OAAO,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAC1F,KAAK,CAAC;AACN,IAAI,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAC3D,IAAI,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,EAAE,YAAY,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACjF,IAAI,OAAO,MAAM;AACjB,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE;AACvB,QAAQ,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAClE,QAAQ,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;AACpE,OAAO;AACP,KAAK,CAAC;AACN,GAAG,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;AACtB,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC;AACzB;;;;;"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var React = require('react');
|
|
6
6
|
var useWindowEvent = require('../use-window-event/use-window-event.js');
|
|
7
7
|
|
|
8
8
|
var __defProp = Object.defineProperty;
|
|
@@ -40,11 +40,11 @@ function getConnection() {
|
|
|
40
40
|
};
|
|
41
41
|
}
|
|
42
42
|
function useNetwork() {
|
|
43
|
-
const [status, setStatus] =
|
|
44
|
-
const handleConnectionChange =
|
|
43
|
+
const [status, setStatus] = React.useState(__spreadValues({ online: true }, getConnection()));
|
|
44
|
+
const handleConnectionChange = React.useCallback(() => setStatus((current) => __spreadValues(__spreadValues({}, current), getConnection())), []);
|
|
45
45
|
useWindowEvent.useWindowEvent("online", () => setStatus(__spreadValues({ online: true }, getConnection())));
|
|
46
46
|
useWindowEvent.useWindowEvent("offline", () => setStatus(__spreadValues({ online: false }, getConnection())));
|
|
47
|
-
|
|
47
|
+
React.useEffect(() => {
|
|
48
48
|
if (navigator.connection) {
|
|
49
49
|
navigator.connection.addEventListener("change", handleConnectionChange);
|
|
50
50
|
return () => navigator.connection.removeEventListener("change", handleConnectionChange);
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var React = require('react');
|
|
6
6
|
|
|
7
7
|
function usePageLeave(onPageLeave) {
|
|
8
|
-
|
|
8
|
+
React.useEffect(() => {
|
|
9
9
|
document.documentElement.addEventListener("mouseleave", onPageLeave);
|
|
10
10
|
return () => document.documentElement.removeEventListener("mouseleave", onPageLeave);
|
|
11
11
|
}, []);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
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
|
|
|
@@ -19,8 +19,7 @@ function usePagination({
|
|
|
19
19
|
value: page,
|
|
20
20
|
onChange,
|
|
21
21
|
defaultValue: initialPage,
|
|
22
|
-
finalValue: initialPage
|
|
23
|
-
rule: (_page) => typeof _page === "number" && _page <= total
|
|
22
|
+
finalValue: initialPage
|
|
24
23
|
});
|
|
25
24
|
const setPage = (pageNumber) => {
|
|
26
25
|
if (pageNumber <= 0) {
|
|
@@ -35,7 +34,7 @@ function usePagination({
|
|
|
35
34
|
const previous = () => setPage(activePage - 1);
|
|
36
35
|
const first = () => setPage(1);
|
|
37
36
|
const last = () => setPage(total);
|
|
38
|
-
const paginationRange =
|
|
37
|
+
const paginationRange = React.useMemo(() => {
|
|
39
38
|
const totalPageNumbers = siblings * 2 + 3 + boundaries * 2;
|
|
40
39
|
if (totalPageNumbers >= total) {
|
|
41
40
|
return range.range(1, total);
|
|
@@ -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 [activePage, setActivePage] = useUncontrolled({\n value: page,\n onChange,\n defaultValue: initialPage,\n finalValue: initialPage,\n
|
|
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 [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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"}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var React = require('react');
|
|
6
6
|
|
|
7
7
|
function useQueue({ initialValues = [], limit }) {
|
|
8
|
-
const [{ state, queue }, setState] =
|
|
8
|
+
const [{ state, queue }, setState] = React.useState({
|
|
9
9
|
state: initialValues.slice(0, limit),
|
|
10
10
|
queue: initialValues.slice(limit)
|
|
11
11
|
});
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var React = require('react');
|
|
6
6
|
|
|
7
7
|
const defaultState = {
|
|
8
8
|
x: 0,
|
|
@@ -16,10 +16,10 @@ const defaultState = {
|
|
|
16
16
|
};
|
|
17
17
|
const browser = typeof window !== "undefined";
|
|
18
18
|
function useResizeObserver() {
|
|
19
|
-
const frameID =
|
|
20
|
-
const ref =
|
|
21
|
-
const [rect, setRect] =
|
|
22
|
-
const observer =
|
|
19
|
+
const frameID = React.useRef(0);
|
|
20
|
+
const ref = React.useRef(null);
|
|
21
|
+
const [rect, setRect] = React.useState(defaultState);
|
|
22
|
+
const observer = React.useMemo(() => browser ? new ResizeObserver((entries) => {
|
|
23
23
|
const entry = entries[0];
|
|
24
24
|
if (entry) {
|
|
25
25
|
cancelAnimationFrame(frameID.current);
|
|
@@ -30,7 +30,7 @@ function useResizeObserver() {
|
|
|
30
30
|
});
|
|
31
31
|
}
|
|
32
32
|
}) : null, []);
|
|
33
|
-
|
|
33
|
+
React.useEffect(() => {
|
|
34
34
|
if (ref.current) {
|
|
35
35
|
observer.observe(ref.current);
|
|
36
36
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var React = require('react');
|
|
6
6
|
var useReducedMotion = require('../use-reduced-motion/use-reduced-motion.js');
|
|
7
7
|
var useWindowEvent = require('../use-window-event/use-window-event.js');
|
|
8
8
|
var easeInOutQuad = require('./utils/ease-in-out-quad.js');
|
|
@@ -19,18 +19,18 @@ function useScrollIntoView({
|
|
|
19
19
|
cancelable = true,
|
|
20
20
|
isList = false
|
|
21
21
|
} = {}) {
|
|
22
|
-
const frameID =
|
|
23
|
-
const startTime =
|
|
24
|
-
const shouldStop =
|
|
25
|
-
const scrollableRef =
|
|
26
|
-
const targetRef =
|
|
22
|
+
const frameID = React.useRef(0);
|
|
23
|
+
const startTime = React.useRef(0);
|
|
24
|
+
const shouldStop = React.useRef(false);
|
|
25
|
+
const scrollableRef = React.useRef(null);
|
|
26
|
+
const targetRef = React.useRef(null);
|
|
27
27
|
const reducedMotion = useReducedMotion.useReducedMotion();
|
|
28
28
|
const cancel = () => {
|
|
29
29
|
if (frameID.current) {
|
|
30
30
|
cancelAnimationFrame(frameID.current);
|
|
31
31
|
}
|
|
32
32
|
};
|
|
33
|
-
const scrollIntoView =
|
|
33
|
+
const scrollIntoView = React.useCallback(({ alignment = "start" } = {}) => {
|
|
34
34
|
var _a;
|
|
35
35
|
shouldStop.current = false;
|
|
36
36
|
if (frameID.current) {
|
|
@@ -80,7 +80,7 @@ function useScrollIntoView({
|
|
|
80
80
|
useWindowEvent.useWindowEvent("touchmove", handleStop, {
|
|
81
81
|
passive: true
|
|
82
82
|
});
|
|
83
|
-
|
|
83
|
+
React.useEffect(() => cancel, []);
|
|
84
84
|
return {
|
|
85
85
|
scrollableRef,
|
|
86
86
|
targetRef,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var React = require('react');
|
|
6
6
|
var getLockStyles = require('./utils/get-lock-styles.js');
|
|
7
7
|
var injectStyleTag = require('./utils/inject-style-tag.js');
|
|
8
8
|
var insertStyleTag = require('./utils/insert-style-tag.js');
|
|
@@ -11,10 +11,10 @@ var makeStyleTag = require('./utils/make-style-tag.js');
|
|
|
11
11
|
function useScrollLock(lock, options = {
|
|
12
12
|
disableBodyPadding: false
|
|
13
13
|
}) {
|
|
14
|
-
const [scrollLocked, setScrollLocked] =
|
|
15
|
-
const scrollTop =
|
|
14
|
+
const [scrollLocked, setScrollLocked] = React.useState(lock || false);
|
|
15
|
+
const scrollTop = React.useRef(0);
|
|
16
16
|
const { disableBodyPadding } = options;
|
|
17
|
-
const stylesheet =
|
|
17
|
+
const stylesheet = React.useRef(null);
|
|
18
18
|
const lockScroll = () => {
|
|
19
19
|
scrollTop.current = window.scrollY;
|
|
20
20
|
const styles = getLockStyles.getLockStyles({ disableBodyPadding });
|
|
@@ -29,7 +29,7 @@ function useScrollLock(lock, options = {
|
|
|
29
29
|
stylesheet.current.parentNode.removeChild(stylesheet.current);
|
|
30
30
|
stylesheet.current = null;
|
|
31
31
|
};
|
|
32
|
-
|
|
32
|
+
React.useEffect(() => {
|
|
33
33
|
if (scrollLocked) {
|
|
34
34
|
lockScroll();
|
|
35
35
|
} else {
|
|
@@ -37,12 +37,12 @@ function useScrollLock(lock, options = {
|
|
|
37
37
|
}
|
|
38
38
|
return unlockScroll;
|
|
39
39
|
}, [scrollLocked]);
|
|
40
|
-
|
|
40
|
+
React.useEffect(() => {
|
|
41
41
|
if (lock !== void 0) {
|
|
42
42
|
setScrollLocked(lock);
|
|
43
43
|
}
|
|
44
44
|
}, [lock]);
|
|
45
|
-
|
|
45
|
+
React.useEffect(() => {
|
|
46
46
|
if (lock === void 0 && typeof window !== "undefined") {
|
|
47
47
|
window.document.body.style.overflow === "hidden" && setScrollLocked(true);
|
|
48
48
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var React = require('react');
|
|
6
6
|
|
|
7
7
|
var __defProp = Object.defineProperty;
|
|
8
8
|
var __getOwnPropSymbols = Object.getOwnPropertySymbols;
|
|
@@ -21,7 +21,7 @@ var __spreadValues = (a, b) => {
|
|
|
21
21
|
return a;
|
|
22
22
|
};
|
|
23
23
|
function useSetState(initialState) {
|
|
24
|
-
const [state, _setState] =
|
|
24
|
+
const [state, _setState] = React.useState(initialState);
|
|
25
25
|
const setState = (statePartial) => _setState((current) => __spreadValues(__spreadValues({}, current), typeof statePartial === "function" ? statePartial(current) : statePartial));
|
|
26
26
|
return [state, setState];
|
|
27
27
|
}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var React = require('react');
|
|
6
6
|
var shallowEqual = require('../utils/shallow-equal/shallow-equal.js');
|
|
7
7
|
|
|
8
8
|
function shallowCompare(prevValue, currValue) {
|
|
@@ -23,8 +23,8 @@ function shallowCompare(prevValue, currValue) {
|
|
|
23
23
|
return true;
|
|
24
24
|
}
|
|
25
25
|
function useShallowCompare(dependencies) {
|
|
26
|
-
const ref =
|
|
27
|
-
const updateRef =
|
|
26
|
+
const ref = React.useRef([]);
|
|
27
|
+
const updateRef = React.useRef(0);
|
|
28
28
|
if (!shallowCompare(ref.current, dependencies)) {
|
|
29
29
|
ref.current = dependencies;
|
|
30
30
|
updateRef.current += 1;
|
|
@@ -32,7 +32,7 @@ function useShallowCompare(dependencies) {
|
|
|
32
32
|
return [updateRef.current];
|
|
33
33
|
}
|
|
34
34
|
function useShallowEffect(cb, dependencies) {
|
|
35
|
-
|
|
35
|
+
React.useEffect(cb, useShallowCompare(dependencies));
|
|
36
36
|
}
|
|
37
37
|
|
|
38
38
|
exports.useShallowEffect = useShallowEffect;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var React = require('react');
|
|
6
|
+
|
|
7
|
+
function useTimeout(fn, delay, options = { autoInvoke: false }) {
|
|
8
|
+
const timeoutRef = React.useRef(null);
|
|
9
|
+
const start = () => {
|
|
10
|
+
if (!timeoutRef.current) {
|
|
11
|
+
timeoutRef.current = window.setTimeout(() => {
|
|
12
|
+
fn();
|
|
13
|
+
timeoutRef.current = null;
|
|
14
|
+
}, delay);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
const clear = () => {
|
|
18
|
+
if (timeoutRef.current) {
|
|
19
|
+
window.clearTimeout(timeoutRef.current);
|
|
20
|
+
timeoutRef.current = null;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
React.useEffect(() => {
|
|
24
|
+
if (options.autoInvoke) {
|
|
25
|
+
start();
|
|
26
|
+
}
|
|
27
|
+
return clear;
|
|
28
|
+
}, [delay]);
|
|
29
|
+
return { start, clear };
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
exports.useTimeout = useTimeout;
|
|
33
|
+
//# sourceMappingURL=use-timeout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-timeout.js","sources":["../../src/use-timeout/use-timeout.ts"],"sourcesContent":["import { useRef, useEffect } from 'react';\n\nexport function useTimeout(\n fn: () => void,\n delay: number,\n options: { autoInvoke: boolean } = { autoInvoke: false }\n) {\n const timeoutRef = useRef<number>(null);\n\n const start = () => {\n if (!timeoutRef.current) {\n timeoutRef.current = window.setTimeout(() => {\n fn();\n timeoutRef.current = null;\n }, delay);\n }\n };\n\n const clear = () => {\n if (timeoutRef.current) {\n window.clearTimeout(timeoutRef.current);\n timeoutRef.current = null;\n }\n };\n\n useEffect(() => {\n if (options.autoInvoke) {\n start();\n }\n\n return clear;\n }, [delay]);\n\n return { start, clear };\n}\n"],"names":["useRef","useEffect"],"mappings":";;;;;;AACO,SAAS,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE;AACvE,EAAE,MAAM,UAAU,GAAGA,YAAM,CAAC,IAAI,CAAC,CAAC;AAClC,EAAE,MAAM,KAAK,GAAG,MAAM;AACtB,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;AAC7B,MAAM,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM;AACnD,QAAQ,EAAE,EAAE,CAAC;AACb,QAAQ,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;AAClC,OAAO,EAAE,KAAK,CAAC,CAAC;AAChB,KAAK;AACL,GAAG,CAAC;AACJ,EAAE,MAAM,KAAK,GAAG,MAAM;AACtB,IAAI,IAAI,UAAU,CAAC,OAAO,EAAE;AAC5B,MAAM,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC9C,MAAM,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;AAChC,KAAK;AACL,GAAG,CAAC;AACJ,EAAEC,eAAS,CAAC,MAAM;AAClB,IAAI,IAAI,OAAO,CAAC,UAAU,EAAE;AAC5B,MAAM,KAAK,EAAE,CAAC;AACd,KAAK;AACL,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;AACd,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1B;;;;"}
|
|
@@ -2,10 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var React = require('react');
|
|
6
6
|
|
|
7
|
-
function useToggle(
|
|
8
|
-
const [state, setState] =
|
|
7
|
+
function useToggle(options) {
|
|
8
|
+
const [state, setState] = React.useState(options[0]);
|
|
9
9
|
const toggle = (value) => {
|
|
10
10
|
if (typeof value !== "undefined") {
|
|
11
11
|
setState(value);
|
|
@@ -20,10 +20,6 @@ function useToggle(initialValue, options) {
|
|
|
20
20
|
};
|
|
21
21
|
return [state, toggle];
|
|
22
22
|
}
|
|
23
|
-
function useBooleanToggle(initialValue = false) {
|
|
24
|
-
return useToggle(initialValue, [true, false]);
|
|
25
|
-
}
|
|
26
23
|
|
|
27
|
-
exports.useBooleanToggle = useBooleanToggle;
|
|
28
24
|
exports.useToggle = useToggle;
|
|
29
25
|
//# sourceMappingURL=use-toggle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-toggle.js","sources":["../../src/use-toggle/use-toggle.ts"],"sourcesContent":["import { useState } from 'react';\n\nexport function useToggle<T>(
|
|
1
|
+
{"version":3,"file":"use-toggle.js","sources":["../../src/use-toggle/use-toggle.ts"],"sourcesContent":["import { useState } from 'react';\n\nexport function useToggle<T>(options: [T, T]) {\n const [state, setState] = useState(options[0]);\n\n const toggle = (value?: React.SetStateAction<T>) => {\n if (typeof value !== 'undefined') {\n setState(value);\n } else {\n setState((current) => {\n if (current === options[0]) {\n return options[1];\n }\n\n return options[0];\n });\n }\n };\n\n return [state, toggle] as const;\n}\n"],"names":["useState"],"mappings":";;;;;;AACO,SAAS,SAAS,CAAC,OAAO,EAAE;AACnC,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAGA,cAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AACjD,EAAE,MAAM,MAAM,GAAG,CAAC,KAAK,KAAK;AAC5B,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;AACtC,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;AACtB,KAAK,MAAM;AACX,MAAM,QAAQ,CAAC,CAAC,OAAO,KAAK;AAC5B,QAAQ,IAAI,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE;AACpC,UAAU,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AAC5B,SAAS;AACT,QAAQ,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;AAC1B,OAAO,CAAC,CAAC;AACT,KAAK;AACL,GAAG,CAAC;AACJ,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACzB;;;;"}
|