react-kanca 1.0.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.
@@ -0,0 +1,574 @@
1
+ import { useState, useEffect, useRef, cloneElement, useCallback, useLayoutEffect } from 'react';
2
+ import Cookies from 'js-cookie';
3
+
4
+ var usePageVisible = function usePageVisible() {
5
+ var _useState = useState(true),
6
+ isVisible = _useState[0],
7
+ setIsVisible = _useState[1];
8
+ var handleVisibilityChange = function handleVisibilityChange() {
9
+ setIsVisible(document.visibilityState === 'visible');
10
+ };
11
+ useEffect(function () {
12
+ document.addEventListener('visibilitychange', handleVisibilityChange);
13
+ return function () {
14
+ document.removeEventListener('visibilitychange', handleVisibilityChange);
15
+ };
16
+ }, []);
17
+ return isVisible;
18
+ };
19
+
20
+ var useWindowSize = function useWindowSize() {
21
+ var _useState = useState({
22
+ width: '',
23
+ height: ''
24
+ }),
25
+ size = _useState[0],
26
+ setSize = _useState[1];
27
+ useEffect(function () {
28
+ var handleResize = function handleResize() {
29
+ setSize({
30
+ width: window.innerWidth,
31
+ height: window.innerHeight
32
+ });
33
+ };
34
+ window.addEventListener('resize', handleResize);
35
+ handleResize();
36
+ return function () {
37
+ window.removeEventListener('resize', handleResize);
38
+ };
39
+ }, []);
40
+ return size;
41
+ };
42
+
43
+ var useDebounce = function useDebounce(value, delay) {
44
+ var _useState = useState(''),
45
+ debounce = _useState[0],
46
+ setDebounce = _useState[1];
47
+ useEffect(function () {
48
+ var handler = setTimeout(function () {
49
+ setDebounce(value);
50
+ }, delay);
51
+ return function () {
52
+ clearTimeout(handler);
53
+ };
54
+ }, [value, delay]);
55
+ return debounce;
56
+ };
57
+
58
+ var usePrevious = function usePrevious(value) {
59
+ var ref = useRef();
60
+ useEffect(function () {
61
+ ref.current = value;
62
+ });
63
+ return ref.current;
64
+ };
65
+
66
+ var noop = function noop() {};
67
+ function on(obj) {
68
+ if (obj && obj.addEventListener) {
69
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
70
+ args[_key - 1] = arguments[_key];
71
+ }
72
+ obj.addEventListener.apply(obj, args);
73
+ }
74
+ }
75
+ function off(obj) {
76
+ if (obj && obj.removeEventListener) {
77
+ for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
78
+ args[_key2 - 1] = arguments[_key2];
79
+ }
80
+ obj.removeEventListener.apply(obj, args);
81
+ }
82
+ }
83
+ var isBrowser = typeof window !== 'undefined';
84
+
85
+ var useHover = function useHover(element) {
86
+ var _useState = useState(false),
87
+ state = _useState[0],
88
+ setState = _useState[1];
89
+ var onMouseEnter = function onMouseEnter(originalOnMouseEnter) {
90
+ return function (event) {
91
+ setState(true);
92
+ };
93
+ };
94
+ var onMouseLeave = function onMouseLeave(originalOnMouseLeave) {
95
+ return function (event) {
96
+ setState(false);
97
+ };
98
+ };
99
+ if (typeof element === 'function') {
100
+ element = element(state);
101
+ }
102
+ var el = cloneElement(element, {
103
+ onMouseEnter: onMouseEnter(),
104
+ onMouseLeave: onMouseLeave()
105
+ });
106
+ return [el, state];
107
+ };
108
+
109
+ var useScrolling = function useScrolling(ref) {
110
+ var _useState = useState(false),
111
+ scrolling = _useState[0],
112
+ setScrolling = _useState[1];
113
+ useEffect(function () {
114
+ if (ref.current) {
115
+ var scrollingTimeout;
116
+ var handleScrollEnd = function handleScrollEnd() {
117
+ setScrolling(false);
118
+ };
119
+ var handleScroll = function handleScroll() {
120
+ setScrolling(true);
121
+ clearTimeout(scrollingTimeout);
122
+ scrollingTimeout = setTimeout(function () {
123
+ return handleScrollEnd();
124
+ }, 150);
125
+ };
126
+ on(ref.current, 'scroll', handleScroll, false);
127
+ return function () {
128
+ if (ref.current) {
129
+ off(ref.current, 'scroll', handleScroll, false);
130
+ }
131
+ };
132
+ }
133
+ return function () {};
134
+ }, [ref]);
135
+ return scrolling;
136
+ };
137
+
138
+ var useBeforeUnload = function useBeforeUnload(enabled, message) {
139
+ if (enabled === void 0) {
140
+ enabled = true;
141
+ }
142
+ var handler = useCallback(function (event) {
143
+ var finalEnabled = typeof enabled === 'function' ? enabled() : true;
144
+ if (!finalEnabled) {
145
+ return;
146
+ }
147
+ event.preventDefault();
148
+ if (message) {
149
+ event.returnValue = message;
150
+ }
151
+ return message;
152
+ }, [enabled, message]);
153
+ useEffect(function () {
154
+ if (!enabled) {
155
+ return;
156
+ }
157
+ on(window, 'beforeunload', handler);
158
+ return function () {
159
+ return off(window, 'beforeunload', handler);
160
+ };
161
+ }, [enabled, handler]);
162
+ };
163
+
164
+ var useEffectOnce = function useEffectOnce(effect) {
165
+ useEffect(effect, []);
166
+ };
167
+ var useUnmount = function useUnmount(fn) {
168
+ var fnRef = useRef(fn);
169
+ fnRef.current = fn;
170
+ useEffectOnce(function () {
171
+ return function () {
172
+ return fnRef.current();
173
+ };
174
+ });
175
+ };
176
+ var useThrottle = function useThrottle(value, ms) {
177
+ if (ms === void 0) {
178
+ ms = 200;
179
+ }
180
+ var _useState = useState(value),
181
+ state = _useState[0],
182
+ setState = _useState[1];
183
+ var timeout = useRef();
184
+ var nextValue = useRef(null);
185
+ var hasNextValue = useRef(0);
186
+ useEffect(function () {
187
+ if (!timeout.current) {
188
+ setState(value);
189
+ var timeoutCallback = function timeoutCallback() {
190
+ if (hasNextValue.current) {
191
+ hasNextValue.current = false;
192
+ setState(nextValue.current);
193
+ timeout.current = setTimeout(timeoutCallback, ms);
194
+ } else {
195
+ timeout.current = undefined;
196
+ }
197
+ };
198
+ timeout.current = setTimeout(timeoutCallback, ms);
199
+ } else {
200
+ nextValue.current = value;
201
+ hasNextValue.current = true;
202
+ }
203
+ }, [value]);
204
+ useUnmount(function () {
205
+ timeout.current && clearTimeout(timeout.current);
206
+ });
207
+ return state;
208
+ };
209
+
210
+ var useLocalStorage = function useLocalStorage(key, initialValue, options) {
211
+ if (!isBrowser) {
212
+ return [initialValue, noop, noop];
213
+ }
214
+ if (!key) {
215
+ throw new Error('useLocalStorage key may not be falsy');
216
+ }
217
+ var deserializer = options ? options.raw ? function (value) {
218
+ return value;
219
+ } : options.deserializer : JSON.parse;
220
+ var initializer = useRef(function (key) {
221
+ try {
222
+ var serializer = options ? options.raw ? String : options.serializer : JSON.stringify;
223
+ var localStorageValue = localStorage.getItem(key);
224
+ if (localStorageValue !== null) {
225
+ return deserializer(localStorageValue);
226
+ } else {
227
+ initialValue && localStorage.setItem(key, serializer(initialValue));
228
+ return initialValue;
229
+ }
230
+ } catch (_unused) {
231
+ return initialValue;
232
+ }
233
+ });
234
+ var _useState = useState(function () {
235
+ return initializer.current(key);
236
+ }),
237
+ state = _useState[0],
238
+ setState = _useState[1];
239
+ useLayoutEffect(function () {
240
+ return setState(initializer.current(key));
241
+ }, [key]);
242
+ var set = useCallback(function (valOrFunc) {
243
+ try {
244
+ var newState = typeof valOrFunc === 'function' ? valOrFunc(state) : valOrFunc;
245
+ if (typeof newState === 'undefined') return;
246
+ var value;
247
+ if (options) {
248
+ if (options.raw) {
249
+ if (typeof newState === 'string') value = newState;else value = JSON.stringify(newState);
250
+ } else if (options.serializer) value = options.serializer(newState);else value = JSON.stringify(newState);
251
+ } else value = JSON.stringify(newState);
252
+ localStorage.setItem(key, value);
253
+ setState(deserializer(value));
254
+ } catch (_unused2) {}
255
+ }, [key, setState]);
256
+ var remove = useCallback(function () {
257
+ try {
258
+ localStorage.removeItem(key);
259
+ setState(undefined);
260
+ } catch (_unused3) {}
261
+ }, [key, setState]);
262
+ return [state, set, remove];
263
+ };
264
+
265
+ var useEqualObject = function useEqualObject(obj1, obj2) {
266
+ if (obj1 === obj2) return true;
267
+ if (typeof obj1 !== 'object' || typeof obj2 !== 'object' || obj1 === null || obj2 === null) return false;
268
+ var keys1 = Object.keys(obj1);
269
+ var keys2 = Object.keys(obj2);
270
+ if (keys1.length !== keys2.length) return false;
271
+ for (var _i = 0, _keys = keys1; _i < _keys.length; _i++) {
272
+ var key = _keys[_i];
273
+ if (!keys2.includes(key) || !useEqualObject(obj1[key], obj2[key])) return false;
274
+ }
275
+ return true;
276
+ };
277
+
278
+ var useCookie = function useCookie(cookieName) {
279
+ var _useState = useState(function () {
280
+ return Cookies.get(cookieName) || null;
281
+ }),
282
+ value = _useState[0],
283
+ setValue = _useState[1];
284
+ var updateCookie = useCallback(function (newValue, options) {
285
+ Cookies.set(cookieName, newValue, options);
286
+ setValue(newValue);
287
+ }, [cookieName]);
288
+ var deleteCookie = useCallback(function () {
289
+ Cookies.remove(cookieName);
290
+ setValue(null);
291
+ }, [cookieName]);
292
+ return [value, updateCookie, deleteCookie];
293
+ };
294
+
295
+ function _extends() {
296
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
297
+ for (var i = 1; i < arguments.length; i++) {
298
+ var source = arguments[i];
299
+ for (var key in source) {
300
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
301
+ target[key] = source[key];
302
+ }
303
+ }
304
+ }
305
+ return target;
306
+ };
307
+ return _extends.apply(this, arguments);
308
+ }
309
+
310
+ var useGeolocation = function useGeolocation(options) {
311
+ var _useState = useState({
312
+ loading: true,
313
+ accuracy: null,
314
+ altitude: null,
315
+ altitudeAccuracy: null,
316
+ heading: null,
317
+ latitude: null,
318
+ longitude: null,
319
+ speed: null,
320
+ timestamp: Date.now()
321
+ }),
322
+ state = _useState[0],
323
+ setState = _useState[1];
324
+ var mounted = true;
325
+ var watchId;
326
+ var onEvent = function onEvent(event) {
327
+ if (mounted) {
328
+ setState({
329
+ loading: false,
330
+ accuracy: event.coords.accuracy,
331
+ altitude: event.coords.altitude,
332
+ altitudeAccuracy: event.coords.altitudeAccuracy,
333
+ heading: event.coords.heading,
334
+ latitude: event.coords.latitude,
335
+ longitude: event.coords.longitude,
336
+ speed: event.coords.speed,
337
+ timestamp: event.timestamp
338
+ });
339
+ }
340
+ };
341
+ var onEventError = function onEventError(error) {
342
+ return mounted && setState(function (oldState) {
343
+ return _extends({}, oldState, {
344
+ loading: false,
345
+ error: error
346
+ });
347
+ });
348
+ };
349
+ useEffect(function () {
350
+ navigator.geolocation.getCurrentPosition(onEvent, onEventError, options);
351
+ watchId = navigator.geolocation.watchPosition(onEvent, onEventError, options);
352
+ return function () {
353
+ mounted = false;
354
+ navigator.geolocation.clearWatch(watchId);
355
+ };
356
+ }, []);
357
+ return state;
358
+ };
359
+
360
+ var useIsFirstRender = function useIsFirstRender() {
361
+ var isFirstRender = useRef(true);
362
+ useEffect(function () {
363
+ isFirstRender.current = false;
364
+ }, []);
365
+ return isFirstRender.current;
366
+ };
367
+
368
+ var useConnection = function useConnection() {
369
+ var _useState = useState(true),
370
+ status = _useState[0],
371
+ setStatus = _useState[1];
372
+ useEffect(function () {
373
+ var events = ['online', 'offline'];
374
+ var eventHandle = function eventHandle() {
375
+ return setStatus(navigator.online);
376
+ };
377
+ events.forEach(function (event) {
378
+ return window.addEventListener(event, eventHandle);
379
+ });
380
+ return function () {
381
+ events.forEach(function (event) {
382
+ return window.removeEventListener(event, eventHandle);
383
+ });
384
+ };
385
+ }, []);
386
+ return {
387
+ status: status
388
+ };
389
+ };
390
+
391
+ // A type of promise-like that resolves synchronously and supports only one observer
392
+
393
+ const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== "undefined" ? (Symbol.iterator || (Symbol.iterator = Symbol("Symbol.iterator"))) : "@@iterator";
394
+
395
+ const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== "undefined" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol("Symbol.asyncIterator"))) : "@@asyncIterator";
396
+
397
+ // Asynchronously call a function and send errors to recovery continuation
398
+ function _catch(body, recover) {
399
+ try {
400
+ var result = body();
401
+ } catch(e) {
402
+ return recover(e);
403
+ }
404
+ if (result && result.then) {
405
+ return result.then(void 0, recover);
406
+ }
407
+ return result;
408
+ }
409
+
410
+ var useBatteryInfo = function useBatteryInfo() {
411
+ var _useState = useState(null),
412
+ batteryLevel = _useState[0],
413
+ setBatteryLevel = _useState[1];
414
+ var _useState2 = useState(null),
415
+ isCharging = _useState2[0],
416
+ setIsCharging = _useState2[1];
417
+ var _useState3 = useState(null),
418
+ chargingTime = _useState3[0],
419
+ setChargingTime = _useState3[1];
420
+ var _useState4 = useState(null),
421
+ dischargingTime = _useState4[0],
422
+ setDischargingTime = _useState4[1];
423
+ useEffect(function () {
424
+ var getBatteryInfo = function getBatteryInfo() {
425
+ try {
426
+ return Promise.resolve(_catch(function () {
427
+ return Promise.resolve(navigator.getBattery()).then(function (battery) {
428
+ var updateBatteryInfo = function updateBatteryInfo() {
429
+ setBatteryLevel(Math.round(battery.level * 100));
430
+ setIsCharging(battery.charging);
431
+ setChargingTime(battery.chargingTime);
432
+ setDischargingTime(battery.dischargingTime);
433
+ };
434
+ updateBatteryInfo();
435
+ battery.addEventListener('chargingchange', updateBatteryInfo);
436
+ battery.addEventListener('levelchange', updateBatteryInfo);
437
+ battery.addEventListener('chargingtimechange', updateBatteryInfo);
438
+ battery.addEventListener('dischargingtimechange', updateBatteryInfo);
439
+ return function () {
440
+ battery.removeEventListener('chargingchange', updateBatteryInfo);
441
+ battery.removeEventListener('levelchange', updateBatteryInfo);
442
+ battery.removeEventListener('chargingtimechange', updateBatteryInfo);
443
+ battery.removeEventListener('dischargingtimechange', updateBatteryInfo);
444
+ };
445
+ });
446
+ }, function (error) {
447
+ console.error('Batarya bilgisi alınamadı: ' + error.message);
448
+ }));
449
+ } catch (e) {
450
+ return Promise.reject(e);
451
+ }
452
+ };
453
+ getBatteryInfo();
454
+ return function () {};
455
+ }, []);
456
+ return {
457
+ batteryLevel: batteryLevel,
458
+ isCharging: isCharging,
459
+ chargingTime: chargingTime,
460
+ dischargingTime: dischargingTime
461
+ };
462
+ };
463
+
464
+ var useCopyToClipboard = function useCopyToClipboard() {
465
+ var _useState = useState(false),
466
+ copied = _useState[0],
467
+ setCopied = _useState[1];
468
+ var _useState2 = useState(false),
469
+ error = _useState2[0],
470
+ setError = _useState2[1];
471
+ var copyToClipboard = function copyToClipboard(text) {
472
+ navigator.clipboard.writeText(text).then(function () {
473
+ setCopied(true);
474
+ })["catch"](function (err) {
475
+ setError(err);
476
+ });
477
+ };
478
+ return {
479
+ copied: copied,
480
+ error: error,
481
+ copyToClipboard: copyToClipboard
482
+ };
483
+ };
484
+
485
+ var useMedia = function useMedia(width) {
486
+ if (width === void 0) {
487
+ width = 1024;
488
+ }
489
+ var _useState = useState(window.matchMedia("(max-width: " + width + "px)").matches),
490
+ screenStatus = _useState[0],
491
+ setScreenStatus = _useState[1];
492
+ useEffect(function () {
493
+ var matchMedia = window.matchMedia("(max-width: " + width + "px)");
494
+ var onChangeHandle = function onChangeHandle(e) {
495
+ console.log(e.matches);
496
+ setScreenStatus(e.matches);
497
+ };
498
+ matchMedia.addEventListener('change', onChangeHandle);
499
+ });
500
+ return screenStatus;
501
+ };
502
+
503
+ var useClickOutside = function useClickOutside(ref, callback) {
504
+ var handleClick = function handleClick(e) {
505
+ if (ref.current && !ref.current.contains(e.target)) {
506
+ callback();
507
+ }
508
+ };
509
+ useEffect(function () {
510
+ document.addEventListener('click', handleClick);
511
+ return function () {
512
+ document.removeEventListener('click', handleClick);
513
+ };
514
+ });
515
+ };
516
+
517
+ var useColorScheme = function useColorScheme() {
518
+ var _useState = useState(getInitialColorScheme()),
519
+ colorScheme = _useState[0],
520
+ setColorScheme = _useState[1];
521
+ useEffect(function () {
522
+ var mediaQuery = window.matchMedia('(prefers-color-scheme: dark)');
523
+ var listener = function listener(e) {
524
+ setColorScheme(e.matches ? 'dark' : 'light');
525
+ };
526
+ mediaQuery.addEventListener('change', listener);
527
+ return function () {
528
+ mediaQuery.removeEventListener('change', listener);
529
+ };
530
+ }, []);
531
+ function getInitialColorScheme() {
532
+ var isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;
533
+ return isDarkMode ? 'dark' : 'light';
534
+ }
535
+ return colorScheme;
536
+ };
537
+
538
+ var useFullScreen = function useFullScreen() {
539
+ var _useState = useState(false),
540
+ isFullScreen = _useState[0],
541
+ setIsFullScreen = _useState[1];
542
+ var enterFullScreen = function enterFullScreen() {
543
+ if (document.documentElement.requestFullscreen) {
544
+ document.documentElement.requestFullscreen();
545
+ } else if (document.documentElement.mozRequestFullScreen) {
546
+ document.documentElement.mozRequestFullScreen();
547
+ } else if (document.documentElement.webkitRequestFullscreen) {
548
+ document.documentElement.webkitRequestFullscreen();
549
+ } else if (document.documentElement.msRequestFullscreen) {
550
+ document.documentElement.msRequestFullscreen();
551
+ }
552
+ setIsFullScreen(true);
553
+ };
554
+ var exitFullScreen = function exitFullScreen() {
555
+ if (document.exitFullscreen) {
556
+ document.exitFullscreen();
557
+ } else if (document.mozCancelFullScreen) {
558
+ document.mozCancelFullScreen();
559
+ } else if (document.webkitExitFullscreen) {
560
+ document.webkitExitFullscreen();
561
+ } else if (document.msExitFullscreen) {
562
+ document.msExitFullscreen();
563
+ }
564
+ setIsFullScreen(false);
565
+ };
566
+ return {
567
+ isFullScreen: isFullScreen,
568
+ enterFullScreen: enterFullScreen,
569
+ exitFullScreen: exitFullScreen
570
+ };
571
+ };
572
+
573
+ export { useBatteryInfo, useBeforeUnload, useClickOutside, useColorScheme, useConnection, useCookie, useCopyToClipboard, useDebounce, useEqualObject, useFullScreen, useGeolocation, useHover, useIsFirstRender, useLocalStorage, useMedia, usePageVisible, usePrevious, useScrolling, useThrottle, useWindowSize };
574
+ //# sourceMappingURL=index.modern.js.map