@koine/react 2.0.0-beta.74 → 2.0.0-beta.76

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 (182) hide show
  1. package/FaviconTags.js +1 -5
  2. package/Meta.js +1 -5
  3. package/NoJs.js +1 -7
  4. package/Polymorphic.js +1 -1
  5. package/calendar/CalendarDaygridCell.js +1 -42
  6. package/calendar/CalendarDaygridNav.js +1 -22
  7. package/calendar/CalendarDaygridTable.js +1 -50
  8. package/calendar/CalendarLegend.js +1 -4
  9. package/calendar/calendar-api-google.js +1 -90
  10. package/calendar/types.js +1 -1
  11. package/calendar/useCalendar.js +1 -175
  12. package/calendar/useDateLocale.js +1 -16
  13. package/calendar/utils.js +1 -172
  14. package/calendar.js +1 -7
  15. package/{components → cjs}/FaviconTags.d.ts +1 -0
  16. package/cjs/FaviconTags.js +1 -0
  17. package/{components → cjs}/Meta.d.ts +1 -0
  18. package/cjs/Meta.js +1 -0
  19. package/{components → cjs}/NoJs.d.ts +1 -0
  20. package/cjs/NoJs.js +1 -0
  21. package/cjs/Polymorphic.js +1 -0
  22. package/cjs/calendar/CalendarDaygridCell.d.ts +35 -0
  23. package/cjs/calendar/CalendarDaygridCell.js +1 -0
  24. package/cjs/calendar/CalendarDaygridNav.d.ts +27 -0
  25. package/cjs/calendar/CalendarDaygridNav.js +1 -0
  26. package/cjs/calendar/CalendarDaygridTable.d.ts +25 -0
  27. package/cjs/calendar/CalendarDaygridTable.js +1 -0
  28. package/cjs/calendar/CalendarLegend.d.ts +18 -0
  29. package/cjs/calendar/CalendarLegend.js +1 -0
  30. package/cjs/calendar/calendar-api-google.d.ts +10 -0
  31. package/cjs/calendar/calendar-api-google.js +1 -0
  32. package/cjs/calendar/types.d.ts +62 -0
  33. package/cjs/calendar/types.js +1 -0
  34. package/cjs/calendar/useCalendar.d.ts +35 -0
  35. package/cjs/calendar/useCalendar.js +1 -0
  36. package/cjs/calendar/useDateLocale.d.ts +2 -0
  37. package/cjs/calendar/useDateLocale.js +1 -0
  38. package/cjs/calendar/utils.d.ts +11 -0
  39. package/cjs/calendar/utils.js +1 -0
  40. package/cjs/calendar.d.ts +7 -0
  41. package/cjs/calendar.js +1 -0
  42. package/{utils → cjs}/classed.d.ts +2 -2
  43. package/cjs/classed.js +1 -0
  44. package/{utils → cjs}/createUseMediaQueryWidth.d.ts +1 -1
  45. package/cjs/createUseMediaQueryWidth.js +1 -0
  46. package/{utils → cjs}/extendComponent.d.ts +1 -1
  47. package/cjs/extendComponent.js +1 -0
  48. package/cjs/forms/antispam.d.ts +27 -0
  49. package/cjs/forms/antispam.js +1 -0
  50. package/cjs/forms.d.ts +1 -0
  51. package/cjs/forms.js +1 -0
  52. package/{hooks → cjs}/index.d.ts +9 -0
  53. package/cjs/index.js +1 -0
  54. package/{utils → cjs}/mergeRefs.d.ts +1 -0
  55. package/cjs/mergeRefs.js +1 -0
  56. package/cjs/package.json +31 -0
  57. package/cjs/types.d.ts +2 -0
  58. package/cjs/types.js +1 -0
  59. package/{hooks → cjs}/useAsyncFn.d.ts +1 -1
  60. package/cjs/useAsyncFn.js +1 -0
  61. package/{hooks → cjs}/useFirstMountState.d.ts +1 -0
  62. package/cjs/useFirstMountState.js +1 -0
  63. package/{hooks → cjs}/useFixedOffset.d.ts +1 -0
  64. package/cjs/useFixedOffset.js +1 -0
  65. package/{hooks → cjs}/useFocus.d.ts +1 -0
  66. package/cjs/useFocus.js +1 -0
  67. package/{hooks → cjs}/useInterval.d.ts +1 -0
  68. package/cjs/useInterval.js +1 -0
  69. package/cjs/useIsomorphicLayoutEffect.d.ts +3 -0
  70. package/cjs/useIsomorphicLayoutEffect.js +1 -0
  71. package/{hooks → cjs}/useKeyUp.d.ts +1 -0
  72. package/cjs/useKeyUp.js +1 -0
  73. package/{hooks → cjs}/useMeasure.d.ts +1 -1
  74. package/cjs/useMeasure.js +1 -0
  75. package/{hooks → cjs}/useMountedState.d.ts +1 -0
  76. package/cjs/useMountedState.js +1 -0
  77. package/{hooks → cjs}/useNavigateAway.d.ts +1 -0
  78. package/cjs/useNavigateAway.js +1 -0
  79. package/{hooks → cjs}/usePrevious.d.ts +1 -0
  80. package/cjs/usePrevious.js +1 -0
  81. package/{hooks → cjs}/usePreviousRef.d.ts +1 -0
  82. package/cjs/usePreviousRef.js +1 -0
  83. package/{hooks → cjs}/useReveal.d.ts +1 -0
  84. package/cjs/useReveal.js +1 -0
  85. package/{hooks → cjs}/useScrollPosition.d.ts +1 -1
  86. package/cjs/useScrollPosition.js +1 -0
  87. package/{hooks → cjs}/useScrollThreshold.d.ts +1 -0
  88. package/cjs/useScrollThreshold.js +1 -0
  89. package/{hooks → cjs}/useScrollTo.d.ts +1 -0
  90. package/cjs/useScrollTo.js +1 -0
  91. package/{hooks → cjs}/useSmoothScroll.d.ts +1 -0
  92. package/cjs/useSmoothScroll.js +1 -0
  93. package/{hooks → cjs}/useSpinDelay.d.ts +1 -0
  94. package/cjs/useSpinDelay.js +1 -0
  95. package/{hooks → cjs}/useTraceUpdate.d.ts +1 -0
  96. package/cjs/useTraceUpdate.js +1 -0
  97. package/{hooks → cjs}/useUpdateEffect.d.ts +1 -0
  98. package/cjs/useUpdateEffect.js +1 -0
  99. package/{hooks → cjs}/useWindowSize.d.ts +1 -0
  100. package/cjs/useWindowSize.js +1 -0
  101. package/classed.d.ts +1 -1
  102. package/classed.js +1 -41
  103. package/createUseMediaQueryWidth.js +1 -38
  104. package/extendComponent.js +1 -9
  105. package/forms/antispam.js +1 -29
  106. package/forms.js +1 -1
  107. package/index.js +1 -26
  108. package/mergeRefs.js +1 -13
  109. package/package.json +172 -15
  110. package/types.js +1 -1
  111. package/useAsyncFn.js +1 -26
  112. package/useFirstMountState.js +1 -10
  113. package/useFixedOffset.js +1 -42
  114. package/useFocus.js +1 -9
  115. package/useInterval.js +1 -20
  116. package/useIsomorphicLayoutEffect.d.ts +2 -2
  117. package/useIsomorphicLayoutEffect.js +1 -4
  118. package/useKeyUp.js +1 -16
  119. package/useMeasure.js +1 -119
  120. package/useMountedState.js +1 -13
  121. package/useNavigateAway.js +1 -25
  122. package/usePrevious.js +1 -9
  123. package/usePreviousRef.js +1 -9
  124. package/useReveal.js +1 -42
  125. package/useScrollPosition.js +1 -58
  126. package/useScrollThreshold.js +1 -26
  127. package/useScrollTo.js +1 -18
  128. package/useSmoothScroll.js +1 -32
  129. package/useSpinDelay.js +1 -36
  130. package/useTraceUpdate.js +1 -17
  131. package/useUpdateEffect.js +1 -11
  132. package/useWindowSize.js +1 -20
  133. package/README.md +0 -1
  134. package/calendar.cjs.d.ts +0 -1
  135. package/calendar.cjs.default.js +0 -1
  136. package/calendar.cjs.js +0 -62
  137. package/calendar.cjs.mjs +0 -2
  138. package/calendar.esm.js +0 -35
  139. package/components/FaviconTags.js +0 -4
  140. package/components/Meta.js +0 -4
  141. package/components/NoJs.js +0 -6
  142. package/forms.cjs.d.ts +0 -1
  143. package/forms.cjs.default.js +0 -1
  144. package/forms.cjs.js +0 -11
  145. package/forms.cjs.mjs +0 -2
  146. package/forms.esm.js +0 -6
  147. package/hooks/index.js +0 -19
  148. package/hooks/useAsyncFn.js +0 -25
  149. package/hooks/useFirstMountState.js +0 -9
  150. package/hooks/useFixedOffset.js +0 -41
  151. package/hooks/useFocus.js +0 -8
  152. package/hooks/useInterval.js +0 -19
  153. package/hooks/useIsomorphicLayoutEffect.d.ts +0 -2
  154. package/hooks/useIsomorphicLayoutEffect.js +0 -3
  155. package/hooks/useKeyUp.js +0 -15
  156. package/hooks/useMeasure.js +0 -118
  157. package/hooks/useMountedState.js +0 -12
  158. package/hooks/useNavigateAway.js +0 -24
  159. package/hooks/usePrevious.js +0 -8
  160. package/hooks/usePreviousRef.js +0 -8
  161. package/hooks/useReveal.js +0 -41
  162. package/hooks/useScrollPosition.js +0 -57
  163. package/hooks/useScrollThreshold.js +0 -25
  164. package/hooks/useScrollTo.js +0 -17
  165. package/hooks/useSmoothScroll.js +0 -31
  166. package/hooks/useSpinDelay.js +0 -35
  167. package/hooks/useTraceUpdate.js +0 -16
  168. package/hooks/useUpdateEffect.js +0 -10
  169. package/hooks/useWindowSize.js +0 -19
  170. package/index.cjs.d.ts +0 -1
  171. package/index.cjs.default.js +0 -1
  172. package/index.cjs.js +0 -87
  173. package/index.cjs.mjs +0 -2
  174. package/index.esm.js +0 -58
  175. package/utils/Polymorphic.js +0 -1
  176. package/utils/classed.js +0 -40
  177. package/utils/createUseMediaQueryWidth.js +0 -37
  178. package/utils/extendComponent.js +0 -8
  179. package/utils/index.d.ts +0 -5
  180. package/utils/index.js +0 -4
  181. package/utils/mergeRefs.js +0 -12
  182. /package/{utils → cjs}/Polymorphic.d.ts +0 -0
@@ -4,4 +4,4 @@ type Position = {
4
4
  };
5
5
  type ElementRef = React.MutableRefObject<HTMLElement | undefined>;
6
6
  export declare let useScrollPosition: (effect: (currentPosition: Position, prevPosition: Position) => void, deps?: import("react").DependencyList, element?: ElementRef, boundingElement?: ElementRef, wait?: number) => void;
7
- export {};
7
+ export default useScrollPosition;
@@ -0,0 +1 @@
1
+ import{useRef as t}from"react";import{isBrowser as r}from"@koine/utils";import{listenScroll as e}from"@koine/dom";import{useIsomorphicLayoutEffect as o}from"./useIsomorphicLayoutEffect";let l={x:0,y:0},n=t=>t?.getBoundingClientRect(),u=(t,e)=>{if(!r)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};export let useScrollPosition=(l,n=[],i,c,m)=>{let f=t(u(null,c)),s=null,d=()=>{let t=u(i,c);l(t,f.current),f.current=t,s=null};o(()=>{if(!r)return;let t=e(()=>{m?null===s&&(s=window.setTimeout(d,m)):d()},c?.current);return()=>{t(),s&&clearTimeout(s)}},n)};export default useScrollPosition;
@@ -1 +1,2 @@
1
1
  export declare let useScrollThreshold: (threshold?: number, callback?: ((isAbove: boolean, isBelow: boolean) => void) | undefined) => boolean;
2
+ export default useScrollThreshold;
@@ -0,0 +1 @@
1
+ import{useCallback as r,useEffect as e,useState as o}from"react";import{noop as t}from"@koine/utils";import{listenScroll as l}from"@koine/dom";export let useScrollThreshold=(i,m)=>{let[u,f]=o(!1),n=r(()=>{if(i){let r=window.scrollY,e=r<i,o=r>i;f(o),m&&m(e,o)}},[i,m]);return e(()=>{if(i){let r=l(n);return n(),r}return t},[i,n]),u};export default useScrollThreshold;
@@ -1 +1,2 @@
1
1
  export declare let useScrollTo: (id?: string, offset?: number) => void;
2
+ export default useScrollTo;
@@ -0,0 +1 @@
1
+ import{isBrowser as e}from"@koine/utils";export let useScrollTo=(o="",t=0)=>{if(!e)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)};export default useScrollTo;
@@ -1 +1,2 @@
1
1
  export declare let useSmoothScroll: (disregardAutomaticFixedOffset?: boolean) => (to?: number | string, customOffset?: number, callback?: () => void, fallbackTimeout?: number, behavior?: ScrollBehavior) => void;
2
+ export default useSmoothScroll;
@@ -0,0 +1 @@
1
+ import{useCallback as e}from"react";import{isNumber as t}from"@koine/utils";import{getOffsetTopSlim as o,scrollTo as r}from"@koine/dom";import{useFixedOffset as l}from"./useFixedOffset";export let useSmoothScroll=m=>{let i=l();return e((e,l,f,u,n)=>{let c;let p=!1;if(t(e))c=e;else if(e){let t=document.getElementById(e);t&&(c=o(t)-i.current,p=!0)}t(c)&&r(c=c+(l||0)+(m||p?0:i.current),f,u,n)},[m,i])};export default useSmoothScroll;
@@ -1 +1,2 @@
1
1
  export declare let useSpinDelay: (loading: boolean, delay?: number, minDuration?: number) => boolean;
2
+ export default useSpinDelay;
@@ -0,0 +1 @@
1
+ import{useEffect as e,useRef as r,useState as t}from"react";export let useSpinDelay=(u,c=500,i=200)=>{let[n,o]=t(0),l=r();return e(()=>{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]),e(()=>()=>clearTimeout(l.current),[]),2===n||3===n};export default useSpinDelay;
@@ -1 +1,2 @@
1
1
  export declare let useTraceUpdate: (props: any) => void;
2
+ export default useTraceUpdate;
@@ -0,0 +1 @@
1
+ import{useEffect as e,useRef as t}from"react";export let useTraceUpdate=r=>{let c=t(r);e(()=>{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})};export default useTraceUpdate;
@@ -1,2 +1,3 @@
1
1
  import { useEffect } from "react";
2
2
  export declare let useUpdateEffect: typeof useEffect;
3
+ export default useUpdateEffect;
@@ -0,0 +1 @@
1
+ import{useEffect as t}from"react";import{useFirstMountState as e}from"./useFirstMountState";export let useUpdateEffect=(r,f)=>{let o=e();t(()=>{if(!o)return r()},f)};export default useUpdateEffect;
@@ -1,2 +1,3 @@
1
1
  import { debounce } from "@koine/utils";
2
2
  export declare let useWindowSize: (wait?: Parameters<typeof debounce>[1], immediate?: Parameters<typeof debounce>[2]) => readonly [number, number];
3
+ export default useWindowSize;
@@ -0,0 +1 @@
1
+ import{useEffect as e,useState as i}from"react";import{listenResize as r,listenResizeDebounced as t}from"@koine/dom";export let useWindowSize=(o,n)=>{let[d,w]=i(0),[m,u]=i(0);return e(()=>{let e=()=>{w(window.innerWidth),u(window.innerHeight)},i=o?t(0,e,o,n):r(e);return e(),i},[o,n]),[d,m]};export default useWindowSize;
package/classed.d.ts CHANGED
@@ -4,5 +4,5 @@ type ClassedAugmentedProps<Props> = Props & {
4
4
  ref?: React.Ref<any>;
5
5
  };
6
6
  type ClassedFinalProps<Props, Component> = Component extends React.ReactHTML ? React.HTMLProps<Component> & ClassedAugmentedProps<Props> : ClassedAugmentedProps<Props>;
7
- export declare let classed: <Props, Component extends React.ElementType<any, keyof React.JSX.IntrinsicElements> = any>(component: Component) => (strings: TemplateStringsArray, ...args: ((props: Props) => string)[] | string[]) => React.ForwardRefExoticComponent<React.PropsWithoutRef<ClassedFinalProps<Props, Component>> & React.RefAttributes<Component>>;
7
+ export declare let classed: <Props, Component extends React.ElementType<any, keyof React.JSX.IntrinsicElements> = any>(component: Component) => (strings: TemplateStringsArray, ...args: string[] | ((props: Props) => string)[]) => React.ForwardRefExoticComponent<React.PropsWithoutRef<ClassedFinalProps<Props, Component>> & React.RefAttributes<Component>>;
8
8
  export default classed;
package/classed.js CHANGED
@@ -1,41 +1 @@
1
- import React, { createElement, forwardRef } from "react";
2
- export let classed = (component) => {
3
- const type = component.type || component;
4
- return function (strings, ...args) {
5
- const WrappedComponent = forwardRef(function (props, ref) {
6
- const argResolved = args
7
- .map((arg, index) => {
8
- let result = "";
9
- if (typeof arg === "function") {
10
- result = arg(props);
11
- }
12
- else if (typeof arg !== "undefined") {
13
- result = arg.toString();
14
- }
15
- return strings[index] + result;
16
- })
17
- .join("");
18
- const isNativeHtmlElement = typeof type === "string";
19
- const propsToForward = isNativeHtmlElement
20
- ? {}
21
- : props;
22
- if (isNativeHtmlElement) {
23
- for (const key in props) {
24
- if (!key.startsWith("$")) {
25
- propsToForward[key] = props[key];
26
- }
27
- }
28
- }
29
- let className = argResolved || strings[0];
30
- className = className.match(/class="([^"]*)/)?.[1] || className;
31
- className += props?.className ? " " + props?.className : "";
32
- return createElement(type, {
33
- ...propsToForward,
34
- className: className || undefined,
35
- ref,
36
- });
37
- });
38
- return WrappedComponent;
39
- };
40
- };
41
- export default classed;
1
+ import{createElement as t,forwardRef as e}from"react";export let classed=r=>{let s=r.type||r;return function(r,...a){return e(function(e,n){let o=a.map((t,s)=>{let a="";return"function"==typeof t?a=t(e):void 0!==t&&(a=t.toString()),r[s]+a}).join(""),l="string"==typeof s,i=l?{}:e;if(l)for(let t in e)t.startsWith("$")||(i[t]=e[t]);let c=o||r[0];return c=(c.match(/class="([^"]*)/)?.[1]||c)+(e?.className?" "+e?.className:""),t(s,{...i,className:c||void 0,ref:n})})}};export default classed;
@@ -1,38 +1 @@
1
- import { useState } from "react";
2
- import { getMediaQueryWidthResolvers, isUndefined, } from "@koine/utils";
3
- import { useIsomorphicLayoutEffect } from "./useIsomorphicLayoutEffect";
4
- export let createUseMediaQueryWidth = (customBreakpoints) => {
5
- const queryResolvers = getMediaQueryWidthResolvers(customBreakpoints);
6
- return function useMediaQueryWidth(media, serverValue) {
7
- const definition = media.substring(1);
8
- let [rule, ruleBreakpoint] = definition.split("-");
9
- if (isUndefined(ruleBreakpoint)) {
10
- ruleBreakpoint = rule;
11
- }
12
- if (isUndefined(rule)) {
13
- rule = "min";
14
- }
15
- const [br1, br2] = ruleBreakpoint.split("_");
16
- const query = queryResolvers[rule](br1, br2);
17
- const [matches, setMatches] = useState(isUndefined(serverValue) ? null : serverValue);
18
- useIsomorphicLayoutEffect(() => {
19
- const mq = window.matchMedia(query);
20
- const handleChange = (event) => {
21
- setMatches(event.matches);
22
- };
23
- setMatches(mq.matches);
24
- if (!mq.addEventListener) {
25
- mq.addListener(handleChange);
26
- return () => {
27
- mq.removeListener(handleChange);
28
- };
29
- }
30
- mq.addEventListener("change", handleChange);
31
- return () => {
32
- mq.removeEventListener("change", handleChange);
33
- };
34
- }, [query]);
35
- return matches;
36
- };
37
- };
38
- export default createUseMediaQueryWidth;
1
+ import{useState as e}from"react";import{getMediaQueryWidthResolvers as t,isUndefined as r}from"@koine/utils";import{useIsomorphicLayoutEffect as i}from"./useIsomorphicLayoutEffect";export let createUseMediaQueryWidth=n=>{let a=t(n);return function(t,n){let[o,s]=t.substring(1).split("-");r(s)&&(s=o),r(o)&&(o="min");let[d,m]=s.split("_"),u=a[o](d,m),[c,l]=e(r(n)?null:n);return i(()=>{let e=window.matchMedia(u),t=e=>{l(e.matches)};return(l(e.matches),e.addEventListener)?(e.addEventListener("change",t),()=>{e.removeEventListener("change",t)}):(e.addListener(t),()=>{e.removeListener(t)})},[u]),c}};export default createUseMediaQueryWidth;
@@ -1,9 +1 @@
1
- import { createElement } from "react";
2
- export let extendComponent = (component, defaultProps) => {
3
- const NewComponent = (props) => createElement(component, props);
4
- return Object.assign(NewComponent, {
5
- ...defaultProps,
6
- defaultProps,
7
- });
8
- };
9
- export default extendComponent;
1
+ import{createElement as e}from"react";export let extendComponent=(t,o)=>Object.assign(o=>e(t,o),{...o,defaultProps:o});export default extendComponent;
package/forms/antispam.js CHANGED
@@ -1,29 +1 @@
1
- import { object } from "@kuus/yup";
2
- import { decode, encode, isUndefined } from "@koine/utils";
3
- export let encodeForm = (validationRules) => {
4
- const encoded = {};
5
- const encodedNames = {};
6
- for (const name in validationRules) {
7
- if (!name.startsWith("_")) {
8
- const encodedName = encode(name);
9
- encoded[encodedName] = validationRules[name];
10
- encodedNames[name] = encodedName;
11
- }
12
- }
13
- const encodedSchema = object(encoded).required();
14
- return { encodedSchema, encodedNames };
15
- };
16
- export let decodeForm = (formData) => {
17
- const json = {};
18
- for (const encodedName in formData) {
19
- const decodedName = decode(encodedName);
20
- if (encodedName.startsWith("_")) {
21
- json[encodedName.substring(1)] = formData[encodedName];
22
- }
23
- else if (!isUndefined(formData[encodedName]) &&
24
- formData[decodedName] === "") {
25
- json[decodedName] = formData[encodedName];
26
- }
27
- }
28
- return json;
29
- };
1
+ import{object as e}from"@kuus/yup";import{decode as t,encode as r,isUndefined as o}from"@koine/utils";export let encodeForm=t=>{let o={},i={};for(let e in t)if(!e.startsWith("_")){let l=r(e);o[l]=t[e],i[e]=l}return{encodedSchema:e(o).required(),encodedNames:i}};export let decodeForm=e=>{let r={};for(let i in e){let l=t(i);i.startsWith("_")?r[i.substring(1)]=e[i]:o(e[i])||""!==e[l]||(r[l]=e[i])}return r};
package/forms.js CHANGED
@@ -1 +1 @@
1
- export * from "./forms/antispam";
1
+ export*from"./forms/antispam";
package/index.js CHANGED
@@ -1,26 +1 @@
1
- export { classed } from "./classed";
2
- export { createUseMediaQueryWidth, } from "./createUseMediaQueryWidth";
3
- export { extendComponent, } from "./extendComponent";
4
- export { FaviconTags } from "./FaviconTags";
5
- export { mergeRefs } from "./mergeRefs";
6
- export { Meta } from "./Meta";
7
- export { NoJs } from "./NoJs";
8
- export { useAsyncFn, } from "./useAsyncFn";
9
- export { useFirstMountState } from "./useFirstMountState";
10
- export { useFixedOffset } from "./useFixedOffset";
11
- export { useFocus } from "./useFocus";
12
- export { useInterval } from "./useInterval";
13
- export { useIsomorphicLayoutEffect } from "./useIsomorphicLayoutEffect";
14
- export { useKeyUp } from "./useKeyUp";
15
- export { useMeasure, } from "./useMeasure";
16
- export { useMountedState } from "./useMountedState";
17
- export { useNavigateAway, } from "./useNavigateAway";
18
- export { usePrevious } from "./usePrevious";
19
- export { usePreviousRef } from "./usePreviousRef";
20
- export { useScrollPosition } from "./useScrollPosition";
21
- export { useScrollThreshold } from "./useScrollThreshold";
22
- export { useSmoothScroll } from "./useSmoothScroll";
23
- export { useSpinDelay } from "./useSpinDelay";
24
- export { useTraceUpdate } from "./useTraceUpdate";
25
- export { useUpdateEffect } from "./useUpdateEffect";
26
- export { useWindowSize } from "./useWindowSize";
1
+ export{classed}from"./classed";export{createUseMediaQueryWidth}from"./createUseMediaQueryWidth";export{extendComponent}from"./extendComponent";export{FaviconTags}from"./FaviconTags";export{mergeRefs}from"./mergeRefs";export{Meta}from"./Meta";export{NoJs}from"./NoJs";export{useAsyncFn}from"./useAsyncFn";export{useFirstMountState}from"./useFirstMountState";export{useFixedOffset}from"./useFixedOffset";export{useFocus}from"./useFocus";export{useInterval}from"./useInterval";export{useIsomorphicLayoutEffect}from"./useIsomorphicLayoutEffect";export{useKeyUp}from"./useKeyUp";export{useMeasure}from"./useMeasure";export{useMountedState}from"./useMountedState";export{useNavigateAway}from"./useNavigateAway";export{usePrevious}from"./usePrevious";export{usePreviousRef}from"./usePreviousRef";export{useScrollPosition}from"./useScrollPosition";export{useScrollThreshold}from"./useScrollThreshold";export{useSmoothScroll}from"./useSmoothScroll";export{useSpinDelay}from"./useSpinDelay";export{useTraceUpdate}from"./useTraceUpdate";export{useUpdateEffect}from"./useUpdateEffect";export{useWindowSize}from"./useWindowSize";
package/mergeRefs.js CHANGED
@@ -1,13 +1 @@
1
- export let mergeRefs = (refs) => {
2
- return (value) => {
3
- refs.forEach((ref) => {
4
- if (typeof ref === "function") {
5
- ref(value);
6
- }
7
- else if (ref != null) {
8
- ref.current = value;
9
- }
10
- });
11
- };
12
- };
13
- export default mergeRefs;
1
+ export let mergeRefs=e=>r=>{e.forEach(e=>{"function"==typeof e?e(r):null!=e&&(e.current=r)})};export default mergeRefs;
package/package.json CHANGED
@@ -2,8 +2,8 @@
2
2
  "name": "@koine/react",
3
3
  "sideEffects": false,
4
4
  "dependencies": {
5
- "@koine/dom": "2.0.0-beta.74",
6
- "@koine/utils": "2.0.0-beta.74"
5
+ "@koine/dom": "2.0.0-beta.76",
6
+ "@koine/utils": "2.0.0-beta.76"
7
7
  },
8
8
  "peerDependencies": {
9
9
  "@kuus/yup": "1.0.0-beta.7",
@@ -25,25 +25,182 @@
25
25
  "optional": true
26
26
  }
27
27
  },
28
+ "module": "./index.js",
29
+ "type": "module",
30
+ "main": "./cjs/index.js",
28
31
  "exports": {
29
- "./package.json": "./package.json",
30
32
  ".": {
31
- "module": "./index.esm.js",
32
- "import": "./index.cjs.mjs",
33
- "default": "./index.cjs.js"
33
+ "require": "./cjs/index.js",
34
+ "import": "./index.js"
35
+ },
36
+ "./FaviconTags": {
37
+ "require": "./cjs/FaviconTags.js",
38
+ "import": "./FaviconTags.js"
39
+ },
40
+ "./Meta": {
41
+ "require": "./cjs/Meta.js",
42
+ "import": "./Meta.js"
43
+ },
44
+ "./NoJs": {
45
+ "require": "./cjs/NoJs.js",
46
+ "import": "./NoJs.js"
47
+ },
48
+ "./Polymorphic": {
49
+ "require": "./cjs/Polymorphic.js",
50
+ "import": "./Polymorphic.js"
34
51
  },
35
52
  "./calendar": {
36
- "module": "./calendar.esm.js",
37
- "import": "./calendar.cjs.mjs",
38
- "default": "./calendar.cjs.js"
53
+ "require": "./cjs/calendar.js",
54
+ "import": "./calendar.js"
55
+ },
56
+ "./calendar/CalendarDaygridCell": {
57
+ "require": "./cjs/calendar/CalendarDaygridCell.js",
58
+ "import": "./calendar/CalendarDaygridCell.js"
59
+ },
60
+ "./calendar/CalendarDaygridNav": {
61
+ "require": "./cjs/calendar/CalendarDaygridNav.js",
62
+ "import": "./calendar/CalendarDaygridNav.js"
63
+ },
64
+ "./calendar/CalendarDaygridTable": {
65
+ "require": "./cjs/calendar/CalendarDaygridTable.js",
66
+ "import": "./calendar/CalendarDaygridTable.js"
67
+ },
68
+ "./calendar/CalendarLegend": {
69
+ "require": "./cjs/calendar/CalendarLegend.js",
70
+ "import": "./calendar/CalendarLegend.js"
71
+ },
72
+ "./calendar/calendar-api-google": {
73
+ "require": "./cjs/calendar/calendar-api-google.js",
74
+ "import": "./calendar/calendar-api-google.js"
75
+ },
76
+ "./calendar/types": {
77
+ "require": "./cjs/calendar/types.js",
78
+ "import": "./calendar/types.js"
79
+ },
80
+ "./calendar/useCalendar": {
81
+ "require": "./cjs/calendar/useCalendar.js",
82
+ "import": "./calendar/useCalendar.js"
83
+ },
84
+ "./calendar/useDateLocale": {
85
+ "require": "./cjs/calendar/useDateLocale.js",
86
+ "import": "./calendar/useDateLocale.js"
87
+ },
88
+ "./calendar/utils": {
89
+ "require": "./cjs/calendar/utils.js",
90
+ "import": "./calendar/utils.js"
91
+ },
92
+ "./classed": {
93
+ "require": "./cjs/classed.js",
94
+ "import": "./classed.js"
95
+ },
96
+ "./createUseMediaQueryWidth": {
97
+ "require": "./cjs/createUseMediaQueryWidth.js",
98
+ "import": "./createUseMediaQueryWidth.js"
99
+ },
100
+ "./extendComponent": {
101
+ "require": "./cjs/extendComponent.js",
102
+ "import": "./extendComponent.js"
39
103
  },
40
104
  "./forms": {
41
- "module": "./forms.esm.js",
42
- "import": "./forms.cjs.mjs",
43
- "default": "./forms.cjs.js"
105
+ "require": "./cjs/forms.js",
106
+ "import": "./forms.js"
107
+ },
108
+ "./forms/antispam": {
109
+ "require": "./cjs/forms/antispam.js",
110
+ "import": "./forms/antispam.js"
111
+ },
112
+ "./mergeRefs": {
113
+ "require": "./cjs/mergeRefs.js",
114
+ "import": "./mergeRefs.js"
115
+ },
116
+ "./types": {
117
+ "require": "./cjs/types.js",
118
+ "import": "./types.js"
119
+ },
120
+ "./useAsyncFn": {
121
+ "require": "./cjs/useAsyncFn.js",
122
+ "import": "./useAsyncFn.js"
123
+ },
124
+ "./useFirstMountState": {
125
+ "require": "./cjs/useFirstMountState.js",
126
+ "import": "./useFirstMountState.js"
127
+ },
128
+ "./useFixedOffset": {
129
+ "require": "./cjs/useFixedOffset.js",
130
+ "import": "./useFixedOffset.js"
131
+ },
132
+ "./useFocus": {
133
+ "require": "./cjs/useFocus.js",
134
+ "import": "./useFocus.js"
135
+ },
136
+ "./useInterval": {
137
+ "require": "./cjs/useInterval.js",
138
+ "import": "./useInterval.js"
139
+ },
140
+ "./useIsomorphicLayoutEffect": {
141
+ "require": "./cjs/useIsomorphicLayoutEffect.js",
142
+ "import": "./useIsomorphicLayoutEffect.js"
143
+ },
144
+ "./useKeyUp": {
145
+ "require": "./cjs/useKeyUp.js",
146
+ "import": "./useKeyUp.js"
147
+ },
148
+ "./useMeasure": {
149
+ "require": "./cjs/useMeasure.js",
150
+ "import": "./useMeasure.js"
151
+ },
152
+ "./useMountedState": {
153
+ "require": "./cjs/useMountedState.js",
154
+ "import": "./useMountedState.js"
155
+ },
156
+ "./useNavigateAway": {
157
+ "require": "./cjs/useNavigateAway.js",
158
+ "import": "./useNavigateAway.js"
159
+ },
160
+ "./usePrevious": {
161
+ "require": "./cjs/usePrevious.js",
162
+ "import": "./usePrevious.js"
163
+ },
164
+ "./usePreviousRef": {
165
+ "require": "./cjs/usePreviousRef.js",
166
+ "import": "./usePreviousRef.js"
167
+ },
168
+ "./useReveal": {
169
+ "require": "./cjs/useReveal.js",
170
+ "import": "./useReveal.js"
171
+ },
172
+ "./useScrollPosition": {
173
+ "require": "./cjs/useScrollPosition.js",
174
+ "import": "./useScrollPosition.js"
175
+ },
176
+ "./useScrollThreshold": {
177
+ "require": "./cjs/useScrollThreshold.js",
178
+ "import": "./useScrollThreshold.js"
179
+ },
180
+ "./useScrollTo": {
181
+ "require": "./cjs/useScrollTo.js",
182
+ "import": "./useScrollTo.js"
183
+ },
184
+ "./useSmoothScroll": {
185
+ "require": "./cjs/useSmoothScroll.js",
186
+ "import": "./useSmoothScroll.js"
187
+ },
188
+ "./useSpinDelay": {
189
+ "require": "./cjs/useSpinDelay.js",
190
+ "import": "./useSpinDelay.js"
191
+ },
192
+ "./useTraceUpdate": {
193
+ "require": "./cjs/useTraceUpdate.js",
194
+ "import": "./useTraceUpdate.js"
195
+ },
196
+ "./useUpdateEffect": {
197
+ "require": "./cjs/useUpdateEffect.js",
198
+ "import": "./useUpdateEffect.js"
199
+ },
200
+ "./useWindowSize": {
201
+ "require": "./cjs/useWindowSize.js",
202
+ "import": "./useWindowSize.js"
44
203
  }
45
204
  },
46
- "module": "./index.esm.js",
47
- "main": "./index.cjs.js",
48
- "version": "2.0.0-beta.74"
205
+ "version": "2.0.0-beta.76"
49
206
  }
package/types.js CHANGED
@@ -1 +1 @@
1
- export {};
1
+ export{};
package/useAsyncFn.js CHANGED
@@ -1,26 +1 @@
1
- import React, { useCallback, useRef, useState } from "react";
2
- import { useMountedState } from "./useMountedState";
3
- export let useAsyncFn = (fn, deps = [], initialState = { loading: false }) => {
4
- const lastCallId = useRef(0);
5
- const isMounted = useMountedState();
6
- const [state, set] = useState(initialState);
7
- const callback = useCallback((...args) => {
8
- const callId = ++lastCallId.current;
9
- if (!state.loading) {
10
- set((prevState) => ({ ...prevState, loading: true }));
11
- }
12
- return fn(...args).then((value) => {
13
- isMounted() &&
14
- callId === lastCallId.current &&
15
- set({ value, loading: false });
16
- return value;
17
- }, (error) => {
18
- isMounted() &&
19
- callId === lastCallId.current &&
20
- set({ error, loading: false });
21
- return error;
22
- });
23
- }, deps);
24
- return [state, callback];
25
- };
26
- export default useAsyncFn;
1
+ import{useCallback as e,useRef as t,useState as r}from"react";import{useMountedState as n}from"./useMountedState";export let useAsyncFn=(o,u=[],l={loading:!1})=>{let a=t(0),d=n(),[i,c]=r(l),g=e((...e)=>{let t=++a.current;return i.loading||c(e=>({...e,loading:!0})),o(...e).then(e=>(d()&&t===a.current&&c({value:e,loading:!1}),e),e=>(d()&&t===a.current&&c({error:e,loading:!1}),e))},u);return[i,g]};export default useAsyncFn;
@@ -1,10 +1 @@
1
- import { useRef } from "react";
2
- export let useFirstMountState = () => {
3
- const isFirst = useRef(true);
4
- if (isFirst.current) {
5
- isFirst.current = false;
6
- return true;
7
- }
8
- return isFirst.current;
9
- };
10
- export default useFirstMountState;
1
+ import{useRef as t}from"react";export let useFirstMountState=()=>{let r=t(!0);return r.current?(r.current=!1,!0):r.current};export default useFirstMountState;
package/useFixedOffset.js CHANGED
@@ -1,42 +1 @@
1
- import { useRef } from "react";
2
- import { debounce } from "@koine/utils";
3
- import { $each, calculateFixedOffset, injectCss, listenResizeDebounced, } from "@koine/dom";
4
- import { useIsomorphicLayoutEffect } from "./useIsomorphicLayoutEffect";
5
- const inject = (value) => {
6
- injectCss("useFixedOffset", `html{scroll-padding-top: ${value}px}`);
7
- };
8
- export let useFixedOffset = (selector) => {
9
- const fixedOffset = useRef(0);
10
- useIsomorphicLayoutEffect(() => {
11
- const update = () => {
12
- const newFixedOffset = calculateFixedOffset();
13
- fixedOffset.current = newFixedOffset;
14
- inject(newFixedOffset);
15
- };
16
- update();
17
- if (ResizeObserver) {
18
- const observer = new ResizeObserver((entries) => {
19
- let newFixedOffset = 0;
20
- entries.forEach((entry) => {
21
- newFixedOffset += entry.contentRect.height;
22
- });
23
- fixedOffset.current = newFixedOffset;
24
- const updateOnResize = debounce(() => inject(newFixedOffset), 400, true);
25
- updateOnResize();
26
- });
27
- $each(selector || "[data-fixed]", ($el) => {
28
- if (observer)
29
- observer.observe($el);
30
- });
31
- return () => {
32
- observer?.disconnect();
33
- };
34
- }
35
- else {
36
- const listener = listenResizeDebounced(0, update);
37
- return listener;
38
- }
39
- }, [selector]);
40
- return fixedOffset;
41
- };
42
- export default useFixedOffset;
1
+ import{useRef as e}from"react";import{debounce as t}from"@koine/utils";import{$each as r,calculateFixedOffset as o,injectCss as i,listenResizeDebounced as f}from"@koine/dom";import{useIsomorphicLayoutEffect as s}from"./useIsomorphicLayoutEffect";let n=e=>{i("useFixedOffset",`html{scroll-padding-top: ${e}px}`)};export let useFixedOffset=i=>{let l=e(0);return s(()=>{let e=()=>{let e=o();l.current=e,n(e)};if(e(),!ResizeObserver)return f(0,e);{let e=new ResizeObserver(e=>{let r=0;e.forEach(e=>{r+=e.contentRect.height}),l.current=r,t(()=>n(r),400,!0)()});return r(i||"[data-fixed]",t=>{e&&e.observe(t)}),()=>{e?.disconnect()}}},[i]),l};export default useFixedOffset;
package/useFocus.js CHANGED
@@ -1,9 +1 @@
1
- import { useRef } from "react";
2
- export let useFocus = () => {
3
- const elementRef = useRef(null);
4
- const setFocus = () => {
5
- elementRef.current && elementRef.current.focus();
6
- };
7
- return [elementRef, setFocus];
8
- };
9
- export default useFocus;
1
+ import{useRef as e}from"react";export let useFocus=()=>{let r=e(null);return[r,()=>{r.current&&r.current.focus()}]};export default useFocus;
package/useInterval.js CHANGED
@@ -1,20 +1 @@
1
- import { useEffect, useRef } from "react";
2
- import { noop } from "@koine/utils";
3
- export let useInterval = (callback, delay, deps = []) => {
4
- const savedCallback = useRef();
5
- useEffect(() => {
6
- savedCallback.current = callback;
7
- }, [callback, ...deps]);
8
- useEffect(() => {
9
- function tick() {
10
- if (savedCallback.current)
11
- savedCallback.current();
12
- }
13
- if (delay !== null) {
14
- const id = setInterval(tick, delay);
15
- return () => clearInterval(id);
16
- }
17
- return noop;
18
- }, [delay]);
19
- };
20
- export default useInterval;
1
+ import{useEffect as r,useRef as e}from"react";import{noop as t}from"@koine/utils";export let useInterval=(n,l,u=[])=>{let o=e();r(()=>{o.current=n},[n,...u]),r(()=>{if(null!==l){let r=setInterval(function(){o.current&&o.current()},l);return()=>clearInterval(r)}return t},[l])};export default useInterval;
@@ -1,3 +1,3 @@
1
- import { useLayoutEffect } from "react";
2
- export declare let useIsomorphicLayoutEffect: typeof useLayoutEffect;
1
+ import { useEffect } from "react";
2
+ export declare let useIsomorphicLayoutEffect: typeof useEffect;
3
3
  export default useIsomorphicLayoutEffect;
@@ -1,4 +1 @@
1
- import { useEffect, useLayoutEffect } from "react";
2
- import { isBrowser } from "@koine/utils";
3
- export let useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;
4
- export default useIsomorphicLayoutEffect;
1
+ import{useEffect as o,useLayoutEffect as t}from"react";import{isBrowser as e}from"@koine/utils";export let useIsomorphicLayoutEffect=e?t:o;export default useIsomorphicLayoutEffect;
package/useKeyUp.js CHANGED
@@ -1,16 +1 @@
1
- import { useEffect } from "react";
2
- import { on } from "@koine/dom";
3
- export let useKeyUp = (callback, deps = []) => {
4
- useEffect(() => {
5
- const listener = on(window, "keyup", (event) => {
6
- if (!event.ctrlKey &&
7
- !event.altKey &&
8
- !event.shiftKey &&
9
- !event.metaKey) {
10
- callback(event);
11
- }
12
- });
13
- return listener;
14
- }, [callback, ...deps]);
15
- };
16
- export default useKeyUp;
1
+ import{useEffect as e}from"react";import{on as t}from"@koine/dom";export let useKeyUp=(o,r=[])=>{e(()=>t(window,"keyup",e=>{e.ctrlKey||e.altKey||e.shiftKey||e.metaKey||o(e)}),[o,...r])};export default useKeyUp;