@grantpearceuk/hooks 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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 {};