@koine/react 2.0.0-beta.21 → 2.0.0-beta.210

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 (558) hide show
  1. package/FaviconTags.cjs.default.js +1 -0
  2. package/FaviconTags.cjs.js +10 -0
  3. package/FaviconTags.cjs.mjs +2 -0
  4. package/FaviconTags.d.ts +11 -1
  5. package/FaviconTags.esm.js +5 -0
  6. package/Meta.cjs.default.js +1 -0
  7. package/Meta.cjs.js +10 -0
  8. package/Meta.cjs.mjs +2 -0
  9. package/Meta.d.ts +11 -1
  10. package/Meta.esm.js +5 -0
  11. package/NoJs.cjs.default.js +1 -0
  12. package/NoJs.cjs.js +10 -0
  13. package/NoJs.cjs.mjs +2 -0
  14. package/NoJs.d.ts +2 -2
  15. package/NoJs.esm.js +5 -0
  16. package/Polymorphic.cjs.default.js +1 -0
  17. package/Polymorphic.cjs.js +2 -0
  18. package/Polymorphic.cjs.mjs +2 -0
  19. package/Polymorphic.d.ts +40 -0
  20. package/Polymorphic.esm.js +1 -0
  21. package/README.md +1 -0
  22. package/calendar/CalendarDaygridCell.cjs.js +9 -0
  23. package/{Calendar → calendar}/CalendarDaygridCell.d.ts +4 -4
  24. package/calendar/CalendarDaygridCell.esm.js +7 -0
  25. package/calendar/CalendarDaygridNav.cjs.js +9 -0
  26. package/{Calendar → calendar}/CalendarDaygridNav.d.ts +3 -3
  27. package/calendar/CalendarDaygridNav.esm.js +7 -0
  28. package/calendar/CalendarDaygridTable.cjs.js +13 -0
  29. package/{Calendar → calendar}/CalendarDaygridTable.d.ts +4 -4
  30. package/calendar/CalendarDaygridTable.esm.js +11 -0
  31. package/calendar/CalendarLegend.cjs.js +7 -0
  32. package/{Calendar → calendar}/CalendarLegend.d.ts +3 -3
  33. package/calendar/CalendarLegend.esm.js +5 -0
  34. package/calendar/calendar-api-google.cjs.js +10 -0
  35. package/calendar/calendar-api-google.d.ts +18 -0
  36. package/calendar/calendar-api-google.esm.js +8 -0
  37. package/{Calendar → calendar}/types.d.ts +19 -0
  38. package/calendar/useCalendar.cjs.js +9 -0
  39. package/{Calendar → calendar}/useCalendar.d.ts +19 -5
  40. package/calendar/useCalendar.esm.js +7 -0
  41. package/calendar/useDateLocale.cjs.js +7 -0
  42. package/calendar/useDateLocale.d.ts +8 -0
  43. package/calendar/useDateLocale.esm.js +5 -0
  44. package/calendar/utils.cjs.js +23 -0
  45. package/calendar/utils.d.ts +11 -0
  46. package/calendar/utils.esm.js +13 -0
  47. package/calendar.cjs.default.js +1 -0
  48. package/calendar.cjs.js +17 -0
  49. package/calendar.cjs.mjs +2 -0
  50. package/calendar.d.ts +7 -0
  51. package/calendar.esm.js +6 -0
  52. package/classed.cjs.default.js +1 -0
  53. package/classed.cjs.js +10 -0
  54. package/classed.cjs.mjs +2 -0
  55. package/classed.d.ts +21 -2
  56. package/classed.esm.js +5 -0
  57. package/createUseMediaQueryWidth.cjs.default.js +1 -0
  58. package/createUseMediaQueryWidth.cjs.js +12 -0
  59. package/createUseMediaQueryWidth.cjs.mjs +2 -0
  60. package/createUseMediaQueryWidth.d.ts +7 -1
  61. package/createUseMediaQueryWidth.esm.js +7 -0
  62. package/extendComponent.cjs.default.js +1 -0
  63. package/extendComponent.cjs.js +10 -0
  64. package/extendComponent.cjs.mjs +2 -0
  65. package/extendComponent.d.ts +13 -2
  66. package/extendComponent.esm.js +5 -0
  67. package/forms/antispam.cjs.js +9 -0
  68. package/forms/antispam.d.ts +47 -0
  69. package/forms/antispam.esm.js +6 -0
  70. package/forms.cjs.default.js +1 -0
  71. package/forms.cjs.js +8 -0
  72. package/forms.cjs.mjs +2 -0
  73. package/forms.d.ts +1 -0
  74. package/forms.esm.js +1 -0
  75. package/index.cjs.default.js +1 -0
  76. package/index.cjs.js +57 -0
  77. package/index.cjs.mjs +2 -0
  78. package/index.d.ts +28 -25
  79. package/index.esm.js +26 -0
  80. package/mergeRefs.cjs.default.js +1 -0
  81. package/mergeRefs.cjs.js +8 -0
  82. package/mergeRefs.cjs.mjs +2 -0
  83. package/mergeRefs.d.ts +1 -2
  84. package/mergeRefs.esm.js +3 -0
  85. package/package.json +147 -579
  86. package/types.cjs.default.js +1 -0
  87. package/types.cjs.js +2 -0
  88. package/types.cjs.mjs +2 -0
  89. package/types.d.ts +1 -9
  90. package/types.esm.js +1 -0
  91. package/useAsyncFn.cjs.default.js +1 -0
  92. package/useAsyncFn.cjs.js +11 -0
  93. package/useAsyncFn.cjs.mjs +2 -0
  94. package/useAsyncFn.d.ts +6 -2
  95. package/useAsyncFn.esm.js +6 -0
  96. package/useFirstMountState.cjs.default.js +1 -0
  97. package/useFirstMountState.cjs.js +10 -0
  98. package/useFirstMountState.cjs.mjs +2 -0
  99. package/useFirstMountState.d.ts +4 -1
  100. package/useFirstMountState.esm.js +5 -0
  101. package/useFixedOffset.cjs.default.js +1 -0
  102. package/useFixedOffset.cjs.js +13 -0
  103. package/useFixedOffset.cjs.mjs +2 -0
  104. package/useFixedOffset.d.ts +10 -2
  105. package/useFixedOffset.esm.js +8 -0
  106. package/useFocus.cjs.default.js +1 -0
  107. package/useFocus.cjs.js +10 -0
  108. package/useFocus.cjs.mjs +2 -0
  109. package/useFocus.d.ts +4 -2
  110. package/useFocus.esm.js +5 -0
  111. package/useInterval.cjs.default.js +1 -0
  112. package/useInterval.cjs.js +11 -0
  113. package/useInterval.cjs.mjs +2 -0
  114. package/useInterval.d.ts +6 -1
  115. package/useInterval.esm.js +6 -0
  116. package/useIsomorphicLayoutEffect.cjs.default.js +1 -0
  117. package/useIsomorphicLayoutEffect.cjs.js +11 -0
  118. package/useIsomorphicLayoutEffect.cjs.mjs +2 -0
  119. package/useIsomorphicLayoutEffect.d.ts +4 -1
  120. package/useIsomorphicLayoutEffect.esm.js +6 -0
  121. package/useKeyUp.cjs.default.js +1 -0
  122. package/useKeyUp.cjs.js +11 -0
  123. package/useKeyUp.cjs.mjs +2 -0
  124. package/useKeyUp.d.ts +1 -1
  125. package/useKeyUp.esm.js +6 -0
  126. package/useMeasure.cjs.default.js +1 -0
  127. package/useMeasure.cjs.js +12 -0
  128. package/useMeasure.cjs.mjs +2 -0
  129. package/useMeasure.d.ts +6 -1
  130. package/useMeasure.esm.js +7 -0
  131. package/useMountedState.cjs.default.js +1 -0
  132. package/useMountedState.cjs.js +10 -0
  133. package/useMountedState.cjs.mjs +2 -0
  134. package/useMountedState.d.ts +4 -1
  135. package/useMountedState.esm.js +5 -0
  136. package/useNavigateAway.cjs.default.js +1 -0
  137. package/useNavigateAway.cjs.js +11 -0
  138. package/useNavigateAway.cjs.mjs +2 -0
  139. package/useNavigateAway.d.ts +30 -1
  140. package/useNavigateAway.esm.js +6 -0
  141. package/usePrevious.cjs.default.js +1 -0
  142. package/usePrevious.cjs.js +10 -0
  143. package/usePrevious.cjs.mjs +2 -0
  144. package/usePrevious.d.ts +4 -1
  145. package/usePrevious.esm.js +5 -0
  146. package/usePreviousRef.cjs.default.js +1 -0
  147. package/usePreviousRef.cjs.js +10 -0
  148. package/usePreviousRef.cjs.mjs +2 -0
  149. package/usePreviousRef.d.ts +1 -1
  150. package/usePreviousRef.esm.js +5 -0
  151. package/useReveal.d.ts +34 -0
  152. package/useScrollPosition.cjs.default.js +1 -0
  153. package/useScrollPosition.cjs.js +13 -0
  154. package/useScrollPosition.cjs.mjs +2 -0
  155. package/useScrollPosition.d.ts +8 -2
  156. package/useScrollPosition.esm.js +8 -0
  157. package/useScrollThreshold.cjs.default.js +1 -0
  158. package/useScrollThreshold.cjs.js +12 -0
  159. package/useScrollThreshold.cjs.mjs +2 -0
  160. package/useScrollThreshold.d.ts +1 -1
  161. package/useScrollThreshold.esm.js +7 -0
  162. package/useScrollTo.cjs.default.js +1 -0
  163. package/useScrollTo.cjs.js +10 -0
  164. package/useScrollTo.cjs.mjs +2 -0
  165. package/useScrollTo.d.ts +1 -1
  166. package/useScrollTo.esm.js +5 -0
  167. package/useSmoothScroll.cjs.default.js +1 -0
  168. package/useSmoothScroll.cjs.js +13 -0
  169. package/useSmoothScroll.cjs.mjs +2 -0
  170. package/useSmoothScroll.d.ts +7 -1
  171. package/useSmoothScroll.esm.js +8 -0
  172. package/useSpinDelay.cjs.default.js +1 -0
  173. package/useSpinDelay.cjs.js +10 -0
  174. package/useSpinDelay.cjs.mjs +2 -0
  175. package/useSpinDelay.d.ts +13 -1
  176. package/useSpinDelay.esm.js +5 -0
  177. package/useTraceUpdate.cjs.default.js +1 -0
  178. package/useTraceUpdate.cjs.js +10 -0
  179. package/useTraceUpdate.cjs.mjs +2 -0
  180. package/useTraceUpdate.d.ts +4 -1
  181. package/useTraceUpdate.esm.js +5 -0
  182. package/useUpdateEffect.cjs.default.js +1 -0
  183. package/useUpdateEffect.cjs.js +11 -0
  184. package/useUpdateEffect.cjs.mjs +2 -0
  185. package/useUpdateEffect.d.ts +4 -1
  186. package/useUpdateEffect.esm.js +6 -0
  187. package/useWindowSize.cjs.default.js +1 -0
  188. package/useWindowSize.cjs.js +11 -0
  189. package/useWindowSize.cjs.mjs +2 -0
  190. package/useWindowSize.d.ts +11 -2
  191. package/useWindowSize.esm.js +6 -0
  192. package/vite.config.d.ts +2 -0
  193. package/Alert/Alert.d.ts +0 -5
  194. package/Alert/Alert.js +0 -10
  195. package/Alert/index.d.ts +0 -1
  196. package/Alert/index.js +0 -1
  197. package/Animations/Reveal.d.ts +0 -3
  198. package/Animations/Reveal.js +0 -16
  199. package/Animations/Underline.d.ts +0 -1
  200. package/Animations/Underline.js +0 -5
  201. package/Animations/index.d.ts +0 -3
  202. package/Animations/index.js +0 -3
  203. package/Animations/useReveal.d.ts +0 -13
  204. package/Animations/useReveal.js +0 -43
  205. package/Autocomplete/AutocompleteDownshift.d.ts +0 -1
  206. package/Autocomplete/AutocompleteDownshift.js +0 -1
  207. package/Autocomplete/AutocompleteDownshiftMultiselect.d.ts +0 -1
  208. package/Autocomplete/AutocompleteDownshiftMultiselect.js +0 -1
  209. package/Autocomplete/AutocompleteMui.d.ts +0 -22
  210. package/Autocomplete/AutocompleteMui.js +0 -93
  211. package/Autocomplete/AutocompleteReach.d.ts +0 -1
  212. package/Autocomplete/AutocompleteReach.js +0 -1
  213. package/Autocomplete/components.d.ts +0 -12
  214. package/Autocomplete/components.js +0 -26
  215. package/Autocomplete/helpers.d.ts +0 -3
  216. package/Autocomplete/helpers.js +0 -16
  217. package/Autocomplete/index.d.ts +0 -2
  218. package/Autocomplete/index.js +0 -1
  219. package/Bg/BgColor.d.ts +0 -12
  220. package/Bg/BgColor.js +0 -16
  221. package/Bg/BgPhoto.d.ts +0 -8
  222. package/Bg/BgPhoto.js +0 -16
  223. package/Bg/BgSvg.d.ts +0 -4
  224. package/Bg/BgSvg.js +0 -9
  225. package/Bg/index.d.ts +0 -3
  226. package/Bg/index.js +0 -3
  227. package/Breadcrumbs/Breadcrumbs.d.ts +0 -13
  228. package/Breadcrumbs/Breadcrumbs.js +0 -27
  229. package/Breadcrumbs/index.d.ts +0 -1
  230. package/Breadcrumbs/index.js +0 -1
  231. package/Buttons/Button.d.ts +0 -14
  232. package/Buttons/Button.js +0 -10
  233. package/Buttons/ButtonComposite.d.ts +0 -22
  234. package/Buttons/ButtonComposite.js +0 -28
  235. package/Buttons/ButtonFab.d.ts +0 -4
  236. package/Buttons/ButtonFab.js +0 -6
  237. package/Buttons/ButtonLink.d.ts +0 -8
  238. package/Buttons/ButtonLink.js +0 -11
  239. package/Buttons/IconButton.d.ts +0 -8
  240. package/Buttons/IconButton.js +0 -7
  241. package/Buttons/index.d.ts +0 -5
  242. package/Buttons/index.js +0 -5
  243. package/Calendar/CalendarDaygridCell.js +0 -46
  244. package/Calendar/CalendarDaygridNav.js +0 -24
  245. package/Calendar/CalendarDaygridTable.js +0 -45
  246. package/Calendar/CalendarLegend.js +0 -9
  247. package/Calendar/calendar-api-google.d.ts +0 -10
  248. package/Calendar/calendar-api-google.js +0 -124
  249. package/Calendar/index.d.ts +0 -6
  250. package/Calendar/index.js +0 -6
  251. package/Calendar/types.js +0 -1
  252. package/Calendar/useCalendar.js +0 -176
  253. package/Calendar/utils.d.ts +0 -11
  254. package/Calendar/utils.js +0 -185
  255. package/Carousel/Carousel.d.ts +0 -1
  256. package/Carousel/Carousel.js +0 -1
  257. package/Carousel/CarouselCss.d.ts +0 -13
  258. package/Carousel/CarouselCss.js +0 -19
  259. package/Carousel/index.d.ts +0 -1
  260. package/Carousel/index.js +0 -1
  261. package/Collapsable/Collapsable.d.ts +0 -1
  262. package/Collapsable/Collapsable.js +0 -1
  263. package/Collapsable/CollapsableReach.d.ts +0 -0
  264. package/Collapsable/CollapsableReach.js +0 -1
  265. package/Collapsable/index.d.ts +0 -1
  266. package/Collapsable/index.js +0 -1
  267. package/Debug/Debug.d.ts +0 -4
  268. package/Debug/Debug.js +0 -9
  269. package/Debug/index.d.ts +0 -1
  270. package/Debug/index.js +0 -1
  271. package/Details/Details.d.ts +0 -398
  272. package/Details/Details.js +0 -52
  273. package/Details/index.d.ts +0 -1
  274. package/Details/index.js +0 -1
  275. package/Dialog/DialogMui.d.ts +0 -165
  276. package/Dialog/DialogMui.js +0 -39
  277. package/Dialog/css/bare.d.ts +0 -171
  278. package/Dialog/css/bare.js +0 -21
  279. package/Dialog/index.d.ts +0 -2
  280. package/Dialog/index.js +0 -1
  281. package/Dialog/m/bare.d.ts +0 -4
  282. package/Dialog/m/bare.js +0 -3
  283. package/Dialog/m/basic.d.ts +0 -4
  284. package/Dialog/m/basic.js +0 -28
  285. package/Dialog/m/index.d.ts +0 -2
  286. package/Dialog/m/index.js +0 -4
  287. package/Dialog/sc/bare.d.ts +0 -61
  288. package/Dialog/sc/bare.js +0 -31
  289. package/Dialog/sc/framer.d.ts +0 -24
  290. package/Dialog/sc/framer.js +0 -16
  291. package/Dialog/sc/framerMaterial.d.ts +0 -24
  292. package/Dialog/sc/framerMaterial.js +0 -16
  293. package/Dialog/sc/material.d.ts +0 -60
  294. package/Dialog/sc/material.js +0 -21
  295. package/Dialog/tw/bare.d.ts +0 -208
  296. package/Dialog/tw/bare.js +0 -29
  297. package/Dialog/tw/elegant.d.ts +0 -270
  298. package/Dialog/tw/elegant.js +0 -21
  299. package/Dialog/tw/framer.d.ts +0 -108
  300. package/Dialog/tw/framer.js +0 -16
  301. package/Dialog/tw/framerMaterial.d.ts +0 -164
  302. package/Dialog/tw/framerMaterial.js +0 -16
  303. package/Dialog/tw/material.d.ts +0 -270
  304. package/Dialog/tw/material.js +0 -21
  305. package/Editor/Editor--tiptap.d.ts +0 -9
  306. package/Editor/Editor--tiptap.js +0 -26
  307. package/Editor/components.d.ts +0 -5
  308. package/Editor/components.js +0 -10
  309. package/Editor/index.d.ts +0 -1
  310. package/Editor/index.js +0 -1
  311. package/FaviconTags.js +0 -6
  312. package/Form/Form.d.ts +0 -125
  313. package/Form/Form.js +0 -60
  314. package/Form/index.d.ts +0 -1
  315. package/Form/index.js +0 -1
  316. package/Form/sc/bare.d.ts +0 -57
  317. package/Form/sc/bare.js +0 -20
  318. package/Forms/Checkbox/Checkbox.d.ts +0 -7
  319. package/Forms/Checkbox/Checkbox.js +0 -15
  320. package/Forms/Checkbox/index.d.ts +0 -1
  321. package/Forms/Checkbox/index.js +0 -1
  322. package/Forms/Feedback/Feedback.d.ts +0 -5
  323. package/Forms/Feedback/Feedback.js +0 -9
  324. package/Forms/Feedback/index.d.ts +0 -1
  325. package/Forms/Feedback/index.js +0 -1
  326. package/Forms/Field/Field.d.ts +0 -18
  327. package/Forms/Field/Field.js +0 -25
  328. package/Forms/Field/FieldControl.d.ts +0 -14
  329. package/Forms/Field/FieldControl.js +0 -35
  330. package/Forms/Field/FieldHint.d.ts +0 -1
  331. package/Forms/Field/FieldHint.js +0 -4
  332. package/Forms/Field/index.d.ts +0 -2
  333. package/Forms/Field/index.js +0 -2
  334. package/Forms/Input/Input.d.ts +0 -8
  335. package/Forms/Input/Input.js +0 -16
  336. package/Forms/Input/index.d.ts +0 -1
  337. package/Forms/Input/index.js +0 -1
  338. package/Forms/InputGroup/InputGroup.d.ts +0 -12
  339. package/Forms/InputGroup/InputGroup.js +0 -15
  340. package/Forms/InputGroup/index.d.ts +0 -1
  341. package/Forms/InputGroup/index.js +0 -1
  342. package/Forms/Label/Label.d.ts +0 -3
  343. package/Forms/Label/Label.js +0 -6
  344. package/Forms/Label/index.d.ts +0 -1
  345. package/Forms/Label/index.js +0 -1
  346. package/Forms/Password/Password.d.ts +0 -4
  347. package/Forms/Password/Password.js +0 -17
  348. package/Forms/Password/index.d.ts +0 -1
  349. package/Forms/Password/index.js +0 -1
  350. package/Forms/Radio/Radio.d.ts +0 -11
  351. package/Forms/Radio/Radio.js +0 -25
  352. package/Forms/Radio/index.d.ts +0 -1
  353. package/Forms/Radio/index.js +0 -1
  354. package/Forms/Switch/Switch.d.ts +0 -5
  355. package/Forms/Switch/Switch.js +0 -17
  356. package/Forms/Switch/index.d.ts +0 -1
  357. package/Forms/Switch/index.js +0 -1
  358. package/Forms/Textarea/Textarea.d.ts +0 -4
  359. package/Forms/Textarea/Textarea.js +0 -12
  360. package/Forms/Textarea/TextareaRich.d.ts +0 -5
  361. package/Forms/Textarea/TextareaRich.js +0 -26
  362. package/Forms/Textarea/index.d.ts +0 -2
  363. package/Forms/Textarea/index.js +0 -2
  364. package/Forms/Toggle/Toggle-tailwind.d.ts +0 -0
  365. package/Forms/Toggle/Toggle-tailwind.js +0 -1
  366. package/Forms/Toggle/Toggle.d.ts +0 -18
  367. package/Forms/Toggle/Toggle.js +0 -25
  368. package/Forms/Toggle/index.d.ts +0 -1
  369. package/Forms/Toggle/index.js +0 -1
  370. package/Forms/Toggle/useToggle-tailwind.d.ts +0 -0
  371. package/Forms/Toggle/useToggle-tailwind.js +0 -1
  372. package/Forms/Toggle/useToggle.d.ts +0 -16
  373. package/Forms/Toggle/useToggle.js +0 -85
  374. package/Forms/antispam.d.ts +0 -27
  375. package/Forms/antispam.js +0 -29
  376. package/Forms/helpers.d.ts +0 -18
  377. package/Forms/helpers.js +0 -35
  378. package/Forms/index.d.ts +0 -15
  379. package/Forms/index.js +0 -15
  380. package/Forms/styles.d.ts +0 -9
  381. package/Forms/styles.js +0 -19
  382. package/Gauge/Gauge.d.ts +0 -4
  383. package/Gauge/Gauge.js +0 -1
  384. package/Grid/Grid.d.ts +0 -32
  385. package/Grid/Grid.js +0 -52
  386. package/Grid/index.d.ts +0 -1
  387. package/Grid/index.js +0 -1
  388. package/Hamburger/Hamburger.d.ts +0 -5
  389. package/Hamburger/Hamburger.js +0 -47
  390. package/Hamburger/index.d.ts +0 -1
  391. package/Hamburger/index.js +0 -1
  392. package/Header/index.d.ts +0 -1
  393. package/Header/index.js +0 -1
  394. package/Header/useHeader.d.ts +0 -20
  395. package/Header/useHeader.js +0 -32
  396. package/Hidden/Hidden.d.ts +0 -6
  397. package/Hidden/Hidden.js +0 -10
  398. package/Hidden/index.d.ts +0 -1
  399. package/Hidden/index.js +0 -1
  400. package/Img/index.d.ts +0 -1
  401. package/Img/index.js +0 -1
  402. package/Img/sc/bare.d.ts +0 -2
  403. package/Img/sc/bare.js +0 -4
  404. package/Img/types.d.ts +0 -9
  405. package/Img/types.js +0 -1
  406. package/Link/Link.d.ts +0 -3
  407. package/Link/Link.js +0 -4
  408. package/Link/LinkBlank.d.ts +0 -5
  409. package/Link/LinkBlank.js +0 -15
  410. package/Link/index.d.ts +0 -2
  411. package/Link/index.js +0 -2
  412. package/Menu/Menu.d.ts +0 -1
  413. package/Menu/Menu.js +0 -4
  414. package/Menu/MenuMui.d.ts +0 -0
  415. package/Menu/MenuMui.js +0 -1
  416. package/Menu/index.d.ts +0 -1
  417. package/Menu/index.js +0 -1
  418. package/MenuItem/MenuItem.d.ts +0 -1
  419. package/MenuItem/MenuItem.js +0 -4
  420. package/MenuItem/MenuItemMui.d.ts +0 -0
  421. package/MenuItem/MenuItemMui.js +0 -1
  422. package/MenuItem/index.d.ts +0 -1
  423. package/MenuItem/index.js +0 -1
  424. package/MenuItem/useMenuItem.d.ts +0 -9
  425. package/MenuItem/useMenuItem.js +0 -42
  426. package/Meta.js +0 -6
  427. package/NoJs.js +0 -7
  428. package/Pagination/PaginationNav.d.ts +0 -14
  429. package/Pagination/PaginationNav.js +0 -48
  430. package/Pagination/PaginationResults.d.ts +0 -3
  431. package/Pagination/PaginationResults.js +0 -11
  432. package/Pagination/index.d.ts +0 -2
  433. package/Pagination/index.js +0 -2
  434. package/Pill/Pill.d.ts +0 -5
  435. package/Pill/Pill.js +0 -7
  436. package/Pill/index.d.ts +0 -1
  437. package/Pill/index.js +0 -1
  438. package/Progress/ProgressCircular.d.ts +0 -13
  439. package/Progress/ProgressCircular.js +0 -12
  440. package/Progress/ProgressLinear.d.ts +0 -15
  441. package/Progress/ProgressLinear.js +0 -21
  442. package/Progress/ProgressOverlay.d.ts +0 -4
  443. package/Progress/ProgressOverlay.js +0 -23
  444. package/Progress/index.d.ts +0 -3
  445. package/Progress/index.js +0 -3
  446. package/Rating/Rating.d.ts +0 -27
  447. package/Rating/Rating.js +0 -43
  448. package/Rating/index.d.ts +0 -8
  449. package/Rating/index.js +0 -45
  450. package/Select/SelectDownshift.d.ts +0 -5
  451. package/Select/SelectDownshift.js +0 -1
  452. package/Select/components.d.ts +0 -6
  453. package/Select/components.js +0 -12
  454. package/Select/index.d.ts +0 -2
  455. package/Select/index.js +0 -1
  456. package/Sidebar/Sidebar.d.ts +0 -3
  457. package/Sidebar/Sidebar.js +0 -23
  458. package/Sidebar/index.d.ts +0 -1
  459. package/Sidebar/index.js +0 -1
  460. package/Spacing/Spacing.d.ts +0 -17
  461. package/Spacing/Spacing.js +0 -32
  462. package/Spacing/index.d.ts +0 -1
  463. package/Spacing/index.js +0 -1
  464. package/Sticky/Sticky.d.ts +0 -2
  465. package/Sticky/Sticky.js +0 -1
  466. package/Sticky/StickyCss.d.ts +0 -5
  467. package/Sticky/StickyCss.js +0 -6
  468. package/Sticky/index.d.ts +0 -1
  469. package/Sticky/index.js +0 -1
  470. package/Tabs/TabsMui.d.ts +0 -84
  471. package/Tabs/TabsMui.js +0 -30
  472. package/Tabs/index.d.ts +0 -1
  473. package/Tabs/index.js +0 -1
  474. package/Tabs/sc/bare.d.ts +0 -0
  475. package/Tabs/sc/bare.js +0 -1
  476. package/Tabs/tw/bare.d.ts +0 -85
  477. package/Tabs/tw/bare.js +0 -17
  478. package/Tabs/tw/material.d.ts +0 -118
  479. package/Tabs/tw/material.js +0 -19
  480. package/Tabs/useTabs.d.ts +0 -21
  481. package/Tabs/useTabs.js +0 -44
  482. package/Typography/CopyPasteVisible.d.ts +0 -1
  483. package/Typography/CopyPasteVisible.js +0 -4
  484. package/Typography/Native.d.ts +0 -10
  485. package/Typography/Native.js +0 -14
  486. package/Typography/ReadMore.d.ts +0 -10
  487. package/Typography/ReadMore.js +0 -42
  488. package/Typography/TextLoop.d.ts +0 -16
  489. package/Typography/TextLoop.js +0 -45
  490. package/Typography/TypeStairs.d.ts +0 -6
  491. package/Typography/TypeStairs.js +0 -42
  492. package/Typography/index.d.ts +0 -5
  493. package/Typography/index.js +0 -5
  494. package/classed.js +0 -43
  495. package/createUseMediaQueryWidth.js +0 -39
  496. package/css/index.d.ts +0 -1
  497. package/css/index.js +0 -1
  498. package/extendComponent.js +0 -9
  499. package/index.js +0 -24
  500. package/m/MotionProvider.d.ts +0 -6
  501. package/m/MotionProvider.js +0 -7
  502. package/m/index.d.ts +0 -1
  503. package/m/index.js +0 -1
  504. package/m/lite.d.ts +0 -2
  505. package/m/lite.js +0 -2
  506. package/m/max.d.ts +0 -2
  507. package/m/max.js +0 -2
  508. package/mergeRefs.js +0 -13
  509. package/sc/index.d.ts +0 -29
  510. package/sc/index.js +0 -29
  511. package/scm/index.d.ts +0 -28
  512. package/scm/index.js +0 -28
  513. package/shared/index.d.ts +0 -7
  514. package/shared/index.js +0 -7
  515. package/styles/Body.d.ts +0 -2
  516. package/styles/Body.js +0 -5
  517. package/styles/Global.d.ts +0 -2
  518. package/styles/Global.js +0 -5
  519. package/styles/index.d.ts +0 -7
  520. package/styles/index.js +0 -7
  521. package/styles/media.d.ts +0 -18
  522. package/styles/media.js +0 -75
  523. package/styles/spacing.d.ts +0 -12
  524. package/styles/spacing.js +0 -45
  525. package/styles/styled.d.ts +0 -8
  526. package/styles/styled.js +0 -9
  527. package/styles/theme--vanilla.d.ts +0 -17
  528. package/styles/theme--vanilla.js +0 -47
  529. package/styles/theme.d.ts +0 -53
  530. package/styles/theme.js +0 -30
  531. package/tw/index.d.ts +0 -1
  532. package/tw/index.js +0 -1
  533. package/twm/index.d.ts +0 -1
  534. package/twm/index.js +0 -1
  535. package/types.js +0 -1
  536. package/typings.d.ts +0 -99
  537. package/useAsyncFn.js +0 -33
  538. package/useDateLocale.d.ts +0 -2
  539. package/useDateLocale.js +0 -28
  540. package/useFirstMountState.js +0 -10
  541. package/useFixedOffset.js +0 -42
  542. package/useFocus.js +0 -9
  543. package/useInterval.js +0 -22
  544. package/useIsomorphicLayoutEffect.js +0 -6
  545. package/useKeyUp.js +0 -18
  546. package/useMeasure.js +0 -130
  547. package/useMountedState.js +0 -13
  548. package/useNavigateAway.js +0 -25
  549. package/usePrevious.js +0 -10
  550. package/usePreviousRef.js +0 -9
  551. package/useScrollPosition.js +0 -61
  552. package/useScrollThreshold.js +0 -27
  553. package/useScrollTo.js +0 -23
  554. package/useSmoothScroll.js +0 -32
  555. package/useSpinDelay.js +0 -39
  556. package/useTraceUpdate.js +0 -19
  557. package/useUpdateEffect.js +0 -11
  558. package/useWindowSize.js +0 -20
@@ -0,0 +1 @@
1
+ exports._default = require('./FaviconTags.cjs.js').default;
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+
7
+ 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})]});
8
+
9
+ exports.FaviconTags = FaviconTags;
10
+ exports.default = FaviconTags;
@@ -0,0 +1,2 @@
1
+ export * from './FaviconTags.cjs.js';
2
+ export { _default as default } from './FaviconTags.cjs.default.js';
package/FaviconTags.d.ts CHANGED
@@ -5,5 +5,15 @@ export type FaviconTagsProps = {
5
5
  tileColor?: string;
6
6
  themeColor?: string;
7
7
  };
8
- export declare const FaviconTags: ({ name, color, safariTabColor, tileColor, themeColor, }: FaviconTagsProps) => import("react/jsx-runtime").JSX.Element;
8
+ /**
9
+ * Favicon tags.
10
+ *
11
+ * This component is meant to be wrapped in a `<head>` manager component.
12
+ *
13
+ * These tags have been produced by [realfavicongenerator.net](https://realfavicongenerator.net/)
14
+ * on _**16 Feb 2022**_.
15
+ *
16
+ * @see https://realfavicongenerator.net/
17
+ */
18
+ export declare let FaviconTags: ({ name, color, safariTabColor, tileColor, themeColor, }: FaviconTagsProps) => import("react/jsx-runtime").JSX.Element;
9
19
  export default FaviconTags;
@@ -0,0 +1,5 @@
1
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
2
+
3
+ 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})]});
4
+
5
+ export { FaviconTags, FaviconTags as default };
@@ -0,0 +1 @@
1
+ exports._default = require('./Meta.cjs.js').default;
package/Meta.cjs.js ADDED
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+
7
+ let Meta=({zoom:t})=>jsxRuntime.jsx("meta",{name:"viewport",content:`width=device-width, initial-scale=1, maximum-scale=1${t?"":", user-scalable=0"}`});
8
+
9
+ exports.Meta = Meta;
10
+ exports.default = Meta;
package/Meta.cjs.mjs ADDED
@@ -0,0 +1,2 @@
1
+ export * from './Meta.cjs.js';
2
+ export { _default as default } from './Meta.cjs.default.js';
package/Meta.d.ts CHANGED
@@ -1,5 +1,15 @@
1
1
  export type MetaProps = {
2
+ /**
3
+ * Determines whether `user-scalable=0` is add to the `meta->viewport` content
4
+ *
5
+ * This is an opt in instead of the default browser behaviour as it helps prevent
6
+ * weird zooming on input fields on iPhone iOS devices.
7
+ * @see https://www.warrenchandler.com/2019/04/02/stop-iphones-from-zooming-in-on-form-fields/
8
+ * @see https://css-tricks.com/16px-or-larger-text-prevents-ios-form-zoom/
9
+ *
10
+ * @default false
11
+ */
2
12
  zoom?: boolean;
3
13
  };
4
- export declare const Meta: ({ zoom }: MetaProps) => import("react/jsx-runtime").JSX.Element;
14
+ export declare let Meta: ({ zoom }: MetaProps) => import("react/jsx-runtime").JSX.Element;
5
15
  export default Meta;
package/Meta.esm.js ADDED
@@ -0,0 +1,5 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+
3
+ let Meta=({zoom:t})=>jsx("meta",{name:"viewport",content:`width=device-width, initial-scale=1, maximum-scale=1${t?"":", user-scalable=0"}`});
4
+
5
+ export { Meta, Meta as default };
@@ -0,0 +1 @@
1
+ exports._default = require('./NoJs.cjs.js').default;
package/NoJs.cjs.js ADDED
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+
7
+ let NoJs=t=>jsxRuntime.jsx("script",{id:"no-js",dangerouslySetInnerHTML:{__html:'document.querySelector("html").className=document.querySelector("html").className.replace(/no-js/,"") + "js";'}});
8
+
9
+ exports.NoJs = NoJs;
10
+ exports.default = NoJs;
package/NoJs.cjs.mjs ADDED
@@ -0,0 +1,2 @@
1
+ export * from './NoJs.cjs.js';
2
+ export { _default as default } from './NoJs.cjs.default.js';
package/NoJs.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export type NoJsProps = object;
2
- export declare const NoJs: (_props: NoJsProps) => import("react/jsx-runtime").JSX.Element;
1
+ export type NoJsProps = Record<string, never>;
2
+ export declare let NoJs: (_props: NoJsProps) => import("react/jsx-runtime").JSX.Element;
3
3
  export default NoJs;
package/NoJs.esm.js ADDED
@@ -0,0 +1,5 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+
3
+ let NoJs=t=>jsx("script",{id:"no-js",dangerouslySetInnerHTML:{__html:'document.querySelector("html").className=document.querySelector("html").className.replace(/no-js/,"") + "js";'}});
4
+
5
+ export { NoJs, NoJs as default };
@@ -0,0 +1 @@
1
+ exports._default = require('./Polymorphic.cjs.js').default;
@@ -0,0 +1,2 @@
1
+ 'use strict';
2
+
@@ -0,0 +1,2 @@
1
+ export * from './Polymorphic.cjs.js';
2
+ export { _default as default } from './Polymorphic.cjs.default.js';
@@ -0,0 +1,40 @@
1
+ import type { JSX } from "react";
2
+ /**
3
+ * React Polymorphic components type utilities
4
+ *
5
+ * @resources
6
+ * - [Polymorphic types from Radix UI in Wanda System](https://github.com/wonderflow-bv/wanda/blob/main/packages/react-components/src/types/polymorphic/index.ts)
7
+ * - [TypeScript + React: Typing Generic forwardRefs](https://fettblog.eu/typescript-react-generic-forward-refs/)
8
+ * - [React with Typescript -- Generics while using React.forwardRef](https://stackoverflow.com/a/58473012/1938970)
9
+ * - [How to write a generic that extracts the prop types of the component that passed in](https://stackoverflow.com/a/57846897/1938970)
10
+ * - [React TS Generic component to pass generic props to children](https://stackoverflow.com/a/68442669/1938970)
11
+ * - [About custom ref prop](https://gist.github.com/gaearon/1a018a023347fe1c2476073330cc5509)
12
+ * - [forwardRef performance](https://github.com/facebook/react/issues/13456)
13
+ * - [React docs: Exposing DOM Refs to Parent Components](https://github.com/facebook/react/issues/13456)
14
+ */
15
+ export declare namespace Polymorphic {
16
+ type Merge<P1 = Record<string, never>, P2 = Record<string, never>> = Omit<P1, keyof P2> & P2;
17
+ type ComponentTypes = React.ComponentClass<any> | React.FunctionComponent<any> | keyof JSX.IntrinsicElements;
18
+ type InferProps<TComponent extends ComponentTypes> = TComponent extends React.ComponentClass<infer Props> ? Props : TComponent extends React.FunctionComponent<infer Props> ? Props : TComponent extends React.ForwardRefExoticComponent<infer Props> ? Props : TComponent extends keyof JSX.IntrinsicElements ? React.ComponentPropsWithoutRef<TComponent> : never;
19
+ type AsProp<TComponent extends React.ElementType> = {
20
+ as?: TComponent;
21
+ };
22
+ export type Ref<TComponent extends React.ElementType> = React.ComponentPropsWithRef<TComponent>["ref"];
23
+ export type Props<TComponent extends React.ElementType, Props = Record<string, never>> = Omit<InferProps<TComponent>, keyof Props> & AsProp<TComponent> & Props;
24
+ export type PropsWithRef<TComponent extends React.ElementType, TProps = Record<string, never>> = Props<TComponent, TProps> & {
25
+ ref?: Ref<TComponent>;
26
+ };
27
+ type ForwardRefExoticComponent<TComponent, OwnProps> = React.ForwardRefExoticComponent<Merge<TComponent extends React.ElementType ? React.ComponentPropsWithRef<TComponent> : never, OwnProps & {
28
+ as?: TComponent;
29
+ }>>;
30
+ export type ComponentForwarded<TComponent, TProps = Record<string, never>> = ForwardRefExoticComponent<TComponent, TProps> & {
31
+ <As = TComponent>(props: As extends "" ? {
32
+ as: keyof JSX.IntrinsicElements;
33
+ } : As extends React.ComponentType<infer P> ? Merge<P, TProps & {
34
+ as: As;
35
+ }> : As extends keyof JSX.IntrinsicElements ? Merge<JSX.IntrinsicElements[As], TProps & {
36
+ as: As;
37
+ }> : never): React.ReactElement | null;
38
+ };
39
+ export {};
40
+ }
@@ -0,0 +1 @@
1
+
package/README.md ADDED
@@ -0,0 +1 @@
1
+ # @koine/react
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var react = require('react');
5
+ var utils = require('./utils.cjs.js');
6
+
7
+ let d=l=>jsxRuntime.jsxs("svg",{viewBox:"0 0 24 24",fill:"currentColor",stroke:"none",...l,children:[jsxRuntime.jsx("path",{d:"M0 0h24v24H0z"}),jsxRuntime.jsx("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"})]}),o={overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"};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]=react.useState(false),O=p.filter(e=>!e.placeholder);return jsxRuntime.jsx(f,{children:p.map((t,p)=>{if(p===u&&!x)return jsxRuntime.jsxs(y,{onClick:()=>M(true),children:[jsxRuntime.jsx(d,{}),O.length-u]},"overflowMessage"+p);if(p>u&&!x)return null;if(t.placeholder)return jsxRuntime.jsx(react.Fragment,{children:jsxRuntime.jsx($,{$placeholder:true,children:jsxRuntime.jsx(m,{"aria-hidden":"true",style:{visibility:"hidden"},$placeholder:true,children:jsxRuntime.jsx(w,{children:" "})})})},t.key);let f={zIndex:+!!t.firstOfMulti,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 jsxRuntime.jsx(react.Fragment,{children:jsxRuntime.jsx($,{style:f,...k,children:jsxRuntime.jsx(m,{role:"button",style:o,...k,onClick:()=>s(e=>e?.uid===t.uid?null:t),onMouseEnter:()=>h(t),onMouseLeave:()=>h(null),children:t.allDay?jsxRuntime.jsx(w,{children:t.title}):jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[jsxRuntime.jsx(g,{children:utils.getDisplayTime(t.start)}),jsxRuntime.jsx(w,{children:t.title})]})})})},t.key)})})};
8
+
9
+ exports.CalendarDaygridCell = CalendarDaygridCell;
@@ -1,6 +1,6 @@
1
- import type { KoineComponent, KoineComponentProps } from "../types.js";
2
- import type { CalendarView, CalendarViewDayProps, CalendarViewEvent, CalendarsMap } from "./types.js";
3
- import { UseCalendarReturn } from "./useCalendar.js";
1
+ import type { KoineComponent, KoineComponentProps } from "../types";
2
+ import type { CalendarView, CalendarViewDayProps, CalendarViewEvent, CalendarsMap } from "./types";
3
+ import type { UseCalendarReturn } from "./useCalendar";
4
4
  export type KoineCalendarDaygridCellProps = {
5
5
  eventClicked?: UseCalendarReturn["eventClicked"];
6
6
  setEventClicked: UseCalendarReturn["setEventClicked"];
@@ -32,4 +32,4 @@ export type CalendarDaygridCellComponents = {
32
32
  CellEventStart?: KoineComponent;
33
33
  };
34
34
  export type CalendarDaygridCellProps = KoineComponentProps<KoineCalendarDaygridCellProps, CalendarDaygridCellComponents>;
35
- export declare const CalendarDaygridCell: ({ eventClicked, setEventClicked, setEventHovered, view, maxEvents, events, calendarsMap, Cell, CellOverflow, CellEvent, CellEventBtn, CellEventTitle, CellEventStart, }: CalendarDaygridCellProps) => import("react/jsx-runtime").JSX.Element;
35
+ export declare let CalendarDaygridCell: ({ eventClicked, setEventClicked, setEventHovered, view, maxEvents, events, calendarsMap, Cell, CellOverflow, CellEvent, CellEventBtn, CellEventTitle, CellEventStart, }: CalendarDaygridCellProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,7 @@
1
+ import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
2
+ import { useState, Fragment } from 'react';
3
+ import { getDisplayTime } from './utils.esm.js';
4
+
5
+ let d=l=>jsxs("svg",{viewBox:"0 0 24 24",fill:"currentColor",stroke:"none",...l,children:[jsx("path",{d:"M0 0h24v24H0z"}),jsx("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"})]}),o={overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"};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]=useState(false),O=p.filter(e=>!e.placeholder);return jsx(f,{children:p.map((t,p)=>{if(p===u&&!x)return jsxs(y,{onClick:()=>M(true),children:[jsx(d,{}),O.length-u]},"overflowMessage"+p);if(p>u&&!x)return null;if(t.placeholder)return jsx(Fragment,{children:jsx($,{$placeholder:true,children:jsx(m,{"aria-hidden":"true",style:{visibility:"hidden"},$placeholder:true,children:jsx(w,{children:" "})})})},t.key);let f={zIndex:+!!t.firstOfMulti,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 jsx(Fragment,{children:jsx($,{style:f,...k,children:jsx(m,{role:"button",style:o,...k,onClick:()=>s(e=>e?.uid===t.uid?null:t),onMouseEnter:()=>h(t),onMouseLeave:()=>h(null),children:t.allDay?jsx(w,{children:t.title}):jsxs(Fragment$1,{children:[jsx(g,{children:getDisplayTime(t.start)}),jsx(w,{children:t.title})]})})})},t.key)})})};
6
+
7
+ export { CalendarDaygridCell };
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var format = require('date-fns/format');
5
+ var useDateLocale = require('./useDateLocale.cjs.js');
6
+
7
+ 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:useDateLocale.useDateLocale(c)},x="";return "month"===l&&(x=format.format(C,"MMMM yyyy",v)),"week"===l&&(x=C.getMonth()===p.getMonth()?format.format(C,"# MMMM yyyy",v).replace("#",`${C.getDate()}-${p.getDate()}`):`${format.format(C,"d MMMM",v)} - ${format.format(p,"d MMMM yyyy",v)}`),jsxRuntime.jsxs(m,{children:[jsxRuntime.jsxs(b,{children:[jsxRuntime.jsx(k,{onClick:i}),jsxRuntime.jsx(u,{onClick:M}),jsxRuntime.jsx(h,{onClick:d,disabled:r}),jsxRuntime.jsx(f,{onClick:()=>y("month"),disabled:"month"===l}),jsxRuntime.jsx(g,{onClick:()=>y("week"),disabled:"week"===l})]}),jsxRuntime.jsx(s,{range:a,formatted:x})]})};
8
+
9
+ exports.KoineCalendarDaygridNav = KoineCalendarDaygridNav;
@@ -1,5 +1,5 @@
1
- import type { KoineComponent, KoineComponentProps } from "../types.js";
2
- import type { CalendarRange, CalendarView } from "./types.js";
1
+ import type { KoineComponent, KoineComponentProps } from "../types";
2
+ import type { CalendarRange, CalendarView } from "./types";
3
3
  export type KoineCalendarDaygridNavProps = {
4
4
  locale: string;
5
5
  range: CalendarRange;
@@ -24,4 +24,4 @@ export type CalendarDaygridNavProps = KoineComponentProps<KoineCalendarDaygridNa
24
24
  NavBtnViewMonth?: KoineComponent;
25
25
  NavBtnViewWeek?: KoineComponent;
26
26
  }>;
27
- export declare const KoineCalendarDaygridNav: ({ range, view, todayInView, handlePrev, handleNext, handleToday, handleView, locale: localeCode, NavRoot, NavTitle, NavBtns, NavBtnPrev, NavBtnNext, NavBtnToday, NavBtnViewMonth, NavBtnViewWeek, }: CalendarDaygridNavProps) => import("react/jsx-runtime").JSX.Element;
27
+ export declare let KoineCalendarDaygridNav: ({ range, view, todayInView, handlePrev, handleNext, handleToday, handleView, locale: localeCode, NavRoot, NavTitle, NavBtns, NavBtnPrev, NavBtnNext, NavBtnToday, NavBtnViewMonth, NavBtnViewWeek, }: CalendarDaygridNavProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,7 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { format } from 'date-fns/format';
3
+ import { useDateLocale } from './useDateLocale.esm.js';
4
+
5
+ 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:useDateLocale(c)},x="";return "month"===l&&(x=format(C,"MMMM yyyy",v)),"week"===l&&(x=C.getMonth()===p.getMonth()?format(C,"# MMMM yyyy",v).replace("#",`${C.getDate()}-${p.getDate()}`):`${format(C,"d MMMM",v)} - ${format(p,"d MMMM yyyy",v)}`),jsxs(m,{children:[jsxs(b,{children:[jsx(k,{onClick:i}),jsx(u,{onClick:M}),jsx(h,{onClick:d,disabled:r}),jsx(f,{onClick:()=>y("month"),disabled:"month"===l}),jsx(g,{onClick:()=>y("week"),disabled:"week"===l})]}),jsx(s,{range:a,formatted:x})]})};
6
+
7
+ export { KoineCalendarDaygridNav };
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var eachWeekOfInterval = require('date-fns/eachWeekOfInterval');
5
+ var react = require('react');
6
+ var reactSwipeable = require('react-swipeable');
7
+ var CalendarDaygridCell = require('./CalendarDaygridCell.cjs.js');
8
+ var useDateLocale = require('./useDateLocale.cjs.js');
9
+ var utils = require('./utils.cjs.js');
10
+
11
+ 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]=react.useState(f||[0,1,2,3,4,5,6]),[E,F]=react.useState([]),G=useDateLocale.useDateLocale(d),{month:H,weeks:J}=react.useMemo(()=>(function(e){let[t,a]=e,i=eachWeekOfInterval.eachWeekOfInterval({start:t,end:a},{weekStartsOn:1});return {month:t.getMonth(),weeks:i}})(u),[u]),N=reactSwipeable.useSwipeable({onSwipedLeft:c,onSwipedRight:s});return react.useEffect(()=>{F(utils.processEventsInView(h,b,H,J));},[h,b,H,J]),react.useEffect(()=>{G&&G.localize&&!f&&B([1,2,3,4,5,6,0].map(e=>G.localize.day(e,{width:"abbreviated"})));},[G,f]),jsxRuntime.jsxs(C,{...N,children:[jsxRuntime.jsx(D,{children:jsxRuntime.jsx("tr",{children:A.map(t=>jsxRuntime.jsx(S,{scope:"column",children:t},t))})}),jsxRuntime.jsx(k,{children:E.map(r=>jsxRuntime.jsx(z,{...r.props,children:r.days.map(r=>jsxRuntime.jsxs(L,{...r.props,children:[jsxRuntime.jsx(O,{...r.props,children:r.label}),r.events.length>0&&jsxRuntime.jsx(CalendarDaygridCell.CalendarDaygridCell,{eventClicked:v,setEventClicked:g,eventHovered:w,setEventHovered:y,view:b,maxEvents:j,events:r.events,timestamp:r.timestamp,calendarsMap:x,...q})]}))}))})]})};
12
+
13
+ exports.KoineCalendarDaygridTable = KoineCalendarDaygridTable;
@@ -1,6 +1,6 @@
1
- import type { KoineComponent, KoineComponentProps } from "../types.js";
2
- import { CalendarDaygridCellComponents, CalendarDaygridCellProps } from "./CalendarDaygridCell.js";
3
- import type { CalendarEventsMap, CalendarRange, CalendarView, CalendarViewDayProps } from "./types.js";
1
+ import type { KoineComponent, KoineComponentProps } from "../types";
2
+ import { type CalendarDaygridCellComponents, type CalendarDaygridCellProps } from "./CalendarDaygridCell";
3
+ import type { CalendarEventsMap, CalendarRange, CalendarView, CalendarViewDayProps } from "./types";
4
4
  export type CalendarDaygridTableBodyCellProps = CalendarViewDayProps;
5
5
  export type CalendarDaygridTableBodyCellDateProps = CalendarViewDayProps;
6
6
  export type KoineCalendarDaygridTableProps = {
@@ -22,4 +22,4 @@ export type CalendarDaygridTableProps = KoineComponentProps<KoineCalendarDaygrid
22
22
  TableBodyCellDate?: KoineComponent<CalendarDaygridTableBodyCellDateProps>;
23
23
  TableBodyRow?: KoineComponent;
24
24
  } & CalendarDaygridCellComponents>;
25
- export declare const KoineCalendarDaygridTable: ({ locale: localeCode, handlePrev, handleNext, events, dayLabels, view, range, eventClicked, setEventClicked, eventHovered, setEventHovered, calendarsMap, maxEvents, Table, TableHead, TableHeadCell, TableBody, TableBodyRow, TableBodyCell, TableBodyCellDate, Cell, CellOverflow, CellEvent, CellEventBtn, CellEventTitle, CellEventStart, }: CalendarDaygridTableProps) => import("react/jsx-runtime").JSX.Element;
25
+ export declare let KoineCalendarDaygridTable: ({ locale: localeCode, handlePrev, handleNext, events, dayLabels, view, range, eventClicked, setEventClicked, eventHovered, setEventHovered, calendarsMap, maxEvents, Table, TableHead, TableHeadCell, TableBody, TableBodyRow, TableBodyCell, TableBodyCellDate, Cell, CellOverflow, CellEvent, CellEventBtn, CellEventTitle, CellEventStart, }: CalendarDaygridTableProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,11 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { eachWeekOfInterval } from 'date-fns/eachWeekOfInterval';
3
+ import { useState, useMemo, useEffect } from 'react';
4
+ import { useSwipeable } from 'react-swipeable';
5
+ import { CalendarDaygridCell } from './CalendarDaygridCell.esm.js';
6
+ import { useDateLocale } from './useDateLocale.esm.js';
7
+ import { processEventsInView } from './utils.esm.js';
8
+
9
+ 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]=useState(f||[0,1,2,3,4,5,6]),[E,F]=useState([]),G=useDateLocale(d),{month:H,weeks:J}=useMemo(()=>(function(e){let[t,a]=e,i=eachWeekOfInterval({start:t,end:a},{weekStartsOn:1});return {month:t.getMonth(),weeks:i}})(u),[u]),N=useSwipeable({onSwipedLeft:c,onSwipedRight:s});return useEffect(()=>{F(processEventsInView(h,b,H,J));},[h,b,H,J]),useEffect(()=>{G&&G.localize&&!f&&B([1,2,3,4,5,6,0].map(e=>G.localize.day(e,{width:"abbreviated"})));},[G,f]),jsxs(C,{...N,children:[jsx(D,{children:jsx("tr",{children:A.map(t=>jsx(S,{scope:"column",children:t},t))})}),jsx(k,{children:E.map(r=>jsx(z,{...r.props,children:r.days.map(r=>jsxs(L,{...r.props,children:[jsx(O,{...r.props,children:r.label}),r.events.length>0&&jsx(CalendarDaygridCell,{eventClicked:v,setEventClicked:g,eventHovered:w,setEventHovered:y,view:b,maxEvents:j,events:r.events,timestamp:r.timestamp,calendarsMap:x,...q})]}))}))})]})};
10
+
11
+ export { KoineCalendarDaygridTable };
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+
5
+ let KoineCalendarLegend=({calendarsMap:a={},toggleCalendarVisibility:s,LegendItem:d="div",LegendItemStatus:i="span",LegendItemLabel:l="span",LegendItemEvents:t="span"})=>jsxRuntime.jsx(jsxRuntime.Fragment,{children:Object.entries(a).map(([r,a])=>jsxRuntime.jsxs(d,{onClick:()=>s(r),$color:a.color,$empty:0===a.events,disabled:0===a.events,children:[jsxRuntime.jsx(i,{children:a.on?"⬤":"⭘"}),jsxRuntime.jsx(l,{children:a.name}),jsxRuntime.jsx(t,{children:a.events})]},"CalendarLegend."+r))});
6
+
7
+ exports.KoineCalendarLegend = KoineCalendarLegend;
@@ -1,5 +1,5 @@
1
- import type { KoineComponent, KoineComponentProps } from "../types.js";
2
- import type { CalendarsMap } from "./types.js";
1
+ import type { KoineComponent, KoineComponentProps } from "../types";
2
+ import type { CalendarsMap } from "./types";
3
3
  export type KoineCalendarLegendProps = {
4
4
  toggleCalendarVisibility: (id: string) => void;
5
5
  calendarsMap: CalendarsMap;
@@ -15,4 +15,4 @@ export type CalendarLegendProps = KoineComponentProps<KoineCalendarLegendProps,
15
15
  LegendItemLabel?: KoineComponent;
16
16
  LegendItemEvents?: KoineComponent;
17
17
  }>;
18
- export declare const KoineCalendarLegend: ({ calendarsMap, toggleCalendarVisibility, LegendItem, LegendItemStatus, LegendItemLabel, LegendItemEvents, }: CalendarLegendProps) => import("react/jsx-runtime").JSX.Element;
18
+ export declare let KoineCalendarLegend: ({ calendarsMap, toggleCalendarVisibility, LegendItem, LegendItemStatus, LegendItemLabel, LegendItemEvents, }: CalendarLegendProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,5 @@
1
+ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
+
3
+ let KoineCalendarLegend=({calendarsMap:a={},toggleCalendarVisibility:s,LegendItem:d="div",LegendItemStatus:i="span",LegendItemLabel:l="span",LegendItemEvents:t="span"})=>jsx(Fragment,{children:Object.entries(a).map(([r,a])=>jsxs(d,{onClick:()=>s(r),$color:a.color,$empty:0===a.events,disabled:0===a.events,children:[jsx(i,{children:a.on?"⬤":"⭘"}),jsx(l,{children:a.name}),jsx(t,{children:a.events})]},"CalendarLegend."+r))});
4
+
5
+ export { KoineCalendarLegend };
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ var differenceInDays = require('date-fns/differenceInDays');
4
+ var subDays = require('date-fns/subDays');
5
+ var utils$1 = require('@koine/utils');
6
+ var utils = require('./utils.cjs.js');
7
+
8
+ let getCalendarsEventsFromGoogle=async({calendars:e,...t})=>{let a={};return await Promise.all(e.map(async e=>{utils.addCalendarEvents(await o({calendar:e,...t}),a);})),a};async function o({apiKey:s,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:s||process.env.GOOGLE_CALENDAR_API_KEY||""}).toString(),f="https://www.googleapis.com/calendar/v3/calendars/"+o.id+"/events?"+u;try{let s=await fetch(f,{method:"GET"}),m=await s.json();o.name=o.name||m.summary,m.items.forEach(s=>{var m,d;let l,u,f,w,g,p,D,h,y,E,v,S,T,I,x=(m=s,d=o,l=new Date(m.created),u=m.htmlLink,f=m.summary,w=m.status,g=new Date(m.start.date||m.start.dateTime),p=new Date(m.end.date||m.end.dateTime),D=d.color,h=utils$1.isUndefined(m.end.dateTime)&&utils$1.isString(m.end.date),y=m.location||"",E=m.description||"",v=l.getTime()+""+g.getTime(),h&&p>g&&(p=subDays.subDays(p,1)).setHours(23,59,59),S=function(){let t=new Date(g),a=new Date(p),n=[utils.getEventTimestamp(t)];for(;differenceInDays.differenceInDays(a,t);)t.setDate(t.getDate()+1),n.push(utils.getEventTimestamp(t));return n}(),T=utils$1.arrayToLookup(S),I=S.length>1,{calendar:d,created:l,link:u,title:f,status:w,start:g,end:p,days:S,daysMap:T,multi:I,color:D,allDay:h,location:y,description:E,uid:v});c[x.uid]=x;});}catch(e){}return c}
9
+
10
+ exports.getCalendarsEventsFromGoogle = getCalendarsEventsFromGoogle;
@@ -0,0 +1,18 @@
1
+ import type { CalendarEventsMap, Calendars } from "./types";
2
+ type GetCalendarsEventsFromGoogleOptions = {
3
+ /** Fall back to `process.env.GOOGLE_CALENDAR_API_KEY */
4
+ apiKey?: string;
5
+ /** Start gethering events from date */
6
+ start: Date;
7
+ /** End gethering events at date */
8
+ end: Date;
9
+ /**
10
+ * The default is the time zone of the calendar
11
+ * @see https://developers.google.com/calendar/api/v3/reference/events/list
12
+ */
13
+ timeZone?: string;
14
+ /** The calendars settings */
15
+ calendars: Calendars;
16
+ };
17
+ export declare let getCalendarsEventsFromGoogle: ({ calendars, ...options }: GetCalendarsEventsFromGoogleOptions) => Promise<CalendarEventsMap>;
18
+ export {};
@@ -0,0 +1,8 @@
1
+ import { differenceInDays } from 'date-fns/differenceInDays';
2
+ import { subDays } from 'date-fns/subDays';
3
+ import { isUndefined, isString, arrayToLookup } from '@koine/utils';
4
+ import { addCalendarEvents, getEventTimestamp } from './utils.esm.js';
5
+
6
+ let getCalendarsEventsFromGoogle=async({calendars:e,...t})=>{let a={};return await Promise.all(e.map(async e=>{addCalendarEvents(await o({calendar:e,...t}),a);})),a};async function o({apiKey:s,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:s||process.env.GOOGLE_CALENDAR_API_KEY||""}).toString(),f="https://www.googleapis.com/calendar/v3/calendars/"+o.id+"/events?"+u;try{let s=await fetch(f,{method:"GET"}),m=await s.json();o.name=o.name||m.summary,m.items.forEach(s=>{var m,d;let l,u,f,w,g,p,D,h,y,E,v,S,T,I,x=(m=s,d=o,l=new Date(m.created),u=m.htmlLink,f=m.summary,w=m.status,g=new Date(m.start.date||m.start.dateTime),p=new Date(m.end.date||m.end.dateTime),D=d.color,h=isUndefined(m.end.dateTime)&&isString(m.end.date),y=m.location||"",E=m.description||"",v=l.getTime()+""+g.getTime(),h&&p>g&&(p=subDays(p,1)).setHours(23,59,59),S=function(){let t=new Date(g),a=new Date(p),n=[getEventTimestamp(t)];for(;differenceInDays(a,t);)t.setDate(t.getDate()+1),n.push(getEventTimestamp(t));return n}(),T=arrayToLookup(S),I=S.length>1,{calendar:d,created:l,link:u,title:f,status:w,start:g,end:p,days:S,daysMap:T,multi:I,color:D,allDay:h,location:y,description:E,uid:v});c[x.uid]=x;});}catch(e){}return c}
7
+
8
+ export { getCalendarsEventsFromGoogle };
@@ -1,6 +1,10 @@
1
1
  export type Calendar = {
2
2
  id: string;
3
3
  color: string;
4
+ /**
5
+ * If not defined the name is gathered from the remote calendar response,
6
+ * for google calendars that comes from the `summary` value.
7
+ */
4
8
  name?: string;
5
9
  };
6
10
  export type Calendars = Calendar[];
@@ -12,8 +16,17 @@ export type CalendarRange = [Date, Date];
12
16
  export type CalendarView = "month" | "week";
13
17
  export type CalendarEvent = {
14
18
  calendar: Calendar;
19
+ /**
20
+ * List of day timestamps across which the event spans
21
+ */
15
22
  days: number[];
23
+ /**
24
+ * Lookup object for day timestamps across which the event spans
25
+ */
16
26
  daysMap: Record<number, 1>;
27
+ /**
28
+ * Flag for events that spans across multiple days
29
+ */
17
30
  multi: boolean;
18
31
  allDay: boolean;
19
32
  link: string;
@@ -27,7 +40,13 @@ export type CalendarEvent = {
27
40
  description: string;
28
41
  uid: string;
29
42
  };
43
+ /**
44
+ * Calendar events mapped by day `timestamp` number
45
+ */
30
46
  export type CalendarEventsByTimestamp = Record<number, CalendarEventsMap>;
47
+ /**
48
+ * Calendar events map by `uid`
49
+ */
31
50
  export type CalendarEventsMap = Record<CalendarEvent["uid"], CalendarEvent>;
32
51
  export type CalendarViewWeeks = CalendarViewWeek[];
33
52
  export type CalendarViewWeek = {
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ var react = require('react');
4
+ var calendarApiGoogle = require('./calendar-api-google.cjs.js');
5
+ var utils = require('./utils.cjs.js');
6
+
7
+ let useCalendar=({locale:d,apiKey:c,calendars:p,events:g,start:m,end:y,view:v="month",timeZone:f="",onError:b})=>{let[w,T]=react.useState(v),D=m||utils.getStartDate(new Date,w),h=y||utils.getEndDate(D,w),[O,P]=react.useState([D,h]),[j,x]=react.useState(utils.isTodayInView(D,h)),[C,L]=react.useState(g||{}),[N,k]=react.useState(null),[q,z]=react.useState(null),[A,B]=react.useReducer((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:true,events:0},e),{})),E=react.useCallback(e=>{B({type:"visibility",payload:e});},[B]),F=react.useCallback(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=react.useCallback(async(e,t,l)=>{try{let n=await calendarApiGoogle.getCalendarsEventsFromGoogle({apiKey:c,calendars:e,timeZone:f,start:t,end:l});L(n);}catch(e){b&&b(e);}},[L,c,f,b]),H=react.useCallback(()=>{let[e,t]=O,l=utils.getStartDate(new Date,w),n=utils.getEndDate(l,w);P([l,n]),(e.getTime()!==l.getTime()||t.getTime()!==n.getTime())&&(z(null),k(null));},[w,O]),I=react.useCallback(()=>{P(([e])=>{let t=utils.getPrevDate(e,w),l=utils.getEndDate(t,w);return [t,l]}),z(null),k(null);},[w]),J=react.useCallback(()=>{P(([e])=>{let t=utils.getNextDate(e,w),l=utils.getEndDate(t,w);return [t,l]}),z(null),k(null);},[w]),K=react.useCallback(e=>{let t=utils.getStartDate(D,e),l=utils.getEndDate(t,e);P([t,l]),T(e),z(null),k(null);},[D]);return react.useEffect(()=>{let[e,t]=O;G(p,e,t),x(utils.isTodayInView(e,t));},[O]),react.useEffect(()=>{C&&F(C);},[C,F]),react.useEffect(()=>{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})}};
8
+
9
+ exports.useCalendar = useCalendar;
@@ -1,15 +1,29 @@
1
- import type { KoineCalendarDaygridNavProps } from "./CalendarDaygridNav.js";
2
- import type { KoineCalendarDaygridTableProps } from "./CalendarDaygridTable.js";
3
- import type { KoineCalendarLegendProps } from "./CalendarLegend.js";
4
- import type { CalendarEvent, CalendarEventsMap, CalendarView, Calendars } from "./types.js";
1
+ import type { KoineCalendarDaygridNavProps } from "./CalendarDaygridNav";
2
+ import type { KoineCalendarDaygridTableProps } from "./CalendarDaygridTable";
3
+ import type { KoineCalendarLegendProps } from "./CalendarLegend";
4
+ import type { CalendarEvent, CalendarEventsMap, CalendarView, Calendars } from "./types";
5
5
  export type UseCalendarProps = {
6
+ /** The locale to format with `date-fns` */
6
7
  locale: string;
8
+ /** Calendars infos to use */
7
9
  calendars: Calendars;
10
+ /** Fall back to `process.env.GOOGLE_CALENDAR_API_KEY */
8
11
  apiKey?: string;
12
+ /** The key is the event `uid` */
9
13
  events?: CalendarEventsMap;
14
+ /** It defaults to the first of the current month */
10
15
  start?: Date;
16
+ /** It defaults to the last day of the current month */
11
17
  end?: Date;
18
+ /**
19
+ * The calendar view
20
+ * @default "month"
21
+ */
12
22
  view?: CalendarView;
23
+ /**
24
+ * The default is the time zone of the calendar
25
+ * @see https://developers.google.com/calendar/api/v3/reference/events/list
26
+ */
13
27
  timeZone?: string;
14
28
  onError?: (e: any) => void;
15
29
  };
@@ -23,7 +37,7 @@ export type CalendarsUpdateActionVisibility = {
23
37
  payload: string | string[];
24
38
  };
25
39
  export type CalendarsUpdateAction = CalendarsUpdateActionEvents | CalendarsUpdateActionVisibility;
26
- export declare function useCalendar({ locale, apiKey, calendars, events: initialEvents, start: initialStart, end: initialEnd, view: initialView, timeZone, onError, }: UseCalendarProps): {
40
+ export declare let useCalendar: ({ locale, apiKey, calendars, events: initialEvents, start: initialStart, end: initialEnd, view: initialView, timeZone, onError, }: UseCalendarProps) => {
27
41
  view: "month" | "week";
28
42
  eventClicked: CalendarEvent | null;
29
43
  setEventClicked: import("react").Dispatch<import("react").SetStateAction<CalendarEvent | null>>;
@@ -0,0 +1,7 @@
1
+ import { useState, useReducer, useCallback, useEffect } from 'react';
2
+ import { getCalendarsEventsFromGoogle } from './calendar-api-google.esm.js';
3
+ import { getStartDate, getEndDate, isTodayInView, getPrevDate, getNextDate } from './utils.esm.js';
4
+
5
+ let useCalendar=({locale:d,apiKey:c,calendars:p,events:g,start:m,end:y,view:v="month",timeZone:f="",onError:b})=>{let[w,T]=useState(v),D=m||getStartDate(new Date,w),h=y||getEndDate(D,w),[O,P]=useState([D,h]),[j,x]=useState(isTodayInView(D,h)),[C,L]=useState(g||{}),[N,k]=useState(null),[q,z]=useState(null),[A,B]=useReducer((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:true,events:0},e),{})),E=useCallback(e=>{B({type:"visibility",payload:e});},[B]),F=useCallback(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=useCallback(async(e,t,l)=>{try{let n=await getCalendarsEventsFromGoogle({apiKey:c,calendars:e,timeZone:f,start:t,end:l});L(n);}catch(e){b&&b(e);}},[L,c,f,b]),H=useCallback(()=>{let[e,t]=O,l=getStartDate(new Date,w),n=getEndDate(l,w);P([l,n]),(e.getTime()!==l.getTime()||t.getTime()!==n.getTime())&&(z(null),k(null));},[w,O]),I=useCallback(()=>{P(([e])=>{let t=getPrevDate(e,w),l=getEndDate(t,w);return [t,l]}),z(null),k(null);},[w]),J=useCallback(()=>{P(([e])=>{let t=getNextDate(e,w),l=getEndDate(t,w);return [t,l]}),z(null),k(null);},[w]),K=useCallback(e=>{let t=getStartDate(D,e),l=getEndDate(t,e);P([t,l]),T(e),z(null),k(null);},[D]);return useEffect(()=>{let[e,t]=O;G(p,e,t),x(isTodayInView(e,t));},[O]),useEffect(()=>{C&&F(C);},[C,F]),useEffect(()=>{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})}};
6
+
7
+ export { useCalendar };
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ var react = require('react');
4
+
5
+ let useDateLocale=(a,l="en")=>{let[r,n]=react.useState(),[o,c]=react.useState(l);return react.useEffect(()=>{let e=async()=>{let e=await import('date-fns/locale/en-US');c(a||o),n(e.enUS);};a!==o&&e();},[a,o]),r};
6
+
7
+ exports.useDateLocale = useDateLocale;
@@ -0,0 +1,8 @@
1
+ import type { Locale } from "date-fns";
2
+ /**
3
+ * Dynamically import the date-fns correct locale
4
+ *
5
+ * Inspired by:
6
+ * @see https://robertmarshall.dev/blog/dynamically-import-datefns-locale-mui-datepicker-localization/
7
+ */
8
+ export declare let useDateLocale: (locale?: string, defaultLocale?: string) => Locale | undefined;
@@ -0,0 +1,5 @@
1
+ import { useState, useEffect } from 'react';
2
+
3
+ let useDateLocale=(a,l="en")=>{let[r,n]=useState(),[o,c]=useState(l);return useEffect(()=>{let e=async()=>{let e=await import('date-fns/locale/en-US');c(a||o),n(e.enUS);};a!==o&&e();},[a,o]),r};
4
+
5
+ export { useDateLocale };
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ var addDays = require('date-fns/addDays');
4
+ var addMonths = require('date-fns/addMonths');
5
+ var addWeeks = require('date-fns/addWeeks');
6
+ var endOfMonth = require('date-fns/endOfMonth');
7
+ var endOfWeek = require('date-fns/endOfWeek');
8
+ var isWithinInterval = require('date-fns/isWithinInterval');
9
+ var startOfWeek = require('date-fns/startOfWeek');
10
+ var subMonths = require('date-fns/subMonths');
11
+ var subWeeks = require('date-fns/subWeeks');
12
+
13
+ let getEventTimestamp=e=>{let t=new Date(e);return t.setHours(0,0,0,0),t.valueOf()/1e3};let getDisplayTime=e=>e.getHours()+":"+"0".repeat(2-e.getMinutes().toString().length)+e.getMinutes();let getStartDate=(e,t)=>(e.setHours(0,0,0),"month"===t?e.setDate(1):"week"===t&&(e=startOfWeek.startOfWeek(e,{weekStartsOn:1})),e);let getEndDate=(e,t)=>{let r=e;return "month"===t?r=endOfMonth.endOfMonth(e):"week"===t&&(r=endOfWeek.endOfWeek(e,{weekStartsOn:1})),r.setHours(23,59,59),r};let getPrevDate=(e,t)=>"month"===t?subMonths.subMonths(e,1):subWeeks.subWeeks(e,1);let getNextDate=(e,a)=>"month"===a?addMonths.addMonths(e,1):addWeeks.addWeeks(e,1);let isTodayInView=(e,t)=>isWithinInterval.isWithinInterval(new Date,{start:e,end:t});let addCalendarEvents=(e,t)=>{for(let r in e){let a=e[r];t[r]=a;}return t};let processEventsInView=(t,r,a,n)=>{let s=(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})(t),o=(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})(t),l=new Date,m=getEventTimestamp(l),i={},d=[];for(let t=0;t<n.length;t++){let p={props:{key:`week.${t}`},days:[]},f=n[t],u=f.getDate(),g=getEventTimestamp(new Date(f)),h=getEventTimestamp(addDays.addDays(new Date(f),6));for(let e=0;e<7;e++){let t=new Date(new Date(f).setDate(u+e)),n=getEventTimestamp(t),d={$isToday:m===n,$isOutOfRange:"month"===r&&t.getMonth()!==a},v={props:{key:`day.${n}`,...d},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,s=o[r],m=1,p=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=true)),i[s.uid])p=i[s.uid];else for(let e=0;e<t.length;e++)if(1!==t[e]){p=e;break}t[p]=1,a&&(i[s.uid]=p),v.events.push({key:`event.${n}-${p}`,...d,...s,isPast:l>s.end,firstOfMulti:a,top:p,width:m});}}for(let e=0;e<t.length;e++)1!==t[e]&&v.events.push({key:`event.${n}-${e}}`,placeholder:true,top:e});v.events.sort((e,t)=>e.top-t.top);}p.days.push(v);}d.push(p);}return d};
14
+
15
+ exports.addCalendarEvents = addCalendarEvents;
16
+ exports.getDisplayTime = getDisplayTime;
17
+ exports.getEndDate = getEndDate;
18
+ exports.getEventTimestamp = getEventTimestamp;
19
+ exports.getNextDate = getNextDate;
20
+ exports.getPrevDate = getPrevDate;
21
+ exports.getStartDate = getStartDate;
22
+ exports.isTodayInView = isTodayInView;
23
+ exports.processEventsInView = processEventsInView;
@@ -0,0 +1,11 @@
1
+ import type { CalendarEventsMap, CalendarView, CalendarViewWeeks } from "./types";
2
+ export declare let getEventTimestamp: (dateLike: number | Date | string) => number;
3
+ export declare let getDisplayTime: (date: Date) => string;
4
+ export declare let getStartDate: (date: Date, view: CalendarView) => Date;
5
+ export declare let getEndDate: (start: Date, view: CalendarView) => Date;
6
+ export declare let getPrevDate: (date: Date, view: CalendarView) => Date;
7
+ export declare let getNextDate: (date: Date, view: CalendarView) => Date;
8
+ export declare let isTodayInView: (start: Date, end: Date) => boolean;
9
+ export declare let mergeCalendarEvents: (first: CalendarEventsMap, second: CalendarEventsMap) => CalendarEventsMap;
10
+ export declare let addCalendarEvents: (toAdd: CalendarEventsMap, toExtend: CalendarEventsMap) => CalendarEventsMap;
11
+ export declare let processEventsInView: (eventsMap: CalendarEventsMap, calendarView: CalendarView, month: number, weeks: Date[]) => CalendarViewWeeks;
@@ -0,0 +1,13 @@
1
+ import { addDays } from 'date-fns/addDays';
2
+ import { addMonths } from 'date-fns/addMonths';
3
+ import { addWeeks } from 'date-fns/addWeeks';
4
+ import { endOfMonth } from 'date-fns/endOfMonth';
5
+ import { endOfWeek } from 'date-fns/endOfWeek';
6
+ import { isWithinInterval } from 'date-fns/isWithinInterval';
7
+ import { startOfWeek } from 'date-fns/startOfWeek';
8
+ import { subMonths } from 'date-fns/subMonths';
9
+ import { subWeeks } from 'date-fns/subWeeks';
10
+
11
+ let getEventTimestamp=e=>{let t=new Date(e);return t.setHours(0,0,0,0),t.valueOf()/1e3};let getDisplayTime=e=>e.getHours()+":"+"0".repeat(2-e.getMinutes().toString().length)+e.getMinutes();let getStartDate=(e,t)=>(e.setHours(0,0,0),"month"===t?e.setDate(1):"week"===t&&(e=startOfWeek(e,{weekStartsOn:1})),e);let getEndDate=(e,t)=>{let r=e;return "month"===t?r=endOfMonth(e):"week"===t&&(r=endOfWeek(e,{weekStartsOn:1})),r.setHours(23,59,59),r};let getPrevDate=(e,t)=>"month"===t?subMonths(e,1):subWeeks(e,1);let getNextDate=(e,a)=>"month"===a?addMonths(e,1):addWeeks(e,1);let isTodayInView=(e,t)=>isWithinInterval(new Date,{start:e,end:t});let addCalendarEvents=(e,t)=>{for(let r in e){let a=e[r];t[r]=a;}return t};let processEventsInView=(t,r,a,n)=>{let s=(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})(t),o=(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})(t),l=new Date,m=getEventTimestamp(l),i={},d=[];for(let t=0;t<n.length;t++){let p={props:{key:`week.${t}`},days:[]},f=n[t],u=f.getDate(),g=getEventTimestamp(new Date(f)),h=getEventTimestamp(addDays(new Date(f),6));for(let e=0;e<7;e++){let t=new Date(new Date(f).setDate(u+e)),n=getEventTimestamp(t),d={$isToday:m===n,$isOutOfRange:"month"===r&&t.getMonth()!==a},v={props:{key:`day.${n}`,...d},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,s=o[r],m=1,p=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=true)),i[s.uid])p=i[s.uid];else for(let e=0;e<t.length;e++)if(1!==t[e]){p=e;break}t[p]=1,a&&(i[s.uid]=p),v.events.push({key:`event.${n}-${p}`,...d,...s,isPast:l>s.end,firstOfMulti:a,top:p,width:m});}}for(let e=0;e<t.length;e++)1!==t[e]&&v.events.push({key:`event.${n}-${e}}`,placeholder:true,top:e});v.events.sort((e,t)=>e.top-t.top);}p.days.push(v);}d.push(p);}return d};
12
+
13
+ export { addCalendarEvents, getDisplayTime, getEndDate, getEventTimestamp, getNextDate, getPrevDate, getStartDate, isTodayInView, processEventsInView };
@@ -0,0 +1 @@
1
+ exports._default = require('./calendar.cjs.js').default;