@koine/react 2.0.0-beta.75 → 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.
- package/FaviconTags.js +1 -5
- package/Meta.js +1 -5
- package/NoJs.js +1 -7
- package/Polymorphic.js +1 -1
- package/calendar/CalendarDaygridCell.js +1 -42
- package/calendar/CalendarDaygridNav.js +1 -22
- package/calendar/CalendarDaygridTable.js +1 -50
- package/calendar/CalendarLegend.js +1 -4
- package/calendar/calendar-api-google.js +1 -90
- package/calendar/types.js +1 -1
- package/calendar/useCalendar.js +1 -175
- package/calendar/useDateLocale.js +1 -16
- package/calendar/utils.js +1 -172
- package/calendar.js +1 -7
- package/{components → cjs}/FaviconTags.d.ts +1 -0
- package/cjs/FaviconTags.js +1 -0
- package/{components → cjs}/Meta.d.ts +1 -0
- package/cjs/Meta.js +1 -0
- package/{components → cjs}/NoJs.d.ts +1 -0
- package/cjs/NoJs.js +1 -0
- package/cjs/Polymorphic.js +1 -0
- package/cjs/calendar/CalendarDaygridCell.d.ts +35 -0
- package/cjs/calendar/CalendarDaygridCell.js +1 -0
- package/cjs/calendar/CalendarDaygridNav.d.ts +27 -0
- package/cjs/calendar/CalendarDaygridNav.js +1 -0
- package/cjs/calendar/CalendarDaygridTable.d.ts +25 -0
- package/cjs/calendar/CalendarDaygridTable.js +1 -0
- package/cjs/calendar/CalendarLegend.d.ts +18 -0
- package/cjs/calendar/CalendarLegend.js +1 -0
- package/cjs/calendar/calendar-api-google.d.ts +10 -0
- package/cjs/calendar/calendar-api-google.js +1 -0
- package/cjs/calendar/types.d.ts +62 -0
- package/cjs/calendar/types.js +1 -0
- package/cjs/calendar/useCalendar.d.ts +35 -0
- package/cjs/calendar/useCalendar.js +1 -0
- package/cjs/calendar/useDateLocale.d.ts +2 -0
- package/cjs/calendar/useDateLocale.js +1 -0
- package/cjs/calendar/utils.d.ts +11 -0
- package/cjs/calendar/utils.js +1 -0
- package/cjs/calendar.d.ts +7 -0
- package/cjs/calendar.js +1 -0
- package/{utils → cjs}/classed.d.ts +2 -2
- package/cjs/classed.js +1 -0
- package/{utils → cjs}/createUseMediaQueryWidth.d.ts +1 -1
- package/cjs/createUseMediaQueryWidth.js +1 -0
- package/{utils → cjs}/extendComponent.d.ts +1 -1
- package/cjs/extendComponent.js +1 -0
- package/cjs/forms/antispam.d.ts +27 -0
- package/cjs/forms/antispam.js +1 -0
- package/cjs/forms.d.ts +1 -0
- package/cjs/forms.js +1 -0
- package/{hooks → cjs}/index.d.ts +9 -0
- package/cjs/index.js +1 -0
- package/{utils → cjs}/mergeRefs.d.ts +1 -0
- package/cjs/mergeRefs.js +1 -0
- package/cjs/package.json +31 -0
- package/cjs/types.d.ts +2 -0
- package/cjs/types.js +1 -0
- package/{hooks → cjs}/useAsyncFn.d.ts +1 -1
- package/cjs/useAsyncFn.js +1 -0
- package/{hooks → cjs}/useFirstMountState.d.ts +1 -0
- package/cjs/useFirstMountState.js +1 -0
- package/{hooks → cjs}/useFixedOffset.d.ts +1 -0
- package/cjs/useFixedOffset.js +1 -0
- package/{hooks → cjs}/useFocus.d.ts +1 -0
- package/cjs/useFocus.js +1 -0
- package/{hooks → cjs}/useInterval.d.ts +1 -0
- package/cjs/useInterval.js +1 -0
- package/cjs/useIsomorphicLayoutEffect.d.ts +3 -0
- package/cjs/useIsomorphicLayoutEffect.js +1 -0
- package/{hooks → cjs}/useKeyUp.d.ts +1 -0
- package/cjs/useKeyUp.js +1 -0
- package/{hooks → cjs}/useMeasure.d.ts +1 -1
- package/cjs/useMeasure.js +1 -0
- package/{hooks → cjs}/useMountedState.d.ts +1 -0
- package/cjs/useMountedState.js +1 -0
- package/{hooks → cjs}/useNavigateAway.d.ts +1 -0
- package/cjs/useNavigateAway.js +1 -0
- package/{hooks → cjs}/usePrevious.d.ts +1 -0
- package/cjs/usePrevious.js +1 -0
- package/{hooks → cjs}/usePreviousRef.d.ts +1 -0
- package/cjs/usePreviousRef.js +1 -0
- package/{hooks → cjs}/useReveal.d.ts +1 -0
- package/cjs/useReveal.js +1 -0
- package/{hooks → cjs}/useScrollPosition.d.ts +1 -1
- package/cjs/useScrollPosition.js +1 -0
- package/{hooks → cjs}/useScrollThreshold.d.ts +1 -0
- package/cjs/useScrollThreshold.js +1 -0
- package/{hooks → cjs}/useScrollTo.d.ts +1 -0
- package/cjs/useScrollTo.js +1 -0
- package/{hooks → cjs}/useSmoothScroll.d.ts +1 -0
- package/cjs/useSmoothScroll.js +1 -0
- package/{hooks → cjs}/useSpinDelay.d.ts +1 -0
- package/cjs/useSpinDelay.js +1 -0
- package/{hooks → cjs}/useTraceUpdate.d.ts +1 -0
- package/cjs/useTraceUpdate.js +1 -0
- package/{hooks → cjs}/useUpdateEffect.d.ts +1 -0
- package/cjs/useUpdateEffect.js +1 -0
- package/{hooks → cjs}/useWindowSize.d.ts +1 -0
- package/cjs/useWindowSize.js +1 -0
- package/classed.d.ts +1 -1
- package/classed.js +1 -41
- package/createUseMediaQueryWidth.js +1 -38
- package/extendComponent.js +1 -9
- package/forms/antispam.js +1 -29
- package/forms.js +1 -1
- package/index.js +1 -26
- package/mergeRefs.js +1 -13
- package/package.json +53 -136
- package/types.js +1 -1
- package/useAsyncFn.js +1 -26
- package/useFirstMountState.js +1 -10
- package/useFixedOffset.js +1 -42
- package/useFocus.js +1 -9
- package/useInterval.js +1 -20
- package/useIsomorphicLayoutEffect.d.ts +2 -2
- package/useIsomorphicLayoutEffect.js +1 -4
- package/useKeyUp.js +1 -16
- package/useMeasure.js +1 -119
- package/useMountedState.js +1 -13
- package/useNavigateAway.js +1 -25
- package/usePrevious.js +1 -9
- package/usePreviousRef.js +1 -9
- package/useReveal.js +1 -42
- package/useScrollPosition.js +1 -58
- package/useScrollThreshold.js +1 -26
- package/useScrollTo.js +1 -18
- package/useSmoothScroll.js +1 -32
- package/useSpinDelay.js +1 -36
- package/useTraceUpdate.js +1 -17
- package/useUpdateEffect.js +1 -11
- package/useWindowSize.js +1 -20
- package/README.md +0 -1
- package/calendar.cjs.d.ts +0 -1
- package/calendar.cjs.default.js +0 -1
- package/calendar.cjs.js +0 -62
- package/calendar.cjs.mjs +0 -2
- package/calendar.esm.js +0 -35
- package/components/FaviconTags.js +0 -4
- package/components/Meta.js +0 -4
- package/components/NoJs.js +0 -6
- package/forms.cjs.d.ts +0 -1
- package/forms.cjs.default.js +0 -1
- package/forms.cjs.js +0 -11
- package/forms.cjs.mjs +0 -2
- package/forms.esm.js +0 -6
- package/hooks/index.js +0 -19
- package/hooks/useAsyncFn.js +0 -25
- package/hooks/useFirstMountState.js +0 -9
- package/hooks/useFixedOffset.js +0 -41
- package/hooks/useFocus.js +0 -8
- package/hooks/useInterval.js +0 -19
- package/hooks/useIsomorphicLayoutEffect.d.ts +0 -2
- package/hooks/useIsomorphicLayoutEffect.js +0 -3
- package/hooks/useKeyUp.js +0 -15
- package/hooks/useMeasure.js +0 -118
- package/hooks/useMountedState.js +0 -12
- package/hooks/useNavigateAway.js +0 -24
- package/hooks/usePrevious.js +0 -8
- package/hooks/usePreviousRef.js +0 -8
- package/hooks/useReveal.js +0 -41
- package/hooks/useScrollPosition.js +0 -57
- package/hooks/useScrollThreshold.js +0 -25
- package/hooks/useScrollTo.js +0 -17
- package/hooks/useSmoothScroll.js +0 -31
- package/hooks/useSpinDelay.js +0 -35
- package/hooks/useTraceUpdate.js +0 -16
- package/hooks/useUpdateEffect.js +0 -10
- package/hooks/useWindowSize.js +0 -19
- package/index.cjs.d.ts +0 -1
- package/index.cjs.default.js +0 -1
- package/index.cjs.js +0 -87
- package/index.cjs.mjs +0 -2
- package/index.esm.js +0 -58
- package/utils/Polymorphic.js +0 -1
- package/utils/classed.js +0 -40
- package/utils/createUseMediaQueryWidth.js +0 -37
- package/utils/extendComponent.js +0 -8
- package/utils/index.d.ts +0 -5
- package/utils/index.js +0 -4
- package/utils/mergeRefs.js +0 -12
- /package/{utils → cjs}/Polymorphic.d.ts +0 -0
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { useCallback, useEffect, useState } from "react";
|
|
2
|
-
import { noop } from "@koine/utils";
|
|
3
|
-
import { listenScroll } from "@koine/dom";
|
|
4
|
-
export let useScrollThreshold = (threshold, callback) => {
|
|
5
|
-
const [isBelow, setIsBelow] = useState(false);
|
|
6
|
-
const handler = useCallback(() => {
|
|
7
|
-
if (threshold) {
|
|
8
|
-
const posY = window.scrollY;
|
|
9
|
-
const isAbove = posY < threshold;
|
|
10
|
-
const isBelow = posY > threshold;
|
|
11
|
-
setIsBelow(isBelow);
|
|
12
|
-
if (callback)
|
|
13
|
-
callback(isAbove, isBelow);
|
|
14
|
-
}
|
|
15
|
-
}, [threshold, callback]);
|
|
16
|
-
useEffect(() => {
|
|
17
|
-
if (threshold) {
|
|
18
|
-
const listener = listenScroll(handler);
|
|
19
|
-
handler();
|
|
20
|
-
return listener;
|
|
21
|
-
}
|
|
22
|
-
return noop;
|
|
23
|
-
}, [threshold, handler]);
|
|
24
|
-
return isBelow;
|
|
25
|
-
};
|
package/hooks/useScrollTo.js
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import { isBrowser } from "@koine/utils";
|
|
2
|
-
export let useScrollTo = (id = "", offset = 0) => {
|
|
3
|
-
if (!isBrowser) {
|
|
4
|
-
return;
|
|
5
|
-
}
|
|
6
|
-
const headerOffset = 0;
|
|
7
|
-
let element = document.getElementById(id);
|
|
8
|
-
let top = 0;
|
|
9
|
-
if (element && element.offsetParent) {
|
|
10
|
-
do {
|
|
11
|
-
top += element.offsetTop;
|
|
12
|
-
} while ((element = element.offsetParent));
|
|
13
|
-
}
|
|
14
|
-
top -= offset;
|
|
15
|
-
top -= headerOffset;
|
|
16
|
-
window.scroll(0, top);
|
|
17
|
-
};
|
package/hooks/useSmoothScroll.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { useCallback } from "react";
|
|
2
|
-
import { isNumber } from "@koine/utils";
|
|
3
|
-
import { getOffsetTopSlim, scrollTo } from "@koine/dom";
|
|
4
|
-
import { useFixedOffset } from "./useFixedOffset";
|
|
5
|
-
export let useSmoothScroll = (disregardAutomaticFixedOffset) => {
|
|
6
|
-
const fixedOffset = useFixedOffset();
|
|
7
|
-
const scroll = useCallback((to, customOffset, callback, fallbackTimeout, behavior) => {
|
|
8
|
-
let top = undefined;
|
|
9
|
-
let toIsElement = false;
|
|
10
|
-
if (isNumber(to)) {
|
|
11
|
-
top = to;
|
|
12
|
-
}
|
|
13
|
-
else if (to) {
|
|
14
|
-
const el = document.getElementById(to);
|
|
15
|
-
if (el) {
|
|
16
|
-
top = getOffsetTopSlim(el) - fixedOffset.current;
|
|
17
|
-
toIsElement = true;
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
if (isNumber(top)) {
|
|
21
|
-
top =
|
|
22
|
-
top +
|
|
23
|
-
(customOffset || 0) +
|
|
24
|
-
(disregardAutomaticFixedOffset || toIsElement
|
|
25
|
-
? 0
|
|
26
|
-
: fixedOffset.current);
|
|
27
|
-
scrollTo(top, callback, fallbackTimeout, behavior);
|
|
28
|
-
}
|
|
29
|
-
}, [disregardAutomaticFixedOffset, fixedOffset]);
|
|
30
|
-
return scroll;
|
|
31
|
-
};
|
package/hooks/useSpinDelay.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { useEffect, useRef, useState } from "react";
|
|
2
|
-
var State;
|
|
3
|
-
(function (State) {
|
|
4
|
-
State[State["IDLE"] = 0] = "IDLE";
|
|
5
|
-
State[State["DELAY"] = 1] = "DELAY";
|
|
6
|
-
State[State["DISPLAY"] = 2] = "DISPLAY";
|
|
7
|
-
State[State["EXPIRE"] = 3] = "EXPIRE";
|
|
8
|
-
})(State || (State = {}));
|
|
9
|
-
export let useSpinDelay = (loading, delay = 500, minDuration = 200) => {
|
|
10
|
-
const [state, setState] = useState(State.IDLE);
|
|
11
|
-
const timeout = useRef();
|
|
12
|
-
useEffect(() => {
|
|
13
|
-
if (loading && state === State.IDLE) {
|
|
14
|
-
clearTimeout(timeout.current);
|
|
15
|
-
timeout.current = setTimeout(() => {
|
|
16
|
-
if (!loading) {
|
|
17
|
-
return setState(State.IDLE);
|
|
18
|
-
}
|
|
19
|
-
timeout.current = setTimeout(() => {
|
|
20
|
-
setState(State.EXPIRE);
|
|
21
|
-
}, minDuration);
|
|
22
|
-
setState(State.DISPLAY);
|
|
23
|
-
}, delay);
|
|
24
|
-
setState(State.DELAY);
|
|
25
|
-
}
|
|
26
|
-
if (!loading && state !== State.DISPLAY) {
|
|
27
|
-
clearTimeout(timeout.current);
|
|
28
|
-
setState(State.IDLE);
|
|
29
|
-
}
|
|
30
|
-
}, [loading, state, delay, minDuration]);
|
|
31
|
-
useEffect(() => {
|
|
32
|
-
return () => clearTimeout(timeout.current);
|
|
33
|
-
}, []);
|
|
34
|
-
return state === State.DISPLAY || state === State.EXPIRE;
|
|
35
|
-
};
|
package/hooks/useTraceUpdate.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { useEffect, useRef } from "react";
|
|
2
|
-
export let useTraceUpdate = (props) => {
|
|
3
|
-
const prev = useRef(props);
|
|
4
|
-
useEffect(() => {
|
|
5
|
-
const changedProps = Object.entries(props).reduce((ps, [k, v]) => {
|
|
6
|
-
if (prev.current[k] !== v) {
|
|
7
|
-
ps[k] = [prev.current[k], v];
|
|
8
|
-
}
|
|
9
|
-
return ps;
|
|
10
|
-
}, {});
|
|
11
|
-
if (Object.keys(changedProps).length > 0) {
|
|
12
|
-
console.info("[@koine/react:useTraceUpdate] changed props:", changedProps);
|
|
13
|
-
}
|
|
14
|
-
prev.current = props;
|
|
15
|
-
});
|
|
16
|
-
};
|
package/hooks/useUpdateEffect.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { useEffect } from "react";
|
|
2
|
-
import { useFirstMountState } from "./useFirstMountState";
|
|
3
|
-
export let useUpdateEffect = (effect, deps) => {
|
|
4
|
-
const isFirstMount = useFirstMountState();
|
|
5
|
-
useEffect(() => {
|
|
6
|
-
if (!isFirstMount) {
|
|
7
|
-
return effect();
|
|
8
|
-
}
|
|
9
|
-
}, deps);
|
|
10
|
-
};
|
package/hooks/useWindowSize.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { useEffect, useState } from "react";
|
|
2
|
-
import { debounce } from "@koine/utils";
|
|
3
|
-
import { listenResize, listenResizeDebounced } from "@koine/dom";
|
|
4
|
-
export let useWindowSize = (wait, immediate) => {
|
|
5
|
-
const [width, widthSet] = useState(0);
|
|
6
|
-
const [height, heightSet] = useState(0);
|
|
7
|
-
useEffect(() => {
|
|
8
|
-
const updateSize = () => {
|
|
9
|
-
widthSet(window.innerWidth);
|
|
10
|
-
heightSet(window.innerHeight);
|
|
11
|
-
};
|
|
12
|
-
const listener = wait
|
|
13
|
-
? listenResizeDebounced(0, updateSize, wait, immediate)
|
|
14
|
-
: listenResize(updateSize);
|
|
15
|
-
updateSize();
|
|
16
|
-
return listener;
|
|
17
|
-
}, [wait, immediate]);
|
|
18
|
-
return [width, height];
|
|
19
|
-
};
|
package/index.cjs.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from "./index";
|
package/index.cjs.default.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
exports._default = require('./index.cjs.js').default;
|
package/index.cjs.js
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
|
-
var react = require('react');
|
|
6
|
-
var utils = require('@koine/utils');
|
|
7
|
-
var jsxRuntime = require('react/jsx-runtime');
|
|
8
|
-
var dom = require('@koine/dom');
|
|
9
|
-
|
|
10
|
-
let classed=r=>{let s=r.type||r;return function(r,...a){return react.forwardRef(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:""),react.createElement(s,{...i,className:c||void 0,ref:n})})}};
|
|
11
|
-
|
|
12
|
-
let useIsomorphicLayoutEffect=utils.isBrowser?react.useLayoutEffect:react.useEffect;
|
|
13
|
-
|
|
14
|
-
let createUseMediaQueryWidth=n=>{let a=utils.getMediaQueryWidthResolvers(n);return function(t,n){let[o,s]=t.substring(1).split("-");utils.isUndefined(s)&&(s=o),utils.isUndefined(o)&&(o="min");let[d,m]=s.split("_"),u=a[o](d,m),[c,l]=react.useState(utils.isUndefined(n)?null:n);return useIsomorphicLayoutEffect(()=>{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}};
|
|
15
|
-
|
|
16
|
-
let extendComponent=(t,o)=>Object.assign(o=>react.createElement(t,o),{...o,defaultProps:o});
|
|
17
|
-
|
|
18
|
-
let FaviconTags=({name:a,color:t,safariTabColor:o,tileColor:c,themeColor:l})=>jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx("link",{rel:"shortcut icon",href:"/favicon.ico",type:"image/x-icon"}),jsxRuntime.jsx("link",{rel:"apple-touch-icon",sizes:"180x180",href:"/apple-touch-icon.png"}),jsxRuntime.jsx("link",{rel:"icon",type:"image/png",sizes:"32x32",href:"/favicon-32x32.png"}),jsxRuntime.jsx("link",{rel:"icon",type:"image/png",sizes:"16x16",href:"/favicon-16x16.png"}),jsxRuntime.jsx("link",{rel:"manifest",href:"/site.webmanifest"}),jsxRuntime.jsx("link",{rel:"mask-icon",href:"/safari-pinned-tab.svg",color:o||t}),jsxRuntime.jsx("meta",{name:"apple-mobile-web-app-title",content:a}),jsxRuntime.jsx("meta",{name:"application-name",content:a}),jsxRuntime.jsx("meta",{name:"msapplication-TileColor",content:c||t}),jsxRuntime.jsx("meta",{name:"theme-color",content:l||t})]});
|
|
19
|
-
|
|
20
|
-
let mergeRefs=e=>r=>{e.forEach(e=>{"function"==typeof e?e(r):null!=e&&(e.current=r);});};
|
|
21
|
-
|
|
22
|
-
let Meta=({zoom:t})=>jsxRuntime.jsx("meta",{name:"viewport",content:`width=device-width, initial-scale=1, maximum-scale=1${t?"":", user-scalable=0"}`});
|
|
23
|
-
|
|
24
|
-
let NoJs=t=>jsxRuntime.jsx("script",{id:"no-js",dangerouslySetInnerHTML:{__html:'document.querySelector("html").className=document.querySelector("html").className.replace(/no-js/,"") + "js";'}});
|
|
25
|
-
|
|
26
|
-
let useMountedState=()=>{let u=react.useRef(!1),n=react.useCallback(()=>u.current,[]);return react.useEffect(()=>(u.current=!0,()=>{u.current=!1;}),[]),n};
|
|
27
|
-
|
|
28
|
-
let useAsyncFn=(o,u=[],l={loading:!1})=>{let a=react.useRef(0),d=useMountedState(),[i,c]=react.useState(l),g=react.useCallback((...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]};
|
|
29
|
-
|
|
30
|
-
let useFirstMountState=()=>{let r=react.useRef(!0);return r.current?(r.current=!1,!0):r.current};
|
|
31
|
-
|
|
32
|
-
let n$1=e=>{dom.injectCss("useFixedOffset",`html{scroll-padding-top: ${e}px}`);};let useFixedOffset=i=>{let l=react.useRef(0);return useIsomorphicLayoutEffect(()=>{let e=()=>{let e=dom.calculateFixedOffset();l.current=e,n$1(e);};if(e(),!ResizeObserver)return dom.listenResizeDebounced(0,e);{let e=new ResizeObserver(e=>{let r=0;e.forEach(e=>{r+=e.contentRect.height;}),l.current=r,utils.debounce(()=>n$1(r),400,!0)();});return dom.$each(i||"[data-fixed]",t=>{e&&e.observe(t);}),()=>{e?.disconnect();}}},[i]),l};
|
|
33
|
-
|
|
34
|
-
let useFocus=()=>{let r=react.useRef(null);return [r,()=>{r.current&&r.current.focus();}]};
|
|
35
|
-
|
|
36
|
-
let useInterval=(n,l,u=[])=>{let o=react.useRef();react.useEffect(()=>{o.current=n;},[n,...u]),react.useEffect(()=>{if(null!==l){let r=setInterval(function(){o.current&&o.current();},l);return ()=>clearInterval(r)}return utils.noop},[l]);};
|
|
37
|
-
|
|
38
|
-
let useKeyUp=(o,r=[])=>{react.useEffect(()=>dom.on(window,"keyup",e=>{e.ctrlKey||e.altKey||e.shiftKey||e.metaKey||o(e);}),[o,...r]);};
|
|
39
|
-
|
|
40
|
-
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]};
|
|
41
|
-
|
|
42
|
-
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)),[]);};
|
|
43
|
-
|
|
44
|
-
let usePrevious=(r,t)=>{let[o,u]=react.useState([r,t]);return o[1]!==r&&u([o[1],r]),o[0]};
|
|
45
|
-
|
|
46
|
-
let usePreviousRef=t=>{let u=react.useRef();return react.useEffect(()=>{u.current=t;}),u.current};
|
|
47
|
-
|
|
48
|
-
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(()=>{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);};
|
|
49
|
-
|
|
50
|
-
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};
|
|
51
|
-
|
|
52
|
-
let useSmoothScroll=m=>{let i=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])};
|
|
53
|
-
|
|
54
|
-
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};
|
|
55
|
-
|
|
56
|
-
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;});};
|
|
57
|
-
|
|
58
|
-
let useUpdateEffect=(r,f)=>{let o=useFirstMountState();react.useEffect(()=>{if(!o)return r()},f);};
|
|
59
|
-
|
|
60
|
-
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]};
|
|
61
|
-
|
|
62
|
-
exports.FaviconTags = FaviconTags;
|
|
63
|
-
exports.Meta = Meta;
|
|
64
|
-
exports.NoJs = NoJs;
|
|
65
|
-
exports.classed = classed;
|
|
66
|
-
exports.createUseMediaQueryWidth = createUseMediaQueryWidth;
|
|
67
|
-
exports.extendComponent = extendComponent;
|
|
68
|
-
exports.mergeRefs = mergeRefs;
|
|
69
|
-
exports.useAsyncFn = useAsyncFn;
|
|
70
|
-
exports.useFirstMountState = useFirstMountState;
|
|
71
|
-
exports.useFixedOffset = useFixedOffset;
|
|
72
|
-
exports.useFocus = useFocus;
|
|
73
|
-
exports.useInterval = useInterval;
|
|
74
|
-
exports.useIsomorphicLayoutEffect = useIsomorphicLayoutEffect;
|
|
75
|
-
exports.useKeyUp = useKeyUp;
|
|
76
|
-
exports.useMeasure = useMeasure;
|
|
77
|
-
exports.useMountedState = useMountedState;
|
|
78
|
-
exports.useNavigateAway = useNavigateAway;
|
|
79
|
-
exports.usePrevious = usePrevious;
|
|
80
|
-
exports.usePreviousRef = usePreviousRef;
|
|
81
|
-
exports.useScrollPosition = useScrollPosition;
|
|
82
|
-
exports.useScrollThreshold = useScrollThreshold;
|
|
83
|
-
exports.useSmoothScroll = useSmoothScroll;
|
|
84
|
-
exports.useSpinDelay = useSpinDelay;
|
|
85
|
-
exports.useTraceUpdate = useTraceUpdate;
|
|
86
|
-
exports.useUpdateEffect = useUpdateEffect;
|
|
87
|
-
exports.useWindowSize = useWindowSize;
|
package/index.cjs.mjs
DELETED
package/index.esm.js
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import { forwardRef, createElement, useLayoutEffect, useEffect, useState, useRef, useCallback, useMemo } from 'react';
|
|
2
|
-
import { isBrowser, getMediaQueryWidthResolvers, isUndefined, debounce, noop, isNumber } from '@koine/utils';
|
|
3
|
-
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
4
|
-
import { listenResizeDebounced, $each, calculateFixedOffset, injectCss, on, listenScrollDebounced, off, listenScroll, getOffsetTopSlim, scrollTo, listenResize } from '@koine/dom';
|
|
5
|
-
|
|
6
|
-
let classed=r=>{let s=r.type||r;return function(r,...a){return forwardRef(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:""),createElement(s,{...i,className:c||void 0,ref:n})})}};
|
|
7
|
-
|
|
8
|
-
let useIsomorphicLayoutEffect=isBrowser?useLayoutEffect:useEffect;
|
|
9
|
-
|
|
10
|
-
let createUseMediaQueryWidth=n=>{let a=getMediaQueryWidthResolvers(n);return function(t,n){let[o,s]=t.substring(1).split("-");isUndefined(s)&&(s=o),isUndefined(o)&&(o="min");let[d,m]=s.split("_"),u=a[o](d,m),[c,l]=useState(isUndefined(n)?null:n);return useIsomorphicLayoutEffect(()=>{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}};
|
|
11
|
-
|
|
12
|
-
let extendComponent=(t,o)=>Object.assign(o=>createElement(t,o),{...o,defaultProps:o});
|
|
13
|
-
|
|
14
|
-
let FaviconTags=({name:a,color:t,safariTabColor:o,tileColor:c,themeColor:l})=>jsxs(Fragment,{children:[jsx("link",{rel:"shortcut icon",href:"/favicon.ico",type:"image/x-icon"}),jsx("link",{rel:"apple-touch-icon",sizes:"180x180",href:"/apple-touch-icon.png"}),jsx("link",{rel:"icon",type:"image/png",sizes:"32x32",href:"/favicon-32x32.png"}),jsx("link",{rel:"icon",type:"image/png",sizes:"16x16",href:"/favicon-16x16.png"}),jsx("link",{rel:"manifest",href:"/site.webmanifest"}),jsx("link",{rel:"mask-icon",href:"/safari-pinned-tab.svg",color:o||t}),jsx("meta",{name:"apple-mobile-web-app-title",content:a}),jsx("meta",{name:"application-name",content:a}),jsx("meta",{name:"msapplication-TileColor",content:c||t}),jsx("meta",{name:"theme-color",content:l||t})]});
|
|
15
|
-
|
|
16
|
-
let mergeRefs=e=>r=>{e.forEach(e=>{"function"==typeof e?e(r):null!=e&&(e.current=r);});};
|
|
17
|
-
|
|
18
|
-
let Meta=({zoom:t})=>jsx("meta",{name:"viewport",content:`width=device-width, initial-scale=1, maximum-scale=1${t?"":", user-scalable=0"}`});
|
|
19
|
-
|
|
20
|
-
let NoJs=t=>jsx("script",{id:"no-js",dangerouslySetInnerHTML:{__html:'document.querySelector("html").className=document.querySelector("html").className.replace(/no-js/,"") + "js";'}});
|
|
21
|
-
|
|
22
|
-
let useMountedState=()=>{let u=useRef(!1),n=useCallback(()=>u.current,[]);return useEffect(()=>(u.current=!0,()=>{u.current=!1;}),[]),n};
|
|
23
|
-
|
|
24
|
-
let useAsyncFn=(o,u=[],l={loading:!1})=>{let a=useRef(0),d=useMountedState(),[i,c]=useState(l),g=useCallback((...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]};
|
|
25
|
-
|
|
26
|
-
let useFirstMountState=()=>{let r=useRef(!0);return r.current?(r.current=!1,!0):r.current};
|
|
27
|
-
|
|
28
|
-
let n$1=e=>{injectCss("useFixedOffset",`html{scroll-padding-top: ${e}px}`);};let useFixedOffset=i=>{let l=useRef(0);return useIsomorphicLayoutEffect(()=>{let e=()=>{let e=calculateFixedOffset();l.current=e,n$1(e);};if(e(),!ResizeObserver)return listenResizeDebounced(0,e);{let e=new ResizeObserver(e=>{let r=0;e.forEach(e=>{r+=e.contentRect.height;}),l.current=r,debounce(()=>n$1(r),400,!0)();});return $each(i||"[data-fixed]",t=>{e&&e.observe(t);}),()=>{e?.disconnect();}}},[i]),l};
|
|
29
|
-
|
|
30
|
-
let useFocus=()=>{let r=useRef(null);return [r,()=>{r.current&&r.current.focus();}]};
|
|
31
|
-
|
|
32
|
-
let useInterval=(n,l,u=[])=>{let o=useRef();useEffect(()=>{o.current=n;},[n,...u]),useEffect(()=>{if(null!==l){let r=setInterval(function(){o.current&&o.current();},l);return ()=>clearInterval(r)}return noop},[l]);};
|
|
33
|
-
|
|
34
|
-
let useKeyUp=(o,r=[])=>{useEffect(()=>on(window,"keyup",e=>{e.ctrlKey||e.altKey||e.shiftKey||e.metaKey||o(e);}),[o,...r]);};
|
|
35
|
-
|
|
36
|
-
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]};
|
|
37
|
-
|
|
38
|
-
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)),[]);};
|
|
39
|
-
|
|
40
|
-
let usePrevious=(r,t)=>{let[o,u]=useState([r,t]);return o[1]!==r&&u([o[1],r]),o[0]};
|
|
41
|
-
|
|
42
|
-
let usePreviousRef=t=>{let u=useRef();return useEffect(()=>{u.current=t;}),u.current};
|
|
43
|
-
|
|
44
|
-
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);};
|
|
45
|
-
|
|
46
|
-
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};
|
|
47
|
-
|
|
48
|
-
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])};
|
|
49
|
-
|
|
50
|
-
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};
|
|
51
|
-
|
|
52
|
-
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;});};
|
|
53
|
-
|
|
54
|
-
let useUpdateEffect=(r,f)=>{let o=useFirstMountState();useEffect(()=>{if(!o)return r()},f);};
|
|
55
|
-
|
|
56
|
-
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]};
|
|
57
|
-
|
|
58
|
-
export { FaviconTags, Meta, NoJs, classed, createUseMediaQueryWidth, extendComponent, mergeRefs, useAsyncFn, useFirstMountState, useFixedOffset, useFocus, useInterval, useIsomorphicLayoutEffect, useKeyUp, useMeasure, useMountedState, useNavigateAway, usePrevious, usePreviousRef, useScrollPosition, useScrollThreshold, useSmoothScroll, useSpinDelay, useTraceUpdate, useUpdateEffect, useWindowSize };
|
package/utils/Polymorphic.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/utils/classed.js
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
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
|
-
};
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { useState } from "react";
|
|
2
|
-
import { getMediaQueryWidthResolvers, isUndefined, } from "@koine/utils";
|
|
3
|
-
import { useIsomorphicLayoutEffect } from "../hooks";
|
|
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
|
-
};
|
package/utils/extendComponent.js
DELETED
package/utils/index.d.ts
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export { classed } from "./classed";
|
|
2
|
-
export { createUseMediaQueryWidth, type MediaQuerWidthDef, type MediaQueryWidth, } from "./createUseMediaQueryWidth";
|
|
3
|
-
export { type ExtendableComponent, type OverridableComponents, type WithComponents, extendComponent, } from "./extendComponent";
|
|
4
|
-
export { mergeRefs } from "./mergeRefs";
|
|
5
|
-
export type { Polymorphic } from "./Polymorphic";
|
package/utils/index.js
DELETED
package/utils/mergeRefs.js
DELETED
|
File without changes
|