@koine/react 2.0.0-beta.132 → 2.0.0-beta.134

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 (95) hide show
  1. package/FaviconTags.cjs.js +1 -10
  2. package/FaviconTags.d.ts +10 -0
  3. package/FaviconTags.esm.js +1 -10
  4. package/Meta.cjs.js +1 -10
  5. package/Meta.d.ts +10 -0
  6. package/Meta.esm.js +1 -10
  7. package/NoJs.cjs.js +1 -1
  8. package/NoJs.esm.js +1 -1
  9. package/Polymorphic.d.ts +13 -0
  10. package/calendar/CalendarDaygridCell.cjs.js +1 -20
  11. package/calendar/CalendarDaygridCell.esm.js +1 -20
  12. package/calendar/CalendarDaygridNav.cjs.js +1 -1
  13. package/calendar/CalendarDaygridNav.esm.js +1 -1
  14. package/calendar/CalendarDaygridTable.cjs.js +1 -4
  15. package/calendar/CalendarDaygridTable.esm.js +1 -4
  16. package/calendar/CalendarLegend.cjs.js +1 -8
  17. package/calendar/CalendarLegend.esm.js +1 -8
  18. package/calendar/calendar-api-google.cjs.js +1 -15
  19. package/calendar/calendar-api-google.d.ts +8 -0
  20. package/calendar/calendar-api-google.esm.js +1 -15
  21. package/calendar/types.d.ts +19 -0
  22. package/calendar/useCalendar.cjs.js +1 -13
  23. package/calendar/useCalendar.d.ts +14 -0
  24. package/calendar/useCalendar.esm.js +1 -13
  25. package/calendar/useDateLocale.cjs.js +1 -18
  26. package/calendar/useDateLocale.d.ts +6 -0
  27. package/calendar/useDateLocale.esm.js +1 -18
  28. package/calendar/utils.cjs.js +1 -18
  29. package/calendar/utils.esm.js +1 -18
  30. package/classed.cjs.js +1 -42
  31. package/classed.d.ts +19 -0
  32. package/classed.esm.js +1 -42
  33. package/createUseMediaQueryWidth.cjs.js +1 -15
  34. package/createUseMediaQueryWidth.d.ts +6 -0
  35. package/createUseMediaQueryWidth.esm.js +1 -15
  36. package/extendComponent.cjs.js +1 -5
  37. package/extendComponent.d.ts +11 -0
  38. package/extendComponent.esm.js +1 -5
  39. package/forms/antispam.cjs.js +1 -27
  40. package/forms/antispam.d.ts +22 -2
  41. package/forms/antispam.esm.js +1 -27
  42. package/package.json +3 -3
  43. package/useAsyncFn.cjs.js +1 -4
  44. package/useAsyncFn.d.ts +3 -0
  45. package/useAsyncFn.esm.js +1 -4
  46. package/useFirstMountState.cjs.js +1 -3
  47. package/useFirstMountState.d.ts +3 -0
  48. package/useFirstMountState.esm.js +1 -3
  49. package/useFixedOffset.cjs.js +1 -12
  50. package/useFixedOffset.d.ts +9 -0
  51. package/useFixedOffset.esm.js +1 -12
  52. package/useFocus.cjs.js +1 -3
  53. package/useFocus.d.ts +3 -0
  54. package/useFocus.esm.js +1 -3
  55. package/useInterval.cjs.js +1 -6
  56. package/useInterval.d.ts +5 -0
  57. package/useInterval.esm.js +1 -6
  58. package/useIsomorphicLayoutEffect.cjs.js +1 -3
  59. package/useIsomorphicLayoutEffect.d.ts +3 -0
  60. package/useIsomorphicLayoutEffect.esm.js +1 -3
  61. package/useKeyUp.cjs.js +1 -6
  62. package/useKeyUp.esm.js +1 -6
  63. package/useMeasure.cjs.js +1 -33
  64. package/useMeasure.d.ts +5 -0
  65. package/useMeasure.esm.js +1 -33
  66. package/useMountedState.cjs.js +1 -3
  67. package/useMountedState.d.ts +3 -0
  68. package/useMountedState.esm.js +1 -3
  69. package/useNavigateAway.cjs.js +1 -47
  70. package/useNavigateAway.d.ts +29 -0
  71. package/useNavigateAway.esm.js +1 -47
  72. package/usePrevious.d.ts +3 -0
  73. package/useReveal.d.ts +21 -0
  74. package/useScrollPosition.cjs.js +1 -7
  75. package/useScrollPosition.d.ts +7 -0
  76. package/useScrollPosition.esm.js +1 -7
  77. package/useScrollThreshold.cjs.js +1 -4
  78. package/useScrollThreshold.esm.js +1 -4
  79. package/useScrollTo.cjs.js +1 -3
  80. package/useScrollTo.esm.js +1 -3
  81. package/useSmoothScroll.cjs.js +1 -6
  82. package/useSmoothScroll.d.ts +6 -0
  83. package/useSmoothScroll.esm.js +1 -6
  84. package/useSpinDelay.cjs.js +1 -12
  85. package/useSpinDelay.d.ts +12 -0
  86. package/useSpinDelay.esm.js +1 -12
  87. package/useTraceUpdate.cjs.js +1 -4
  88. package/useTraceUpdate.d.ts +3 -0
  89. package/useTraceUpdate.esm.js +1 -4
  90. package/useUpdateEffect.cjs.js +1 -4
  91. package/useUpdateEffect.d.ts +3 -0
  92. package/useUpdateEffect.esm.js +1 -4
  93. package/useWindowSize.cjs.js +1 -9
  94. package/useWindowSize.d.ts +11 -2
  95. package/useWindowSize.esm.js +1 -9
@@ -5,9 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var react = require('react');
6
6
  var utils = require('@koine/utils');
7
7
 
8
- /**
9
- * @borrows [streamich/react-use](https://github.com/streamich/react-use/blob/master/src/useIsomorphicLayoutEffect.ts)
10
- */let useIsomorphicLayoutEffect=utils.isBrowser?react.useLayoutEffect:react.useEffect;
8
+ let useIsomorphicLayoutEffect=utils.isBrowser?react.useLayoutEffect:react.useEffect;
11
9
 
12
10
  exports.default = useIsomorphicLayoutEffect;
13
11
  exports.useIsomorphicLayoutEffect = useIsomorphicLayoutEffect;
@@ -1,3 +1,6 @@
1
1
  import { useLayoutEffect } from "react";
2
+ /**
3
+ * @borrows [streamich/react-use](https://github.com/streamich/react-use/blob/master/src/useIsomorphicLayoutEffect.ts)
4
+ */
2
5
  export declare let useIsomorphicLayoutEffect: typeof useLayoutEffect;
3
6
  export default useIsomorphicLayoutEffect;
@@ -1,8 +1,6 @@
1
1
  import { useLayoutEffect, useEffect } from 'react';
2
2
  import { isBrowser } from '@koine/utils';
3
3
 
4
- /**
5
- * @borrows [streamich/react-use](https://github.com/streamich/react-use/blob/master/src/useIsomorphicLayoutEffect.ts)
6
- */let useIsomorphicLayoutEffect=isBrowser?useLayoutEffect:useEffect;
4
+ let useIsomorphicLayoutEffect=isBrowser?useLayoutEffect:useEffect;
7
5
 
8
6
  export { useIsomorphicLayoutEffect as default, useIsomorphicLayoutEffect };
package/useKeyUp.cjs.js CHANGED
@@ -5,12 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var react = require('react');
6
6
  var dom = require('@koine/dom');
7
7
 
8
- let useKeyUp=(o,r=[])=>{react.useEffect(()=>dom.on(window,"keyup",e=>{// const { key } = event;
9
- // be sure we do not intercept keys combinations maybe used for other
10
- // actions like native browser navigation shortcuts
11
- // @see https://stackoverflow.com/a/37559790/1938970
12
- e.ctrlKey||e.altKey||e.shiftKey||e.metaKey||o(e);}),// eslint-disable-next-line react-hooks/exhaustive-deps
13
- [o,...r]);};
8
+ let useKeyUp=(o,r=[])=>{react.useEffect(()=>dom.on(window,"keyup",e=>{e.ctrlKey||e.altKey||e.shiftKey||e.metaKey||o(e);}),[o,...r]);};
14
9
 
15
10
  exports.default = useKeyUp;
16
11
  exports.useKeyUp = useKeyUp;
package/useKeyUp.esm.js CHANGED
@@ -1,11 +1,6 @@
1
1
  import { useEffect } from 'react';
2
2
  import { on } from '@koine/dom';
3
3
 
4
- let useKeyUp=(o,r=[])=>{useEffect(()=>on(window,"keyup",e=>{// const { key } = event;
5
- // be sure we do not intercept keys combinations maybe used for other
6
- // actions like native browser navigation shortcuts
7
- // @see https://stackoverflow.com/a/37559790/1938970
8
- e.ctrlKey||e.altKey||e.shiftKey||e.metaKey||o(e);}),// eslint-disable-next-line react-hooks/exhaustive-deps
9
- [o,...r]);};
4
+ let useKeyUp=(o,r=[])=>{useEffect(()=>on(window,"keyup",e=>{e.ctrlKey||e.altKey||e.shiftKey||e.metaKey||o(e);}),[o,...r]);};
10
5
 
11
6
  export { useKeyUp as default, useKeyUp };
package/useMeasure.cjs.js CHANGED
@@ -6,39 +6,7 @@ var react = require('react');
6
6
  var utils = require('@koine/utils');
7
7
  var dom = require('@koine/dom');
8
8
 
9
- let e;let m=e=>{let t=[];if(!e||e===document.body)return t;let{overflow:r,overflowX:n,overflowY:u}=window.getComputedStyle(e);return [r,n,u].some(e=>"auto"===e||"scroll"===e)&&t.push(e),[...t,...m(e.parentElement)]},p=["x","y","top","bottom","left","right","width","height"],d=(e,t)=>p.every(r=>e[r]===t[r]);// offsetSize?: boolean;
10
- /**
11
- * Use measure hook
12
- *
13
- * @borrows [pmndrs/react-use-measure](https://github.com/pmndrs/react-use-measure)
14
- */let useMeasure=p=>{let{scroll:h=!1}=/* offsetSize = false */p||{},[a,b]=react.useState({left:0,top:0,width:0,height:0,bottom:0,right:0,x:0,y:0}),// keep all state in a ref
15
- g=react.useRef([// element
16
- null,// scrollContainers
17
- null,// resizeObserver
18
- null,// lastBounds
19
- a]),// make sure to update state only as long as the component is truly mounted
20
- v=react.useRef(!1);react.useEffect(()=>(v.current=!0,()=>void(v.current=!1)),[]);// memoize handlers, so event-listeners know when they should update
21
- let[w,,/* resizeChange */y]=react.useMemo(()=>{let e=(...e)=>{let[t,,,r]=g.current;if(!t)return;let n=t.getBoundingClientRect();// if (element instanceof HTMLElement && offsetSize) {
22
- // size.height = element.offsetHeight;
23
- // size.width = element.offsetWidth;
24
- // }
25
- Object.freeze(n),v.current&&!d(r,n)&&(g.current[3]=n,b(n));},t=utils.debounce(e);return [e,t,t]},[b]);/* , offsetSize */// cleanup current scroll-listeners / observers
26
- function x(){let[,e,t]=g.current;e&&(e.forEach(e=>dom.off(e,"scroll",y)),g.current[1]=null),t&&(t.disconnect(),g.current[2]=null);}// add scroll-listeners / observers
27
- function z(){let[t,r]=g.current;t&&!e&&ResizeObserver&&(e=new ResizeObserver(y),g.current[2]=e,e.observe(t),h&&r&&r.forEach(e=>dom.on(e,"scroll",y,{capture:!0,passive:!0})));}return(// add general event listeners
28
- // useOnWindowScroll(forceRefresh, Boolean(scroll));
29
- // useOnWindowResize(() => {
30
- // debugger;
31
- // forceRefresh();
32
- // });
33
- react.useEffect(()=>h?dom.listenScrollDebounced(0,w,100):utils.noop,[h,w]),react.useEffect(()=>// const listener = listenResizeDebounced(onWindowResize);
34
- // return listener;
35
- dom.listenResizeDebounced(0,w,100),[w]),// respond to changes that are relevant for the listeners
36
- react.useEffect(()=>{x(),z();},// eslint-disable-next-line react-hooks/exhaustive-deps
37
- [h]),/* , scrollChange, resizeChange */react.useEffect(()=>(// operate on mount, @kuus on the original version there is no call on mount?
38
- w(),// remove all listeners when the components unmounts
39
- x),// eslint-disable-next-line react-hooks/exhaustive-deps
40
- []),[// the ref we expose to the user
41
- e=>{e&&e!==g.current[0]&&(x(),g.current[0]=e,g.current[1]=m(e),z());},a,w])};
9
+ let e;let m=e=>{let t=[];if(!e||e===document.body)return t;let{overflow:r,overflowX:n,overflowY:u}=window.getComputedStyle(e);return [r,n,u].some(e=>"auto"===e||"scroll"===e)&&t.push(e),[...t,...m(e.parentElement)]},p=["x","y","top","bottom","left","right","width","height"],d=(e,t)=>p.every(r=>e[r]===t[r]);let useMeasure=p=>{let{scroll:h=!1}=p||{},[a,b]=react.useState({left:0,top:0,width:0,height:0,bottom:0,right:0,x:0,y:0}),g=react.useRef([null,null,null,a]),v=react.useRef(!1);react.useEffect(()=>(v.current=!0,()=>void(v.current=!1)),[]);let[w,,y]=react.useMemo(()=>{let e=(...e)=>{let[t,,,r]=g.current;if(!t)return;let n=t.getBoundingClientRect();Object.freeze(n),v.current&&!d(r,n)&&(g.current[3]=n,b(n));},t=utils.debounce(e);return [e,t,t]},[b]);function x(){let[,e,t]=g.current;e&&(e.forEach(e=>dom.off(e,"scroll",y)),g.current[1]=null),t&&(t.disconnect(),g.current[2]=null);}function z(){let[t,r]=g.current;t&&!e&&ResizeObserver&&(e=new ResizeObserver(y),g.current[2]=e,e.observe(t),h&&r&&r.forEach(e=>dom.on(e,"scroll",y,{capture:!0,passive:!0})));}return react.useEffect(()=>h?dom.listenScrollDebounced(0,w,100):utils.noop,[h,w]),react.useEffect(()=>dom.listenResizeDebounced(0,w,100),[w]),react.useEffect(()=>{x(),z();},[h]),react.useEffect(()=>(w(),x),[]),[e=>{e&&e!==g.current[0]&&(x(),g.current[0]=e,g.current[1]=m(e),z());},a,w]};
42
10
 
43
11
  exports.default = useMeasure;
44
12
  exports.useMeasure = useMeasure;
package/useMeasure.d.ts CHANGED
@@ -18,5 +18,10 @@ export type UseMeasureReturn = [
18
18
  RectReadOnly,
19
19
  () => void
20
20
  ];
21
+ /**
22
+ * Use measure hook
23
+ *
24
+ * @borrows [pmndrs/react-use-measure](https://github.com/pmndrs/react-use-measure)
25
+ */
21
26
  export declare let useMeasure: (options?: UseMeasureOptions) => UseMeasureReturn;
22
27
  export default useMeasure;
package/useMeasure.esm.js CHANGED
@@ -2,38 +2,6 @@ import { useState, useRef, useEffect, useMemo } from 'react';
2
2
  import { debounce, noop } from '@koine/utils';
3
3
  import { listenScrollDebounced, listenResizeDebounced, off, on } from '@koine/dom';
4
4
 
5
- let e;let m=e=>{let t=[];if(!e||e===document.body)return t;let{overflow:r,overflowX:n,overflowY:u}=window.getComputedStyle(e);return [r,n,u].some(e=>"auto"===e||"scroll"===e)&&t.push(e),[...t,...m(e.parentElement)]},p=["x","y","top","bottom","left","right","width","height"],d=(e,t)=>p.every(r=>e[r]===t[r]);// offsetSize?: boolean;
6
- /**
7
- * Use measure hook
8
- *
9
- * @borrows [pmndrs/react-use-measure](https://github.com/pmndrs/react-use-measure)
10
- */let useMeasure=p=>{let{scroll:h=!1}=/* offsetSize = false */p||{},[a,b]=useState({left:0,top:0,width:0,height:0,bottom:0,right:0,x:0,y:0}),// keep all state in a ref
11
- g=useRef([// element
12
- null,// scrollContainers
13
- null,// resizeObserver
14
- null,// lastBounds
15
- a]),// make sure to update state only as long as the component is truly mounted
16
- v=useRef(!1);useEffect(()=>(v.current=!0,()=>void(v.current=!1)),[]);// memoize handlers, so event-listeners know when they should update
17
- let[w,,/* resizeChange */y]=useMemo(()=>{let e=(...e)=>{let[t,,,r]=g.current;if(!t)return;let n=t.getBoundingClientRect();// if (element instanceof HTMLElement && offsetSize) {
18
- // size.height = element.offsetHeight;
19
- // size.width = element.offsetWidth;
20
- // }
21
- Object.freeze(n),v.current&&!d(r,n)&&(g.current[3]=n,b(n));},t=debounce(e);return [e,t,t]},[b]);/* , offsetSize */// cleanup current scroll-listeners / observers
22
- function x(){let[,e,t]=g.current;e&&(e.forEach(e=>off(e,"scroll",y)),g.current[1]=null),t&&(t.disconnect(),g.current[2]=null);}// add scroll-listeners / observers
23
- function z(){let[t,r]=g.current;t&&!e&&ResizeObserver&&(e=new ResizeObserver(y),g.current[2]=e,e.observe(t),h&&r&&r.forEach(e=>on(e,"scroll",y,{capture:!0,passive:!0})));}return(// add general event listeners
24
- // useOnWindowScroll(forceRefresh, Boolean(scroll));
25
- // useOnWindowResize(() => {
26
- // debugger;
27
- // forceRefresh();
28
- // });
29
- useEffect(()=>h?listenScrollDebounced(0,w,100):noop,[h,w]),useEffect(()=>// const listener = listenResizeDebounced(onWindowResize);
30
- // return listener;
31
- listenResizeDebounced(0,w,100),[w]),// respond to changes that are relevant for the listeners
32
- useEffect(()=>{x(),z();},// eslint-disable-next-line react-hooks/exhaustive-deps
33
- [h]),/* , scrollChange, resizeChange */useEffect(()=>(// operate on mount, @kuus on the original version there is no call on mount?
34
- w(),// remove all listeners when the components unmounts
35
- x),// eslint-disable-next-line react-hooks/exhaustive-deps
36
- []),[// the ref we expose to the user
37
- e=>{e&&e!==g.current[0]&&(x(),g.current[0]=e,g.current[1]=m(e),z());},a,w])};
5
+ let e;let m=e=>{let t=[];if(!e||e===document.body)return t;let{overflow:r,overflowX:n,overflowY:u}=window.getComputedStyle(e);return [r,n,u].some(e=>"auto"===e||"scroll"===e)&&t.push(e),[...t,...m(e.parentElement)]},p=["x","y","top","bottom","left","right","width","height"],d=(e,t)=>p.every(r=>e[r]===t[r]);let useMeasure=p=>{let{scroll:h=!1}=p||{},[a,b]=useState({left:0,top:0,width:0,height:0,bottom:0,right:0,x:0,y:0}),g=useRef([null,null,null,a]),v=useRef(!1);useEffect(()=>(v.current=!0,()=>void(v.current=!1)),[]);let[w,,y]=useMemo(()=>{let e=(...e)=>{let[t,,,r]=g.current;if(!t)return;let n=t.getBoundingClientRect();Object.freeze(n),v.current&&!d(r,n)&&(g.current[3]=n,b(n));},t=debounce(e);return [e,t,t]},[b]);function x(){let[,e,t]=g.current;e&&(e.forEach(e=>off(e,"scroll",y)),g.current[1]=null),t&&(t.disconnect(),g.current[2]=null);}function z(){let[t,r]=g.current;t&&!e&&ResizeObserver&&(e=new ResizeObserver(y),g.current[2]=e,e.observe(t),h&&r&&r.forEach(e=>on(e,"scroll",y,{capture:!0,passive:!0})));}return useEffect(()=>h?listenScrollDebounced(0,w,100):noop,[h,w]),useEffect(()=>listenResizeDebounced(0,w,100),[w]),useEffect(()=>{x(),z();},[h]),useEffect(()=>(w(),x),[]),[e=>{e&&e!==g.current[0]&&(x(),g.current[0]=e,g.current[1]=m(e),z());},a,w]};
38
6
 
39
7
  export { useMeasure as default, useMeasure };
@@ -4,9 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var react = require('react');
6
6
 
7
- /**
8
- * @borrows [streamich/react-use](https://github.com/streamich/react-use/blob/master/src/useMountedState.ts)
9
- */let useMountedState=()=>{let u=react.useRef(!1),n=react.useCallback(()=>u.current,[]);return react.useEffect(()=>(u.current=!0,()=>{u.current=!1;}),[]),n};
7
+ let useMountedState=()=>{let u=react.useRef(!1),n=react.useCallback(()=>u.current,[]);return react.useEffect(()=>(u.current=!0,()=>{u.current=!1;}),[]),n};
10
8
 
11
9
  exports.default = useMountedState;
12
10
  exports.useMountedState = useMountedState;
@@ -1,2 +1,5 @@
1
+ /**
2
+ * @borrows [streamich/react-use](https://github.com/streamich/react-use/blob/master/src/useMountedState.ts)
3
+ */
1
4
  export declare let useMountedState: () => (() => boolean);
2
5
  export default useMountedState;
@@ -1,7 +1,5 @@
1
1
  import { useRef, useCallback, useEffect } from 'react';
2
2
 
3
- /**
4
- * @borrows [streamich/react-use](https://github.com/streamich/react-use/blob/master/src/useMountedState.ts)
5
- */let useMountedState=()=>{let u=useRef(!1),n=useCallback(()=>u.current,[]);return useEffect(()=>(u.current=!0,()=>{u.current=!1;}),[]),n};
3
+ let useMountedState=()=>{let u=useRef(!1),n=useCallback(()=>u.current,[]);return useEffect(()=>(u.current=!0,()=>{u.current=!1;}),[]),n};
6
4
 
7
5
  export { useMountedState as default, useMountedState };
@@ -5,53 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var react = require('react');
6
6
  var dom = require('@koine/dom');
7
7
 
8
- // string | boolean,
9
- // (() => unknown) | undefined,
10
- // (() => unknown) | undefined,
11
- // ];
12
- // type UseNavigateAwayPagehideHandler = (event: PageTransitionEvent) => unknown;
13
- /**
14
- * @resources
15
- *
16
- * About browser's specs see:
17
- * - https://developer.mozilla.org/en-US/docs/Web/API/Window/pagehide_event
18
- * - https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html#//apple_ref/doc/uid/TP40006511-SW5
19
- * - https://stackoverflow.com/questions/58009424/pagehide-event-on-google-chrome
20
- *
21
- * About react see:
22
- * - https://github.com/jacobbuck/react-beforeunload
23
- * - https://github.com/dioscarey/react-beforeunload-component
24
- *
25
- * About next.js see:
26
- * - https://github.com/vercel/next.js/issues/2476
27
- * - https://github.com/vercel/next.js/issues/2694
28
- *
29
- * For the callback technique see:
30
- * - https://stackoverflow.com/a/11835394/1938970
31
- */let useNavigateAway=a=>{let o=react.useRef();// const pagehideHandlerRef = useRef<UseNavigateAwayPagehideHandler | undefined>();
32
- react.useEffect(()=>{o.current=e=>{let t=a(e);return(// Handle legacy `event.returnValue` property
33
- // https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
34
- (t&&e.preventDefault(),"string"==typeof t)?e.returnValue=t:// Chrome doesn't support `event.preventDefault()` on `BeforeUnloadEvent`,
35
- // instead it requires `event.returnValue` to be set
36
- // https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload#browser_compatibility
37
- e.defaultPrevented?e.returnValue="":void 0)};},// pagehideHandlerRef.current = (event) => {
38
- // const returnValue = handler?.(event);
39
- // if (event.persisted) {
40
- // // If the event's persisted property is `true` the page is about
41
- // // to enter the Back-Forward Cache, which is also in the frozen state.
42
- // } else {
43
- // // If the event's persisted property is not `true` the page is
44
- // // about to be unloaded.
45
- // }
46
- // };
47
- [a]),react.useEffect(()=>dom.on(window,"beforeunload",e=>o.current?.(e)),// const listenerPagehide = on(window, "pagehide", (event) =>
48
- // pagehideHandlerRef.current?.(event)
49
- // );
50
- // return () => {
51
- // listenerBeforeunload();
52
- // // listenerPagehide();
53
- // };
54
- []);};
8
+ let useNavigateAway=a=>{let o=react.useRef();react.useEffect(()=>{o.current=e=>{let t=a(e);return (t&&e.preventDefault(),"string"==typeof t)?e.returnValue=t:e.defaultPrevented?e.returnValue="":void 0};},[a]),react.useEffect(()=>dom.on(window,"beforeunload",e=>o.current?.(e)),[]);};
55
9
 
56
10
  exports.default = useNavigateAway;
57
11
  exports.useNavigateAway = useNavigateAway;
@@ -1,3 +1,32 @@
1
+ /**
2
+ * @return A custom error message (most browser will ignore it), or just a
3
+ * boolean to signal whether we want to prompt the user
4
+ *
5
+ * We might instead return an array with the above as first element and two
6
+ * callbacks, but the callback technique is too cumbersome and unreliable
7
+ * probably:
8
+ * 2) A callback on confirmed leaving
9
+ * 3) A callback on cancel, user stays on page
10
+ */
1
11
  export type UseNavigateAwayHandler = (event: BeforeUnloadEvent) => string | boolean;
12
+ /**
13
+ * @resources
14
+ *
15
+ * About browser's specs see:
16
+ * - https://developer.mozilla.org/en-US/docs/Web/API/Window/pagehide_event
17
+ * - https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html#//apple_ref/doc/uid/TP40006511-SW5
18
+ * - https://stackoverflow.com/questions/58009424/pagehide-event-on-google-chrome
19
+ *
20
+ * About react see:
21
+ * - https://github.com/jacobbuck/react-beforeunload
22
+ * - https://github.com/dioscarey/react-beforeunload-component
23
+ *
24
+ * About next.js see:
25
+ * - https://github.com/vercel/next.js/issues/2476
26
+ * - https://github.com/vercel/next.js/issues/2694
27
+ *
28
+ * For the callback technique see:
29
+ * - https://stackoverflow.com/a/11835394/1938970
30
+ */
2
31
  export declare let useNavigateAway: (handler: UseNavigateAwayHandler) => void;
3
32
  export default useNavigateAway;
@@ -1,52 +1,6 @@
1
1
  import { useRef, useEffect } from 'react';
2
2
  import { on } from '@koine/dom';
3
3
 
4
- // string | boolean,
5
- // (() => unknown) | undefined,
6
- // (() => unknown) | undefined,
7
- // ];
8
- // type UseNavigateAwayPagehideHandler = (event: PageTransitionEvent) => unknown;
9
- /**
10
- * @resources
11
- *
12
- * About browser's specs see:
13
- * - https://developer.mozilla.org/en-US/docs/Web/API/Window/pagehide_event
14
- * - https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html#//apple_ref/doc/uid/TP40006511-SW5
15
- * - https://stackoverflow.com/questions/58009424/pagehide-event-on-google-chrome
16
- *
17
- * About react see:
18
- * - https://github.com/jacobbuck/react-beforeunload
19
- * - https://github.com/dioscarey/react-beforeunload-component
20
- *
21
- * About next.js see:
22
- * - https://github.com/vercel/next.js/issues/2476
23
- * - https://github.com/vercel/next.js/issues/2694
24
- *
25
- * For the callback technique see:
26
- * - https://stackoverflow.com/a/11835394/1938970
27
- */let useNavigateAway=a=>{let o=useRef();// const pagehideHandlerRef = useRef<UseNavigateAwayPagehideHandler | undefined>();
28
- useEffect(()=>{o.current=e=>{let t=a(e);return(// Handle legacy `event.returnValue` property
29
- // https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
30
- (t&&e.preventDefault(),"string"==typeof t)?e.returnValue=t:// Chrome doesn't support `event.preventDefault()` on `BeforeUnloadEvent`,
31
- // instead it requires `event.returnValue` to be set
32
- // https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload#browser_compatibility
33
- e.defaultPrevented?e.returnValue="":void 0)};},// pagehideHandlerRef.current = (event) => {
34
- // const returnValue = handler?.(event);
35
- // if (event.persisted) {
36
- // // If the event's persisted property is `true` the page is about
37
- // // to enter the Back-Forward Cache, which is also in the frozen state.
38
- // } else {
39
- // // If the event's persisted property is not `true` the page is
40
- // // about to be unloaded.
41
- // }
42
- // };
43
- [a]),useEffect(()=>on(window,"beforeunload",e=>o.current?.(e)),// const listenerPagehide = on(window, "pagehide", (event) =>
44
- // pagehideHandlerRef.current?.(event)
45
- // );
46
- // return () => {
47
- // listenerBeforeunload();
48
- // // listenerPagehide();
49
- // };
50
- []);};
4
+ let useNavigateAway=a=>{let o=useRef();useEffect(()=>{o.current=e=>{let t=a(e);return (t&&e.preventDefault(),"string"==typeof t)?e.returnValue=t:e.defaultPrevented?e.returnValue="":void 0};},[a]),useEffect(()=>on(window,"beforeunload",e=>o.current?.(e)),[]);};
51
5
 
52
6
  export { useNavigateAway as default, useNavigateAway };
package/usePrevious.d.ts CHANGED
@@ -1,2 +1,5 @@
1
+ /**
2
+ * @borrows [samselikoff/animated-carousel](https://github.com/samselikoff/2022-06-02-animated-carousel/blob/main/pages/final.jsx)
3
+ */
1
4
  export declare let usePrevious: <T extends unknown>(state: T, defaulValue: T) => T;
2
5
  export default usePrevious;
package/useReveal.d.ts CHANGED
@@ -1,7 +1,28 @@
1
1
  export type UseRevealOptions = {
2
+ /**
3
+ * @default "left"
4
+ */
2
5
  direction?: "left" | "right";
6
+ /**
7
+ * A number that represents the offset to start the animations, giving `-1`
8
+ * means that the animation will start when the scroll position is at
9
+ * 100% higher than the given element. Giving `2` the animation will starts
10
+ * when the scroll reached two times the height of the given element below
11
+ * the top edge of the element itself
12
+ *
13
+ * @default -2
14
+ */
3
15
  offsetStartY?: number;
16
+ /**
17
+ * When 0 it defaults to the same as the offsetStartY
18
+ * @default 0
19
+ */
4
20
  offsetEndY?: number;
21
+ /**
22
+ * A value from `0` to `1` representing a proportion of the element width
23
+ * or "all" to make it completely out of the viewport
24
+ * @default "all"
25
+ * */
5
26
  offsetStartX?: number | "all";
6
27
  };
7
28
  export declare let useReveal: <T extends HTMLElement = HTMLDivElement>({ direction, offsetStartY, offsetEndY, offsetStartX, }: UseRevealOptions) => {
@@ -7,13 +7,7 @@ var utils = require('@koine/utils');
7
7
  var dom = require('@koine/dom');
8
8
  var useIsomorphicLayoutEffect = require('./useIsomorphicLayoutEffect.cjs.js');
9
9
 
10
- let l={x:0,y:0},n=t=>t?.getBoundingClientRect(),u=(t,e)=>{if(!utils.isBrowser)return l;if(!e)return {x:window.scrollX,y:window.scrollY};let o=n(t?.current||document.body),u=n(e.current);return o?u?{x:(u.x||0)-(o.x||0),y:(u.y||0)-(o.y||0)}:{x:o.left,y:o.top}:l};/**
11
- * @borrows [@n8tb1t/use-scroll-position@2.0.3](https://github.com/n8tb1t/use-scroll-position) by `n8tb1t <n8tb1t@gmail.com>`
12
- *
13
- * We've just:
14
- * - reused internal helper functions
15
- * - compacted object arguments in functions as plain argument list to improve compression
16
- */let useScrollPosition=(l,n=[],i,c,m)=>{let f=react.useRef(u(null,c)),s=null,d=()=>{let t=u(i,c);l(t,f.current),f.current=t,s=null;};useIsomorphicLayoutEffect.useIsomorphicLayoutEffect(()=>{if(!utils.isBrowser)return;let t=dom.listenScroll(()=>{m?null===s&&(s=window.setTimeout(d,m)):d();},c?.current);return ()=>{t(),s&&clearTimeout(s);}},n);};
10
+ let l={x:0,y:0},n=t=>t?.getBoundingClientRect(),u=(t,e)=>{if(!utils.isBrowser)return l;if(!e)return {x:window.scrollX,y:window.scrollY};let o=n(t?.current||document.body),u=n(e.current);return o?u?{x:(u.x||0)-(o.x||0),y:(u.y||0)-(o.y||0)}:{x:o.left,y:o.top}:l};let useScrollPosition=(l,n=[],i,c,m)=>{let f=react.useRef(u(null,c)),s=null,d=()=>{let t=u(i,c);l(t,f.current),f.current=t,s=null;};useIsomorphicLayoutEffect.useIsomorphicLayoutEffect(()=>{if(!utils.isBrowser)return;let t=dom.listenScroll(()=>{m?null===s&&(s=window.setTimeout(d,m)):d();},c?.current);return ()=>{t(),s&&clearTimeout(s);}},n);};
17
11
 
18
12
  exports.default = useScrollPosition;
19
13
  exports.useScrollPosition = useScrollPosition;
@@ -3,5 +3,12 @@ type Position = {
3
3
  y: number;
4
4
  };
5
5
  type ElementRef = React.MutableRefObject<HTMLElement | undefined>;
6
+ /**
7
+ * @borrows [@n8tb1t/use-scroll-position@2.0.3](https://github.com/n8tb1t/use-scroll-position) by `n8tb1t <n8tb1t@gmail.com>`
8
+ *
9
+ * We've just:
10
+ * - reused internal helper functions
11
+ * - compacted object arguments in functions as plain argument list to improve compression
12
+ */
6
13
  export declare let useScrollPosition: (effect: (currentPosition: Position, prevPosition: Position) => void, deps?: React.DependencyList, element?: ElementRef, boundingElement?: ElementRef, wait?: number) => void;
7
14
  export default useScrollPosition;
@@ -3,12 +3,6 @@ import { isBrowser } from '@koine/utils';
3
3
  import { listenScroll } from '@koine/dom';
4
4
  import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect.esm.js';
5
5
 
6
- let l={x:0,y:0},n=t=>t?.getBoundingClientRect(),u=(t,e)=>{if(!isBrowser)return l;if(!e)return {x:window.scrollX,y:window.scrollY};let o=n(t?.current||document.body),u=n(e.current);return o?u?{x:(u.x||0)-(o.x||0),y:(u.y||0)-(o.y||0)}:{x:o.left,y:o.top}:l};/**
7
- * @borrows [@n8tb1t/use-scroll-position@2.0.3](https://github.com/n8tb1t/use-scroll-position) by `n8tb1t <n8tb1t@gmail.com>`
8
- *
9
- * We've just:
10
- * - reused internal helper functions
11
- * - compacted object arguments in functions as plain argument list to improve compression
12
- */let useScrollPosition=(l,n=[],i,c,m)=>{let f=useRef(u(null,c)),s=null,d=()=>{let t=u(i,c);l(t,f.current),f.current=t,s=null;};useIsomorphicLayoutEffect(()=>{if(!isBrowser)return;let t=listenScroll(()=>{m?null===s&&(s=window.setTimeout(d,m)):d();},c?.current);return ()=>{t(),s&&clearTimeout(s);}},n);};
6
+ let l={x:0,y:0},n=t=>t?.getBoundingClientRect(),u=(t,e)=>{if(!isBrowser)return l;if(!e)return {x:window.scrollX,y:window.scrollY};let o=n(t?.current||document.body),u=n(e.current);return o?u?{x:(u.x||0)-(o.x||0),y:(u.y||0)-(o.y||0)}:{x:o.left,y:o.top}:l};let useScrollPosition=(l,n=[],i,c,m)=>{let f=useRef(u(null,c)),s=null,d=()=>{let t=u(i,c);l(t,f.current),f.current=t,s=null;};useIsomorphicLayoutEffect(()=>{if(!isBrowser)return;let t=listenScroll(()=>{m?null===s&&(s=window.setTimeout(d,m)):d();},c?.current);return ()=>{t(),s&&clearTimeout(s);}},n);};
13
7
 
14
8
  export { useScrollPosition as default, useScrollPosition };
@@ -6,10 +6,7 @@ var react = require('react');
6
6
  var utils = require('@koine/utils');
7
7
  var dom = require('@koine/dom');
8
8
 
9
- let useScrollThreshold=(i,m)=>{let[u,f]=react.useState(!1),n=react.useCallback(()=>{if(i){let r=window.scrollY,// * -1;
10
- e=r<i,o=r>i;// console.log("useScrollThreshold setIsBelow", isBelow, posY, threshold);
11
- f(o),m&&m(e,o);}},[i,m]);return react.useEffect(()=>{if(i){// const listener = listenScrollThrottled(0, handler, 50);
12
- let r=dom.listenScroll(n);return n(),r}return utils.noop},[i,n]),u};
9
+ let useScrollThreshold=(i,m)=>{let[u,f]=react.useState(!1),n=react.useCallback(()=>{if(i){let r=window.scrollY,e=r<i,o=r>i;f(o),m&&m(e,o);}},[i,m]);return react.useEffect(()=>{if(i){let r=dom.listenScroll(n);return n(),r}return utils.noop},[i,n]),u};
13
10
 
14
11
  exports.default = useScrollThreshold;
15
12
  exports.useScrollThreshold = useScrollThreshold;
@@ -2,9 +2,6 @@ import { useState, useCallback, useEffect } from 'react';
2
2
  import { noop } from '@koine/utils';
3
3
  import { listenScroll } from '@koine/dom';
4
4
 
5
- let useScrollThreshold=(i,m)=>{let[u,f]=useState(!1),n=useCallback(()=>{if(i){let r=window.scrollY,// * -1;
6
- e=r<i,o=r>i;// console.log("useScrollThreshold setIsBelow", isBelow, posY, threshold);
7
- f(o),m&&m(e,o);}},[i,m]);return useEffect(()=>{if(i){// const listener = listenScrollThrottled(0, handler, 50);
8
- let r=listenScroll(n);return n(),r}return noop},[i,n]),u};
5
+ let useScrollThreshold=(i,m)=>{let[u,f]=useState(!1),n=useCallback(()=>{if(i){let r=window.scrollY,e=r<i,o=r>i;f(o),m&&m(e,o);}},[i,m]);return useEffect(()=>{if(i){let r=listenScroll(n);return n(),r}return noop},[i,n]),u};
9
6
 
10
7
  export { useScrollThreshold as default, useScrollThreshold };
@@ -4,9 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var utils = require('@koine/utils');
6
6
 
7
- let useScrollTo=(o="",t=0)=>{// FIXME: is the useHeader still needed?
8
- // const [, , headerHeight] = useHeader();
9
- if(!utils.isBrowser)return;let l=document.getElementById(o),r=0;if(l&&l.offsetParent)do r+=l.offsetTop;while(l=l.offsetParent)r-=t,r-=/* headerHeight || */0,window.scroll(0,r);};
7
+ let useScrollTo=(o="",t=0)=>{if(!utils.isBrowser)return;let l=document.getElementById(o),r=0;if(l&&l.offsetParent)do r+=l.offsetTop;while(l=l.offsetParent)r-=t,r-=0,window.scroll(0,r);};
10
8
 
11
9
  exports.default = useScrollTo;
12
10
  exports.useScrollTo = useScrollTo;
@@ -1,7 +1,5 @@
1
1
  import { isBrowser } from '@koine/utils';
2
2
 
3
- let useScrollTo=(o="",t=0)=>{// FIXME: is the useHeader still needed?
4
- // const [, , headerHeight] = useHeader();
5
- if(!isBrowser)return;let l=document.getElementById(o),r=0;if(l&&l.offsetParent)do r+=l.offsetTop;while(l=l.offsetParent)r-=t,r-=/* headerHeight || */0,window.scroll(0,r);};
3
+ let useScrollTo=(o="",t=0)=>{if(!isBrowser)return;let l=document.getElementById(o),r=0;if(l&&l.offsetParent)do r+=l.offsetTop;while(l=l.offsetParent)r-=t,r-=0,window.scroll(0,r);};
6
4
 
7
5
  export { useScrollTo as default, useScrollTo };
@@ -7,12 +7,7 @@ var utils = require('@koine/utils');
7
7
  var dom = require('@koine/dom');
8
8
  var useFixedOffset = require('./useFixedOffset.cjs.js');
9
9
 
10
- /**
11
- *
12
- * @param disregardAutomaticFixedOffset When the `to` scroll argument is a DOM
13
- * selector we will keep into account the _fixedOffset_ despite this option.
14
- * @returns
15
- */let useSmoothScroll=m=>{let i=useFixedOffset.useFixedOffset();return react.useCallback((e,l,f,u,n)=>{let c;let p=!1;if(utils.isNumber(e))c=e;else if(e){let t=document.getElementById(e);t&&(c=dom.getOffsetTopSlim(t)-i.current,p=!0);}utils.isNumber(c)&&dom.scrollTo(c=c+(l||0)+(m||p?0:i.current),f,u,n);},[m,i])};
10
+ let useSmoothScroll=m=>{let i=useFixedOffset.useFixedOffset();return react.useCallback((e,l,f,u,n)=>{let c;let p=!1;if(utils.isNumber(e))c=e;else if(e){let t=document.getElementById(e);t&&(c=dom.getOffsetTopSlim(t)-i.current,p=!0);}utils.isNumber(c)&&dom.scrollTo(c=c+(l||0)+(m||p?0:i.current),f,u,n);},[m,i])};
16
11
 
17
12
  exports.default = useSmoothScroll;
18
13
  exports.useSmoothScroll = useSmoothScroll;
@@ -1,2 +1,8 @@
1
+ /**
2
+ *
3
+ * @param disregardAutomaticFixedOffset When the `to` scroll argument is a DOM
4
+ * selector we will keep into account the _fixedOffset_ despite this option.
5
+ * @returns
6
+ */
1
7
  export declare let useSmoothScroll: (disregardAutomaticFixedOffset?: boolean) => (to?: number | string, customOffset?: number, callback?: () => void, fallbackTimeout?: number, behavior?: ScrollBehavior) => void;
2
8
  export default useSmoothScroll;
@@ -3,11 +3,6 @@ import { isNumber } from '@koine/utils';
3
3
  import { getOffsetTopSlim, scrollTo } from '@koine/dom';
4
4
  import { useFixedOffset } from './useFixedOffset.esm.js';
5
5
 
6
- /**
7
- *
8
- * @param disregardAutomaticFixedOffset When the `to` scroll argument is a DOM
9
- * selector we will keep into account the _fixedOffset_ despite this option.
10
- * @returns
11
- */let useSmoothScroll=m=>{let i=useFixedOffset();return useCallback((e,l,f,u,n)=>{let c;let p=!1;if(isNumber(e))c=e;else if(e){let t=document.getElementById(e);t&&(c=getOffsetTopSlim(t)-i.current,p=!0);}isNumber(c)&&scrollTo(c=c+(l||0)+(m||p?0:i.current),f,u,n);},[m,i])};
6
+ let useSmoothScroll=m=>{let i=useFixedOffset();return useCallback((e,l,f,u,n)=>{let c;let p=!1;if(isNumber(e))c=e;else if(e){let t=document.getElementById(e);t&&(c=getOffsetTopSlim(t)-i.current,p=!0);}isNumber(c)&&scrollTo(c=c+(l||0)+(m||p?0:i.current),f,u,n);},[m,i])};
12
7
 
13
8
  export { useSmoothScroll as default, useSmoothScroll };
@@ -4,18 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var react = require('react');
6
6
 
7
- /**
8
- * Wraps your booleans only returning true after the `delay`, and for a minimum
9
- * time of `minDuration`. This way you're sure that you don't show unnecessary
10
- * or very short living spinners.
11
- *
12
- * @borrows [smeijer/spin-delay](https://github.com/smeijer/spin-delay)
13
- *
14
- * - Smaller footprint and options object as argument
15
- *
16
- * @param delay [500]
17
- * @param minDuration [200]
18
- */let useSpinDelay=(u,c=500,i=200)=>{let[n,o]=react.useState(0),l=react.useRef();return react.useEffect(()=>{u&&0===n&&(clearTimeout(l.current),l.current=setTimeout(()=>{if(!u)return o(0);l.current=setTimeout(()=>{o(3);},i),o(2);},c),o(1)),u||2===n||(clearTimeout(l.current),o(0));},[u,n,c,i]),react.useEffect(()=>()=>clearTimeout(l.current),[]),2===n||3===n};
7
+ let useSpinDelay=(u,c=500,i=200)=>{let[n,o]=react.useState(0),l=react.useRef();return react.useEffect(()=>{u&&0===n&&(clearTimeout(l.current),l.current=setTimeout(()=>{if(!u)return o(0);l.current=setTimeout(()=>{o(3);},i),o(2);},c),o(1)),u||2===n||(clearTimeout(l.current),o(0));},[u,n,c,i]),react.useEffect(()=>()=>clearTimeout(l.current),[]),2===n||3===n};
19
8
 
20
9
  exports.default = useSpinDelay;
21
10
  exports.useSpinDelay = useSpinDelay;
package/useSpinDelay.d.ts CHANGED
@@ -1,2 +1,14 @@
1
+ /**
2
+ * Wraps your booleans only returning true after the `delay`, and for a minimum
3
+ * time of `minDuration`. This way you're sure that you don't show unnecessary
4
+ * or very short living spinners.
5
+ *
6
+ * @borrows [smeijer/spin-delay](https://github.com/smeijer/spin-delay)
7
+ *
8
+ * - Smaller footprint and options object as argument
9
+ *
10
+ * @param delay [500]
11
+ * @param minDuration [200]
12
+ */
1
13
  export declare let useSpinDelay: (loading: boolean, delay?: number, minDuration?: number) => boolean;
2
14
  export default useSpinDelay;
@@ -1,16 +1,5 @@
1
1
  import { useState, useRef, useEffect } from 'react';
2
2
 
3
- /**
4
- * Wraps your booleans only returning true after the `delay`, and for a minimum
5
- * time of `minDuration`. This way you're sure that you don't show unnecessary
6
- * or very short living spinners.
7
- *
8
- * @borrows [smeijer/spin-delay](https://github.com/smeijer/spin-delay)
9
- *
10
- * - Smaller footprint and options object as argument
11
- *
12
- * @param delay [500]
13
- * @param minDuration [200]
14
- */let useSpinDelay=(u,c=500,i=200)=>{let[n,o]=useState(0),l=useRef();return useEffect(()=>{u&&0===n&&(clearTimeout(l.current),l.current=setTimeout(()=>{if(!u)return o(0);l.current=setTimeout(()=>{o(3);},i),o(2);},c),o(1)),u||2===n||(clearTimeout(l.current),o(0));},[u,n,c,i]),useEffect(()=>()=>clearTimeout(l.current),[]),2===n||3===n};
3
+ let useSpinDelay=(u,c=500,i=200)=>{let[n,o]=useState(0),l=useRef();return useEffect(()=>{u&&0===n&&(clearTimeout(l.current),l.current=setTimeout(()=>{if(!u)return o(0);l.current=setTimeout(()=>{o(3);},i),o(2);},c),o(1)),u||2===n||(clearTimeout(l.current),o(0));},[u,n,c,i]),useEffect(()=>()=>clearTimeout(l.current),[]),2===n||3===n};
15
4
 
16
5
  export { useSpinDelay as default, useSpinDelay };
@@ -4,10 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var react = require('react');
6
6
 
7
- /**
8
- * @see https://stackoverflow.com/a/51082563/9122820
9
- */let useTraceUpdate=r=>{let c=react.useRef(r);react.useEffect(()=>{let e=Object.entries(r).reduce((e,[t,r])=>(c.current[t]!==r&&// @ts-expect-error Does not matter here...
10
- (e[t]=[c.current[t],r]),e),{});Object.keys(e).length>0&&console.info("[@koine/react:useTraceUpdate] changed props:",e),c.current=r;});};
7
+ let useTraceUpdate=r=>{let c=react.useRef(r);react.useEffect(()=>{let e=Object.entries(r).reduce((e,[t,r])=>(c.current[t]!==r&&(e[t]=[c.current[t],r]),e),{});Object.keys(e).length>0&&console.info("[@koine/react:useTraceUpdate] changed props:",e),c.current=r;});};
11
8
 
12
9
  exports.default = useTraceUpdate;
13
10
  exports.useTraceUpdate = useTraceUpdate;
@@ -1,2 +1,5 @@
1
+ /**
2
+ * @see https://stackoverflow.com/a/51082563/9122820
3
+ */
1
4
  export declare let useTraceUpdate: (props: any) => void;
2
5
  export default useTraceUpdate;
@@ -1,8 +1,5 @@
1
1
  import { useRef, useEffect } from 'react';
2
2
 
3
- /**
4
- * @see https://stackoverflow.com/a/51082563/9122820
5
- */let useTraceUpdate=r=>{let c=useRef(r);useEffect(()=>{let e=Object.entries(r).reduce((e,[t,r])=>(c.current[t]!==r&&// @ts-expect-error Does not matter here...
6
- (e[t]=[c.current[t],r]),e),{});Object.keys(e).length>0&&console.info("[@koine/react:useTraceUpdate] changed props:",e),c.current=r;});};
3
+ let useTraceUpdate=r=>{let c=useRef(r);useEffect(()=>{let e=Object.entries(r).reduce((e,[t,r])=>(c.current[t]!==r&&(e[t]=[c.current[t],r]),e),{});Object.keys(e).length>0&&console.info("[@koine/react:useTraceUpdate] changed props:",e),c.current=r;});};
7
4
 
8
5
  export { useTraceUpdate as default, useTraceUpdate };
@@ -5,10 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var react = require('react');
6
6
  var useFirstMountState = require('./useFirstMountState.cjs.js');
7
7
 
8
- /**
9
- * @borrows [streamich/react-use](https://github.com/streamich/react-use/blob/master/src/useUpdateEffect.ts)
10
- */let useUpdateEffect=(r,f)=>{let o=useFirstMountState.useFirstMountState();react.useEffect(()=>{if(!o)return r()},// eslint-disable-next-line react-hooks/exhaustive-deps
11
- f);};
8
+ let useUpdateEffect=(r,f)=>{let o=useFirstMountState.useFirstMountState();react.useEffect(()=>{if(!o)return r()},f);};
12
9
 
13
10
  exports.default = useUpdateEffect;
14
11
  exports.useUpdateEffect = useUpdateEffect;
@@ -1,3 +1,6 @@
1
1
  import { useEffect } from "react";
2
+ /**
3
+ * @borrows [streamich/react-use](https://github.com/streamich/react-use/blob/master/src/useUpdateEffect.ts)
4
+ */
2
5
  export declare let useUpdateEffect: typeof useEffect;
3
6
  export default useUpdateEffect;