@koine/react 2.0.0-beta.37 → 2.0.0-beta.39

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 (470) hide show
  1. package/README.md +1 -0
  2. package/calendar/CalendarDaygridCell.d.ts +4 -4
  3. package/calendar/CalendarDaygridNav.d.ts +3 -3
  4. package/calendar/CalendarDaygridTable.d.ts +4 -4
  5. package/calendar/CalendarLegend.d.ts +3 -3
  6. package/calendar/calendar-api-google.d.ts +2 -2
  7. package/calendar/useCalendar.d.ts +5 -5
  8. package/calendar/useDateLocale.d.ts +2 -0
  9. package/calendar/utils.d.ts +11 -11
  10. package/calendar.cjs.d.ts +1 -0
  11. package/calendar.cjs.default.js +1 -0
  12. package/calendar.cjs.js +62 -0
  13. package/calendar.cjs.mjs +2 -0
  14. package/calendar.d.ts +7 -0
  15. package/calendar.esm.js +35 -0
  16. package/components/FaviconTags.d.ts +8 -0
  17. package/components/Meta.d.ts +4 -0
  18. package/components/NoJs.d.ts +2 -0
  19. package/forms/antispam.d.ts +6 -6
  20. package/forms.cjs.d.ts +1 -0
  21. package/forms.cjs.default.js +1 -0
  22. package/forms.cjs.js +11 -0
  23. package/forms.cjs.mjs +2 -0
  24. package/forms.d.ts +1 -0
  25. package/forms.esm.js +6 -0
  26. package/hooks/index.d.ts +19 -0
  27. package/{useAsyncFn.d.ts → hooks/useAsyncFn.d.ts} +3 -3
  28. package/hooks/useFirstMountState.d.ts +1 -0
  29. package/hooks/useFixedOffset.d.ts +1 -0
  30. package/hooks/useFocus.d.ts +1 -0
  31. package/hooks/useInterval.d.ts +1 -0
  32. package/hooks/useIsomorphicLayoutEffect.d.ts +2 -0
  33. package/hooks/useKeyUp.d.ts +1 -0
  34. package/{useMeasure.d.ts → hooks/useMeasure.d.ts} +2 -2
  35. package/hooks/useMountedState.d.ts +1 -0
  36. package/hooks/useNavigateAway.d.ts +2 -0
  37. package/hooks/usePrevious.d.ts +1 -0
  38. package/hooks/usePreviousRef.d.ts +1 -0
  39. package/{useReveal.d.ts → hooks/useReveal.d.ts} +1 -1
  40. package/hooks/useScrollPosition.d.ts +7 -0
  41. package/hooks/useScrollThreshold.d.ts +1 -0
  42. package/hooks/useScrollTo.d.ts +1 -0
  43. package/hooks/useSmoothScroll.d.ts +1 -0
  44. package/hooks/useSpinDelay.d.ts +1 -0
  45. package/hooks/useTraceUpdate.d.ts +1 -0
  46. package/hooks/useUpdateEffect.d.ts +2 -0
  47. package/hooks/useWindowSize.d.ts +2 -0
  48. package/index.cjs.d.ts +1 -0
  49. package/index.cjs.default.js +1 -0
  50. package/index.cjs.js +77 -0
  51. package/index.cjs.mjs +2 -0
  52. package/index.d.ts +3 -26
  53. package/index.esm.js +51 -0
  54. package/package.json +21 -646
  55. package/utils/classed.d.ts +8 -0
  56. package/{createUseMediaQueryWidth.d.ts → utils/createUseMediaQueryWidth.d.ts} +2 -2
  57. package/{extendComponent.d.ts → utils/extendComponent.d.ts} +2 -3
  58. package/utils/index.d.ts +5 -0
  59. package/utils/mergeRefs.d.ts +1 -0
  60. package/Alert/Alert.d.ts +0 -5
  61. package/Alert/Alert.js +0 -10
  62. package/Alert/index.d.ts +0 -1
  63. package/Alert/index.js +0 -1
  64. package/Animations/Reveal.d.ts +0 -3
  65. package/Animations/Reveal.js +0 -16
  66. package/Animations/Underline.d.ts +0 -1
  67. package/Animations/Underline.js +0 -5
  68. package/Animations/index.d.ts +0 -3
  69. package/Animations/index.js +0 -3
  70. package/Animations/useReveal.d.ts +0 -13
  71. package/Animations/useReveal.js +0 -43
  72. package/Autocomplete/AutocompleteDownshift.d.ts +0 -1
  73. package/Autocomplete/AutocompleteDownshift.js +0 -1
  74. package/Autocomplete/AutocompleteDownshiftMultiselect.d.ts +0 -1
  75. package/Autocomplete/AutocompleteDownshiftMultiselect.js +0 -1
  76. package/Autocomplete/AutocompleteMui.d.ts +0 -22
  77. package/Autocomplete/AutocompleteMui.js +0 -93
  78. package/Autocomplete/AutocompleteReach.d.ts +0 -1
  79. package/Autocomplete/AutocompleteReach.js +0 -1
  80. package/Autocomplete/components.d.ts +0 -12
  81. package/Autocomplete/components.js +0 -26
  82. package/Autocomplete/helpers.d.ts +0 -3
  83. package/Autocomplete/helpers.js +0 -16
  84. package/Autocomplete/index.d.ts +0 -2
  85. package/Autocomplete/index.js +0 -1
  86. package/Bg/BgColor.d.ts +0 -12
  87. package/Bg/BgColor.js +0 -16
  88. package/Bg/BgPhoto.d.ts +0 -8
  89. package/Bg/BgPhoto.js +0 -16
  90. package/Bg/BgSvg.d.ts +0 -4
  91. package/Bg/BgSvg.js +0 -9
  92. package/Bg/index.d.ts +0 -3
  93. package/Bg/index.js +0 -3
  94. package/Breadcrumbs/Breadcrumbs.d.ts +0 -13
  95. package/Breadcrumbs/Breadcrumbs.js +0 -27
  96. package/Breadcrumbs/index.d.ts +0 -1
  97. package/Breadcrumbs/index.js +0 -1
  98. package/Buttons/Button.d.ts +0 -14
  99. package/Buttons/Button.js +0 -10
  100. package/Buttons/ButtonComposite.d.ts +0 -22
  101. package/Buttons/ButtonComposite.js +0 -28
  102. package/Buttons/ButtonFab.d.ts +0 -4
  103. package/Buttons/ButtonFab.js +0 -6
  104. package/Buttons/ButtonLink.d.ts +0 -8
  105. package/Buttons/ButtonLink.js +0 -11
  106. package/Buttons/IconButton.d.ts +0 -8
  107. package/Buttons/IconButton.js +0 -7
  108. package/Buttons/index.d.ts +0 -5
  109. package/Buttons/index.js +0 -5
  110. package/Calendar/CalendarDaygridCell.d.ts +0 -35
  111. package/Calendar/CalendarDaygridCell.js +0 -46
  112. package/Calendar/CalendarDaygridNav.d.ts +0 -27
  113. package/Calendar/CalendarDaygridNav.js +0 -24
  114. package/Calendar/CalendarDaygridTable.d.ts +0 -25
  115. package/Calendar/CalendarDaygridTable.js +0 -45
  116. package/Calendar/CalendarLegend.d.ts +0 -18
  117. package/Calendar/CalendarLegend.js +0 -9
  118. package/Calendar/calendar-api-google.d.ts +0 -10
  119. package/Calendar/calendar-api-google.js +0 -124
  120. package/Calendar/index.d.ts +0 -6
  121. package/Calendar/index.js +0 -6
  122. package/Calendar/types.d.ts +0 -62
  123. package/Calendar/types.js +0 -1
  124. package/Calendar/useCalendar.d.ts +0 -35
  125. package/Calendar/useCalendar.js +0 -176
  126. package/Calendar/utils.d.ts +0 -11
  127. package/Calendar/utils.js +0 -185
  128. package/Carousel/Carousel.d.ts +0 -1
  129. package/Carousel/Carousel.js +0 -1
  130. package/Carousel/CarouselCss.d.ts +0 -13
  131. package/Carousel/CarouselCss.js +0 -19
  132. package/Carousel/index.d.ts +0 -1
  133. package/Carousel/index.js +0 -1
  134. package/Collapsable/Collapsable.d.ts +0 -1
  135. package/Collapsable/Collapsable.js +0 -1
  136. package/Collapsable/CollapsableReach.d.ts +0 -0
  137. package/Collapsable/CollapsableReach.js +0 -1
  138. package/Collapsable/index.d.ts +0 -1
  139. package/Collapsable/index.js +0 -1
  140. package/Debug/Debug.d.ts +0 -4
  141. package/Debug/Debug.js +0 -9
  142. package/Debug/index.d.ts +0 -1
  143. package/Debug/index.js +0 -1
  144. package/Details/Details.d.ts +0 -398
  145. package/Details/Details.js +0 -52
  146. package/Details/index.d.ts +0 -1
  147. package/Details/index.js +0 -1
  148. package/Dialog/DialogMui.d.ts +0 -165
  149. package/Dialog/DialogMui.js +0 -39
  150. package/Dialog/css/bare.d.ts +0 -171
  151. package/Dialog/css/bare.js +0 -21
  152. package/Dialog/index.d.ts +0 -2
  153. package/Dialog/index.js +0 -1
  154. package/Dialog/m/bare.d.ts +0 -4
  155. package/Dialog/m/bare.js +0 -3
  156. package/Dialog/m/basic.d.ts +0 -4
  157. package/Dialog/m/basic.js +0 -28
  158. package/Dialog/m/index.d.ts +0 -2
  159. package/Dialog/m/index.js +0 -4
  160. package/Dialog/sc/bare.d.ts +0 -61
  161. package/Dialog/sc/bare.js +0 -31
  162. package/Dialog/sc/framer.d.ts +0 -24
  163. package/Dialog/sc/framer.js +0 -16
  164. package/Dialog/sc/framerMaterial.d.ts +0 -24
  165. package/Dialog/sc/framerMaterial.js +0 -16
  166. package/Dialog/sc/material.d.ts +0 -60
  167. package/Dialog/sc/material.js +0 -21
  168. package/Dialog/tw/bare.d.ts +0 -208
  169. package/Dialog/tw/bare.js +0 -29
  170. package/Dialog/tw/elegant.d.ts +0 -270
  171. package/Dialog/tw/elegant.js +0 -21
  172. package/Dialog/tw/framer.d.ts +0 -108
  173. package/Dialog/tw/framer.js +0 -16
  174. package/Dialog/tw/framerMaterial.d.ts +0 -164
  175. package/Dialog/tw/framerMaterial.js +0 -16
  176. package/Dialog/tw/material.d.ts +0 -270
  177. package/Dialog/tw/material.js +0 -21
  178. package/Editor/Editor--tiptap.d.ts +0 -9
  179. package/Editor/Editor--tiptap.js +0 -26
  180. package/Editor/components.d.ts +0 -5
  181. package/Editor/components.js +0 -10
  182. package/Editor/index.d.ts +0 -1
  183. package/Editor/index.js +0 -1
  184. package/FaviconTags.d.ts +0 -9
  185. package/FaviconTags.js +0 -6
  186. package/Form/Form.d.ts +0 -125
  187. package/Form/Form.js +0 -60
  188. package/Form/index.d.ts +0 -1
  189. package/Form/index.js +0 -1
  190. package/Form/sc/bare.d.ts +0 -57
  191. package/Form/sc/bare.js +0 -20
  192. package/Forms/Checkbox/Checkbox.d.ts +0 -7
  193. package/Forms/Checkbox/Checkbox.js +0 -15
  194. package/Forms/Checkbox/index.d.ts +0 -1
  195. package/Forms/Checkbox/index.js +0 -1
  196. package/Forms/Feedback/Feedback.d.ts +0 -5
  197. package/Forms/Feedback/Feedback.js +0 -9
  198. package/Forms/Feedback/index.d.ts +0 -1
  199. package/Forms/Feedback/index.js +0 -1
  200. package/Forms/Field/Field.d.ts +0 -18
  201. package/Forms/Field/Field.js +0 -25
  202. package/Forms/Field/FieldControl.d.ts +0 -14
  203. package/Forms/Field/FieldControl.js +0 -35
  204. package/Forms/Field/FieldHint.d.ts +0 -1
  205. package/Forms/Field/FieldHint.js +0 -4
  206. package/Forms/Field/index.d.ts +0 -2
  207. package/Forms/Field/index.js +0 -2
  208. package/Forms/Input/Input.d.ts +0 -8
  209. package/Forms/Input/Input.js +0 -16
  210. package/Forms/Input/index.d.ts +0 -1
  211. package/Forms/Input/index.js +0 -1
  212. package/Forms/InputGroup/InputGroup.d.ts +0 -12
  213. package/Forms/InputGroup/InputGroup.js +0 -15
  214. package/Forms/InputGroup/index.d.ts +0 -1
  215. package/Forms/InputGroup/index.js +0 -1
  216. package/Forms/Label/Label.d.ts +0 -3
  217. package/Forms/Label/Label.js +0 -6
  218. package/Forms/Label/index.d.ts +0 -1
  219. package/Forms/Label/index.js +0 -1
  220. package/Forms/Password/Password.d.ts +0 -4
  221. package/Forms/Password/Password.js +0 -17
  222. package/Forms/Password/index.d.ts +0 -1
  223. package/Forms/Password/index.js +0 -1
  224. package/Forms/Radio/Radio.d.ts +0 -11
  225. package/Forms/Radio/Radio.js +0 -25
  226. package/Forms/Radio/index.d.ts +0 -1
  227. package/Forms/Radio/index.js +0 -1
  228. package/Forms/Switch/Switch.d.ts +0 -5
  229. package/Forms/Switch/Switch.js +0 -17
  230. package/Forms/Switch/index.d.ts +0 -1
  231. package/Forms/Switch/index.js +0 -1
  232. package/Forms/Textarea/Textarea.d.ts +0 -4
  233. package/Forms/Textarea/Textarea.js +0 -12
  234. package/Forms/Textarea/TextareaRich.d.ts +0 -5
  235. package/Forms/Textarea/TextareaRich.js +0 -26
  236. package/Forms/Textarea/index.d.ts +0 -2
  237. package/Forms/Textarea/index.js +0 -2
  238. package/Forms/Toggle/Toggle-tailwind.d.ts +0 -0
  239. package/Forms/Toggle/Toggle-tailwind.js +0 -1
  240. package/Forms/Toggle/Toggle.d.ts +0 -18
  241. package/Forms/Toggle/Toggle.js +0 -25
  242. package/Forms/Toggle/index.d.ts +0 -1
  243. package/Forms/Toggle/index.js +0 -1
  244. package/Forms/Toggle/useToggle-tailwind.d.ts +0 -0
  245. package/Forms/Toggle/useToggle-tailwind.js +0 -1
  246. package/Forms/Toggle/useToggle.d.ts +0 -16
  247. package/Forms/Toggle/useToggle.js +0 -85
  248. package/Forms/antispam.d.ts +0 -27
  249. package/Forms/antispam.js +0 -29
  250. package/Forms/helpers.d.ts +0 -18
  251. package/Forms/helpers.js +0 -35
  252. package/Forms/index.d.ts +0 -15
  253. package/Forms/index.js +0 -15
  254. package/Forms/styles.d.ts +0 -9
  255. package/Forms/styles.js +0 -19
  256. package/Gauge/Gauge.d.ts +0 -4
  257. package/Gauge/Gauge.js +0 -1
  258. package/Grid/Grid.d.ts +0 -32
  259. package/Grid/Grid.js +0 -52
  260. package/Grid/index.d.ts +0 -1
  261. package/Grid/index.js +0 -1
  262. package/Hamburger/Hamburger.d.ts +0 -5
  263. package/Hamburger/Hamburger.js +0 -47
  264. package/Hamburger/index.d.ts +0 -1
  265. package/Hamburger/index.js +0 -1
  266. package/Header/index.d.ts +0 -1
  267. package/Header/index.js +0 -1
  268. package/Header/useHeader.d.ts +0 -20
  269. package/Header/useHeader.js +0 -32
  270. package/Hidden/Hidden.d.ts +0 -6
  271. package/Hidden/Hidden.js +0 -10
  272. package/Hidden/index.d.ts +0 -1
  273. package/Hidden/index.js +0 -1
  274. package/Img/index.d.ts +0 -1
  275. package/Img/index.js +0 -1
  276. package/Img/sc/bare.d.ts +0 -2
  277. package/Img/sc/bare.js +0 -4
  278. package/Img/types.d.ts +0 -9
  279. package/Img/types.js +0 -1
  280. package/Link/Link.d.ts +0 -3
  281. package/Link/Link.js +0 -4
  282. package/Link/LinkBlank.d.ts +0 -5
  283. package/Link/LinkBlank.js +0 -15
  284. package/Link/index.d.ts +0 -2
  285. package/Link/index.js +0 -2
  286. package/Menu/Menu.d.ts +0 -1
  287. package/Menu/Menu.js +0 -4
  288. package/Menu/MenuMui.d.ts +0 -0
  289. package/Menu/MenuMui.js +0 -1
  290. package/Menu/index.d.ts +0 -1
  291. package/Menu/index.js +0 -1
  292. package/MenuItem/MenuItem.d.ts +0 -1
  293. package/MenuItem/MenuItem.js +0 -4
  294. package/MenuItem/MenuItemMui.d.ts +0 -0
  295. package/MenuItem/MenuItemMui.js +0 -1
  296. package/MenuItem/index.d.ts +0 -1
  297. package/MenuItem/index.js +0 -1
  298. package/MenuItem/useMenuItem.d.ts +0 -9
  299. package/MenuItem/useMenuItem.js +0 -42
  300. package/Meta.d.ts +0 -5
  301. package/Meta.js +0 -6
  302. package/NoJs.d.ts +0 -3
  303. package/NoJs.js +0 -7
  304. package/Pagination/PaginationNav.d.ts +0 -14
  305. package/Pagination/PaginationNav.js +0 -48
  306. package/Pagination/PaginationResults.d.ts +0 -3
  307. package/Pagination/PaginationResults.js +0 -11
  308. package/Pagination/index.d.ts +0 -2
  309. package/Pagination/index.js +0 -2
  310. package/Pill/Pill.d.ts +0 -5
  311. package/Pill/Pill.js +0 -7
  312. package/Pill/index.d.ts +0 -1
  313. package/Pill/index.js +0 -1
  314. package/Polymorphic.js +0 -1
  315. package/Progress/ProgressCircular.d.ts +0 -13
  316. package/Progress/ProgressCircular.js +0 -12
  317. package/Progress/ProgressLinear.d.ts +0 -15
  318. package/Progress/ProgressLinear.js +0 -21
  319. package/Progress/ProgressOverlay.d.ts +0 -4
  320. package/Progress/ProgressOverlay.js +0 -23
  321. package/Progress/index.d.ts +0 -3
  322. package/Progress/index.js +0 -3
  323. package/Rating/Rating.d.ts +0 -27
  324. package/Rating/Rating.js +0 -43
  325. package/Rating/index.d.ts +0 -8
  326. package/Rating/index.js +0 -45
  327. package/Select/SelectDownshift.d.ts +0 -5
  328. package/Select/SelectDownshift.js +0 -1
  329. package/Select/components.d.ts +0 -6
  330. package/Select/components.js +0 -12
  331. package/Select/index.d.ts +0 -2
  332. package/Select/index.js +0 -1
  333. package/Sidebar/Sidebar.d.ts +0 -3
  334. package/Sidebar/Sidebar.js +0 -23
  335. package/Sidebar/index.d.ts +0 -1
  336. package/Sidebar/index.js +0 -1
  337. package/Spacing/Spacing.d.ts +0 -17
  338. package/Spacing/Spacing.js +0 -32
  339. package/Spacing/index.d.ts +0 -1
  340. package/Spacing/index.js +0 -1
  341. package/Sticky/Sticky.d.ts +0 -2
  342. package/Sticky/Sticky.js +0 -1
  343. package/Sticky/StickyCss.d.ts +0 -5
  344. package/Sticky/StickyCss.js +0 -6
  345. package/Sticky/index.d.ts +0 -1
  346. package/Sticky/index.js +0 -1
  347. package/Tabs/TabsMui.d.ts +0 -84
  348. package/Tabs/TabsMui.js +0 -30
  349. package/Tabs/index.d.ts +0 -1
  350. package/Tabs/index.js +0 -1
  351. package/Tabs/sc/bare.d.ts +0 -0
  352. package/Tabs/sc/bare.js +0 -1
  353. package/Tabs/tw/bare.d.ts +0 -85
  354. package/Tabs/tw/bare.js +0 -17
  355. package/Tabs/tw/material.d.ts +0 -118
  356. package/Tabs/tw/material.js +0 -19
  357. package/Tabs/useTabs.d.ts +0 -21
  358. package/Tabs/useTabs.js +0 -44
  359. package/Typography/CopyPasteVisible.d.ts +0 -1
  360. package/Typography/CopyPasteVisible.js +0 -4
  361. package/Typography/Native.d.ts +0 -10
  362. package/Typography/Native.js +0 -14
  363. package/Typography/ReadMore.d.ts +0 -10
  364. package/Typography/ReadMore.js +0 -42
  365. package/Typography/TextLoop.d.ts +0 -16
  366. package/Typography/TextLoop.js +0 -45
  367. package/Typography/TypeStairs.d.ts +0 -6
  368. package/Typography/TypeStairs.js +0 -42
  369. package/Typography/index.d.ts +0 -5
  370. package/Typography/index.js +0 -5
  371. package/calendar/CalendarDaygridCell.js +0 -48
  372. package/calendar/CalendarDaygridNav.js +0 -24
  373. package/calendar/CalendarDaygridTable.js +0 -45
  374. package/calendar/CalendarLegend.js +0 -9
  375. package/calendar/calendar-api-google.js +0 -124
  376. package/calendar/index.d.ts +0 -6
  377. package/calendar/index.js +0 -6
  378. package/calendar/types.js +0 -1
  379. package/calendar/useCalendar.js +0 -176
  380. package/calendar/utils.js +0 -185
  381. package/classed.d.ts +0 -8
  382. package/classed.js +0 -43
  383. package/createUseMediaQueryWidth.js +0 -39
  384. package/css/index.d.ts +0 -1
  385. package/css/index.js +0 -1
  386. package/extendComponent.js +0 -9
  387. package/forms/antispam.js +0 -29
  388. package/forms/index.d.ts +0 -1
  389. package/forms/index.js +0 -1
  390. package/index.js +0 -24
  391. package/m/MotionProvider.d.ts +0 -6
  392. package/m/MotionProvider.js +0 -7
  393. package/m/index.d.ts +0 -1
  394. package/m/index.js +0 -1
  395. package/m/lite.d.ts +0 -2
  396. package/m/lite.js +0 -2
  397. package/m/max.d.ts +0 -2
  398. package/m/max.js +0 -2
  399. package/mergeRefs.d.ts +0 -2
  400. package/mergeRefs.js +0 -13
  401. package/sc/index.d.ts +0 -29
  402. package/sc/index.js +0 -29
  403. package/scm/index.d.ts +0 -28
  404. package/scm/index.js +0 -28
  405. package/shared/index.d.ts +0 -7
  406. package/shared/index.js +0 -7
  407. package/styles/Body.d.ts +0 -2
  408. package/styles/Body.js +0 -5
  409. package/styles/Global.d.ts +0 -2
  410. package/styles/Global.js +0 -5
  411. package/styles/index.d.ts +0 -7
  412. package/styles/index.js +0 -7
  413. package/styles/media.d.ts +0 -18
  414. package/styles/media.js +0 -75
  415. package/styles/spacing.d.ts +0 -12
  416. package/styles/spacing.js +0 -45
  417. package/styles/styled.d.ts +0 -8
  418. package/styles/styled.js +0 -9
  419. package/styles/theme--vanilla.d.ts +0 -17
  420. package/styles/theme--vanilla.js +0 -47
  421. package/styles/theme.d.ts +0 -53
  422. package/styles/theme.js +0 -30
  423. package/tw/index.d.ts +0 -1
  424. package/tw/index.js +0 -1
  425. package/twm/index.d.ts +0 -1
  426. package/twm/index.js +0 -1
  427. package/types.js +0 -1
  428. package/typings.d.ts +0 -6
  429. package/useAsyncFn.js +0 -33
  430. package/useDateLocale.d.ts +0 -3
  431. package/useDateLocale.js +0 -28
  432. package/useFirstMountState.d.ts +0 -2
  433. package/useFirstMountState.js +0 -10
  434. package/useFixedOffset.d.ts +0 -2
  435. package/useFixedOffset.js +0 -42
  436. package/useFocus.d.ts +0 -2
  437. package/useFocus.js +0 -9
  438. package/useInterval.d.ts +0 -2
  439. package/useInterval.js +0 -22
  440. package/useIsomorphicLayoutEffect.d.ts +0 -3
  441. package/useIsomorphicLayoutEffect.js +0 -6
  442. package/useKeyUp.d.ts +0 -2
  443. package/useKeyUp.js +0 -18
  444. package/useMeasure.js +0 -130
  445. package/useMountedState.d.ts +0 -2
  446. package/useMountedState.js +0 -13
  447. package/useNavigateAway.d.ts +0 -3
  448. package/useNavigateAway.js +0 -25
  449. package/usePrevious.d.ts +0 -2
  450. package/usePrevious.js +0 -10
  451. package/usePreviousRef.d.ts +0 -2
  452. package/usePreviousRef.js +0 -9
  453. package/useReveal.js +0 -43
  454. package/useScrollPosition.d.ts +0 -7
  455. package/useScrollPosition.js +0 -61
  456. package/useScrollThreshold.d.ts +0 -2
  457. package/useScrollThreshold.js +0 -27
  458. package/useScrollTo.d.ts +0 -2
  459. package/useScrollTo.js +0 -20
  460. package/useSmoothScroll.d.ts +0 -2
  461. package/useSmoothScroll.js +0 -32
  462. package/useSpinDelay.d.ts +0 -2
  463. package/useSpinDelay.js +0 -39
  464. package/useTraceUpdate.d.ts +0 -2
  465. package/useTraceUpdate.js +0 -19
  466. package/useUpdateEffect.d.ts +0 -3
  467. package/useUpdateEffect.js +0 -11
  468. package/useWindowSize.d.ts +0 -3
  469. package/useWindowSize.js +0 -20
  470. /package/{Polymorphic.d.ts → utils/Polymorphic.d.ts} +0 -0
package/README.md ADDED
@@ -0,0 +1 @@
1
+ # @koine/react
@@ -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;
@@ -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;
@@ -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 { CalendarDaygridCellComponents, 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;
@@ -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;
@@ -1,4 +1,4 @@
1
- import type { CalendarEventsMap, Calendars } from "./types.js";
1
+ import type { CalendarEventsMap, Calendars } from "./types";
2
2
  type GetCalendarsEventsFromGoogleOptions = {
3
3
  apiKey?: string;
4
4
  start: Date;
@@ -6,5 +6,5 @@ type GetCalendarsEventsFromGoogleOptions = {
6
6
  timeZone?: string;
7
7
  calendars: Calendars;
8
8
  };
9
- export declare function getCalendarsEventsFromGoogle({ calendars, ...options }: GetCalendarsEventsFromGoogleOptions): Promise<CalendarEventsMap>;
9
+ export declare let getCalendarsEventsFromGoogle: ({ calendars, ...options }: GetCalendarsEventsFromGoogleOptions) => Promise<CalendarEventsMap>;
10
10
  export {};
@@ -1,7 +1,7 @@
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
6
  locale: string;
7
7
  calendars: Calendars;
@@ -23,7 +23,7 @@ export type CalendarsUpdateActionVisibility = {
23
23
  payload: string | string[];
24
24
  };
25
25
  export type CalendarsUpdateAction = CalendarsUpdateActionEvents | CalendarsUpdateActionVisibility;
26
- export declare function useCalendar({ locale, apiKey, calendars, events: initialEvents, start: initialStart, end: initialEnd, view: initialView, timeZone, onError, }: UseCalendarProps): {
26
+ export declare let useCalendar: ({ locale, apiKey, calendars, events: initialEvents, start: initialStart, end: initialEnd, view: initialView, timeZone, onError, }: UseCalendarProps) => {
27
27
  view: "month" | "week";
28
28
  eventClicked: CalendarEvent | null;
29
29
  setEventClicked: import("react").Dispatch<import("react").SetStateAction<CalendarEvent | null>>;
@@ -0,0 +1,2 @@
1
+ import type { Locale } from "date-fns";
2
+ export declare let useDateLocale: (locale?: string, defaultLocale?: string) => Locale | undefined;
@@ -1,11 +1,11 @@
1
- import type { CalendarEventsMap, CalendarView, CalendarViewWeeks } from "./types.js";
2
- export declare function getEventTimestamp(dateLike: number | Date | string): number;
3
- export declare function getDisplayTime(date: Date): string;
4
- export declare function getStartDate(date: Date, view: CalendarView): Date;
5
- export declare function getEndDate(start: Date, view: CalendarView): Date;
6
- export declare function getPrevDate(date: Date, view: CalendarView): Date;
7
- export declare function getNextDate(date: Date, view: CalendarView): Date;
8
- export declare function isTodayInView(start: Date, end: Date): boolean;
9
- export declare function mergeCalendarEvents(first: CalendarEventsMap, second: CalendarEventsMap): CalendarEventsMap;
10
- export declare function addCalendarEvents(toAdd: CalendarEventsMap, toExtend: CalendarEventsMap): CalendarEventsMap;
11
- export declare function processEventsInView(eventsMap: CalendarEventsMap, calendarView: CalendarView, month: number, weeks: Date[]): CalendarViewWeeks;
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 @@
1
+ export * from "./calendar";
@@ -0,0 +1 @@
1
+ exports._default = require('./calendar.cjs.js').default;
@@ -0,0 +1,62 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var jsxRuntime = require('react/jsx-runtime');
6
+ var react = require('react');
7
+ var addDays = require('date-fns/addDays');
8
+ var addMonths = require('date-fns/addMonths');
9
+ var addWeeks = require('date-fns/addWeeks');
10
+ var endOfMonth = require('date-fns/endOfMonth');
11
+ var endOfWeek = require('date-fns/endOfWeek');
12
+ var isWithinInterval = require('date-fns/isWithinInterval');
13
+ var startOfWeek = require('date-fns/startOfWeek');
14
+ var subMonths = require('date-fns/subMonths');
15
+ var subWeeks = require('date-fns/subWeeks');
16
+ var format = require('date-fns/format');
17
+ var eachWeekOfInterval = require('date-fns/eachWeekOfInterval');
18
+ var reactSwipeable = require('react-swipeable');
19
+ var differenceInDays = require('date-fns/differenceInDays');
20
+ var subDays = require('date-fns/subDays');
21
+ var utils = require('@koine/utils');
22
+
23
+ function _interopNamespace(e) {
24
+ if (e && e.__esModule) return e;
25
+ var n = Object.create(null);
26
+ if (e) {
27
+ Object.keys(e).forEach(function (k) {
28
+ if (k !== 'default') {
29
+ var d = Object.getOwnPropertyDescriptor(e, k);
30
+ Object.defineProperty(n, k, d.get ? d : {
31
+ enumerable: true,
32
+ get: function () { return e[k]; }
33
+ });
34
+ }
35
+ });
36
+ }
37
+ n["default"] = e;
38
+ return Object.freeze(n);
39
+ }
40
+
41
+ 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 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$1=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};let processEventsInView=(t,r,a,n)=>{let s=i(t),o=d$1(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(addDays.addDays(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};
42
+
43
+ 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$1={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(!1),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(!0),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:!0,children:jsxRuntime.jsx(m,{"aria-hidden":"true",style:{visibility:"hidden"},$placeholder:!0,children:jsxRuntime.jsx(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$1.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$1,...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:getDisplayTime(t.start)}),jsxRuntime.jsx(w,{children:t.title})]})})})},t.key)})})};
44
+
45
+ let useDateLocale=(a,l="en")=>{let[r,n]=react.useState(),[o,c]=react.useState(l);return react.useEffect(()=>{let e=async()=>{let e=await Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require('date-fns/locale/en-US')); });c(a||o),n(e.enUS);};a!==o&&e();},[a,o]),r};
46
+
47
+ 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.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})]})};
48
+
49
+ 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(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(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,a)=>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,{eventClicked:v,setEventClicked:g,eventHovered:w,setEventHovered:y,view:b,maxEvents:j,events:r.events,timestamp:r.timestamp,calendarsMap:x,...q})]}))}))})]})};
50
+
51
+ 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))});
52
+
53
+ 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: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=utils.isUndefined(i.end.dateTime)&&utils.isString(i.end.date),p=i.location||"",D=i.description||"",h=m.getTime()+""+u.getTime();g&&f>u&&(f=subDays.subDays(f,1)).setHours(23,59,59);let y=function(){let t=new Date(u),a=new Date(f),n=[getEventTimestamp(t)];for(;differenceInDays.differenceInDays(a,t);)t.setDate(t.getDate()+1),n.push(getEventTimestamp(t));return n}(),E=utils.arrayToLookup(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}
54
+
55
+ 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||getStartDate(new Date,w),h=y||getEndDate(D,w),[O,P]=react.useState([D,h]),[j,x]=react.useState(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:!0,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 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=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=react.useCallback(()=>{P(([e])=>{let t=getPrevDate(e,w),l=getEndDate(t,w);return [t,l]}),z(null),k(null);},[w]),J=react.useCallback(()=>{P(([e])=>{let t=getNextDate(e,w),l=getEndDate(t,w);return [t,l]}),z(null),k(null);},[w]),K=react.useCallback(e=>{let t=getStartDate(D,e),l=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(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})}};
56
+
57
+ exports.CalendarDaygridCell = CalendarDaygridCell;
58
+ exports.KoineCalendarDaygridNav = KoineCalendarDaygridNav;
59
+ exports.KoineCalendarDaygridTable = KoineCalendarDaygridTable;
60
+ exports.KoineCalendarLegend = KoineCalendarLegend;
61
+ exports.useCalendar = useCalendar;
62
+ exports.useDateLocale = useDateLocale;
@@ -0,0 +1,2 @@
1
+ export * from './calendar.cjs.js';
2
+ export { _default as default } from './calendar.cjs.default.js';
package/calendar.d.ts ADDED
@@ -0,0 +1,7 @@
1
+ export * from "./calendar/CalendarDaygridCell";
2
+ export * from "./calendar/CalendarDaygridNav";
3
+ export * from "./calendar/CalendarDaygridTable";
4
+ export * from "./calendar/CalendarLegend";
5
+ export * from "./calendar/useCalendar";
6
+ export * from "./calendar/useDateLocale";
7
+ export * from "./calendar/types";
@@ -0,0 +1,35 @@
1
+ import { jsx, jsxs, Fragment as Fragment$1 } from 'react/jsx-runtime';
2
+ import { useState, Fragment, useEffect, useMemo, useReducer, useCallback } from 'react';
3
+ import { addDays } from 'date-fns/addDays';
4
+ import { addMonths } from 'date-fns/addMonths';
5
+ import { addWeeks } from 'date-fns/addWeeks';
6
+ import { endOfMonth } from 'date-fns/endOfMonth';
7
+ import { endOfWeek } from 'date-fns/endOfWeek';
8
+ import { isWithinInterval } from 'date-fns/isWithinInterval';
9
+ import { startOfWeek } from 'date-fns/startOfWeek';
10
+ import { subMonths } from 'date-fns/subMonths';
11
+ import { subWeeks } from 'date-fns/subWeeks';
12
+ import { format } from 'date-fns/format';
13
+ import { eachWeekOfInterval } from 'date-fns/eachWeekOfInterval';
14
+ import { useSwipeable } from 'react-swipeable';
15
+ import { differenceInDays } from 'date-fns/differenceInDays';
16
+ import { subDays } from 'date-fns/subDays';
17
+ import { isUndefined, isString, arrayToLookup } from '@koine/utils';
18
+
19
+ 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 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$1=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};let processEventsInView=(t,r,a,n)=>{let s=i(t),o=d$1(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(addDays(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};
20
+
21
+ 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$1={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(!1),O=p.filter(e=>!e.placeholder);return jsx(f,{children:p.map((t,p)=>{if(p===u&&!x)return jsxs(y,{onClick:()=>M(!0),children:[jsx(d,{}),O.length-u]},"overflowMessage"+p);if(p>u&&!x)return null;if(t.placeholder)return jsx(Fragment,{children:jsx($,{$placeholder:!0,children:jsx(m,{"aria-hidden":"true",style:{visibility:"hidden"},$placeholder:!0,children:jsx(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$1.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$1,...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)})})};
22
+
23
+ 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};
24
+
25
+ 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})]})};
26
+
27
+ 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,a)=>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})]}))}))})]})};
28
+
29
+ let KoineCalendarLegend=({calendarsMap:a={},toggleCalendarVisibility:s,LegendItem:d="div",LegendItemStatus:i="span",LegendItemLabel:l="span",LegendItemEvents:t="span"})=>jsx(Fragment$1,{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))});
30
+
31
+ 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: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=isUndefined(i.end.dateTime)&&isString(i.end.date),p=i.location||"",D=i.description||"",h=m.getTime()+""+u.getTime();g&&f>u&&(f=subDays(f,1)).setHours(23,59,59);let y=function(){let t=new Date(u),a=new Date(f),n=[getEventTimestamp(t)];for(;differenceInDays(a,t);)t.setDate(t.getDate()+1),n.push(getEventTimestamp(t));return n}(),E=arrayToLookup(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}
32
+
33
+ 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:!0,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})}};
34
+
35
+ export { CalendarDaygridCell, KoineCalendarDaygridNav, KoineCalendarDaygridTable, KoineCalendarLegend, useCalendar, useDateLocale };
@@ -0,0 +1,8 @@
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;
@@ -0,0 +1,4 @@
1
+ export type MetaProps = {
2
+ zoom?: boolean;
3
+ };
4
+ export declare let Meta: ({ zoom }: MetaProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,2 @@
1
+ export type NoJsProps = object;
2
+ export declare let NoJs: (_props: NoJsProps) => import("react/jsx-runtime").JSX.Element;
@@ -1,5 +1,5 @@
1
1
  import { type ObjectShape } from "@kuus/yup";
2
- export declare function encodeForm<T extends ObjectShape = {}>(validationRules: T): {
2
+ export declare let encodeForm: <T extends ObjectShape = {}>(validationRules: T) => {
3
3
  encodedSchema: import("@kuus/yup").ObjectSchema<{
4
4
  [x: string]: T[keyof T] extends import("@kuus/yup").ISchema<any, any, any, any> ? T[keyof T]["__outputType"] : T[keyof T] extends {
5
5
  readonly key: string;
@@ -8,20 +8,20 @@ export declare function encodeForm<T extends ObjectShape = {}>(validationRules:
8
8
  readonly isSibling: boolean;
9
9
  readonly path: any;
10
10
  readonly getter: (data: unknown) => unknown;
11
- readonly map?: ((value: unknown) => infer T) | undefined;
11
+ readonly map?: ((value: unknown) => infer T_1) | undefined;
12
12
  readonly __isYupRef: boolean;
13
- getValue(value: any, parent?: {} | undefined, context?: {} | undefined): infer T;
13
+ getValue(value: any, parent?: {} | undefined, context?: {} | undefined): infer T_1;
14
14
  cast(value: any, options?: {
15
15
  parent?: {} | undefined;
16
16
  context?: {} | undefined;
17
- } | undefined): infer T;
17
+ } | undefined): infer T_1;
18
18
  resolve(): any;
19
19
  describe(): import("@kuus/yup").SchemaRefDescription;
20
20
  toString(): string;
21
- } ? T : unknown;
21
+ } ? T_1 : unknown;
22
22
  }, import("@kuus/yup").AnyObject, {
23
23
  [x: string]: T[keyof T] extends import("@kuus/yup").ISchema<any, import("@kuus/yup").AnyObject, any, any> ? T[keyof T]["__default"] : undefined;
24
24
  }, "">;
25
25
  encodedNames: Record<keyof T, string>;
26
26
  };
27
- export declare function decodeForm<ReturnAs extends Record<string, unknown> = {}, FormData extends Record<string, unknown> = {}>(formData: FormData): ReturnAs;
27
+ export declare let decodeForm: <ReturnAs extends Record<string, unknown> = {}, FormData_1 extends Record<string, unknown> = {}>(formData: FormData_1) => ReturnAs;
package/forms.cjs.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./forms";
@@ -0,0 +1 @@
1
+ exports._default = require('./forms.cjs.js').default;
package/forms.cjs.js ADDED
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var yup = require('@kuus/yup');
6
+ var utils = require('@koine/utils');
7
+
8
+ let encodeForm=t=>{let o={},i={};for(let e in t)if(!e.startsWith("_")){let l=utils.encode(e);o[l]=t[e],i[e]=l;}return {encodedSchema:yup.object(o).required(),encodedNames:i}};let decodeForm=e=>{let r={};for(let i in e){let l=utils.decode(i);i.startsWith("_")?r[i.substring(1)]=e[i]:utils.isUndefined(e[i])||""!==e[l]||(r[l]=e[i]);}return r};
9
+
10
+ exports.decodeForm = decodeForm;
11
+ exports.encodeForm = encodeForm;
package/forms.cjs.mjs ADDED
@@ -0,0 +1,2 @@
1
+ export * from './forms.cjs.js';
2
+ export { _default as default } from './forms.cjs.default.js';
package/forms.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./forms/antispam";
package/forms.esm.js ADDED
@@ -0,0 +1,6 @@
1
+ import { object } from '@kuus/yup';
2
+ import { encode, decode, isUndefined } from '@koine/utils';
3
+
4
+ let encodeForm=t=>{let o={},i={};for(let e in t)if(!e.startsWith("_")){let l=encode(e);o[l]=t[e],i[e]=l;}return {encodedSchema:object(o).required(),encodedNames:i}};let decodeForm=e=>{let r={};for(let i in e){let l=decode(i);i.startsWith("_")?r[i.substring(1)]=e[i]:isUndefined(e[i])||""!==e[l]||(r[l]=e[i]);}return r};
5
+
6
+ export { decodeForm, encodeForm };
@@ -0,0 +1,19 @@
1
+ export { useAsyncFn, type UseAsyncFnReturn, type UseAsyncState, } from "./useAsyncFn";
2
+ export { useFirstMountState } from "./useFirstMountState";
3
+ export { useFixedOffset } from "./useFixedOffset";
4
+ export { useFocus } from "./useFocus";
5
+ export { useInterval } from "./useInterval";
6
+ export { useIsomorphicLayoutEffect } from "./useIsomorphicLayoutEffect";
7
+ export { useKeyUp } from "./useKeyUp";
8
+ export { useMeasure, type UseMeasureOptions, type UseMeasureReturn, } from "./useMeasure";
9
+ export { useMountedState } from "./useMountedState";
10
+ export { useNavigateAway, type UseNavigateAwayHandler, } from "./useNavigateAway";
11
+ export { usePrevious } from "./usePrevious";
12
+ export { usePreviousRef } from "./usePreviousRef";
13
+ export { useScrollPosition } from "./useScrollPosition";
14
+ export { useScrollThreshold } from "./useScrollThreshold";
15
+ export { useSmoothScroll } from "./useSmoothScroll";
16
+ export { useSpinDelay } from "./useSpinDelay";
17
+ export { useTraceUpdate } from "./useTraceUpdate";
18
+ export { useUpdateEffect } from "./useUpdateEffect";
19
+ export { useWindowSize } from "./useWindowSize";
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import type { FunctionReturningPromise, PromiseType } from "./types.js";
2
+ import type { FunctionReturningPromise, PromiseType } from "../types";
3
3
  export type UseAsyncState<T> = {
4
4
  loading: boolean;
5
5
  error?: undefined;
@@ -19,5 +19,5 @@ export type UseAsyncState<T> = {
19
19
  };
20
20
  type StateFromFunctionReturningPromise<T extends FunctionReturningPromise> = UseAsyncState<PromiseType<ReturnType<T>>>;
21
21
  export type UseAsyncFnReturn<T extends FunctionReturningPromise = FunctionReturningPromise> = [StateFromFunctionReturningPromise<T>, T];
22
- export declare function useAsyncFn<T extends FunctionReturningPromise>(fn: T, deps?: React.DependencyList, initialState?: StateFromFunctionReturningPromise<T>): UseAsyncFnReturn<T>;
23
- export default useAsyncFn;
22
+ export declare let useAsyncFn: <T extends FunctionReturningPromise>(fn: T, deps?: React.DependencyList, initialState?: StateFromFunctionReturningPromise<T>) => UseAsyncFnReturn<T>;
23
+ export {};
@@ -0,0 +1 @@
1
+ export declare let useFirstMountState: () => boolean;
@@ -0,0 +1 @@
1
+ export declare let useFixedOffset: (selector?: string) => import("react").MutableRefObject<number>;
@@ -0,0 +1 @@
1
+ export declare let useFocus: () => (import("react").RefObject<HTMLInputElement | HTMLSelectElement | HTMLTextAreaElement> | (() => void))[];
@@ -0,0 +1 @@
1
+ export declare let useInterval: <T extends () => unknown>(callback: T, delay: number, deps?: unknown[]) => void;
@@ -0,0 +1,2 @@
1
+ import { useLayoutEffect } from "react";
2
+ export declare let useIsomorphicLayoutEffect: typeof useLayoutEffect;
@@ -0,0 +1 @@
1
+ export declare let useKeyUp: (callback: (event: KeyboardEvent) => void, deps?: unknown[]) => void;
@@ -18,5 +18,5 @@ export type UseMeasureReturn = [
18
18
  RectReadOnly,
19
19
  () => void
20
20
  ];
21
- export declare function useMeasure(options?: UseMeasureOptions): UseMeasureReturn;
22
- export default useMeasure;
21
+ export declare let useMeasure: (options?: UseMeasureOptions) => UseMeasureReturn;
22
+ export {};
@@ -0,0 +1 @@
1
+ export declare let useMountedState: () => (() => boolean);
@@ -0,0 +1,2 @@
1
+ export type UseNavigateAwayHandler = (event: BeforeUnloadEvent) => string | boolean;
2
+ export declare let useNavigateAway: (handler: UseNavigateAwayHandler) => void;
@@ -0,0 +1 @@
1
+ export declare let usePrevious: <T extends unknown>(state: T, defaulValue: T) => T;
@@ -0,0 +1 @@
1
+ export declare let usePreviousRef: <T extends unknown>(value: T) => T | undefined;
@@ -4,7 +4,7 @@ export type UseRevealOptions = {
4
4
  offsetEndY?: number;
5
5
  offsetStartX?: number | "all";
6
6
  };
7
- export declare function useReveal<T extends HTMLElement = HTMLDivElement>({ direction, offsetStartY, offsetEndY, offsetStartX, }: UseRevealOptions): {
7
+ export declare let useReveal: <T extends HTMLElement = HTMLDivElement>({ direction, offsetStartY, offsetEndY, offsetStartX, }: UseRevealOptions) => {
8
8
  ref: import("react").RefObject<T>;
9
9
  startY: number;
10
10
  endY: number;
@@ -0,0 +1,7 @@
1
+ type Position = {
2
+ x: number;
3
+ y: number;
4
+ };
5
+ type ElementRef = React.MutableRefObject<HTMLElement | undefined>;
6
+ export declare let useScrollPosition: (effect: (currentPosition: Position, prevPosition: Position) => void, deps?: import("react").DependencyList, element?: ElementRef, boundingElement?: ElementRef, wait?: number) => void;
7
+ export {};
@@ -0,0 +1 @@
1
+ export declare let useScrollThreshold: (threshold?: number, callback?: ((isAbove: boolean, isBelow: boolean) => void) | undefined) => boolean;
@@ -0,0 +1 @@
1
+ export declare let useScrollTo: (id?: string, offset?: number) => void;
@@ -0,0 +1 @@
1
+ export declare let useSmoothScroll: (disregardAutomaticFixedOffset?: boolean) => (to?: number | string, customOffset?: number, callback?: () => void, fallbackTimeout?: number, behavior?: ScrollBehavior) => void;
@@ -0,0 +1 @@
1
+ export declare let useSpinDelay: (loading: boolean, delay?: number, minDuration?: number) => boolean;
@@ -0,0 +1 @@
1
+ export declare let useTraceUpdate: (props: any) => void;
@@ -0,0 +1,2 @@
1
+ import { useEffect } from "react";
2
+ export declare let useUpdateEffect: typeof useEffect;
@@ -0,0 +1,2 @@
1
+ import { debounce } from "@koine/utils";
2
+ export declare let useWindowSize: (wait?: Parameters<typeof debounce>[1], immediate?: Parameters<typeof debounce>[2]) => readonly [number, number];
package/index.cjs.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./index";
@@ -0,0 +1 @@
1
+ exports._default = require('./index.cjs.js').default;
package/index.cjs.js ADDED
@@ -0,0 +1,77 @@
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 useMountedState=()=>{let u=react.useRef(!1),n=react.useCallback(()=>u.current,[]);return react.useEffect(()=>(u.current=!0,()=>{u.current=!1;}),[]),n};
10
+
11
+ let useAsyncFn=(o,l=[],u={loading:!1})=>{let a=react.useRef(0),i=useMountedState(),[d,c]=react.useState(u),g=react.useCallback((...r)=>{let t=++a.current;return d.loading||c(r=>({...r,loading:!0})),o(...r).then(r=>(i()&&t===a.current&&c({value:r,loading:!1}),r),r=>(i()&&t===a.current&&c({error:r,loading:!1}),r))},l);return [d,g]};
12
+
13
+ let useFirstMountState=()=>{let t=react.useRef(!0);return t.current?(t.current=!1,!0):t.current};
14
+
15
+ let useIsomorphicLayoutEffect=utils.isBrowser?react.useLayoutEffect:react.useEffect;
16
+
17
+ let n$1=e=>{dom.injectCss("useFixedOffset",`html{scroll-padding-top: ${e}px}`);};let useFixedOffset=i=>{let c=react.useRef(0);return useIsomorphicLayoutEffect(()=>{let e=()=>{let e=dom.calculateFixedOffset();c.current=e,n$1(e);};if(e(),!ResizeObserver)return dom.listenResizeDebounced(0,e);{let e=new ResizeObserver(e=>{let r=0;e.forEach(e=>{r+=e.contentRect.height;}),c.current=r,utils.debounce(()=>n$1(r),400,!0)();});return dom.$each(i||"[data-fixed]",t=>{e&&e.observe(t);}),()=>{e?.disconnect();}}},[i]),c};
18
+
19
+ let useFocus=()=>{let e=react.useRef(null);return [e,()=>{e.current&&e.current.focus();}]};
20
+
21
+ let useInterval=(n,l,u=[])=>{let o=react.useRef();react.useEffect(()=>{o.current=n;},[n,...u]),react.useEffect(()=>{if(null!==l){let r=setInterval(function(){o.current&&o.current();},l);return ()=>clearInterval(r)}return utils.noop},[l]);};
22
+
23
+ let useKeyUp=(o,r=[])=>{react.useEffect(()=>dom.on(window,"keyup",e=>{e.ctrlKey||e.altKey||e.shiftKey||e.metaKey||o(e);}),[o,...r]);};
24
+
25
+ let e$1;let f=e=>{let t=[];if(!e||e===document.body)return t;let{overflow:r,overflowX:n,overflowY:l}=window.getComputedStyle(e);return [r,n,l].some(e=>"auto"===e||"scroll"===e)&&t.push(e),[...t,...f(e.parentElement)]},h=["x","y","top","bottom","left","right","width","height"],p=(e,t)=>h.every(r=>e[r]===t[r]);let useMeasure=h=>{let{scroll:d=!1}=h||{},[a,b]=react.useState({left:0,top:0,width:0,height:0,bottom:0,right:0,x:0,y:0}),g=react.useRef([null,null,null,a]),v=react.useRef(!1);react.useEffect(()=>(v.current=!0,()=>void(v.current=!1)),[]);let[w,,y]=react.useMemo(()=>{let e=(...e)=>{let[t,,,r]=g.current;if(!t)return;let n=t.getBoundingClientRect();Object.freeze(n),v.current&&!p(r,n)&&(g.current[3]=n,b(n));},t=utils.debounce(e);return [e,t,t]},[b]);function x(){let[,e,t]=g.current;e&&(e.forEach(e=>dom.off(e,"scroll",y)),g.current[1]=null),t&&(t.disconnect(),g.current[2]=null);}function z(){let[t,r]=g.current;t&&!e$1&&ResizeObserver&&(e$1=new ResizeObserver(y),g.current[2]=e$1,e$1.observe(t),d&&r&&r.forEach(e=>dom.on(e,"scroll",y,{capture:!0,passive:!0})));}return react.useEffect(()=>d?dom.listenScrollDebounced(0,w,100):utils.noop,[d,w]),react.useEffect(()=>dom.listenResizeDebounced(0,w,100),[w]),react.useEffect(()=>{x(),z();},[d]),react.useEffect(()=>(w(),x),[]),[e=>{e&&e!==g.current[0]&&(x(),g.current[0]=e,g.current[1]=f(e),z());},a,w]};
26
+
27
+ let useNavigateAway=o=>{let n=react.useRef();react.useEffect(()=>{n.current=e=>{let r=o(e);return (r&&e.preventDefault(),"string"==typeof r)?e.returnValue=r:e.defaultPrevented?e.returnValue="":void 0};},[o]),react.useEffect(()=>dom.on(window,"beforeunload",e=>n.current?.(e)),[]);};
28
+
29
+ let usePrevious=(r,t)=>{let[o,u]=react.useState([r,t]);return o[1]!==r&&u([o[1],r]),o[0]};
30
+
31
+ let usePreviousRef=t=>{let u=react.useRef();return react.useEffect(()=>{u.current=t;}),u.current};
32
+
33
+ let l={x:0,y:0},n=r=>r?.getBoundingClientRect(),u=(r,e)=>{if(!utils.isBrowser)return l;if(!e)return {x:window.scrollX,y:window.scrollY};let o=n(r?.current||document.body),u=n(e.current);return o?u?{x:(u.x||0)-(o.x||0),y:(u.y||0)-(o.y||0)}:{x:o.left,y:o.top}:l};let useScrollPosition=(l,n=[],i,c,m)=>{let f=react.useRef(u(null,c)),s=null,y=()=>{let r=u(i,c);l(r,f.current),f.current=r,s=null;};useIsomorphicLayoutEffect(()=>{if(!utils.isBrowser)return;let r=dom.listenScroll(()=>{m?null===s&&(s=window.setTimeout(y,m)):y();},c?.current);return ()=>{r(),s&&clearTimeout(s);}},n);};
34
+
35
+ let useScrollThreshold=(i,m)=>{let[n,f]=react.useState(!1),u=react.useCallback(()=>{if(i){let r=window.scrollY,o=r<i,e=r>i;f(e),m&&m(o,e);}},[i,m]);return react.useEffect(()=>{if(i){let r=dom.listenScroll(u);return u(),r}return utils.noop},[i,u]),n};
36
+
37
+ let useSmoothScroll=i=>{let l=useFixedOffset();return react.useCallback((e,m,f,n,u)=>{let c;let p=!1;if(utils.isNumber(e))c=e;else if(e){let t=document.getElementById(e);t&&(c=dom.getOffsetTopSlim(t)-l.current,p=!0);}utils.isNumber(c)&&dom.scrollTo(c=c+(m||0)+(i||p?0:l.current),f,n,u);},[i,l])};
38
+
39
+ var e,r;(r=e||(e={}))[r.IDLE=0]="IDLE",r[r.DELAY=1]="DELAY",r[r.DISPLAY=2]="DISPLAY",r[r.EXPIRE=3]="EXPIRE";let useSpinDelay=(e,r=500,i=200)=>{let[n,o]=react.useState(0),E=react.useRef();return react.useEffect(()=>{e&&0===n&&(clearTimeout(E.current),E.current=setTimeout(()=>{if(!e)return o(0);E.current=setTimeout(()=>{o(3);},i),o(2);},r),o(1)),e||2===n||(clearTimeout(E.current),o(0));},[e,n,r,i]),react.useEffect(()=>()=>clearTimeout(E.current),[]),2===n||3===n};
40
+
41
+ let useTraceUpdate=t=>{let c=react.useRef(t);react.useEffect(()=>{let e=Object.entries(t).reduce((e,[r,t])=>(c.current[r]!==t&&(e[r]=[c.current[r],t]),e),{});Object.keys(e).length>0&&console.info("[@koine/react:useTraceUpdate] changed props:",e),c.current=t;});};
42
+
43
+ let useUpdateEffect=(r,o)=>{let f=useFirstMountState();react.useEffect(()=>{if(!f)return r()},o);};
44
+
45
+ let useWindowSize=(n,o)=>{let[d,m]=react.useState(0),[w,l]=react.useState(0);return react.useEffect(()=>{let e=()=>{m(window.innerWidth),l(window.innerHeight);},r=n?dom.listenResizeDebounced(0,e,n,o):dom.listenResize(e);return e(),r},[n,o]),[d,w]};
46
+
47
+ let classed=r=>{let n=r.type||r;return function(r,...o){return react.forwardRef(function(e,s){let a=o.map((t,n)=>{let o="";return "function"==typeof t?o=t(e):void 0!==t&&(o=t.toString()),r[n]+o}).join(""),i="string"==typeof n,l=i?{}:e;if(i)for(let t in e)t.startsWith("$")||(l[t]=e[t]);let c=a||r[0];return c=(c.match(/class="([^"]*)/)?.[1]||c)+(e?.className?" "+e?.className:""),react.createElement(n,{...l,className:c||void 0,ref:s})})}};
48
+
49
+ let createUseMediaQueryWidth=i=>{let o=utils.getMediaQueryWidthResolvers(i);return function(t,i){let[s,a]=t.substring(1).split("-");utils.isUndefined(a)&&(a=s),utils.isUndefined(s)&&(s="min");let[m,d]=a.split("_"),l=o[s](m,d),[c,u]=react.useState(utils.isUndefined(i)?null:i);return useIsomorphicLayoutEffect(()=>{let e=window.matchMedia(l),t=e=>{u(e.matches);};return (u(e.matches),e.addEventListener)?(e.addEventListener("change",t),()=>{e.removeEventListener("change",t);}):(e.addListener(t),()=>{e.removeListener(t);})},[l]),c}};
50
+
51
+ let extendComponent=(t,o)=>Object.assign(o=>react.createElement(t,o),{...o,defaultProps:o});
52
+
53
+ let mergeRefs=e=>r=>{e.forEach(e=>{"function"==typeof e?e(r):null!=e&&(e.current=r);});};
54
+
55
+ exports.classed = classed;
56
+ exports.createUseMediaQueryWidth = createUseMediaQueryWidth;
57
+ exports.extendComponent = extendComponent;
58
+ exports.mergeRefs = mergeRefs;
59
+ exports.useAsyncFn = useAsyncFn;
60
+ exports.useFirstMountState = useFirstMountState;
61
+ exports.useFixedOffset = useFixedOffset;
62
+ exports.useFocus = useFocus;
63
+ exports.useInterval = useInterval;
64
+ exports.useIsomorphicLayoutEffect = useIsomorphicLayoutEffect;
65
+ exports.useKeyUp = useKeyUp;
66
+ exports.useMeasure = useMeasure;
67
+ exports.useMountedState = useMountedState;
68
+ exports.useNavigateAway = useNavigateAway;
69
+ exports.usePrevious = usePrevious;
70
+ exports.usePreviousRef = usePreviousRef;
71
+ exports.useScrollPosition = useScrollPosition;
72
+ exports.useScrollThreshold = useScrollThreshold;
73
+ exports.useSmoothScroll = useSmoothScroll;
74
+ exports.useSpinDelay = useSpinDelay;
75
+ exports.useTraceUpdate = useTraceUpdate;
76
+ exports.useUpdateEffect = useUpdateEffect;
77
+ exports.useWindowSize = useWindowSize;