@koine/react 2.0.0-beta.77 → 2.0.0-beta.78
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.d.ts +2 -0
- package/FaviconTags.cjs.default.js +1 -0
- package/FaviconTags.cjs.js +12 -0
- package/FaviconTags.cjs.mjs +2 -0
- package/FaviconTags.esm.js +7 -0
- package/Meta.cjs.d.ts +2 -0
- package/Meta.cjs.default.js +1 -0
- package/Meta.cjs.js +12 -0
- package/Meta.cjs.mjs +2 -0
- package/Meta.esm.js +7 -0
- package/NoJs.cjs.d.ts +2 -0
- package/NoJs.cjs.default.js +1 -0
- package/NoJs.cjs.js +14 -0
- package/NoJs.cjs.mjs +2 -0
- package/NoJs.esm.js +9 -0
- package/Polymorphic.cjs.d.ts +1 -0
- package/Polymorphic.cjs.default.js +1 -0
- package/Polymorphic.cjs.js +2 -0
- package/Polymorphic.cjs.mjs +2 -0
- package/Polymorphic.esm.js +1 -0
- package/README.md +1 -0
- package/calendar.cjs.d.ts +1 -0
- package/calendar.cjs.default.js +1 -0
- package/calendar.cjs.js +588 -0
- package/calendar.cjs.mjs +2 -0
- package/calendar.esm.js +561 -0
- package/classed.cjs.d.ts +2 -0
- package/classed.cjs.default.js +1 -0
- package/classed.cjs.js +48 -0
- package/classed.cjs.mjs +2 -0
- package/classed.d.ts +1 -1
- package/classed.esm.js +43 -0
- package/createUseMediaQueryWidth.cjs.d.ts +2 -0
- package/createUseMediaQueryWidth.cjs.default.js +1 -0
- package/createUseMediaQueryWidth.cjs.js +45 -0
- package/createUseMediaQueryWidth.cjs.mjs +2 -0
- package/createUseMediaQueryWidth.esm.js +40 -0
- package/extendComponent.cjs.d.ts +2 -0
- package/extendComponent.cjs.default.js +1 -0
- package/extendComponent.cjs.js +16 -0
- package/extendComponent.cjs.mjs +2 -0
- package/extendComponent.esm.js +11 -0
- package/forms.cjs.d.ts +1 -0
- package/forms.cjs.default.js +1 -0
- package/forms.cjs.js +37 -0
- package/forms.cjs.mjs +2 -0
- package/forms.esm.js +32 -0
- package/index.cjs.d.ts +1 -0
- package/index.cjs.default.js +1 -0
- package/index.cjs.js +63 -0
- package/index.cjs.mjs +2 -0
- package/index.esm.js +30 -0
- package/mergeRefs.cjs.d.ts +2 -0
- package/mergeRefs.cjs.default.js +1 -0
- package/mergeRefs.cjs.js +19 -0
- package/mergeRefs.cjs.mjs +2 -0
- package/mergeRefs.esm.js +14 -0
- package/package.json +110 -122
- package/types.cjs.d.ts +1 -0
- package/types.cjs.default.js +1 -0
- package/types.cjs.js +2 -0
- package/types.cjs.mjs +2 -0
- package/types.esm.js +1 -0
- package/useAsyncFn.cjs.d.ts +2 -0
- package/useAsyncFn.cjs.default.js +1 -0
- package/useAsyncFn.cjs.js +33 -0
- package/useAsyncFn.cjs.mjs +2 -0
- package/useAsyncFn.esm.js +28 -0
- package/useFirstMountState.cjs.d.ts +2 -0
- package/useFirstMountState.cjs.default.js +1 -0
- package/useFirstMountState.cjs.js +17 -0
- package/useFirstMountState.cjs.mjs +2 -0
- package/useFirstMountState.esm.js +12 -0
- package/useFixedOffset.cjs.d.ts +2 -0
- package/useFixedOffset.cjs.default.js +1 -0
- package/useFixedOffset.cjs.js +49 -0
- package/useFixedOffset.cjs.mjs +2 -0
- package/useFixedOffset.esm.js +44 -0
- package/useFocus.cjs.d.ts +2 -0
- package/useFocus.cjs.default.js +1 -0
- package/useFocus.cjs.js +16 -0
- package/useFocus.cjs.mjs +2 -0
- package/useFocus.esm.js +11 -0
- package/useInterval.cjs.d.ts +2 -0
- package/useInterval.cjs.default.js +1 -0
- package/useInterval.cjs.js +27 -0
- package/useInterval.cjs.mjs +2 -0
- package/useInterval.esm.js +22 -0
- package/useIsomorphicLayoutEffect.cjs.d.ts +2 -0
- package/useIsomorphicLayoutEffect.cjs.default.js +1 -0
- package/useIsomorphicLayoutEffect.cjs.js +11 -0
- package/useIsomorphicLayoutEffect.cjs.mjs +2 -0
- package/useIsomorphicLayoutEffect.d.ts +2 -2
- package/useIsomorphicLayoutEffect.esm.js +6 -0
- package/useKeyUp.cjs.d.ts +2 -0
- package/useKeyUp.cjs.default.js +1 -0
- package/useKeyUp.cjs.js +23 -0
- package/useKeyUp.cjs.mjs +2 -0
- package/useKeyUp.esm.js +18 -0
- package/useMeasure.cjs.d.ts +2 -0
- package/useMeasure.cjs.default.js +1 -0
- package/useMeasure.cjs.js +126 -0
- package/useMeasure.cjs.mjs +2 -0
- package/useMeasure.esm.js +121 -0
- package/useMountedState.cjs.d.ts +2 -0
- package/useMountedState.cjs.default.js +1 -0
- package/useMountedState.cjs.js +20 -0
- package/useMountedState.cjs.mjs +2 -0
- package/useMountedState.esm.js +15 -0
- package/useNavigateAway.cjs.d.ts +2 -0
- package/useNavigateAway.cjs.default.js +1 -0
- package/useNavigateAway.cjs.js +32 -0
- package/useNavigateAway.cjs.mjs +2 -0
- package/useNavigateAway.esm.js +27 -0
- package/usePrevious.cjs.d.ts +2 -0
- package/usePrevious.cjs.default.js +1 -0
- package/usePrevious.cjs.js +16 -0
- package/usePrevious.cjs.mjs +2 -0
- package/usePrevious.esm.js +11 -0
- package/usePreviousRef.cjs.d.ts +2 -0
- package/usePreviousRef.cjs.default.js +1 -0
- package/usePreviousRef.cjs.js +16 -0
- package/usePreviousRef.cjs.mjs +2 -0
- package/usePreviousRef.esm.js +11 -0
- package/useScrollPosition.cjs.d.ts +2 -0
- package/useScrollPosition.cjs.default.js +1 -0
- package/useScrollPosition.cjs.js +65 -0
- package/useScrollPosition.cjs.mjs +2 -0
- package/useScrollPosition.esm.js +60 -0
- package/useScrollThreshold.cjs.d.ts +2 -0
- package/useScrollThreshold.cjs.default.js +1 -0
- package/useScrollThreshold.cjs.js +33 -0
- package/useScrollThreshold.cjs.mjs +2 -0
- package/useScrollThreshold.esm.js +28 -0
- package/useScrollTo.cjs.d.ts +2 -0
- package/useScrollTo.cjs.default.js +1 -0
- package/useScrollTo.cjs.js +25 -0
- package/useScrollTo.cjs.mjs +2 -0
- package/useScrollTo.esm.js +20 -0
- package/useSmoothScroll.cjs.d.ts +2 -0
- package/useSmoothScroll.cjs.default.js +1 -0
- package/useSmoothScroll.cjs.js +40 -0
- package/useSmoothScroll.cjs.mjs +2 -0
- package/useSmoothScroll.esm.js +35 -0
- package/useSpinDelay.cjs.d.ts +2 -0
- package/useSpinDelay.cjs.default.js +1 -0
- package/useSpinDelay.cjs.js +43 -0
- package/useSpinDelay.cjs.mjs +2 -0
- package/useSpinDelay.esm.js +38 -0
- package/useTraceUpdate.cjs.d.ts +2 -0
- package/useTraceUpdate.cjs.default.js +1 -0
- package/useTraceUpdate.cjs.js +24 -0
- package/useTraceUpdate.cjs.mjs +2 -0
- package/useTraceUpdate.esm.js +19 -0
- package/useUpdateEffect.cjs.d.ts +2 -0
- package/useUpdateEffect.cjs.default.js +1 -0
- package/useUpdateEffect.cjs.js +18 -0
- package/useUpdateEffect.cjs.mjs +2 -0
- package/useUpdateEffect.esm.js +13 -0
- package/useWindowSize.cjs.d.ts +2 -0
- package/useWindowSize.cjs.default.js +1 -0
- package/useWindowSize.cjs.js +27 -0
- package/useWindowSize.cjs.mjs +2 -0
- package/useWindowSize.esm.js +22 -0
- package/FaviconTags.js +0 -1
- package/Meta.js +0 -1
- package/NoJs.js +0 -1
- package/Polymorphic.js +0 -1
- package/calendar/CalendarDaygridCell.js +0 -1
- package/calendar/CalendarDaygridNav.js +0 -1
- package/calendar/CalendarDaygridTable.js +0 -1
- package/calendar/CalendarLegend.js +0 -1
- package/calendar/calendar-api-google.js +0 -1
- package/calendar/types.js +0 -1
- package/calendar/useCalendar.js +0 -1
- package/calendar/useDateLocale.js +0 -1
- package/calendar/utils.js +0 -1
- package/calendar.js +0 -1
- package/cjs/FaviconTags.d.ts +0 -9
- package/cjs/FaviconTags.js +0 -1
- package/cjs/Meta.d.ts +0 -5
- package/cjs/Meta.js +0 -1
- package/cjs/NoJs.d.ts +0 -3
- package/cjs/NoJs.js +0 -1
- package/cjs/Polymorphic.d.ts +0 -26
- package/cjs/Polymorphic.js +0 -1
- package/cjs/calendar/CalendarDaygridCell.d.ts +0 -35
- package/cjs/calendar/CalendarDaygridCell.js +0 -1
- package/cjs/calendar/CalendarDaygridNav.d.ts +0 -27
- package/cjs/calendar/CalendarDaygridNav.js +0 -1
- package/cjs/calendar/CalendarDaygridTable.d.ts +0 -25
- package/cjs/calendar/CalendarDaygridTable.js +0 -1
- package/cjs/calendar/CalendarLegend.d.ts +0 -18
- package/cjs/calendar/CalendarLegend.js +0 -1
- package/cjs/calendar/calendar-api-google.d.ts +0 -10
- package/cjs/calendar/calendar-api-google.js +0 -1
- package/cjs/calendar/types.d.ts +0 -62
- package/cjs/calendar/types.js +0 -1
- package/cjs/calendar/useCalendar.d.ts +0 -35
- package/cjs/calendar/useCalendar.js +0 -1
- package/cjs/calendar/useDateLocale.d.ts +0 -2
- package/cjs/calendar/useDateLocale.js +0 -1
- package/cjs/calendar/utils.d.ts +0 -11
- package/cjs/calendar/utils.js +0 -1
- package/cjs/calendar.d.ts +0 -7
- package/cjs/calendar.js +0 -1
- package/cjs/classed.d.ts +0 -8
- package/cjs/classed.js +0 -1
- package/cjs/createUseMediaQueryWidth.d.ts +0 -6
- package/cjs/createUseMediaQueryWidth.js +0 -1
- package/cjs/extendComponent.d.ts +0 -16
- package/cjs/extendComponent.js +0 -1
- package/cjs/forms/antispam.d.ts +0 -27
- package/cjs/forms/antispam.js +0 -1
- package/cjs/forms.d.ts +0 -1
- package/cjs/forms.js +0 -1
- package/cjs/index.d.ts +0 -28
- package/cjs/index.js +0 -1
- package/cjs/mergeRefs.d.ts +0 -2
- package/cjs/mergeRefs.js +0 -1
- package/cjs/package.json +0 -31
- package/cjs/types.d.ts +0 -2
- package/cjs/types.js +0 -1
- package/cjs/useAsyncFn.d.ts +0 -24
- package/cjs/useAsyncFn.js +0 -1
- package/cjs/useFirstMountState.d.ts +0 -2
- package/cjs/useFirstMountState.js +0 -1
- package/cjs/useFixedOffset.d.ts +0 -2
- package/cjs/useFixedOffset.js +0 -1
- package/cjs/useFocus.d.ts +0 -2
- package/cjs/useFocus.js +0 -1
- package/cjs/useInterval.d.ts +0 -2
- package/cjs/useInterval.js +0 -1
- package/cjs/useIsomorphicLayoutEffect.d.ts +0 -3
- package/cjs/useIsomorphicLayoutEffect.js +0 -1
- package/cjs/useKeyUp.d.ts +0 -2
- package/cjs/useKeyUp.js +0 -1
- package/cjs/useMeasure.d.ts +0 -22
- package/cjs/useMeasure.js +0 -1
- package/cjs/useMountedState.d.ts +0 -2
- package/cjs/useMountedState.js +0 -1
- package/cjs/useNavigateAway.d.ts +0 -3
- package/cjs/useNavigateAway.js +0 -1
- package/cjs/usePrevious.d.ts +0 -2
- package/cjs/usePrevious.js +0 -1
- package/cjs/usePreviousRef.d.ts +0 -2
- package/cjs/usePreviousRef.js +0 -1
- package/cjs/useReveal.d.ts +0 -13
- package/cjs/useReveal.js +0 -1
- package/cjs/useScrollPosition.d.ts +0 -7
- package/cjs/useScrollPosition.js +0 -1
- package/cjs/useScrollThreshold.d.ts +0 -2
- package/cjs/useScrollThreshold.js +0 -1
- package/cjs/useScrollTo.d.ts +0 -2
- package/cjs/useScrollTo.js +0 -1
- package/cjs/useSmoothScroll.d.ts +0 -2
- package/cjs/useSmoothScroll.js +0 -1
- package/cjs/useSpinDelay.d.ts +0 -2
- package/cjs/useSpinDelay.js +0 -1
- package/cjs/useTraceUpdate.d.ts +0 -2
- package/cjs/useTraceUpdate.js +0 -1
- package/cjs/useUpdateEffect.d.ts +0 -3
- package/cjs/useUpdateEffect.js +0 -1
- package/cjs/useWindowSize.d.ts +0 -3
- package/cjs/useWindowSize.js +0 -1
- package/classed.js +0 -1
- package/createUseMediaQueryWidth.js +0 -1
- package/extendComponent.js +0 -1
- package/forms/antispam.js +0 -1
- package/forms.js +0 -1
- package/index.js +0 -1
- package/mergeRefs.js +0 -1
- package/types.js +0 -1
- package/useAsyncFn.js +0 -1
- package/useFirstMountState.js +0 -1
- package/useFixedOffset.js +0 -1
- package/useFocus.js +0 -1
- package/useInterval.js +0 -1
- package/useIsomorphicLayoutEffect.js +0 -1
- package/useKeyUp.js +0 -1
- package/useMeasure.js +0 -1
- package/useMountedState.js +0 -1
- package/useNavigateAway.js +0 -1
- package/usePrevious.js +0 -1
- package/usePreviousRef.js +0 -1
- package/useReveal.js +0 -1
- package/useScrollPosition.js +0 -1
- package/useScrollThreshold.js +0 -1
- package/useScrollTo.js +0 -1
- package/useSmoothScroll.js +0 -1
- package/useSpinDelay.js +0 -1
- package/useTraceUpdate.js +0 -1
- package/useUpdateEffect.js +0 -1
- package/useWindowSize.js +0 -1
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { useRef } from 'react';
|
|
2
|
+
import { isBrowser } from '@koine/utils';
|
|
3
|
+
import { listenScroll } from '@koine/dom';
|
|
4
|
+
import { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect.esm.js';
|
|
5
|
+
|
|
6
|
+
const zeroPosition = { x: 0, y: 0 };
|
|
7
|
+
const getClientRect = (element) => element?.getBoundingClientRect();
|
|
8
|
+
const getScrollPosition = (element, boundingElement) => {
|
|
9
|
+
if (!isBrowser) {
|
|
10
|
+
return zeroPosition;
|
|
11
|
+
}
|
|
12
|
+
if (!boundingElement) {
|
|
13
|
+
return { x: window.scrollX, y: window.scrollY };
|
|
14
|
+
}
|
|
15
|
+
const targetPosition = getClientRect(element?.current || document.body);
|
|
16
|
+
const containerPosition = getClientRect(boundingElement.current);
|
|
17
|
+
if (!targetPosition) {
|
|
18
|
+
return zeroPosition;
|
|
19
|
+
}
|
|
20
|
+
return containerPosition
|
|
21
|
+
? {
|
|
22
|
+
x: (containerPosition.x || 0) - (targetPosition.x || 0),
|
|
23
|
+
y: (containerPosition.y || 0) - (targetPosition.y || 0),
|
|
24
|
+
}
|
|
25
|
+
: { x: targetPosition.left, y: targetPosition.top };
|
|
26
|
+
};
|
|
27
|
+
let useScrollPosition = (effect, deps = [], element, boundingElement, wait) => {
|
|
28
|
+
const position = useRef(getScrollPosition(null, boundingElement));
|
|
29
|
+
let throttleTimeout = null;
|
|
30
|
+
const callBack = () => {
|
|
31
|
+
const current = getScrollPosition(element, boundingElement);
|
|
32
|
+
effect(current, position.current);
|
|
33
|
+
position.current = current;
|
|
34
|
+
throttleTimeout = null;
|
|
35
|
+
};
|
|
36
|
+
useIsomorphicLayoutEffect(() => {
|
|
37
|
+
if (!isBrowser) {
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
40
|
+
const handleScroll = () => {
|
|
41
|
+
if (wait) {
|
|
42
|
+
if (throttleTimeout === null) {
|
|
43
|
+
throttleTimeout = window.setTimeout(callBack, wait);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
callBack();
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
const listener = listenScroll(handleScroll, boundingElement?.current);
|
|
51
|
+
return () => {
|
|
52
|
+
listener();
|
|
53
|
+
if (throttleTimeout) {
|
|
54
|
+
clearTimeout(throttleTimeout);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
}, deps);
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
export { useScrollPosition as default, useScrollPosition };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
exports._default = require('./useScrollThreshold.cjs.js').default;
|
|
@@ -0,0 +1,33 @@
|
|
|
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 dom = require('@koine/dom');
|
|
8
|
+
|
|
9
|
+
let useScrollThreshold = (threshold, callback) => {
|
|
10
|
+
const [isBelow, setIsBelow] = react.useState(false);
|
|
11
|
+
const handler = react.useCallback(() => {
|
|
12
|
+
if (threshold) {
|
|
13
|
+
const posY = window.scrollY;
|
|
14
|
+
const isAbove = posY < threshold;
|
|
15
|
+
const isBelow = posY > threshold;
|
|
16
|
+
setIsBelow(isBelow);
|
|
17
|
+
if (callback)
|
|
18
|
+
callback(isAbove, isBelow);
|
|
19
|
+
}
|
|
20
|
+
}, [threshold, callback]);
|
|
21
|
+
react.useEffect(() => {
|
|
22
|
+
if (threshold) {
|
|
23
|
+
const listener = dom.listenScroll(handler);
|
|
24
|
+
handler();
|
|
25
|
+
return listener;
|
|
26
|
+
}
|
|
27
|
+
return utils.noop;
|
|
28
|
+
}, [threshold, handler]);
|
|
29
|
+
return isBelow;
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
exports["default"] = useScrollThreshold;
|
|
33
|
+
exports.useScrollThreshold = useScrollThreshold;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { useState, useCallback, useEffect } from 'react';
|
|
2
|
+
import { noop } from '@koine/utils';
|
|
3
|
+
import { listenScroll } from '@koine/dom';
|
|
4
|
+
|
|
5
|
+
let useScrollThreshold = (threshold, callback) => {
|
|
6
|
+
const [isBelow, setIsBelow] = useState(false);
|
|
7
|
+
const handler = useCallback(() => {
|
|
8
|
+
if (threshold) {
|
|
9
|
+
const posY = window.scrollY;
|
|
10
|
+
const isAbove = posY < threshold;
|
|
11
|
+
const isBelow = posY > threshold;
|
|
12
|
+
setIsBelow(isBelow);
|
|
13
|
+
if (callback)
|
|
14
|
+
callback(isAbove, isBelow);
|
|
15
|
+
}
|
|
16
|
+
}, [threshold, callback]);
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
if (threshold) {
|
|
19
|
+
const listener = listenScroll(handler);
|
|
20
|
+
handler();
|
|
21
|
+
return listener;
|
|
22
|
+
}
|
|
23
|
+
return noop;
|
|
24
|
+
}, [threshold, handler]);
|
|
25
|
+
return isBelow;
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
export { useScrollThreshold as default, useScrollThreshold };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
exports._default = require('./useScrollTo.cjs.js').default;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var utils = require('@koine/utils');
|
|
6
|
+
|
|
7
|
+
let useScrollTo = (id = "", offset = 0) => {
|
|
8
|
+
if (!utils.isBrowser) {
|
|
9
|
+
return;
|
|
10
|
+
}
|
|
11
|
+
const headerOffset = 0;
|
|
12
|
+
let element = document.getElementById(id);
|
|
13
|
+
let top = 0;
|
|
14
|
+
if (element && element.offsetParent) {
|
|
15
|
+
do {
|
|
16
|
+
top += element.offsetTop;
|
|
17
|
+
} while ((element = element.offsetParent));
|
|
18
|
+
}
|
|
19
|
+
top -= offset;
|
|
20
|
+
top -= headerOffset;
|
|
21
|
+
window.scroll(0, top);
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
exports["default"] = useScrollTo;
|
|
25
|
+
exports.useScrollTo = useScrollTo;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { isBrowser } from '@koine/utils';
|
|
2
|
+
|
|
3
|
+
let useScrollTo = (id = "", offset = 0) => {
|
|
4
|
+
if (!isBrowser) {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
const headerOffset = 0;
|
|
8
|
+
let element = document.getElementById(id);
|
|
9
|
+
let top = 0;
|
|
10
|
+
if (element && element.offsetParent) {
|
|
11
|
+
do {
|
|
12
|
+
top += element.offsetTop;
|
|
13
|
+
} while ((element = element.offsetParent));
|
|
14
|
+
}
|
|
15
|
+
top -= offset;
|
|
16
|
+
top -= headerOffset;
|
|
17
|
+
window.scroll(0, top);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export { useScrollTo as default, useScrollTo };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
exports._default = require('./useSmoothScroll.cjs.js').default;
|
|
@@ -0,0 +1,40 @@
|
|
|
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 dom = require('@koine/dom');
|
|
8
|
+
var useFixedOffset = require('./useFixedOffset.cjs.js');
|
|
9
|
+
require('./useIsomorphicLayoutEffect.cjs.js');
|
|
10
|
+
|
|
11
|
+
let useSmoothScroll = (disregardAutomaticFixedOffset) => {
|
|
12
|
+
const fixedOffset = useFixedOffset.useFixedOffset();
|
|
13
|
+
const scroll = react.useCallback((to, customOffset, callback, fallbackTimeout, behavior) => {
|
|
14
|
+
let top = undefined;
|
|
15
|
+
let toIsElement = false;
|
|
16
|
+
if (utils.isNumber(to)) {
|
|
17
|
+
top = to;
|
|
18
|
+
}
|
|
19
|
+
else if (to) {
|
|
20
|
+
const el = document.getElementById(to);
|
|
21
|
+
if (el) {
|
|
22
|
+
top = dom.getOffsetTopSlim(el) - fixedOffset.current;
|
|
23
|
+
toIsElement = true;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
if (utils.isNumber(top)) {
|
|
27
|
+
top =
|
|
28
|
+
top +
|
|
29
|
+
(customOffset || 0) +
|
|
30
|
+
(disregardAutomaticFixedOffset || toIsElement
|
|
31
|
+
? 0
|
|
32
|
+
: fixedOffset.current);
|
|
33
|
+
dom.scrollTo(top, callback, fallbackTimeout, behavior);
|
|
34
|
+
}
|
|
35
|
+
}, [disregardAutomaticFixedOffset, fixedOffset]);
|
|
36
|
+
return scroll;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
exports["default"] = useSmoothScroll;
|
|
40
|
+
exports.useSmoothScroll = useSmoothScroll;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { useCallback } from 'react';
|
|
2
|
+
import { isNumber } from '@koine/utils';
|
|
3
|
+
import { getOffsetTopSlim, scrollTo } from '@koine/dom';
|
|
4
|
+
import { useFixedOffset } from './useFixedOffset.esm.js';
|
|
5
|
+
import './useIsomorphicLayoutEffect.esm.js';
|
|
6
|
+
|
|
7
|
+
let useSmoothScroll = (disregardAutomaticFixedOffset) => {
|
|
8
|
+
const fixedOffset = useFixedOffset();
|
|
9
|
+
const scroll = useCallback((to, customOffset, callback, fallbackTimeout, behavior) => {
|
|
10
|
+
let top = undefined;
|
|
11
|
+
let toIsElement = false;
|
|
12
|
+
if (isNumber(to)) {
|
|
13
|
+
top = to;
|
|
14
|
+
}
|
|
15
|
+
else if (to) {
|
|
16
|
+
const el = document.getElementById(to);
|
|
17
|
+
if (el) {
|
|
18
|
+
top = getOffsetTopSlim(el) - fixedOffset.current;
|
|
19
|
+
toIsElement = true;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
if (isNumber(top)) {
|
|
23
|
+
top =
|
|
24
|
+
top +
|
|
25
|
+
(customOffset || 0) +
|
|
26
|
+
(disregardAutomaticFixedOffset || toIsElement
|
|
27
|
+
? 0
|
|
28
|
+
: fixedOffset.current);
|
|
29
|
+
scrollTo(top, callback, fallbackTimeout, behavior);
|
|
30
|
+
}
|
|
31
|
+
}, [disregardAutomaticFixedOffset, fixedOffset]);
|
|
32
|
+
return scroll;
|
|
33
|
+
};
|
|
34
|
+
|
|
35
|
+
export { useSmoothScroll as default, useSmoothScroll };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
exports._default = require('./useSpinDelay.cjs.js').default;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var react = require('react');
|
|
6
|
+
|
|
7
|
+
var State;
|
|
8
|
+
(function (State) {
|
|
9
|
+
State[State["IDLE"] = 0] = "IDLE";
|
|
10
|
+
State[State["DELAY"] = 1] = "DELAY";
|
|
11
|
+
State[State["DISPLAY"] = 2] = "DISPLAY";
|
|
12
|
+
State[State["EXPIRE"] = 3] = "EXPIRE";
|
|
13
|
+
})(State || (State = {}));
|
|
14
|
+
let useSpinDelay = (loading, delay = 500, minDuration = 200) => {
|
|
15
|
+
const [state, setState] = react.useState(State.IDLE);
|
|
16
|
+
const timeout = react.useRef();
|
|
17
|
+
react.useEffect(() => {
|
|
18
|
+
if (loading && state === State.IDLE) {
|
|
19
|
+
clearTimeout(timeout.current);
|
|
20
|
+
timeout.current = setTimeout(() => {
|
|
21
|
+
if (!loading) {
|
|
22
|
+
return setState(State.IDLE);
|
|
23
|
+
}
|
|
24
|
+
timeout.current = setTimeout(() => {
|
|
25
|
+
setState(State.EXPIRE);
|
|
26
|
+
}, minDuration);
|
|
27
|
+
setState(State.DISPLAY);
|
|
28
|
+
}, delay);
|
|
29
|
+
setState(State.DELAY);
|
|
30
|
+
}
|
|
31
|
+
if (!loading && state !== State.DISPLAY) {
|
|
32
|
+
clearTimeout(timeout.current);
|
|
33
|
+
setState(State.IDLE);
|
|
34
|
+
}
|
|
35
|
+
}, [loading, state, delay, minDuration]);
|
|
36
|
+
react.useEffect(() => {
|
|
37
|
+
return () => clearTimeout(timeout.current);
|
|
38
|
+
}, []);
|
|
39
|
+
return state === State.DISPLAY || state === State.EXPIRE;
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
exports["default"] = useSpinDelay;
|
|
43
|
+
exports.useSpinDelay = useSpinDelay;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { useState, useRef, useEffect } from 'react';
|
|
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
|
+
};
|
|
37
|
+
|
|
38
|
+
export { useSpinDelay as default, useSpinDelay };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
exports._default = require('./useTraceUpdate.cjs.js').default;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var react = require('react');
|
|
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
|
+
};
|
|
22
|
+
|
|
23
|
+
exports["default"] = useTraceUpdate;
|
|
24
|
+
exports.useTraceUpdate = useTraceUpdate;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { useRef, useEffect } from 'react';
|
|
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
|
+
};
|
|
18
|
+
|
|
19
|
+
export { useTraceUpdate as default, useTraceUpdate };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
exports._default = require('./useUpdateEffect.cjs.js').default;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var react = require('react');
|
|
6
|
+
var useFirstMountState = require('./useFirstMountState.cjs.js');
|
|
7
|
+
|
|
8
|
+
let useUpdateEffect = (effect, deps) => {
|
|
9
|
+
const isFirstMount = useFirstMountState.useFirstMountState();
|
|
10
|
+
react.useEffect(() => {
|
|
11
|
+
if (!isFirstMount) {
|
|
12
|
+
return effect();
|
|
13
|
+
}
|
|
14
|
+
}, deps);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
exports["default"] = useUpdateEffect;
|
|
18
|
+
exports.useUpdateEffect = useUpdateEffect;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { useEffect } from 'react';
|
|
2
|
+
import { useFirstMountState } from './useFirstMountState.esm.js';
|
|
3
|
+
|
|
4
|
+
let useUpdateEffect = (effect, deps) => {
|
|
5
|
+
const isFirstMount = useFirstMountState();
|
|
6
|
+
useEffect(() => {
|
|
7
|
+
if (!isFirstMount) {
|
|
8
|
+
return effect();
|
|
9
|
+
}
|
|
10
|
+
}, deps);
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export { useUpdateEffect as default, useUpdateEffect };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
exports._default = require('./useWindowSize.cjs.js').default;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var react = require('react');
|
|
6
|
+
require('@koine/utils');
|
|
7
|
+
var dom = require('@koine/dom');
|
|
8
|
+
|
|
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
|
+
};
|
|
25
|
+
|
|
26
|
+
exports["default"] = useWindowSize;
|
|
27
|
+
exports.useWindowSize = useWindowSize;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { useState, useEffect } from 'react';
|
|
2
|
+
import '@koine/utils';
|
|
3
|
+
import { listenResizeDebounced, listenResize } from '@koine/dom';
|
|
4
|
+
|
|
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
|
+
};
|
|
21
|
+
|
|
22
|
+
export { useWindowSize as default, useWindowSize };
|
package/FaviconTags.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{jsx as e,jsxs as n,Fragment as i}from"react/jsx-runtime";export let FaviconTags=({name:a,color:t,safariTabColor:o,tileColor:c,themeColor:l})=>n(i,{children:[e("link",{rel:"shortcut icon",href:"/favicon.ico",type:"image/x-icon"}),e("link",{rel:"apple-touch-icon",sizes:"180x180",href:"/apple-touch-icon.png"}),e("link",{rel:"icon",type:"image/png",sizes:"32x32",href:"/favicon-32x32.png"}),e("link",{rel:"icon",type:"image/png",sizes:"16x16",href:"/favicon-16x16.png"}),e("link",{rel:"manifest",href:"/site.webmanifest"}),e("link",{rel:"mask-icon",href:"/safari-pinned-tab.svg",color:o||t}),e("meta",{name:"apple-mobile-web-app-title",content:a}),e("meta",{name:"application-name",content:a}),e("meta",{name:"msapplication-TileColor",content:c||t}),e("meta",{name:"theme-color",content:l||t})]});export default FaviconTags;
|
package/Meta.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";export let Meta=({zoom:t})=>e("meta",{name:"viewport",content:`width=device-width, initial-scale=1, maximum-scale=1${t?"":", user-scalable=0"}`});export default Meta;
|
package/NoJs.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{jsx as e}from"react/jsx-runtime";export let NoJs=t=>e("script",{id:"no-js",dangerouslySetInnerHTML:{__html:'document.querySelector("html").className=document.querySelector("html").className.replace(/no-js/,"") + "js";'}});export default NoJs;
|
package/Polymorphic.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export{};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{jsx as e,jsxs as i,Fragment as l}from"react/jsx-runtime";import{Fragment as r,useState as t}from"react";import{getDisplayTime as n}from"./utils";let d=l=>i("svg",{viewBox:"0 0 24 24",fill:"currentColor",stroke:"none",...l,children:[e("path",{d:"M0 0h24v24H0z"}),e("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"})]}),o={overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"};export let CalendarDaygridCell=({eventClicked:a,setEventClicked:s,setEventHovered:h,view:c,maxEvents:u,events:p,calendarsMap:v,Cell:f="div",CellOverflow:y="div",CellEvent:$="div",CellEventBtn:m="div",CellEventTitle:w="span",CellEventStart:g="span"})=>{let[x,M]=t(!1),O=p.filter(e=>!e.placeholder);return e(f,{children:p.map((t,p)=>{if(p===u&&!x)return i(y,{onClick:()=>M(!0),children:[e(d,{}),O.length-u]},"overflowMessage"+p);if(p>u&&!x)return null;if(t.placeholder)return e(r,{children:e($,{$placeholder:!0,children:e(m,{"aria-hidden":"true",style:{visibility:"hidden"},$placeholder:!0,children:e(w,{children:" "})})})},t.key);let f={zIndex:t.firstOfMulti?1:0,position:"relative",width:t.firstOfMulti?`${100*t.width}%`:"100%"};v[t.calendar.id].on||(o.display="none");let k={$view:c,$selected:a?.uid===t.uid,$past:t.isPast,$color:t.color,$isOutOfRange:t.$isOutOfRange,$isToday:t.$isToday};return e(r,{children:e($,{style:f,...k,children:e(m,{role:"button",style:o,...k,onClick:()=>s(e=>e?.uid===t.uid?null:t),onMouseEnter:()=>h(t),onMouseLeave:()=>h(null),children:t.allDay?e(w,{children:t.title}):i(l,{children:[e(g,{children:n(t.start)}),e(w,{children:t.title})]})})})},t.key)})})};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{jsx as e,jsxs as t}from"react/jsx-runtime";import{format as o}from"date-fns/format";import{useDateLocale as n}from"./useDateLocale";export let KoineCalendarDaygridNav=({range:a,view:l,todayInView:r,handlePrev:i,handleNext:M,handleToday:d,handleView:y,locale:c,NavRoot:m="nav",NavTitle:s="div",NavBtns:b="div",NavBtnPrev:k="button",NavBtnNext:u="button",NavBtnToday:h="button",NavBtnViewMonth:f="button",NavBtnViewWeek:g="button"})=>{let[C,p]=a,v={locale:n(c)},x="";return"month"===l&&(x=o(C,"MMMM yyyy",v)),"week"===l&&(x=C.getMonth()===p.getMonth()?o(C,"# MMMM yyyy",v).replace("#",`${C.getDate()}-${p.getDate()}`):`${o(C,"d MMMM",v)} - ${o(p,"d MMMM yyyy",v)}`),t(m,{children:[t(b,{children:[e(k,{onClick:i}),e(u,{onClick:M}),e(h,{onClick:d,disabled:r}),e(f,{onClick:()=>y("month"),disabled:"month"===l}),e(g,{onClick:()=>y("week"),disabled:"week"===l})]}),e(s,{range:a,formatted:x})]})};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{jsx as e,jsxs as t}from"react/jsx-runtime";import{eachWeekOfInterval as r}from"date-fns/eachWeekOfInterval";import{useEffect as a,useMemo as i,useState as l}from"react";import{useSwipeable as o}from"react-swipeable";import{CalendarDaygridCell as n}from"./CalendarDaygridCell";import{useDateLocale as m}from"./useDateLocale";import{processEventsInView as p}from"./utils";export let KoineCalendarDaygridTable=({locale:d,handlePrev:s,handleNext:c,events:h,dayLabels:f,view:b,range:u,eventClicked:v,setEventClicked:g,eventHovered:w,setEventHovered:y,calendarsMap:x={},maxEvents:j=5,Table:C="table",TableHead:D="thead",TableHeadCell:S="th",TableBody:k="tbody",TableBodyRow:z="tr",TableBodyCell:L="td",TableBodyCellDate:O="div",Cell:I,CellOverflow:K,CellEvent:M,CellEventBtn:R,CellEventTitle:T,CellEventStart:W})=>{let q={Cell:I,CellOverflow:K,CellEvent:M,CellEventBtn:R,CellEventTitle:T,CellEventStart:W},[A,B]=l(f||[0,1,2,3,4,5,6]),[E,F]=l([]),G=m(d),{month:H,weeks:J}=i(()=>(function(e){let[t,a]=e,i=r({start:t,end:a},{weekStartsOn:1});return{month:t.getMonth(),weeks:i}})(u),[u]),N=o({onSwipedLeft:c,onSwipedRight:s});return a(()=>{F(p(h,b,H,J))},[h,b,H,J]),a(()=>{G&&G.localize&&!f&&B([1,2,3,4,5,6,0].map(e=>G.localize.day(e,{width:"abbreviated"})))},[G,f]),t(C,{...N,children:[e(D,{children:e("tr",{children:A.map(t=>e(S,{scope:"column",children:t},t))})}),e(k,{children:E.map((r,a)=>e(z,{...r.props,children:r.days.map(r=>t(L,{...r.props,children:[e(O,{...r.props,children:r.label}),r.events.length>0&&e(n,{eventClicked:v,setEventClicked:g,eventHovered:w,setEventHovered:y,view:b,maxEvents:j,events:r.events,timestamp:r.timestamp,calendarsMap:x,...q})]}))}))})]})};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{jsx as e,jsxs as n,Fragment as r}from"react/jsx-runtime";export let KoineCalendarLegend=({calendarsMap:a={},toggleCalendarVisibility:s,LegendItem:d="div",LegendItemStatus:i="span",LegendItemLabel:l="span",LegendItemEvents:t="span"})=>e(r,{children:Object.entries(a).map(([r,a])=>n(d,{onClick:()=>s(r),$color:a.color,$empty:0===a.events,disabled:0===a.events,children:[e(i,{children:a.on?"⬤":"⭘"}),e(l,{children:a.name}),e(t,{children:a.events})]},"CalendarLegend."+r))});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{differenceInDays as e}from"date-fns/differenceInDays";import{subDays as t}from"date-fns/subDays";import{arrayToLookup as a,isString as n,isUndefined as r}from"@koine/utils";import{addCalendarEvents as i,getEventTimestamp as s}from"./utils";export let getCalendarsEventsFromGoogle=async({calendars:e,...t})=>{let a={};return await Promise.all(e.map(async e=>{i(await o({calendar:e,...t}),a)})),a};async function o({apiKey:i,calendar:o,timeZone:m="",start:d,end:l}){let c={},u=new URLSearchParams({calendarId:o.id,timeZone:m,singleEvents:"true",maxAttendees:"1",maxResults:"9999",sanitizeHtml:"true",timeMin:d.toISOString(),timeMax:l.toISOString(),key:i||process.env.GOOGLE_CALENDAR_API_KEY||""}).toString(),f="https://www.googleapis.com/calendar/v3/calendars/"+o.id+"/events?"+u;try{let i=await fetch(f,{method:"GET"}),m=await i.json();o.name=o.name||m.summary,m.items.forEach(i=>{let m=function(i,o){let m=new Date(i.created),d=i.htmlLink,l=i.summary,c=i.status,u=new Date(i.start.date||i.start.dateTime),f=new Date(i.end.date||i.end.dateTime),w=o.color,g=r(i.end.dateTime)&&n(i.end.date),p=i.location||"",D=i.description||"",h=m.getTime()+""+u.getTime();g&&f>u&&(f=t(f,1)).setHours(23,59,59);let y=function(){let t=new Date(u),a=new Date(f),n=[s(t)];for(;e(a,t);)t.setDate(t.getDate()+1),n.push(s(t));return n}(),E=a(y),S=y.length>1;return{calendar:o,created:m,link:d,title:l,status:c,start:u,end:f,days:y,daysMap:E,multi:S,color:w,allDay:g,location:p,description:D,uid:h}}(i,o);c[m.uid]=m})}catch(e){}return c}
|
package/calendar/types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export{};
|
package/calendar/useCalendar.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{useCallback as e,useEffect as t,useReducer as l,useState as n}from"react";import{getCalendarsEventsFromGoogle as r}from"./calendar-api-google";import{getEndDate as a,getNextDate as i,getPrevDate as u,getStartDate as o,isTodayInView as s}from"./utils";export let useCalendar=({locale:d,apiKey:c,calendars:p,events:g,start:m,end:y,view:v="month",timeZone:f="",onError:b})=>{let[w,T]=n(v),D=m||o(new Date,w),h=y||a(D,w),[O,P]=n([D,h]),[j,x]=n(s(D,h)),[C,L]=n(g||{}),[N,k]=n(null),[q,z]=n(null),[A,B]=l((e,t)=>{let{type:l}=t;switch(l){case"events":{let l=t.payload;return Object.entries(e).reduce((e,[t,n])=>(e[t]={...n,events:l[t]||0},e),{})}case"visibility":{let l=t.payload;if("string"==typeof l)return{...e,[l]:{...e[l],on:!e[l].on}};return Object.entries(e).reduce((e,[t,n])=>(e[t]={...n,on:l.indexOf(t)>-1},e),{})}default:return e}},p.reduce((e,t)=>(e[t.id]={...t,name:t.name||"",on:!0,events:0},e),{})),E=e(e=>{B({type:"visibility",payload:e})},[B]),F=e(e=>{let t={};for(let l in e){let{id:n}=e[l].calendar;t[n]=t[n]||0,t[n]++}B({type:"events",payload:t})},[]),G=e(async(e,t,l)=>{try{let n=await r({apiKey:c,calendars:e,timeZone:f,start:t,end:l});L(n)}catch(e){b&&b(e)}},[L,c,f,b]),H=e(()=>{let[e,t]=O,l=o(new Date,w),n=a(l,w);P([l,n]),(e.getTime()!==l.getTime()||t.getTime()!==n.getTime())&&(z(null),k(null))},[w,O]),I=e(()=>{P(([e])=>{let t=u(e,w),l=a(t,w);return[t,l]}),z(null),k(null)},[w]),J=e(()=>{P(([e])=>{let t=i(e,w),l=a(t,w);return[t,l]}),z(null),k(null)},[w]),K=e(e=>{let t=o(D,e),l=a(t,e);P([t,l]),T(e),z(null),k(null)},[D]);return t(()=>{let[e,t]=O;G(p,e,t),x(s(e,t))},[O]),t(()=>{C&&F(C)},[C,F]),t(()=>{q&&!A[q.calendar.id].on&&z(null)},[A,q,z]),{view:w,eventClicked:q,setEventClicked:z,eventHovered:N,setEventHovered:k,getDaygridNavProps:()=>({locale:d,handlePrev:I,handleNext:J,handleToday:H,handleView:K,todayInView:j,range:O,view:w}),getDaygridTableProps:()=>({locale:d,events:C,eventClicked:q,setEventClicked:z,eventHovered:N,setEventHovered:k,handlePrev:I,handleNext:J,calendarsMap:A,range:O,view:w}),getLegendProps:()=>({calendarsMap:A,toggleCalendarVisibility:E})}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{useEffect as e,useState as t}from"react";export let useDateLocale=(a,l="en")=>{let[r,n]=t(),[o,c]=t(l);return e(()=>{let e=async()=>{let e=await import("date-fns/locale/en-US");c(a||o),n(e.enUS)};a!==o&&e()},[a,o]),r};
|
package/calendar/utils.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{addDays as e}from"date-fns/addDays";import{addMonths as t}from"date-fns/addMonths";import{addWeeks as r}from"date-fns/addWeeks";import{endOfMonth as a}from"date-fns/endOfMonth";import{endOfWeek as n}from"date-fns/endOfWeek";import{isWithinInterval as s}from"date-fns/isWithinInterval";import{startOfWeek as o}from"date-fns/startOfWeek";import{subMonths as l}from"date-fns/subMonths";import{subWeeks as m}from"date-fns/subWeeks";export let getEventTimestamp=e=>{let t=new Date(e);return t.setHours(0,0,0,0),t.valueOf()/1e3};export let getDisplayTime=e=>e.getHours()+":"+"0".repeat(2-e.getMinutes().toString().length)+e.getMinutes();export let getStartDate=(e,t)=>(e.setHours(0,0,0),"month"===t?e.setDate(1):"week"===t&&(e=o(e,{weekStartsOn:1})),e);export let getEndDate=(e,t)=>{let r=e;return"month"===t?r=a(e):"week"===t&&(r=n(e,{weekStartsOn:1})),r.setHours(23,59,59),r};export let getPrevDate=(e,t)=>"month"===t?l(e,1):m(e,1);export let getNextDate=(e,a)=>"month"===a?t(e,1):r(e,1);export let isTodayInView=(e,t)=>s(new Date,{start:e,end:t});export let mergeCalendarEvents=(e,t)=>{let r={};return addCalendarEvents(e,r),addCalendarEvents(t,r),r};export let addCalendarEvents=(e,t)=>{for(let r in e){let a=e[r];t[r]=a}return t};let i=e=>{let t={};for(let r in e){let a=e[r];a.days.forEach(e=>{t[e]=t[e]||{},t[e][r]=a})}return t},d=e=>{let t=[];for(let r in e)t.push(e[r]);return t.sort((e,t)=>{let r=Number(t.multi)-Number(e.multi),a=Number(t.allDay)-Number(e.allDay),n=e.start.getTime()-t.start.getTime(),s=e.created.getTime()-t.created.getTime();return r||a||n||s}),t};export let processEventsInView=(t,r,a,n)=>{let s=i(t),o=d(t),l=new Date,m=getEventTimestamp(l),p={},f=[];for(let t=0;t<n.length;t++){let i={props:{key:`week.${t}`},days:[]},d=n[t],u=d.getDate(),g=getEventTimestamp(new Date(d)),h=getEventTimestamp(e(new Date(d),6));for(let e=0;e<7;e++){let t=new Date(new Date(d).setDate(u+e)),n=getEventTimestamp(t),f={$isToday:m===n,$isOutOfRange:"month"===r&&t.getMonth()!==a},v={props:{key:`day.${n}`,...f},timestamp:n+"",label:t.getDate()+"",events:[]};if(s?.[n]){let t=Object.keys(s[n]).map(()=>0);for(let r=0;r<o.length;r++){let a;let s=o[r],m=1,i=0;if(s.daysMap[n]){if(s.multi&&(m=s.days.filter(e=>e>=g&&e<=h).length,(0===s.days.indexOf(n)||0===e)&&(a=!0)),p[s.uid])i=p[s.uid];else for(let e=0;e<t.length;e++)if(1!==t[e]){i=e;break}t[i]=1,a&&(p[s.uid]=i),v.events.push({key:`event.${n}-${i}`,...f,...s,isPast:l>s.end,firstOfMulti:a,top:i,width:m})}}for(let e=0;e<t.length;e++)1!==t[e]&&v.events.push({key:`event.${n}-${e}}`,placeholder:!0,top:e});v.events.sort((e,t)=>e.top-t.top)}i.days.push(v)}f.push(i)}return f};
|
package/calendar.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export*from"./calendar/CalendarDaygridCell";export*from"./calendar/CalendarDaygridNav";export*from"./calendar/CalendarDaygridTable";export*from"./calendar/CalendarLegend";export*from"./calendar/useCalendar";export*from"./calendar/useDateLocale";export*from"./calendar/types";
|
package/cjs/FaviconTags.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export type FaviconTagsProps = {
|
|
2
|
-
name: string;
|
|
3
|
-
color?: string;
|
|
4
|
-
safariTabColor?: string;
|
|
5
|
-
tileColor?: string;
|
|
6
|
-
themeColor?: string;
|
|
7
|
-
};
|
|
8
|
-
export declare let FaviconTags: ({ name, color, safariTabColor, tileColor, themeColor, }: FaviconTagsProps) => import("react/jsx-runtime").JSX.Element;
|
|
9
|
-
export default FaviconTags;
|
package/cjs/FaviconTags.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{jsx as e,jsxs as n,Fragment as i}from"react/jsx-runtime";export let FaviconTags=({name:a,color:t,safariTabColor:o,tileColor:c,themeColor:l})=>n(i,{children:[e("link",{rel:"shortcut icon",href:"/favicon.ico",type:"image/x-icon"}),e("link",{rel:"apple-touch-icon",sizes:"180x180",href:"/apple-touch-icon.png"}),e("link",{rel:"icon",type:"image/png",sizes:"32x32",href:"/favicon-32x32.png"}),e("link",{rel:"icon",type:"image/png",sizes:"16x16",href:"/favicon-16x16.png"}),e("link",{rel:"manifest",href:"/site.webmanifest"}),e("link",{rel:"mask-icon",href:"/safari-pinned-tab.svg",color:o||t}),e("meta",{name:"apple-mobile-web-app-title",content:a}),e("meta",{name:"application-name",content:a}),e("meta",{name:"msapplication-TileColor",content:c||t}),e("meta",{name:"theme-color",content:l||t})]});export default FaviconTags;
|