@grantpearceuk/hooks 0.1.0

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 (134) hide show
  1. package/README.md +403 -0
  2. package/lib/cjs/global.d.d.ts +7 -0
  3. package/lib/cjs/global.d.js +2 -0
  4. package/lib/cjs/index.d.ts +32 -0
  5. package/lib/cjs/index.js +69 -0
  6. package/lib/cjs/useArray/index.d.ts +2 -0
  7. package/lib/cjs/useArray/index.js +43 -0
  8. package/lib/cjs/useAsync/index.d.ts +2 -0
  9. package/lib/cjs/useAsync/index.js +29 -0
  10. package/lib/cjs/useClickOutside/index.d.ts +5 -0
  11. package/lib/cjs/useClickOutside/index.js +14 -0
  12. package/lib/cjs/useCookie/index.d.ts +2 -0
  13. package/lib/cjs/useCookie/index.js +26 -0
  14. package/lib/cjs/useCopyToClipboard/index.d.ts +2 -0
  15. package/lib/cjs/useCopyToClipboard/index.js +20 -0
  16. package/lib/cjs/useDarkMode/index.d.ts +4 -0
  17. package/lib/cjs/useDarkMode/index.js +18 -0
  18. package/lib/cjs/useDebounce/index.d.ts +2 -0
  19. package/lib/cjs/useDebounce/index.js +22 -0
  20. package/lib/cjs/useDebugInformation/index.d.ts +8 -0
  21. package/lib/cjs/useDebugInformation/index.js +44 -0
  22. package/lib/cjs/useDeepCompareEffect/index.d.ts +2 -0
  23. package/lib/cjs/useDeepCompareEffect/index.js +16 -0
  24. package/lib/cjs/useEffectOnce/index.d.ts +1 -0
  25. package/lib/cjs/useEffectOnce/index.js +7 -0
  26. package/lib/cjs/useEventListener/index.d.ts +2 -0
  27. package/lib/cjs/useEventListener/index.js +18 -0
  28. package/lib/cjs/useFetch/index.d.ts +2 -0
  29. package/lib/cjs/useFetch/index.js +82 -0
  30. package/lib/cjs/useGenerateHtmlId/index.d.ts +3 -0
  31. package/lib/cjs/useGenerateHtmlId/index.js +9 -0
  32. package/lib/cjs/useGeolocation/index.d.ts +2 -0
  33. package/lib/cjs/useGeolocation/index.js +26 -0
  34. package/lib/cjs/useHover/index.d.ts +2 -0
  35. package/lib/cjs/useHover/index.js +17 -0
  36. package/lib/cjs/useLongPress/index.d.ts +4 -0
  37. package/lib/cjs/useLongPress/index.js +19 -0
  38. package/lib/cjs/useMediaQuery/index.d.ts +1 -0
  39. package/lib/cjs/useMediaQuery/index.js +22 -0
  40. package/lib/cjs/useOnScreen/index.d.ts +2 -0
  41. package/lib/cjs/useOnScreen/index.js +23 -0
  42. package/lib/cjs/useOnlineStatus/index.d.ts +1 -0
  43. package/lib/cjs/useOnlineStatus/index.js +14 -0
  44. package/lib/cjs/usePagination/index.d.ts +9 -0
  45. package/lib/cjs/usePagination/index.js +22 -0
  46. package/lib/cjs/usePrevious/index.d.ts +2 -0
  47. package/lib/cjs/usePrevious/index.js +13 -0
  48. package/lib/cjs/useRenderCount/index.d.ts +1 -0
  49. package/lib/cjs/useRenderCount/index.js +11 -0
  50. package/lib/cjs/useScript/index.d.ts +2 -0
  51. package/lib/cjs/useScript/index.js +19 -0
  52. package/lib/cjs/useSize/index.d.ts +3 -0
  53. package/lib/cjs/useSize/index.js +18 -0
  54. package/lib/cjs/useStateWithHistory/index.d.ts +4 -0
  55. package/lib/cjs/useStateWithHistory/index.js +53 -0
  56. package/lib/cjs/useStateWithValidation/index.d.ts +2 -0
  57. package/lib/cjs/useStateWithValidation/index.js +14 -0
  58. package/lib/cjs/useStorage/index.d.ts +5 -0
  59. package/lib/cjs/useStorage/index.js +33 -0
  60. package/lib/cjs/useTimeout/index.d.ts +2 -0
  61. package/lib/cjs/useTimeout/index.js +26 -0
  62. package/lib/cjs/useToggle/index.d.ts +2 -0
  63. package/lib/cjs/useToggle/index.js +12 -0
  64. package/lib/cjs/useUpdateEffect/index.d.ts +2 -0
  65. package/lib/cjs/useUpdateEffect/index.js +14 -0
  66. package/lib/cjs/useWindowSize/index.d.ts +2 -0
  67. package/lib/cjs/useWindowSize/index.js +18 -0
  68. package/lib/esm/global.d.d.ts +7 -0
  69. package/lib/esm/global.d.js +1 -0
  70. package/lib/esm/index.d.ts +32 -0
  71. package/lib/esm/index.js +32 -0
  72. package/lib/esm/useArray/index.d.ts +2 -0
  73. package/lib/esm/useArray/index.js +40 -0
  74. package/lib/esm/useAsync/index.d.ts +2 -0
  75. package/lib/esm/useAsync/index.js +26 -0
  76. package/lib/esm/useClickOutside/index.d.ts +5 -0
  77. package/lib/esm/useClickOutside/index.js +8 -0
  78. package/lib/esm/useCookie/index.d.ts +2 -0
  79. package/lib/esm/useCookie/index.js +20 -0
  80. package/lib/esm/useCopyToClipboard/index.d.ts +2 -0
  81. package/lib/esm/useCopyToClipboard/index.js +14 -0
  82. package/lib/esm/useDarkMode/index.d.ts +4 -0
  83. package/lib/esm/useDarkMode/index.js +12 -0
  84. package/lib/esm/useDebounce/index.d.ts +2 -0
  85. package/lib/esm/useDebounce/index.js +16 -0
  86. package/lib/esm/useDebugInformation/index.d.ts +8 -0
  87. package/lib/esm/useDebugInformation/index.js +38 -0
  88. package/lib/esm/useDeepCompareEffect/index.d.ts +2 -0
  89. package/lib/esm/useDeepCompareEffect/index.js +10 -0
  90. package/lib/esm/useEffectOnce/index.d.ts +1 -0
  91. package/lib/esm/useEffectOnce/index.js +4 -0
  92. package/lib/esm/useEventListener/index.d.ts +2 -0
  93. package/lib/esm/useEventListener/index.js +15 -0
  94. package/lib/esm/useFetch/index.d.ts +2 -0
  95. package/lib/esm/useFetch/index.js +76 -0
  96. package/lib/esm/useGenerateHtmlId/index.d.ts +3 -0
  97. package/lib/esm/useGenerateHtmlId/index.js +7 -0
  98. package/lib/esm/useGeolocation/index.d.ts +2 -0
  99. package/lib/esm/useGeolocation/index.js +23 -0
  100. package/lib/esm/useHover/index.d.ts +2 -0
  101. package/lib/esm/useHover/index.js +11 -0
  102. package/lib/esm/useLongPress/index.d.ts +4 -0
  103. package/lib/esm/useLongPress/index.js +13 -0
  104. package/lib/esm/useMediaQuery/index.d.ts +1 -0
  105. package/lib/esm/useMediaQuery/index.js +16 -0
  106. package/lib/esm/useOnScreen/index.d.ts +2 -0
  107. package/lib/esm/useOnScreen/index.js +20 -0
  108. package/lib/esm/useOnlineStatus/index.d.ts +1 -0
  109. package/lib/esm/useOnlineStatus/index.js +8 -0
  110. package/lib/esm/usePagination/index.d.ts +9 -0
  111. package/lib/esm/usePagination/index.js +19 -0
  112. package/lib/esm/usePrevious/index.d.ts +2 -0
  113. package/lib/esm/usePrevious/index.js +10 -0
  114. package/lib/esm/useRenderCount/index.d.ts +1 -0
  115. package/lib/esm/useRenderCount/index.js +8 -0
  116. package/lib/esm/useScript/index.d.ts +2 -0
  117. package/lib/esm/useScript/index.js +13 -0
  118. package/lib/esm/useSize/index.d.ts +3 -0
  119. package/lib/esm/useSize/index.js +15 -0
  120. package/lib/esm/useStateWithHistory/index.d.ts +4 -0
  121. package/lib/esm/useStateWithHistory/index.js +50 -0
  122. package/lib/esm/useStateWithValidation/index.d.ts +2 -0
  123. package/lib/esm/useStateWithValidation/index.js +11 -0
  124. package/lib/esm/useStorage/index.d.ts +5 -0
  125. package/lib/esm/useStorage/index.js +28 -0
  126. package/lib/esm/useTimeout/index.d.ts +2 -0
  127. package/lib/esm/useTimeout/index.js +23 -0
  128. package/lib/esm/useToggle/index.d.ts +2 -0
  129. package/lib/esm/useToggle/index.js +9 -0
  130. package/lib/esm/useUpdateEffect/index.d.ts +2 -0
  131. package/lib/esm/useUpdateEffect/index.js +11 -0
  132. package/lib/esm/useWindowSize/index.d.ts +2 -0
  133. package/lib/esm/useWindowSize/index.js +12 -0
  134. package/package.json +49 -0
package/README.md ADDED
@@ -0,0 +1,403 @@
1
+ # Custom React Hooks
2
+
3
+ View hooks in action (Examples)
4
+
5
+ ## useToggle
6
+
7
+ Easily toggle between a boolean
8
+
9
+ ```tsx
10
+
11
+ const [value, toggleValue] = useToggle(false)
12
+
13
+ <Button onClick={() => toggleValue()}>
14
+ Toggle
15
+ </Button>
16
+ <Button onClick={() => toggleValue(true)}>
17
+ Make True
18
+ </Button>
19
+ <Button onClick={() => toggleValue(false)}>
20
+ Make False
21
+ </Button>
22
+
23
+ ```
24
+
25
+ ---
26
+
27
+ ## useTimeout
28
+
29
+ Run a timeout without re-rendering issues. Useful for use in other hooks
30
+
31
+ ```tsx
32
+
33
+ const [count, setCount] = useState(10)
34
+ const { clear, reset } = useTimeout(() => setCount(0), 1000)
35
+
36
+ <Button onClick={() => setCount((c) => c + 1)}>
37
+ Increment
38
+ </Button>
39
+ <Button onClick={clear}>
40
+ Clear Timeout
41
+ </Button>
42
+ <Button onClick={reset}>
43
+ Reset Timeout
44
+ </Button>
45
+
46
+ ```
47
+
48
+ ---
49
+
50
+ ## useDebounce
51
+
52
+ Run something after a certain delay. Does not run on the first time
53
+
54
+ ```tsx
55
+
56
+ const [count, setCount] = useState(10)
57
+ useDebounce(() => alert(count), 1000, [count])
58
+
59
+ <Button onClick={() => setCount((c) => c + 1)}>
60
+ Increment
61
+ </Button>
62
+ ```
63
+
64
+ ---
65
+
66
+ ## useUpdateEffect
67
+
68
+ Only run when something changes. Does not run on the first time
69
+
70
+ ```tsx
71
+
72
+ const [count, setCount] = useState(10)
73
+ useUpdateEffect(() => alert(count), [count])
74
+
75
+ <Button onClick={() => setCount((c) => c + 1)}>
76
+ Increment
77
+ </Button>
78
+
79
+ ```
80
+
81
+ ---
82
+
83
+ ## useArray
84
+
85
+ Easily use arrays.
86
+
87
+ ```tsx
88
+
89
+ const { array, set, push, remove, filter, update, clear } = useArray([1, 2, 3, 4, 5, 6])
90
+
91
+ <Button onClick={() => push(7)}>
92
+ Add 7
93
+ </Button>
94
+ <Button onClick={() => update(1, 9)}>
95
+ Change 2nd To 9
96
+ </Button>
97
+ <Button onClick={() => remove(1)}>
98
+ Remove 2nd
99
+ </Button>
100
+ <Button onClick={() => filter((n) => n < 3)}>
101
+ Keep below 4
102
+ </Button>
103
+ <Button onClick={() => set([1, 2])}>
104
+ Set To 1, 2
105
+ </Button>
106
+ <Button onClick={clear}>
107
+ Clear
108
+ </Button>
109
+
110
+ ```
111
+
112
+ ---
113
+
114
+ ## usePrevious
115
+
116
+ Store previous value of a state
117
+
118
+ ```tsx
119
+
120
+ const [count, setCount] = useState(0)
121
+ const [name, setName] = useState("Grant")
122
+ const previousCount = usePrevious(count)
123
+
124
+ <Button onClick={() => setCount((currentCount) => currentCount + 1)}>
125
+ Increment
126
+ </Button>
127
+ <Button onClick={() => setName("John")}>
128
+ Change Name
129
+ </Button>
130
+
131
+ ```
132
+
133
+ ---
134
+
135
+ ## useStateWithHistory
136
+
137
+ Stores the history of a state
138
+
139
+ ```tsx
140
+
141
+ const [count, setCount, { history, pointer, back, forward, go }] = useStateWithHistory(1)
142
+ const [name, setName] = useState("Grant")
143
+
144
+ <Button onClick={() => setCount((currentCount) => currentCount * 2)}>
145
+ Double
146
+ </Button>
147
+ <Button onClick={() => setCount((currentCount) => currentCount + 1)}>
148
+ Increment
149
+ </Button>
150
+ <Button onClick={back}>
151
+ Back
152
+ </Button>
153
+ <Button onClick={forward}>
154
+ Forward
155
+ </Button>
156
+ <Button onClick={() => go(2)}>
157
+ Go To Index 2
158
+ </Button>
159
+ <Button onClick={() => setName("John")}>
160
+ Change Name
161
+ </Button>
162
+
163
+
164
+ ```
165
+
166
+ ---
167
+
168
+ ## useStorage
169
+
170
+ Easily use Local or Session Storage
171
+
172
+ ```tsx
173
+
174
+ const [name, setName, removeName] = useSessionStorage("name", "Grant")
175
+ const [age, setAge, removeAge] = useLocalStorage("age", 26)
176
+
177
+ <Button onClick={() => setName("John")}>
178
+ Set Name
179
+ </Button>
180
+ <Button onClick={() => setAge(40)}>
181
+ Set Age
182
+ </Button>
183
+ <Button onClick={removeName}>
184
+ Remove Name
185
+ </Button>
186
+ <Button onClick={removeAge}>
187
+ Remove Age
188
+ </Button>
189
+
190
+ ```
191
+
192
+ ---
193
+
194
+ ## useAsync
195
+
196
+ Easily call an asynchronous function
197
+
198
+ ```tsx
199
+
200
+ const { loading, error, value } = useAsync(() => {
201
+ return new Promise((resolve, reject) => {
202
+ const success = true
203
+ setTimeout(() => {
204
+ success ? resolve("Hi") : reject("Error")
205
+ }, 1000)
206
+ })
207
+ })
208
+
209
+ ```
210
+
211
+ ---
212
+
213
+ ## useFetch
214
+
215
+ Easily call and handle a fetch request
216
+
217
+ ```tsx
218
+
219
+ const [id, setId] = useState(1)
220
+ const { loading, error, value } = useFetch(`https://jsonplaceholder.typicode.com/todos/${id}`, {}, [id])
221
+
222
+ Error: {JSON.stringify(error, null, 2)}
223
+ Results: {JSON.stringify(value, null, 2)}
224
+
225
+ <Button onClick={() => setId((currentId) => currentId + 1)}>
226
+ Increment ID
227
+ <Button>
228
+
229
+
230
+
231
+ ```
232
+
233
+ ---
234
+
235
+ ## useClickOutside
236
+
237
+ Run a function when a click is outside the element
238
+
239
+ ```tsx
240
+
241
+ const [open, setOpen] = useState(false)
242
+ const modalRef = useRef()
243
+
244
+ useClickOutside(modalRef, () => {
245
+ if (open) setOpen(false)
246
+ })
247
+ <div ref={modalRef} />
248
+
249
+ ```
250
+
251
+ ---
252
+
253
+ ## useCookie
254
+
255
+ Easily use cookies
256
+
257
+ ```tsx
258
+
259
+ const [value, update, remove] = useCookie("name", "John")
260
+
261
+ ```
262
+
263
+ ---
264
+
265
+ ## useCopyToClipboard
266
+
267
+ Copy to the clipboard
268
+
269
+ ```tsx
270
+
271
+ const [copyToClipboard, { success }] = useCopyToClipboard()
272
+
273
+ ```
274
+
275
+ ---
276
+
277
+ ## useDarkMode
278
+
279
+ Find if the Dark mode is set. Sets in local storage
280
+
281
+ ```tsx
282
+
283
+ const [darkMode, setDarkMode] = useDarkMode()
284
+
285
+ ```
286
+
287
+ ---
288
+
289
+ ## useDeepCompareEffect
290
+
291
+ Compare values within an object
292
+
293
+ ---
294
+
295
+ ## useEffectOnce
296
+
297
+ Only run once
298
+
299
+ ```tsx
300
+
301
+ useEffectOnce(() => alert("Use Effect Once"))
302
+
303
+ ```
304
+
305
+ ---
306
+
307
+ ## useEventListener
308
+
309
+ Listen for events
310
+
311
+ ```tsx
312
+
313
+ const [key, setKey] = useState("")
314
+ useEventListener("keydown", (e: KeyboardEvent) => {
315
+ setKey(e.key)
316
+ })
317
+
318
+ ```
319
+
320
+ ---
321
+
322
+ ## useGeolocation
323
+
324
+ Get the Geolocation Data
325
+
326
+ ```tsx
327
+
328
+ const { loading, error, data: { latitude, longitude } } = useGeolocation()
329
+
330
+ ```
331
+
332
+ ---
333
+
334
+ ## useMediaQuery
335
+
336
+ Check what media query is valid
337
+
338
+ ```tsx
339
+
340
+ const isLarge = useMediaQuery("(min-width: 200px)")
341
+
342
+ ```
343
+ ---
344
+
345
+ ## useOnScreen
346
+
347
+ Check if an element if on the screen
348
+
349
+ ```tsx
350
+
351
+ const secondRef = useRef()
352
+ const visible = useOnScreen(secondRef, "-100px")
353
+
354
+ <div ref={secondRef} />
355
+
356
+ ```
357
+
358
+ ---
359
+
360
+ ## useScript
361
+
362
+ Easily load a script asynchronous
363
+
364
+ ```tsx
365
+
366
+ const { loading, error } = useScript("https://code.jquery.com/jquery-3.6.0.min.js")
367
+
368
+ ```
369
+
370
+ ---
371
+
372
+ ## useSize
373
+
374
+ Find the size dynamically
375
+
376
+ ---
377
+
378
+ ## useStateWithValidation
379
+
380
+ Easily validate a state
381
+
382
+ ```tsx
383
+
384
+ const ref = useRef()
385
+ const size = useSize(ref)
386
+
387
+ <textarea ref={ref}></textarea>
388
+
389
+ ```
390
+
391
+ ---
392
+
393
+ ## useWindowSize
394
+
395
+ Check the size of the window
396
+
397
+ ```tsx
398
+
399
+ const { width, height } = useWindowSize()
400
+
401
+ ```
402
+
403
+ ---
@@ -0,0 +1,7 @@
1
+ declare global {
2
+ var $: any;
3
+ interface Window {
4
+ clipboardData?: any;
5
+ }
6
+ }
7
+ export {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,32 @@
1
+ import useArray from "./useArray";
2
+ import useAsync from "./useAsync";
3
+ import useClickOutside from "./useClickOutside";
4
+ import useCookie from "./useCookie";
5
+ import useCopyToClipboard from "./useCopyToClipboard";
6
+ import useDarkMode from "./useDarkMode";
7
+ import useDebounce from "./useDebounce";
8
+ import useDebugInformation from "./useDebugInformation";
9
+ import useDeepCompareEffect from "./useDeepCompareEffect";
10
+ import useEffectOnce from "./useEffectOnce";
11
+ import useEventListener from "./useEventListener";
12
+ import useFetch from "./useFetch";
13
+ import useGenerateHtmlId from "./useGenerateHtmlId";
14
+ import useGeolocation from "./useGeolocation";
15
+ import useHover from "./useHover";
16
+ import useLongPress from "./useLongPress";
17
+ import useMediaQuery from "./useMediaQuery";
18
+ import useOnlineStatus from "./useOnlineStatus";
19
+ import useOnScreen from "./useOnScreen";
20
+ import usePagination from "./usePagination";
21
+ import usePrevious from "./usePrevious";
22
+ import useRenderCount from "./useRenderCount";
23
+ import useScript from "./useScript";
24
+ import useSize from "./useSize";
25
+ import useStateWithHistory from "./useStateWithHistory";
26
+ import useStateWithValidation from "./useStateWithValidation";
27
+ import { useLocalStorage, useSessionStorage } from "./useStorage";
28
+ import useTimeout from "./useTimeout";
29
+ import useToggle from "./useToggle";
30
+ import useUpdateEffect from "./useUpdateEffect";
31
+ import useWindowSize from "./useWindowSize";
32
+ export { useArray, useAsync, useClickOutside, useCookie, useCopyToClipboard, useDarkMode, useDebounce, useDebugInformation, useDeepCompareEffect, useEffectOnce, useEventListener, useFetch, useGenerateHtmlId, useGeolocation, useHover, useLongPress, useMediaQuery, useOnlineStatus, useOnScreen, usePagination, usePrevious, useRenderCount, useScript, useSize, useStateWithHistory, useStateWithValidation, useLocalStorage, useSessionStorage, useTimeout, useToggle, useUpdateEffect, useWindowSize, };
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.useWindowSize = exports.useUpdateEffect = exports.useToggle = exports.useTimeout = exports.useSessionStorage = exports.useLocalStorage = exports.useStateWithValidation = exports.useStateWithHistory = exports.useSize = exports.useScript = exports.useRenderCount = exports.usePrevious = exports.usePagination = exports.useOnScreen = exports.useOnlineStatus = exports.useMediaQuery = exports.useLongPress = exports.useHover = exports.useGeolocation = exports.useGenerateHtmlId = exports.useFetch = exports.useEventListener = exports.useEffectOnce = exports.useDeepCompareEffect = exports.useDebugInformation = exports.useDebounce = exports.useDarkMode = exports.useCopyToClipboard = exports.useCookie = exports.useClickOutside = exports.useAsync = exports.useArray = void 0;
7
+ var useArray_1 = __importDefault(require("./useArray"));
8
+ exports.useArray = useArray_1.default;
9
+ var useAsync_1 = __importDefault(require("./useAsync"));
10
+ exports.useAsync = useAsync_1.default;
11
+ var useClickOutside_1 = __importDefault(require("./useClickOutside"));
12
+ exports.useClickOutside = useClickOutside_1.default;
13
+ var useCookie_1 = __importDefault(require("./useCookie"));
14
+ exports.useCookie = useCookie_1.default;
15
+ var useCopyToClipboard_1 = __importDefault(require("./useCopyToClipboard"));
16
+ exports.useCopyToClipboard = useCopyToClipboard_1.default;
17
+ var useDarkMode_1 = __importDefault(require("./useDarkMode"));
18
+ exports.useDarkMode = useDarkMode_1.default;
19
+ var useDebounce_1 = __importDefault(require("./useDebounce"));
20
+ exports.useDebounce = useDebounce_1.default;
21
+ var useDebugInformation_1 = __importDefault(require("./useDebugInformation"));
22
+ exports.useDebugInformation = useDebugInformation_1.default;
23
+ var useDeepCompareEffect_1 = __importDefault(require("./useDeepCompareEffect"));
24
+ exports.useDeepCompareEffect = useDeepCompareEffect_1.default;
25
+ var useEffectOnce_1 = __importDefault(require("./useEffectOnce"));
26
+ exports.useEffectOnce = useEffectOnce_1.default;
27
+ var useEventListener_1 = __importDefault(require("./useEventListener"));
28
+ exports.useEventListener = useEventListener_1.default;
29
+ var useFetch_1 = __importDefault(require("./useFetch"));
30
+ exports.useFetch = useFetch_1.default;
31
+ var useGenerateHtmlId_1 = __importDefault(require("./useGenerateHtmlId"));
32
+ exports.useGenerateHtmlId = useGenerateHtmlId_1.default;
33
+ var useGeolocation_1 = __importDefault(require("./useGeolocation"));
34
+ exports.useGeolocation = useGeolocation_1.default;
35
+ var useHover_1 = __importDefault(require("./useHover"));
36
+ exports.useHover = useHover_1.default;
37
+ var useLongPress_1 = __importDefault(require("./useLongPress"));
38
+ exports.useLongPress = useLongPress_1.default;
39
+ var useMediaQuery_1 = __importDefault(require("./useMediaQuery"));
40
+ exports.useMediaQuery = useMediaQuery_1.default;
41
+ var useOnlineStatus_1 = __importDefault(require("./useOnlineStatus"));
42
+ exports.useOnlineStatus = useOnlineStatus_1.default;
43
+ var useOnScreen_1 = __importDefault(require("./useOnScreen"));
44
+ exports.useOnScreen = useOnScreen_1.default;
45
+ var usePagination_1 = __importDefault(require("./usePagination"));
46
+ exports.usePagination = usePagination_1.default;
47
+ var usePrevious_1 = __importDefault(require("./usePrevious"));
48
+ exports.usePrevious = usePrevious_1.default;
49
+ var useRenderCount_1 = __importDefault(require("./useRenderCount"));
50
+ exports.useRenderCount = useRenderCount_1.default;
51
+ var useScript_1 = __importDefault(require("./useScript"));
52
+ exports.useScript = useScript_1.default;
53
+ var useSize_1 = __importDefault(require("./useSize"));
54
+ exports.useSize = useSize_1.default;
55
+ var useStateWithHistory_1 = __importDefault(require("./useStateWithHistory"));
56
+ exports.useStateWithHistory = useStateWithHistory_1.default;
57
+ var useStateWithValidation_1 = __importDefault(require("./useStateWithValidation"));
58
+ exports.useStateWithValidation = useStateWithValidation_1.default;
59
+ var useStorage_1 = require("./useStorage");
60
+ Object.defineProperty(exports, "useLocalStorage", { enumerable: true, get: function () { return useStorage_1.useLocalStorage; } });
61
+ Object.defineProperty(exports, "useSessionStorage", { enumerable: true, get: function () { return useStorage_1.useSessionStorage; } });
62
+ var useTimeout_1 = __importDefault(require("./useTimeout"));
63
+ exports.useTimeout = useTimeout_1.default;
64
+ var useToggle_1 = __importDefault(require("./useToggle"));
65
+ exports.useToggle = useToggle_1.default;
66
+ var useUpdateEffect_1 = __importDefault(require("./useUpdateEffect"));
67
+ exports.useUpdateEffect = useUpdateEffect_1.default;
68
+ var useWindowSize_1 = __importDefault(require("./useWindowSize"));
69
+ exports.useWindowSize = useWindowSize_1.default;
@@ -0,0 +1,2 @@
1
+ import { ArrayResponse, Items } from "./types";
2
+ export default function useArray(defaultValue: [...Items]): ArrayResponse;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
3
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
4
+ if (ar || !(i in from)) {
5
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
6
+ ar[i] = from[i];
7
+ }
8
+ }
9
+ return to.concat(ar || Array.prototype.slice.call(from));
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ var react_1 = require("react");
13
+ function useArray(defaultValue) {
14
+ var _a = (0, react_1.useState)(defaultValue), array = _a[0], setArray = _a[1];
15
+ var push = function (element) {
16
+ setArray(function (a) { return __spreadArray(__spreadArray([], a, true), [element], false); });
17
+ };
18
+ var filter = function (callback) {
19
+ setArray(function (a) { return a.filter(callback); });
20
+ };
21
+ var update = function (index, newElement) {
22
+ setArray(function (a) { return __spreadArray(__spreadArray(__spreadArray([], a.slice(0, index), true), [newElement], false), a.slice(index + 1), true); });
23
+ };
24
+ var remove = function (index) {
25
+ if (index > -1) {
26
+ array.splice(index, 1);
27
+ setArray(array);
28
+ }
29
+ };
30
+ var clear = function () {
31
+ setArray([]);
32
+ };
33
+ return {
34
+ array: array,
35
+ set: setArray,
36
+ push: push,
37
+ filter: filter,
38
+ update: update,
39
+ remove: remove,
40
+ clear: clear,
41
+ };
42
+ }
43
+ exports.default = useArray;
@@ -0,0 +1,2 @@
1
+ import { AsyncResponse, Callback } from "./types";
2
+ export default function useAsync(callback: Callback, dependencies?: never[]): AsyncResponse;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var react_1 = require("react");
4
+ function useAsync(callback, dependencies) {
5
+ if (dependencies === void 0) { dependencies = []; }
6
+ var _a = (0, react_1.useState)(true), loading = _a[0], setLoading = _a[1];
7
+ var _b = (0, react_1.useState)(), error = _b[0], setError = _b[1];
8
+ var _c = (0, react_1.useState)(), value = _c[0], setValue = _c[1];
9
+ var callbackMemoized = (0, react_1.useCallback)(function () {
10
+ setLoading(true);
11
+ setError(undefined);
12
+ setValue(undefined);
13
+ callback()
14
+ .then(function (response) {
15
+ setValue(response);
16
+ })
17
+ .catch(setError)
18
+ .finally(function () { return setLoading(false); });
19
+ }, dependencies);
20
+ (0, react_1.useEffect)(function () {
21
+ callbackMemoized();
22
+ }, [callbackMemoized]);
23
+ return {
24
+ loading: loading,
25
+ error: error,
26
+ value: value,
27
+ };
28
+ }
29
+ exports.default = useAsync;
@@ -0,0 +1,5 @@
1
+ import { MutableRefObject } from "react";
2
+ export default function useClickOutside(ref: MutableRefObject<undefined | HTMLElement>, cb: {
3
+ (): void;
4
+ (arg0: UIEvent | Event): void;
5
+ }): void;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var useEventListener_1 = __importDefault(require("../useEventListener"));
7
+ function useClickOutside(ref, cb) {
8
+ (0, useEventListener_1.default)("click", function (e) {
9
+ if (ref.current == null || (typeof ref.current !== "undefined" && ref.current.contains(e.target)))
10
+ return;
11
+ cb(e);
12
+ }, document);
13
+ }
14
+ exports.default = useClickOutside;
@@ -0,0 +1,2 @@
1
+ import { CookieResponse, CookieValue } from "./types";
2
+ export default function useCookie(name: string, defaultValue: CookieValue): CookieResponse;
@@ -0,0 +1,26 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var react_1 = require("react");
7
+ var js_cookie_1 = __importDefault(require("js-cookie"));
8
+ function useCookie(name, defaultValue) {
9
+ var _a = (0, react_1.useState)(function () {
10
+ var cookie = js_cookie_1.default.get(name);
11
+ if (cookie)
12
+ return cookie;
13
+ js_cookie_1.default.set(name, defaultValue);
14
+ return defaultValue;
15
+ }), value = _a[0], setValue = _a[1];
16
+ var updateCookie = (0, react_1.useCallback)(function (newValue, options) {
17
+ js_cookie_1.default.set(name, newValue, options);
18
+ setValue(newValue);
19
+ }, [name]);
20
+ var deleteCookie = (0, react_1.useCallback)(function () {
21
+ js_cookie_1.default.remove(name);
22
+ setValue("");
23
+ }, [name]);
24
+ return [value, updateCookie, deleteCookie];
25
+ }
26
+ exports.default = useCookie;
@@ -0,0 +1,2 @@
1
+ import { ClipboardResponse } from "./types";
2
+ export default function useCopyToClipboard(): ClipboardResponse;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ var react_1 = require("react");
7
+ var copy_to_clipboard_1 = __importDefault(require("copy-to-clipboard"));
8
+ function useCopyToClipboard() {
9
+ var _a = (0, react_1.useState)(), value = _a[0], setValue = _a[1];
10
+ var _b = (0, react_1.useState)(), success = _b[0], setSuccess = _b[1];
11
+ var copyToClipboard = function (text, options) {
12
+ if (options === void 0) { options = {}; }
13
+ var result = (0, copy_to_clipboard_1.default)(text, options);
14
+ if (result)
15
+ setValue(text);
16
+ setSuccess(result);
17
+ };
18
+ return [copyToClipboard, { value: value, success: success }];
19
+ }
20
+ exports.default = useCopyToClipboard;
@@ -0,0 +1,4 @@
1
+ import { Dispatch } from "react";
2
+ declare type DarkMode = [enabled: boolean, setDarkMode: Dispatch<unknown>];
3
+ export default function useDarkMode(): DarkMode;
4
+ export {};