@koine/react 2.0.0-beta.80 → 2.0.0-beta.83

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 (63) hide show
  1. package/FaviconTags.cjs.js +10 -3
  2. package/FaviconTags.esm.js +10 -3
  3. package/Meta.cjs.js +10 -3
  4. package/Meta.esm.js +10 -3
  5. package/NoJs.cjs.js +1 -5
  6. package/NoJs.esm.js +1 -5
  7. package/calendar.cjs.js +97 -534
  8. package/calendar.esm.js +97 -534
  9. package/classed.cjs.js +42 -39
  10. package/classed.esm.js +42 -39
  11. package/createUseMediaQueryWidth.cjs.js +15 -34
  12. package/createUseMediaQueryWidth.d.ts +1 -1
  13. package/createUseMediaQueryWidth.esm.js +15 -34
  14. package/extendComponent.cjs.js +5 -7
  15. package/extendComponent.d.ts +1 -1
  16. package/extendComponent.esm.js +5 -7
  17. package/forms/antispam.d.ts +1 -1
  18. package/forms.cjs.js +27 -27
  19. package/forms.esm.js +27 -27
  20. package/mergeRefs.cjs.js +1 -12
  21. package/mergeRefs.d.ts +1 -1
  22. package/mergeRefs.esm.js +1 -12
  23. package/package.json +3 -3
  24. package/useAsyncFn.cjs.js +4 -23
  25. package/useAsyncFn.esm.js +4 -23
  26. package/useFirstMountState.cjs.js +3 -8
  27. package/useFirstMountState.esm.js +3 -8
  28. package/useFixedOffset.cjs.js +12 -37
  29. package/useFixedOffset.esm.js +13 -38
  30. package/useFocus.cjs.js +3 -7
  31. package/useFocus.esm.js +3 -7
  32. package/useInterval.cjs.js +6 -17
  33. package/useInterval.esm.js +6 -17
  34. package/useIsomorphicLayoutEffect.cjs.js +3 -1
  35. package/useIsomorphicLayoutEffect.esm.js +3 -1
  36. package/useKeyUp.cjs.js +6 -13
  37. package/useKeyUp.esm.js +6 -13
  38. package/useMeasure.cjs.js +33 -115
  39. package/useMeasure.esm.js +33 -115
  40. package/useMountedState.cjs.js +3 -11
  41. package/useMountedState.esm.js +3 -11
  42. package/useNavigateAway.cjs.js +47 -22
  43. package/useNavigateAway.esm.js +47 -22
  44. package/usePrevious.cjs.js +1 -7
  45. package/usePrevious.esm.js +1 -7
  46. package/usePreviousRef.cjs.js +1 -7
  47. package/usePreviousRef.esm.js +1 -7
  48. package/useScrollPosition.cjs.js +7 -53
  49. package/useScrollPosition.esm.js +7 -53
  50. package/useScrollThreshold.cjs.js +4 -22
  51. package/useScrollThreshold.esm.js +4 -22
  52. package/useScrollTo.cjs.js +3 -16
  53. package/useScrollTo.esm.js +3 -16
  54. package/useSmoothScroll.cjs.js +6 -27
  55. package/useSmoothScroll.esm.js +6 -27
  56. package/useSpinDelay.cjs.js +12 -34
  57. package/useSpinDelay.esm.js +12 -34
  58. package/useTraceUpdate.cjs.js +4 -15
  59. package/useTraceUpdate.esm.js +4 -15
  60. package/useUpdateEffect.cjs.js +4 -8
  61. package/useUpdateEffect.esm.js +4 -8
  62. package/useWindowSize.cjs.js +9 -17
  63. package/useWindowSize.esm.js +9 -17
@@ -1,38 +1,16 @@
1
1
  import { useState, useRef, useEffect } from 'react';
2
2
 
3
- var State;
4
- (function (State) {
5
- State[State["IDLE"] = 0] = "IDLE";
6
- State[State["DELAY"] = 1] = "DELAY";
7
- State[State["DISPLAY"] = 2] = "DISPLAY";
8
- State[State["EXPIRE"] = 3] = "EXPIRE";
9
- })(State || (State = {}));
10
- let useSpinDelay = (loading, delay = 500, minDuration = 200) => {
11
- const [state, setState] = useState(State.IDLE);
12
- const timeout = useRef();
13
- useEffect(() => {
14
- if (loading && state === State.IDLE) {
15
- clearTimeout(timeout.current);
16
- timeout.current = setTimeout(() => {
17
- if (!loading) {
18
- return setState(State.IDLE);
19
- }
20
- timeout.current = setTimeout(() => {
21
- setState(State.EXPIRE);
22
- }, minDuration);
23
- setState(State.DISPLAY);
24
- }, delay);
25
- setState(State.DELAY);
26
- }
27
- if (!loading && state !== State.DISPLAY) {
28
- clearTimeout(timeout.current);
29
- setState(State.IDLE);
30
- }
31
- }, [loading, state, delay, minDuration]);
32
- useEffect(() => {
33
- return () => clearTimeout(timeout.current);
34
- }, []);
35
- return state === State.DISPLAY || state === State.EXPIRE;
36
- };
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};
37
15
 
38
16
  export { useSpinDelay as default, useSpinDelay };
@@ -4,21 +4,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var react = require('react');
6
6
 
7
- let useTraceUpdate = (props) => {
8
- const prev = react.useRef(props);
9
- react.useEffect(() => {
10
- const changedProps = Object.entries(props).reduce((ps, [k, v]) => {
11
- if (prev.current[k] !== v) {
12
- ps[k] = [prev.current[k], v];
13
- }
14
- return ps;
15
- }, {});
16
- if (Object.keys(changedProps).length > 0) {
17
- console.info("[@koine/react:useTraceUpdate] changed props:", changedProps);
18
- }
19
- prev.current = props;
20
- });
21
- };
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;});};
22
11
 
23
12
  exports["default"] = useTraceUpdate;
24
13
  exports.useTraceUpdate = useTraceUpdate;
@@ -1,19 +1,8 @@
1
1
  import { useRef, useEffect } from 'react';
2
2
 
3
- let useTraceUpdate = (props) => {
4
- const prev = useRef(props);
5
- useEffect(() => {
6
- const changedProps = Object.entries(props).reduce((ps, [k, v]) => {
7
- if (prev.current[k] !== v) {
8
- ps[k] = [prev.current[k], v];
9
- }
10
- return ps;
11
- }, {});
12
- if (Object.keys(changedProps).length > 0) {
13
- console.info("[@koine/react:useTraceUpdate] changed props:", changedProps);
14
- }
15
- prev.current = props;
16
- });
17
- };
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;});};
18
7
 
19
8
  export { useTraceUpdate as default, useTraceUpdate };
@@ -5,14 +5,10 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var react = require('react');
6
6
  var useFirstMountState = require('./useFirstMountState.cjs.js');
7
7
 
8
- let useUpdateEffect = (effect, deps) => {
9
- const isFirstMount = useFirstMountState.useFirstMountState();
10
- react.useEffect(() => {
11
- if (!isFirstMount) {
12
- return effect();
13
- }
14
- }, deps);
15
- };
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);};
16
12
 
17
13
  exports["default"] = useUpdateEffect;
18
14
  exports.useUpdateEffect = useUpdateEffect;
@@ -1,13 +1,9 @@
1
1
  import { useEffect } from 'react';
2
2
  import { useFirstMountState } from './useFirstMountState.esm.js';
3
3
 
4
- let useUpdateEffect = (effect, deps) => {
5
- const isFirstMount = useFirstMountState();
6
- useEffect(() => {
7
- if (!isFirstMount) {
8
- return effect();
9
- }
10
- }, deps);
11
- };
4
+ /**
5
+ * @borrows [streamich/react-use](https://github.com/streamich/react-use/blob/master/src/useUpdateEffect.ts)
6
+ */let useUpdateEffect=(r,f)=>{let o=useFirstMountState();useEffect(()=>{if(!o)return r()},// eslint-disable-next-line react-hooks/exhaustive-deps
7
+ f);};
12
8
 
13
9
  export { useUpdateEffect as default, useUpdateEffect };
@@ -3,25 +3,17 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var react = require('react');
6
- require('@koine/utils');
7
6
  var dom = require('@koine/dom');
8
7
 
9
- let useWindowSize = (wait, immediate) => {
10
- const [width, widthSet] = react.useState(0);
11
- const [height, heightSet] = react.useState(0);
12
- react.useEffect(() => {
13
- const updateSize = () => {
14
- widthSet(window.innerWidth);
15
- heightSet(window.innerHeight);
16
- };
17
- const listener = wait
18
- ? dom.listenResizeDebounced(0, updateSize, wait, immediate)
19
- : dom.listenResize(updateSize);
20
- updateSize();
21
- return listener;
22
- }, [wait, immediate]);
23
- return [width, height];
24
- };
8
+ /**
9
+ * # Use `window` size
10
+ *
11
+ * @param args Optionally pass {@link debounce} arguments (`wait` and `immediate`)
12
+ *
13
+ * @returns An array with:
14
+ * 1) _width_: using `window.innerWidth`
15
+ * 2) _height_: using `window.innerHeight`
16
+ */let useWindowSize=(o,n)=>{let[d,w]=react.useState(0),[m,u]=react.useState(0);return react.useEffect(()=>{let e=()=>{w(window.innerWidth),u(window.innerHeight);},i=o?dom.listenResizeDebounced(0,e,o,n):dom.listenResize(e);return e(),i},[o,n]),[d,m]};
25
17
 
26
18
  exports["default"] = useWindowSize;
27
19
  exports.useWindowSize = useWindowSize;
@@ -1,22 +1,14 @@
1
1
  import { useState, useEffect } from 'react';
2
- import '@koine/utils';
3
2
  import { listenResizeDebounced, listenResize } from '@koine/dom';
4
3
 
5
- let useWindowSize = (wait, immediate) => {
6
- const [width, widthSet] = useState(0);
7
- const [height, heightSet] = useState(0);
8
- useEffect(() => {
9
- const updateSize = () => {
10
- widthSet(window.innerWidth);
11
- heightSet(window.innerHeight);
12
- };
13
- const listener = wait
14
- ? listenResizeDebounced(0, updateSize, wait, immediate)
15
- : listenResize(updateSize);
16
- updateSize();
17
- return listener;
18
- }, [wait, immediate]);
19
- return [width, height];
20
- };
4
+ /**
5
+ * # Use `window` size
6
+ *
7
+ * @param args Optionally pass {@link debounce} arguments (`wait` and `immediate`)
8
+ *
9
+ * @returns An array with:
10
+ * 1) _width_: using `window.innerWidth`
11
+ * 2) _height_: using `window.innerHeight`
12
+ */let useWindowSize=(o,n)=>{let[d,w]=useState(0),[m,u]=useState(0);return useEffect(()=>{let e=()=>{w(window.innerWidth),u(window.innerHeight);},i=o?listenResizeDebounced(0,e,o,n):listenResize(e);return e(),i},[o,n]),[d,m]};
21
13
 
22
14
  export { useWindowSize as default, useWindowSize };