@siberiacancode/reactuse 0.0.4 → 0.0.7

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 (100) hide show
  1. package/dist/cjs/{_rollupPluginBabelHelpers-DKURZ6hh.js → _rollupPluginBabelHelpers-Cva0m6Ep.js} +2 -2
  2. package/dist/cjs/_rollupPluginBabelHelpers-Cva0m6Ep.js.map +1 -0
  3. package/dist/cjs/hooks/index.js +2 -2
  4. package/dist/cjs/hooks/useBattery/useBattery.js +2 -2
  5. package/dist/cjs/hooks/useBattery/useBattery.js.map +1 -1
  6. package/dist/cjs/hooks/useBoolean/useBoolean.js +2 -2
  7. package/dist/cjs/hooks/useClickOutside/useClickOutside.js +1 -1
  8. package/dist/cjs/hooks/useCopyToClipboard/useCopyToClipboard.js +2 -2
  9. package/dist/cjs/hooks/useCopyToClipboard/useCopyToClipboard.js.map +1 -1
  10. package/dist/cjs/hooks/useCounter/useCounter.js +2 -2
  11. package/dist/cjs/hooks/useDebouncedValue/useDebouncedValue.js +2 -2
  12. package/dist/cjs/hooks/useDocumentTitle/useDocumentTitle.js +2 -2
  13. package/dist/cjs/hooks/useDocumentVisibility/useDocumentVisibility.js +1 -1
  14. package/dist/cjs/hooks/useEventListener/useEventListener.js +1 -1
  15. package/dist/cjs/hooks/useHover/useHover.js +2 -2
  16. package/dist/cjs/hooks/useHover/useHover.js.map +1 -1
  17. package/dist/cjs/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.js +1 -1
  18. package/dist/cjs/hooks/useKeyPress/useKeyPress.js +2 -2
  19. package/dist/cjs/hooks/useKeyPressEvent/useKeyPressEvent.js +1 -1
  20. package/dist/cjs/hooks/useKeysPressed/useKeysPressed.js +2 -2
  21. package/dist/cjs/hooks/useLocalStorage/useLocalStorage.js +2 -2
  22. package/dist/cjs/hooks/useMount/useMount.js +1 -1
  23. package/dist/cjs/hooks/useMutationObserver.js +1 -1
  24. package/dist/cjs/hooks/useNetwork/useNetwork.js +1 -1
  25. package/dist/cjs/hooks/useNetwork/useNetwork.js.map +1 -1
  26. package/dist/cjs/hooks/useNonInitialEffect/useNonInitialEffect.js +1 -1
  27. package/dist/cjs/hooks/useNonInitialEffect/useNonInitialEffect.js.map +1 -1
  28. package/dist/cjs/hooks/useOnline/useOnline.js +1 -1
  29. package/dist/cjs/hooks/useOrientation/useOrientation.js +2 -2
  30. package/dist/cjs/hooks/useRenderCount/useRenderCount.js +1 -1
  31. package/dist/cjs/hooks/useSessionStorage/useSessionStorage.js +2 -2
  32. package/dist/cjs/hooks/useStep/useStep.js +3 -0
  33. package/dist/cjs/hooks/useStep/useStep.js.map +1 -0
  34. package/dist/cjs/hooks/useStorage/useStorage.js +2 -2
  35. package/dist/cjs/hooks/useTimeout/useTimeout.js +2 -2
  36. package/dist/cjs/hooks/useTimeout/useTimeout.js.map +1 -1
  37. package/dist/cjs/hooks/useToggle/useToggle.js +3 -0
  38. package/dist/cjs/hooks/useToggle/useToggle.js.map +1 -0
  39. package/dist/cjs/hooks/useUnmount/useUnmount.js +1 -1
  40. package/dist/cjs/hooks/useWindowEvent/useWindowEvent.js +1 -1
  41. package/dist/cjs/hooks/useWindowSize/useWindowSize.js +2 -2
  42. package/dist/cjs/index.js +2 -2
  43. package/dist/cjs/utils/helpers/debounce.js +1 -1
  44. package/dist/cjs/utils/helpers/index.js +1 -1
  45. package/dist/cjs/utils/helpers/isClient.js +1 -1
  46. package/dist/cjs/utils/helpers/isShallowEqual.js +1 -1
  47. package/dist/esm/{_rollupPluginBabelHelpers-CVdsimvi.js → _rollupPluginBabelHelpers-8YyPIzj_.js} +3 -3
  48. package/dist/esm/_rollupPluginBabelHelpers-8YyPIzj_.js.map +1 -0
  49. package/dist/esm/hooks/index.js +2 -2
  50. package/dist/esm/hooks/useBattery/useBattery.js +2 -2
  51. package/dist/esm/hooks/useBattery/useBattery.js.map +1 -1
  52. package/dist/esm/hooks/useBoolean/useBoolean.js +2 -2
  53. package/dist/esm/hooks/useClickOutside/useClickOutside.js +1 -1
  54. package/dist/esm/hooks/useCopyToClipboard/useCopyToClipboard.js +2 -2
  55. package/dist/esm/hooks/useCopyToClipboard/useCopyToClipboard.js.map +1 -1
  56. package/dist/esm/hooks/useCounter/useCounter.js +2 -2
  57. package/dist/esm/hooks/useDebouncedValue/useDebouncedValue.js +2 -2
  58. package/dist/esm/hooks/useDocumentTitle/useDocumentTitle.js +2 -2
  59. package/dist/esm/hooks/useDocumentVisibility/useDocumentVisibility.js +1 -1
  60. package/dist/esm/hooks/useEventListener/useEventListener.js +1 -1
  61. package/dist/esm/hooks/useHover/useHover.js +2 -2
  62. package/dist/esm/hooks/useHover/useHover.js.map +1 -1
  63. package/dist/esm/hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.js +1 -1
  64. package/dist/esm/hooks/useKeyPress/useKeyPress.js +2 -2
  65. package/dist/esm/hooks/useKeyPressEvent/useKeyPressEvent.js +1 -1
  66. package/dist/esm/hooks/useKeysPressed/useKeysPressed.js +2 -2
  67. package/dist/esm/hooks/useLocalStorage/useLocalStorage.js +2 -2
  68. package/dist/esm/hooks/useMount/useMount.js +1 -1
  69. package/dist/esm/hooks/useMutationObserver.js +1 -1
  70. package/dist/esm/hooks/useNetwork/useNetwork.js +1 -1
  71. package/dist/esm/hooks/useNetwork/useNetwork.js.map +1 -1
  72. package/dist/esm/hooks/useNonInitialEffect/useNonInitialEffect.js +1 -1
  73. package/dist/esm/hooks/useNonInitialEffect/useNonInitialEffect.js.map +1 -1
  74. package/dist/esm/hooks/useOnline/useOnline.js +1 -1
  75. package/dist/esm/hooks/useOrientation/useOrientation.js +2 -2
  76. package/dist/esm/hooks/useRenderCount/useRenderCount.js +1 -1
  77. package/dist/esm/hooks/useSessionStorage/useSessionStorage.js +2 -2
  78. package/dist/esm/hooks/useStep/useStep.js +3 -0
  79. package/dist/esm/hooks/useStep/useStep.js.map +1 -0
  80. package/dist/esm/hooks/useStorage/useStorage.js +2 -2
  81. package/dist/esm/hooks/useTimeout/useTimeout.js +2 -2
  82. package/dist/esm/hooks/useTimeout/useTimeout.js.map +1 -1
  83. package/dist/esm/hooks/useToggle/useToggle.js +3 -0
  84. package/dist/esm/hooks/useToggle/useToggle.js.map +1 -0
  85. package/dist/esm/hooks/useUnmount/useUnmount.js +1 -1
  86. package/dist/esm/hooks/useWindowEvent/useWindowEvent.js +1 -1
  87. package/dist/esm/hooks/useWindowSize/useWindowSize.js +2 -2
  88. package/dist/esm/index.js +2 -2
  89. package/dist/esm/utils/helpers/debounce.js +1 -1
  90. package/dist/esm/utils/helpers/index.js +1 -1
  91. package/dist/esm/utils/helpers/isClient.js +1 -1
  92. package/dist/esm/utils/helpers/isShallowEqual.js +1 -1
  93. package/dist/index.d.ts +109 -12
  94. package/package.json +5 -5
  95. package/dist/cjs/_rollupPluginBabelHelpers-DKURZ6hh.js.map +0 -1
  96. package/dist/cjs/hooks/useToggle.js +0 -3
  97. package/dist/cjs/hooks/useToggle.js.map +0 -1
  98. package/dist/esm/_rollupPluginBabelHelpers-CVdsimvi.js.map +0 -1
  99. package/dist/esm/hooks/useToggle.js +0 -3
  100. package/dist/esm/hooks/useToggle.js.map +0 -1
package/dist/index.d.ts CHANGED
@@ -22,7 +22,7 @@ interface UseBatteryStateReturn {
22
22
  * @returns {UseBatteryStateReturn} Object containing battery information & Battery API support
23
23
  *
24
24
  * @example
25
- * const battery = useBattery();
25
+ * const { supported, loading, charging, chargingTime, dischargingTime, level } = useBattery();
26
26
  */
27
27
  declare const useBattery: () => UseBatteryStateReturn;
28
28
 
@@ -55,12 +55,12 @@ declare const useClickOutside: UseClickOutside;
55
55
 
56
56
  declare const legacyCopyToClipboard: (value: string) => void;
57
57
  /** The use copy to clipboard return type */
58
- type UseCopyToClipboardReturn = [
58
+ interface UseCopyToClipboardReturn {
59
59
  /** The copied value */
60
- value: string | null,
60
+ value: string | null;
61
61
  /** Function to copy to clipboard */
62
- copyToClipboard: (value: string) => Promise<void>
63
- ];
62
+ copy: (value: string) => Promise<void>;
63
+ }
64
64
  /**
65
65
  * @name useCopyToClipboard
66
66
  * @description - Hook that manages a copy to clipboard
@@ -68,7 +68,7 @@ type UseCopyToClipboardReturn = [
68
68
  * @returns {UseCopyToClipboardReturn} An object containing the boolean state value and utility functions to manipulate the state
69
69
  *
70
70
  * @example
71
- * const [copiedText, copyToClipboard] = useCopyToClipboard();
71
+ * const { value, copy } = useCopyToClipboard();
72
72
  */
73
73
  declare const useCopyToClipboard: () => UseCopyToClipboardReturn;
74
74
 
@@ -194,6 +194,10 @@ type UseEventListener = {
194
194
  */
195
195
  declare const useEventListener: UseEventListener;
196
196
 
197
+ interface UseHoverOptions {
198
+ onEntry?: () => void;
199
+ onLeave?: () => void;
200
+ }
197
201
  type UseHoverTarget = React.RefObject<Element | null> | Element;
198
202
  type UseHoverReturn<Target extends UseHoverTarget = any> = [
199
203
  React.RefObject<Target>,
@@ -201,14 +205,31 @@ type UseHoverReturn<Target extends UseHoverTarget = any> = [
201
205
  ];
202
206
  type UseHover = {
203
207
  <Target extends UseHoverTarget>(target: Target, callback?: () => void): boolean;
208
+ <Target extends UseHoverTarget>(target: Target, options?: UseHoverOptions): boolean;
204
209
  <Target extends UseHoverTarget>(callback?: () => void, target?: never): UseHoverReturn<Target>;
210
+ <Target extends UseHoverTarget>(options?: UseHoverOptions, target?: never): UseHoverReturn<Target>;
205
211
  };
206
212
  /**
207
213
  * @name useHover
208
- * @description - Hook that manages a counter with increment, decrement, reset, and set functionalities
214
+ * @description - Hook that defines the logic when hovering an element
209
215
  *
210
216
  * @example
211
- * const { count, dec, inc, reset, set } = useCounter(5);
217
+ * const hovering = useHover(ref, () => console.log('callback'));
218
+ *
219
+ * @example
220
+ * const [ref, hovering] = useHover(() => console.log('callback'));
221
+ *
222
+ * @example
223
+ * const [ref, hovering] = useHover({
224
+ * onEntry: () => console.log('onEntry'),
225
+ * onLeave: () => console.log('onLeave'),
226
+ * });
227
+ *
228
+ * @example
229
+ * const hovering = useHover(ref, {
230
+ * onEntry: () => console.log('onEntry'),
231
+ * onLeave: () => console.log('onLeave'),
232
+ * });
212
233
  */
213
234
  declare const useHover: UseHover;
214
235
 
@@ -326,10 +347,22 @@ declare const getConnection: () => Connection;
326
347
  * @returns {UseNetworkReturn} An object containing the network status.
327
348
  *
328
349
  * @example
329
- * const network = useNetwork();
350
+ * const { online, downlink, downlinkMax, effectiveType, rtt, saveData, type } = useNetwork();
330
351
  */
331
352
  declare const useNetwork: () => UseNetworkReturn;
332
353
 
354
+ /**
355
+ * @name useNonInitialEffect
356
+ * @description – Hook that behaves like useEffect, but skips the effect on the initial render
357
+ *
358
+ * @param {React.EffectCallback} effect The effect callback
359
+ * @param {React.DependencyList} [deps] The dependencies list for the effect
360
+ *
361
+ * @example
362
+ * useNonInitialEffect(() => {
363
+ * console.log('this effect doesn't run on the initial render');
364
+ * });
365
+ */
333
366
  declare const useNonInitialEffect: (effect: React.EffectCallback, deps?: React.DependencyList) => void;
334
367
 
335
368
  declare const useOnline: () => boolean;
@@ -352,10 +385,74 @@ declare const useRenderCount: () => number;
352
385
 
353
386
  declare const useSessionStorage: <Value>(key: string, initialValue?: UseStorageInitialValue<Value>, options?: UseStorageOptions<Value>) => readonly [Value | undefined, (value: Value) => void, () => void];
354
387
 
355
- declare function useTimeout(callback: () => void, delay: number): {
388
+ /** The use step params */
389
+ interface UseStepParams {
390
+ /** Initial value for step */
391
+ initial: number;
392
+ /** Maximum value for step */
393
+ max: number;
394
+ }
395
+ /** The use step return type */
396
+ interface UseStepReturn {
397
+ /** Counts of steps */
398
+ counts: number;
399
+ /** Current value of step */
400
+ currentStep: number;
401
+ /** Boolean value if current step is first */
402
+ isFirst: boolean;
403
+ /** Boolean value if current step is last */
404
+ isLast: boolean;
405
+ /** Go to next step */
406
+ next: () => void;
407
+ /** Go to back step */
408
+ back: () => void;
409
+ /** Reset current step to initial value */
410
+ reset: () => void;
411
+ /** Go to custom step */
412
+ set: (value: number | 'last' | 'first') => void;
413
+ }
414
+ /**
415
+ * @name useStep
416
+ * @description - Hook that create stepper
417
+ *
418
+ * @overload
419
+ * @param {number} max Maximum number of steps
420
+ * @returns {UseStepReturn} An object contains variables and functions to change the step
421
+ *
422
+ * @overload
423
+ * @param {number} params.max Maximum number of steps
424
+ * @param {number} params.initial Initial value for step
425
+ * @returns {UseStepReturn} An object contains variables and functions to change the step
426
+ *
427
+ * @example
428
+ * const step = useStep(5);
429
+ * @example
430
+ * const stepper = useStep({ initial: 2, max: 5 });
431
+ */
432
+ declare const useStep: (params: number | UseStepParams) => UseStepReturn;
433
+
434
+ /** The use timeout return type */
435
+ interface UseTimeoutReturn {
436
+ /** Timeout is ready state value */
356
437
  ready: boolean;
438
+ /** Function to clear timeout */
357
439
  clear: () => void;
358
- };
440
+ }
441
+ /**
442
+ * @name useTimeout
443
+ * @description Hook that executes a callback function after a specified delay.
444
+ *
445
+ * @param {() => void} callback The function to be executed after the timeout.
446
+ * @param {number} delay The delay in milliseconds before the timeout executes the callback function.
447
+ * @returns {UseTimeoutReturn} An object with a `ready` boolean state value and a `clear` function to clear timeout.
448
+ *
449
+ * @example
450
+ * const { clear, ready } = useTimeout(() => {}, 5000)
451
+ */
452
+ declare function useTimeout(callback: () => void, delay: number): UseTimeoutReturn;
453
+
454
+ type UseToggleReturn<Value> = readonly [Value, (value?: Value) => void];
455
+ declare const useToggle: <Value = boolean>(values?: readonly Value[]) => readonly [Value, (value?: Value) => void];
359
456
 
360
457
  /**
361
458
  * @name useUnmount
@@ -414,4 +511,4 @@ declare const useWindowSize: (params?: UseWindowSizeParams) => {
414
511
  height: number;
415
512
  };
416
513
 
417
- export { type ConnectionEffectiveType, type ConnectionType, type UseClickOutside, type UseClickOutsideReturn, type UseCounter, type UseCounterOptions, type UseCounterParams, type UseCounterReturn, type UseDocumentTitleOptions, type UseDocumentTitleReturn, type UseEventListener, type UseEventListenerOptions, type UseEventListenerReturn, type UseEventListenerTarget, type UseHover, type UseHoverReturn, type UseHoverTarget, type UseKeyPressEvent, type UseKeyPressEventKey, type UseKeyPressKey, type UseKeyPressOptions, type UseNetworkReturn, type UseStorageInitialValue, type UseStorageOptions, type UseStorageReturn, type UseWindowSizeReturn, dispatchStorageEvent, getConnection, legacyCopyToClipboard, useBattery, useBoolean, useClickOutside, useCopyToClipboard, useCounter, useDebouncedValue, useDocumentTitle, useDocumentVisibility, useEventListener, useHover, useIsomorphicLayoutEffect, useKeyPress, useKeyPressEvent, useKeysPressed, useLocalStorage, useMount, useNetwork, useNonInitialEffect, useOnline, useOrientation, useRenderCount, useSessionStorage, useStorage, useTimeout, useUnmount, useWindowEvent, useWindowSize };
514
+ export { type ConnectionEffectiveType, type ConnectionType, type UseClickOutside, type UseClickOutsideReturn, type UseCounter, type UseCounterOptions, type UseCounterParams, type UseCounterReturn, type UseDocumentTitleOptions, type UseDocumentTitleReturn, type UseEventListener, type UseEventListenerOptions, type UseEventListenerReturn, type UseEventListenerTarget, type UseHover, type UseHoverOptions, type UseHoverReturn, type UseHoverTarget, type UseKeyPressEvent, type UseKeyPressEventKey, type UseKeyPressKey, type UseKeyPressOptions, type UseNetworkReturn, type UseStorageInitialValue, type UseStorageOptions, type UseStorageReturn, type UseToggleReturn, type UseWindowSizeReturn, dispatchStorageEvent, getConnection, legacyCopyToClipboard, useBattery, useBoolean, useClickOutside, useCopyToClipboard, useCounter, useDebouncedValue, useDocumentTitle, useDocumentVisibility, useEventListener, useHover, useIsomorphicLayoutEffect, useKeyPress, useKeyPressEvent, useKeysPressed, useLocalStorage, useMount, useNetwork, useNonInitialEffect, useOnline, useOrientation, useRenderCount, useSessionStorage, useStep, useStorage, useTimeout, useToggle, useUnmount, useWindowEvent, useWindowSize };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@siberiacancode/reactuse",
3
- "version": "0.0.4",
3
+ "version": "0.0.7",
4
4
  "description": "Ultimate tool",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -38,7 +38,7 @@
38
38
  "type": "tsc --noEmit",
39
39
  "pretty": "yarn type && yarn format && yarn lint",
40
40
  "prepare": "husky install",
41
- "unit-test": "jest",
41
+ "unit-test": "vitest",
42
42
  "docs:dev": "vitepress dev docs",
43
43
  "docs:build": "vitepress build docs",
44
44
  "docs:preview": "vitepress preview docs"
@@ -62,12 +62,10 @@
62
62
  "devDependencies": {
63
63
  "@siberiacancode/builder": "^1.3.0",
64
64
  "@siberiacancode/eslint": "^1.1.0",
65
- "@siberiacancode/jest": "^1.0.2",
66
65
  "@siberiacancode/prettier": "^1.1.0",
67
66
  "@testing-library/jest-dom": "^6.4.5",
68
67
  "@testing-library/react": "^15.0.7",
69
68
  "@types/doctrine": "^0.0.9",
70
- "@types/jest": "^29.5.12",
71
69
  "@types/node": "^20.11.19",
72
70
  "@types/react": "^18.3.2",
73
71
  "@types/react-dom": "^18.3.0",
@@ -75,6 +73,7 @@
75
73
  "doctrine": "^3.0.0",
76
74
  "eslint": "^8.56.0",
77
75
  "husky": "^9.0.11",
76
+ "jsdom": "^24.1.0",
78
77
  "lint-staged": "^15.2.2",
79
78
  "markdown-table": "^3.0.3",
80
79
  "react": "^18.2.0",
@@ -82,7 +81,8 @@
82
81
  "shx": "^0.3.4",
83
82
  "typescript": "^5.3.3",
84
83
  "vite": "^5.1.3",
85
- "vitepress": "^1.1.4"
84
+ "vitepress": "^1.1.4",
85
+ "vitest": "^1.6.0"
86
86
  },
87
87
  "keywords": [
88
88
  "react",
@@ -1 +0,0 @@
1
- {"version":3,"file":"_rollupPluginBabelHelpers-DKURZ6hh.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,3 +0,0 @@
1
- /* @license @siberiacancode/reactuse v0.0.3 */
2
- "use strict";var e=require("../_rollupPluginBabelHelpers-DKURZ6hh.js"),r=require("react");exports.useToggle=function(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[!1,!0],n=r.useReducer((function(e,r){var i=r instanceof Function?r(e[0]):r,n=Math.abs(e.indexOf(i));return e.slice(n).concat(e.slice(0,n))}),i),c=e._slicedToArray(n,2);return[e._slicedToArray(c[0],1)[0],c[1]]};
3
- //# sourceMappingURL=useToggle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useToggle.js","sources":["../../../src/hooks/useToggle.ts"],"sourcesContent":["import React from 'react';\n\nexport type UseToggleReturn<Value> = readonly [Value, (value?: Value) => void];\n\nexport const useToggle = <Value = boolean>(values: readonly Value[] = [false, true] as any) => {\n const [[option], toggle] = React.useReducer(\n (state: Value[], action: React.SetStateAction<Value>) => {\n const value = action instanceof Function ? action(state[0]) : action;\n const index = Math.abs(state.indexOf(value));\n return state.slice(index).concat(state.slice(0, index));\n },\n values as Value[]\n );\n\n return [option, toggle as (value?: Value) => void] as const;\n};\n"],"names":["values","arguments","length","undefined","_React$useReducer","React","useReducer","state","action","value","Function","index","Math","abs","indexOf","slice","concat","_React$useReducer2","_slicedToArray"],"mappings":";4GAIyB,WAAsE,IAApDA,EAAwBC,UAAAC,eAAAC,IAAAF,UAAA,GAAAA,UAAG,GAAA,EAAC,GAAO,GAC5EG,EAA2BC,EAAMC,YAC/B,SAACC,EAAgBC,GACf,IAAMC,EAAQD,aAAkBE,SAAWF,EAAOD,EAAM,IAAMC,EACxDG,EAAQC,KAAKC,IAAIN,EAAMO,QAAQL,IACrC,OAAOF,EAAMQ,MAAMJ,GAAOK,OAAOT,EAAMQ,MAAM,EAAGJ,GACjD,GACDX,GACDiB,EAAAC,EAAAA,eAAAd,EAAA,GAED,MAAO,CAFNc,EAAAA,eAAAD,EAAA,GAAA,GAPa,GAASA,EAAA,GAUzB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"_rollupPluginBabelHelpers-CVdsimvi.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
@@ -1,3 +0,0 @@
1
- /* @license @siberiacancode/reactuse v0.0.3 */
2
- import{_ as r}from"../_rollupPluginBabelHelpers-CVdsimvi.js";import e from"react";var n=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[!1,!0],t=e.useReducer((function(r,e){var n=e instanceof Function?e(r[0]):e,t=Math.abs(r.indexOf(n));return r.slice(t).concat(r.slice(0,t))}),n),o=r(t,2);return[r(o[0],1)[0],o[1]]};export{n as useToggle};
3
- //# sourceMappingURL=useToggle.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useToggle.js","sources":["../../../src/hooks/useToggle.ts"],"sourcesContent":["import React from 'react';\n\nexport type UseToggleReturn<Value> = readonly [Value, (value?: Value) => void];\n\nexport const useToggle = <Value = boolean>(values: readonly Value[] = [false, true] as any) => {\n const [[option], toggle] = React.useReducer(\n (state: Value[], action: React.SetStateAction<Value>) => {\n const value = action instanceof Function ? action(state[0]) : action;\n const index = Math.abs(state.indexOf(value));\n return state.slice(index).concat(state.slice(0, index));\n },\n values as Value[]\n );\n\n return [option, toggle as (value?: Value) => void] as const;\n};\n"],"names":["useToggle","values","arguments","length","undefined","_React$useReducer","React","useReducer","state","action","value","Function","index","Math","abs","indexOf","slice","concat","_React$useReducer2","_slicedToArray"],"mappings":";sFAIaA,EAAY,WAAsE,IAApDC,EAAwBC,UAAAC,eAAAC,IAAAF,UAAA,GAAAA,UAAG,GAAA,EAAC,GAAO,GAC5EG,EAA2BC,EAAMC,YAC/B,SAACC,EAAgBC,GACf,IAAMC,EAAQD,aAAkBE,SAAWF,EAAOD,EAAM,IAAMC,EACxDG,EAAQC,KAAKC,IAAIN,EAAMO,QAAQL,IACrC,OAAOF,EAAMQ,MAAMJ,GAAOK,OAAOT,EAAMQ,MAAM,EAAGJ,GACjD,GACDX,GACDiB,EAAAC,EAAAd,EAAA,GAED,MAAO,CAFNc,EAAAD,EAAA,GAAA,GAPa,GAASA,EAAA,GAUzB"}