@koine/react 2.0.0-beta.14 → 2.0.0-beta.15

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 (576) hide show
  1. package/Alert/Alert.js +10 -0
  2. package/Alert/index.d.ts +1 -1
  3. package/Alert/index.js +1 -0
  4. package/Animations/Reveal.d.ts +1 -2
  5. package/Animations/Reveal.js +16 -0
  6. package/Animations/Underline.js +5 -0
  7. package/Animations/index.d.ts +3 -3
  8. package/Animations/index.js +3 -0
  9. package/Animations/useReveal.d.ts +0 -21
  10. package/Animations/useReveal.js +42 -0
  11. package/Autocomplete/AutocompleteDownshift.js +1 -0
  12. package/Autocomplete/AutocompleteDownshiftMultiselect.js +1 -0
  13. package/Autocomplete/AutocompleteMui.d.ts +2 -27
  14. package/Autocomplete/AutocompleteMui.js +93 -0
  15. package/Autocomplete/AutocompleteReach.js +1 -0
  16. package/Autocomplete/components.d.ts +0 -5
  17. package/Autocomplete/components.js +26 -0
  18. package/Autocomplete/helpers.d.ts +1 -1
  19. package/Autocomplete/helpers.js +17 -0
  20. package/Autocomplete/index.d.ts +2 -2
  21. package/Autocomplete/index.js +1 -0
  22. package/Bg/BgColor.d.ts +1 -20
  23. package/Bg/BgColor.js +16 -0
  24. package/Bg/BgPhoto.d.ts +1 -6
  25. package/Bg/BgPhoto.js +16 -0
  26. package/Bg/BgSvg.d.ts +0 -3
  27. package/Bg/BgSvg.js +9 -0
  28. package/Bg/index.d.ts +3 -3
  29. package/Bg/index.js +3 -0
  30. package/Breadcrumbs/Breadcrumbs.d.ts +1 -1
  31. package/Breadcrumbs/Breadcrumbs.js +27 -0
  32. package/Breadcrumbs/index.d.ts +1 -1
  33. package/Breadcrumbs/index.js +1 -0
  34. package/Buttons/Button.d.ts +0 -4
  35. package/Buttons/Button.js +10 -0
  36. package/Buttons/ButtonComposite.d.ts +3 -4
  37. package/Buttons/ButtonComposite.js +28 -0
  38. package/Buttons/ButtonFab.d.ts +1 -2
  39. package/Buttons/ButtonFab.js +6 -0
  40. package/Buttons/ButtonLink.d.ts +3 -3
  41. package/Buttons/ButtonLink.js +11 -0
  42. package/Buttons/IconButton.d.ts +1 -2
  43. package/Buttons/IconButton.js +7 -0
  44. package/Buttons/index.d.ts +5 -5
  45. package/Buttons/index.js +5 -0
  46. package/Calendar/CalendarDaygridCell.d.ts +3 -4
  47. package/Calendar/CalendarDaygridCell.js +46 -0
  48. package/Calendar/CalendarDaygridNav.d.ts +2 -2
  49. package/Calendar/CalendarDaygridNav.js +23 -0
  50. package/Calendar/CalendarDaygridTable.d.ts +3 -3
  51. package/Calendar/CalendarDaygridTable.js +45 -0
  52. package/Calendar/CalendarLegend.d.ts +2 -3
  53. package/Calendar/CalendarLegend.js +8 -0
  54. package/Calendar/calendar-api-google.d.ts +1 -9
  55. package/Calendar/calendar-api-google.js +126 -0
  56. package/Calendar/index.d.ts +6 -6
  57. package/Calendar/index.js +6 -0
  58. package/Calendar/types.d.ts +0 -19
  59. package/Calendar/types.js +1 -0
  60. package/Calendar/useCalendar.d.ts +4 -19
  61. package/Calendar/useCalendar.js +176 -0
  62. package/Calendar/utils.d.ts +1 -1
  63. package/Calendar/utils.js +185 -0
  64. package/Carousel/Carousel.js +1 -0
  65. package/Carousel/CarouselCss.d.ts +1 -23
  66. package/Carousel/CarouselCss.js +19 -0
  67. package/Carousel/index.d.ts +1 -1
  68. package/Carousel/index.js +1 -0
  69. package/Collapsable/Collapsable.js +1 -0
  70. package/Collapsable/CollapsableReach.d.ts +0 -6
  71. package/Collapsable/CollapsableReach.js +1 -0
  72. package/Collapsable/index.d.ts +1 -1
  73. package/Collapsable/index.js +1 -0
  74. package/Debug/Debug.js +9 -0
  75. package/Debug/index.d.ts +1 -1
  76. package/Debug/index.js +1 -0
  77. package/Details/Details.d.ts +0 -6
  78. package/Details/Details.js +52 -0
  79. package/Details/index.d.ts +1 -1
  80. package/Details/index.js +1 -0
  81. package/Dialog/DialogMui.d.ts +1 -3
  82. package/Dialog/DialogMui.js +39 -0
  83. package/Dialog/css/bare.d.ts +1 -2
  84. package/Dialog/css/bare.js +20 -0
  85. package/Dialog/index.d.ts +2 -2
  86. package/Dialog/index.js +1 -0
  87. package/Dialog/m/bare.js +3 -0
  88. package/Dialog/m/basic.d.ts +1 -1
  89. package/Dialog/m/basic.js +28 -0
  90. package/Dialog/m/index.d.ts +1 -2
  91. package/Dialog/m/index.js +4 -0
  92. package/Dialog/sc/bare.d.ts +2 -12
  93. package/Dialog/sc/bare.js +31 -0
  94. package/Dialog/sc/framer.d.ts +1 -2
  95. package/Dialog/sc/framer.js +16 -0
  96. package/Dialog/sc/framerMaterial.js +16 -0
  97. package/Dialog/sc/material.d.ts +1 -2
  98. package/Dialog/sc/material.js +21 -0
  99. package/Dialog/tw/bare.d.ts +2 -17
  100. package/Dialog/tw/bare.js +28 -0
  101. package/Dialog/tw/elegant.d.ts +1 -2
  102. package/Dialog/tw/elegant.js +20 -0
  103. package/Dialog/tw/framer.d.ts +1 -2
  104. package/Dialog/tw/framer.js +16 -0
  105. package/Dialog/tw/framerMaterial.js +16 -0
  106. package/Dialog/tw/material.d.ts +1 -2
  107. package/Dialog/tw/material.js +20 -0
  108. package/Editor/Editor--tiptap.js +26 -0
  109. package/Editor/components.js +10 -0
  110. package/Editor/index.d.ts +1 -1
  111. package/Editor/index.js +1 -0
  112. package/FaviconTags.d.ts +0 -10
  113. package/FaviconTags.js +6 -0
  114. package/Form/Form.d.ts +1 -14
  115. package/Form/Form.js +60 -0
  116. package/Form/index.d.ts +1 -1
  117. package/Form/index.js +1 -0
  118. package/Form/sc/bare.d.ts +1 -2
  119. package/Form/sc/bare.js +20 -0
  120. package/Forms/Checkbox/Checkbox.d.ts +1 -5
  121. package/Forms/Checkbox/Checkbox.js +15 -0
  122. package/Forms/Checkbox/index.d.ts +1 -1
  123. package/Forms/Checkbox/index.js +1 -0
  124. package/Forms/Feedback/Feedback.js +9 -0
  125. package/Forms/Feedback/index.d.ts +1 -1
  126. package/Forms/Feedback/index.js +1 -0
  127. package/Forms/Field/Field.d.ts +1 -19
  128. package/Forms/Field/Field.js +25 -0
  129. package/Forms/Field/FieldControl.d.ts +2 -14
  130. package/Forms/Field/FieldControl.js +35 -0
  131. package/Forms/Field/FieldHint.js +4 -0
  132. package/Forms/Field/index.d.ts +2 -2
  133. package/Forms/Field/index.js +2 -0
  134. package/Forms/Input/Input.d.ts +1 -2
  135. package/Forms/Input/Input.js +16 -0
  136. package/Forms/Input/index.d.ts +1 -1
  137. package/Forms/Input/index.js +1 -0
  138. package/Forms/InputGroup/InputGroup.d.ts +1 -2
  139. package/Forms/InputGroup/InputGroup.js +15 -0
  140. package/Forms/InputGroup/index.d.ts +1 -1
  141. package/Forms/InputGroup/index.js +1 -0
  142. package/Forms/Label/Label.js +6 -0
  143. package/Forms/Label/index.d.ts +1 -1
  144. package/Forms/Label/index.js +1 -0
  145. package/Forms/Password/Password.d.ts +1 -2
  146. package/Forms/Password/Password.js +17 -0
  147. package/Forms/Password/index.d.ts +1 -1
  148. package/Forms/Password/index.js +1 -0
  149. package/Forms/Radio/Radio.d.ts +1 -2
  150. package/Forms/Radio/Radio.js +25 -0
  151. package/Forms/Radio/index.d.ts +1 -1
  152. package/Forms/Radio/index.js +1 -0
  153. package/Forms/Switch/Switch.d.ts +1 -5
  154. package/Forms/Switch/Switch.js +17 -0
  155. package/Forms/Switch/index.d.ts +1 -1
  156. package/Forms/Switch/index.js +1 -0
  157. package/Forms/Textarea/Textarea.d.ts +1 -2
  158. package/Forms/Textarea/Textarea.js +12 -0
  159. package/Forms/Textarea/TextareaRich.d.ts +1 -2
  160. package/Forms/Textarea/TextareaRich.js +26 -0
  161. package/Forms/Textarea/index.d.ts +2 -2
  162. package/Forms/Textarea/index.js +2 -0
  163. package/Forms/Toggle/Toggle-tailwind.js +1 -0
  164. package/Forms/Toggle/Toggle.d.ts +0 -1
  165. package/Forms/Toggle/Toggle.js +25 -0
  166. package/Forms/Toggle/index.d.ts +1 -1
  167. package/Forms/Toggle/index.js +1 -0
  168. package/Forms/Toggle/useToggle-tailwind.js +1 -0
  169. package/Forms/Toggle/useToggle.d.ts +1 -31
  170. package/Forms/Toggle/useToggle.js +85 -0
  171. package/Forms/antispam.d.ts +0 -20
  172. package/Forms/antispam.js +31 -0
  173. package/Forms/helpers.d.ts +0 -8
  174. package/Forms/helpers.js +36 -0
  175. package/Forms/index.d.ts +15 -15
  176. package/Forms/index.js +15 -0
  177. package/Forms/styles.d.ts +0 -6
  178. package/Forms/styles.js +19 -0
  179. package/Gauge/Gauge.d.ts +0 -1
  180. package/Gauge/Gauge.js +1 -0
  181. package/Grid/Grid.d.ts +1 -10
  182. package/Grid/Grid.js +52 -0
  183. package/Grid/index.d.ts +1 -1
  184. package/Grid/index.js +1 -0
  185. package/Hamburger/Hamburger.d.ts +0 -1
  186. package/Hamburger/Hamburger.js +47 -0
  187. package/Hamburger/index.d.ts +1 -1
  188. package/Hamburger/index.js +1 -0
  189. package/Header/index.d.ts +1 -1
  190. package/Header/index.js +1 -0
  191. package/Header/useHeader.d.ts +0 -4
  192. package/Header/useHeader.js +31 -0
  193. package/Hidden/Hidden.d.ts +1 -1
  194. package/Hidden/Hidden.js +10 -0
  195. package/Hidden/index.d.ts +1 -1
  196. package/Hidden/index.js +1 -0
  197. package/Img/index.d.ts +1 -1
  198. package/Img/index.js +1 -0
  199. package/Img/sc/bare.js +4 -0
  200. package/Img/types.js +1 -0
  201. package/Link/Link.js +4 -0
  202. package/Link/LinkBlank.js +15 -0
  203. package/Link/index.d.ts +2 -2
  204. package/Link/index.js +2 -0
  205. package/Menu/Menu.js +4 -0
  206. package/Menu/MenuMui.js +1 -0
  207. package/Menu/index.d.ts +1 -1
  208. package/Menu/index.js +1 -0
  209. package/MenuItem/MenuItem.js +4 -0
  210. package/MenuItem/MenuItemMui.js +1 -0
  211. package/MenuItem/index.d.ts +1 -1
  212. package/MenuItem/index.js +1 -0
  213. package/MenuItem/useMenuItem.js +42 -0
  214. package/Meta/Meta.d.ts +0 -10
  215. package/Meta/Meta.js +6 -0
  216. package/Meta/index.d.ts +2 -2
  217. package/Meta/index.js +2 -0
  218. package/NoJs/NoJs.js +7 -0
  219. package/NoJs/index.d.ts +2 -2
  220. package/NoJs/index.js +2 -0
  221. package/Pagination/PaginationNav.d.ts +1 -9
  222. package/Pagination/PaginationNav.js +48 -0
  223. package/Pagination/PaginationResults.js +11 -0
  224. package/Pagination/index.d.ts +2 -2
  225. package/Pagination/index.js +2 -0
  226. package/Pill/Pill.js +7 -0
  227. package/Pill/index.d.ts +1 -1
  228. package/Pill/index.js +1 -0
  229. package/Progress/ProgressCircular.d.ts +1 -7
  230. package/Progress/ProgressCircular.js +12 -0
  231. package/Progress/ProgressLinear.d.ts +1 -8
  232. package/Progress/ProgressLinear.js +21 -0
  233. package/Progress/ProgressOverlay.js +23 -0
  234. package/Progress/index.d.ts +3 -3
  235. package/Progress/index.js +3 -0
  236. package/Rating/Rating.d.ts +0 -8
  237. package/Rating/Rating.js +43 -0
  238. package/Rating/index.d.ts +1 -4
  239. package/Rating/index.js +45 -0
  240. package/Select/SelectDownshift.d.ts +1 -1
  241. package/Select/SelectDownshift.js +1 -0
  242. package/Select/components.js +12 -0
  243. package/Select/index.d.ts +2 -2
  244. package/Select/index.js +1 -0
  245. package/Sidebar/Sidebar.js +23 -0
  246. package/Sidebar/index.d.ts +1 -1
  247. package/Sidebar/index.js +1 -0
  248. package/Spacing/Spacing.d.ts +1 -14
  249. package/Spacing/Spacing.js +32 -0
  250. package/Spacing/index.d.ts +1 -1
  251. package/Spacing/index.js +1 -0
  252. package/Sticky/Sticky.js +1 -0
  253. package/Sticky/StickyCss.js +6 -0
  254. package/Sticky/index.d.ts +1 -1
  255. package/Sticky/index.js +1 -0
  256. package/Tabs/TabsMui.d.ts +2 -3
  257. package/Tabs/TabsMui.js +30 -0
  258. package/Tabs/index.d.ts +1 -1
  259. package/Tabs/index.js +1 -0
  260. package/Tabs/sc/bare.d.ts +0 -5
  261. package/Tabs/sc/bare.js +1 -0
  262. package/Tabs/tw/bare.d.ts +1 -2
  263. package/Tabs/tw/bare.js +16 -0
  264. package/Tabs/tw/material.d.ts +1 -2
  265. package/Tabs/tw/material.js +18 -0
  266. package/Tabs/useTabs.d.ts +0 -22
  267. package/Tabs/useTabs.js +43 -0
  268. package/Typography/CopyPasteVisible.js +4 -0
  269. package/Typography/Native.js +14 -0
  270. package/Typography/ReadMore.d.ts +0 -2
  271. package/Typography/ReadMore.js +42 -0
  272. package/Typography/TextLoop.js +45 -0
  273. package/Typography/TypeStairs.js +42 -0
  274. package/Typography/index.d.ts +5 -5
  275. package/Typography/index.js +5 -0
  276. package/css/index.d.ts +2 -2
  277. package/css/index.js +2 -0
  278. package/helpers/classed.d.ts +0 -19
  279. package/helpers/classed.js +43 -0
  280. package/helpers/createUseMediaQueryWidth.d.ts +0 -6
  281. package/helpers/createUseMediaQueryWidth.js +39 -0
  282. package/helpers/extend-component.d.ts +0 -11
  283. package/helpers/extend-component.js +9 -0
  284. package/helpers/index.d.ts +4 -4
  285. package/helpers/index.js +4 -0
  286. package/helpers/{mergeRefs.mjs → mergeRefs.js} +4 -3
  287. package/hooks/index.d.ts +20 -20
  288. package/hooks/index.js +20 -0
  289. package/hooks/types.d.ts +0 -6
  290. package/hooks/types.js +1 -0
  291. package/hooks/useAsyncFn.d.ts +1 -4
  292. package/hooks/useAsyncFn.js +33 -0
  293. package/hooks/useDateLocale.d.ts +0 -6
  294. package/hooks/useDateLocale.js +28 -0
  295. package/hooks/useFirstMountState.d.ts +0 -3
  296. package/hooks/useFirstMountState.js +10 -0
  297. package/hooks/useFixedOffset.d.ts +0 -9
  298. package/hooks/useFixedOffset.js +45 -0
  299. package/hooks/useFocus.d.ts +0 -3
  300. package/hooks/useFocus.js +9 -0
  301. package/hooks/useInterval.d.ts +0 -5
  302. package/hooks/useInterval.js +22 -0
  303. package/hooks/useIsomorphicLayoutEffect.d.ts +0 -3
  304. package/hooks/useIsomorphicLayoutEffect.js +6 -0
  305. package/hooks/useKeyUp.js +18 -0
  306. package/hooks/useMeasure.d.ts +0 -5
  307. package/hooks/useMeasure.js +134 -0
  308. package/hooks/useMountedState.d.ts +0 -3
  309. package/hooks/useMountedState.js +13 -0
  310. package/hooks/useNavigateAway.d.ts +0 -29
  311. package/hooks/useNavigateAway.js +25 -0
  312. package/hooks/usePrevious.d.ts +0 -3
  313. package/hooks/usePrevious.js +9 -0
  314. package/hooks/{usePreviousRef.mjs → usePreviousRef.js} +2 -2
  315. package/hooks/useScrollPosition.d.ts +0 -7
  316. package/hooks/useScrollPosition.js +61 -0
  317. package/hooks/useScrollThreshold.js +26 -0
  318. package/hooks/useScrollTo.js +22 -0
  319. package/hooks/useSmoothScroll.d.ts +0 -6
  320. package/hooks/useSmoothScroll.js +33 -0
  321. package/hooks/useSpinDelay.d.ts +0 -12
  322. package/hooks/useSpinDelay.js +38 -0
  323. package/hooks/useTraceUpdate.d.ts +0 -3
  324. package/hooks/useTraceUpdate.js +18 -0
  325. package/hooks/useUpdateEffect.d.ts +0 -3
  326. package/hooks/useUpdateEffect.js +11 -0
  327. package/hooks/useWindowSize.d.ts +0 -9
  328. package/hooks/useWindowSize.js +20 -0
  329. package/index.d.ts +1 -1
  330. package/index.js +1 -0
  331. package/m/MotionProvider.d.ts +0 -32
  332. package/m/MotionProvider.js +7 -0
  333. package/m/index.d.ts +1 -6
  334. package/m/index.js +1 -0
  335. package/package.json +624 -22
  336. package/sc/index.d.ts +30 -30
  337. package/sc/index.js +30 -0
  338. package/scm/index.d.ts +29 -29
  339. package/scm/index.js +29 -0
  340. package/shared/index.d.ts +8 -8
  341. package/shared/index.js +8 -0
  342. package/styles/Body.d.ts +0 -8
  343. package/styles/Body.js +5 -0
  344. package/styles/Global.d.ts +0 -13
  345. package/styles/Global.js +5 -0
  346. package/styles/index.d.ts +7 -7
  347. package/styles/index.js +7 -0
  348. package/styles/media.d.ts +1 -50
  349. package/styles/media.js +74 -0
  350. package/styles/spacing.d.ts +1 -2
  351. package/styles/spacing.js +45 -0
  352. package/styles/styled.d.ts +0 -4
  353. package/styles/styled.js +9 -0
  354. package/styles/theme--vanilla.js +46 -0
  355. package/styles/theme.d.ts +0 -29
  356. package/styles/theme.js +30 -0
  357. package/tw/index.d.ts +2 -2
  358. package/tw/index.js +2 -0
  359. package/twm/index.d.ts +2 -2
  360. package/twm/index.js +2 -0
  361. package/types.d.ts +1 -2
  362. package/types.js +1 -0
  363. package/Alert/Alert.mjs +0 -22
  364. package/Alert/Alert.stories.mjs +0 -18
  365. package/Alert/index.mjs +0 -1
  366. package/Animations/Reveal.mjs +0 -43
  367. package/Animations/Underline.mjs +0 -15
  368. package/Animations/index.mjs +0 -3
  369. package/Animations/useReveal.mjs +0 -73
  370. package/Autocomplete/AutocompleteDownshift.mjs +0 -157
  371. package/Autocomplete/AutocompleteDownshiftMultiselect.mjs +0 -352
  372. package/Autocomplete/AutocompleteMui.mjs +0 -219
  373. package/Autocomplete/AutocompleteReach.mjs +0 -111
  374. package/Autocomplete/components.mjs +0 -87
  375. package/Autocomplete/helpers.mjs +0 -35
  376. package/Autocomplete/index.mjs +0 -4
  377. package/Bg/BgColor.mjs +0 -42
  378. package/Bg/BgPhoto.mjs +0 -71
  379. package/Bg/BgSvg.mjs +0 -22
  380. package/Bg/index.mjs +0 -3
  381. package/Breadcrumbs/Breadcrumbs.mjs +0 -91
  382. package/Breadcrumbs/index.mjs +0 -1
  383. package/Buttons/Button.mjs +0 -78
  384. package/Buttons/ButtonComposite.mjs +0 -105
  385. package/Buttons/ButtonFab.mjs +0 -8
  386. package/Buttons/ButtonLink.mjs +0 -18
  387. package/Buttons/IconButton.mjs +0 -19
  388. package/Buttons/index.mjs +0 -5
  389. package/Calendar/CalendarDaygridCell.mjs +0 -95
  390. package/Calendar/CalendarDaygridNav.mjs +0 -52
  391. package/Calendar/CalendarDaygridTable.mjs +0 -115
  392. package/Calendar/CalendarLegend.mjs +0 -29
  393. package/Calendar/calendar-api-google.mjs +0 -99
  394. package/Calendar/index.mjs +0 -6
  395. package/Calendar/types.mjs +0 -1
  396. package/Calendar/useCalendar.mjs +0 -225
  397. package/Calendar/utils.mjs +0 -209
  398. package/Carousel/Carousel.mjs +0 -377
  399. package/Carousel/CarouselCss.mjs +0 -44
  400. package/Carousel/index.mjs +0 -1
  401. package/Collapsable/Collapsable.mjs +0 -1
  402. package/Collapsable/CollapsableReach.mjs +0 -250
  403. package/Collapsable/index.mjs +0 -1
  404. package/Debug/Debug.mjs +0 -23
  405. package/Debug/index.mjs +0 -1
  406. package/Details/Details.mjs +0 -90
  407. package/Details/Details.stories.mjs +0 -21
  408. package/Details/index.mjs +0 -1
  409. package/Dialog/DialogMui.mjs +0 -105
  410. package/Dialog/DialogMui.stories.mjs +0 -20
  411. package/Dialog/css/bare.mjs +0 -19
  412. package/Dialog/css/index.stories.mjs +0 -75
  413. package/Dialog/index.mjs +0 -1
  414. package/Dialog/m/bare.mjs +0 -115
  415. package/Dialog/m/basic.mjs +0 -31
  416. package/Dialog/m/index.mjs +0 -4
  417. package/Dialog/sc/bare.mjs +0 -54
  418. package/Dialog/sc/framer.mjs +0 -16
  419. package/Dialog/sc/framerMaterial.mjs +0 -16
  420. package/Dialog/sc/index.stories.mjs +0 -48
  421. package/Dialog/sc/material.mjs +0 -41
  422. package/Dialog/tw/bare.mjs +0 -29
  423. package/Dialog/tw/elegant.mjs +0 -18
  424. package/Dialog/tw/framer.mjs +0 -16
  425. package/Dialog/tw/framerMaterial.mjs +0 -16
  426. package/Dialog/tw/index.stories.mjs +0 -83
  427. package/Dialog/tw/material.mjs +0 -18
  428. package/Editor/Editor--tiptap.mjs +0 -53
  429. package/Editor/components.mjs +0 -28
  430. package/Editor/index.mjs +0 -1
  431. package/FaviconTags.mjs +0 -64
  432. package/Form/Form.mjs +0 -95
  433. package/Form/index.mjs +0 -1
  434. package/Form/sc/bare.mjs +0 -29
  435. package/Forms/Checkbox/Checkbox.mjs +0 -36
  436. package/Forms/Checkbox/index.mjs +0 -1
  437. package/Forms/Feedback/Feedback.mjs +0 -14
  438. package/Forms/Feedback/index.mjs +0 -1
  439. package/Forms/Field/Field.mjs +0 -50
  440. package/Forms/Field/FieldControl.mjs +0 -67
  441. package/Forms/Field/FieldHint.mjs +0 -6
  442. package/Forms/Field/index.mjs +0 -2
  443. package/Forms/Input/Input.mjs +0 -36
  444. package/Forms/Input/index.mjs +0 -1
  445. package/Forms/InputGroup/InputGroup.mjs +0 -57
  446. package/Forms/InputGroup/index.mjs +0 -1
  447. package/Forms/Label/Label.mjs +0 -24
  448. package/Forms/Label/index.mjs +0 -1
  449. package/Forms/Password/Password.mjs +0 -53
  450. package/Forms/Password/index.mjs +0 -1
  451. package/Forms/Radio/Radio.mjs +0 -57
  452. package/Forms/Radio/index.mjs +0 -1
  453. package/Forms/Switch/Switch.mjs +0 -60
  454. package/Forms/Switch/index.mjs +0 -1
  455. package/Forms/Textarea/Textarea.mjs +0 -26
  456. package/Forms/Textarea/TextareaRich.mjs +0 -48
  457. package/Forms/Textarea/index.mjs +0 -2
  458. package/Forms/Toggle/Toggle-tailwind.mjs +0 -98
  459. package/Forms/Toggle/Toggle.mjs +0 -123
  460. package/Forms/Toggle/index.mjs +0 -1
  461. package/Forms/Toggle/useToggle-tailwind.mjs +0 -201
  462. package/Forms/Toggle/useToggle.mjs +0 -163
  463. package/Forms/antispam.mjs +0 -58
  464. package/Forms/helpers.mjs +0 -52
  465. package/Forms/index.mjs +0 -16
  466. package/Forms/styles.mjs +0 -61
  467. package/Gauge/Gauge.mjs +0 -101
  468. package/Grid/Grid.mjs +0 -75
  469. package/Grid/index.mjs +0 -1
  470. package/Hamburger/Hamburger.mjs +0 -79
  471. package/Hamburger/index.mjs +0 -1
  472. package/Header/index.mjs +0 -1
  473. package/Header/useHeader.mjs +0 -36
  474. package/Hidden/Hidden.mjs +0 -10
  475. package/Hidden/index.mjs +0 -1
  476. package/Img/index.mjs +0 -1
  477. package/Img/sc/bare.mjs +0 -36
  478. package/Img/types.mjs +0 -1
  479. package/Link/Link.mjs +0 -2
  480. package/Link/LinkBlank.mjs +0 -32
  481. package/Link/index.mjs +0 -2
  482. package/Menu/Menu.mjs +0 -11
  483. package/Menu/MenuMui.mjs +0 -164
  484. package/Menu/index.mjs +0 -1
  485. package/MenuItem/MenuItem.mjs +0 -20
  486. package/MenuItem/MenuItemMui.mjs +0 -31
  487. package/MenuItem/index.mjs +0 -1
  488. package/MenuItem/useMenuItem.mjs +0 -78
  489. package/Meta/Meta.mjs +0 -8
  490. package/Meta/index.mjs +0 -2
  491. package/NoJs/NoJs.mjs +0 -10
  492. package/NoJs/index.mjs +0 -2
  493. package/Pagination/PaginationNav.mjs +0 -122
  494. package/Pagination/PaginationResults.mjs +0 -34
  495. package/Pagination/index.mjs +0 -2
  496. package/Pill/Pill.mjs +0 -37
  497. package/Pill/index.mjs +0 -1
  498. package/Progress/ProgressCircular.mjs +0 -53
  499. package/Progress/ProgressLinear.mjs +0 -44
  500. package/Progress/ProgressOverlay.mjs +0 -64
  501. package/Progress/index.mjs +0 -3
  502. package/README.md +0 -1
  503. package/Rating/Rating.mjs +0 -154
  504. package/Rating/index.mjs +0 -62
  505. package/Select/SelectDownshift.mjs +0 -37
  506. package/Select/components.mjs +0 -25
  507. package/Select/index.mjs +0 -2
  508. package/Sidebar/Sidebar.mjs +0 -63
  509. package/Sidebar/index.mjs +0 -1
  510. package/Spacing/Spacing.mjs +0 -55
  511. package/Spacing/index.mjs +0 -1
  512. package/Sticky/Sticky.mjs +0 -218
  513. package/Sticky/StickyCss.mjs +0 -10
  514. package/Sticky/index.mjs +0 -1
  515. package/Tabs/TabsMui.mjs +0 -61
  516. package/Tabs/TabsMui.stories.mjs +0 -20
  517. package/Tabs/index.mjs +0 -1
  518. package/Tabs/sc/bare.mjs +0 -85
  519. package/Tabs/sc/index.stories.mjs +0 -0
  520. package/Tabs/tw/bare.mjs +0 -15
  521. package/Tabs/tw/index.stories.mjs +0 -25
  522. package/Tabs/tw/material.mjs +0 -14
  523. package/Tabs/useTabs.mjs +0 -46
  524. package/Typography/CopyPasteVisible.mjs +0 -6
  525. package/Typography/Native.mjs +0 -47
  526. package/Typography/ReadMore.mjs +0 -114
  527. package/Typography/TextLoop.mjs +0 -90
  528. package/Typography/TypeStairs.mjs +0 -61
  529. package/Typography/index.mjs +0 -5
  530. package/css/index.mjs +0 -30
  531. package/helpers/classed.mjs +0 -65
  532. package/helpers/classed.stories.mjs +0 -121
  533. package/helpers/createUseMediaQueryWidth.mjs +0 -178
  534. package/helpers/extend-component.mjs +0 -13
  535. package/helpers/index.mjs +0 -4
  536. package/hooks/index.mjs +0 -21
  537. package/hooks/types.mjs +0 -3
  538. package/hooks/useAsyncFn.mjs +0 -39
  539. package/hooks/useDateLocale.mjs +0 -37
  540. package/hooks/useFirstMountState.mjs +0 -12
  541. package/hooks/useFixedOffset.mjs +0 -56
  542. package/hooks/useFocus.mjs +0 -14
  543. package/hooks/useInterval.mjs +0 -29
  544. package/hooks/useIsomorphicLayoutEffect.mjs +0 -6
  545. package/hooks/useKeyUp.mjs +0 -21
  546. package/hooks/useMeasure.mjs +0 -174
  547. package/hooks/useMountedState.mjs +0 -15
  548. package/hooks/useNavigateAway.mjs +0 -69
  549. package/hooks/usePrevious.mjs +0 -17
  550. package/hooks/useScrollPosition.mjs +0 -70
  551. package/hooks/useScrollThreshold.mjs +0 -33
  552. package/hooks/useScrollTo.mjs +0 -20
  553. package/hooks/useSmoothScroll.mjs +0 -35
  554. package/hooks/useSpinDelay.mjs +0 -52
  555. package/hooks/useTraceUpdate.mjs +0 -23
  556. package/hooks/useUpdateEffect.mjs +0 -14
  557. package/hooks/useWindowSize.mjs +0 -32
  558. package/index.mjs +0 -4
  559. package/m/MotionProvider.mjs +0 -40
  560. package/m/index.mjs +0 -5
  561. package/sc/index.mjs +0 -31
  562. package/scm/index.mjs +0 -31
  563. package/shared/index.mjs +0 -43
  564. package/styles/Body.mjs +0 -16
  565. package/styles/Global.mjs +0 -49
  566. package/styles/index.mjs +0 -7
  567. package/styles/media.mjs +0 -151
  568. package/styles/spacing.mjs +0 -46
  569. package/styles/styled.mjs +0 -26
  570. package/styles/theme--vanilla.mjs +0 -65
  571. package/styles/theme.mjs +0 -38
  572. package/tw/index.mjs +0 -30
  573. package/twm/index.mjs +0 -30
  574. package/types.mjs +0 -1
  575. /package/m/{lite.mjs → lite.js} +0 -0
  576. /package/m/{max.mjs → max.js} +0 -0
@@ -1,37 +0,0 @@
1
- import { useEffect, useState } from "react";
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
- */ export function useDateLocale(locale, defaultLocale = "en") {
8
- const [data, setData] = useState();
9
- const [current, setCurrent] = useState(defaultLocale);
10
- // const [ready, setReady] = useState(false);
11
- // If the user changes the locale listen to the change and import the locale that is now required.
12
- useEffect(()=>{
13
- const importLocaleFile = async ()=>{
14
- // This webpack option stops all of the date-fns files being imported and chunked.
15
- // NB: this makes unnecessary numerous webpack chunks in applications
16
- // that do not even use this hook, so we comment out the webpack dynamic
17
- // import and its magic comment
18
- // const localeToSet = await import(
19
- // /FIXME: * webpackMode: "lazy", webpackChunkName: "df-[index]", webpackExclude: /_lib/ */
20
- // `date-fns/locale/${locale}/index.js`,
21
- // );
22
- const localeToSet = await import(`date-fns/locale/en-US/index.js`);
23
- setCurrent(locale || current);
24
- setData(localeToSet.default);
25
- // setReady(true);
26
- };
27
- // If the locale has not yet been loaded.
28
- if (locale !== current) {
29
- importLocaleFile();
30
- }
31
- }, [
32
- locale,
33
- current
34
- ]);
35
- return data;
36
- }
37
- export default useDateLocale;
@@ -1,12 +0,0 @@
1
- import { useRef } from "react";
2
- /**
3
- * @borrows [streamich/react-use](https://github.com/streamich/react-use/blob/master/src/useFirstMountState.ts)
4
- */ export function useFirstMountState() {
5
- const isFirst = useRef(true);
6
- if (isFirst.current) {
7
- isFirst.current = false;
8
- return true;
9
- }
10
- return isFirst.current;
11
- }
12
- export default useFirstMountState;
@@ -1,56 +0,0 @@
1
- import { useRef } from "react";
2
- import debounce from "@koine/utils/debounce";
3
- import $each from "@koine/dom/$each";
4
- import calculateFixedOffset from "@koine/dom/calculateFixedOffset";
5
- import injectCss from "@koine/dom/injectCss";
6
- import listenResizeDebounced from "@koine/dom/listenResizeDebounced";
7
- import useIsomorphicLayoutEffect from "./useIsomorphicLayoutEffect";
8
- const inject = (value)=>{
9
- injectCss("useFixedOffset", `html{scroll-padding-top: ${value}px}`);
10
- };
11
- /**
12
- * # Use fixed offset
13
- *
14
- * Maybe use [ResizeObserver polyfill](https://github.com/juggle/resize-observer)
15
- *
16
- * @see https://web.dev/resize-observer/
17
- *
18
- * @param selector By default `[data-fixed]`: anyhting with the data attribute `data-fixed`
19
- */ export function useFixedOffset(selector) {
20
- const fixedOffset = useRef(0);
21
- useIsomorphicLayoutEffect(()=>{
22
- const update = ()=>{
23
- const newFixedOffset = calculateFixedOffset();
24
- fixedOffset.current = newFixedOffset;
25
- // inject this CSS make the hashed deeplinks position the scroll at the
26
- // right offset
27
- inject(newFixedOffset);
28
- };
29
- update();
30
- if (ResizeObserver) {
31
- // const elements = $$("[data-fixed]");
32
- const observer = new ResizeObserver((entries)=>{
33
- let newFixedOffset = 0;
34
- entries.forEach((entry)=>{
35
- newFixedOffset += entry.contentRect.height;
36
- });
37
- fixedOffset.current = newFixedOffset;
38
- const updateOnResize = debounce(()=>inject(newFixedOffset), 400, true);
39
- updateOnResize();
40
- });
41
- $each(selector || "[data-fixed]", ($el)=>{
42
- if (observer) observer.observe($el);
43
- });
44
- return ()=>{
45
- observer?.disconnect();
46
- };
47
- } else {
48
- const listener = listenResizeDebounced(0, update);
49
- return listener;
50
- }
51
- }, [
52
- selector
53
- ]);
54
- return fixedOffset;
55
- }
56
- export default useFixedOffset;
@@ -1,14 +0,0 @@
1
- import { useRef } from "react";
2
- /**
3
- * @see https://stackoverflow.com/a/54159564/1938970
4
- */ export const useFocus = ()=>{
5
- const elementRef = useRef(null);
6
- const setFocus = ()=>{
7
- elementRef.current && elementRef.current.focus();
8
- };
9
- return [
10
- elementRef,
11
- setFocus
12
- ];
13
- };
14
- export default useFocus;
@@ -1,29 +0,0 @@
1
- import { useEffect, useRef } from "react";
2
- import noop from "@koine/utils/noop";
3
- /**
4
- * @borrows [dan abramov](https://overreacted.io/making-setinterval-declarative-with-react-hooks/)
5
- *
6
- * We just add `deps` array argument and typescript support
7
- */ export function useInterval(callback, delay, deps = []) {
8
- const savedCallback = useRef();
9
- useEffect(()=>{
10
- savedCallback.current = callback;
11
- // eslint-disable-next-line react-hooks/exhaustive-deps
12
- }, [
13
- callback,
14
- ...deps
15
- ]);
16
- useEffect(()=>{
17
- function tick() {
18
- if (savedCallback.current) savedCallback.current();
19
- }
20
- if (delay !== null) {
21
- const id = setInterval(tick, delay);
22
- return ()=>clearInterval(id);
23
- }
24
- return noop;
25
- }, [
26
- delay
27
- ]);
28
- }
29
- export default useInterval;
@@ -1,6 +0,0 @@
1
- import { useEffect, useLayoutEffect } from "react";
2
- import isBrowser from "@koine/utils/isBrowser";
3
- /**
4
- * @borrows [streamich/react-use](https://github.com/streamich/react-use/blob/master/src/useIsomorphicLayoutEffect.ts)
5
- */ export const useIsomorphicLayoutEffect = isBrowser ? useLayoutEffect : useEffect;
6
- export default useIsomorphicLayoutEffect;
@@ -1,21 +0,0 @@
1
- import { useEffect } from "react";
2
- import on from "@koine/dom/on";
3
- export function useKeyUp(callback, deps = []) {
4
- useEffect(()=>{
5
- const listener = on(window, "keyup", (event)=>{
6
- // const { key } = event;
7
- // be sure we do not intercept keys combinations maybe used for other
8
- // actions like native browser navigation shortcuts
9
- // @see https://stackoverflow.com/a/37559790/1938970
10
- if (!event.ctrlKey && !event.altKey && !event.shiftKey && !event.metaKey) {
11
- callback(event);
12
- }
13
- });
14
- return listener;
15
- // eslint-disable-next-line react-hooks/exhaustive-deps
16
- }, [
17
- callback,
18
- ...deps
19
- ]);
20
- }
21
- export default useKeyUp;
@@ -1,174 +0,0 @@
1
- import { useEffect, useMemo, useRef, useState } from "react";
2
- import debounce from "@koine/utils/debounce";
3
- import noop from "@koine/utils/noop";
4
- import listenResizeDebounced from "@koine/dom/listenResizeDebounced";
5
- import listenScrollDebounced from "@koine/dom/listenScrollDebounced";
6
- import off from "@koine/dom/off";
7
- import on from "@koine/dom/on";
8
- let observer;
9
- // Returns a list of scroll offsets
10
- function findScrollContainers(element) {
11
- const result = [];
12
- if (!element || element === document.body) return result;
13
- const { overflow, overflowX, overflowY } = window.getComputedStyle(element);
14
- if ([
15
- overflow,
16
- overflowX,
17
- overflowY
18
- ].some((prop)=>prop === "auto" || prop === "scroll")) result.push(element);
19
- return [
20
- ...result,
21
- ...findScrollContainers(element.parentElement)
22
- ];
23
- }
24
- const keys = [
25
- "x",
26
- "y",
27
- "top",
28
- "bottom",
29
- "left",
30
- "right",
31
- "width",
32
- "height"
33
- ];
34
- const areBoundsEqual = (a, b)=>keys.every((key)=>a[key] === b[key]);
35
- /**
36
- * Use measure hook
37
- *
38
- * @borrows [pmndrs/react-use-measure](https://github.com/pmndrs/react-use-measure)
39
- */ export function useMeasure(options) {
40
- const { scroll = false } = options || {};
41
- const [bounds, setBounds] = useState({
42
- left: 0,
43
- top: 0,
44
- width: 0,
45
- height: 0,
46
- bottom: 0,
47
- right: 0,
48
- x: 0,
49
- y: 0
50
- });
51
- // keep all state in a ref
52
- const state = useRef([
53
- // element
54
- null,
55
- // scrollContainers
56
- null,
57
- // resizeObserver
58
- null,
59
- // lastBounds
60
- bounds
61
- ]);
62
- // make sure to update state only as long as the component is truly mounted
63
- const mounted = useRef(false);
64
- useEffect(()=>{
65
- mounted.current = true;
66
- return ()=>void (mounted.current = false);
67
- }, []);
68
- // memoize handlers, so event-listeners know when they should update
69
- const [forceRefresh /* resizeChange */ , , scrollChange] = useMemo(()=>{
70
- const callback = (..._args)=>{
71
- const [element, , , lastBounds] = state.current;
72
- if (!element) return;
73
- const size = element.getBoundingClientRect();
74
- // if (element instanceof HTMLElement && offsetSize) {
75
- // size.height = element.offsetHeight;
76
- // size.width = element.offsetWidth;
77
- // }
78
- Object.freeze(size);
79
- if (mounted.current && !areBoundsEqual(lastBounds, size)) {
80
- state.current[3] = size;
81
- setBounds(size);
82
- }
83
- };
84
- const debouncedCallback = debounce(callback);
85
- return [
86
- callback,
87
- debouncedCallback,
88
- debouncedCallback
89
- ];
90
- }, [
91
- setBounds /* , offsetSize */
92
- ]);
93
- // cleanup current scroll-listeners / observers
94
- function removeListeners() {
95
- const [, scrollContainers, resizeObserver] = state.current;
96
- if (scrollContainers) {
97
- scrollContainers.forEach((element)=>off(element, "scroll", scrollChange));
98
- state.current[1] = null;
99
- }
100
- if (resizeObserver) {
101
- resizeObserver.disconnect();
102
- state.current[2] = null;
103
- }
104
- }
105
- // add scroll-listeners / observers
106
- function addListeners() {
107
- const [element, scrollContainers] = state.current;
108
- if (!element) return;
109
- if (!observer && ResizeObserver) {
110
- observer = new ResizeObserver(scrollChange);
111
- state.current[2] = observer;
112
- observer.observe(element);
113
- if (scroll && scrollContainers) {
114
- scrollContainers.forEach((scrollContainer)=>on(scrollContainer, "scroll", scrollChange, {
115
- capture: true,
116
- passive: true
117
- }));
118
- }
119
- }
120
- }
121
- // the ref we expose to the user
122
- const ref = (node)=>{
123
- if (!node || node === state.current[0]) return;
124
- removeListeners();
125
- state.current[0] = node;
126
- state.current[1] = findScrollContainers(node);
127
- addListeners();
128
- };
129
- // add general event listeners
130
- // useOnWindowScroll(forceRefresh, Boolean(scroll));
131
- // useOnWindowResize(() => {
132
- // debugger;
133
- // forceRefresh();
134
- // });
135
- useEffect(()=>{
136
- if (scroll) {
137
- const listener = listenScrollDebounced(0, forceRefresh, 100);
138
- return listener;
139
- }
140
- return noop;
141
- }, [
142
- scroll,
143
- forceRefresh
144
- ]);
145
- useEffect(()=>{
146
- // const listener = listenResizeDebounced(onWindowResize);
147
- // return listener;
148
- const listener = listenResizeDebounced(0, forceRefresh, 100);
149
- return listener;
150
- }, [
151
- forceRefresh
152
- ]);
153
- // respond to changes that are relevant for the listeners
154
- useEffect(()=>{
155
- removeListeners();
156
- addListeners();
157
- // eslint-disable-next-line react-hooks/exhaustive-deps
158
- }, [
159
- scroll /* , scrollChange, resizeChange */
160
- ]);
161
- useEffect(()=>{
162
- // operate on mount, @kuus on the original version there is no call on mount?
163
- forceRefresh();
164
- // remove all listeners when the components unmounts
165
- return removeListeners;
166
- // eslint-disable-next-line react-hooks/exhaustive-deps
167
- }, []);
168
- return [
169
- ref,
170
- bounds,
171
- forceRefresh
172
- ];
173
- }
174
- export default useMeasure;
@@ -1,15 +0,0 @@
1
- import { useCallback, useEffect, useRef } from "react";
2
- /**
3
- * @borrows [streamich/react-use](https://github.com/streamich/react-use/blob/master/src/useMountedState.ts)
4
- */ export function useMountedState() {
5
- const mountedRef = useRef(false);
6
- const get = useCallback(()=>mountedRef.current, []);
7
- useEffect(()=>{
8
- mountedRef.current = true;
9
- return ()=>{
10
- mountedRef.current = false;
11
- };
12
- }, []);
13
- return get;
14
- }
15
- export default useMountedState;
@@ -1,69 +0,0 @@
1
- import { useEffect, useRef } from "react";
2
- import on from "@koine/dom/on";
3
- // type UseNavigateAwayPagehideHandler = (event: PageTransitionEvent) => unknown;
4
- /**
5
- * @resources
6
- *
7
- * About browser's specs see:
8
- * - https://developer.mozilla.org/en-US/docs/Web/API/Window/pagehide_event
9
- * - https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html#//apple_ref/doc/uid/TP40006511-SW5
10
- * - https://stackoverflow.com/questions/58009424/pagehide-event-on-google-chrome
11
- *
12
- * About react see:
13
- * - https://github.com/jacobbuck/react-beforeunload
14
- * - https://github.com/dioscarey/react-beforeunload-component
15
- *
16
- * About next.js see:
17
- * - https://github.com/vercel/next.js/issues/2476
18
- * - https://github.com/vercel/next.js/issues/2694
19
- *
20
- * For the callback technique see:
21
- * - https://stackoverflow.com/a/11835394/1938970
22
- */ export const useNavigateAway = (handler)=>{
23
- const beforeUnloadHandlerRef = useRef();
24
- // const pagehideHandlerRef = useRef<UseNavigateAwayPagehideHandler | undefined>();
25
- useEffect(()=>{
26
- beforeUnloadHandlerRef.current = (event)=>{
27
- const customMessageOrCondition = handler(event);
28
- if (customMessageOrCondition) {
29
- event.preventDefault();
30
- }
31
- // Handle legacy `event.returnValue` property
32
- // https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
33
- if (typeof customMessageOrCondition === "string") {
34
- return event.returnValue = customMessageOrCondition;
35
- }
36
- // Chrome doesn't support `event.preventDefault()` on `BeforeUnloadEvent`,
37
- // instead it requires `event.returnValue` to be set
38
- // https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onbeforeunload#browser_compatibility
39
- if (event.defaultPrevented) {
40
- return event.returnValue = "";
41
- }
42
- return;
43
- };
44
- // pagehideHandlerRef.current = (event) => {
45
- // const returnValue = handler?.(event);
46
- // if (event.persisted) {
47
- // // If the event's persisted property is `true` the page is about
48
- // // to enter the Back-Forward Cache, which is also in the frozen state.
49
- // } else {
50
- // // If the event's persisted property is not `true` the page is
51
- // // about to be unloaded.
52
- // }
53
- // };
54
- }, [
55
- handler
56
- ]);
57
- useEffect(()=>{
58
- const listenerBeforeunload = on(window, "beforeunload", (event)=>beforeUnloadHandlerRef.current?.(event));
59
- // const listenerPagehide = on(window, "pagehide", (event) =>
60
- // pagehideHandlerRef.current?.(event)
61
- // );
62
- return listenerBeforeunload;
63
- // return () => {
64
- // listenerBeforeunload();
65
- // // listenerPagehide();
66
- // };
67
- }, []);
68
- };
69
- export default useNavigateAway;
@@ -1,17 +0,0 @@
1
- import { useState } from "react";
2
- /**
3
- * @borrows [samselikoff/animated-carousel](https://github.com/samselikoff/2022-06-02-animated-carousel/blob/main/pages/final.jsx)
4
- */ export function usePrevious(state, defaulValue) {
5
- const [tuple, setTuple] = useState([
6
- state,
7
- defaulValue
8
- ]);
9
- if (tuple[1] !== state) {
10
- setTuple([
11
- tuple[1],
12
- state
13
- ]);
14
- }
15
- return tuple[0];
16
- }
17
- export default usePrevious;
@@ -1,70 +0,0 @@
1
- import { useRef } from "react";
2
- import isBrowser from "@koine/utils/isBrowser";
3
- import listenScroll from "@koine/dom/listenScroll";
4
- import useIsomorphicLayoutEffect from "./useIsomorphicLayoutEffect";
5
- const zeroPosition = {
6
- x: 0,
7
- y: 0
8
- };
9
- const getClientRect = (element)=>element?.getBoundingClientRect();
10
- const getScrollPosition = (element, boundingElement)=>{
11
- if (!isBrowser) {
12
- return zeroPosition;
13
- }
14
- if (!boundingElement) {
15
- return {
16
- x: window.scrollX,
17
- y: window.scrollY
18
- };
19
- }
20
- const targetPosition = getClientRect(element?.current || document.body);
21
- const containerPosition = getClientRect(boundingElement.current);
22
- if (!targetPosition) {
23
- return zeroPosition;
24
- }
25
- return containerPosition ? {
26
- x: (containerPosition.x || 0) - (targetPosition.x || 0),
27
- y: (containerPosition.y || 0) - (targetPosition.y || 0)
28
- } : {
29
- x: targetPosition.left,
30
- y: targetPosition.top
31
- };
32
- };
33
- /**
34
- * @borrows [@n8tb1t/use-scroll-position@2.0.3](https://github.com/n8tb1t/use-scroll-position) by `n8tb1t <n8tb1t@gmail.com>`
35
- *
36
- * We've just:
37
- * - reused internal helper functions
38
- * - compacted object arguments in functions as plain argument list to improve compression
39
- */ export const useScrollPosition = (effect, deps = [], element, boundingElement, wait)=>{
40
- const position = useRef(getScrollPosition(null, boundingElement));
41
- let throttleTimeout = null;
42
- const callBack = ()=>{
43
- const current = getScrollPosition(element, boundingElement);
44
- effect(current, position.current);
45
- position.current = current;
46
- throttleTimeout = null;
47
- };
48
- useIsomorphicLayoutEffect(()=>{
49
- if (!isBrowser) {
50
- return undefined;
51
- }
52
- const handleScroll = ()=>{
53
- if (wait) {
54
- if (throttleTimeout === null) {
55
- throttleTimeout = window.setTimeout(callBack, wait);
56
- }
57
- } else {
58
- callBack();
59
- }
60
- };
61
- const listener = listenScroll(handleScroll, boundingElement?.current);
62
- return ()=>{
63
- listener();
64
- if (throttleTimeout) {
65
- clearTimeout(throttleTimeout);
66
- }
67
- };
68
- }, deps);
69
- };
70
- export default useScrollPosition;
@@ -1,33 +0,0 @@
1
- import { useCallback, useEffect, useState } from "react";
2
- import noop from "@koine/utils/noop";
3
- import listenScroll from "@koine/dom/listenScroll";
4
- export const useScrollThreshold = (threshold, callback)=>{
5
- const [isBelow, setIsBelow] = useState(false);
6
- const handler = useCallback(()=>{
7
- if (threshold) {
8
- const posY = window.scrollY; // * -1;
9
- const isAbove = posY < threshold;
10
- const isBelow = posY > threshold;
11
- // console.log("useScrollThreshold setIsBelow", isBelow, posY, threshold);
12
- setIsBelow(isBelow);
13
- if (callback) callback(isAbove, isBelow);
14
- }
15
- }, [
16
- threshold,
17
- callback
18
- ]);
19
- useEffect(()=>{
20
- if (threshold) {
21
- // const listener = listenScrollThrottled(0, handler, 50);
22
- const listener = listenScroll(handler);
23
- handler();
24
- return listener;
25
- }
26
- return noop;
27
- }, [
28
- threshold,
29
- handler
30
- ]);
31
- return isBelow;
32
- };
33
- export default useScrollThreshold;
@@ -1,20 +0,0 @@
1
- import isBrowser from "@koine/utils/isBrowser";
2
- import useHeader from "../Header/useHeader";
3
- export function useScrollTo(id = "", offset = 0) {
4
- const [, , headerHeight] = useHeader();
5
- if (!isBrowser) {
6
- return;
7
- }
8
- const headerOffset = headerHeight || 0;
9
- let element = document.getElementById(id);
10
- let top = 0;
11
- if (element && element.offsetParent) {
12
- do {
13
- top += element.offsetTop;
14
- }while (element = element.offsetParent)
15
- }
16
- top -= offset;
17
- top -= headerOffset;
18
- window.scroll(0, top);
19
- }
20
- export default useScrollTo;
@@ -1,35 +0,0 @@
1
- import { useCallback } from "react";
2
- import isNumber from "@koine/utils/isNumber";
3
- import getOffsetTopSlim from "@koine/dom/getOffsetTopSlim";
4
- import scrollTo from "@koine/dom/scrollTo";
5
- import useFixedOffset from "./useFixedOffset";
6
- /**
7
- *
8
- * @param disregardAutomaticFixedOffset When the `to` scroll argument is a DOM
9
- * selector we will keep into account the _fixedOffset_ despite this option.
10
- * @returns
11
- */ export function useSmoothScroll(disregardAutomaticFixedOffset) {
12
- const fixedOffset = useFixedOffset();
13
- const scroll = useCallback((to, customOffset, callback, fallbackTimeout, behavior)=>{
14
- let top = undefined;
15
- let toIsElement = false;
16
- if (isNumber(to)) {
17
- top = to;
18
- } else if (to) {
19
- const el = document.getElementById(to);
20
- if (el) {
21
- top = getOffsetTopSlim(el) - fixedOffset.current;
22
- toIsElement = true;
23
- }
24
- }
25
- if (isNumber(top)) {
26
- top = top + (customOffset || 0) + (disregardAutomaticFixedOffset || toIsElement ? 0 : fixedOffset.current);
27
- scrollTo(top, callback, fallbackTimeout, behavior);
28
- }
29
- }, [
30
- disregardAutomaticFixedOffset,
31
- fixedOffset
32
- ]);
33
- return scroll;
34
- }
35
- export default useSmoothScroll;
@@ -1,52 +0,0 @@
1
- import { useEffect, useRef, useState } from "react";
2
- var State;
3
- (function(State) {
4
- State[State["IDLE"] = 0] = "IDLE";
5
- State[State["DELAY"] = 1] = "DELAY";
6
- State[State["DISPLAY"] = 2] = "DISPLAY";
7
- State[State["EXPIRE"] = 3] = "EXPIRE";
8
- })(State || (State = {}));
9
- /**
10
- * Wraps your booleans only returning true after the `delay`, and for a minimum
11
- * time of `minDuration`. This way you're sure that you don't show unnecessary
12
- * or very short living spinners.
13
- *
14
- * @borrows [smeijer/spin-delay](https://github.com/smeijer/spin-delay)
15
- *
16
- * - Smaller footprint and options object as argument
17
- *
18
- * @param delay [500]
19
- * @param minDuration [200]
20
- */ export function useSpinDelay(loading, delay = 500, minDuration = 200) {
21
- const [state, setState] = useState(0);
22
- const timeout = useRef();
23
- useEffect(()=>{
24
- if (loading && state === 0) {
25
- clearTimeout(timeout.current);
26
- timeout.current = setTimeout(()=>{
27
- if (!loading) {
28
- return setState(0);
29
- }
30
- timeout.current = setTimeout(()=>{
31
- setState(3);
32
- }, minDuration);
33
- setState(2);
34
- }, delay);
35
- setState(1);
36
- }
37
- if (!loading && state !== 2) {
38
- clearTimeout(timeout.current);
39
- setState(0);
40
- }
41
- }, [
42
- loading,
43
- state,
44
- delay,
45
- minDuration
46
- ]);
47
- useEffect(()=>{
48
- return ()=>clearTimeout(timeout.current);
49
- }, []);
50
- return state === 2 || state === 3;
51
- }
52
- export default useSpinDelay;