@mantine/hooks 7.0.0-alpha.2 → 7.0.0-alpha.3
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 +5 -2
- package/cjs/index.js.map +1 -1
- package/cjs/use-callback-ref/use-callback-ref.js +19 -0
- package/cjs/use-callback-ref/use-callback-ref.js.map +1 -0
- 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-focus-trap/create-aria-hider.js +15 -2
- package/cjs/use-focus-trap/create-aria-hider.js.map +1 -1
- package/cjs/use-merged-ref/use-merged-ref.js +9 -2
- package/cjs/use-merged-ref/use-merged-ref.js.map +1 -1
- package/esm/index.js +3 -2
- package/esm/index.js.map +1 -1
- package/esm/use-callback-ref/use-callback-ref.js +15 -0
- package/esm/use-callback-ref/use-callback-ref.js.map +1 -0
- 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-focus-trap/create-aria-hider.js +15 -2
- package/esm/use-focus-trap/create-aria-hider.js.map +1 -1
- package/esm/use-merged-ref/use-merged-ref.js +8 -2
- package/esm/use-merged-ref/use-merged-ref.js.map +1 -1
- package/lib/index.d.ts +3 -1
- package/lib/use-callback-ref/use-callback-ref.d.ts +1 -0
- package/lib/use-debounced-callback/use-debounced-callback.d.ts +1 -0
- package/lib/use-merged-ref/use-merged-ref.d.ts +6 -2
- package/lib/utils/index.d.ts +0 -1
- package/package.json +1 -1
package/cjs/index.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
+
var useCallbackRef = require('./use-callback-ref/use-callback-ref.js');
|
|
6
|
+
var useDebouncedCallback = require('./use-debounced-callback/use-debounced-callback.js');
|
|
5
7
|
var useClickOutside = require('./use-click-outside/use-click-outside.js');
|
|
6
8
|
var useClipboard = require('./use-clipboard/use-clipboard.js');
|
|
7
9
|
var useColorScheme = require('./use-color-scheme/use-color-scheme.js');
|
|
@@ -58,7 +60,6 @@ var useFavicon = require('./use-favicon/use-favicon.js');
|
|
|
58
60
|
var useHeadroom = require('./use-headroom/use-headroom.js');
|
|
59
61
|
var useEyeDropper = require('./use-eye-dropper/use-eye-dropper.js');
|
|
60
62
|
var parseHotkey = require('./use-hotkeys/parse-hotkey.js');
|
|
61
|
-
var assignRef = require('./utils/assign-ref/assign-ref.js');
|
|
62
63
|
var clamp = require('./utils/clamp/clamp.js');
|
|
63
64
|
var lowerFirst = require('./utils/lower-first/lower-first.js');
|
|
64
65
|
var randomId = require('./utils/random-id/random-id.js');
|
|
@@ -68,6 +69,8 @@ var upperFirst = require('./utils/upper-first/upper-first.js');
|
|
|
68
69
|
|
|
69
70
|
|
|
70
71
|
|
|
72
|
+
exports.useCallbackRef = useCallbackRef.useCallbackRef;
|
|
73
|
+
exports.useDebounceCallback = useDebouncedCallback.useDebounceCallback;
|
|
71
74
|
exports.useClickOutside = useClickOutside.useClickOutside;
|
|
72
75
|
exports.useClipboard = useClipboard.useClipboard;
|
|
73
76
|
exports.useColorScheme = useColorScheme.useColorScheme;
|
|
@@ -88,6 +91,7 @@ exports.useListState = useListState.useListState;
|
|
|
88
91
|
exports.useLocalStorage = useLocalStorage.useLocalStorage;
|
|
89
92
|
exports.useSessionStorage = useSessionStorage.useSessionStorage;
|
|
90
93
|
exports.useMediaQuery = useMediaQuery.useMediaQuery;
|
|
94
|
+
exports.assignRef = useMergedRef.assignRef;
|
|
91
95
|
exports.mergeRefs = useMergedRef.mergeRefs;
|
|
92
96
|
exports.useMergedRef = useMergedRef.useMergedRef;
|
|
93
97
|
exports.useMouse = useMouse.useMouse;
|
|
@@ -127,7 +131,6 @@ exports.useFavicon = useFavicon.useFavicon;
|
|
|
127
131
|
exports.useHeadroom = useHeadroom.useHeadroom;
|
|
128
132
|
exports.useEyeDropper = useEyeDropper.useEyeDropper;
|
|
129
133
|
exports.getHotkeyHandler = parseHotkey.getHotkeyHandler;
|
|
130
|
-
exports.assignRef = assignRef.assignRef;
|
|
131
134
|
exports.clamp = clamp.clamp;
|
|
132
135
|
exports.lowerFirst = lowerFirst.lowerFirst;
|
|
133
136
|
exports.randomId = randomId.randomId;
|
package/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var React = require('react');
|
|
6
|
+
|
|
7
|
+
function useCallbackRef(callback) {
|
|
8
|
+
const callbackRef = React.useRef(callback);
|
|
9
|
+
React.useEffect(() => {
|
|
10
|
+
callbackRef.current = callback;
|
|
11
|
+
});
|
|
12
|
+
return React.useMemo(() => (...args) => {
|
|
13
|
+
var _a;
|
|
14
|
+
return (_a = callbackRef.current) == null ? void 0 : _a.call(callbackRef, ...args);
|
|
15
|
+
}, []);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
exports.useCallbackRef = useCallbackRef;
|
|
19
|
+
//# sourceMappingURL=use-callback-ref.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-callback-ref.js","sources":["../../src/use-callback-ref/use-callback-ref.ts"],"sourcesContent":["import { useRef, useEffect, useMemo } from 'react';\n\nexport function useCallbackRef<T extends (...args: any[]) => any>(callback: T | undefined): T {\n const callbackRef = useRef(callback);\n\n useEffect(() => {\n callbackRef.current = callback;\n });\n\n return useMemo(() => ((...args) => callbackRef.current?.(...args)) as T, []);\n}\n"],"names":["useRef","useEffect","useMemo"],"mappings":";;;;;;AACO,SAAS,cAAc,CAAC,QAAQ,EAAE;AACzC,EAAE,MAAM,WAAW,GAAGA,YAAM,CAAC,QAAQ,CAAC,CAAC;AACvC,EAAEC,eAAS,CAAC,MAAM;AAClB,IAAI,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;AACnC,GAAG,CAAC,CAAC;AACL,EAAE,OAAOC,aAAO,CAAC,MAAM,CAAC,GAAG,IAAI,KAAK;AACpC,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,OAAO,CAAC,EAAE,GAAG,WAAW,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC;AACvF,GAAG,EAAE,EAAE,CAAC,CAAC;AACT;;;;"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var React = require('react');
|
|
6
|
+
var useCallbackRef = require('../use-callback-ref/use-callback-ref.js');
|
|
7
|
+
|
|
8
|
+
function useDebounceCallback(callback, delay) {
|
|
9
|
+
const handleCallback = useCallbackRef.useCallbackRef(callback);
|
|
10
|
+
const debounceTimerRef = React.useRef(0);
|
|
11
|
+
React.useEffect(() => () => window.clearTimeout(debounceTimerRef.current), []);
|
|
12
|
+
return React.useCallback(() => {
|
|
13
|
+
window.clearTimeout(debounceTimerRef.current);
|
|
14
|
+
debounceTimerRef.current = window.setTimeout(handleCallback, delay);
|
|
15
|
+
}, [handleCallback, delay]);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
exports.useDebounceCallback = useDebounceCallback;
|
|
19
|
+
//# sourceMappingURL=use-debounced-callback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-debounced-callback.js","sources":["../../src/use-debounced-callback/use-debounced-callback.ts"],"sourcesContent":["import { useRef, useEffect, useCallback } from 'react';\nimport { useCallbackRef } from '../use-callback-ref/use-callback-ref';\n\nexport function useDebounceCallback(callback: () => void, delay: number) {\n const handleCallback = useCallbackRef(callback);\n const debounceTimerRef = useRef(0);\n useEffect(() => () => window.clearTimeout(debounceTimerRef.current), []);\n return useCallback(() => {\n window.clearTimeout(debounceTimerRef.current);\n debounceTimerRef.current = window.setTimeout(handleCallback, delay);\n }, [handleCallback, delay]);\n}\n"],"names":["useCallbackRef","useRef","useEffect","useCallback"],"mappings":";;;;;;;AAEO,SAAS,mBAAmB,CAAC,QAAQ,EAAE,KAAK,EAAE;AACrD,EAAE,MAAM,cAAc,GAAGA,6BAAc,CAAC,QAAQ,CAAC,CAAC;AAClD,EAAE,MAAM,gBAAgB,GAAGC,YAAM,CAAC,CAAC,CAAC,CAAC;AACrC,EAAEC,eAAS,CAAC,MAAM,MAAM,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3E,EAAE,OAAOC,iBAAW,CAAC,MAAM;AAC3B,IAAI,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAClD,IAAI,gBAAgB,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AACxE,GAAG,EAAE,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9B;;;;"}
|
|
@@ -2,21 +2,32 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
+
var randomId = require('../utils/random-id/random-id.js');
|
|
6
|
+
|
|
5
7
|
function createAriaHider(containerNode, selector = "body > :not(script)") {
|
|
8
|
+
const id = randomId.randomId();
|
|
6
9
|
const rootNodes = Array.from(document.querySelectorAll(selector)).map((node) => {
|
|
7
10
|
var _a;
|
|
8
11
|
if (((_a = node == null ? void 0 : node.shadowRoot) == null ? void 0 : _a.contains(containerNode)) || node.contains(containerNode)) {
|
|
9
12
|
return void 0;
|
|
10
13
|
}
|
|
11
14
|
const ariaHidden = node.getAttribute("aria-hidden");
|
|
15
|
+
const prevAriaHidden = node.getAttribute("data-hidden");
|
|
16
|
+
const prevFocusId = node.getAttribute("data-focus-id");
|
|
17
|
+
node.setAttribute("data-focus-id", id);
|
|
12
18
|
if (ariaHidden === null || ariaHidden === "false") {
|
|
13
19
|
node.setAttribute("aria-hidden", "true");
|
|
20
|
+
} else if (!prevAriaHidden && !prevFocusId) {
|
|
21
|
+
node.setAttribute("data-hidden", ariaHidden);
|
|
14
22
|
}
|
|
15
|
-
return {
|
|
23
|
+
return {
|
|
24
|
+
node,
|
|
25
|
+
ariaHidden: prevAriaHidden || null
|
|
26
|
+
};
|
|
16
27
|
});
|
|
17
28
|
return () => {
|
|
18
29
|
rootNodes.forEach((item) => {
|
|
19
|
-
if (!item) {
|
|
30
|
+
if (!item || id !== item.node.getAttribute("data-focus-id")) {
|
|
20
31
|
return;
|
|
21
32
|
}
|
|
22
33
|
if (item.ariaHidden === null) {
|
|
@@ -24,6 +35,8 @@ function createAriaHider(containerNode, selector = "body > :not(script)") {
|
|
|
24
35
|
} else {
|
|
25
36
|
item.node.setAttribute("aria-hidden", item.ariaHidden);
|
|
26
37
|
}
|
|
38
|
+
item.node.removeAttribute("data-focus-id");
|
|
39
|
+
item.node.removeAttribute("data-hidden");
|
|
27
40
|
});
|
|
28
41
|
};
|
|
29
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-aria-hider.js","sources":["../../src/use-focus-trap/create-aria-hider.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"create-aria-hider.js","sources":["../../src/use-focus-trap/create-aria-hider.ts"],"sourcesContent":["import { randomId } from '../utils';\n\ninterface Value {\n node: HTMLElement;\n ariaHidden: string | null;\n}\n\nexport function createAriaHider(\n containerNode: HTMLElement,\n selector: string = 'body > :not(script)'\n) {\n const id = randomId();\n\n const rootNodes: (Value | undefined)[] = Array.from<HTMLElement>(\n document.querySelectorAll(selector)\n ).map((node) => {\n if (node?.shadowRoot?.contains(containerNode) || node.contains(containerNode)) {\n return undefined;\n }\n\n const ariaHidden = node.getAttribute('aria-hidden');\n const prevAriaHidden = node.getAttribute('data-hidden');\n const prevFocusId = node.getAttribute('data-focus-id');\n\n node.setAttribute('data-focus-id', id);\n\n if (ariaHidden === null || ariaHidden === 'false') {\n node.setAttribute('aria-hidden', 'true');\n } else if (!prevAriaHidden && !prevFocusId) {\n node.setAttribute('data-hidden', ariaHidden);\n }\n\n return {\n node,\n ariaHidden: prevAriaHidden || null,\n };\n });\n\n return () => {\n rootNodes.forEach((item) => {\n if (!item || id !== item.node.getAttribute('data-focus-id')) {\n return;\n }\n\n if (item.ariaHidden === null) {\n item.node.removeAttribute('aria-hidden');\n } else {\n item.node.setAttribute('aria-hidden', item.ariaHidden);\n }\n\n item.node.removeAttribute('data-focus-id');\n item.node.removeAttribute('data-hidden');\n });\n };\n}\n"],"names":["randomId"],"mappings":";;;;;;AACO,SAAS,eAAe,CAAC,aAAa,EAAE,QAAQ,GAAG,qBAAqB,EAAE;AACjF,EAAE,MAAM,EAAE,GAAGA,iBAAQ,EAAE,CAAC;AACxB,EAAE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AAClF,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AACxI,MAAM,OAAO,KAAK,CAAC,CAAC;AACpB,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;AACxD,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;AAC5D,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;AAC3D,IAAI,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;AAC3C,IAAI,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,OAAO,EAAE;AACvD,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAC/C,KAAK,MAAM,IAAI,CAAC,cAAc,IAAI,CAAC,WAAW,EAAE;AAChD,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,OAAO;AACX,MAAM,IAAI;AACV,MAAM,UAAU,EAAE,cAAc,IAAI,IAAI;AACxC,KAAK,CAAC;AACN,GAAG,CAAC,CAAC;AACL,EAAE,OAAO,MAAM;AACf,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAChC,MAAM,IAAI,CAAC,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE;AACnE,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE;AACpC,QAAQ,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;AACjD,OAAO,MAAM;AACb,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC/D,OAAO;AACP,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;AACjD,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;AAC/C,KAAK,CAAC,CAAC;AACP,GAAG,CAAC;AACJ;;;;"}
|
|
@@ -3,17 +3,24 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
var React = require('react');
|
|
6
|
-
var assignRef = require('../utils/assign-ref/assign-ref.js');
|
|
7
6
|
|
|
7
|
+
function assignRef(ref, value) {
|
|
8
|
+
if (typeof ref === "function") {
|
|
9
|
+
ref(value);
|
|
10
|
+
} else if (typeof ref === "object" && ref !== null && "current" in ref) {
|
|
11
|
+
ref.current = value;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
8
14
|
function mergeRefs(...refs) {
|
|
9
15
|
return (node) => {
|
|
10
|
-
refs.forEach((ref) => assignRef
|
|
16
|
+
refs.forEach((ref) => assignRef(ref, node));
|
|
11
17
|
};
|
|
12
18
|
}
|
|
13
19
|
function useMergedRef(...refs) {
|
|
14
20
|
return React.useCallback(mergeRefs(...refs), refs);
|
|
15
21
|
}
|
|
16
22
|
|
|
23
|
+
exports.assignRef = assignRef;
|
|
17
24
|
exports.mergeRefs = mergeRefs;
|
|
18
25
|
exports.useMergedRef = useMergedRef;
|
|
19
26
|
//# sourceMappingURL=use-merged-ref.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-merged-ref.js","sources":["../../src/use-merged-ref/use-merged-ref.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"use-merged-ref.js","sources":["../../src/use-merged-ref/use-merged-ref.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport { useCallback, Ref } from 'react';\n\ntype PossibleRef<T> = Ref<T> | undefined;\n\nexport function assignRef<T>(ref: PossibleRef<T>, value: T) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (typeof ref === 'object' && ref !== null && 'current' in ref) {\n (ref as React.MutableRefObject<T>).current = value;\n }\n}\n\nexport function mergeRefs<T>(...refs: PossibleRef<T>[]) {\n return (node: T | null) => {\n refs.forEach((ref) => assignRef(ref, node));\n };\n}\n\nexport function useMergedRef<T>(...refs: PossibleRef<T>[]) {\n return useCallback(mergeRefs(...refs), refs);\n}\n"],"names":["useCallback"],"mappings":";;;;;;AACO,SAAS,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE;AACtC,EAAE,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;AACjC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;AACf,GAAG,MAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,SAAS,IAAI,GAAG,EAAE;AAC1E,IAAI,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;AACxB,GAAG;AACH,CAAC;AACM,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE;AACnC,EAAE,OAAO,CAAC,IAAI,KAAK;AACnB,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AAChD,GAAG,CAAC;AACJ,CAAC;AACM,SAAS,YAAY,CAAC,GAAG,IAAI,EAAE;AACtC,EAAE,OAAOA,iBAAW,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAC/C;;;;;;"}
|
package/esm/index.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export { useCallbackRef } from './use-callback-ref/use-callback-ref.js';
|
|
2
|
+
export { useDebounceCallback } from './use-debounced-callback/use-debounced-callback.js';
|
|
1
3
|
export { useClickOutside } from './use-click-outside/use-click-outside.js';
|
|
2
4
|
export { useClipboard } from './use-clipboard/use-clipboard.js';
|
|
3
5
|
export { useColorScheme } from './use-color-scheme/use-color-scheme.js';
|
|
@@ -18,7 +20,7 @@ export { useListState } from './use-list-state/use-list-state.js';
|
|
|
18
20
|
export { useLocalStorage } from './use-local-storage/use-local-storage.js';
|
|
19
21
|
export { useSessionStorage } from './use-session-storage/use-session-storage.js';
|
|
20
22
|
export { useMediaQuery } from './use-media-query/use-media-query.js';
|
|
21
|
-
export { mergeRefs, useMergedRef } from './use-merged-ref/use-merged-ref.js';
|
|
23
|
+
export { assignRef, mergeRefs, useMergedRef } from './use-merged-ref/use-merged-ref.js';
|
|
22
24
|
export { useMouse } from './use-mouse/use-mouse.js';
|
|
23
25
|
export { clampUseMovePosition, useMove } from './use-move/use-move.js';
|
|
24
26
|
export { usePagination } from './use-pagination/use-pagination.js';
|
|
@@ -54,7 +56,6 @@ export { useFavicon } from './use-favicon/use-favicon.js';
|
|
|
54
56
|
export { useHeadroom } from './use-headroom/use-headroom.js';
|
|
55
57
|
export { useEyeDropper } from './use-eye-dropper/use-eye-dropper.js';
|
|
56
58
|
export { getHotkeyHandler } from './use-hotkeys/parse-hotkey.js';
|
|
57
|
-
export { assignRef } from './utils/assign-ref/assign-ref.js';
|
|
58
59
|
export { clamp } from './utils/clamp/clamp.js';
|
|
59
60
|
export { lowerFirst } from './utils/lower-first/lower-first.js';
|
|
60
61
|
export { randomId } from './utils/random-id/random-id.js';
|
package/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { useRef, useEffect, useMemo } from 'react';
|
|
2
|
+
|
|
3
|
+
function useCallbackRef(callback) {
|
|
4
|
+
const callbackRef = useRef(callback);
|
|
5
|
+
useEffect(() => {
|
|
6
|
+
callbackRef.current = callback;
|
|
7
|
+
});
|
|
8
|
+
return useMemo(() => (...args) => {
|
|
9
|
+
var _a;
|
|
10
|
+
return (_a = callbackRef.current) == null ? void 0 : _a.call(callbackRef, ...args);
|
|
11
|
+
}, []);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export { useCallbackRef };
|
|
15
|
+
//# sourceMappingURL=use-callback-ref.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-callback-ref.js","sources":["../../src/use-callback-ref/use-callback-ref.ts"],"sourcesContent":["import { useRef, useEffect, useMemo } from 'react';\n\nexport function useCallbackRef<T extends (...args: any[]) => any>(callback: T | undefined): T {\n const callbackRef = useRef(callback);\n\n useEffect(() => {\n callbackRef.current = callback;\n });\n\n return useMemo(() => ((...args) => callbackRef.current?.(...args)) as T, []);\n}\n"],"names":[],"mappings":";;AACO,SAAS,cAAc,CAAC,QAAQ,EAAE;AACzC,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AACvC,EAAE,SAAS,CAAC,MAAM;AAClB,IAAI,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAC;AACnC,GAAG,CAAC,CAAC;AACL,EAAE,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI,KAAK;AACpC,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,OAAO,CAAC,EAAE,GAAG,WAAW,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,CAAC;AACvF,GAAG,EAAE,EAAE,CAAC,CAAC;AACT;;;;"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { useRef, useEffect, useCallback } from 'react';
|
|
2
|
+
import { useCallbackRef } from '../use-callback-ref/use-callback-ref.js';
|
|
3
|
+
|
|
4
|
+
function useDebounceCallback(callback, delay) {
|
|
5
|
+
const handleCallback = useCallbackRef(callback);
|
|
6
|
+
const debounceTimerRef = useRef(0);
|
|
7
|
+
useEffect(() => () => window.clearTimeout(debounceTimerRef.current), []);
|
|
8
|
+
return useCallback(() => {
|
|
9
|
+
window.clearTimeout(debounceTimerRef.current);
|
|
10
|
+
debounceTimerRef.current = window.setTimeout(handleCallback, delay);
|
|
11
|
+
}, [handleCallback, delay]);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export { useDebounceCallback };
|
|
15
|
+
//# sourceMappingURL=use-debounced-callback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-debounced-callback.js","sources":["../../src/use-debounced-callback/use-debounced-callback.ts"],"sourcesContent":["import { useRef, useEffect, useCallback } from 'react';\nimport { useCallbackRef } from '../use-callback-ref/use-callback-ref';\n\nexport function useDebounceCallback(callback: () => void, delay: number) {\n const handleCallback = useCallbackRef(callback);\n const debounceTimerRef = useRef(0);\n useEffect(() => () => window.clearTimeout(debounceTimerRef.current), []);\n return useCallback(() => {\n window.clearTimeout(debounceTimerRef.current);\n debounceTimerRef.current = window.setTimeout(handleCallback, delay);\n }, [handleCallback, delay]);\n}\n"],"names":[],"mappings":";;;AAEO,SAAS,mBAAmB,CAAC,QAAQ,EAAE,KAAK,EAAE;AACrD,EAAE,MAAM,cAAc,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;AAClD,EAAE,MAAM,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACrC,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;AAC3E,EAAE,OAAO,WAAW,CAAC,MAAM;AAC3B,IAAI,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAClD,IAAI,gBAAgB,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AACxE,GAAG,EAAE,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;AAC9B;;;;"}
|
|
@@ -1,18 +1,29 @@
|
|
|
1
|
+
import { randomId } from '../utils/random-id/random-id.js';
|
|
2
|
+
|
|
1
3
|
function createAriaHider(containerNode, selector = "body > :not(script)") {
|
|
4
|
+
const id = randomId();
|
|
2
5
|
const rootNodes = Array.from(document.querySelectorAll(selector)).map((node) => {
|
|
3
6
|
var _a;
|
|
4
7
|
if (((_a = node == null ? void 0 : node.shadowRoot) == null ? void 0 : _a.contains(containerNode)) || node.contains(containerNode)) {
|
|
5
8
|
return void 0;
|
|
6
9
|
}
|
|
7
10
|
const ariaHidden = node.getAttribute("aria-hidden");
|
|
11
|
+
const prevAriaHidden = node.getAttribute("data-hidden");
|
|
12
|
+
const prevFocusId = node.getAttribute("data-focus-id");
|
|
13
|
+
node.setAttribute("data-focus-id", id);
|
|
8
14
|
if (ariaHidden === null || ariaHidden === "false") {
|
|
9
15
|
node.setAttribute("aria-hidden", "true");
|
|
16
|
+
} else if (!prevAriaHidden && !prevFocusId) {
|
|
17
|
+
node.setAttribute("data-hidden", ariaHidden);
|
|
10
18
|
}
|
|
11
|
-
return {
|
|
19
|
+
return {
|
|
20
|
+
node,
|
|
21
|
+
ariaHidden: prevAriaHidden || null
|
|
22
|
+
};
|
|
12
23
|
});
|
|
13
24
|
return () => {
|
|
14
25
|
rootNodes.forEach((item) => {
|
|
15
|
-
if (!item) {
|
|
26
|
+
if (!item || id !== item.node.getAttribute("data-focus-id")) {
|
|
16
27
|
return;
|
|
17
28
|
}
|
|
18
29
|
if (item.ariaHidden === null) {
|
|
@@ -20,6 +31,8 @@ function createAriaHider(containerNode, selector = "body > :not(script)") {
|
|
|
20
31
|
} else {
|
|
21
32
|
item.node.setAttribute("aria-hidden", item.ariaHidden);
|
|
22
33
|
}
|
|
34
|
+
item.node.removeAttribute("data-focus-id");
|
|
35
|
+
item.node.removeAttribute("data-hidden");
|
|
23
36
|
});
|
|
24
37
|
};
|
|
25
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-aria-hider.js","sources":["../../src/use-focus-trap/create-aria-hider.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"create-aria-hider.js","sources":["../../src/use-focus-trap/create-aria-hider.ts"],"sourcesContent":["import { randomId } from '../utils';\n\ninterface Value {\n node: HTMLElement;\n ariaHidden: string | null;\n}\n\nexport function createAriaHider(\n containerNode: HTMLElement,\n selector: string = 'body > :not(script)'\n) {\n const id = randomId();\n\n const rootNodes: (Value | undefined)[] = Array.from<HTMLElement>(\n document.querySelectorAll(selector)\n ).map((node) => {\n if (node?.shadowRoot?.contains(containerNode) || node.contains(containerNode)) {\n return undefined;\n }\n\n const ariaHidden = node.getAttribute('aria-hidden');\n const prevAriaHidden = node.getAttribute('data-hidden');\n const prevFocusId = node.getAttribute('data-focus-id');\n\n node.setAttribute('data-focus-id', id);\n\n if (ariaHidden === null || ariaHidden === 'false') {\n node.setAttribute('aria-hidden', 'true');\n } else if (!prevAriaHidden && !prevFocusId) {\n node.setAttribute('data-hidden', ariaHidden);\n }\n\n return {\n node,\n ariaHidden: prevAriaHidden || null,\n };\n });\n\n return () => {\n rootNodes.forEach((item) => {\n if (!item || id !== item.node.getAttribute('data-focus-id')) {\n return;\n }\n\n if (item.ariaHidden === null) {\n item.node.removeAttribute('aria-hidden');\n } else {\n item.node.setAttribute('aria-hidden', item.ariaHidden);\n }\n\n item.node.removeAttribute('data-focus-id');\n item.node.removeAttribute('data-hidden');\n });\n };\n}\n"],"names":[],"mappings":";;AACO,SAAS,eAAe,CAAC,aAAa,EAAE,QAAQ,GAAG,qBAAqB,EAAE;AACjF,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;AACxB,EAAE,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;AAClF,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,IAAI,CAAC,CAAC,EAAE,GAAG,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE;AACxI,MAAM,OAAO,KAAK,CAAC,CAAC;AACpB,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;AACxD,IAAI,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;AAC5D,IAAI,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;AAC3D,IAAI,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;AAC3C,IAAI,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,OAAO,EAAE;AACvD,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAC/C,KAAK,MAAM,IAAI,CAAC,cAAc,IAAI,CAAC,WAAW,EAAE;AAChD,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,OAAO;AACX,MAAM,IAAI;AACV,MAAM,UAAU,EAAE,cAAc,IAAI,IAAI;AACxC,KAAK,CAAC;AACN,GAAG,CAAC,CAAC;AACL,EAAE,OAAO,MAAM;AACf,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAChC,MAAM,IAAI,CAAC,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE;AACnE,QAAQ,OAAO;AACf,OAAO;AACP,MAAM,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE;AACpC,QAAQ,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;AACjD,OAAO,MAAM;AACb,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC/D,OAAO;AACP,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;AACjD,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;AAC/C,KAAK,CAAC,CAAC;AACP,GAAG,CAAC;AACJ;;;;"}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { useCallback } from 'react';
|
|
2
|
-
import { assignRef } from '../utils/assign-ref/assign-ref.js';
|
|
3
2
|
|
|
3
|
+
function assignRef(ref, value) {
|
|
4
|
+
if (typeof ref === "function") {
|
|
5
|
+
ref(value);
|
|
6
|
+
} else if (typeof ref === "object" && ref !== null && "current" in ref) {
|
|
7
|
+
ref.current = value;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
4
10
|
function mergeRefs(...refs) {
|
|
5
11
|
return (node) => {
|
|
6
12
|
refs.forEach((ref) => assignRef(ref, node));
|
|
@@ -10,5 +16,5 @@ function useMergedRef(...refs) {
|
|
|
10
16
|
return useCallback(mergeRefs(...refs), refs);
|
|
11
17
|
}
|
|
12
18
|
|
|
13
|
-
export { mergeRefs, useMergedRef };
|
|
19
|
+
export { assignRef, mergeRefs, useMergedRef };
|
|
14
20
|
//# sourceMappingURL=use-merged-ref.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-merged-ref.js","sources":["../../src/use-merged-ref/use-merged-ref.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"use-merged-ref.js","sources":["../../src/use-merged-ref/use-merged-ref.ts"],"sourcesContent":["/* eslint-disable no-param-reassign */\nimport { useCallback, Ref } from 'react';\n\ntype PossibleRef<T> = Ref<T> | undefined;\n\nexport function assignRef<T>(ref: PossibleRef<T>, value: T) {\n if (typeof ref === 'function') {\n ref(value);\n } else if (typeof ref === 'object' && ref !== null && 'current' in ref) {\n (ref as React.MutableRefObject<T>).current = value;\n }\n}\n\nexport function mergeRefs<T>(...refs: PossibleRef<T>[]) {\n return (node: T | null) => {\n refs.forEach((ref) => assignRef(ref, node));\n };\n}\n\nexport function useMergedRef<T>(...refs: PossibleRef<T>[]) {\n return useCallback(mergeRefs(...refs), refs);\n}\n"],"names":[],"mappings":";;AACO,SAAS,SAAS,CAAC,GAAG,EAAE,KAAK,EAAE;AACtC,EAAE,IAAI,OAAO,GAAG,KAAK,UAAU,EAAE;AACjC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;AACf,GAAG,MAAM,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,IAAI,SAAS,IAAI,GAAG,EAAE;AAC1E,IAAI,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;AACxB,GAAG;AACH,CAAC;AACM,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE;AACnC,EAAE,OAAO,CAAC,IAAI,KAAK;AACnB,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AAChD,GAAG,CAAC;AACJ,CAAC;AACM,SAAS,YAAY,CAAC,GAAG,IAAI,EAAE;AACtC,EAAE,OAAO,WAAW,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAC/C;;;;"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export * from './utils';
|
|
2
|
+
export { useCallbackRef } from './use-callback-ref/use-callback-ref';
|
|
3
|
+
export { useDebounceCallback } from './use-debounced-callback/use-debounced-callback';
|
|
2
4
|
export { useClickOutside } from './use-click-outside/use-click-outside';
|
|
3
5
|
export { useClipboard } from './use-clipboard/use-clipboard';
|
|
4
6
|
export { useColorScheme } from './use-color-scheme/use-color-scheme';
|
|
@@ -19,7 +21,7 @@ export { useListState } from './use-list-state/use-list-state';
|
|
|
19
21
|
export { useLocalStorage } from './use-local-storage/use-local-storage';
|
|
20
22
|
export { useSessionStorage } from './use-session-storage/use-session-storage';
|
|
21
23
|
export { useMediaQuery } from './use-media-query/use-media-query';
|
|
22
|
-
export { useMergedRef, mergeRefs } from './use-merged-ref/use-merged-ref';
|
|
24
|
+
export { useMergedRef, mergeRefs, assignRef } from './use-merged-ref/use-merged-ref';
|
|
23
25
|
export { useMouse } from './use-mouse/use-mouse';
|
|
24
26
|
export { useMove, clampUseMovePosition } from './use-move/use-move';
|
|
25
27
|
export { usePagination } from './use-pagination/use-pagination';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function useCallbackRef<T extends (...args: any[]) => any>(callback: T | undefined): T;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function useDebounceCallback(callback: () => void, delay: number): () => void;
|
|
@@ -1,2 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { Ref } from 'react';
|
|
2
|
+
type PossibleRef<T> = Ref<T> | undefined;
|
|
3
|
+
export declare function assignRef<T>(ref: PossibleRef<T>, value: T): void;
|
|
4
|
+
export declare function mergeRefs<T>(...refs: PossibleRef<T>[]): (node: T | null) => void;
|
|
5
|
+
export declare function useMergedRef<T>(...refs: PossibleRef<T>[]): (node: T | null) => void;
|
|
6
|
+
export {};
|
package/lib/utils/index.d.ts
CHANGED