@mantine/hooks 5.0.0-alpha.8 → 5.0.1

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.
Files changed (63) hide show
  1. package/README.md +1 -1
  2. package/cjs/use-counter/use-counter.js +2 -2
  3. package/cjs/use-counter/use-counter.js.map +1 -1
  4. package/cjs/use-debounced-value/use-debounced-value.js +1 -1
  5. package/cjs/use-debounced-value/use-debounced-value.js.map +1 -1
  6. package/cjs/use-did-update/use-did-update.js.map +1 -1
  7. package/cjs/use-focus-return/use-focus-return.js +2 -6
  8. package/cjs/use-focus-return/use-focus-return.js.map +1 -1
  9. package/cjs/use-focus-trap/tabbable.js +4 -0
  10. package/cjs/use-focus-trap/tabbable.js.map +1 -1
  11. package/cjs/use-hotkeys/use-hotkeys.js +1 -1
  12. package/cjs/use-hotkeys/use-hotkeys.js.map +1 -1
  13. package/cjs/use-interval/use-interval.js +5 -1
  14. package/cjs/use-interval/use-interval.js.map +1 -1
  15. package/cjs/use-list-state/use-list-state.js +5 -1
  16. package/cjs/use-list-state/use-list-state.js.map +1 -1
  17. package/cjs/use-mouse/use-mouse.js +9 -2
  18. package/cjs/use-mouse/use-mouse.js.map +1 -1
  19. package/cjs/use-toggle/use-toggle.js.map +1 -1
  20. package/cjs/use-uncontrolled/use-uncontrolled.js +6 -3
  21. package/cjs/use-uncontrolled/use-uncontrolled.js.map +1 -1
  22. package/cjs/use-validated-state/use-validated-state.js +2 -2
  23. package/cjs/use-validated-state/use-validated-state.js.map +1 -1
  24. package/esm/use-counter/use-counter.js +2 -2
  25. package/esm/use-counter/use-counter.js.map +1 -1
  26. package/esm/use-debounced-value/use-debounced-value.js +1 -1
  27. package/esm/use-debounced-value/use-debounced-value.js.map +1 -1
  28. package/esm/use-did-update/use-did-update.js.map +1 -1
  29. package/esm/use-focus-return/use-focus-return.js +2 -6
  30. package/esm/use-focus-return/use-focus-return.js.map +1 -1
  31. package/esm/use-focus-trap/tabbable.js +4 -0
  32. package/esm/use-focus-trap/tabbable.js.map +1 -1
  33. package/esm/use-hotkeys/use-hotkeys.js +1 -1
  34. package/esm/use-hotkeys/use-hotkeys.js.map +1 -1
  35. package/esm/use-interval/use-interval.js +6 -2
  36. package/esm/use-interval/use-interval.js.map +1 -1
  37. package/esm/use-list-state/use-list-state.js +5 -1
  38. package/esm/use-list-state/use-list-state.js.map +1 -1
  39. package/esm/use-mouse/use-mouse.js +9 -2
  40. package/esm/use-mouse/use-mouse.js.map +1 -1
  41. package/esm/use-toggle/use-toggle.js.map +1 -1
  42. package/esm/use-uncontrolled/use-uncontrolled.js +7 -4
  43. package/esm/use-uncontrolled/use-uncontrolled.js.map +1 -1
  44. package/esm/use-validated-state/use-validated-state.js +2 -2
  45. package/esm/use-validated-state/use-validated-state.js.map +1 -1
  46. package/lib/use-counter/use-counter.d.ts +2 -2
  47. package/lib/use-did-update/use-did-update.d.ts +2 -1
  48. package/lib/use-did-update/use-did-update.d.ts.map +1 -1
  49. package/lib/use-focus-return/use-focus-return.d.ts +1 -2
  50. package/lib/use-focus-return/use-focus-return.d.ts.map +1 -1
  51. package/lib/use-focus-trap/tabbable.d.ts.map +1 -1
  52. package/lib/use-hotkeys/use-hotkeys.d.ts.map +1 -1
  53. package/lib/use-interval/use-interval.d.ts.map +1 -1
  54. package/lib/use-list-state/use-list-state.d.ts +1 -0
  55. package/lib/use-list-state/use-list-state.d.ts.map +1 -1
  56. package/lib/use-mouse/use-mouse.d.ts +3 -1
  57. package/lib/use-mouse/use-mouse.d.ts.map +1 -1
  58. package/lib/use-toggle/use-toggle.d.ts +1 -1
  59. package/lib/use-toggle/use-toggle.d.ts.map +1 -1
  60. package/lib/use-uncontrolled/use-uncontrolled.d.ts.map +1 -1
  61. package/lib/use-validated-state/use-validated-state.d.ts +1 -1
  62. package/lib/use-validated-state/use-validated-state.d.ts.map +1 -1
  63. package/package.json +1 -1
package/README.md CHANGED
@@ -6,7 +6,7 @@ A set of react hooks for state and UI management
6
6
 
7
7
  ## Installation
8
8
 
9
- ```sh
9
+ ```bash
10
10
  # With yarn
11
11
  yarn add @mantine/hooks
12
12
 
@@ -28,8 +28,8 @@ const DEFAULT_OPTIONS = {
28
28
  function useCounter(initialValue = 0, options) {
29
29
  const { min, max } = __spreadValues(__spreadValues({}, DEFAULT_OPTIONS), options);
30
30
  const [count, setCount] = React.useState(clamp.clamp(initialValue, min, max));
31
- const increment = (delta = 1) => setCount((current) => clamp.clamp(current + delta, min, max));
32
- const decrement = (delta = 1) => setCount((current) => clamp.clamp(current - delta, min, max));
31
+ const increment = () => setCount((current) => clamp.clamp(current + 1, min, max));
32
+ const decrement = () => setCount((current) => clamp.clamp(current - 1, min, max));
33
33
  const set = (value) => setCount(clamp.clamp(value, min, max));
34
34
  const reset = () => setCount(clamp.clamp(initialValue, min, max));
35
35
  return [count, { increment, decrement, set, reset }];
@@ -1 +1 @@
1
- {"version":3,"file":"use-counter.js","sources":["../../src/use-counter/use-counter.ts"],"sourcesContent":["import { useState } from 'react';\nimport { clamp } from '../utils';\n\nconst DEFAULT_OPTIONS = {\n min: -Infinity,\n max: Infinity,\n};\n\nexport function useCounter(initialValue = 0, options?: Partial<{ min: number; max: number }>) {\n const { min, max } = { ...DEFAULT_OPTIONS, ...options };\n const [count, setCount] = useState<number>(clamp(initialValue, min, max));\n\n const increment = (delta = 1) => setCount((current) => clamp(current + delta, min, max));\n const decrement = (delta = 1) => setCount((current) => clamp(current - delta, min, max));\n const set = (value: number) => setCount(clamp(value, min, max));\n const reset = () => setCount(clamp(initialValue, min, max));\n\n return [count, { increment, decrement, set, reset }] as const;\n}\n"],"names":["useState","clamp"],"mappings":";;;;;;;AAAA,IAAI,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;AACtC,IAAI,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACvD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AACnD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC;AACzD,IAAI,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAChK,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AAC/B,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAChC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAClC,MAAM,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,EAAE,IAAI,mBAAmB;AACzB,IAAI,KAAK,IAAI,IAAI,IAAI,mBAAmB,CAAC,CAAC,CAAC,EAAE;AAC7C,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AACpC,QAAQ,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,EAAE,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAGF,MAAM,eAAe,GAAG;AACxB,EAAE,GAAG,EAAE,CAAC,QAAQ;AAChB,EAAE,GAAG,EAAE,QAAQ;AACf,CAAC,CAAC;AACK,SAAS,UAAU,CAAC,YAAY,GAAG,CAAC,EAAE,OAAO,EAAE;AACtD,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC,cAAc,CAAC,EAAE,EAAE,eAAe,CAAC,EAAE,OAAO,CAAC,CAAC;AACpF,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAGA,cAAQ,CAACC,WAAK,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AACpE,EAAE,MAAM,SAAS,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAKA,WAAK,CAAC,OAAO,GAAG,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC3F,EAAE,MAAM,SAAS,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAKA,WAAK,CAAC,OAAO,GAAG,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC3F,EAAE,MAAM,GAAG,GAAG,CAAC,KAAK,KAAK,QAAQ,CAACA,WAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1D,EAAE,MAAM,KAAK,GAAG,MAAM,QAAQ,CAACA,WAAK,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC9D,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;AACvD;;;;"}
1
+ {"version":3,"file":"use-counter.js","sources":["../../src/use-counter/use-counter.ts"],"sourcesContent":["import { useState } from 'react';\nimport { clamp } from '../utils';\n\nconst DEFAULT_OPTIONS = {\n min: -Infinity,\n max: Infinity,\n};\n\nexport function useCounter(initialValue = 0, options?: Partial<{ min: number; max: number }>) {\n const { min, max } = { ...DEFAULT_OPTIONS, ...options };\n const [count, setCount] = useState<number>(clamp(initialValue, min, max));\n\n const increment = () => setCount((current) => clamp(current + 1, min, max));\n const decrement = () => setCount((current) => clamp(current - 1, min, max));\n const set = (value: number) => setCount(clamp(value, min, max));\n const reset = () => setCount(clamp(initialValue, min, max));\n\n return [count, { increment, decrement, set, reset }] as const;\n}\n"],"names":["useState","clamp"],"mappings":";;;;;;;AAAA,IAAI,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;AACtC,IAAI,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACvD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AACnD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC;AACzD,IAAI,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAChK,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AAC/B,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAChC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAClC,MAAM,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,EAAE,IAAI,mBAAmB;AACzB,IAAI,KAAK,IAAI,IAAI,IAAI,mBAAmB,CAAC,CAAC,CAAC,EAAE;AAC7C,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AACpC,QAAQ,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,EAAE,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAGF,MAAM,eAAe,GAAG;AACxB,EAAE,GAAG,EAAE,CAAC,QAAQ;AAChB,EAAE,GAAG,EAAE,QAAQ;AACf,CAAC,CAAC;AACK,SAAS,UAAU,CAAC,YAAY,GAAG,CAAC,EAAE,OAAO,EAAE;AACtD,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC,cAAc,CAAC,EAAE,EAAE,eAAe,CAAC,EAAE,OAAO,CAAC,CAAC;AACpF,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAGA,cAAQ,CAACC,WAAK,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AACpE,EAAE,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,CAAC,OAAO,KAAKA,WAAK,CAAC,OAAO,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC9E,EAAE,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,CAAC,OAAO,KAAKA,WAAK,CAAC,OAAO,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC9E,EAAE,MAAM,GAAG,GAAG,CAAC,KAAK,KAAK,QAAQ,CAACA,WAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1D,EAAE,MAAM,KAAK,GAAG,MAAM,QAAQ,CAACA,WAAK,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC9D,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;AACvD;;;;"}
@@ -23,7 +23,7 @@ function useDebouncedValue(value, wait, options = { leading: false }) {
23
23
  }, wait);
24
24
  }
25
25
  }
26
- }, [value, options.leading]);
26
+ }, [value, options.leading, wait]);
27
27
  React.useEffect(() => {
28
28
  mountedRef.current = true;
29
29
  return cancel;
@@ -1 +1 @@
1
- {"version":3,"file":"use-debounced-value.js","sources":["../../src/use-debounced-value/use-debounced-value.ts"],"sourcesContent":["import { useEffect, useState, useRef } from 'react';\n\nexport function useDebouncedValue<T = any>(value: T, wait: number, options = { leading: false }) {\n const [_value, setValue] = useState(value);\n const mountedRef = useRef(false);\n const timeoutRef = useRef<number>(null);\n const cooldownRef = useRef(false);\n\n const cancel = () => window.clearTimeout(timeoutRef.current);\n\n useEffect(() => {\n if (mountedRef.current) {\n if (!cooldownRef.current && options.leading) {\n cooldownRef.current = true;\n setValue(value);\n } else {\n cancel();\n timeoutRef.current = window.setTimeout(() => {\n cooldownRef.current = false;\n setValue(value);\n }, wait);\n }\n }\n }, [value, options.leading]);\n\n useEffect(() => {\n mountedRef.current = true;\n return cancel;\n }, []);\n\n return [_value, cancel] as const;\n}\n"],"names":["useState","useRef","useEffect"],"mappings":";;;;;;AACO,SAAS,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;AAC7E,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAGA,cAAQ,CAAC,KAAK,CAAC,CAAC;AAC7C,EAAE,MAAM,UAAU,GAAGC,YAAM,CAAC,KAAK,CAAC,CAAC;AACnC,EAAE,MAAM,UAAU,GAAGA,YAAM,CAAC,IAAI,CAAC,CAAC;AAClC,EAAE,MAAM,WAAW,GAAGA,YAAM,CAAC,KAAK,CAAC,CAAC;AACpC,EAAE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC/D,EAAEC,eAAS,CAAC,MAAM;AAClB,IAAI,IAAI,UAAU,CAAC,OAAO,EAAE;AAC5B,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE;AACnD,QAAQ,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;AACnC,QAAQ,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxB,OAAO,MAAM;AACb,QAAQ,MAAM,EAAE,CAAC;AACjB,QAAQ,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM;AACrD,UAAU,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;AACtC,UAAU,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC1B,SAAS,EAAE,IAAI,CAAC,CAAC;AACjB,OAAO;AACP,KAAK;AACL,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/B,EAAEA,eAAS,CAAC,MAAM;AAClB,IAAI,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;AAC9B,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG,EAAE,EAAE,CAAC,CAAC;AACT,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC1B;;;;"}
1
+ {"version":3,"file":"use-debounced-value.js","sources":["../../src/use-debounced-value/use-debounced-value.ts"],"sourcesContent":["import { useEffect, useState, useRef } from 'react';\n\nexport function useDebouncedValue<T = any>(value: T, wait: number, options = { leading: false }) {\n const [_value, setValue] = useState(value);\n const mountedRef = useRef(false);\n const timeoutRef = useRef<number>(null);\n const cooldownRef = useRef(false);\n\n const cancel = () => window.clearTimeout(timeoutRef.current);\n\n useEffect(() => {\n if (mountedRef.current) {\n if (!cooldownRef.current && options.leading) {\n cooldownRef.current = true;\n setValue(value);\n } else {\n cancel();\n timeoutRef.current = window.setTimeout(() => {\n cooldownRef.current = false;\n setValue(value);\n }, wait);\n }\n }\n }, [value, options.leading, wait]);\n\n useEffect(() => {\n mountedRef.current = true;\n return cancel;\n }, []);\n\n return [_value, cancel] as const;\n}\n"],"names":["useState","useRef","useEffect"],"mappings":";;;;;;AACO,SAAS,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;AAC7E,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAGA,cAAQ,CAAC,KAAK,CAAC,CAAC;AAC7C,EAAE,MAAM,UAAU,GAAGC,YAAM,CAAC,KAAK,CAAC,CAAC;AACnC,EAAE,MAAM,UAAU,GAAGA,YAAM,CAAC,IAAI,CAAC,CAAC;AAClC,EAAE,MAAM,WAAW,GAAGA,YAAM,CAAC,KAAK,CAAC,CAAC;AACpC,EAAE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC/D,EAAEC,eAAS,CAAC,MAAM;AAClB,IAAI,IAAI,UAAU,CAAC,OAAO,EAAE;AAC5B,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE;AACnD,QAAQ,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;AACnC,QAAQ,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxB,OAAO,MAAM;AACb,QAAQ,MAAM,EAAE,CAAC;AACjB,QAAQ,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM;AACrD,UAAU,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;AACtC,UAAU,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC1B,SAAS,EAAE,IAAI,CAAC,CAAC;AACjB,OAAO;AACP,KAAK;AACL,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AACrC,EAAEA,eAAS,CAAC,MAAM;AAClB,IAAI,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;AAC9B,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG,EAAE,EAAE,CAAC,CAAC;AACT,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC1B;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-did-update.js","sources":["../../src/use-did-update/use-did-update.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nexport function useDidUpdate(fn: () => void, dependencies?: any[]) {\n const mounted = useRef(false);\n\n useEffect(() => {\n if (mounted.current) {\n fn();\n } else {\n mounted.current = true;\n }\n }, dependencies);\n}\n"],"names":["useRef","useEffect"],"mappings":";;;;;;AACO,SAAS,YAAY,CAAC,EAAE,EAAE,YAAY,EAAE;AAC/C,EAAE,MAAM,OAAO,GAAGA,YAAM,CAAC,KAAK,CAAC,CAAC;AAChC,EAAEC,eAAS,CAAC,MAAM;AAClB,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE;AACzB,MAAM,EAAE,EAAE,CAAC;AACX,KAAK,MAAM;AACX,MAAM,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;AAC7B,KAAK;AACL,GAAG,EAAE,YAAY,CAAC,CAAC;AACnB;;;;"}
1
+ {"version":3,"file":"use-did-update.js","sources":["../../src/use-did-update/use-did-update.ts"],"sourcesContent":["import { useEffect, useRef, EffectCallback } from 'react';\n\nexport function useDidUpdate(fn: EffectCallback, dependencies?: any[]) {\n const mounted = useRef(false);\n\n useEffect(() => {\n if (mounted.current) {\n fn();\n } else {\n mounted.current = true;\n }\n }, dependencies);\n}\n"],"names":["useRef","useEffect"],"mappings":";;;;;;AACO,SAAS,YAAY,CAAC,EAAE,EAAE,YAAY,EAAE;AAC/C,EAAE,MAAM,OAAO,GAAGA,YAAM,CAAC,KAAK,CAAC,CAAC;AAChC,EAAEC,eAAS,CAAC,MAAM;AAClB,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE;AACzB,MAAM,EAAE,EAAE,CAAC;AACX,KAAK,MAAM;AACX,MAAM,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;AAC7B,KAAK;AACL,GAAG,EAAE,YAAY,CAAC,CAAC;AACnB;;;;"}
@@ -5,11 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var React = require('react');
6
6
  var useDidUpdate = require('../use-did-update/use-did-update.js');
7
7
 
8
- function useFocusReturn({
9
- opened,
10
- transitionDuration,
11
- shouldReturnFocus = true
12
- }) {
8
+ function useFocusReturn({ opened, shouldReturnFocus = true }) {
13
9
  const lastActiveElement = React.useRef();
14
10
  const returnFocus = () => {
15
11
  var _a;
@@ -28,7 +24,7 @@ function useFocusReturn({
28
24
  if (opened) {
29
25
  lastActiveElement.current = document.activeElement;
30
26
  } else if (shouldReturnFocus) {
31
- timeout = window.setTimeout(returnFocus, transitionDuration + 10);
27
+ timeout = window.setTimeout(returnFocus, 10);
32
28
  }
33
29
  return () => {
34
30
  window.clearTimeout(timeout);
@@ -1 +1 @@
1
- {"version":3,"file":"use-focus-return.js","sources":["../../src/use-focus-return/use-focus-return.ts"],"sourcesContent":["import { useRef } from 'react';\nimport { useDidUpdate } from '../use-did-update/use-did-update';\n\ninterface UseFocusReturn {\n opened: boolean;\n transitionDuration: number;\n shouldReturnFocus?: boolean;\n}\n\n/** Returns focus to last active element, used in Modal and Drawer */\nexport function useFocusReturn({\n opened,\n transitionDuration,\n shouldReturnFocus = true,\n}: UseFocusReturn) {\n const lastActiveElement = useRef<HTMLElement>();\n const returnFocus = () => {\n if (\n lastActiveElement.current &&\n 'focus' in lastActiveElement.current &&\n typeof lastActiveElement.current.focus === 'function'\n ) {\n lastActiveElement.current?.focus();\n }\n };\n\n useDidUpdate(() => {\n let timeout = -1;\n\n const clearFocusTimeout = (event: KeyboardEvent) => {\n if (event.key === 'Tab') {\n window.clearTimeout(timeout);\n }\n };\n\n document.addEventListener('keydown', clearFocusTimeout);\n\n if (opened) {\n lastActiveElement.current = document.activeElement as HTMLElement;\n } else if (shouldReturnFocus) {\n timeout = window.setTimeout(returnFocus, transitionDuration + 10);\n }\n\n return () => {\n window.clearTimeout(timeout);\n document.removeEventListener('keydown', clearFocusTimeout);\n };\n }, [opened]);\n\n return returnFocus;\n}\n"],"names":["useRef","useDidUpdate"],"mappings":";;;;;;;AAEO,SAAS,cAAc,CAAC;AAC/B,EAAE,MAAM;AACR,EAAE,kBAAkB;AACpB,EAAE,iBAAiB,GAAG,IAAI;AAC1B,CAAC,EAAE;AACH,EAAE,MAAM,iBAAiB,GAAGA,YAAM,EAAE,CAAC;AACrC,EAAE,MAAM,WAAW,GAAG,MAAM;AAC5B,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,IAAI,iBAAiB,CAAC,OAAO,IAAI,OAAO,IAAI,iBAAiB,CAAC,OAAO,IAAI,OAAO,iBAAiB,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU,EAAE;AACpI,MAAM,CAAC,EAAE,GAAG,iBAAiB,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;AACrE,KAAK;AACL,GAAG,CAAC;AACJ,EAAEC,yBAAY,CAAC,MAAM;AACrB,IAAI,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;AACrB,IAAI,MAAM,iBAAiB,GAAG,CAAC,KAAK,KAAK;AACzC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;AAC/B,QAAQ,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACrC,OAAO;AACP,KAAK,CAAC;AACN,IAAI,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AAC5D,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,iBAAiB,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC;AACzD,KAAK,MAAM,IAAI,iBAAiB,EAAE;AAClC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,kBAAkB,GAAG,EAAE,CAAC,CAAC;AACxE,KAAK;AACL,IAAI,OAAO,MAAM;AACjB,MAAM,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACnC,MAAM,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AACjE,KAAK,CAAC;AACN,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACf,EAAE,OAAO,WAAW,CAAC;AACrB;;;;"}
1
+ {"version":3,"file":"use-focus-return.js","sources":["../../src/use-focus-return/use-focus-return.ts"],"sourcesContent":["import { useRef } from 'react';\nimport { useDidUpdate } from '../use-did-update/use-did-update';\n\ninterface UseFocusReturn {\n opened: boolean;\n shouldReturnFocus?: boolean;\n}\n\n/** Returns focus to last active element, used in Modal and Drawer */\nexport function useFocusReturn({ opened, shouldReturnFocus = true }: UseFocusReturn) {\n const lastActiveElement = useRef<HTMLElement>();\n const returnFocus = () => {\n if (\n lastActiveElement.current &&\n 'focus' in lastActiveElement.current &&\n typeof lastActiveElement.current.focus === 'function'\n ) {\n lastActiveElement.current?.focus();\n }\n };\n\n useDidUpdate(() => {\n let timeout = -1;\n\n const clearFocusTimeout = (event: KeyboardEvent) => {\n if (event.key === 'Tab') {\n window.clearTimeout(timeout);\n }\n };\n\n document.addEventListener('keydown', clearFocusTimeout);\n\n if (opened) {\n lastActiveElement.current = document.activeElement as HTMLElement;\n } else if (shouldReturnFocus) {\n timeout = window.setTimeout(returnFocus, 10);\n }\n\n return () => {\n window.clearTimeout(timeout);\n document.removeEventListener('keydown', clearFocusTimeout);\n };\n }, [opened]);\n\n return returnFocus;\n}\n"],"names":["useRef","useDidUpdate"],"mappings":";;;;;;;AAEO,SAAS,cAAc,CAAC,EAAE,MAAM,EAAE,iBAAiB,GAAG,IAAI,EAAE,EAAE;AACrE,EAAE,MAAM,iBAAiB,GAAGA,YAAM,EAAE,CAAC;AACrC,EAAE,MAAM,WAAW,GAAG,MAAM;AAC5B,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,IAAI,iBAAiB,CAAC,OAAO,IAAI,OAAO,IAAI,iBAAiB,CAAC,OAAO,IAAI,OAAO,iBAAiB,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU,EAAE;AACpI,MAAM,CAAC,EAAE,GAAG,iBAAiB,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;AACrE,KAAK;AACL,GAAG,CAAC;AACJ,EAAEC,yBAAY,CAAC,MAAM;AACrB,IAAI,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;AACrB,IAAI,MAAM,iBAAiB,GAAG,CAAC,KAAK,KAAK;AACzC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;AAC/B,QAAQ,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACrC,OAAO;AACP,KAAK,CAAC;AACN,IAAI,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AAC5D,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,iBAAiB,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC;AACzD,KAAK,MAAM,IAAI,iBAAiB,EAAE;AAClC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,OAAO,MAAM;AACjB,MAAM,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACnC,MAAM,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AACjE,KAAK,CAAC;AACN,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACf,EAAE,OAAO,WAAW,CAAC;AACrB;;;;"}
@@ -11,6 +11,10 @@ function hidden(element) {
11
11
  return element.style.display === "none";
12
12
  }
13
13
  function visible(element) {
14
+ const isHidden = element.getAttribute("aria-hidden") || element.getAttribute("hidden") || element.getAttribute("type") === "hidden";
15
+ if (isHidden) {
16
+ return false;
17
+ }
14
18
  let parentElement = element;
15
19
  while (parentElement) {
16
20
  if (parentElement === document.body) {
@@ -1 +1 @@
1
- {"version":3,"file":"tabbable.js","sources":["../../src/use-focus-trap/tabbable.ts"],"sourcesContent":["const TABBABLE_NODES = /input|select|textarea|button|object/;\nexport const FOCUS_SELECTOR = 'a, input, select, textarea, button, object, [tabindex]';\n\nfunction hidden(element: HTMLElement) {\n if (process.env.NODE_ENV === 'test') {\n return false;\n }\n\n return element.style.display === 'none';\n}\n\nfunction visible(element: HTMLElement) {\n let parentElement: HTMLElement = element;\n while (parentElement) {\n if (parentElement === document.body) {\n break;\n }\n\n if (hidden(parentElement)) {\n return false;\n }\n\n parentElement = parentElement.parentNode as HTMLElement;\n }\n\n return true;\n}\n\nfunction getElementTabIndex(element: HTMLElement) {\n let tabIndex = element.getAttribute('tabindex');\n if (tabIndex === null) {\n tabIndex = undefined;\n }\n return parseInt(tabIndex, 10);\n}\n\nexport function focusable(element: HTMLElement) {\n const nodeName = element.nodeName.toLowerCase();\n const isTabIndexNotNaN = !Number.isNaN(getElementTabIndex(element));\n const res =\n // @ts-ignore\n (TABBABLE_NODES.test(nodeName) && !element.disabled) ||\n (element instanceof HTMLAnchorElement ? element.href || isTabIndexNotNaN : isTabIndexNotNaN);\n\n return res && visible(element);\n}\n\nexport function tabbable(element: HTMLElement) {\n const tabIndex = getElementTabIndex(element);\n const isTabIndexNaN = Number.isNaN(tabIndex);\n return (isTabIndexNaN || tabIndex >= 0) && focusable(element);\n}\n\nexport function findTabbableDescendants(element: HTMLElement): HTMLElement[] {\n return Array.from(element.querySelectorAll<HTMLElement>(FOCUS_SELECTOR)).filter(tabbable);\n}\n"],"names":[],"mappings":";;;;AAAA,MAAM,cAAc,GAAG,qCAAqC,CAAC;AACjD,MAAC,cAAc,GAAG,yDAAyD;AACvF,SAAS,MAAM,CAAC,OAAO,EAAE;AACzB,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE;AACvC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC;AAC1C,CAAC;AACD,SAAS,OAAO,CAAC,OAAO,EAAE;AAC1B,EAAE,IAAI,aAAa,GAAG,OAAO,CAAC;AAC9B,EAAE,OAAO,aAAa,EAAE;AACxB,IAAI,IAAI,aAAa,KAAK,QAAQ,CAAC,IAAI,EAAE;AACzC,MAAM,MAAM;AACZ,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,EAAE;AAC/B,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,IAAI,aAAa,GAAG,aAAa,CAAC,UAAU,CAAC;AAC7C,GAAG;AACH,EAAE,OAAO,IAAI,CAAC;AACd,CAAC;AACD,SAAS,kBAAkB,CAAC,OAAO,EAAE;AACrC,EAAE,IAAI,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAClD,EAAE,IAAI,QAAQ,KAAK,IAAI,EAAE;AACzB,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC;AACtB,GAAG;AACH,EAAE,OAAO,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAChC,CAAC;AACM,SAAS,SAAS,CAAC,OAAO,EAAE;AACnC,EAAE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;AAClD,EAAE,MAAM,gBAAgB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;AACtE,EAAE,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,YAAY,iBAAiB,GAAG,OAAO,CAAC,IAAI,IAAI,gBAAgB,GAAG,gBAAgB,CAAC,CAAC;AACjK,EAAE,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AACM,SAAS,QAAQ,CAAC,OAAO,EAAE;AAClC,EAAE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC/C,EAAE,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC/C,EAAE,OAAO,CAAC,aAAa,IAAI,QAAQ,IAAI,CAAC,KAAK,SAAS,CAAC,OAAO,CAAC,CAAC;AAChE,CAAC;AACM,SAAS,uBAAuB,CAAC,OAAO,EAAE;AACjD,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC/E;;;;;;;"}
1
+ {"version":3,"file":"tabbable.js","sources":["../../src/use-focus-trap/tabbable.ts"],"sourcesContent":["const TABBABLE_NODES = /input|select|textarea|button|object/;\nexport const FOCUS_SELECTOR = 'a, input, select, textarea, button, object, [tabindex]';\n\nfunction hidden(element: HTMLElement) {\n if (process.env.NODE_ENV === 'test') {\n return false;\n }\n\n return element.style.display === 'none';\n}\n\nfunction visible(element: HTMLElement) {\n const isHidden =\n element.getAttribute('aria-hidden') ||\n element.getAttribute('hidden') ||\n element.getAttribute('type') === 'hidden';\n\n if (isHidden) {\n return false;\n }\n\n let parentElement: HTMLElement = element;\n while (parentElement) {\n if (parentElement === document.body) {\n break;\n }\n\n if (hidden(parentElement)) {\n return false;\n }\n\n parentElement = parentElement.parentNode as HTMLElement;\n }\n\n return true;\n}\n\nfunction getElementTabIndex(element: HTMLElement) {\n let tabIndex = element.getAttribute('tabindex');\n if (tabIndex === null) {\n tabIndex = undefined;\n }\n return parseInt(tabIndex, 10);\n}\n\nexport function focusable(element: HTMLElement) {\n const nodeName = element.nodeName.toLowerCase();\n const isTabIndexNotNaN = !Number.isNaN(getElementTabIndex(element));\n const res =\n // @ts-ignore\n (TABBABLE_NODES.test(nodeName) && !element.disabled) ||\n (element instanceof HTMLAnchorElement ? element.href || isTabIndexNotNaN : isTabIndexNotNaN);\n\n return res && visible(element);\n}\n\nexport function tabbable(element: HTMLElement) {\n const tabIndex = getElementTabIndex(element);\n const isTabIndexNaN = Number.isNaN(tabIndex);\n return (isTabIndexNaN || tabIndex >= 0) && focusable(element);\n}\n\nexport function findTabbableDescendants(element: HTMLElement): HTMLElement[] {\n return Array.from(element.querySelectorAll<HTMLElement>(FOCUS_SELECTOR)).filter(tabbable);\n}\n"],"names":[],"mappings":";;;;AAAA,MAAM,cAAc,GAAG,qCAAqC,CAAC;AACjD,MAAC,cAAc,GAAG,yDAAyD;AACvF,SAAS,MAAM,CAAC,OAAO,EAAE;AACzB,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE;AACvC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC;AAC1C,CAAC;AACD,SAAS,OAAO,CAAC,OAAO,EAAE;AAC1B,EAAE,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC;AACtI,EAAE,IAAI,QAAQ,EAAE;AAChB,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,IAAI,aAAa,GAAG,OAAO,CAAC;AAC9B,EAAE,OAAO,aAAa,EAAE;AACxB,IAAI,IAAI,aAAa,KAAK,QAAQ,CAAC,IAAI,EAAE;AACzC,MAAM,MAAM;AACZ,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,EAAE;AAC/B,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,IAAI,aAAa,GAAG,aAAa,CAAC,UAAU,CAAC;AAC7C,GAAG;AACH,EAAE,OAAO,IAAI,CAAC;AACd,CAAC;AACD,SAAS,kBAAkB,CAAC,OAAO,EAAE;AACrC,EAAE,IAAI,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAClD,EAAE,IAAI,QAAQ,KAAK,IAAI,EAAE;AACzB,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC;AACtB,GAAG;AACH,EAAE,OAAO,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAChC,CAAC;AACM,SAAS,SAAS,CAAC,OAAO,EAAE;AACnC,EAAE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;AAClD,EAAE,MAAM,gBAAgB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;AACtE,EAAE,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,YAAY,iBAAiB,GAAG,OAAO,CAAC,IAAI,IAAI,gBAAgB,GAAG,gBAAgB,CAAC,CAAC;AACjK,EAAE,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AACM,SAAS,QAAQ,CAAC,OAAO,EAAE;AAClC,EAAE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC/C,EAAE,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC/C,EAAE,OAAO,CAAC,aAAa,IAAI,QAAQ,IAAI,CAAC,KAAK,SAAS,CAAC,OAAO,CAAC,CAAC;AAChE,CAAC;AACM,SAAS,uBAAuB,CAAC,OAAO,EAAE;AACjD,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC/E;;;;;;;"}
@@ -7,7 +7,7 @@ var parseHotkey = require('./parse-hotkey.js');
7
7
 
8
8
  function shouldFireEvent(event) {
9
9
  if (event.target instanceof HTMLElement) {
10
- return !["INPUT", "TEXTAREA", "SELECT"].includes(event.target.tagName);
10
+ return !event.target.isContentEditable && !["INPUT", "TEXTAREA", "SELECT"].includes(event.target.tagName);
11
11
  }
12
12
  return true;
13
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"use-hotkeys.js","sources":["../../src/use-hotkeys/use-hotkeys.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { getHotkeyMatcher, getHotkeyHandler } from './parse-hotkey';\n\nexport { getHotkeyHandler };\n\nexport type HotkeyItem = [string, (event: KeyboardEvent) => void];\n\nfunction shouldFireEvent(event: KeyboardEvent) {\n if (event.target instanceof HTMLElement) {\n return !['INPUT', 'TEXTAREA', 'SELECT'].includes(event.target.tagName);\n }\n return true;\n}\n\nexport function useHotkeys(hotkeys: HotkeyItem[]) {\n useEffect(() => {\n const keydownListener = (event: KeyboardEvent) => {\n hotkeys.forEach(([hotkey, handler]) => {\n if (getHotkeyMatcher(hotkey)(event) && shouldFireEvent(event)) {\n event.preventDefault();\n handler(event);\n }\n });\n };\n\n document.documentElement.addEventListener('keydown', keydownListener);\n return () => document.documentElement.removeEventListener('keydown', keydownListener);\n }, [hotkeys]);\n}\n"],"names":["useEffect","getHotkeyMatcher"],"mappings":";;;;;;;AAGA,SAAS,eAAe,CAAC,KAAK,EAAE;AAChC,EAAE,IAAI,KAAK,CAAC,MAAM,YAAY,WAAW,EAAE;AAC3C,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC3E,GAAG;AACH,EAAE,OAAO,IAAI,CAAC;AACd,CAAC;AACM,SAAS,UAAU,CAAC,OAAO,EAAE;AACpC,EAAEA,eAAS,CAAC,MAAM;AAClB,IAAI,MAAM,eAAe,GAAG,CAAC,KAAK,KAAK;AACvC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK;AAC7C,QAAQ,IAAIC,4BAAgB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE;AACvE,UAAU,KAAK,CAAC,cAAc,EAAE,CAAC;AACjC,UAAU,OAAO,CAAC,KAAK,CAAC,CAAC;AACzB,SAAS;AACT,OAAO,CAAC,CAAC;AACT,KAAK,CAAC;AACN,IAAI,QAAQ,CAAC,eAAe,CAAC,gBAAgB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAC1E,IAAI,OAAO,MAAM,QAAQ,CAAC,eAAe,CAAC,mBAAmB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAC1F,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAChB;;;;;"}
1
+ {"version":3,"file":"use-hotkeys.js","sources":["../../src/use-hotkeys/use-hotkeys.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { getHotkeyMatcher, getHotkeyHandler } from './parse-hotkey';\n\nexport { getHotkeyHandler };\n\nexport type HotkeyItem = [string, (event: KeyboardEvent) => void];\n\nfunction shouldFireEvent(event: KeyboardEvent) {\n if (event.target instanceof HTMLElement) {\n return (\n !event.target.isContentEditable &&\n !['INPUT', 'TEXTAREA', 'SELECT'].includes(event.target.tagName)\n );\n }\n return true;\n}\n\nexport function useHotkeys(hotkeys: HotkeyItem[]) {\n useEffect(() => {\n const keydownListener = (event: KeyboardEvent) => {\n hotkeys.forEach(([hotkey, handler]) => {\n if (getHotkeyMatcher(hotkey)(event) && shouldFireEvent(event)) {\n event.preventDefault();\n handler(event);\n }\n });\n };\n\n document.documentElement.addEventListener('keydown', keydownListener);\n return () => document.documentElement.removeEventListener('keydown', keydownListener);\n }, [hotkeys]);\n}\n"],"names":["useEffect","getHotkeyMatcher"],"mappings":";;;;;;;AAGA,SAAS,eAAe,CAAC,KAAK,EAAE;AAChC,EAAE,IAAI,KAAK,CAAC,MAAM,YAAY,WAAW,EAAE;AAC3C,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC9G,GAAG;AACH,EAAE,OAAO,IAAI,CAAC;AACd,CAAC;AACM,SAAS,UAAU,CAAC,OAAO,EAAE;AACpC,EAAEA,eAAS,CAAC,MAAM;AAClB,IAAI,MAAM,eAAe,GAAG,CAAC,KAAK,KAAK;AACvC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK;AAC7C,QAAQ,IAAIC,4BAAgB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE;AACvE,UAAU,KAAK,CAAC,cAAc,EAAE,CAAC;AACjC,UAAU,OAAO,CAAC,KAAK,CAAC,CAAC;AACzB,SAAS;AACT,OAAO,CAAC,CAAC;AACT,KAAK,CAAC;AACN,IAAI,QAAQ,CAAC,eAAe,CAAC,gBAAgB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAC1E,IAAI,OAAO,MAAM,QAAQ,CAAC,eAAe,CAAC,mBAAmB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAC1F,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAChB;;;;;"}
@@ -7,10 +7,14 @@ var React = require('react');
7
7
  function useInterval(fn, interval) {
8
8
  const [active, setActive] = React.useState(false);
9
9
  const intervalRef = React.useRef();
10
+ const fnRef = React.useRef();
11
+ React.useEffect(() => {
12
+ fnRef.current = fn;
13
+ }, [fn]);
10
14
  const start = () => {
11
15
  setActive((old) => {
12
16
  if (!old) {
13
- intervalRef.current = window.setInterval(fn, interval);
17
+ intervalRef.current = window.setInterval(fnRef.current, interval);
14
18
  }
15
19
  return true;
16
20
  });
@@ -1 +1 @@
1
- {"version":3,"file":"use-interval.js","sources":["../../src/use-interval/use-interval.ts"],"sourcesContent":["import { useRef, useState } from 'react';\n\nexport function useInterval(fn: () => void, interval: number) {\n const [active, setActive] = useState(false);\n const intervalRef = useRef<number>();\n\n const start = () => {\n setActive((old) => {\n if (!old) {\n intervalRef.current = window.setInterval(fn, interval);\n }\n return true;\n });\n };\n\n const stop = () => {\n setActive(false);\n window.clearInterval(intervalRef.current);\n };\n\n const toggle = () => {\n if (active) {\n stop();\n } else {\n start();\n }\n };\n\n return { start, stop, toggle, active };\n}\n"],"names":["useState","useRef"],"mappings":";;;;;;AACO,SAAS,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE;AAC1C,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAGA,cAAQ,CAAC,KAAK,CAAC,CAAC;AAC9C,EAAE,MAAM,WAAW,GAAGC,YAAM,EAAE,CAAC;AAC/B,EAAE,MAAM,KAAK,GAAG,MAAM;AACtB,IAAI,SAAS,CAAC,CAAC,GAAG,KAAK;AACvB,MAAM,IAAI,CAAC,GAAG,EAAE;AAChB,QAAQ,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC/D,OAAO;AACP,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,CAAC,CAAC;AACP,GAAG,CAAC;AACJ,EAAE,MAAM,IAAI,GAAG,MAAM;AACrB,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;AACrB,IAAI,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9C,GAAG,CAAC;AACJ,EAAE,MAAM,MAAM,GAAG,MAAM;AACvB,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,IAAI,EAAE,CAAC;AACb,KAAK,MAAM;AACX,MAAM,KAAK,EAAE,CAAC;AACd,KAAK;AACL,GAAG,CAAC;AACJ,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACzC;;;;"}
1
+ {"version":3,"file":"use-interval.js","sources":["../../src/use-interval/use-interval.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nexport function useInterval(fn: () => void, interval: number) {\n const [active, setActive] = useState(false);\n const intervalRef = useRef<number>();\n const fnRef = useRef<() => void>();\n\n useEffect(() => {\n fnRef.current = fn;\n }, [fn]);\n\n const start = () => {\n setActive((old) => {\n if (!old) {\n intervalRef.current = window.setInterval(fnRef.current, interval);\n }\n return true;\n });\n };\n\n const stop = () => {\n setActive(false);\n window.clearInterval(intervalRef.current);\n };\n\n const toggle = () => {\n if (active) {\n stop();\n } else {\n start();\n }\n };\n\n return { start, stop, toggle, active };\n}\n"],"names":["useState","useRef","useEffect"],"mappings":";;;;;;AACO,SAAS,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE;AAC1C,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAGA,cAAQ,CAAC,KAAK,CAAC,CAAC;AAC9C,EAAE,MAAM,WAAW,GAAGC,YAAM,EAAE,CAAC;AAC/B,EAAE,MAAM,KAAK,GAAGA,YAAM,EAAE,CAAC;AACzB,EAAEC,eAAS,CAAC,MAAM;AAClB,IAAI,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AACvB,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACX,EAAE,MAAM,KAAK,GAAG,MAAM;AACtB,IAAI,SAAS,CAAC,CAAC,GAAG,KAAK;AACvB,MAAM,IAAI,CAAC,GAAG,EAAE;AAChB,QAAQ,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC1E,OAAO;AACP,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,CAAC,CAAC;AACP,GAAG,CAAC;AACJ,EAAE,MAAM,IAAI,GAAG,MAAM;AACrB,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;AACrB,IAAI,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9C,GAAG,CAAC;AACJ,EAAE,MAAM,MAAM,GAAG,MAAM;AACvB,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,IAAI,EAAE,CAAC;AACb,KAAK,MAAM;AACX,MAAM,KAAK,EAAE,CAAC;AACd,KAAK;AACL,GAAG,CAAC;AACJ,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACzC;;;;"}
@@ -58,6 +58,9 @@ function useListState(initialValue = []) {
58
58
  return cloned;
59
59
  });
60
60
  const applyWhere = (condition, fn) => setState((current) => current.map((item, index) => condition(item, index) ? fn(item, index) : item));
61
+ const filter = (fn) => {
62
+ setState((current) => current.filter(fn));
63
+ };
61
64
  return [
62
65
  state,
63
66
  {
@@ -72,7 +75,8 @@ function useListState(initialValue = []) {
72
75
  remove,
73
76
  reorder,
74
77
  setItem,
75
- setItemProp
78
+ setItemProp,
79
+ filter
76
80
  }
77
81
  ];
78
82
  }
@@ -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 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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"}
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 filter: (fn: (item: T, i: number) => boolean) => 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 const filter = (fn: (item: T, i: number) => boolean) => {\n setState((current) => current.filter(fn));\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 filter,\n },\n ];\n}\n"],"names":["useState"],"mappings":";;;;;;AAAA,IAAI,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;AACtC,IAAI,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACzC,IAAI,iBAAiB,GAAG,MAAM,CAAC,yBAAyB,CAAC;AACzD,IAAI,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACvD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AACnD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC;AACzD,IAAI,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAChK,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AAC/B,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAChC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAClC,MAAM,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,EAAE,IAAI,mBAAmB;AACzB,IAAI,KAAK,IAAI,IAAI,IAAI,mBAAmB,CAAC,CAAC,CAAC,EAAE;AAC7C,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AACpC,QAAQ,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,EAAE,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AACF,IAAI,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3D,SAAS,YAAY,CAAC,YAAY,GAAG,EAAE,EAAE;AAChD,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAGA,cAAQ,CAAC,YAAY,CAAC,CAAC;AACnD,EAAE,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;AAC7E,EAAE,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;AAC9E,EAAE,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7H,EAAE,MAAM,KAAK,GAAG,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7F,EAAE,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/G,EAAE,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,CAAC,OAAO,KAAK;AAC1C,IAAI,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;AAChC,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;AACjB,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,CAAC,OAAO,KAAK;AAC5C,IAAI,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;AAChC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;AACnB,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAK;AAC1D,IAAI,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;AAChC,IAAI,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3B,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAC/B,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAK;AACzD,IAAI,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;AAChC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AACzB,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAK;AACpE,IAAI,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;AAChC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC;AACxF,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,EAAE,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC7I,EAAE,MAAM,MAAM,GAAG,CAAC,EAAE,KAAK;AACzB,IAAI,QAAQ,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,GAAG,CAAC;AACJ,EAAE,OAAO;AACT,IAAI,KAAK;AACT,IAAI;AACJ,MAAM,QAAQ;AACd,MAAM,MAAM;AACZ,MAAM,OAAO;AACb,MAAM,MAAM;AACZ,MAAM,GAAG;AACT,MAAM,KAAK;AACX,MAAM,KAAK;AACX,MAAM,UAAU;AAChB,MAAM,MAAM;AACZ,MAAM,OAAO;AACb,MAAM,OAAO;AACb,MAAM,WAAW;AACjB,MAAM,MAAM;AACZ,KAAK;AACL,GAAG,CAAC;AACJ;;;;"}
@@ -20,7 +20,7 @@ var __spreadValues = (a, b) => {
20
20
  }
21
21
  return a;
22
22
  };
23
- function useMouse() {
23
+ function useMouse(options = { resetOnExit: false }) {
24
24
  const [position, setPosition] = React.useState({ x: 0, y: 0 });
25
25
  const ref = React.useRef();
26
26
  const setMousePosition = (event) => {
@@ -33,10 +33,17 @@ function useMouse() {
33
33
  setPosition({ x: event.clientX, y: event.clientY });
34
34
  }
35
35
  };
36
+ const resetMousePosition = () => setPosition({ x: 0, y: 0 });
36
37
  React.useEffect(() => {
37
38
  const element = (ref == null ? void 0 : ref.current) ? ref.current : document;
38
39
  element.addEventListener("mousemove", setMousePosition);
39
- return () => element.removeEventListener("mousemove", setMousePosition);
40
+ if (options.resetOnExit)
41
+ element.addEventListener("mouseleave", resetMousePosition);
42
+ return () => {
43
+ element.removeEventListener("mousemove", setMousePosition);
44
+ if (options.resetOnExit)
45
+ element.removeEventListener("mouseleave", resetMousePosition);
46
+ };
40
47
  }, [ref.current]);
41
48
  return __spreadValues({ ref }, position);
42
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"use-mouse.js","sources":["../../src/use-mouse/use-mouse.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport type { MouseEvent } from 'react';\n\nexport function useMouse<T extends HTMLElement = any>() {\n const [position, setPosition] = useState({ x: 0, y: 0 });\n\n const ref = useRef<T>();\n\n const setMousePosition = (event: MouseEvent<HTMLElement>) => {\n if (ref.current) {\n const rect = event.currentTarget.getBoundingClientRect();\n\n const x = Math.max(\n 0,\n Math.round(event.pageX - rect.left - (window.pageXOffset || window.scrollX))\n );\n\n const y = Math.max(\n 0,\n Math.round(event.pageY - rect.top - (window.pageYOffset || window.scrollY))\n );\n\n setPosition({ x, y });\n } else {\n setPosition({ x: event.clientX, y: event.clientY });\n }\n };\n\n useEffect(() => {\n const element = ref?.current ? ref.current : document;\n element.addEventListener('mousemove', setMousePosition as any);\n\n return () => element.removeEventListener('mousemove', setMousePosition as any);\n }, [ref.current]);\n\n return { ref, ...position };\n}\n"],"names":["useState","useRef","useEffect"],"mappings":"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"}
1
+ {"version":3,"file":"use-mouse.js","sources":["../../src/use-mouse/use-mouse.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport type { MouseEvent } from 'react';\n\nexport function useMouse<T extends HTMLElement = any>(\n options: { resetOnExit?: boolean } = { resetOnExit: false }\n) {\n const [position, setPosition] = useState({ x: 0, y: 0 });\n\n const ref = useRef<T>();\n\n const setMousePosition = (event: MouseEvent<HTMLElement>) => {\n if (ref.current) {\n const rect = event.currentTarget.getBoundingClientRect();\n\n const x = Math.max(\n 0,\n Math.round(event.pageX - rect.left - (window.pageXOffset || window.scrollX))\n );\n\n const y = Math.max(\n 0,\n Math.round(event.pageY - rect.top - (window.pageYOffset || window.scrollY))\n );\n\n setPosition({ x, y });\n } else {\n setPosition({ x: event.clientX, y: event.clientY });\n }\n };\n\n const resetMousePosition = () => setPosition({ x: 0, y: 0 });\n\n useEffect(() => {\n const element = ref?.current ? ref.current : document;\n element.addEventListener('mousemove', setMousePosition as any);\n if (options.resetOnExit) element.addEventListener('mouseleave', resetMousePosition as any);\n\n return () => {\n element.removeEventListener('mousemove', setMousePosition as any);\n if (options.resetOnExit) element.removeEventListener('mouseleave', resetMousePosition as any);\n };\n }, [ref.current]);\n\n return { ref, ...position };\n}\n"],"names":["useState","useRef","useEffect"],"mappings":"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"}
@@ -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>(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;;;;"}
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: readonly [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;;;;"}
@@ -11,12 +11,15 @@ function useUncontrolled({
11
11
  onChange = () => {
12
12
  }
13
13
  }) {
14
- const controlled = React.useRef(value !== void 0);
15
14
  const [uncontrolledValue, setUncontrolledValue] = React.useState(defaultValue !== void 0 ? defaultValue : finalValue);
16
- if (controlled.current) {
15
+ const handleUncontrolledChange = (val) => {
16
+ setUncontrolledValue(val);
17
+ onChange == null ? void 0 : onChange(val);
18
+ };
19
+ if (value !== void 0) {
17
20
  return [value, onChange, true];
18
21
  }
19
- return [uncontrolledValue, setUncontrolledValue, false];
22
+ return [uncontrolledValue, handleUncontrolledChange, false];
20
23
  }
21
24
 
22
25
  exports.useUncontrolled = useUncontrolled;
@@ -1 +1 @@
1
- {"version":3,"file":"use-uncontrolled.js","sources":["../../src/use-uncontrolled/use-uncontrolled.ts"],"sourcesContent":["import { useRef, useState } from 'react';\n\ninterface UseUncontrolledInput<T> {\n /** Value for controlled state */\n value?: T;\n\n /** Initial value for uncontrolled state */\n defaultValue?: T;\n\n /** Final value for uncontrolled state when value and defaultValue are not provided */\n finalValue?: T;\n\n /** Controlled state onChange handler */\n onChange?(value: T): void;\n}\n\nexport function useUncontrolled<T>({\n value,\n defaultValue,\n finalValue,\n onChange = () => {},\n}: UseUncontrolledInput<T>): [T, (value: T) => void, boolean] {\n const controlled = useRef(value !== undefined);\n const [uncontrolledValue, setUncontrolledValue] = useState(\n defaultValue !== undefined ? defaultValue : finalValue\n );\n\n if (controlled.current) {\n return [value as T, onChange, true];\n }\n\n return [uncontrolledValue as T, setUncontrolledValue, false];\n}\n"],"names":["useRef","useState"],"mappings":";;;;;;AACO,SAAS,eAAe,CAAC;AAChC,EAAE,KAAK;AACP,EAAE,YAAY;AACd,EAAE,UAAU;AACZ,EAAE,QAAQ,GAAG,MAAM;AACnB,GAAG;AACH,CAAC,EAAE;AACH,EAAE,MAAM,UAAU,GAAGA,YAAM,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC;AAC9C,EAAE,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAGC,cAAQ,CAAC,YAAY,KAAK,KAAK,CAAC,GAAG,YAAY,GAAG,UAAU,CAAC,CAAC;AAClH,EAAE,IAAI,UAAU,CAAC,OAAO,EAAE;AAC1B,IAAI,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AACnC,GAAG;AACH,EAAE,OAAO,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,KAAK,CAAC,CAAC;AAC1D;;;;"}
1
+ {"version":3,"file":"use-uncontrolled.js","sources":["../../src/use-uncontrolled/use-uncontrolled.ts"],"sourcesContent":["import { useState } from 'react';\n\ninterface UseUncontrolledInput<T> {\n /** Value for controlled state */\n value?: T;\n\n /** Initial value for uncontrolled state */\n defaultValue?: T;\n\n /** Final value for uncontrolled state when value and defaultValue are not provided */\n finalValue?: T;\n\n /** Controlled state onChange handler */\n onChange?(value: T): void;\n}\n\nexport function useUncontrolled<T>({\n value,\n defaultValue,\n finalValue,\n onChange = () => {},\n}: UseUncontrolledInput<T>): [T, (value: T) => void, boolean] {\n const [uncontrolledValue, setUncontrolledValue] = useState(\n defaultValue !== undefined ? defaultValue : finalValue\n );\n\n const handleUncontrolledChange = (val: T) => {\n setUncontrolledValue(val);\n onChange?.(val);\n };\n\n if (value !== undefined) {\n return [value as T, onChange, true];\n }\n\n return [uncontrolledValue as T, handleUncontrolledChange, false];\n}\n"],"names":["useState"],"mappings":";;;;;;AACO,SAAS,eAAe,CAAC;AAChC,EAAE,KAAK;AACP,EAAE,YAAY;AACd,EAAE,UAAU;AACZ,EAAE,QAAQ,GAAG,MAAM;AACnB,GAAG;AACH,CAAC,EAAE;AACH,EAAE,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAGA,cAAQ,CAAC,YAAY,KAAK,KAAK,CAAC,GAAG,YAAY,GAAG,UAAU,CAAC,CAAC;AAClH,EAAE,MAAM,wBAAwB,GAAG,CAAC,GAAG,KAAK;AAC5C,IAAI,oBAAoB,CAAC,GAAG,CAAC,CAAC;AAC9B,IAAI,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC9C,GAAG,CAAC;AACJ,EAAE,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE;AACxB,IAAI,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AACnC,GAAG;AACH,EAAE,OAAO,CAAC,iBAAiB,EAAE,wBAAwB,EAAE,KAAK,CAAC,CAAC;AAC9D;;;;"}
@@ -4,10 +4,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
6
 
7
- function useValidatedState(initialValue, validation) {
7
+ function useValidatedState(initialValue, validation, initialValidationState) {
8
8
  const [value, setValue] = React.useState(initialValue);
9
9
  const [lastValidValue, setLastValidValue] = React.useState(validation(initialValue) ? initialValue : void 0);
10
- const [valid, setValid] = React.useState(validation(initialValue));
10
+ const [valid, setValid] = React.useState(typeof initialValidationState === "boolean" ? initialValidationState : validation(initialValue));
11
11
  const onChange = (val) => {
12
12
  if (validation(val)) {
13
13
  setLastValidValue(val);
@@ -1 +1 @@
1
- {"version":3,"file":"use-validated-state.js","sources":["../../src/use-validated-state/use-validated-state.ts"],"sourcesContent":["import { useState } from 'react';\n\nexport function useValidatedState<T>(initialValue: T, validation: (value: T) => boolean) {\n const [value, setValue] = useState<T>(initialValue);\n const [lastValidValue, setLastValidValue] = useState<T>(\n validation(initialValue) ? initialValue : undefined\n );\n const [valid, setValid] = useState<boolean>(validation(initialValue));\n\n const onChange = (val: T) => {\n if (validation(val)) {\n setLastValidValue(val);\n setValid(true);\n } else {\n setValid(false);\n }\n\n setValue(val);\n };\n\n return [{ value, lastValidValue, valid }, onChange] as const;\n}\n"],"names":["useState"],"mappings":";;;;;;AACO,SAAS,iBAAiB,CAAC,YAAY,EAAE,UAAU,EAAE;AAC5D,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAGA,cAAQ,CAAC,YAAY,CAAC,CAAC;AACnD,EAAE,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAGA,cAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC;AACzG,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAGA,cAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;AAC/D,EAAE,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK;AAC5B,IAAI,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE;AACzB,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAC7B,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrB,KAAK,MAAM;AACX,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;AACtB,KAAK;AACL,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;AAClB,GAAG,CAAC;AACJ,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAC;AACtD;;;;"}
1
+ {"version":3,"file":"use-validated-state.js","sources":["../../src/use-validated-state/use-validated-state.ts"],"sourcesContent":["import { useState } from 'react';\n\nexport function useValidatedState<T>(\n initialValue: T,\n validation: (value: T) => boolean,\n initialValidationState?: boolean\n) {\n const [value, setValue] = useState<T>(initialValue);\n const [lastValidValue, setLastValidValue] = useState<T>(\n validation(initialValue) ? initialValue : undefined\n );\n const [valid, setValid] = useState<boolean>(\n typeof initialValidationState === 'boolean' ? initialValidationState : validation(initialValue)\n );\n\n const onChange = (val: T) => {\n if (validation(val)) {\n setLastValidValue(val);\n setValid(true);\n } else {\n setValid(false);\n }\n\n setValue(val);\n };\n\n return [{ value, lastValidValue, valid }, onChange] as const;\n}\n"],"names":["useState"],"mappings":";;;;;;AACO,SAAS,iBAAiB,CAAC,YAAY,EAAE,UAAU,EAAE,sBAAsB,EAAE;AACpF,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAGA,cAAQ,CAAC,YAAY,CAAC,CAAC;AACnD,EAAE,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAGA,cAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC;AACzG,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAGA,cAAQ,CAAC,OAAO,sBAAsB,KAAK,SAAS,GAAG,sBAAsB,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;AACtI,EAAE,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK;AAC5B,IAAI,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE;AACzB,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAC7B,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrB,KAAK,MAAM;AACX,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;AACtB,KAAK;AACL,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;AAClB,GAAG,CAAC;AACJ,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAC;AACtD;;;;"}
@@ -24,8 +24,8 @@ const DEFAULT_OPTIONS = {
24
24
  function useCounter(initialValue = 0, options) {
25
25
  const { min, max } = __spreadValues(__spreadValues({}, DEFAULT_OPTIONS), options);
26
26
  const [count, setCount] = useState(clamp(initialValue, min, max));
27
- const increment = (delta = 1) => setCount((current) => clamp(current + delta, min, max));
28
- const decrement = (delta = 1) => setCount((current) => clamp(current - delta, min, max));
27
+ const increment = () => setCount((current) => clamp(current + 1, min, max));
28
+ const decrement = () => setCount((current) => clamp(current - 1, min, max));
29
29
  const set = (value) => setCount(clamp(value, min, max));
30
30
  const reset = () => setCount(clamp(initialValue, min, max));
31
31
  return [count, { increment, decrement, set, reset }];
@@ -1 +1 @@
1
- {"version":3,"file":"use-counter.js","sources":["../../src/use-counter/use-counter.ts"],"sourcesContent":["import { useState } from 'react';\nimport { clamp } from '../utils';\n\nconst DEFAULT_OPTIONS = {\n min: -Infinity,\n max: Infinity,\n};\n\nexport function useCounter(initialValue = 0, options?: Partial<{ min: number; max: number }>) {\n const { min, max } = { ...DEFAULT_OPTIONS, ...options };\n const [count, setCount] = useState<number>(clamp(initialValue, min, max));\n\n const increment = (delta = 1) => setCount((current) => clamp(current + delta, min, max));\n const decrement = (delta = 1) => setCount((current) => clamp(current - delta, min, max));\n const set = (value: number) => setCount(clamp(value, min, max));\n const reset = () => setCount(clamp(initialValue, min, max));\n\n return [count, { increment, decrement, set, reset }] as const;\n}\n"],"names":[],"mappings":";;;AAAA,IAAI,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;AACtC,IAAI,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACvD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AACnD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC;AACzD,IAAI,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAChK,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AAC/B,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAChC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAClC,MAAM,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,EAAE,IAAI,mBAAmB;AACzB,IAAI,KAAK,IAAI,IAAI,IAAI,mBAAmB,CAAC,CAAC,CAAC,EAAE;AAC7C,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AACpC,QAAQ,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,EAAE,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAGF,MAAM,eAAe,GAAG;AACxB,EAAE,GAAG,EAAE,CAAC,QAAQ;AAChB,EAAE,GAAG,EAAE,QAAQ;AACf,CAAC,CAAC;AACK,SAAS,UAAU,CAAC,YAAY,GAAG,CAAC,EAAE,OAAO,EAAE;AACtD,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC,cAAc,CAAC,EAAE,EAAE,eAAe,CAAC,EAAE,OAAO,CAAC,CAAC;AACpF,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AACpE,EAAE,MAAM,SAAS,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,GAAG,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC3F,EAAE,MAAM,SAAS,GAAG,CAAC,KAAK,GAAG,CAAC,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,GAAG,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC3F,EAAE,MAAM,GAAG,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1D,EAAE,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC9D,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;AACvD;;;;"}
1
+ {"version":3,"file":"use-counter.js","sources":["../../src/use-counter/use-counter.ts"],"sourcesContent":["import { useState } from 'react';\nimport { clamp } from '../utils';\n\nconst DEFAULT_OPTIONS = {\n min: -Infinity,\n max: Infinity,\n};\n\nexport function useCounter(initialValue = 0, options?: Partial<{ min: number; max: number }>) {\n const { min, max } = { ...DEFAULT_OPTIONS, ...options };\n const [count, setCount] = useState<number>(clamp(initialValue, min, max));\n\n const increment = () => setCount((current) => clamp(current + 1, min, max));\n const decrement = () => setCount((current) => clamp(current - 1, min, max));\n const set = (value: number) => setCount(clamp(value, min, max));\n const reset = () => setCount(clamp(initialValue, min, max));\n\n return [count, { increment, decrement, set, reset }] as const;\n}\n"],"names":[],"mappings":";;;AAAA,IAAI,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;AACtC,IAAI,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACvD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AACnD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC;AACzD,IAAI,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAChK,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AAC/B,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAChC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAClC,MAAM,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,EAAE,IAAI,mBAAmB;AACzB,IAAI,KAAK,IAAI,IAAI,IAAI,mBAAmB,CAAC,CAAC,CAAC,EAAE;AAC7C,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AACpC,QAAQ,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,EAAE,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAGF,MAAM,eAAe,GAAG;AACxB,EAAE,GAAG,EAAE,CAAC,QAAQ;AAChB,EAAE,GAAG,EAAE,QAAQ;AACf,CAAC,CAAC;AACK,SAAS,UAAU,CAAC,YAAY,GAAG,CAAC,EAAE,OAAO,EAAE;AACtD,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,cAAc,CAAC,cAAc,CAAC,EAAE,EAAE,eAAe,CAAC,EAAE,OAAO,CAAC,CAAC;AACpF,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AACpE,EAAE,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC9E,EAAE,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC9E,EAAE,MAAM,GAAG,GAAG,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC1D,EAAE,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;AAC9D,EAAE,OAAO,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;AACvD;;;;"}
@@ -19,7 +19,7 @@ function useDebouncedValue(value, wait, options = { leading: false }) {
19
19
  }, wait);
20
20
  }
21
21
  }
22
- }, [value, options.leading]);
22
+ }, [value, options.leading, wait]);
23
23
  useEffect(() => {
24
24
  mountedRef.current = true;
25
25
  return cancel;
@@ -1 +1 @@
1
- {"version":3,"file":"use-debounced-value.js","sources":["../../src/use-debounced-value/use-debounced-value.ts"],"sourcesContent":["import { useEffect, useState, useRef } from 'react';\n\nexport function useDebouncedValue<T = any>(value: T, wait: number, options = { leading: false }) {\n const [_value, setValue] = useState(value);\n const mountedRef = useRef(false);\n const timeoutRef = useRef<number>(null);\n const cooldownRef = useRef(false);\n\n const cancel = () => window.clearTimeout(timeoutRef.current);\n\n useEffect(() => {\n if (mountedRef.current) {\n if (!cooldownRef.current && options.leading) {\n cooldownRef.current = true;\n setValue(value);\n } else {\n cancel();\n timeoutRef.current = window.setTimeout(() => {\n cooldownRef.current = false;\n setValue(value);\n }, wait);\n }\n }\n }, [value, options.leading]);\n\n useEffect(() => {\n mountedRef.current = true;\n return cancel;\n }, []);\n\n return [_value, cancel] as const;\n}\n"],"names":[],"mappings":";;AACO,SAAS,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;AAC7E,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7C,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACnC,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAClC,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACpC,EAAE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC/D,EAAE,SAAS,CAAC,MAAM;AAClB,IAAI,IAAI,UAAU,CAAC,OAAO,EAAE;AAC5B,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE;AACnD,QAAQ,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;AACnC,QAAQ,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxB,OAAO,MAAM;AACb,QAAQ,MAAM,EAAE,CAAC;AACjB,QAAQ,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM;AACrD,UAAU,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;AACtC,UAAU,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC1B,SAAS,EAAE,IAAI,CAAC,CAAC;AACjB,OAAO;AACP,KAAK;AACL,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;AAC/B,EAAE,SAAS,CAAC,MAAM;AAClB,IAAI,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;AAC9B,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG,EAAE,EAAE,CAAC,CAAC;AACT,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC1B;;;;"}
1
+ {"version":3,"file":"use-debounced-value.js","sources":["../../src/use-debounced-value/use-debounced-value.ts"],"sourcesContent":["import { useEffect, useState, useRef } from 'react';\n\nexport function useDebouncedValue<T = any>(value: T, wait: number, options = { leading: false }) {\n const [_value, setValue] = useState(value);\n const mountedRef = useRef(false);\n const timeoutRef = useRef<number>(null);\n const cooldownRef = useRef(false);\n\n const cancel = () => window.clearTimeout(timeoutRef.current);\n\n useEffect(() => {\n if (mountedRef.current) {\n if (!cooldownRef.current && options.leading) {\n cooldownRef.current = true;\n setValue(value);\n } else {\n cancel();\n timeoutRef.current = window.setTimeout(() => {\n cooldownRef.current = false;\n setValue(value);\n }, wait);\n }\n }\n }, [value, options.leading, wait]);\n\n useEffect(() => {\n mountedRef.current = true;\n return cancel;\n }, []);\n\n return [_value, cancel] as const;\n}\n"],"names":[],"mappings":";;AACO,SAAS,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;AAC7E,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC7C,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACnC,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAClC,EAAE,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AACpC,EAAE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC/D,EAAE,SAAS,CAAC,MAAM;AAClB,IAAI,IAAI,UAAU,CAAC,OAAO,EAAE;AAC5B,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,OAAO,CAAC,OAAO,EAAE;AACnD,QAAQ,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;AACnC,QAAQ,QAAQ,CAAC,KAAK,CAAC,CAAC;AACxB,OAAO,MAAM;AACb,QAAQ,MAAM,EAAE,CAAC;AACjB,QAAQ,UAAU,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM;AACrD,UAAU,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC;AACtC,UAAU,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC1B,SAAS,EAAE,IAAI,CAAC,CAAC;AACjB,OAAO;AACP,KAAK;AACL,GAAG,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;AACrC,EAAE,SAAS,CAAC,MAAM;AAClB,IAAI,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;AAC9B,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG,EAAE,EAAE,CAAC,CAAC;AACT,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAC1B;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-did-update.js","sources":["../../src/use-did-update/use-did-update.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\n\nexport function useDidUpdate(fn: () => void, dependencies?: any[]) {\n const mounted = useRef(false);\n\n useEffect(() => {\n if (mounted.current) {\n fn();\n } else {\n mounted.current = true;\n }\n }, dependencies);\n}\n"],"names":[],"mappings":";;AACO,SAAS,YAAY,CAAC,EAAE,EAAE,YAAY,EAAE;AAC/C,EAAE,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAChC,EAAE,SAAS,CAAC,MAAM;AAClB,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE;AACzB,MAAM,EAAE,EAAE,CAAC;AACX,KAAK,MAAM;AACX,MAAM,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;AAC7B,KAAK;AACL,GAAG,EAAE,YAAY,CAAC,CAAC;AACnB;;;;"}
1
+ {"version":3,"file":"use-did-update.js","sources":["../../src/use-did-update/use-did-update.ts"],"sourcesContent":["import { useEffect, useRef, EffectCallback } from 'react';\n\nexport function useDidUpdate(fn: EffectCallback, dependencies?: any[]) {\n const mounted = useRef(false);\n\n useEffect(() => {\n if (mounted.current) {\n fn();\n } else {\n mounted.current = true;\n }\n }, dependencies);\n}\n"],"names":[],"mappings":";;AACO,SAAS,YAAY,CAAC,EAAE,EAAE,YAAY,EAAE;AAC/C,EAAE,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAChC,EAAE,SAAS,CAAC,MAAM;AAClB,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE;AACzB,MAAM,EAAE,EAAE,CAAC;AACX,KAAK,MAAM;AACX,MAAM,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;AAC7B,KAAK;AACL,GAAG,EAAE,YAAY,CAAC,CAAC;AACnB;;;;"}
@@ -1,11 +1,7 @@
1
1
  import { useRef } from 'react';
2
2
  import { useDidUpdate } from '../use-did-update/use-did-update.js';
3
3
 
4
- function useFocusReturn({
5
- opened,
6
- transitionDuration,
7
- shouldReturnFocus = true
8
- }) {
4
+ function useFocusReturn({ opened, shouldReturnFocus = true }) {
9
5
  const lastActiveElement = useRef();
10
6
  const returnFocus = () => {
11
7
  var _a;
@@ -24,7 +20,7 @@ function useFocusReturn({
24
20
  if (opened) {
25
21
  lastActiveElement.current = document.activeElement;
26
22
  } else if (shouldReturnFocus) {
27
- timeout = window.setTimeout(returnFocus, transitionDuration + 10);
23
+ timeout = window.setTimeout(returnFocus, 10);
28
24
  }
29
25
  return () => {
30
26
  window.clearTimeout(timeout);
@@ -1 +1 @@
1
- {"version":3,"file":"use-focus-return.js","sources":["../../src/use-focus-return/use-focus-return.ts"],"sourcesContent":["import { useRef } from 'react';\nimport { useDidUpdate } from '../use-did-update/use-did-update';\n\ninterface UseFocusReturn {\n opened: boolean;\n transitionDuration: number;\n shouldReturnFocus?: boolean;\n}\n\n/** Returns focus to last active element, used in Modal and Drawer */\nexport function useFocusReturn({\n opened,\n transitionDuration,\n shouldReturnFocus = true,\n}: UseFocusReturn) {\n const lastActiveElement = useRef<HTMLElement>();\n const returnFocus = () => {\n if (\n lastActiveElement.current &&\n 'focus' in lastActiveElement.current &&\n typeof lastActiveElement.current.focus === 'function'\n ) {\n lastActiveElement.current?.focus();\n }\n };\n\n useDidUpdate(() => {\n let timeout = -1;\n\n const clearFocusTimeout = (event: KeyboardEvent) => {\n if (event.key === 'Tab') {\n window.clearTimeout(timeout);\n }\n };\n\n document.addEventListener('keydown', clearFocusTimeout);\n\n if (opened) {\n lastActiveElement.current = document.activeElement as HTMLElement;\n } else if (shouldReturnFocus) {\n timeout = window.setTimeout(returnFocus, transitionDuration + 10);\n }\n\n return () => {\n window.clearTimeout(timeout);\n document.removeEventListener('keydown', clearFocusTimeout);\n };\n }, [opened]);\n\n return returnFocus;\n}\n"],"names":[],"mappings":";;;AAEO,SAAS,cAAc,CAAC;AAC/B,EAAE,MAAM;AACR,EAAE,kBAAkB;AACpB,EAAE,iBAAiB,GAAG,IAAI;AAC1B,CAAC,EAAE;AACH,EAAE,MAAM,iBAAiB,GAAG,MAAM,EAAE,CAAC;AACrC,EAAE,MAAM,WAAW,GAAG,MAAM;AAC5B,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,IAAI,iBAAiB,CAAC,OAAO,IAAI,OAAO,IAAI,iBAAiB,CAAC,OAAO,IAAI,OAAO,iBAAiB,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU,EAAE;AACpI,MAAM,CAAC,EAAE,GAAG,iBAAiB,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;AACrE,KAAK;AACL,GAAG,CAAC;AACJ,EAAE,YAAY,CAAC,MAAM;AACrB,IAAI,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;AACrB,IAAI,MAAM,iBAAiB,GAAG,CAAC,KAAK,KAAK;AACzC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;AAC/B,QAAQ,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACrC,OAAO;AACP,KAAK,CAAC;AACN,IAAI,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AAC5D,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,iBAAiB,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC;AACzD,KAAK,MAAM,IAAI,iBAAiB,EAAE;AAClC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,kBAAkB,GAAG,EAAE,CAAC,CAAC;AACxE,KAAK;AACL,IAAI,OAAO,MAAM;AACjB,MAAM,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACnC,MAAM,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AACjE,KAAK,CAAC;AACN,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACf,EAAE,OAAO,WAAW,CAAC;AACrB;;;;"}
1
+ {"version":3,"file":"use-focus-return.js","sources":["../../src/use-focus-return/use-focus-return.ts"],"sourcesContent":["import { useRef } from 'react';\nimport { useDidUpdate } from '../use-did-update/use-did-update';\n\ninterface UseFocusReturn {\n opened: boolean;\n shouldReturnFocus?: boolean;\n}\n\n/** Returns focus to last active element, used in Modal and Drawer */\nexport function useFocusReturn({ opened, shouldReturnFocus = true }: UseFocusReturn) {\n const lastActiveElement = useRef<HTMLElement>();\n const returnFocus = () => {\n if (\n lastActiveElement.current &&\n 'focus' in lastActiveElement.current &&\n typeof lastActiveElement.current.focus === 'function'\n ) {\n lastActiveElement.current?.focus();\n }\n };\n\n useDidUpdate(() => {\n let timeout = -1;\n\n const clearFocusTimeout = (event: KeyboardEvent) => {\n if (event.key === 'Tab') {\n window.clearTimeout(timeout);\n }\n };\n\n document.addEventListener('keydown', clearFocusTimeout);\n\n if (opened) {\n lastActiveElement.current = document.activeElement as HTMLElement;\n } else if (shouldReturnFocus) {\n timeout = window.setTimeout(returnFocus, 10);\n }\n\n return () => {\n window.clearTimeout(timeout);\n document.removeEventListener('keydown', clearFocusTimeout);\n };\n }, [opened]);\n\n return returnFocus;\n}\n"],"names":[],"mappings":";;;AAEO,SAAS,cAAc,CAAC,EAAE,MAAM,EAAE,iBAAiB,GAAG,IAAI,EAAE,EAAE;AACrE,EAAE,MAAM,iBAAiB,GAAG,MAAM,EAAE,CAAC;AACrC,EAAE,MAAM,WAAW,GAAG,MAAM;AAC5B,IAAI,IAAI,EAAE,CAAC;AACX,IAAI,IAAI,iBAAiB,CAAC,OAAO,IAAI,OAAO,IAAI,iBAAiB,CAAC,OAAO,IAAI,OAAO,iBAAiB,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU,EAAE;AACpI,MAAM,CAAC,EAAE,GAAG,iBAAiB,CAAC,OAAO,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC;AACrE,KAAK;AACL,GAAG,CAAC;AACJ,EAAE,YAAY,CAAC,MAAM;AACrB,IAAI,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;AACrB,IAAI,MAAM,iBAAiB,GAAG,CAAC,KAAK,KAAK;AACzC,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE;AAC/B,QAAQ,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACrC,OAAO;AACP,KAAK,CAAC;AACN,IAAI,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AAC5D,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,iBAAiB,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC;AACzD,KAAK,MAAM,IAAI,iBAAiB,EAAE;AAClC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACnD,KAAK;AACL,IAAI,OAAO,MAAM;AACjB,MAAM,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;AACnC,MAAM,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;AACjE,KAAK,CAAC;AACN,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACf,EAAE,OAAO,WAAW,CAAC;AACrB;;;;"}
@@ -7,6 +7,10 @@ function hidden(element) {
7
7
  return element.style.display === "none";
8
8
  }
9
9
  function visible(element) {
10
+ const isHidden = element.getAttribute("aria-hidden") || element.getAttribute("hidden") || element.getAttribute("type") === "hidden";
11
+ if (isHidden) {
12
+ return false;
13
+ }
10
14
  let parentElement = element;
11
15
  while (parentElement) {
12
16
  if (parentElement === document.body) {
@@ -1 +1 @@
1
- {"version":3,"file":"tabbable.js","sources":["../../src/use-focus-trap/tabbable.ts"],"sourcesContent":["const TABBABLE_NODES = /input|select|textarea|button|object/;\nexport const FOCUS_SELECTOR = 'a, input, select, textarea, button, object, [tabindex]';\n\nfunction hidden(element: HTMLElement) {\n if (process.env.NODE_ENV === 'test') {\n return false;\n }\n\n return element.style.display === 'none';\n}\n\nfunction visible(element: HTMLElement) {\n let parentElement: HTMLElement = element;\n while (parentElement) {\n if (parentElement === document.body) {\n break;\n }\n\n if (hidden(parentElement)) {\n return false;\n }\n\n parentElement = parentElement.parentNode as HTMLElement;\n }\n\n return true;\n}\n\nfunction getElementTabIndex(element: HTMLElement) {\n let tabIndex = element.getAttribute('tabindex');\n if (tabIndex === null) {\n tabIndex = undefined;\n }\n return parseInt(tabIndex, 10);\n}\n\nexport function focusable(element: HTMLElement) {\n const nodeName = element.nodeName.toLowerCase();\n const isTabIndexNotNaN = !Number.isNaN(getElementTabIndex(element));\n const res =\n // @ts-ignore\n (TABBABLE_NODES.test(nodeName) && !element.disabled) ||\n (element instanceof HTMLAnchorElement ? element.href || isTabIndexNotNaN : isTabIndexNotNaN);\n\n return res && visible(element);\n}\n\nexport function tabbable(element: HTMLElement) {\n const tabIndex = getElementTabIndex(element);\n const isTabIndexNaN = Number.isNaN(tabIndex);\n return (isTabIndexNaN || tabIndex >= 0) && focusable(element);\n}\n\nexport function findTabbableDescendants(element: HTMLElement): HTMLElement[] {\n return Array.from(element.querySelectorAll<HTMLElement>(FOCUS_SELECTOR)).filter(tabbable);\n}\n"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,qCAAqC,CAAC;AACjD,MAAC,cAAc,GAAG,yDAAyD;AACvF,SAAS,MAAM,CAAC,OAAO,EAAE;AACzB,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE;AACvC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC;AAC1C,CAAC;AACD,SAAS,OAAO,CAAC,OAAO,EAAE;AAC1B,EAAE,IAAI,aAAa,GAAG,OAAO,CAAC;AAC9B,EAAE,OAAO,aAAa,EAAE;AACxB,IAAI,IAAI,aAAa,KAAK,QAAQ,CAAC,IAAI,EAAE;AACzC,MAAM,MAAM;AACZ,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,EAAE;AAC/B,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,IAAI,aAAa,GAAG,aAAa,CAAC,UAAU,CAAC;AAC7C,GAAG;AACH,EAAE,OAAO,IAAI,CAAC;AACd,CAAC;AACD,SAAS,kBAAkB,CAAC,OAAO,EAAE;AACrC,EAAE,IAAI,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAClD,EAAE,IAAI,QAAQ,KAAK,IAAI,EAAE;AACzB,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC;AACtB,GAAG;AACH,EAAE,OAAO,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAChC,CAAC;AACM,SAAS,SAAS,CAAC,OAAO,EAAE;AACnC,EAAE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;AAClD,EAAE,MAAM,gBAAgB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;AACtE,EAAE,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,YAAY,iBAAiB,GAAG,OAAO,CAAC,IAAI,IAAI,gBAAgB,GAAG,gBAAgB,CAAC,CAAC;AACjK,EAAE,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AACM,SAAS,QAAQ,CAAC,OAAO,EAAE;AAClC,EAAE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC/C,EAAE,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC/C,EAAE,OAAO,CAAC,aAAa,IAAI,QAAQ,IAAI,CAAC,KAAK,SAAS,CAAC,OAAO,CAAC,CAAC;AAChE,CAAC;AACM,SAAS,uBAAuB,CAAC,OAAO,EAAE;AACjD,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC/E;;;;"}
1
+ {"version":3,"file":"tabbable.js","sources":["../../src/use-focus-trap/tabbable.ts"],"sourcesContent":["const TABBABLE_NODES = /input|select|textarea|button|object/;\nexport const FOCUS_SELECTOR = 'a, input, select, textarea, button, object, [tabindex]';\n\nfunction hidden(element: HTMLElement) {\n if (process.env.NODE_ENV === 'test') {\n return false;\n }\n\n return element.style.display === 'none';\n}\n\nfunction visible(element: HTMLElement) {\n const isHidden =\n element.getAttribute('aria-hidden') ||\n element.getAttribute('hidden') ||\n element.getAttribute('type') === 'hidden';\n\n if (isHidden) {\n return false;\n }\n\n let parentElement: HTMLElement = element;\n while (parentElement) {\n if (parentElement === document.body) {\n break;\n }\n\n if (hidden(parentElement)) {\n return false;\n }\n\n parentElement = parentElement.parentNode as HTMLElement;\n }\n\n return true;\n}\n\nfunction getElementTabIndex(element: HTMLElement) {\n let tabIndex = element.getAttribute('tabindex');\n if (tabIndex === null) {\n tabIndex = undefined;\n }\n return parseInt(tabIndex, 10);\n}\n\nexport function focusable(element: HTMLElement) {\n const nodeName = element.nodeName.toLowerCase();\n const isTabIndexNotNaN = !Number.isNaN(getElementTabIndex(element));\n const res =\n // @ts-ignore\n (TABBABLE_NODES.test(nodeName) && !element.disabled) ||\n (element instanceof HTMLAnchorElement ? element.href || isTabIndexNotNaN : isTabIndexNotNaN);\n\n return res && visible(element);\n}\n\nexport function tabbable(element: HTMLElement) {\n const tabIndex = getElementTabIndex(element);\n const isTabIndexNaN = Number.isNaN(tabIndex);\n return (isTabIndexNaN || tabIndex >= 0) && focusable(element);\n}\n\nexport function findTabbableDescendants(element: HTMLElement): HTMLElement[] {\n return Array.from(element.querySelectorAll<HTMLElement>(FOCUS_SELECTOR)).filter(tabbable);\n}\n"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG,qCAAqC,CAAC;AACjD,MAAC,cAAc,GAAG,yDAAyD;AACvF,SAAS,MAAM,CAAC,OAAO,EAAE;AACzB,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE;AACvC,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,KAAK,MAAM,CAAC;AAC1C,CAAC;AACD,SAAS,OAAO,CAAC,OAAO,EAAE;AAC1B,EAAE,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC;AACtI,EAAE,IAAI,QAAQ,EAAE;AAChB,IAAI,OAAO,KAAK,CAAC;AACjB,GAAG;AACH,EAAE,IAAI,aAAa,GAAG,OAAO,CAAC;AAC9B,EAAE,OAAO,aAAa,EAAE;AACxB,IAAI,IAAI,aAAa,KAAK,QAAQ,CAAC,IAAI,EAAE;AACzC,MAAM,MAAM;AACZ,KAAK;AACL,IAAI,IAAI,MAAM,CAAC,aAAa,CAAC,EAAE;AAC/B,MAAM,OAAO,KAAK,CAAC;AACnB,KAAK;AACL,IAAI,aAAa,GAAG,aAAa,CAAC,UAAU,CAAC;AAC7C,GAAG;AACH,EAAE,OAAO,IAAI,CAAC;AACd,CAAC;AACD,SAAS,kBAAkB,CAAC,OAAO,EAAE;AACrC,EAAE,IAAI,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;AAClD,EAAE,IAAI,QAAQ,KAAK,IAAI,EAAE;AACzB,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC;AACtB,GAAG;AACH,EAAE,OAAO,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAChC,CAAC;AACM,SAAS,SAAS,CAAC,OAAO,EAAE;AACnC,EAAE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;AAClD,EAAE,MAAM,gBAAgB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;AACtE,EAAE,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,YAAY,iBAAiB,GAAG,OAAO,CAAC,IAAI,IAAI,gBAAgB,GAAG,gBAAgB,CAAC,CAAC;AACjK,EAAE,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AACM,SAAS,QAAQ,CAAC,OAAO,EAAE;AAClC,EAAE,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC/C,EAAE,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC/C,EAAE,OAAO,CAAC,aAAa,IAAI,QAAQ,IAAI,CAAC,KAAK,SAAS,CAAC,OAAO,CAAC,CAAC;AAChE,CAAC;AACM,SAAS,uBAAuB,CAAC,OAAO,EAAE;AACjD,EAAE,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAC/E;;;;"}
@@ -4,7 +4,7 @@ export { getHotkeyHandler } from './parse-hotkey.js';
4
4
 
5
5
  function shouldFireEvent(event) {
6
6
  if (event.target instanceof HTMLElement) {
7
- return !["INPUT", "TEXTAREA", "SELECT"].includes(event.target.tagName);
7
+ return !event.target.isContentEditable && !["INPUT", "TEXTAREA", "SELECT"].includes(event.target.tagName);
8
8
  }
9
9
  return true;
10
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"use-hotkeys.js","sources":["../../src/use-hotkeys/use-hotkeys.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { getHotkeyMatcher, getHotkeyHandler } from './parse-hotkey';\n\nexport { getHotkeyHandler };\n\nexport type HotkeyItem = [string, (event: KeyboardEvent) => void];\n\nfunction shouldFireEvent(event: KeyboardEvent) {\n if (event.target instanceof HTMLElement) {\n return !['INPUT', 'TEXTAREA', 'SELECT'].includes(event.target.tagName);\n }\n return true;\n}\n\nexport function useHotkeys(hotkeys: HotkeyItem[]) {\n useEffect(() => {\n const keydownListener = (event: KeyboardEvent) => {\n hotkeys.forEach(([hotkey, handler]) => {\n if (getHotkeyMatcher(hotkey)(event) && shouldFireEvent(event)) {\n event.preventDefault();\n handler(event);\n }\n });\n };\n\n document.documentElement.addEventListener('keydown', keydownListener);\n return () => document.documentElement.removeEventListener('keydown', keydownListener);\n }, [hotkeys]);\n}\n"],"names":[],"mappings":";;;;AAGA,SAAS,eAAe,CAAC,KAAK,EAAE;AAChC,EAAE,IAAI,KAAK,CAAC,MAAM,YAAY,WAAW,EAAE;AAC3C,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC3E,GAAG;AACH,EAAE,OAAO,IAAI,CAAC;AACd,CAAC;AACM,SAAS,UAAU,CAAC,OAAO,EAAE;AACpC,EAAE,SAAS,CAAC,MAAM;AAClB,IAAI,MAAM,eAAe,GAAG,CAAC,KAAK,KAAK;AACvC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK;AAC7C,QAAQ,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE;AACvE,UAAU,KAAK,CAAC,cAAc,EAAE,CAAC;AACjC,UAAU,OAAO,CAAC,KAAK,CAAC,CAAC;AACzB,SAAS;AACT,OAAO,CAAC,CAAC;AACT,KAAK,CAAC;AACN,IAAI,QAAQ,CAAC,eAAe,CAAC,gBAAgB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAC1E,IAAI,OAAO,MAAM,QAAQ,CAAC,eAAe,CAAC,mBAAmB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAC1F,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAChB;;;;"}
1
+ {"version":3,"file":"use-hotkeys.js","sources":["../../src/use-hotkeys/use-hotkeys.ts"],"sourcesContent":["import { useEffect } from 'react';\nimport { getHotkeyMatcher, getHotkeyHandler } from './parse-hotkey';\n\nexport { getHotkeyHandler };\n\nexport type HotkeyItem = [string, (event: KeyboardEvent) => void];\n\nfunction shouldFireEvent(event: KeyboardEvent) {\n if (event.target instanceof HTMLElement) {\n return (\n !event.target.isContentEditable &&\n !['INPUT', 'TEXTAREA', 'SELECT'].includes(event.target.tagName)\n );\n }\n return true;\n}\n\nexport function useHotkeys(hotkeys: HotkeyItem[]) {\n useEffect(() => {\n const keydownListener = (event: KeyboardEvent) => {\n hotkeys.forEach(([hotkey, handler]) => {\n if (getHotkeyMatcher(hotkey)(event) && shouldFireEvent(event)) {\n event.preventDefault();\n handler(event);\n }\n });\n };\n\n document.documentElement.addEventListener('keydown', keydownListener);\n return () => document.documentElement.removeEventListener('keydown', keydownListener);\n }, [hotkeys]);\n}\n"],"names":[],"mappings":";;;;AAGA,SAAS,eAAe,CAAC,KAAK,EAAE;AAChC,EAAE,IAAI,KAAK,CAAC,MAAM,YAAY,WAAW,EAAE;AAC3C,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAC9G,GAAG;AACH,EAAE,OAAO,IAAI,CAAC;AACd,CAAC;AACM,SAAS,UAAU,CAAC,OAAO,EAAE;AACpC,EAAE,SAAS,CAAC,MAAM;AAClB,IAAI,MAAM,eAAe,GAAG,CAAC,KAAK,KAAK;AACvC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK;AAC7C,QAAQ,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE;AACvE,UAAU,KAAK,CAAC,cAAc,EAAE,CAAC;AACjC,UAAU,OAAO,CAAC,KAAK,CAAC,CAAC;AACzB,SAAS;AACT,OAAO,CAAC,CAAC;AACT,KAAK,CAAC;AACN,IAAI,QAAQ,CAAC,eAAe,CAAC,gBAAgB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAC1E,IAAI,OAAO,MAAM,QAAQ,CAAC,eAAe,CAAC,mBAAmB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;AAC1F,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAChB;;;;"}
@@ -1,12 +1,16 @@
1
- import { useState, useRef } from 'react';
1
+ import { useState, useRef, useEffect } from 'react';
2
2
 
3
3
  function useInterval(fn, interval) {
4
4
  const [active, setActive] = useState(false);
5
5
  const intervalRef = useRef();
6
+ const fnRef = useRef();
7
+ useEffect(() => {
8
+ fnRef.current = fn;
9
+ }, [fn]);
6
10
  const start = () => {
7
11
  setActive((old) => {
8
12
  if (!old) {
9
- intervalRef.current = window.setInterval(fn, interval);
13
+ intervalRef.current = window.setInterval(fnRef.current, interval);
10
14
  }
11
15
  return true;
12
16
  });
@@ -1 +1 @@
1
- {"version":3,"file":"use-interval.js","sources":["../../src/use-interval/use-interval.ts"],"sourcesContent":["import { useRef, useState } from 'react';\n\nexport function useInterval(fn: () => void, interval: number) {\n const [active, setActive] = useState(false);\n const intervalRef = useRef<number>();\n\n const start = () => {\n setActive((old) => {\n if (!old) {\n intervalRef.current = window.setInterval(fn, interval);\n }\n return true;\n });\n };\n\n const stop = () => {\n setActive(false);\n window.clearInterval(intervalRef.current);\n };\n\n const toggle = () => {\n if (active) {\n stop();\n } else {\n start();\n }\n };\n\n return { start, stop, toggle, active };\n}\n"],"names":[],"mappings":";;AACO,SAAS,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE;AAC1C,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9C,EAAE,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC;AAC/B,EAAE,MAAM,KAAK,GAAG,MAAM;AACtB,IAAI,SAAS,CAAC,CAAC,GAAG,KAAK;AACvB,MAAM,IAAI,CAAC,GAAG,EAAE;AAChB,QAAQ,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC/D,OAAO;AACP,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,CAAC,CAAC;AACP,GAAG,CAAC;AACJ,EAAE,MAAM,IAAI,GAAG,MAAM;AACrB,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;AACrB,IAAI,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9C,GAAG,CAAC;AACJ,EAAE,MAAM,MAAM,GAAG,MAAM;AACvB,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,IAAI,EAAE,CAAC;AACb,KAAK,MAAM;AACX,MAAM,KAAK,EAAE,CAAC;AACd,KAAK;AACL,GAAG,CAAC;AACJ,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACzC;;;;"}
1
+ {"version":3,"file":"use-interval.js","sources":["../../src/use-interval/use-interval.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nexport function useInterval(fn: () => void, interval: number) {\n const [active, setActive] = useState(false);\n const intervalRef = useRef<number>();\n const fnRef = useRef<() => void>();\n\n useEffect(() => {\n fnRef.current = fn;\n }, [fn]);\n\n const start = () => {\n setActive((old) => {\n if (!old) {\n intervalRef.current = window.setInterval(fnRef.current, interval);\n }\n return true;\n });\n };\n\n const stop = () => {\n setActive(false);\n window.clearInterval(intervalRef.current);\n };\n\n const toggle = () => {\n if (active) {\n stop();\n } else {\n start();\n }\n };\n\n return { start, stop, toggle, active };\n}\n"],"names":[],"mappings":";;AACO,SAAS,WAAW,CAAC,EAAE,EAAE,QAAQ,EAAE;AAC1C,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9C,EAAE,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC;AAC/B,EAAE,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC;AACzB,EAAE,SAAS,CAAC,MAAM;AAClB,IAAI,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;AACvB,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACX,EAAE,MAAM,KAAK,GAAG,MAAM;AACtB,IAAI,SAAS,CAAC,CAAC,GAAG,KAAK;AACvB,MAAM,IAAI,CAAC,GAAG,EAAE;AAChB,QAAQ,WAAW,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAC1E,OAAO;AACP,MAAM,OAAO,IAAI,CAAC;AAClB,KAAK,CAAC,CAAC;AACP,GAAG,CAAC;AACJ,EAAE,MAAM,IAAI,GAAG,MAAM;AACrB,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;AACrB,IAAI,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9C,GAAG,CAAC;AACJ,EAAE,MAAM,MAAM,GAAG,MAAM;AACvB,IAAI,IAAI,MAAM,EAAE;AAChB,MAAM,IAAI,EAAE,CAAC;AACb,KAAK,MAAM;AACX,MAAM,KAAK,EAAE,CAAC;AACd,KAAK;AACL,GAAG,CAAC;AACJ,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AACzC;;;;"}
@@ -54,6 +54,9 @@ function useListState(initialValue = []) {
54
54
  return cloned;
55
55
  });
56
56
  const applyWhere = (condition, fn) => setState((current) => current.map((item, index) => condition(item, index) ? fn(item, index) : item));
57
+ const filter = (fn) => {
58
+ setState((current) => current.filter(fn));
59
+ };
57
60
  return [
58
61
  state,
59
62
  {
@@ -68,7 +71,8 @@ function useListState(initialValue = []) {
68
71
  remove,
69
72
  reorder,
70
73
  setItem,
71
- setItemProp
74
+ setItemProp,
75
+ filter
72
76
  }
73
77
  ];
74
78
  }
@@ -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 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":[],"mappings":"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"}
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 filter: (fn: (item: T, i: number) => boolean) => 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 const filter = (fn: (item: T, i: number) => boolean) => {\n setState((current) => current.filter(fn));\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 filter,\n },\n ];\n}\n"],"names":[],"mappings":";;AAAA,IAAI,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;AACtC,IAAI,UAAU,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACzC,IAAI,iBAAiB,GAAG,MAAM,CAAC,yBAAyB,CAAC;AACzD,IAAI,mBAAmB,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACvD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC;AACnD,IAAI,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC;AACzD,IAAI,eAAe,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,KAAK,GAAG,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAChK,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK;AAC/B,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAChC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AAClC,MAAM,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AACxC,EAAE,IAAI,mBAAmB;AACzB,IAAI,KAAK,IAAI,IAAI,IAAI,mBAAmB,CAAC,CAAC,CAAC,EAAE;AAC7C,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC;AACpC,QAAQ,eAAe,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,KAAK;AACL,EAAE,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AACF,IAAI,aAAa,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,UAAU,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3D,SAAS,YAAY,CAAC,YAAY,GAAG,EAAE,EAAE;AAChD,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;AACnD,EAAE,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC;AAC7E,EAAE,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;AAC9E,EAAE,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7H,EAAE,MAAM,KAAK,GAAG,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7F,EAAE,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC/G,EAAE,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,CAAC,OAAO,KAAK;AAC1C,IAAI,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;AAChC,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;AACjB,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,CAAC,OAAO,KAAK;AAC5C,IAAI,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;AAChC,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;AACnB,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAK;AAC1D,IAAI,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;AAChC,IAAI,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAC/B,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC3B,IAAI,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;AAC/B,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,OAAO,GAAG,CAAC,KAAK,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAK;AACzD,IAAI,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;AAChC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;AACzB,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,WAAW,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAK;AACpE,IAAI,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;AAChC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC;AACxF,IAAI,OAAO,MAAM,CAAC;AAClB,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,UAAU,GAAG,CAAC,SAAS,EAAE,EAAE,KAAK,QAAQ,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;AAC7I,EAAE,MAAM,MAAM,GAAG,CAAC,EAAE,KAAK;AACzB,IAAI,QAAQ,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9C,GAAG,CAAC;AACJ,EAAE,OAAO;AACT,IAAI,KAAK;AACT,IAAI;AACJ,MAAM,QAAQ;AACd,MAAM,MAAM;AACZ,MAAM,OAAO;AACb,MAAM,MAAM;AACZ,MAAM,GAAG;AACT,MAAM,KAAK;AACX,MAAM,KAAK;AACX,MAAM,UAAU;AAChB,MAAM,MAAM;AACZ,MAAM,OAAO;AACb,MAAM,OAAO;AACb,MAAM,WAAW;AACjB,MAAM,MAAM;AACZ,KAAK;AACL,GAAG,CAAC;AACJ;;;;"}
@@ -16,7 +16,7 @@ var __spreadValues = (a, b) => {
16
16
  }
17
17
  return a;
18
18
  };
19
- function useMouse() {
19
+ function useMouse(options = { resetOnExit: false }) {
20
20
  const [position, setPosition] = useState({ x: 0, y: 0 });
21
21
  const ref = useRef();
22
22
  const setMousePosition = (event) => {
@@ -29,10 +29,17 @@ function useMouse() {
29
29
  setPosition({ x: event.clientX, y: event.clientY });
30
30
  }
31
31
  };
32
+ const resetMousePosition = () => setPosition({ x: 0, y: 0 });
32
33
  useEffect(() => {
33
34
  const element = (ref == null ? void 0 : ref.current) ? ref.current : document;
34
35
  element.addEventListener("mousemove", setMousePosition);
35
- return () => element.removeEventListener("mousemove", setMousePosition);
36
+ if (options.resetOnExit)
37
+ element.addEventListener("mouseleave", resetMousePosition);
38
+ return () => {
39
+ element.removeEventListener("mousemove", setMousePosition);
40
+ if (options.resetOnExit)
41
+ element.removeEventListener("mouseleave", resetMousePosition);
42
+ };
36
43
  }, [ref.current]);
37
44
  return __spreadValues({ ref }, position);
38
45
  }
@@ -1 +1 @@
1
- {"version":3,"file":"use-mouse.js","sources":["../../src/use-mouse/use-mouse.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport type { MouseEvent } from 'react';\n\nexport function useMouse<T extends HTMLElement = any>() {\n const [position, setPosition] = useState({ x: 0, y: 0 });\n\n const ref = useRef<T>();\n\n const setMousePosition = (event: MouseEvent<HTMLElement>) => {\n if (ref.current) {\n const rect = event.currentTarget.getBoundingClientRect();\n\n const x = Math.max(\n 0,\n Math.round(event.pageX - rect.left - (window.pageXOffset || window.scrollX))\n );\n\n const y = Math.max(\n 0,\n Math.round(event.pageY - rect.top - (window.pageYOffset || window.scrollY))\n );\n\n setPosition({ x, y });\n } else {\n setPosition({ x: event.clientX, y: event.clientY });\n }\n };\n\n useEffect(() => {\n const element = ref?.current ? ref.current : document;\n element.addEventListener('mousemove', setMousePosition as any);\n\n return () => element.removeEventListener('mousemove', setMousePosition as any);\n }, [ref.current]);\n\n return { ref, ...position };\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-mouse.js","sources":["../../src/use-mouse/use-mouse.ts"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport type { MouseEvent } from 'react';\n\nexport function useMouse<T extends HTMLElement = any>(\n options: { resetOnExit?: boolean } = { resetOnExit: false }\n) {\n const [position, setPosition] = useState({ x: 0, y: 0 });\n\n const ref = useRef<T>();\n\n const setMousePosition = (event: MouseEvent<HTMLElement>) => {\n if (ref.current) {\n const rect = event.currentTarget.getBoundingClientRect();\n\n const x = Math.max(\n 0,\n Math.round(event.pageX - rect.left - (window.pageXOffset || window.scrollX))\n );\n\n const y = Math.max(\n 0,\n Math.round(event.pageY - rect.top - (window.pageYOffset || window.scrollY))\n );\n\n setPosition({ x, y });\n } else {\n setPosition({ x: event.clientX, y: event.clientY });\n }\n };\n\n const resetMousePosition = () => setPosition({ x: 0, y: 0 });\n\n useEffect(() => {\n const element = ref?.current ? ref.current : document;\n element.addEventListener('mousemove', setMousePosition as any);\n if (options.resetOnExit) element.addEventListener('mouseleave', resetMousePosition as any);\n\n return () => {\n element.removeEventListener('mousemove', setMousePosition as any);\n if (options.resetOnExit) element.removeEventListener('mouseleave', resetMousePosition as any);\n };\n }, [ref.current]);\n\n return { ref, ...position };\n}\n"],"names":[],"mappings":"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"}
@@ -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>(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":[],"mappings":";;AACO,SAAS,SAAS,CAAC,OAAO,EAAE;AACnC,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,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;;;;"}
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: readonly [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":[],"mappings":";;AACO,SAAS,SAAS,CAAC,OAAO,EAAE;AACnC,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,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;;;;"}
@@ -1,4 +1,4 @@
1
- import { useRef, useState } from 'react';
1
+ import { useState } from 'react';
2
2
 
3
3
  function useUncontrolled({
4
4
  value,
@@ -7,12 +7,15 @@ function useUncontrolled({
7
7
  onChange = () => {
8
8
  }
9
9
  }) {
10
- const controlled = useRef(value !== void 0);
11
10
  const [uncontrolledValue, setUncontrolledValue] = useState(defaultValue !== void 0 ? defaultValue : finalValue);
12
- if (controlled.current) {
11
+ const handleUncontrolledChange = (val) => {
12
+ setUncontrolledValue(val);
13
+ onChange == null ? void 0 : onChange(val);
14
+ };
15
+ if (value !== void 0) {
13
16
  return [value, onChange, true];
14
17
  }
15
- return [uncontrolledValue, setUncontrolledValue, false];
18
+ return [uncontrolledValue, handleUncontrolledChange, false];
16
19
  }
17
20
 
18
21
  export { useUncontrolled };
@@ -1 +1 @@
1
- {"version":3,"file":"use-uncontrolled.js","sources":["../../src/use-uncontrolled/use-uncontrolled.ts"],"sourcesContent":["import { useRef, useState } from 'react';\n\ninterface UseUncontrolledInput<T> {\n /** Value for controlled state */\n value?: T;\n\n /** Initial value for uncontrolled state */\n defaultValue?: T;\n\n /** Final value for uncontrolled state when value and defaultValue are not provided */\n finalValue?: T;\n\n /** Controlled state onChange handler */\n onChange?(value: T): void;\n}\n\nexport function useUncontrolled<T>({\n value,\n defaultValue,\n finalValue,\n onChange = () => {},\n}: UseUncontrolledInput<T>): [T, (value: T) => void, boolean] {\n const controlled = useRef(value !== undefined);\n const [uncontrolledValue, setUncontrolledValue] = useState(\n defaultValue !== undefined ? defaultValue : finalValue\n );\n\n if (controlled.current) {\n return [value as T, onChange, true];\n }\n\n return [uncontrolledValue as T, setUncontrolledValue, false];\n}\n"],"names":[],"mappings":";;AACO,SAAS,eAAe,CAAC;AAChC,EAAE,KAAK;AACP,EAAE,YAAY;AACd,EAAE,UAAU;AACZ,EAAE,QAAQ,GAAG,MAAM;AACnB,GAAG;AACH,CAAC,EAAE;AACH,EAAE,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC;AAC9C,EAAE,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,YAAY,KAAK,KAAK,CAAC,GAAG,YAAY,GAAG,UAAU,CAAC,CAAC;AAClH,EAAE,IAAI,UAAU,CAAC,OAAO,EAAE;AAC1B,IAAI,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AACnC,GAAG;AACH,EAAE,OAAO,CAAC,iBAAiB,EAAE,oBAAoB,EAAE,KAAK,CAAC,CAAC;AAC1D;;;;"}
1
+ {"version":3,"file":"use-uncontrolled.js","sources":["../../src/use-uncontrolled/use-uncontrolled.ts"],"sourcesContent":["import { useState } from 'react';\n\ninterface UseUncontrolledInput<T> {\n /** Value for controlled state */\n value?: T;\n\n /** Initial value for uncontrolled state */\n defaultValue?: T;\n\n /** Final value for uncontrolled state when value and defaultValue are not provided */\n finalValue?: T;\n\n /** Controlled state onChange handler */\n onChange?(value: T): void;\n}\n\nexport function useUncontrolled<T>({\n value,\n defaultValue,\n finalValue,\n onChange = () => {},\n}: UseUncontrolledInput<T>): [T, (value: T) => void, boolean] {\n const [uncontrolledValue, setUncontrolledValue] = useState(\n defaultValue !== undefined ? defaultValue : finalValue\n );\n\n const handleUncontrolledChange = (val: T) => {\n setUncontrolledValue(val);\n onChange?.(val);\n };\n\n if (value !== undefined) {\n return [value as T, onChange, true];\n }\n\n return [uncontrolledValue as T, handleUncontrolledChange, false];\n}\n"],"names":[],"mappings":";;AACO,SAAS,eAAe,CAAC;AAChC,EAAE,KAAK;AACP,EAAE,YAAY;AACd,EAAE,UAAU;AACZ,EAAE,QAAQ,GAAG,MAAM;AACnB,GAAG;AACH,CAAC,EAAE;AACH,EAAE,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,YAAY,KAAK,KAAK,CAAC,GAAG,YAAY,GAAG,UAAU,CAAC,CAAC;AAClH,EAAE,MAAM,wBAAwB,GAAG,CAAC,GAAG,KAAK;AAC5C,IAAI,oBAAoB,CAAC,GAAG,CAAC,CAAC;AAC9B,IAAI,QAAQ,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC9C,GAAG,CAAC;AACJ,EAAE,IAAI,KAAK,KAAK,KAAK,CAAC,EAAE;AACxB,IAAI,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;AACnC,GAAG;AACH,EAAE,OAAO,CAAC,iBAAiB,EAAE,wBAAwB,EAAE,KAAK,CAAC,CAAC;AAC9D;;;;"}
@@ -1,9 +1,9 @@
1
1
  import { useState } from 'react';
2
2
 
3
- function useValidatedState(initialValue, validation) {
3
+ function useValidatedState(initialValue, validation, initialValidationState) {
4
4
  const [value, setValue] = useState(initialValue);
5
5
  const [lastValidValue, setLastValidValue] = useState(validation(initialValue) ? initialValue : void 0);
6
- const [valid, setValid] = useState(validation(initialValue));
6
+ const [valid, setValid] = useState(typeof initialValidationState === "boolean" ? initialValidationState : validation(initialValue));
7
7
  const onChange = (val) => {
8
8
  if (validation(val)) {
9
9
  setLastValidValue(val);
@@ -1 +1 @@
1
- {"version":3,"file":"use-validated-state.js","sources":["../../src/use-validated-state/use-validated-state.ts"],"sourcesContent":["import { useState } from 'react';\n\nexport function useValidatedState<T>(initialValue: T, validation: (value: T) => boolean) {\n const [value, setValue] = useState<T>(initialValue);\n const [lastValidValue, setLastValidValue] = useState<T>(\n validation(initialValue) ? initialValue : undefined\n );\n const [valid, setValid] = useState<boolean>(validation(initialValue));\n\n const onChange = (val: T) => {\n if (validation(val)) {\n setLastValidValue(val);\n setValid(true);\n } else {\n setValid(false);\n }\n\n setValue(val);\n };\n\n return [{ value, lastValidValue, valid }, onChange] as const;\n}\n"],"names":[],"mappings":";;AACO,SAAS,iBAAiB,CAAC,YAAY,EAAE,UAAU,EAAE;AAC5D,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;AACnD,EAAE,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC;AACzG,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;AAC/D,EAAE,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK;AAC5B,IAAI,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE;AACzB,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAC7B,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrB,KAAK,MAAM;AACX,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;AACtB,KAAK;AACL,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;AAClB,GAAG,CAAC;AACJ,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAC;AACtD;;;;"}
1
+ {"version":3,"file":"use-validated-state.js","sources":["../../src/use-validated-state/use-validated-state.ts"],"sourcesContent":["import { useState } from 'react';\n\nexport function useValidatedState<T>(\n initialValue: T,\n validation: (value: T) => boolean,\n initialValidationState?: boolean\n) {\n const [value, setValue] = useState<T>(initialValue);\n const [lastValidValue, setLastValidValue] = useState<T>(\n validation(initialValue) ? initialValue : undefined\n );\n const [valid, setValid] = useState<boolean>(\n typeof initialValidationState === 'boolean' ? initialValidationState : validation(initialValue)\n );\n\n const onChange = (val: T) => {\n if (validation(val)) {\n setLastValidValue(val);\n setValid(true);\n } else {\n setValid(false);\n }\n\n setValue(val);\n };\n\n return [{ value, lastValidValue, valid }, onChange] as const;\n}\n"],"names":[],"mappings":";;AACO,SAAS,iBAAiB,CAAC,YAAY,EAAE,UAAU,EAAE,sBAAsB,EAAE;AACpF,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;AACnD,EAAE,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC;AACzG,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,OAAO,sBAAsB,KAAK,SAAS,GAAG,sBAAsB,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;AACtI,EAAE,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK;AAC5B,IAAI,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE;AACzB,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC;AAC7B,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrB,KAAK,MAAM;AACX,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;AACtB,KAAK;AACL,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;AAClB,GAAG,CAAC;AACJ,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAC;AACtD;;;;"}
@@ -2,8 +2,8 @@ export declare function useCounter(initialValue?: number, options?: Partial<{
2
2
  min: number;
3
3
  max: number;
4
4
  }>): readonly [number, {
5
- readonly increment: (delta?: number) => void;
6
- readonly decrement: (delta?: number) => void;
5
+ readonly increment: () => void;
6
+ readonly decrement: () => void;
7
7
  readonly set: (value: number) => void;
8
8
  readonly reset: () => void;
9
9
  }];
@@ -1,2 +1,3 @@
1
- export declare function useDidUpdate(fn: () => void, dependencies?: any[]): void;
1
+ import { EffectCallback } from 'react';
2
+ export declare function useDidUpdate(fn: EffectCallback, dependencies?: any[]): void;
2
3
  //# sourceMappingURL=use-did-update.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-did-update.d.ts","sourceRoot":"","sources":["../../src/use-did-update/use-did-update.ts"],"names":[],"mappings":"AAEA,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,YAAY,CAAC,EAAE,GAAG,EAAE,QAUhE"}
1
+ {"version":3,"file":"use-did-update.d.ts","sourceRoot":"","sources":["../../src/use-did-update/use-did-update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,cAAc,EAAE,MAAM,OAAO,CAAC;AAE1D,wBAAgB,YAAY,CAAC,EAAE,EAAE,cAAc,EAAE,YAAY,CAAC,EAAE,GAAG,EAAE,QAUpE"}
@@ -1,9 +1,8 @@
1
1
  interface UseFocusReturn {
2
2
  opened: boolean;
3
- transitionDuration: number;
4
3
  shouldReturnFocus?: boolean;
5
4
  }
6
5
  /** Returns focus to last active element, used in Modal and Drawer */
7
- export declare function useFocusReturn({ opened, transitionDuration, shouldReturnFocus, }: UseFocusReturn): () => void;
6
+ export declare function useFocusReturn({ opened, shouldReturnFocus }: UseFocusReturn): () => void;
8
7
  export {};
9
8
  //# sourceMappingURL=use-focus-return.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-focus-return.d.ts","sourceRoot":"","sources":["../../src/use-focus-return/use-focus-return.ts"],"names":[],"mappings":"AAGA,UAAU,cAAc;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,qEAAqE;AACrE,wBAAgB,cAAc,CAAC,EAC7B,MAAM,EACN,kBAAkB,EAClB,iBAAwB,GACzB,EAAE,cAAc,cAoChB"}
1
+ {"version":3,"file":"use-focus-return.d.ts","sourceRoot":"","sources":["../../src/use-focus-return/use-focus-return.ts"],"names":[],"mappings":"AAGA,UAAU,cAAc;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,qEAAqE;AACrE,wBAAgB,cAAc,CAAC,EAAE,MAAM,EAAE,iBAAwB,EAAE,EAAE,cAAc,cAoClF"}
@@ -1 +1 @@
1
- {"version":3,"file":"tabbable.d.ts","sourceRoot":"","sources":["../../src/use-focus-trap/tabbable.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,cAAc,2DAA2D,CAAC;AAmCvF,wBAAgB,SAAS,CAAC,OAAO,EAAE,WAAW,WAS7C;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,WAAW,WAI5C;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,EAAE,CAE3E"}
1
+ {"version":3,"file":"tabbable.d.ts","sourceRoot":"","sources":["../../src/use-focus-trap/tabbable.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,cAAc,2DAA2D,CAAC;AA4CvF,wBAAgB,SAAS,CAAC,OAAO,EAAE,WAAW,WAS7C;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,WAAW,WAI5C;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,EAAE,CAE3E"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-hotkeys.d.ts","sourceRoot":"","sources":["../../src/use-hotkeys/use-hotkeys.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,oBAAY,UAAU,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC,CAAC;AASlE,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,QAc/C"}
1
+ {"version":3,"file":"use-hotkeys.d.ts","sourceRoot":"","sources":["../../src/use-hotkeys/use-hotkeys.ts"],"names":[],"mappings":"AACA,OAAO,EAAoB,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEpE,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAE5B,oBAAY,UAAU,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC,CAAC;AAYlE,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,QAc/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-interval.d.ts","sourceRoot":"","sources":["../../src/use-interval/use-interval.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,QAAQ,EAAE,MAAM;;;;;EA2B3D"}
1
+ {"version":3,"file":"use-interval.d.ts","sourceRoot":"","sources":["../../src/use-interval/use-interval.ts"],"names":[],"mappings":"AAEA,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,QAAQ,EAAE,MAAM;;;;;EAgC3D"}
@@ -15,6 +15,7 @@ export interface UseListStateHandlers<T> {
15
15
  }) => void;
16
16
  setItem: (index: number, item: T) => void;
17
17
  setItemProp: <K extends keyof T, U extends T[K]>(index: number, prop: K, value: U) => void;
18
+ filter: (fn: (item: T, i: number) => boolean) => void;
18
19
  }
19
20
  export declare type UseListState<T> = [T[], UseListStateHandlers<T>];
20
21
  export declare function useListState<T>(initialValue?: T[]): UseListState<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"use-list-state.d.ts","sourceRoot":"","sources":["../../src/use-list-state/use-list-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,MAAM,WAAW,oBAAoB,CAAC,CAAC;IACrC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,MAAM,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IAChC,OAAO,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IACjC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IAC/C,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC,KAAK,IAAI,CAAC;IACpD,UAAU,EAAE,CACV,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,EAC9C,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC,KAC/B,IAAI,CAAC;IACV,MAAM,EAAE,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACvC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC9D,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC1C,WAAW,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;CAC5F;AAED,oBAAY,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7D,wBAAgB,YAAY,CAAC,CAAC,EAAE,YAAY,GAAE,CAAC,EAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CA+EvE"}
1
+ {"version":3,"file":"use-list-state.d.ts","sourceRoot":"","sources":["../../src/use-list-state/use-list-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAC;AAExC,MAAM,WAAW,oBAAoB,CAAC,CAAC;IACrC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,MAAM,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IAChC,OAAO,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IACjC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IAC/C,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC,KAAK,IAAI,CAAC;IACpD,UAAU,EAAE,CACV,SAAS,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,EAC9C,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,CAAC,KAC/B,IAAI,CAAC;IACV,MAAM,EAAE,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACvC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC9D,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;IAC1C,WAAW,EAAE,CAAC,CAAC,SAAS,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC3F,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,KAAK,OAAO,KAAK,IAAI,CAAC;CACvD;AAED,oBAAY,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7D,wBAAgB,YAAY,CAAC,CAAC,EAAE,YAAY,GAAE,CAAC,EAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAoFvE"}
@@ -1,4 +1,6 @@
1
- export declare function useMouse<T extends HTMLElement = any>(): {
1
+ export declare function useMouse<T extends HTMLElement = any>(options?: {
2
+ resetOnExit?: boolean;
3
+ }): {
2
4
  x: number;
3
5
  y: number;
4
6
  ref: import("react").MutableRefObject<T>;
@@ -1 +1 @@
1
- {"version":3,"file":"use-mouse.d.ts","sourceRoot":"","sources":["../../src/use-mouse/use-mouse.ts"],"names":[],"mappings":"AAGA,wBAAgB,QAAQ,CAAC,CAAC,SAAS,WAAW,GAAG,GAAG;;;;EAiCnD"}
1
+ {"version":3,"file":"use-mouse.d.ts","sourceRoot":"","sources":["../../src/use-mouse/use-mouse.ts"],"names":[],"mappings":"AAGA,wBAAgB,QAAQ,CAAC,CAAC,SAAS,WAAW,GAAG,GAAG,EAClD,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAA2B;;;;EAwC5D"}
@@ -1,2 +1,2 @@
1
- export declare function useToggle<T>(options: [T, T]): readonly [T, (value?: React.SetStateAction<T>) => void];
1
+ export declare function useToggle<T>(options: readonly [T, T]): readonly [T, (value?: React.SetStateAction<T>) => void];
2
2
  //# sourceMappingURL=use-toggle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-toggle.d.ts","sourceRoot":"","sources":["../../src/use-toggle/use-toggle.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,yBAGlB,MAAM,cAAc,CAAC,CAAC,CAAC,WAehD"}
1
+ {"version":3,"file":"use-toggle.d.ts","sourceRoot":"","sources":["../../src/use-toggle/use-toggle.ts"],"names":[],"mappings":"AAEA,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,yBAG3B,MAAM,cAAc,CAAC,CAAC,CAAC,WAehD"}
@@ -1 +1 @@
1
- {"version":3,"file":"use-uncontrolled.d.ts","sourceRoot":"","sources":["../../src/use-uncontrolled/use-uncontrolled.ts"],"names":[],"mappings":"AAEA,UAAU,oBAAoB,CAAC,CAAC;IAC9B,iCAAiC;IACjC,KAAK,CAAC,EAAE,CAAC,CAAC;IAEV,2CAA2C;IAC3C,YAAY,CAAC,EAAE,CAAC,CAAC;IAEjB,sFAAsF;IACtF,UAAU,CAAC,EAAE,CAAC,CAAC;IAEf,wCAAwC;IACxC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;CAC3B;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,EACjC,KAAK,EACL,YAAY,EACZ,UAAU,EACV,QAAmB,GACpB,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,EAAE,OAAO,CAAC,CAW5D"}
1
+ {"version":3,"file":"use-uncontrolled.d.ts","sourceRoot":"","sources":["../../src/use-uncontrolled/use-uncontrolled.ts"],"names":[],"mappings":"AAEA,UAAU,oBAAoB,CAAC,CAAC;IAC9B,iCAAiC;IACjC,KAAK,CAAC,EAAE,CAAC,CAAC;IAEV,2CAA2C;IAC3C,YAAY,CAAC,EAAE,CAAC,CAAC;IAEjB,sFAAsF;IACtF,UAAU,CAAC,EAAE,CAAC,CAAC;IAEf,wCAAwC;IACxC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;CAC3B;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,EACjC,KAAK,EACL,YAAY,EACZ,UAAU,EACV,QAAmB,GACpB,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,EAAE,OAAO,CAAC,CAe5D"}
@@ -1,4 +1,4 @@
1
- export declare function useValidatedState<T>(initialValue: T, validation: (value: T) => boolean): readonly [{
1
+ export declare function useValidatedState<T>(initialValue: T, validation: (value: T) => boolean, initialValidationState?: boolean): readonly [{
2
2
  readonly value: T;
3
3
  readonly lastValidValue: T;
4
4
  readonly valid: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"use-validated-state.d.ts","sourceRoot":"","sources":["../../src/use-validated-state/use-validated-state.ts"],"names":[],"mappings":"AAEA,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO;;;;SAO9D,CAAC,WAYzB"}
1
+ {"version":3,"file":"use-validated-state.d.ts","sourceRoot":"","sources":["../../src/use-validated-state/use-validated-state.ts"],"names":[],"mappings":"AAEA,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,YAAY,EAAE,CAAC,EACf,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,EACjC,sBAAsB,CAAC,EAAE,OAAO;;;;SAUT,CAAC,WAYzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mantine/hooks",
3
- "version": "5.0.0-alpha.8",
3
+ "version": "5.0.1",
4
4
  "main": "cjs/index.js",
5
5
  "module": "esm/index.js",
6
6
  "types": "lib/index.d.ts",