@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 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 { node, ariaHidden };
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":["export function createAriaHider(\n containerNode: HTMLElement,\n selector: string = 'body > :not(script)'\n) {\n const rootNodes: any[] = Array.from<HTMLElement>(document.querySelectorAll(selector)).map(\n (node) => {\n if (node?.shadowRoot?.contains(containerNode) || node.contains(containerNode)) {\n return undefined;\n }\n\n const ariaHidden = node.getAttribute('aria-hidden');\n\n if (ariaHidden === null || ariaHidden === 'false') {\n node.setAttribute('aria-hidden', 'true');\n }\n\n return { node, ariaHidden };\n }\n );\n\n return () => {\n rootNodes.forEach((item) => {\n if (!item) {\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 };\n}\n"],"names":[],"mappings":";;;;AAAO,SAAS,eAAe,CAAC,aAAa,EAAE,QAAQ,GAAG,qBAAqB,EAAE;AACjF,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,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,OAAO,EAAE;AACvD,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAChC,GAAG,CAAC,CAAC;AACL,EAAE,OAAO,MAAM;AACf,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAChC,MAAM,IAAI,CAAC,IAAI,EAAE;AACjB,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,KAAK,CAAC,CAAC;AACP,GAAG,CAAC;AACJ;;;;"}
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.assignRef(ref, node));
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":["import { useCallback } from 'react';\nimport { assignRef } from '../utils';\n\nexport function mergeRefs(...refs: any[]) {\n return (node: any) => {\n refs.forEach((ref) => assignRef(ref, node));\n };\n}\n\nexport function useMergedRef(...refs: any[]) {\n return useCallback(mergeRefs(...refs), refs);\n}\n"],"names":["assignRef","useCallback"],"mappings":";;;;;;;AAEO,SAAS,SAAS,CAAC,GAAG,IAAI,EAAE;AACnC,EAAE,OAAO,CAAC,IAAI,KAAK;AACnB,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAKA,mBAAS,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;AAChD,GAAG,CAAC;AACJ,CAAC;AACM,SAAS,YAAY,CAAC,GAAG,IAAI,EAAE;AACtC,EAAE,OAAOC,iBAAW,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAC/C;;;;;"}
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 { node, ariaHidden };
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":["export function createAriaHider(\n containerNode: HTMLElement,\n selector: string = 'body > :not(script)'\n) {\n const rootNodes: any[] = Array.from<HTMLElement>(document.querySelectorAll(selector)).map(\n (node) => {\n if (node?.shadowRoot?.contains(containerNode) || node.contains(containerNode)) {\n return undefined;\n }\n\n const ariaHidden = node.getAttribute('aria-hidden');\n\n if (ariaHidden === null || ariaHidden === 'false') {\n node.setAttribute('aria-hidden', 'true');\n }\n\n return { node, ariaHidden };\n }\n );\n\n return () => {\n rootNodes.forEach((item) => {\n if (!item) {\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 };\n}\n"],"names":[],"mappings":"AAAO,SAAS,eAAe,CAAC,aAAa,EAAE,QAAQ,GAAG,qBAAqB,EAAE;AACjF,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,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,OAAO,EAAE;AACvD,MAAM,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;AAC/C,KAAK;AACL,IAAI,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAChC,GAAG,CAAC,CAAC;AACL,EAAE,OAAO,MAAM;AACf,IAAI,SAAS,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AAChC,MAAM,IAAI,CAAC,IAAI,EAAE;AACjB,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,KAAK,CAAC,CAAC;AACP,GAAG,CAAC;AACJ;;;;"}
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":["import { useCallback } from 'react';\nimport { assignRef } from '../utils';\n\nexport function mergeRefs(...refs: any[]) {\n return (node: any) => {\n refs.forEach((ref) => assignRef(ref, node));\n };\n}\n\nexport function useMergedRef(...refs: any[]) {\n return useCallback(mergeRefs(...refs), refs);\n}\n"],"names":[],"mappings":";;;AAEO,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;;;;"}
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
- export declare function mergeRefs(...refs: any[]): (node: any) => void;
2
- export declare function useMergedRef(...refs: any[]): (node: any) => void;
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 {};
@@ -1,4 +1,3 @@
1
- export { assignRef } from './assign-ref/assign-ref';
2
1
  export { clamp } from './clamp/clamp';
3
2
  export { lowerFirst } from './lower-first/lower-first';
4
3
  export { randomId } from './random-id/random-id';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mantine/hooks",
3
- "version": "7.0.0-alpha.2",
3
+ "version": "7.0.0-alpha.3",
4
4
  "main": "cjs/index.js",
5
5
  "module": "esm/index.js",
6
6
  "types": "lib/index.d.ts",