react-kanca 1.1.0 → 1.3.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.
@@ -40,19 +40,23 @@ var useWindowSize = function useWindowSize() {
40
40
  return size;
41
41
  };
42
42
 
43
- var useDebounce = function useDebounce(value, delay) {
44
- var _useState = useState(''),
45
- debounce = _useState[0],
46
- setDebounce = _useState[1];
47
- useEffect(function () {
43
+ var useDebounce = function useDebounce() {
44
+ var _useState = useState(null),
45
+ debouncedValue = _useState[0],
46
+ setDebouncedValue = _useState[1];
47
+ var debounce = function debounce(value, delay) {
48
48
  var handler = setTimeout(function () {
49
- setDebounce(value);
49
+ if (typeof value === 'function') {
50
+ value();
51
+ } else {
52
+ setDebouncedValue(value);
53
+ }
50
54
  }, delay);
51
55
  return function () {
52
56
  clearTimeout(handler);
53
57
  };
54
- }, [value, delay]);
55
- return debounce;
58
+ };
59
+ return [debouncedValue, debounce];
56
60
  };
57
61
 
58
62
  var usePrevious = function usePrevious(value) {
@@ -186,16 +190,16 @@ var useThrottle = function useThrottle(value, ms) {
186
190
  useEffect(function () {
187
191
  if (!timeout.current) {
188
192
  setState(value);
189
- var timeoutCallback = function timeoutCallback() {
193
+ var _timeoutCallback = function timeoutCallback() {
190
194
  if (hasNextValue.current) {
191
195
  hasNextValue.current = false;
192
196
  setState(nextValue.current);
193
- timeout.current = setTimeout(timeoutCallback, ms);
197
+ timeout.current = setTimeout(_timeoutCallback, ms);
194
198
  } else {
195
199
  timeout.current = undefined;
196
200
  }
197
201
  };
198
- timeout.current = setTimeout(timeoutCallback, ms);
202
+ timeout.current = setTimeout(_timeoutCallback, ms);
199
203
  } else {
200
204
  nextValue.current = value;
201
205
  hasNextValue.current = true;
@@ -262,7 +266,7 @@ var useLocalStorage = function useLocalStorage(key, initialValue, options) {
262
266
  return [state, set, remove];
263
267
  };
264
268
 
265
- var useEqualObject = function useEqualObject(obj1, obj2) {
269
+ var _useEqualObject = function useEqualObject(obj1, obj2) {
266
270
  if (obj1 === obj2) return true;
267
271
  if (typeof obj1 !== 'object' || typeof obj2 !== 'object' || obj1 === null || obj2 === null) return false;
268
272
  var keys1 = Object.keys(obj1);
@@ -270,7 +274,7 @@ var useEqualObject = function useEqualObject(obj1, obj2) {
270
274
  if (keys1.length !== keys2.length) return false;
271
275
  for (var _i = 0, _keys = keys1; _i < _keys.length; _i++) {
272
276
  var key = _keys[_i];
273
- if (!keys2.includes(key) || !useEqualObject(obj1[key], obj2[key])) return false;
277
+ if (!keys2.includes(key) || !_useEqualObject(obj1[key], obj2[key])) return false;
274
278
  }
275
279
  return true;
276
280
  };
@@ -293,18 +297,13 @@ var useCookie = function useCookie(cookieName) {
293
297
  };
294
298
 
295
299
  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
- }
300
+ return _extends = Object.assign ? Object.assign.bind() : function (n) {
301
+ for (var e = 1; e < arguments.length; e++) {
302
+ var t = arguments[e];
303
+ for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
304
304
  }
305
- return target;
306
- };
307
- return _extends.apply(this, arguments);
305
+ return n;
306
+ }, _extends.apply(null, arguments);
308
307
  }
309
308
 
310
309
  var useGeolocation = function useGeolocation(options) {
@@ -593,5 +592,261 @@ var useSessionStorage = function useSessionStorage(key, initialValue) {
593
592
  return [storedValue, setValue];
594
593
  };
595
594
 
596
- export { useBatteryInfo, useBeforeUnload, useClickOutside, useColorScheme, useConnection, useCookie, useCopyToClipboard, useDebounce, useEqualObject, useFullScreen, useGeolocation, useHover, useIsFirstRender, useLocalStorage, useMedia, usePageVisible, usePrevious, useScrolling, useSessionStorage, useThrottle, useWindowSize };
595
+ var useScrollLock = function useScrollLock(lock) {
596
+ useEffect(function () {
597
+ if (lock) {
598
+ document.body.style.overflow = 'hidden';
599
+ } else {
600
+ document.body.style.overflow = 'unset';
601
+ }
602
+ return function () {
603
+ document.body.style.overflow = 'unset';
604
+ };
605
+ }, [lock]);
606
+ };
607
+
608
+ var usePreferredLanguage = function usePreferredLanguage() {
609
+ var _useState = useState(''),
610
+ preferredLanguage = _useState[0],
611
+ setPreferredLanguage = _useState[1];
612
+ useEffect(function () {
613
+ var language = navigator.language || navigator.userLanguage;
614
+ setPreferredLanguage(language);
615
+ }, []);
616
+ return preferredLanguage;
617
+ };
618
+
619
+ function useMousePageLeave(onPageLeave) {
620
+ useEffect(function () {
621
+ document.documentElement.addEventListener('mouseleave', onPageLeave);
622
+ return function () {
623
+ return document.documentElement.removeEventListener('mouseleave', onPageLeave);
624
+ };
625
+ }, []);
626
+ }
627
+
628
+ var usePageLeave = function usePageLeave(onLeave) {
629
+ useEffect(function () {
630
+ var handleBeforeUnload = function handleBeforeUnload(event) {
631
+ var returnValue = onLeave();
632
+ if (returnValue) {
633
+ event.preventDefault();
634
+ event.returnValue = returnValue;
635
+ return returnValue;
636
+ }
637
+ };
638
+ window.addEventListener('beforeunload', handleBeforeUnload);
639
+ return function () {
640
+ window.removeEventListener('beforeunload', handleBeforeUnload);
641
+ };
642
+ }, [onLeave]);
643
+ };
644
+
645
+ var useForceUpdate = function useForceUpdate() {
646
+ var _useState = useState(0),
647
+ setTick = _useState[1];
648
+ var update = useCallback(function () {
649
+ setTick(function (tick) {
650
+ return tick + 1;
651
+ });
652
+ }, []);
653
+ return update;
654
+ };
655
+
656
+ var useInterval = function useInterval(callback, delay) {
657
+ var savedCallback = useRef(function () {});
658
+ useEffect(function () {
659
+ savedCallback.current = callback;
660
+ });
661
+ useEffect(function () {
662
+ if (delay !== null) {
663
+ var interval = setInterval(function () {
664
+ return savedCallback.current();
665
+ }, delay || 0);
666
+ return function () {
667
+ return clearInterval(interval);
668
+ };
669
+ }
670
+ return undefined;
671
+ }, [delay]);
672
+ };
673
+
674
+ var useIntersectionObserver = function useIntersectionObserver(targetRef, options) {
675
+ var _useState = useState(false),
676
+ isIntersecting = _useState[0],
677
+ setIsIntersecting = _useState[1];
678
+ useEffect(function () {
679
+ var observer = new IntersectionObserver(function (_ref) {
680
+ var entry = _ref[0];
681
+ setIsIntersecting(entry.isIntersecting);
682
+ }, options);
683
+ if (targetRef.current) {
684
+ observer.observe(targetRef.current);
685
+ }
686
+ return function () {
687
+ if (targetRef.current) {
688
+ observer.unobserve(targetRef.current);
689
+ }
690
+ };
691
+ }, [targetRef, options]);
692
+ return isIntersecting;
693
+ };
694
+
695
+ var useMobileLandscape = function useMobileLandscape() {
696
+ var _useState = useState(false),
697
+ isLandscape = _useState[0],
698
+ setIsLandscape = _useState[1];
699
+ var _useState2 = useState(false),
700
+ isMobile = _useState2[0],
701
+ setIsMobile = _useState2[1];
702
+ var _useState3 = useState(false),
703
+ isMobileLandscape = _useState3[0],
704
+ setIsMobileLandscape = _useState3[1];
705
+ var handleResize = function handleResize() {
706
+ var landscape = window.innerWidth > window.innerHeight;
707
+ var mobile = window.innerWidth <= 996;
708
+ setIsLandscape(landscape);
709
+ setIsMobile(mobile);
710
+ setIsMobileLandscape(landscape && mobile);
711
+ };
712
+ useEffect(function () {
713
+ handleResize();
714
+ window.addEventListener('resize', handleResize);
715
+ return function () {
716
+ window.removeEventListener('resize', handleResize);
717
+ };
718
+ }, []);
719
+ return {
720
+ isMobileLandscape: isMobileLandscape,
721
+ isLandscape: isLandscape,
722
+ isMobile: isMobile
723
+ };
724
+ };
725
+
726
+ var useOnlineStatus = function useOnlineStatus() {
727
+ var _useState = useState(navigator.onLine),
728
+ isOnline = _useState[0],
729
+ setIsOnline = _useState[1];
730
+ useEffect(function () {
731
+ var handleOnline = function handleOnline() {
732
+ return setIsOnline(true);
733
+ };
734
+ var handleOffline = function handleOffline() {
735
+ return setIsOnline(false);
736
+ };
737
+ window.addEventListener('online', handleOnline);
738
+ window.addEventListener('offline', handleOffline);
739
+ return function () {
740
+ window.removeEventListener('online', handleOnline);
741
+ window.removeEventListener('offline', handleOffline);
742
+ };
743
+ }, []);
744
+ return isOnline;
745
+ };
746
+
747
+ var useScrollToElement = function useScrollToElement() {
748
+ var scrollToElement = useCallback(function (selectorOrRef, options) {
749
+ if (options === void 0) {
750
+ options = {};
751
+ }
752
+ var element;
753
+ if (typeof selectorOrRef === 'string') {
754
+ element = document.querySelector(selectorOrRef);
755
+ } else if (selectorOrRef.current) {
756
+ element = selectorOrRef.current;
757
+ }
758
+ if (element) {
759
+ element.scrollIntoView(_extends({
760
+ behavior: 'smooth'
761
+ }, options));
762
+ }
763
+ }, []);
764
+ return scrollToElement;
765
+ };
766
+
767
+ var useStateValidator = function useStateValidator(state, validator, initialState) {
768
+ if (initialState === void 0) {
769
+ initialState = [undefined];
770
+ }
771
+ var validatorInner = useRef(validator);
772
+ var stateInner = useRef(state);
773
+ validatorInner.current = validator;
774
+ stateInner.current = state;
775
+ var _useState = useState(initialState),
776
+ validity = _useState[0],
777
+ setValidity = _useState[1];
778
+ var validate = useCallback(function () {
779
+ if (validatorInner.current.length >= 2) {
780
+ validatorInner.current(stateInner.current, setValidity);
781
+ } else {
782
+ setValidity(validatorInner.current(stateInner.current));
783
+ }
784
+ }, [setValidity]);
785
+ useEffect(function () {
786
+ validate();
787
+ }, [state]);
788
+ return [validity, validate];
789
+ };
790
+
791
+ var useMultiStateValidator = function useMultiStateValidator(states, validator, initialValidity) {
792
+ if (initialValidity === void 0) {
793
+ initialValidity = [undefined];
794
+ }
795
+ if (typeof states !== 'object') {
796
+ throw new Error("state'in bir nesne ya da dizi olması beklenirken -> " + typeof states);
797
+ }
798
+ var validatorInner = useRef(validator);
799
+ var statesInner = useRef(states);
800
+ validatorInner.current = validator;
801
+ statesInner.current = states;
802
+ var _useState = useState(initialValidity),
803
+ validity = _useState[0],
804
+ setValidity = _useState[1];
805
+ var validate = useCallback(function () {
806
+ if (validatorInner.current.length >= 2) {
807
+ validatorInner.current(statesInner.current, setValidity);
808
+ } else {
809
+ setValidity(validatorInner.current(statesInner.current));
810
+ }
811
+ }, [setValidity]);
812
+ useEffect(function () {
813
+ validate();
814
+ }, Object.values(states));
815
+ return [validity, validate];
816
+ };
817
+
818
+ var useWindowScroll = function useWindowScroll() {
819
+ var _useState = useState(function () {
820
+ return {
821
+ x: isBrowser ? window.pageXOffset : 0,
822
+ y: isBrowser ? window.pageYOffset : 0
823
+ };
824
+ }),
825
+ state = _useState[0],
826
+ setState = _useState[1];
827
+ useEffect(function () {
828
+ var handler = function handler() {
829
+ setState(function (state) {
830
+ var _window = window,
831
+ pageXOffset = _window.pageXOffset,
832
+ pageYOffset = _window.pageYOffset;
833
+ return state.x !== pageXOffset || state.y !== pageYOffset ? {
834
+ x: pageXOffset,
835
+ y: pageYOffset
836
+ } : state;
837
+ });
838
+ };
839
+ handler();
840
+ on(window, 'scroll', handler, {
841
+ capture: false,
842
+ passive: true
843
+ });
844
+ return function () {
845
+ off(window, 'scroll', handler);
846
+ };
847
+ }, []);
848
+ return state;
849
+ };
850
+
851
+ export { useBatteryInfo, useBeforeUnload, useClickOutside, useColorScheme, useConnection, useCookie, useCopyToClipboard, useDebounce, _useEqualObject as useEqualObject, useForceUpdate, useFullScreen, useGeolocation, useHover, useIntersectionObserver, useInterval, useIsFirstRender, useLocalStorage, useMedia, useMobileLandscape, useMousePageLeave, useMultiStateValidator, useOnlineStatus, usePageLeave, usePageVisible, usePreferredLanguage, usePrevious, useScrollLock, useScrollToElement, useScrolling, useSessionStorage, useStateValidator, useThrottle, useWindowScroll, useWindowSize };
597
852
  //# sourceMappingURL=index.modern.js.map