@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.
Files changed (294) hide show
  1. package/FaviconTags.cjs.d.ts +2 -0
  2. package/FaviconTags.cjs.default.js +1 -0
  3. package/FaviconTags.cjs.js +12 -0
  4. package/FaviconTags.cjs.mjs +2 -0
  5. package/FaviconTags.esm.js +7 -0
  6. package/Meta.cjs.d.ts +2 -0
  7. package/Meta.cjs.default.js +1 -0
  8. package/Meta.cjs.js +12 -0
  9. package/Meta.cjs.mjs +2 -0
  10. package/Meta.esm.js +7 -0
  11. package/NoJs.cjs.d.ts +2 -0
  12. package/NoJs.cjs.default.js +1 -0
  13. package/NoJs.cjs.js +14 -0
  14. package/NoJs.cjs.mjs +2 -0
  15. package/NoJs.esm.js +9 -0
  16. package/Polymorphic.cjs.d.ts +1 -0
  17. package/Polymorphic.cjs.default.js +1 -0
  18. package/Polymorphic.cjs.js +2 -0
  19. package/Polymorphic.cjs.mjs +2 -0
  20. package/Polymorphic.esm.js +1 -0
  21. package/README.md +1 -0
  22. package/calendar.cjs.d.ts +1 -0
  23. package/calendar.cjs.default.js +1 -0
  24. package/calendar.cjs.js +588 -0
  25. package/calendar.cjs.mjs +2 -0
  26. package/calendar.esm.js +561 -0
  27. package/classed.cjs.d.ts +2 -0
  28. package/classed.cjs.default.js +1 -0
  29. package/classed.cjs.js +48 -0
  30. package/classed.cjs.mjs +2 -0
  31. package/classed.d.ts +1 -1
  32. package/classed.esm.js +43 -0
  33. package/createUseMediaQueryWidth.cjs.d.ts +2 -0
  34. package/createUseMediaQueryWidth.cjs.default.js +1 -0
  35. package/createUseMediaQueryWidth.cjs.js +45 -0
  36. package/createUseMediaQueryWidth.cjs.mjs +2 -0
  37. package/createUseMediaQueryWidth.esm.js +40 -0
  38. package/extendComponent.cjs.d.ts +2 -0
  39. package/extendComponent.cjs.default.js +1 -0
  40. package/extendComponent.cjs.js +16 -0
  41. package/extendComponent.cjs.mjs +2 -0
  42. package/extendComponent.esm.js +11 -0
  43. package/forms.cjs.d.ts +1 -0
  44. package/forms.cjs.default.js +1 -0
  45. package/forms.cjs.js +37 -0
  46. package/forms.cjs.mjs +2 -0
  47. package/forms.esm.js +32 -0
  48. package/index.cjs.d.ts +1 -0
  49. package/index.cjs.default.js +1 -0
  50. package/index.cjs.js +63 -0
  51. package/index.cjs.mjs +2 -0
  52. package/index.esm.js +30 -0
  53. package/mergeRefs.cjs.d.ts +2 -0
  54. package/mergeRefs.cjs.default.js +1 -0
  55. package/mergeRefs.cjs.js +19 -0
  56. package/mergeRefs.cjs.mjs +2 -0
  57. package/mergeRefs.esm.js +14 -0
  58. package/package.json +110 -122
  59. package/types.cjs.d.ts +1 -0
  60. package/types.cjs.default.js +1 -0
  61. package/types.cjs.js +2 -0
  62. package/types.cjs.mjs +2 -0
  63. package/types.esm.js +1 -0
  64. package/useAsyncFn.cjs.d.ts +2 -0
  65. package/useAsyncFn.cjs.default.js +1 -0
  66. package/useAsyncFn.cjs.js +33 -0
  67. package/useAsyncFn.cjs.mjs +2 -0
  68. package/useAsyncFn.esm.js +28 -0
  69. package/useFirstMountState.cjs.d.ts +2 -0
  70. package/useFirstMountState.cjs.default.js +1 -0
  71. package/useFirstMountState.cjs.js +17 -0
  72. package/useFirstMountState.cjs.mjs +2 -0
  73. package/useFirstMountState.esm.js +12 -0
  74. package/useFixedOffset.cjs.d.ts +2 -0
  75. package/useFixedOffset.cjs.default.js +1 -0
  76. package/useFixedOffset.cjs.js +49 -0
  77. package/useFixedOffset.cjs.mjs +2 -0
  78. package/useFixedOffset.esm.js +44 -0
  79. package/useFocus.cjs.d.ts +2 -0
  80. package/useFocus.cjs.default.js +1 -0
  81. package/useFocus.cjs.js +16 -0
  82. package/useFocus.cjs.mjs +2 -0
  83. package/useFocus.esm.js +11 -0
  84. package/useInterval.cjs.d.ts +2 -0
  85. package/useInterval.cjs.default.js +1 -0
  86. package/useInterval.cjs.js +27 -0
  87. package/useInterval.cjs.mjs +2 -0
  88. package/useInterval.esm.js +22 -0
  89. package/useIsomorphicLayoutEffect.cjs.d.ts +2 -0
  90. package/useIsomorphicLayoutEffect.cjs.default.js +1 -0
  91. package/useIsomorphicLayoutEffect.cjs.js +11 -0
  92. package/useIsomorphicLayoutEffect.cjs.mjs +2 -0
  93. package/useIsomorphicLayoutEffect.d.ts +2 -2
  94. package/useIsomorphicLayoutEffect.esm.js +6 -0
  95. package/useKeyUp.cjs.d.ts +2 -0
  96. package/useKeyUp.cjs.default.js +1 -0
  97. package/useKeyUp.cjs.js +23 -0
  98. package/useKeyUp.cjs.mjs +2 -0
  99. package/useKeyUp.esm.js +18 -0
  100. package/useMeasure.cjs.d.ts +2 -0
  101. package/useMeasure.cjs.default.js +1 -0
  102. package/useMeasure.cjs.js +126 -0
  103. package/useMeasure.cjs.mjs +2 -0
  104. package/useMeasure.esm.js +121 -0
  105. package/useMountedState.cjs.d.ts +2 -0
  106. package/useMountedState.cjs.default.js +1 -0
  107. package/useMountedState.cjs.js +20 -0
  108. package/useMountedState.cjs.mjs +2 -0
  109. package/useMountedState.esm.js +15 -0
  110. package/useNavigateAway.cjs.d.ts +2 -0
  111. package/useNavigateAway.cjs.default.js +1 -0
  112. package/useNavigateAway.cjs.js +32 -0
  113. package/useNavigateAway.cjs.mjs +2 -0
  114. package/useNavigateAway.esm.js +27 -0
  115. package/usePrevious.cjs.d.ts +2 -0
  116. package/usePrevious.cjs.default.js +1 -0
  117. package/usePrevious.cjs.js +16 -0
  118. package/usePrevious.cjs.mjs +2 -0
  119. package/usePrevious.esm.js +11 -0
  120. package/usePreviousRef.cjs.d.ts +2 -0
  121. package/usePreviousRef.cjs.default.js +1 -0
  122. package/usePreviousRef.cjs.js +16 -0
  123. package/usePreviousRef.cjs.mjs +2 -0
  124. package/usePreviousRef.esm.js +11 -0
  125. package/useScrollPosition.cjs.d.ts +2 -0
  126. package/useScrollPosition.cjs.default.js +1 -0
  127. package/useScrollPosition.cjs.js +65 -0
  128. package/useScrollPosition.cjs.mjs +2 -0
  129. package/useScrollPosition.esm.js +60 -0
  130. package/useScrollThreshold.cjs.d.ts +2 -0
  131. package/useScrollThreshold.cjs.default.js +1 -0
  132. package/useScrollThreshold.cjs.js +33 -0
  133. package/useScrollThreshold.cjs.mjs +2 -0
  134. package/useScrollThreshold.esm.js +28 -0
  135. package/useScrollTo.cjs.d.ts +2 -0
  136. package/useScrollTo.cjs.default.js +1 -0
  137. package/useScrollTo.cjs.js +25 -0
  138. package/useScrollTo.cjs.mjs +2 -0
  139. package/useScrollTo.esm.js +20 -0
  140. package/useSmoothScroll.cjs.d.ts +2 -0
  141. package/useSmoothScroll.cjs.default.js +1 -0
  142. package/useSmoothScroll.cjs.js +40 -0
  143. package/useSmoothScroll.cjs.mjs +2 -0
  144. package/useSmoothScroll.esm.js +35 -0
  145. package/useSpinDelay.cjs.d.ts +2 -0
  146. package/useSpinDelay.cjs.default.js +1 -0
  147. package/useSpinDelay.cjs.js +43 -0
  148. package/useSpinDelay.cjs.mjs +2 -0
  149. package/useSpinDelay.esm.js +38 -0
  150. package/useTraceUpdate.cjs.d.ts +2 -0
  151. package/useTraceUpdate.cjs.default.js +1 -0
  152. package/useTraceUpdate.cjs.js +24 -0
  153. package/useTraceUpdate.cjs.mjs +2 -0
  154. package/useTraceUpdate.esm.js +19 -0
  155. package/useUpdateEffect.cjs.d.ts +2 -0
  156. package/useUpdateEffect.cjs.default.js +1 -0
  157. package/useUpdateEffect.cjs.js +18 -0
  158. package/useUpdateEffect.cjs.mjs +2 -0
  159. package/useUpdateEffect.esm.js +13 -0
  160. package/useWindowSize.cjs.d.ts +2 -0
  161. package/useWindowSize.cjs.default.js +1 -0
  162. package/useWindowSize.cjs.js +27 -0
  163. package/useWindowSize.cjs.mjs +2 -0
  164. package/useWindowSize.esm.js +22 -0
  165. package/FaviconTags.js +0 -1
  166. package/Meta.js +0 -1
  167. package/NoJs.js +0 -1
  168. package/Polymorphic.js +0 -1
  169. package/calendar/CalendarDaygridCell.js +0 -1
  170. package/calendar/CalendarDaygridNav.js +0 -1
  171. package/calendar/CalendarDaygridTable.js +0 -1
  172. package/calendar/CalendarLegend.js +0 -1
  173. package/calendar/calendar-api-google.js +0 -1
  174. package/calendar/types.js +0 -1
  175. package/calendar/useCalendar.js +0 -1
  176. package/calendar/useDateLocale.js +0 -1
  177. package/calendar/utils.js +0 -1
  178. package/calendar.js +0 -1
  179. package/cjs/FaviconTags.d.ts +0 -9
  180. package/cjs/FaviconTags.js +0 -1
  181. package/cjs/Meta.d.ts +0 -5
  182. package/cjs/Meta.js +0 -1
  183. package/cjs/NoJs.d.ts +0 -3
  184. package/cjs/NoJs.js +0 -1
  185. package/cjs/Polymorphic.d.ts +0 -26
  186. package/cjs/Polymorphic.js +0 -1
  187. package/cjs/calendar/CalendarDaygridCell.d.ts +0 -35
  188. package/cjs/calendar/CalendarDaygridCell.js +0 -1
  189. package/cjs/calendar/CalendarDaygridNav.d.ts +0 -27
  190. package/cjs/calendar/CalendarDaygridNav.js +0 -1
  191. package/cjs/calendar/CalendarDaygridTable.d.ts +0 -25
  192. package/cjs/calendar/CalendarDaygridTable.js +0 -1
  193. package/cjs/calendar/CalendarLegend.d.ts +0 -18
  194. package/cjs/calendar/CalendarLegend.js +0 -1
  195. package/cjs/calendar/calendar-api-google.d.ts +0 -10
  196. package/cjs/calendar/calendar-api-google.js +0 -1
  197. package/cjs/calendar/types.d.ts +0 -62
  198. package/cjs/calendar/types.js +0 -1
  199. package/cjs/calendar/useCalendar.d.ts +0 -35
  200. package/cjs/calendar/useCalendar.js +0 -1
  201. package/cjs/calendar/useDateLocale.d.ts +0 -2
  202. package/cjs/calendar/useDateLocale.js +0 -1
  203. package/cjs/calendar/utils.d.ts +0 -11
  204. package/cjs/calendar/utils.js +0 -1
  205. package/cjs/calendar.d.ts +0 -7
  206. package/cjs/calendar.js +0 -1
  207. package/cjs/classed.d.ts +0 -8
  208. package/cjs/classed.js +0 -1
  209. package/cjs/createUseMediaQueryWidth.d.ts +0 -6
  210. package/cjs/createUseMediaQueryWidth.js +0 -1
  211. package/cjs/extendComponent.d.ts +0 -16
  212. package/cjs/extendComponent.js +0 -1
  213. package/cjs/forms/antispam.d.ts +0 -27
  214. package/cjs/forms/antispam.js +0 -1
  215. package/cjs/forms.d.ts +0 -1
  216. package/cjs/forms.js +0 -1
  217. package/cjs/index.d.ts +0 -28
  218. package/cjs/index.js +0 -1
  219. package/cjs/mergeRefs.d.ts +0 -2
  220. package/cjs/mergeRefs.js +0 -1
  221. package/cjs/package.json +0 -31
  222. package/cjs/types.d.ts +0 -2
  223. package/cjs/types.js +0 -1
  224. package/cjs/useAsyncFn.d.ts +0 -24
  225. package/cjs/useAsyncFn.js +0 -1
  226. package/cjs/useFirstMountState.d.ts +0 -2
  227. package/cjs/useFirstMountState.js +0 -1
  228. package/cjs/useFixedOffset.d.ts +0 -2
  229. package/cjs/useFixedOffset.js +0 -1
  230. package/cjs/useFocus.d.ts +0 -2
  231. package/cjs/useFocus.js +0 -1
  232. package/cjs/useInterval.d.ts +0 -2
  233. package/cjs/useInterval.js +0 -1
  234. package/cjs/useIsomorphicLayoutEffect.d.ts +0 -3
  235. package/cjs/useIsomorphicLayoutEffect.js +0 -1
  236. package/cjs/useKeyUp.d.ts +0 -2
  237. package/cjs/useKeyUp.js +0 -1
  238. package/cjs/useMeasure.d.ts +0 -22
  239. package/cjs/useMeasure.js +0 -1
  240. package/cjs/useMountedState.d.ts +0 -2
  241. package/cjs/useMountedState.js +0 -1
  242. package/cjs/useNavigateAway.d.ts +0 -3
  243. package/cjs/useNavigateAway.js +0 -1
  244. package/cjs/usePrevious.d.ts +0 -2
  245. package/cjs/usePrevious.js +0 -1
  246. package/cjs/usePreviousRef.d.ts +0 -2
  247. package/cjs/usePreviousRef.js +0 -1
  248. package/cjs/useReveal.d.ts +0 -13
  249. package/cjs/useReveal.js +0 -1
  250. package/cjs/useScrollPosition.d.ts +0 -7
  251. package/cjs/useScrollPosition.js +0 -1
  252. package/cjs/useScrollThreshold.d.ts +0 -2
  253. package/cjs/useScrollThreshold.js +0 -1
  254. package/cjs/useScrollTo.d.ts +0 -2
  255. package/cjs/useScrollTo.js +0 -1
  256. package/cjs/useSmoothScroll.d.ts +0 -2
  257. package/cjs/useSmoothScroll.js +0 -1
  258. package/cjs/useSpinDelay.d.ts +0 -2
  259. package/cjs/useSpinDelay.js +0 -1
  260. package/cjs/useTraceUpdate.d.ts +0 -2
  261. package/cjs/useTraceUpdate.js +0 -1
  262. package/cjs/useUpdateEffect.d.ts +0 -3
  263. package/cjs/useUpdateEffect.js +0 -1
  264. package/cjs/useWindowSize.d.ts +0 -3
  265. package/cjs/useWindowSize.js +0 -1
  266. package/classed.js +0 -1
  267. package/createUseMediaQueryWidth.js +0 -1
  268. package/extendComponent.js +0 -1
  269. package/forms/antispam.js +0 -1
  270. package/forms.js +0 -1
  271. package/index.js +0 -1
  272. package/mergeRefs.js +0 -1
  273. package/types.js +0 -1
  274. package/useAsyncFn.js +0 -1
  275. package/useFirstMountState.js +0 -1
  276. package/useFixedOffset.js +0 -1
  277. package/useFocus.js +0 -1
  278. package/useInterval.js +0 -1
  279. package/useIsomorphicLayoutEffect.js +0 -1
  280. package/useKeyUp.js +0 -1
  281. package/useMeasure.js +0 -1
  282. package/useMountedState.js +0 -1
  283. package/useNavigateAway.js +0 -1
  284. package/usePrevious.js +0 -1
  285. package/usePreviousRef.js +0 -1
  286. package/useReveal.js +0 -1
  287. package/useScrollPosition.js +0 -1
  288. package/useScrollThreshold.js +0 -1
  289. package/useScrollTo.js +0 -1
  290. package/useSmoothScroll.js +0 -1
  291. package/useSpinDelay.js +0 -1
  292. package/useTraceUpdate.js +0 -1
  293. package/useUpdateEffect.js +0 -1
  294. 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,2 @@
1
+ export * from "./useScrollThreshold";
2
+ export { default } from "./useScrollThreshold";
@@ -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,2 @@
1
+ export * from './useScrollThreshold.cjs.js';
2
+ export { _default as default } from './useScrollThreshold.cjs.default.js';
@@ -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,2 @@
1
+ export * from "./useScrollTo";
2
+ export { default } from "./useScrollTo";
@@ -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,2 @@
1
+ export * from './useScrollTo.cjs.js';
2
+ export { _default as default } from './useScrollTo.cjs.default.js';
@@ -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,2 @@
1
+ export * from "./useSmoothScroll";
2
+ export { default } from "./useSmoothScroll";
@@ -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,2 @@
1
+ export * from './useSmoothScroll.cjs.js';
2
+ export { _default as default } from './useSmoothScroll.cjs.default.js';
@@ -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,2 @@
1
+ export * from "./useSpinDelay";
2
+ export { default } from "./useSpinDelay";
@@ -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,2 @@
1
+ export * from './useSpinDelay.cjs.js';
2
+ export { _default as default } from './useSpinDelay.cjs.default.js';
@@ -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,2 @@
1
+ export * from "./useTraceUpdate";
2
+ export { default } from "./useTraceUpdate";
@@ -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,2 @@
1
+ export * from './useTraceUpdate.cjs.js';
2
+ export { _default as default } from './useTraceUpdate.cjs.default.js';
@@ -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,2 @@
1
+ export * from "./useUpdateEffect";
2
+ export { default } from "./useUpdateEffect";
@@ -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,2 @@
1
+ export * from './useUpdateEffect.cjs.js';
2
+ export { _default as default } from './useUpdateEffect.cjs.default.js';
@@ -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,2 @@
1
+ export * from "./useWindowSize";
2
+ export { default } from "./useWindowSize";
@@ -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,2 @@
1
+ export * from './useWindowSize.cjs.js';
2
+ export { _default as default } from './useWindowSize.cjs.default.js';
@@ -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{};
@@ -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";
@@ -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;
@@ -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/cjs/Meta.d.ts DELETED
@@ -1,5 +0,0 @@
1
- export type MetaProps = {
2
- zoom?: boolean;
3
- };
4
- export declare let Meta: ({ zoom }: MetaProps) => import("react/jsx-runtime").JSX.Element;
5
- export default Meta;