@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.
- package/FaviconTags.cjs.js +1 -10
- package/FaviconTags.d.ts +10 -0
- package/FaviconTags.esm.js +1 -10
- package/Meta.cjs.js +1 -10
- package/Meta.d.ts +10 -0
- package/Meta.esm.js +1 -10
- package/NoJs.cjs.js +1 -1
- package/NoJs.esm.js +1 -1
- package/Polymorphic.d.ts +13 -0
- package/calendar/CalendarDaygridCell.cjs.js +1 -20
- package/calendar/CalendarDaygridCell.esm.js +1 -20
- package/calendar/CalendarDaygridNav.cjs.js +1 -1
- package/calendar/CalendarDaygridNav.esm.js +1 -1
- package/calendar/CalendarDaygridTable.cjs.js +1 -4
- package/calendar/CalendarDaygridTable.esm.js +1 -4
- package/calendar/CalendarLegend.cjs.js +1 -8
- package/calendar/CalendarLegend.esm.js +1 -8
- package/calendar/calendar-api-google.cjs.js +1 -15
- package/calendar/calendar-api-google.d.ts +8 -0
- package/calendar/calendar-api-google.esm.js +1 -15
- package/calendar/types.d.ts +19 -0
- package/calendar/useCalendar.cjs.js +1 -13
- package/calendar/useCalendar.d.ts +14 -0
- package/calendar/useCalendar.esm.js +1 -13
- package/calendar/useDateLocale.cjs.js +1 -18
- package/calendar/useDateLocale.d.ts +6 -0
- package/calendar/useDateLocale.esm.js +1 -18
- package/calendar/utils.cjs.js +1 -18
- package/calendar/utils.esm.js +1 -18
- package/classed.cjs.js +1 -42
- package/classed.d.ts +19 -0
- package/classed.esm.js +1 -42
- package/createUseMediaQueryWidth.cjs.js +1 -15
- package/createUseMediaQueryWidth.d.ts +6 -0
- package/createUseMediaQueryWidth.esm.js +1 -15
- package/extendComponent.cjs.js +1 -5
- package/extendComponent.d.ts +11 -0
- package/extendComponent.esm.js +1 -5
- package/forms/antispam.cjs.js +1 -27
- package/forms/antispam.d.ts +22 -2
- package/forms/antispam.esm.js +1 -27
- package/package.json +3 -3
- package/useAsyncFn.cjs.js +1 -4
- package/useAsyncFn.d.ts +3 -0
- package/useAsyncFn.esm.js +1 -4
- package/useFirstMountState.cjs.js +1 -3
- package/useFirstMountState.d.ts +3 -0
- package/useFirstMountState.esm.js +1 -3
- package/useFixedOffset.cjs.js +1 -12
- package/useFixedOffset.d.ts +9 -0
- package/useFixedOffset.esm.js +1 -12
- package/useFocus.cjs.js +1 -3
- package/useFocus.d.ts +3 -0
- package/useFocus.esm.js +1 -3
- package/useInterval.cjs.js +1 -6
- package/useInterval.d.ts +5 -0
- package/useInterval.esm.js +1 -6
- package/useIsomorphicLayoutEffect.cjs.js +1 -3
- package/useIsomorphicLayoutEffect.d.ts +3 -0
- package/useIsomorphicLayoutEffect.esm.js +1 -3
- package/useKeyUp.cjs.js +1 -6
- package/useKeyUp.esm.js +1 -6
- package/useMeasure.cjs.js +1 -33
- package/useMeasure.d.ts +5 -0
- package/useMeasure.esm.js +1 -33
- package/useMountedState.cjs.js +1 -3
- package/useMountedState.d.ts +3 -0
- package/useMountedState.esm.js +1 -3
- package/useNavigateAway.cjs.js +1 -47
- package/useNavigateAway.d.ts +29 -0
- package/useNavigateAway.esm.js +1 -47
- package/usePrevious.d.ts +3 -0
- package/useReveal.d.ts +21 -0
- package/useScrollPosition.cjs.js +1 -7
- package/useScrollPosition.d.ts +7 -0
- package/useScrollPosition.esm.js +1 -7
- package/useScrollThreshold.cjs.js +1 -4
- package/useScrollThreshold.esm.js +1 -4
- package/useScrollTo.cjs.js +1 -3
- package/useScrollTo.esm.js +1 -3
- package/useSmoothScroll.cjs.js +1 -6
- package/useSmoothScroll.d.ts +6 -0
- package/useSmoothScroll.esm.js +1 -6
- package/useSpinDelay.cjs.js +1 -12
- package/useSpinDelay.d.ts +12 -0
- package/useSpinDelay.esm.js +1 -12
- package/useTraceUpdate.cjs.js +1 -4
- package/useTraceUpdate.d.ts +3 -0
- package/useTraceUpdate.esm.js +1 -4
- package/useUpdateEffect.cjs.js +1 -4
- package/useUpdateEffect.d.ts +3 -0
- package/useUpdateEffect.esm.js +1 -4
- package/useWindowSize.cjs.js +1 -9
- package/useWindowSize.d.ts +11 -2
- 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=>{
|
|
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=>{
|
|
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])
|
|
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])
|
|
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 };
|
package/useMountedState.cjs.js
CHANGED
|
@@ -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;
|
package/useMountedState.d.ts
CHANGED
package/useMountedState.esm.js
CHANGED
|
@@ -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 };
|
package/useNavigateAway.cjs.js
CHANGED
|
@@ -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
|
-
|
|
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;
|
package/useNavigateAway.d.ts
CHANGED
|
@@ -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;
|
package/useNavigateAway.esm.js
CHANGED
|
@@ -1,52 +1,6 @@
|
|
|
1
1
|
import { useRef, useEffect } from 'react';
|
|
2
2
|
import { on } from '@koine/dom';
|
|
3
3
|
|
|
4
|
-
|
|
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
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) => {
|
package/useScrollPosition.cjs.js
CHANGED
|
@@ -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;
|
package/useScrollPosition.d.ts
CHANGED
|
@@ -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;
|
package/useScrollPosition.esm.js
CHANGED
|
@@ -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
|
|
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
|
|
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 };
|
package/useScrollTo.cjs.js
CHANGED
|
@@ -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)=>{
|
|
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;
|
package/useScrollTo.esm.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { isBrowser } from '@koine/utils';
|
|
2
2
|
|
|
3
|
-
let useScrollTo=(o="",t=0)=>{
|
|
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 };
|
package/useSmoothScroll.cjs.js
CHANGED
|
@@ -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;
|
package/useSmoothScroll.d.ts
CHANGED
|
@@ -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;
|
package/useSmoothScroll.esm.js
CHANGED
|
@@ -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 };
|
package/useSpinDelay.cjs.js
CHANGED
|
@@ -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;
|
package/useSpinDelay.esm.js
CHANGED
|
@@ -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 };
|
package/useTraceUpdate.cjs.js
CHANGED
|
@@ -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;
|
package/useTraceUpdate.d.ts
CHANGED
package/useTraceUpdate.esm.js
CHANGED
|
@@ -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 };
|
package/useUpdateEffect.cjs.js
CHANGED
|
@@ -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;
|
package/useUpdateEffect.d.ts
CHANGED