@fountain-ui/core 2.0.0-beta.9 → 2.0.0-beta.90

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 (573) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/build/commonjs/Accordion/Accordion.js +110 -27
  3. package/build/commonjs/Accordion/Accordion.js.map +1 -1
  4. package/build/commonjs/Accordion/AccordionProps.js.map +1 -1
  5. package/build/commonjs/Badge/Badge.js +5 -14
  6. package/build/commonjs/Badge/Badge.js.map +1 -1
  7. package/build/commonjs/Badge/BadgeProps.js.map +1 -1
  8. package/build/commonjs/Button/Button.js +6 -3
  9. package/build/commonjs/Button/Button.js.map +1 -1
  10. package/build/commonjs/ButtonBase/ButtonBase.js +65 -51
  11. package/build/commonjs/ButtonBase/ButtonBase.js.map +1 -1
  12. package/build/commonjs/ButtonBase/ButtonBaseProps.js.map +1 -1
  13. package/build/commonjs/Checkbox/CheckboxProps.js.map +1 -1
  14. package/build/commonjs/Chip/Chip.js +11 -9
  15. package/build/commonjs/Chip/Chip.js.map +1 -1
  16. package/build/commonjs/Chip/ChipProps.js.map +1 -1
  17. package/build/commonjs/CircularProgress/CircularProgress.js +27 -28
  18. package/build/commonjs/CircularProgress/CircularProgress.js.map +1 -1
  19. package/build/commonjs/Dialog/Dialog.js +118 -10
  20. package/build/commonjs/Dialog/Dialog.js.map +1 -1
  21. package/build/commonjs/Dialog/DialogProps.js.map +1 -1
  22. package/build/commonjs/Divider/Divider.js +26 -18
  23. package/build/commonjs/Divider/Divider.js.map +1 -1
  24. package/build/commonjs/Divider/DividerProps.js.map +1 -1
  25. package/build/commonjs/Image/Image.js +58 -14
  26. package/build/commonjs/Image/Image.js.map +1 -1
  27. package/build/commonjs/Image/ImageProps.js.map +1 -1
  28. package/build/commonjs/Image/index.js.map +1 -1
  29. package/build/commonjs/ImageCore/ImageCoreNative.js +36 -26
  30. package/build/commonjs/ImageCore/ImageCoreNative.js.map +1 -1
  31. package/build/commonjs/ImageCore/ImageCoreProps.js.map +1 -1
  32. package/build/commonjs/ImageCore/ImageCoreWeb.js +19 -1
  33. package/build/commonjs/ImageCore/ImageCoreWeb.js.map +1 -1
  34. package/build/commonjs/ImageCore/ImageFileExtensionContext.js +14 -0
  35. package/build/commonjs/ImageCore/ImageFileExtensionContext.js.map +1 -0
  36. package/build/commonjs/ImageCore/ImageFileExtensionProvider.js +42 -0
  37. package/build/commonjs/ImageCore/ImageFileExtensionProvider.js.map +1 -0
  38. package/build/commonjs/ImageCore/index.js +17 -5
  39. package/build/commonjs/ImageCore/index.js.map +1 -1
  40. package/build/commonjs/ImageCore/index.native.js +27 -0
  41. package/build/commonjs/ImageCore/index.native.js.map +1 -1
  42. package/build/commonjs/Modal/AnimatedContainer/index.js +167 -0
  43. package/build/commonjs/Modal/AnimatedContainer/index.js.map +1 -0
  44. package/build/commonjs/Modal/Modal.js +43 -9
  45. package/build/commonjs/Modal/Modal.js.map +1 -1
  46. package/build/commonjs/Modal/ModalProps.js +12 -0
  47. package/build/commonjs/Modal/ModalProps.js.map +1 -1
  48. package/build/commonjs/Modal/index.js +8 -0
  49. package/build/commonjs/Modal/index.js.map +1 -1
  50. package/build/commonjs/Paper/Paper.js +1 -1
  51. package/build/commonjs/Paper/Paper.js.map +1 -1
  52. package/build/commonjs/Radio/Radio.js +11 -4
  53. package/build/commonjs/Radio/Radio.js.map +1 -1
  54. package/build/commonjs/Radio/RadioProps.js.map +1 -1
  55. package/build/commonjs/Slide/Slide.js +41 -27
  56. package/build/commonjs/Slide/Slide.js.map +1 -1
  57. package/build/commonjs/Slide/SlideProps.js.map +1 -1
  58. package/build/commonjs/Snackbar/Snackbar.js +34 -7
  59. package/build/commonjs/Snackbar/Snackbar.js.map +1 -1
  60. package/build/commonjs/Snackbar/SnackbarProps.js.map +1 -1
  61. package/build/commonjs/SnackbarContent/SnackbarContent.js +32 -14
  62. package/build/commonjs/SnackbarContent/SnackbarContent.js.map +1 -1
  63. package/build/commonjs/SnackbarContent/SnackbarContentProps.js.map +1 -1
  64. package/build/commonjs/SvgIcon/SvgIcon.js +1 -1
  65. package/build/commonjs/SvgIcon/SvgIcon.js.map +1 -1
  66. package/build/commonjs/Tab/Tab.js +66 -20
  67. package/build/commonjs/Tab/Tab.js.map +1 -1
  68. package/build/commonjs/Tab/TabIndicator.js +11 -7
  69. package/build/commonjs/Tab/TabIndicator.js.map +1 -1
  70. package/build/commonjs/Tab/TabProps.js.map +1 -1
  71. package/build/commonjs/Tab/index.js.map +1 -1
  72. package/build/commonjs/Tabs/IndexAwareTab.js +35 -0
  73. package/build/commonjs/Tabs/IndexAwareTab.js.map +1 -0
  74. package/build/commonjs/Tabs/InternalContext.js +17 -0
  75. package/build/commonjs/Tabs/InternalContext.js.map +1 -0
  76. package/build/commonjs/Tabs/ScrollableTabsView.js +35 -0
  77. package/build/commonjs/Tabs/ScrollableTabsView.js.map +1 -0
  78. package/build/commonjs/Tabs/TabIndicator.js +73 -28
  79. package/build/commonjs/Tabs/TabIndicator.js.map +1 -1
  80. package/build/commonjs/Tabs/TabIndicatorProps.js.map +1 -1
  81. package/build/commonjs/Tabs/Tabs.js +119 -83
  82. package/build/commonjs/Tabs/Tabs.js.map +1 -1
  83. package/build/commonjs/Tabs/TabsProps.js.map +1 -1
  84. package/build/commonjs/Tabs/index.js.map +1 -1
  85. package/build/commonjs/Tabs/types.js +2 -0
  86. package/build/commonjs/Tabs/types.js.map +1 -0
  87. package/build/commonjs/Tabs/useIndexStore.js +35 -0
  88. package/build/commonjs/Tabs/useIndexStore.js.map +1 -0
  89. package/build/commonjs/Tabs/useScrollViewReaction.js +69 -0
  90. package/build/commonjs/Tabs/useScrollViewReaction.js.map +1 -0
  91. package/build/commonjs/Tabs/useTabCoordinates.js +30 -0
  92. package/build/commonjs/Tabs/useTabCoordinates.js.map +1 -0
  93. package/build/commonjs/Tabs/useTabInnerContentsWidth.js +30 -0
  94. package/build/commonjs/Tabs/useTabInnerContentsWidth.js.map +1 -0
  95. package/build/commonjs/Tabs/utils.js +19 -0
  96. package/build/commonjs/Tabs/utils.js.map +1 -0
  97. package/build/commonjs/TextField/InputLabel.js +6 -3
  98. package/build/commonjs/TextField/InputLabel.js.map +1 -1
  99. package/build/commonjs/TextField/OutlinedTextField.js +6 -2
  100. package/build/commonjs/TextField/OutlinedTextField.js.map +1 -1
  101. package/build/commonjs/TextField/TextField.js +15 -8
  102. package/build/commonjs/TextField/TextField.js.map +1 -1
  103. package/build/commonjs/TextField/TextFieldProps.js.map +1 -1
  104. package/build/commonjs/Tooltip/Tooltip.js +50 -31
  105. package/build/commonjs/Tooltip/Tooltip.js.map +1 -1
  106. package/build/commonjs/Tooltip/TooltipProps.js.map +1 -1
  107. package/build/commonjs/Typography/Typography.js +14 -5
  108. package/build/commonjs/Typography/Typography.js.map +1 -1
  109. package/build/commonjs/Typography/TypographyProps.js.map +1 -1
  110. package/build/commonjs/animated/AnimatedPressable.js +2 -3
  111. package/build/commonjs/animated/AnimatedPressable.js.map +1 -1
  112. package/build/commonjs/hooks/index.js +32 -0
  113. package/build/commonjs/hooks/index.js.map +1 -1
  114. package/build/commonjs/hooks/useAnimatedValue.js +31 -0
  115. package/build/commonjs/hooks/useAnimatedValue.js.map +1 -0
  116. package/build/commonjs/hooks/useCollapsibleAppBar.js +41 -54
  117. package/build/commonjs/hooks/useCollapsibleAppBar.js.map +1 -1
  118. package/build/commonjs/hooks/useDebounce.js +33 -0
  119. package/build/commonjs/hooks/useDebounce.js.map +1 -0
  120. package/build/commonjs/hooks/useFadeInAppBar.js +21 -23
  121. package/build/commonjs/hooks/useFadeInAppBar.js.map +1 -1
  122. package/build/commonjs/hooks/useImperativeState.js +26 -0
  123. package/build/commonjs/hooks/useImperativeState.js.map +1 -0
  124. package/build/commonjs/hooks/useSyncAnimatedValue.js +40 -0
  125. package/build/commonjs/hooks/useSyncAnimatedValue.js.map +1 -0
  126. package/build/commonjs/hooks/useThrottle.js +3 -7
  127. package/build/commonjs/hooks/useThrottle.js.map +1 -1
  128. package/build/commonjs/hooks/useValidWindowDimensions/index.ios.js +14 -7
  129. package/build/commonjs/hooks/useValidWindowDimensions/index.ios.js.map +1 -1
  130. package/build/commonjs/index.js +28 -0
  131. package/build/commonjs/index.js.map +1 -1
  132. package/build/commonjs/internal/hooks/index.js +0 -8
  133. package/build/commonjs/internal/hooks/index.js.map +1 -1
  134. package/build/commonjs/internal/hooks/useHeight.js +3 -9
  135. package/build/commonjs/internal/hooks/useHeight.js.map +1 -1
  136. package/build/commonjs/internal/icons/Checkbox.js +1 -1
  137. package/build/commonjs/internal/icons/Checkbox.js.map +1 -1
  138. package/build/commonjs/internal/icons/CheckboxChecked.js +1 -1
  139. package/build/commonjs/internal/icons/CheckboxChecked.js.map +1 -1
  140. package/build/commonjs/internal/icons/ChevronDown.js +1 -1
  141. package/build/commonjs/internal/icons/ChevronDown.js.map +1 -1
  142. package/build/commonjs/internal/icons/ChevronLeft.js +1 -1
  143. package/build/commonjs/internal/icons/ChevronLeft.js.map +1 -1
  144. package/build/commonjs/internal/icons/ChevronRight.js +1 -1
  145. package/build/commonjs/internal/icons/ChevronRight.js.map +1 -1
  146. package/build/commonjs/internal/icons/Close.js +1 -1
  147. package/build/commonjs/internal/icons/Close.js.map +1 -1
  148. package/build/commonjs/internal/icons/Radio.js +1 -1
  149. package/build/commonjs/internal/icons/Radio.js.map +1 -1
  150. package/build/commonjs/internal/icons/RadioChecked.js +1 -1
  151. package/build/commonjs/internal/icons/RadioChecked.js.map +1 -1
  152. package/build/commonjs/store/MockStore.js +27 -0
  153. package/build/commonjs/store/MockStore.js.map +1 -0
  154. package/build/commonjs/store/SimpleStore.js +59 -0
  155. package/build/commonjs/store/SimpleStore.js.map +1 -0
  156. package/build/commonjs/store/index.js +24 -0
  157. package/build/commonjs/store/index.js.map +1 -0
  158. package/build/commonjs/store/types.js +2 -0
  159. package/build/commonjs/store/types.js.map +1 -0
  160. package/build/commonjs/types/index.js.map +1 -1
  161. package/build/commonjs/utils/index.js +8 -0
  162. package/build/commonjs/utils/index.js.map +1 -1
  163. package/build/commonjs/utils/isNotAndroid12.js +20 -0
  164. package/build/commonjs/utils/isNotAndroid12.js.map +1 -0
  165. package/build/module/Accordion/Accordion.js +111 -29
  166. package/build/module/Accordion/Accordion.js.map +1 -1
  167. package/build/module/Accordion/AccordionProps.js.map +1 -1
  168. package/build/module/Badge/Badge.js +5 -14
  169. package/build/module/Badge/Badge.js.map +1 -1
  170. package/build/module/Badge/BadgeProps.js.map +1 -1
  171. package/build/module/Button/Button.js +6 -3
  172. package/build/module/Button/Button.js.map +1 -1
  173. package/build/module/ButtonBase/ButtonBase.js +64 -49
  174. package/build/module/ButtonBase/ButtonBase.js.map +1 -1
  175. package/build/module/ButtonBase/ButtonBaseProps.js.map +1 -1
  176. package/build/module/Checkbox/CheckboxProps.js.map +1 -1
  177. package/build/module/Chip/Chip.js +11 -9
  178. package/build/module/Chip/Chip.js.map +1 -1
  179. package/build/module/Chip/ChipProps.js.map +1 -1
  180. package/build/module/CircularProgress/CircularProgress.js +25 -23
  181. package/build/module/CircularProgress/CircularProgress.js.map +1 -1
  182. package/build/module/Dialog/Dialog.js +109 -8
  183. package/build/module/Dialog/Dialog.js.map +1 -1
  184. package/build/module/Dialog/DialogProps.js.map +1 -1
  185. package/build/module/Divider/Divider.js +26 -18
  186. package/build/module/Divider/Divider.js.map +1 -1
  187. package/build/module/Divider/DividerProps.js.map +1 -1
  188. package/build/module/Image/Image.js +54 -12
  189. package/build/module/Image/Image.js.map +1 -1
  190. package/build/module/Image/ImageProps.js.map +1 -1
  191. package/build/module/Image/index.js.map +1 -1
  192. package/build/module/ImageCore/ImageCoreNative.js +31 -25
  193. package/build/module/ImageCore/ImageCoreNative.js.map +1 -1
  194. package/build/module/ImageCore/ImageCoreProps.js.map +1 -1
  195. package/build/module/ImageCore/ImageCoreWeb.js +19 -1
  196. package/build/module/ImageCore/ImageCoreWeb.js.map +1 -1
  197. package/build/module/ImageCore/ImageFileExtensionContext.js +5 -0
  198. package/build/module/ImageCore/ImageFileExtensionContext.js.map +1 -0
  199. package/build/module/ImageCore/ImageFileExtensionProvider.js +24 -0
  200. package/build/module/ImageCore/ImageFileExtensionProvider.js.map +1 -0
  201. package/build/module/ImageCore/index.js +2 -1
  202. package/build/module/ImageCore/index.js.map +1 -1
  203. package/build/module/ImageCore/index.native.js +2 -0
  204. package/build/module/ImageCore/index.native.js.map +1 -1
  205. package/build/module/Modal/AnimatedContainer/index.js +144 -0
  206. package/build/module/Modal/AnimatedContainer/index.js.map +1 -0
  207. package/build/module/Modal/Modal.js +43 -9
  208. package/build/module/Modal/Modal.js.map +1 -1
  209. package/build/module/Modal/ModalProps.js +5 -0
  210. package/build/module/Modal/ModalProps.js.map +1 -1
  211. package/build/module/Modal/index.js +1 -0
  212. package/build/module/Modal/index.js.map +1 -1
  213. package/build/module/Paper/Paper.js +1 -1
  214. package/build/module/Paper/Paper.js.map +1 -1
  215. package/build/module/Radio/Radio.js +9 -5
  216. package/build/module/Radio/Radio.js.map +1 -1
  217. package/build/module/Radio/RadioProps.js.map +1 -1
  218. package/build/module/Slide/Slide.js +39 -23
  219. package/build/module/Slide/Slide.js.map +1 -1
  220. package/build/module/Slide/SlideProps.js.map +1 -1
  221. package/build/module/Snackbar/Snackbar.js +25 -5
  222. package/build/module/Snackbar/Snackbar.js.map +1 -1
  223. package/build/module/Snackbar/SnackbarProps.js.map +1 -1
  224. package/build/module/SnackbarContent/SnackbarContent.js +21 -6
  225. package/build/module/SnackbarContent/SnackbarContent.js.map +1 -1
  226. package/build/module/SnackbarContent/SnackbarContentProps.js.map +1 -1
  227. package/build/module/SvgIcon/SvgIcon.js +1 -1
  228. package/build/module/SvgIcon/SvgIcon.js.map +1 -1
  229. package/build/module/Tab/Tab.js +63 -21
  230. package/build/module/Tab/Tab.js.map +1 -1
  231. package/build/module/Tab/TabIndicator.js +11 -7
  232. package/build/module/Tab/TabIndicator.js.map +1 -1
  233. package/build/module/Tab/TabProps.js.map +1 -1
  234. package/build/module/Tab/index.js.map +1 -1
  235. package/build/module/Tabs/IndexAwareTab.js +23 -0
  236. package/build/module/Tabs/IndexAwareTab.js.map +1 -0
  237. package/build/module/Tabs/InternalContext.js +7 -0
  238. package/build/module/Tabs/InternalContext.js.map +1 -0
  239. package/build/module/Tabs/ScrollableTabsView.js +22 -0
  240. package/build/module/Tabs/ScrollableTabsView.js.map +1 -0
  241. package/build/module/Tabs/TabIndicator.js +66 -25
  242. package/build/module/Tabs/TabIndicator.js.map +1 -1
  243. package/build/module/Tabs/TabIndicatorProps.js.map +1 -1
  244. package/build/module/Tabs/Tabs.js +109 -72
  245. package/build/module/Tabs/Tabs.js.map +1 -1
  246. package/build/module/Tabs/TabsProps.js.map +1 -1
  247. package/build/module/Tabs/index.js.map +1 -1
  248. package/build/module/Tabs/types.js +2 -0
  249. package/build/module/Tabs/types.js.map +1 -0
  250. package/build/module/Tabs/useIndexStore.js +25 -0
  251. package/build/module/Tabs/useIndexStore.js.map +1 -0
  252. package/build/module/Tabs/useScrollViewReaction.js +57 -0
  253. package/build/module/Tabs/useScrollViewReaction.js.map +1 -0
  254. package/build/module/Tabs/useTabCoordinates.js +21 -0
  255. package/build/module/Tabs/useTabCoordinates.js.map +1 -0
  256. package/build/module/Tabs/useTabInnerContentsWidth.js +21 -0
  257. package/build/module/Tabs/useTabInnerContentsWidth.js.map +1 -0
  258. package/build/module/Tabs/utils.js +9 -0
  259. package/build/module/Tabs/utils.js.map +1 -0
  260. package/build/module/TextField/InputLabel.js +7 -4
  261. package/build/module/TextField/InputLabel.js.map +1 -1
  262. package/build/module/TextField/OutlinedTextField.js +7 -3
  263. package/build/module/TextField/OutlinedTextField.js.map +1 -1
  264. package/build/module/TextField/TextField.js +13 -5
  265. package/build/module/TextField/TextField.js.map +1 -1
  266. package/build/module/TextField/TextFieldProps.js.map +1 -1
  267. package/build/module/Tooltip/Tooltip.js +48 -25
  268. package/build/module/Tooltip/Tooltip.js.map +1 -1
  269. package/build/module/Tooltip/TooltipProps.js.map +1 -1
  270. package/build/module/Typography/Typography.js +14 -5
  271. package/build/module/Typography/Typography.js.map +1 -1
  272. package/build/module/Typography/TypographyProps.js.map +1 -1
  273. package/build/module/animated/AnimatedPressable.js +2 -3
  274. package/build/module/animated/AnimatedPressable.js.map +1 -1
  275. package/build/module/hooks/index.js +4 -0
  276. package/build/module/hooks/index.js.map +1 -1
  277. package/build/module/hooks/useAnimatedValue.js +22 -0
  278. package/build/module/hooks/useAnimatedValue.js.map +1 -0
  279. package/build/module/hooks/useCollapsibleAppBar.js +42 -52
  280. package/build/module/hooks/useCollapsibleAppBar.js.map +1 -1
  281. package/build/module/hooks/useDebounce.js +25 -0
  282. package/build/module/hooks/useDebounce.js.map +1 -0
  283. package/build/module/hooks/useFadeInAppBar.js +23 -20
  284. package/build/module/hooks/useFadeInAppBar.js.map +1 -1
  285. package/build/module/hooks/useImperativeState.js +17 -0
  286. package/build/module/hooks/useImperativeState.js.map +1 -0
  287. package/build/module/hooks/useSyncAnimatedValue.js +28 -0
  288. package/build/module/hooks/useSyncAnimatedValue.js.map +1 -0
  289. package/build/module/hooks/useThrottle.js +3 -3
  290. package/build/module/hooks/useThrottle.js.map +1 -1
  291. package/build/module/hooks/useValidWindowDimensions/index.ios.js +15 -9
  292. package/build/module/hooks/useValidWindowDimensions/index.ios.js.map +1 -1
  293. package/build/module/index.js +2 -0
  294. package/build/module/index.js.map +1 -1
  295. package/build/module/internal/hooks/index.js +0 -1
  296. package/build/module/internal/hooks/index.js.map +1 -1
  297. package/build/module/internal/hooks/useHeight.js +3 -4
  298. package/build/module/internal/hooks/useHeight.js.map +1 -1
  299. package/build/module/internal/icons/Checkbox.js +1 -1
  300. package/build/module/internal/icons/Checkbox.js.map +1 -1
  301. package/build/module/internal/icons/CheckboxChecked.js +1 -1
  302. package/build/module/internal/icons/CheckboxChecked.js.map +1 -1
  303. package/build/module/internal/icons/ChevronDown.js +1 -1
  304. package/build/module/internal/icons/ChevronDown.js.map +1 -1
  305. package/build/module/internal/icons/ChevronLeft.js +1 -1
  306. package/build/module/internal/icons/ChevronLeft.js.map +1 -1
  307. package/build/module/internal/icons/ChevronRight.js +1 -1
  308. package/build/module/internal/icons/ChevronRight.js.map +1 -1
  309. package/build/module/internal/icons/Close.js +1 -1
  310. package/build/module/internal/icons/Close.js.map +1 -1
  311. package/build/module/internal/icons/Radio.js +1 -1
  312. package/build/module/internal/icons/Radio.js.map +1 -1
  313. package/build/module/internal/icons/RadioChecked.js +1 -1
  314. package/build/module/internal/icons/RadioChecked.js.map +1 -1
  315. package/build/module/store/MockStore.js +18 -0
  316. package/build/module/store/MockStore.js.map +1 -0
  317. package/build/module/store/SimpleStore.js +50 -0
  318. package/build/module/store/SimpleStore.js.map +1 -0
  319. package/build/module/store/index.js +3 -0
  320. package/build/module/store/index.js.map +1 -0
  321. package/build/module/store/types.js +2 -0
  322. package/build/module/store/types.js.map +1 -0
  323. package/build/module/types/index.js.map +1 -1
  324. package/build/module/utils/index.js +1 -0
  325. package/build/module/utils/index.js.map +1 -1
  326. package/build/module/utils/isNotAndroid12.js +6 -0
  327. package/build/module/utils/isNotAndroid12.js.map +1 -0
  328. package/build/typescript/Accordion/Accordion.d.ts +1 -0
  329. package/build/typescript/Accordion/AccordionProps.d.ts +14 -11
  330. package/build/typescript/AspectRatio/AspectRatioNative.d.ts +1 -0
  331. package/build/typescript/AspectRatio/AspectRatioWeb.d.ts +1 -0
  332. package/build/typescript/Avatar/Avatar.d.ts +1 -0
  333. package/build/typescript/Badge/Badge.d.ts +1 -0
  334. package/build/typescript/Badge/BadgeProps.d.ts +5 -0
  335. package/build/typescript/Button/Button.d.ts +1 -0
  336. package/build/typescript/ButtonBase/ButtonBase.d.ts +1 -0
  337. package/build/typescript/ButtonBase/ButtonBaseProps.d.ts +8 -0
  338. package/build/typescript/Card/Card.d.ts +1 -0
  339. package/build/typescript/CardActions/CardActions.d.ts +1 -0
  340. package/build/typescript/CardContent/CardContent.d.ts +1 -0
  341. package/build/typescript/CardMedia/CardMedia.d.ts +1 -0
  342. package/build/typescript/Checkbox/Checkbox.d.ts +1 -0
  343. package/build/typescript/Checkbox/CheckboxProps.d.ts +1 -1
  344. package/build/typescript/Chip/Chip.d.ts +1 -0
  345. package/build/typescript/Chip/ChipProps.d.ts +4 -0
  346. package/build/typescript/CircularProgress/CircularProgress.d.ts +3 -2
  347. package/build/typescript/Column/Column.d.ts +1 -0
  348. package/build/typescript/Dialog/Dialog.d.ts +1 -0
  349. package/build/typescript/Dialog/DialogProps.d.ts +10 -0
  350. package/build/typescript/DialogActions/DialogActions.d.ts +1 -0
  351. package/build/typescript/DialogContent/DialogContent.d.ts +1 -0
  352. package/build/typescript/DialogMedia/DialogMedia.d.ts +1 -0
  353. package/build/typescript/DialogTitle/DialogTitle.d.ts +1 -0
  354. package/build/typescript/Divider/Divider.d.ts +1 -0
  355. package/build/typescript/Divider/DividerProps.d.ts +22 -1
  356. package/build/typescript/Fab/Fab.d.ts +1 -0
  357. package/build/typescript/Flexbox/Flexbox.d.ts +1 -0
  358. package/build/typescript/IconButton/IconButton.d.ts +1 -0
  359. package/build/typescript/Image/Image.d.ts +1 -0
  360. package/build/typescript/Image/ImageProps.d.ts +30 -2
  361. package/build/typescript/Image/index.d.ts +1 -1
  362. package/build/typescript/ImageCore/ImageCoreNative.d.ts +1 -0
  363. package/build/typescript/ImageCore/ImageCoreProps.d.ts +5 -1
  364. package/build/typescript/ImageCore/ImageCoreWeb.d.ts +1 -0
  365. package/build/typescript/ImageCore/ImageFileExtensionContext.d.ts +3 -0
  366. package/build/typescript/ImageCore/ImageFileExtensionProvider.d.ts +13 -0
  367. package/build/typescript/ImageCore/index.d.ts +3 -1
  368. package/build/typescript/ImageCore/index.native.d.ts +2 -0
  369. package/build/typescript/Link/Link.d.ts +1 -0
  370. package/build/typescript/List/List.d.ts +1 -0
  371. package/build/typescript/ListItem/ListItem.d.ts +1 -0
  372. package/build/typescript/ListItemIcon/ListItemIcon.d.ts +1 -0
  373. package/build/typescript/ListItemSecondaryAction/ListItemSecondaryAction.d.ts +1 -0
  374. package/build/typescript/ListItemText/ListItemText.d.ts +1 -0
  375. package/build/typescript/ListSubheader/ListSubheader.d.ts +1 -0
  376. package/build/typescript/Menu/Menu.d.ts +1 -0
  377. package/build/typescript/MenuItem/MenuItem.d.ts +1 -0
  378. package/build/typescript/Modal/AnimatedContainer/index.d.ts +5 -0
  379. package/build/typescript/Modal/Modal.d.ts +1 -0
  380. package/build/typescript/Modal/ModalProps.d.ts +47 -0
  381. package/build/typescript/Modal/index.d.ts +2 -1
  382. package/build/typescript/Pagination/Pagination.d.ts +1 -0
  383. package/build/typescript/Portal/Portal.d.ts +1 -0
  384. package/build/typescript/Radio/Radio.d.ts +1 -0
  385. package/build/typescript/Radio/RadioProps.d.ts +13 -0
  386. package/build/typescript/RadioGroup/RadioGroup.d.ts +1 -0
  387. package/build/typescript/Row/Row.d.ts +1 -0
  388. package/build/typescript/Slide/Slide.d.ts +1 -0
  389. package/build/typescript/Slide/SlideProps.d.ts +2 -3
  390. package/build/typescript/Slider/Slider.d.ts +1 -1
  391. package/build/typescript/Snackbar/Snackbar.d.ts +1 -0
  392. package/build/typescript/Snackbar/SnackbarProps.d.ts +10 -3
  393. package/build/typescript/SnackbarContent/SnackbarContent.d.ts +1 -0
  394. package/build/typescript/SnackbarContent/SnackbarContentProps.d.ts +9 -0
  395. package/build/typescript/Spacer/Spacer.d.ts +1 -0
  396. package/build/typescript/SvgIcon/SvgIcon.d.ts +1 -0
  397. package/build/typescript/Switch/Switch.d.ts +1 -0
  398. package/build/typescript/Tab/Tab.d.ts +1 -0
  399. package/build/typescript/Tab/TabIndicator.d.ts +5 -1
  400. package/build/typescript/Tab/TabProps.d.ts +21 -2
  401. package/build/typescript/Tab/index.d.ts +1 -1
  402. package/build/typescript/TabBase/TabBase.d.ts +1 -0
  403. package/build/typescript/Tabs/IndexAwareTab.d.ts +8 -0
  404. package/build/typescript/Tabs/InternalContext.d.ts +7 -0
  405. package/build/typescript/Tabs/ScrollableTabsView.d.ts +8 -0
  406. package/build/typescript/Tabs/TabIndicator.d.ts +1 -0
  407. package/build/typescript/Tabs/TabIndicatorProps.d.ts +10 -5
  408. package/build/typescript/Tabs/Tabs.d.ts +4 -1
  409. package/build/typescript/Tabs/TabsProps.d.ts +37 -13
  410. package/build/typescript/Tabs/index.d.ts +1 -0
  411. package/build/typescript/Tabs/types.d.ts +9 -0
  412. package/build/typescript/Tabs/useIndexStore.d.ts +3 -0
  413. package/build/typescript/Tabs/useScrollViewReaction.d.ts +8 -0
  414. package/build/typescript/Tabs/useTabCoordinates.d.ts +6 -0
  415. package/build/typescript/Tabs/useTabInnerContentsWidth.d.ts +6 -0
  416. package/build/typescript/Tabs/utils.d.ts +3 -0
  417. package/build/typescript/TextField/InputLabel.d.ts +1 -0
  418. package/build/typescript/TextField/TextFieldProps.d.ts +3 -0
  419. package/build/typescript/Toolbar/Toolbar.d.ts +1 -0
  420. package/build/typescript/Tooltip/Tooltip.d.ts +1 -0
  421. package/build/typescript/Tooltip/TooltipProps.d.ts +26 -1
  422. package/build/typescript/Typography/TypographyProps.d.ts +22 -1
  423. package/build/typescript/animated/AnimatedPressable.d.ts +2 -2
  424. package/build/typescript/hooks/index.d.ts +5 -0
  425. package/build/typescript/hooks/useAnimatedValue.d.ts +2 -0
  426. package/build/typescript/hooks/useCollapsibleAppBar.d.ts +2 -0
  427. package/build/typescript/hooks/useDebounce.d.ts +1 -0
  428. package/build/typescript/hooks/useFadeInAppBar.d.ts +1 -0
  429. package/build/typescript/hooks/useImperativeState.d.ts +6 -0
  430. package/build/typescript/hooks/useSyncAnimatedValue.d.ts +6 -0
  431. package/build/typescript/hooks/useValidWindowDimensions/index.ios.d.ts +2 -1
  432. package/build/typescript/index.d.ts +2 -0
  433. package/build/typescript/internal/hooks/index.d.ts +0 -1
  434. package/build/typescript/internal/icons/Checkbox.d.ts +9 -7
  435. package/build/typescript/internal/icons/CheckboxChecked.d.ts +9 -7
  436. package/build/typescript/internal/icons/ChevronDown.d.ts +9 -7
  437. package/build/typescript/internal/icons/ChevronLeft.d.ts +9 -7
  438. package/build/typescript/internal/icons/ChevronRight.d.ts +9 -7
  439. package/build/typescript/internal/icons/CircularProgress.d.ts +1 -0
  440. package/build/typescript/internal/icons/Close.d.ts +9 -7
  441. package/build/typescript/internal/icons/Radio.d.ts +9 -7
  442. package/build/typescript/internal/icons/RadioChecked.d.ts +9 -7
  443. package/build/typescript/store/MockStore.d.ts +7 -0
  444. package/build/typescript/store/SimpleStore.d.ts +10 -0
  445. package/build/typescript/store/index.d.ts +3 -0
  446. package/build/typescript/store/types.d.ts +10 -0
  447. package/build/typescript/types/index.d.ts +6 -0
  448. package/build/typescript/utils/index.d.ts +1 -0
  449. package/build/typescript/utils/isNotAndroid12.d.ts +2 -0
  450. package/package.json +9 -9
  451. package/src/Accordion/Accordion.tsx +147 -51
  452. package/src/Accordion/AccordionProps.ts +15 -11
  453. package/src/Badge/Badge.tsx +6 -16
  454. package/src/Badge/BadgeProps.ts +6 -0
  455. package/src/Button/Button.tsx +8 -2
  456. package/src/ButtonBase/ButtonBase.tsx +79 -44
  457. package/src/ButtonBase/ButtonBaseProps.ts +10 -0
  458. package/src/Checkbox/CheckboxProps.ts +1 -1
  459. package/src/Chip/Chip.tsx +13 -9
  460. package/src/Chip/ChipProps.ts +5 -0
  461. package/src/CircularProgress/CircularProgress.tsx +41 -33
  462. package/src/Dialog/Dialog.tsx +136 -14
  463. package/src/Dialog/DialogProps.ts +12 -0
  464. package/src/Divider/Divider.tsx +23 -14
  465. package/src/Divider/DividerProps.ts +27 -1
  466. package/src/Image/Image.tsx +78 -16
  467. package/src/Image/ImageProps.ts +36 -2
  468. package/src/Image/index.ts +1 -1
  469. package/src/ImageCore/ImageCoreNative.tsx +29 -19
  470. package/src/ImageCore/ImageCoreProps.ts +6 -1
  471. package/src/ImageCore/ImageCoreWeb.tsx +22 -2
  472. package/src/ImageCore/ImageFileExtensionContext.ts +7 -0
  473. package/src/ImageCore/ImageFileExtensionProvider.tsx +33 -0
  474. package/src/ImageCore/index.native.ts +3 -1
  475. package/src/ImageCore/index.ts +4 -1
  476. package/src/Modal/AnimatedContainer/index.tsx +172 -0
  477. package/src/Modal/Modal.tsx +44 -12
  478. package/src/Modal/ModalProps.ts +59 -1
  479. package/src/Modal/index.ts +2 -1
  480. package/src/Paper/Paper.tsx +1 -1
  481. package/src/Radio/Radio.tsx +10 -7
  482. package/src/Radio/RadioProps.ts +16 -0
  483. package/src/Slide/Slide.tsx +33 -27
  484. package/src/Slide/SlideProps.ts +2 -3
  485. package/src/Snackbar/Snackbar.tsx +33 -7
  486. package/src/Snackbar/SnackbarProps.ts +19 -9
  487. package/src/SnackbarContent/SnackbarContent.tsx +42 -10
  488. package/src/SnackbarContent/SnackbarContentProps.ts +14 -3
  489. package/src/SvgIcon/SvgIcon.tsx +1 -1
  490. package/src/Tab/Tab.tsx +85 -28
  491. package/src/Tab/TabIndicator.tsx +17 -15
  492. package/src/Tab/TabProps.ts +24 -2
  493. package/src/Tab/index.ts +1 -1
  494. package/src/Tabs/IndexAwareTab.tsx +29 -0
  495. package/src/Tabs/InternalContext.ts +13 -0
  496. package/src/Tabs/ScrollableTabsView.tsx +28 -0
  497. package/src/Tabs/TabIndicator.tsx +74 -37
  498. package/src/Tabs/TabIndicatorProps.ts +12 -5
  499. package/src/Tabs/Tabs.tsx +139 -93
  500. package/src/Tabs/TabsProps.ts +43 -23
  501. package/src/Tabs/index.ts +2 -1
  502. package/src/Tabs/types.ts +18 -0
  503. package/src/Tabs/useIndexStore.ts +31 -0
  504. package/src/Tabs/useScrollViewReaction.ts +62 -0
  505. package/src/Tabs/useTabCoordinates.ts +25 -0
  506. package/src/Tabs/useTabInnerContentsWidth.ts +26 -0
  507. package/src/Tabs/utils.ts +14 -0
  508. package/src/TextField/InputLabel.tsx +6 -1
  509. package/src/TextField/OutlinedTextField.tsx +8 -2
  510. package/src/TextField/TextField.tsx +10 -4
  511. package/src/TextField/TextFieldProps.ts +4 -0
  512. package/src/Tooltip/Tooltip.tsx +57 -26
  513. package/src/Tooltip/TooltipProps.ts +26 -1
  514. package/src/Typography/Typography.tsx +12 -3
  515. package/src/Typography/TypographyProps.ts +30 -1
  516. package/src/animated/AnimatedPressable.tsx +1 -2
  517. package/src/hooks/index.ts +6 -0
  518. package/src/hooks/useAnimatedValue.ts +21 -0
  519. package/src/hooks/useCollapsibleAppBar.ts +64 -47
  520. package/src/hooks/useDebounce.ts +23 -0
  521. package/src/hooks/useFadeInAppBar.ts +23 -17
  522. package/src/hooks/useImperativeState.ts +24 -0
  523. package/src/hooks/useSyncAnimatedValue.ts +38 -0
  524. package/src/hooks/useThrottle.ts +3 -3
  525. package/src/hooks/useValidWindowDimensions/index.ios.ts +16 -10
  526. package/src/index.ts +4 -0
  527. package/src/internal/hooks/index.ts +0 -1
  528. package/src/internal/hooks/useHeight.ts +4 -5
  529. package/src/internal/icons/Checkbox.tsx +1 -1
  530. package/src/internal/icons/CheckboxChecked.tsx +1 -1
  531. package/src/internal/icons/ChevronDown.tsx +1 -1
  532. package/src/internal/icons/ChevronLeft.tsx +1 -1
  533. package/src/internal/icons/ChevronRight.tsx +1 -1
  534. package/src/internal/icons/Close.tsx +1 -1
  535. package/src/internal/icons/Radio.tsx +1 -1
  536. package/src/internal/icons/RadioChecked.tsx +1 -1
  537. package/src/store/MockStore.ts +21 -0
  538. package/src/store/SimpleStore.ts +50 -0
  539. package/src/store/index.ts +3 -0
  540. package/src/store/types.ts +12 -0
  541. package/src/types/index.ts +7 -0
  542. package/src/utils/index.ts +1 -0
  543. package/src/utils/isNotAndroid12.ts +7 -0
  544. package/build/commonjs/ButtonBase/ButtonBase.ios.js +0 -101
  545. package/build/commonjs/ButtonBase/ButtonBase.ios.js.map +0 -1
  546. package/build/commonjs/ButtonBase/useDisabledReaction/index.js +0 -21
  547. package/build/commonjs/ButtonBase/useDisabledReaction/index.js.map +0 -1
  548. package/build/commonjs/ButtonBase/useDisabledReaction/index.native.js +0 -9
  549. package/build/commonjs/ButtonBase/useDisabledReaction/index.native.js.map +0 -1
  550. package/build/commonjs/ImageCore/ImageCoreNative.ios.js +0 -60
  551. package/build/commonjs/ImageCore/ImageCoreNative.ios.js.map +0 -1
  552. package/build/commonjs/internal/hooks/useWidth.js +0 -29
  553. package/build/commonjs/internal/hooks/useWidth.js.map +0 -1
  554. package/build/module/ButtonBase/ButtonBase.ios.js +0 -82
  555. package/build/module/ButtonBase/ButtonBase.ios.js.map +0 -1
  556. package/build/module/ButtonBase/useDisabledReaction/index.js +0 -12
  557. package/build/module/ButtonBase/useDisabledReaction/index.js.map +0 -1
  558. package/build/module/ButtonBase/useDisabledReaction/index.native.js +0 -2
  559. package/build/module/ButtonBase/useDisabledReaction/index.native.js.map +0 -1
  560. package/build/module/ImageCore/ImageCoreNative.ios.js +0 -45
  561. package/build/module/ImageCore/ImageCoreNative.ios.js.map +0 -1
  562. package/build/module/internal/hooks/useWidth.js +0 -15
  563. package/build/module/internal/hooks/useWidth.js.map +0 -1
  564. package/build/typescript/ButtonBase/ButtonBase.ios.d.ts +0 -2
  565. package/build/typescript/ButtonBase/useDisabledReaction/index.d.ts +0 -2
  566. package/build/typescript/ButtonBase/useDisabledReaction/index.native.d.ts +0 -2
  567. package/build/typescript/ImageCore/ImageCoreNative.ios.d.ts +0 -2
  568. package/build/typescript/internal/hooks/useWidth.d.ts +0 -2
  569. package/src/ButtonBase/ButtonBase.ios.tsx +0 -95
  570. package/src/ButtonBase/useDisabledReaction/index.native.ts +0 -4
  571. package/src/ButtonBase/useDisabledReaction/index.ts +0 -16
  572. package/src/ImageCore/ImageCoreNative.ios.tsx +0 -46
  573. package/src/internal/hooks/useWidth.ts +0 -17
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","useRef","Animated","ensureFiniteNumber","value","fallback","Number","isFinite","useAnimatedValue","initialValue","__DEV__","console","warn","initialAnimatedValue","Value","current"],"sources":["useAnimatedValue.ts"],"sourcesContent":["import { useMemo, useRef } from 'react';\nimport { Animated } from 'react-native';\n\nfunction ensureFiniteNumber(value: any, fallback: number = 0): number {\n return Number.isFinite(value) ? value : fallback;\n}\n\nexport default function useAnimatedValue(initialValue: number = 0): Animated.Value {\n if (__DEV__) {\n if (!Number.isFinite(initialValue)) {\n console.warn(`Initial value: ${initialValue} must be numeric.`);\n }\n }\n\n const initialAnimatedValue = useMemo<Animated.Value>(\n () => new Animated.Value(ensureFiniteNumber(initialValue)),\n [],\n );\n\n return useRef<Animated.Value>(initialAnimatedValue).current;\n};\n"],"mappings":"AAAA,SAASA,OAAT,EAAkBC,MAAlB,QAAgC,OAAhC;AACA,SAASC,QAAT,QAAyB,cAAzB;;AAEA,SAASC,kBAAT,CAA4BC,KAA5B,EAAsE;EAAA,IAA9BC,QAA8B,uEAAX,CAAW;EAClE,OAAOC,MAAM,CAACC,QAAP,CAAgBH,KAAhB,IAAyBA,KAAzB,GAAiCC,QAAxC;AACH;;AAED,eAAe,SAASG,gBAAT,GAAoE;EAAA,IAA1CC,YAA0C,uEAAnB,CAAmB;;EAC/E,IAAIC,OAAJ,EAAa;IACT,IAAI,CAACJ,MAAM,CAACC,QAAP,CAAgBE,YAAhB,CAAL,EAAoC;MAChCE,OAAO,CAACC,IAAR,CAAc,kBAAiBH,YAAa,mBAA5C;IACH;EACJ;;EAED,MAAMI,oBAAoB,GAAGb,OAAO,CAChC,MAAM,IAAIE,QAAQ,CAACY,KAAb,CAAmBX,kBAAkB,CAACM,YAAD,CAArC,CAD0B,EAEhC,EAFgC,CAApC;EAKA,OAAOR,MAAM,CAAiBY,oBAAjB,CAAN,CAA6CE,OAApD;AACH;AAAA"}
@@ -1,19 +1,29 @@
1
- import React from 'react';
2
- import { Keyboard, Platform } from 'react-native';
1
+ import { useCallback, useRef } from 'react';
2
+ import { Keyboard, Platform, StyleSheet } from 'react-native';
3
3
  import { runOnJS, useAnimatedScrollHandler, useAnimatedStyle, useDerivedValue, useSharedValue, withTiming } from 'react-native-reanimated';
4
4
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
5
+ import { useTheme } from '@fountain-ui/styles';
5
6
  import { useHeight } from '../internal/hooks';
6
- import useElevationStyle from './useElevationStyle';
7
7
  import useAppbarStyles from './useAppbarStyles';
8
8
  const defaultOptions = {
9
- keyboardDismissMode: 'none'
9
+ keyboardDismissMode: 'none',
10
+ dividerExposureMode: 'overlapped',
11
+ supportsReverseScroll: true
10
12
  };
11
- const ANIMATION_DURATION_MILLIS = 100;
13
+ const ANIMATION_CONFIG = {
14
+ duration: 100
15
+ };
16
+ const TRANSPARENT = '#FFFFFF00';
12
17
  const SUPPORTS_DRAG_DETECTION = Platform.OS !== 'web';
18
+
19
+ const dismissKeyboard = () => Keyboard.dismiss();
20
+
13
21
  export default function useCollapsibleAppBar() {
14
22
  let userOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultOptions;
15
23
  const {
16
- keyboardDismissMode
24
+ keyboardDismissMode,
25
+ dividerExposureMode,
26
+ supportsReverseScroll
17
27
  } = { ...defaultOptions,
18
28
  ...userOptions
19
29
  };
@@ -21,33 +31,25 @@ export default function useCollapsibleAppBar() {
21
31
  const safeAreaInsets = useSafeAreaInsets();
22
32
  const [appBarHeight, onAppBarLayout] = useHeight();
23
33
  const [collapsibleToolbarHeight, onCollapsibleToolbarLayout] = useHeight();
24
- const maxTranslateY = useDerivedValue(() => -collapsibleToolbarHeight);
34
+ const maxTranslateY = useDerivedValue(() => -collapsibleToolbarHeight, [collapsibleToolbarHeight]);
25
35
  const translateY = useSharedValue(0);
26
36
  const lastTranslateY = useSharedValue(0);
27
37
  const lastOffsetY = useSharedValue(0);
28
38
  const overlapped = useSharedValue(false);
29
- const elevationStyle = useElevationStyle(4);
39
+ const theme = useTheme();
30
40
  const animatedStyle = useAnimatedStyle(() => {
31
- return Platform.OS === 'web' ? {
32
- transform: [{
33
- translateY: translateY.value
34
- }],
35
- boxShadow: overlapped.value ? elevationStyle === null || elevationStyle === void 0 ? void 0 : elevationStyle.boxShadow : 0
36
- } : {
37
- transform: [{
38
- translateY: translateY.value
39
- }],
40
- elevation: overlapped.value ? elevationStyle === null || elevationStyle === void 0 ? void 0 : elevationStyle.elevation : 0,
41
- shadowColor: elevationStyle === null || elevationStyle === void 0 ? void 0 : elevationStyle.shadowColor,
42
- shadowOffset: elevationStyle === null || elevationStyle === void 0 ? void 0 : elevationStyle.shadowOffset,
43
- shadowRadius: elevationStyle === null || elevationStyle === void 0 ? void 0 : elevationStyle.shadowRadius,
44
- shadowOpacity: overlapped.value ? elevationStyle === null || elevationStyle === void 0 ? void 0 : elevationStyle.shadowOpacity : 0
41
+ const transform = [{
42
+ translateY: translateY.value
43
+ }];
44
+ return {
45
+ transform,
46
+ borderColor: dividerExposureMode === 'always' || overlapped.value ? theme.palette.divider : TRANSPARENT,
47
+ borderBottomWidth: StyleSheet.hairlineWidth
45
48
  };
46
- });
47
- const indexRef = React.useRef(0);
48
- const offsetsRef = React.useRef([]);
49
-
50
- const onScrollViewChanged = nextIndex => {
49
+ }, [theme, dividerExposureMode]);
50
+ const indexRef = useRef(0);
51
+ const offsetsRef = useRef([]);
52
+ const onScrollViewChanged = useCallback(nextIndex => {
51
53
  const prevIndex = indexRef.current;
52
54
 
53
55
  if (prevIndex === nextIndex) {
@@ -62,16 +64,13 @@ export default function useCollapsibleAppBar() {
62
64
  overlapped.value = savedOffsetY > 0; // If next ScrollView's offset is too short, expand app bar.
63
65
 
64
66
  if (translateY.value < 0 && savedOffsetY < appBarHeight) {
65
- translateY.value = withTiming(0, {
66
- duration: ANIMATION_DURATION_MILLIS
67
- });
67
+ translateY.value = withTiming(0, ANIMATION_CONFIG);
68
68
  }
69
- };
70
-
69
+ }, [appBarHeight]);
71
70
  const scrollHandler = useAnimatedScrollHandler({
72
71
  onBeginDrag: () => {
73
72
  if (keyboardDismissMode === 'on-drag') {
74
- runOnJS(Keyboard.dismiss)();
73
+ runOnJS(dismissKeyboard)();
75
74
  }
76
75
 
77
76
  lastTranslateY.value = translateY.value;
@@ -81,7 +80,6 @@ export default function useCollapsibleAppBar() {
81
80
  },
82
81
  onScroll: event => {
83
82
  const offsetY = event.contentOffset.y;
84
- const ty = translateY.value;
85
83
  const maxTy = maxTranslateY.value;
86
84
 
87
85
  if (SUPPORTS_DRAG_DETECTION) {
@@ -89,20 +87,14 @@ export default function useCollapsibleAppBar() {
89
87
  translateY.value = offsetY <= 0 ? 0 : Math.min(Math.max(lastTranslateY.value - dy, maxTy), 0);
90
88
  overlapped.value = offsetY + translateY.value > 0;
91
89
  } else {
92
- if (offsetY > -maxTy) {
93
- if (ty === 0) {
94
- translateY.value = withTiming(Math.min(Math.max(-offsetY, maxTy), 0), {
95
- duration: ANIMATION_DURATION_MILLIS
96
- });
97
- }
98
- } else {
99
- if (ty === maxTy) {
100
- translateY.value = withTiming(0, {
101
- duration: ANIMATION_DURATION_MILLIS
102
- });
103
- }
104
- }
105
-
90
+ const minOffsetY = -maxTy;
91
+ const maxOffsetY = event.contentSize.height - event.layoutMeasurement.height;
92
+ const safeOffsetY = Math.min(Math.max(offsetY, minOffsetY), maxOffsetY);
93
+ const safeLastOffsetY = Math.min(Math.max(lastOffsetY.value, minOffsetY), maxOffsetY);
94
+ const dy = safeOffsetY - safeLastOffsetY;
95
+ const newTranslateY = supportsReverseScroll ? dy === 0 ? lastTranslateY.value : dy > 0 ? maxTy : 0 : safeLastOffsetY === minOffsetY ? 0 : maxTy;
96
+ translateY.value = withTiming(newTranslateY, ANIMATION_CONFIG);
97
+ lastTranslateY.value = newTranslateY;
106
98
  overlapped.value = offsetY > 0;
107
99
  lastOffsetY.value = offsetY;
108
100
  }
@@ -123,11 +115,9 @@ export default function useCollapsibleAppBar() {
123
115
  const threshold = maxTy * 0.5;
124
116
  const nextTranslateY = ty > threshold || offsetY < appBarHeight ? 0 : maxTy;
125
117
  overlapped.value = offsetY + nextTranslateY > 0;
126
- translateY.value = withTiming(nextTranslateY, {
127
- duration: ANIMATION_DURATION_MILLIS
128
- });
118
+ translateY.value = withTiming(nextTranslateY, ANIMATION_CONFIG);
129
119
  }
130
- });
120
+ }, [keyboardDismissMode, appBarHeight]);
131
121
  const hasCollapsible = collapsibleToolbarHeight > 0;
132
122
  const appBarStyle = [animatedStyle, {
133
123
  paddingTop: safeAreaInsets.top
@@ -1 +1 @@
1
- {"version":3,"names":["React","Keyboard","Platform","runOnJS","useAnimatedScrollHandler","useAnimatedStyle","useDerivedValue","useSharedValue","withTiming","useSafeAreaInsets","useHeight","useElevationStyle","useAppbarStyles","defaultOptions","keyboardDismissMode","ANIMATION_DURATION_MILLIS","SUPPORTS_DRAG_DETECTION","OS","useCollapsibleAppBar","userOptions","styles","safeAreaInsets","appBarHeight","onAppBarLayout","collapsibleToolbarHeight","onCollapsibleToolbarLayout","maxTranslateY","translateY","lastTranslateY","lastOffsetY","overlapped","elevationStyle","animatedStyle","transform","value","boxShadow","elevation","shadowColor","shadowOffset","shadowRadius","shadowOpacity","indexRef","useRef","offsetsRef","onScrollViewChanged","nextIndex","prevIndex","current","savedOffsetY","duration","scrollHandler","onBeginDrag","dismiss","onMomentumBegin","onScroll","event","offsetY","contentOffset","y","ty","maxTy","dy","Math","min","max","onEndDrag","onMomentumEnd","threshold","nextTranslateY","hasCollapsible","appBarStyle","paddingTop","top","floating","undefined","scrollContentInsets"],"sources":["useCollapsibleAppBar.ts"],"sourcesContent":["import React from 'react';\nimport { Falsy, Keyboard, Platform, RegisteredStyle, ScrollViewProps, ViewProps, ViewStyle } from 'react-native';\nimport {\n runOnJS,\n useAnimatedScrollHandler,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n withTiming,\n} from 'react-native-reanimated';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { useHeight } from '../internal/hooks';\nimport useElevationStyle from './useElevationStyle';\nimport useAppbarStyles from './useAppbarStyles';\n\ntype WebOnlyStyle = { boxShadow: any };\n\ntype ViewStyleProp = Array<ViewStyle | RegisteredStyle<ViewStyle> | WebOnlyStyle | Falsy>;\n\ntype OnScroll = ScrollViewProps['onScroll'];\n\ntype OnLayoutCallback = ViewProps['onLayout'];\n\nexport interface ContentInsets {\n top?: number;\n bottom?: number;\n left?: number;\n right?: number;\n}\n\nexport interface Options {\n keyboardDismissMode?: 'none' | 'on-drag';\n}\n\nexport interface CollapsibleAppBar {\n appBarStyle: ViewStyleProp;\n onAppBarLayout: OnLayoutCallback;\n onCollapsibleToolbarLayout: OnLayoutCallback;\n onScroll: OnScroll;\n onScrollViewChanged: (index: number) => void;\n scrollContentInsets: ContentInsets;\n}\n\nconst defaultOptions: Required<Options> = {\n keyboardDismissMode: 'none',\n};\n\nconst ANIMATION_DURATION_MILLIS = 100;\n\nconst SUPPORTS_DRAG_DETECTION = Platform.OS !== 'web';\n\nexport default function useCollapsibleAppBar(userOptions: Options = defaultOptions): CollapsibleAppBar {\n const { keyboardDismissMode }: Required<Options> = {\n ...defaultOptions,\n ...userOptions,\n };\n\n const styles = useAppbarStyles();\n\n const safeAreaInsets = useSafeAreaInsets();\n\n const [appBarHeight, onAppBarLayout] = useHeight();\n const [collapsibleToolbarHeight, onCollapsibleToolbarLayout] = useHeight();\n\n const maxTranslateY = useDerivedValue(() => -collapsibleToolbarHeight);\n\n const translateY = useSharedValue<number>(0);\n const lastTranslateY = useSharedValue<number>(0);\n const lastOffsetY = useSharedValue<number>(0);\n const overlapped = useSharedValue<boolean>(false);\n\n const elevationStyle = useElevationStyle(4);\n const animatedStyle = useAnimatedStyle(() => {\n return Platform.OS === 'web' ? ({\n transform: [{ translateY: translateY.value }],\n boxShadow: overlapped.value ? elevationStyle?.boxShadow : 0,\n }) : ({\n transform: [{ translateY: translateY.value }],\n elevation: overlapped.value ? elevationStyle?.elevation : 0,\n shadowColor: elevationStyle?.shadowColor,\n shadowOffset: elevationStyle?.shadowOffset,\n shadowRadius: elevationStyle?.shadowRadius,\n shadowOpacity: overlapped.value ? elevationStyle?.shadowOpacity : 0,\n });\n });\n\n const indexRef = React.useRef<number>(0);\n const offsetsRef = React.useRef<Array<number>>([]);\n\n const onScrollViewChanged = (nextIndex: number) => {\n const prevIndex = indexRef.current;\n if (prevIndex === nextIndex) {\n return;\n }\n\n offsetsRef.current[prevIndex] = lastOffsetY.value;\n\n const savedOffsetY = offsetsRef.current[nextIndex] ?? 0;\n lastOffsetY.value = savedOffsetY;\n\n indexRef.current = nextIndex;\n\n // Determine whether to overlap every time index is changed.\n overlapped.value = savedOffsetY > 0;\n\n // If next ScrollView's offset is too short, expand app bar.\n if (translateY.value < 0 && savedOffsetY < appBarHeight) {\n translateY.value = withTiming(0, {\n duration: ANIMATION_DURATION_MILLIS,\n });\n }\n };\n\n const scrollHandler = useAnimatedScrollHandler({\n onBeginDrag: () => {\n if (keyboardDismissMode === 'on-drag') {\n runOnJS(Keyboard.dismiss)();\n }\n lastTranslateY.value = translateY.value;\n },\n onMomentumBegin: () => {\n lastTranslateY.value = translateY.value;\n },\n onScroll: (event) => {\n const offsetY = event.contentOffset.y;\n\n const ty = translateY.value;\n const maxTy = maxTranslateY.value;\n\n if (SUPPORTS_DRAG_DETECTION) {\n const dy = offsetY - lastOffsetY.value;\n\n translateY.value = offsetY <= 0 ? 0 : Math.min(Math.max(lastTranslateY.value - dy, maxTy), 0);\n\n overlapped.value = offsetY + translateY.value > 0;\n } else {\n if (offsetY > -maxTy) {\n if (ty === 0) {\n translateY.value = withTiming(Math.min(Math.max(-offsetY, maxTy), 0), {\n duration: ANIMATION_DURATION_MILLIS,\n });\n }\n } else {\n if (ty === maxTy) {\n translateY.value = withTiming(0, {\n duration: ANIMATION_DURATION_MILLIS,\n });\n }\n }\n\n overlapped.value = offsetY > 0;\n\n lastOffsetY.value = offsetY;\n }\n },\n onEndDrag: (event) => {\n lastOffsetY.value = event.contentOffset.y;\n },\n onMomentumEnd: (event) => {\n const offsetY = event.contentOffset.y;\n\n lastOffsetY.value = offsetY;\n\n const ty = translateY.value;\n const maxTy = maxTranslateY.value;\n\n // If toolbar is already positioned on edge, do nothing.\n if (ty <= maxTy || ty >= 0) {\n return;\n }\n\n const threshold = maxTy * 0.5;\n\n const nextTranslateY = (ty > threshold || offsetY < appBarHeight) ? 0 : maxTy;\n\n overlapped.value = offsetY + nextTranslateY > 0;\n\n translateY.value = withTiming(nextTranslateY, {\n duration: ANIMATION_DURATION_MILLIS,\n });\n },\n });\n\n const hasCollapsible = collapsibleToolbarHeight > 0;\n\n const appBarStyle = [\n animatedStyle,\n { paddingTop: safeAreaInsets.top },\n hasCollapsible ? styles.floating : undefined,\n ];\n\n return {\n appBarStyle,\n onAppBarLayout,\n onCollapsibleToolbarLayout,\n onScroll: scrollHandler,\n onScrollViewChanged,\n scrollContentInsets: { top: hasCollapsible ? appBarHeight : 0 },\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["useCallback","useRef","Keyboard","Platform","StyleSheet","runOnJS","useAnimatedScrollHandler","useAnimatedStyle","useDerivedValue","useSharedValue","withTiming","useSafeAreaInsets","useTheme","useHeight","useAppbarStyles","defaultOptions","keyboardDismissMode","dividerExposureMode","supportsReverseScroll","ANIMATION_CONFIG","duration","TRANSPARENT","SUPPORTS_DRAG_DETECTION","OS","dismissKeyboard","dismiss","useCollapsibleAppBar","userOptions","styles","safeAreaInsets","appBarHeight","onAppBarLayout","collapsibleToolbarHeight","onCollapsibleToolbarLayout","maxTranslateY","translateY","lastTranslateY","lastOffsetY","overlapped","theme","animatedStyle","transform","value","borderColor","palette","divider","borderBottomWidth","hairlineWidth","indexRef","offsetsRef","onScrollViewChanged","nextIndex","prevIndex","current","savedOffsetY","scrollHandler","onBeginDrag","onMomentumBegin","onScroll","event","offsetY","contentOffset","y","maxTy","dy","Math","min","max","minOffsetY","maxOffsetY","contentSize","height","layoutMeasurement","safeOffsetY","safeLastOffsetY","newTranslateY","onEndDrag","onMomentumEnd","ty","threshold","nextTranslateY","hasCollapsible","appBarStyle","paddingTop","top","floating","undefined","scrollContentInsets"],"sources":["useCollapsibleAppBar.ts"],"sourcesContent":["import { useCallback, useRef } from 'react';\nimport {\n Falsy,\n Keyboard,\n Platform,\n RegisteredStyle,\n ScrollViewProps,\n StyleSheet,\n ViewProps,\n ViewStyle,\n} from 'react-native';\nimport type { WithTimingConfig } from 'react-native-reanimated';\nimport {\n runOnJS,\n useAnimatedScrollHandler,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n withTiming,\n} from 'react-native-reanimated';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { useTheme } from '@fountain-ui/styles';\nimport { useHeight } from '../internal/hooks';\nimport useAppbarStyles from './useAppbarStyles';\n\ntype WebOnlyStyle = { boxShadow: any };\n\ntype ViewStyleProp = Array<ViewStyle | RegisteredStyle<ViewStyle> | WebOnlyStyle | Falsy>;\n\ntype OnScroll = ScrollViewProps['onScroll'];\n\ntype OnLayoutCallback = ViewProps['onLayout'];\n\nexport interface ContentInsets {\n top?: number;\n bottom?: number;\n left?: number;\n right?: number;\n}\n\nexport interface Options {\n keyboardDismissMode?: 'none' | 'on-drag';\n dividerExposureMode?: 'always' | 'overlapped';\n supportsReverseScroll?: boolean;\n}\n\nexport interface CollapsibleAppBar {\n appBarStyle: ViewStyleProp;\n onAppBarLayout: OnLayoutCallback;\n onCollapsibleToolbarLayout: OnLayoutCallback;\n onScroll: OnScroll;\n onScrollViewChanged: (index: number) => void;\n scrollContentInsets: ContentInsets;\n}\n\nconst defaultOptions: Required<Options> = {\n keyboardDismissMode: 'none',\n dividerExposureMode: 'overlapped',\n supportsReverseScroll: true,\n};\n\nconst ANIMATION_CONFIG: Readonly<WithTimingConfig> = { duration: 100 };\nconst TRANSPARENT = '#FFFFFF00';\n\nconst SUPPORTS_DRAG_DETECTION = Platform.OS !== 'web';\nconst dismissKeyboard = () => Keyboard.dismiss();\n\nexport default function useCollapsibleAppBar(userOptions: Options = defaultOptions): CollapsibleAppBar {\n const { keyboardDismissMode, dividerExposureMode, supportsReverseScroll }: Required<Options> = {\n ...defaultOptions,\n ...userOptions,\n };\n\n const styles = useAppbarStyles();\n\n const safeAreaInsets = useSafeAreaInsets();\n\n const [appBarHeight, onAppBarLayout] = useHeight();\n const [collapsibleToolbarHeight, onCollapsibleToolbarLayout] = useHeight();\n\n const maxTranslateY = useDerivedValue(() => -collapsibleToolbarHeight, [collapsibleToolbarHeight]);\n\n const translateY = useSharedValue<number>(0);\n const lastTranslateY = useSharedValue<number>(0);\n const lastOffsetY = useSharedValue<number>(0);\n const overlapped = useSharedValue<boolean>(false);\n\n const theme = useTheme();\n\n const animatedStyle = useAnimatedStyle(() => {\n const transform = [{ translateY: translateY.value }];\n\n return {\n transform,\n borderColor: dividerExposureMode === 'always' || overlapped.value ? theme.palette.divider : TRANSPARENT,\n borderBottomWidth: StyleSheet.hairlineWidth,\n };\n }, [\n theme,\n dividerExposureMode,\n ]);\n\n const indexRef = useRef<number>(0);\n const offsetsRef = useRef<Array<number>>([]);\n\n const onScrollViewChanged = useCallback((nextIndex: number) => {\n const prevIndex = indexRef.current;\n if (prevIndex === nextIndex) {\n return;\n }\n\n offsetsRef.current[prevIndex] = lastOffsetY.value;\n\n const savedOffsetY = offsetsRef.current[nextIndex] ?? 0;\n lastOffsetY.value = savedOffsetY;\n\n indexRef.current = nextIndex;\n\n // Determine whether to overlap every time index is changed.\n overlapped.value = savedOffsetY > 0;\n\n // If next ScrollView's offset is too short, expand app bar.\n if (translateY.value < 0 && savedOffsetY < appBarHeight) {\n translateY.value = withTiming(0, ANIMATION_CONFIG);\n }\n }, [appBarHeight]);\n\n const scrollHandler = useAnimatedScrollHandler({\n onBeginDrag: () => {\n if (keyboardDismissMode === 'on-drag') {\n runOnJS(dismissKeyboard)();\n }\n lastTranslateY.value = translateY.value;\n },\n onMomentumBegin: () => {\n lastTranslateY.value = translateY.value;\n },\n onScroll: (event) => {\n const offsetY = event.contentOffset.y;\n\n const maxTy = maxTranslateY.value;\n\n if (SUPPORTS_DRAG_DETECTION) {\n const dy = offsetY - lastOffsetY.value;\n\n translateY.value = offsetY <= 0 ? 0 : Math.min(Math.max(lastTranslateY.value - dy, maxTy), 0);\n\n overlapped.value = offsetY + translateY.value > 0;\n } else {\n const minOffsetY = -maxTy;\n const maxOffsetY = event.contentSize.height - event.layoutMeasurement.height;\n\n const safeOffsetY = Math.min(Math.max(offsetY, minOffsetY), maxOffsetY);\n const safeLastOffsetY = Math.min(Math.max(lastOffsetY.value, minOffsetY), maxOffsetY);\n const dy = safeOffsetY - safeLastOffsetY;\n\n const newTranslateY = supportsReverseScroll\n ? dy === 0\n ? lastTranslateY.value\n : dy > 0\n ? maxTy\n : 0\n : safeLastOffsetY === minOffsetY\n ? 0\n : maxTy;\n\n translateY.value = withTiming(newTranslateY, ANIMATION_CONFIG);\n lastTranslateY.value = newTranslateY;\n\n overlapped.value = offsetY > 0;\n\n lastOffsetY.value = offsetY;\n }\n },\n onEndDrag: (event) => {\n lastOffsetY.value = event.contentOffset.y;\n },\n onMomentumEnd: (event) => {\n const offsetY = event.contentOffset.y;\n\n lastOffsetY.value = offsetY;\n\n const ty = translateY.value;\n const maxTy = maxTranslateY.value;\n\n // If toolbar is already positioned on edge, do nothing.\n if (ty <= maxTy || ty >= 0) {\n return;\n }\n\n const threshold = maxTy * 0.5;\n\n const nextTranslateY = (ty > threshold || offsetY < appBarHeight) ? 0 : maxTy;\n\n overlapped.value = offsetY + nextTranslateY > 0;\n\n translateY.value = withTiming(nextTranslateY, ANIMATION_CONFIG);\n },\n }, [keyboardDismissMode, appBarHeight]);\n\n const hasCollapsible = collapsibleToolbarHeight > 0;\n\n const appBarStyle = [\n animatedStyle,\n { paddingTop: safeAreaInsets.top },\n hasCollapsible ? styles.floating : undefined,\n ];\n\n return {\n appBarStyle,\n onAppBarLayout,\n onCollapsibleToolbarLayout,\n onScroll: scrollHandler,\n onScrollViewChanged,\n scrollContentInsets: { top: hasCollapsible ? appBarHeight : 0 },\n };\n};\n"],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import { useCallback, useEffect, useRef } from 'react';
2
+ export default function useDebounce(callback, debounceMillis) {
3
+ const debounceTimeout = useRef(null);
4
+ useEffect(() => {
5
+ return () => {
6
+ debounceTimeout.current && clearTimeout(debounceTimeout.current);
7
+ };
8
+ }, []);
9
+ return useCallback(function () {
10
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
11
+ args[_key] = arguments[_key];
12
+ }
13
+
14
+ if (debounceTimeout.current) {
15
+ clearTimeout(debounceTimeout.current);
16
+ }
17
+
18
+ if (callback) {
19
+ debounceTimeout.current = setTimeout(() => {
20
+ callback(...args);
21
+ }, debounceMillis);
22
+ }
23
+ }, [debounceMillis, callback]);
24
+ }
25
+ //# sourceMappingURL=useDebounce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useEffect","useRef","useDebounce","callback","debounceMillis","debounceTimeout","current","clearTimeout","args","setTimeout"],"sources":["useDebounce.ts"],"sourcesContent":["import { useCallback, useEffect, useRef } from 'react';\n\nexport default function useDebounce(callback: (args?: any) => void, debounceMillis: number) {\n const debounceTimeout = useRef<NodeJS.Timeout | null>(null);\n\n useEffect(() => {\n return () => {\n debounceTimeout.current && clearTimeout(debounceTimeout.current);\n };\n }, []);\n\n return useCallback((...args: any[]) => {\n if (debounceTimeout.current) {\n clearTimeout(debounceTimeout.current);\n }\n\n if (callback) {\n debounceTimeout.current = setTimeout(() => {\n callback(...args);\n }, debounceMillis);\n }\n }, [debounceMillis, callback]);\n}"],"mappings":"AAAA,SAASA,WAAT,EAAsBC,SAAtB,EAAiCC,MAAjC,QAA+C,OAA/C;AAEA,eAAe,SAASC,WAAT,CAAqBC,QAArB,EAAqDC,cAArD,EAA6E;EACxF,MAAMC,eAAe,GAAGJ,MAAM,CAAwB,IAAxB,CAA9B;EAEAD,SAAS,CAAC,MAAM;IACZ,OAAO,MAAM;MACTK,eAAe,CAACC,OAAhB,IAA2BC,YAAY,CAACF,eAAe,CAACC,OAAjB,CAAvC;IACH,CAFD;EAGH,CAJQ,EAIN,EAJM,CAAT;EAMA,OAAOP,WAAW,CAAC,YAAoB;IAAA,kCAAhBS,IAAgB;MAAhBA,IAAgB;IAAA;;IACnC,IAAIH,eAAe,CAACC,OAApB,EAA6B;MACzBC,YAAY,CAACF,eAAe,CAACC,OAAjB,CAAZ;IACH;;IAED,IAAIH,QAAJ,EAAc;MACVE,eAAe,CAACC,OAAhB,GAA0BG,UAAU,CAAC,MAAM;QACvCN,QAAQ,CAAC,GAAGK,IAAJ,CAAR;MACH,CAFmC,EAEjCJ,cAFiC,CAApC;IAGH;EACJ,CAViB,EAUf,CAACA,cAAD,EAAiBD,QAAjB,CAVe,CAAlB;AAWH"}
@@ -1,5 +1,5 @@
1
- import React from 'react';
2
- import { Keyboard, Platform } from 'react-native';
1
+ import { useMemo } from 'react';
2
+ import { Keyboard, StyleSheet } from 'react-native';
3
3
  import { runOnJS, useAnimatedScrollHandler, useAnimatedStyle, useSharedValue } from 'react-native-reanimated';
4
4
  import { useSafeAreaInsets } from 'react-native-safe-area-context';
5
5
  import { rgb } from '@fountain-ui/utils';
@@ -12,10 +12,9 @@ const defaultOptions = {
12
12
  floating: true,
13
13
  keyboardDismissMode: 'none'
14
14
  };
15
- const shadowOffset = Platform.OS === 'ios' ? {
16
- width: 0,
17
- height: 3
18
- } : undefined;
15
+
16
+ const dismissKeyboard = () => Keyboard.dismiss();
17
+
19
18
  export default function useFadeInAppBar() {
20
19
  let userOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultOptions;
21
20
  const {
@@ -30,35 +29,38 @@ export default function useFadeInAppBar() {
30
29
  const styles = useAppbarStyles();
31
30
  const safeAreaInsets = useSafeAreaInsets();
32
31
  const [appBarHeight, onAppBarLayout] = useHeight();
33
- const [fromOffsetY, toOffsetY] = React.useMemo(() => {
32
+ const [fromOffsetY, toOffsetY] = useMemo(() => {
34
33
  const endY = typeof fadeInEndY === 'function' ? fadeInEndY(appBarHeight) : fadeInEndY;
35
34
  const beginY = typeof fadeInBeginY === 'function' ? fadeInBeginY(endY, appBarHeight) : fadeInBeginY;
36
35
  return [beginY, endY];
37
36
  }, [fadeInBeginY, fadeInBeginY, appBarHeight]);
37
+ const scrollY = useSharedValue(0);
38
38
  const dy = useSharedValue(0);
39
39
  const lastOffsetY = useSharedValue(0);
40
40
  const normalized = useSharedValue(0);
41
- const backgroundColor = theme.palette.background.default;
42
- const [r, g, b] = React.useMemo(() => rgb(backgroundColor), [backgroundColor]);
43
- const animatedAppBarStyle = useAnimatedStyle(() => ({
44
- backgroundColor: `rgba(${r}, ${g}, ${b}, ${normalized.value})`,
45
- elevation: normalized.value >= 1 ? 6 : 0,
46
- shadowColor: '#000',
47
- shadowOffset,
48
- shadowRadius: 4.65,
49
- shadowOpacity: normalized.value >= 1 ? 0.25 : 0
50
- }));
41
+ const originalBackgroundColor = theme.palette.background.default;
42
+ const rgbValues = useMemo(() => rgb(originalBackgroundColor), [originalBackgroundColor]);
43
+ const animatedAppBarStyle = useAnimatedStyle(() => {
44
+ const [r, g, b] = rgbValues;
45
+ const backgroundColor = `rgba(${r}, ${g}, ${b}, ${normalized.value})`;
46
+ return {
47
+ backgroundColor,
48
+ borderColor: theme.palette.divider,
49
+ borderBottomWidth: normalized.value >= 1 ? StyleSheet.hairlineWidth : 0
50
+ };
51
+ }, [rgbValues]);
51
52
  const animatedTitleStyle = useAnimatedStyle(() => ({
52
53
  opacity: normalized.value
53
- }));
54
+ }), []);
54
55
  const scrollHandler = useAnimatedScrollHandler({
55
56
  onBeginDrag: () => {
56
57
  if (keyboardDismissMode === 'on-drag') {
57
- runOnJS(Keyboard.dismiss)();
58
+ runOnJS(dismissKeyboard)();
58
59
  }
59
60
  },
60
61
  onScroll: event => {
61
62
  const offsetY = event.contentOffset.y;
63
+ scrollY.value = offsetY;
62
64
  const distance = Math.max(toOffsetY - fromOffsetY, 1);
63
65
  const localOffsetY = offsetY - fromOffsetY;
64
66
  dy.value = offsetY - lastOffsetY.value;
@@ -70,7 +72,7 @@ export default function useFadeInAppBar() {
70
72
  onMomentumEnd: event => {
71
73
  lastOffsetY.value = event.contentOffset.y;
72
74
  }
73
- });
75
+ }, [keyboardDismissMode]);
74
76
  const appBarStyle = [animatedAppBarStyle, {
75
77
  paddingTop: safeAreaInsets.top
76
78
  }, floating ? styles.floating : undefined];
@@ -79,6 +81,7 @@ export default function useFadeInAppBar() {
79
81
  titleStyle: [animatedTitleStyle],
80
82
  onAppBarLayout,
81
83
  onScroll: scrollHandler,
84
+ scrollY,
82
85
  dy,
83
86
  normalized
84
87
  };
@@ -1 +1 @@
1
- {"version":3,"names":["React","Keyboard","Platform","runOnJS","useAnimatedScrollHandler","useAnimatedStyle","useSharedValue","useSafeAreaInsets","rgb","useHeight","useTheme","useAppbarStyles","defaultOptions","fadeInBeginY","endY","appBarHeight","fadeInEndY","floating","keyboardDismissMode","shadowOffset","OS","width","height","undefined","useFadeInAppBar","userOptions","theme","styles","safeAreaInsets","onAppBarLayout","fromOffsetY","toOffsetY","useMemo","beginY","dy","lastOffsetY","normalized","backgroundColor","palette","background","default","r","g","b","animatedAppBarStyle","value","elevation","shadowColor","shadowRadius","shadowOpacity","animatedTitleStyle","opacity","scrollHandler","onBeginDrag","dismiss","onScroll","event","offsetY","contentOffset","y","distance","Math","max","localOffsetY","min","onEndDrag","onMomentumEnd","appBarStyle","paddingTop","top","titleStyle"],"sources":["useFadeInAppBar.ts"],"sourcesContent":["import React from 'react';\nimport { Falsy, Keyboard, Platform, RegisteredStyle, ScrollViewProps, ViewProps, ViewStyle } from 'react-native';\nimport type { SharedValue } from 'react-native-reanimated';\nimport { runOnJS, useAnimatedScrollHandler, useAnimatedStyle, useSharedValue } from 'react-native-reanimated';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { rgb } from '@fountain-ui/utils';\nimport { useHeight } from '../internal/hooks';\nimport { useTheme } from '../styles';\nimport useAppbarStyles from './useAppbarStyles';\n\ntype ViewStyleProp = Array<ViewStyle | RegisteredStyle<ViewStyle> | Falsy>;\n\ntype OnScroll = ScrollViewProps['onScroll'];\n\ntype OnLayoutCallback = ViewProps['onLayout'];\n\nexport interface Options {\n fadeInBeginY?: number | ((endY: number, appBarHeight: number) => number);\n fadeInEndY?: number | ((appBarHeight: number) => number);\n floating?: boolean;\n keyboardDismissMode?: 'none' | 'on-drag';\n}\n\nexport interface FadeInAppBar {\n appBarStyle: ViewStyleProp;\n titleStyle: ViewStyleProp;\n onAppBarLayout: OnLayoutCallback;\n onScroll: OnScroll;\n dy: SharedValue<number>;\n normalized: SharedValue<number>;\n}\n\nconst defaultOptions: Required<Options> = {\n fadeInBeginY: (endY, appBarHeight) => endY - appBarHeight,\n fadeInEndY: (appBarHeight) => appBarHeight,\n floating: true,\n keyboardDismissMode: 'none',\n};\n\nconst shadowOffset = Platform.OS === 'ios' ? { width: 0, height: 3 } : undefined;\n\nexport default function useFadeInAppBar(userOptions: Options = defaultOptions): FadeInAppBar {\n const {\n fadeInBeginY,\n fadeInEndY,\n floating,\n keyboardDismissMode,\n }: Required<Options> = {\n ...defaultOptions,\n ...userOptions,\n };\n\n const theme = useTheme();\n\n const styles = useAppbarStyles();\n\n const safeAreaInsets = useSafeAreaInsets();\n\n const [appBarHeight, onAppBarLayout] = useHeight();\n\n const [fromOffsetY, toOffsetY] = React.useMemo(() => {\n const endY = typeof fadeInEndY === 'function'\n ? fadeInEndY(appBarHeight)\n : fadeInEndY;\n\n const beginY = typeof fadeInBeginY === 'function'\n ? fadeInBeginY(endY, appBarHeight)\n : fadeInBeginY;\n\n return [beginY, endY];\n }, [fadeInBeginY, fadeInBeginY, appBarHeight]);\n\n const dy = useSharedValue<number>(0);\n const lastOffsetY = useSharedValue<number>(0);\n const normalized = useSharedValue<number>(0);\n\n const backgroundColor = theme.palette.background.default;\n const [r, g, b] = React.useMemo(() => rgb(backgroundColor), [backgroundColor]);\n\n const animatedAppBarStyle = useAnimatedStyle(() => ({\n backgroundColor: `rgba(${r}, ${g}, ${b}, ${normalized.value})`,\n elevation: normalized.value >= 1 ? 6 : 0,\n shadowColor: '#000',\n shadowOffset,\n shadowRadius: 4.65,\n shadowOpacity: normalized.value >= 1 ? 0.25 : 0,\n }));\n\n const animatedTitleStyle = useAnimatedStyle(() => ({\n opacity: normalized.value,\n }));\n\n const scrollHandler = useAnimatedScrollHandler({\n onBeginDrag: () => {\n if (keyboardDismissMode === 'on-drag') {\n runOnJS(Keyboard.dismiss)();\n }\n },\n onScroll: (event) => {\n const offsetY = event.contentOffset.y;\n\n const distance = Math.max(toOffsetY - fromOffsetY, 1);\n const localOffsetY = offsetY - fromOffsetY;\n\n dy.value = offsetY - lastOffsetY.value;\n\n normalized.value = Math.min(Math.max(localOffsetY / distance, 0), 1);\n },\n onEndDrag: (event) => {\n lastOffsetY.value = event.contentOffset.y;\n },\n onMomentumEnd: (event) => {\n lastOffsetY.value = event.contentOffset.y;\n },\n });\n\n const appBarStyle = [\n animatedAppBarStyle,\n { paddingTop: safeAreaInsets.top },\n floating ? styles.floating : undefined,\n ];\n\n return {\n appBarStyle,\n titleStyle: [animatedTitleStyle],\n onAppBarLayout,\n onScroll: scrollHandler,\n dy,\n normalized,\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["useMemo","Keyboard","StyleSheet","runOnJS","useAnimatedScrollHandler","useAnimatedStyle","useSharedValue","useSafeAreaInsets","rgb","useHeight","useTheme","useAppbarStyles","defaultOptions","fadeInBeginY","endY","appBarHeight","fadeInEndY","floating","keyboardDismissMode","dismissKeyboard","dismiss","useFadeInAppBar","userOptions","theme","styles","safeAreaInsets","onAppBarLayout","fromOffsetY","toOffsetY","beginY","scrollY","dy","lastOffsetY","normalized","originalBackgroundColor","palette","background","default","rgbValues","animatedAppBarStyle","r","g","b","backgroundColor","value","borderColor","divider","borderBottomWidth","hairlineWidth","animatedTitleStyle","opacity","scrollHandler","onBeginDrag","onScroll","event","offsetY","contentOffset","y","distance","Math","max","localOffsetY","min","onEndDrag","onMomentumEnd","appBarStyle","paddingTop","top","undefined","titleStyle"],"sources":["useFadeInAppBar.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { Falsy, Keyboard, RegisteredStyle, ScrollViewProps, StyleSheet, ViewProps, ViewStyle } from 'react-native';\nimport type { SharedValue } from 'react-native-reanimated';\nimport { runOnJS, useAnimatedScrollHandler, useAnimatedStyle, useSharedValue } from 'react-native-reanimated';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport { rgb } from '@fountain-ui/utils';\nimport { useHeight } from '../internal/hooks';\nimport { useTheme } from '../styles';\nimport useAppbarStyles from './useAppbarStyles';\n\ntype ViewStyleProp = Array<ViewStyle | RegisteredStyle<ViewStyle> | Falsy>;\n\ntype OnScroll = ScrollViewProps['onScroll'];\n\ntype OnLayoutCallback = ViewProps['onLayout'];\n\nexport interface Options {\n fadeInBeginY?: number | ((endY: number, appBarHeight: number) => number);\n fadeInEndY?: number | ((appBarHeight: number) => number);\n floating?: boolean;\n keyboardDismissMode?: 'none' | 'on-drag';\n}\n\nexport interface FadeInAppBar {\n appBarStyle: ViewStyleProp;\n titleStyle: ViewStyleProp;\n onAppBarLayout: OnLayoutCallback;\n onScroll: OnScroll;\n scrollY: SharedValue<number>;\n dy: SharedValue<number>;\n normalized: SharedValue<number>;\n}\n\nconst defaultOptions: Required<Options> = {\n fadeInBeginY: (endY, appBarHeight) => endY - appBarHeight,\n fadeInEndY: (appBarHeight) => appBarHeight,\n floating: true,\n keyboardDismissMode: 'none',\n};\n\nconst dismissKeyboard = () => Keyboard.dismiss();\n\nexport default function useFadeInAppBar(userOptions: Options = defaultOptions): FadeInAppBar {\n const {\n fadeInBeginY,\n fadeInEndY,\n floating,\n keyboardDismissMode,\n }: Required<Options> = {\n ...defaultOptions,\n ...userOptions,\n };\n\n const theme = useTheme();\n\n const styles = useAppbarStyles();\n\n const safeAreaInsets = useSafeAreaInsets();\n\n const [appBarHeight, onAppBarLayout] = useHeight();\n\n const [fromOffsetY, toOffsetY] = useMemo(() => {\n const endY = typeof fadeInEndY === 'function'\n ? fadeInEndY(appBarHeight)\n : fadeInEndY;\n\n const beginY = typeof fadeInBeginY === 'function'\n ? fadeInBeginY(endY, appBarHeight)\n : fadeInBeginY;\n\n return [beginY, endY];\n }, [fadeInBeginY, fadeInBeginY, appBarHeight]);\n\n const scrollY = useSharedValue<number>(0);\n const dy = useSharedValue<number>(0);\n const lastOffsetY = useSharedValue<number>(0);\n const normalized = useSharedValue<number>(0);\n\n const originalBackgroundColor = theme.palette.background.default;\n const rgbValues = useMemo(() => rgb(originalBackgroundColor), [originalBackgroundColor]);\n\n const animatedAppBarStyle = useAnimatedStyle(() => {\n const [r, g, b] = rgbValues;\n const backgroundColor = `rgba(${r}, ${g}, ${b}, ${normalized.value})`;\n\n return {\n backgroundColor,\n borderColor: theme.palette.divider,\n borderBottomWidth: normalized.value >= 1 ? StyleSheet.hairlineWidth : 0,\n };\n }, [rgbValues]);\n\n const animatedTitleStyle = useAnimatedStyle(() => ({\n opacity: normalized.value,\n }), []);\n\n const scrollHandler = useAnimatedScrollHandler({\n onBeginDrag: () => {\n if (keyboardDismissMode === 'on-drag') {\n runOnJS(dismissKeyboard)();\n }\n },\n onScroll: (event) => {\n const offsetY = event.contentOffset.y;\n scrollY.value = offsetY;\n\n const distance = Math.max(toOffsetY - fromOffsetY, 1);\n const localOffsetY = offsetY - fromOffsetY;\n\n dy.value = offsetY - lastOffsetY.value;\n\n normalized.value = Math.min(Math.max(localOffsetY / distance, 0), 1);\n },\n onEndDrag: (event) => {\n lastOffsetY.value = event.contentOffset.y;\n },\n onMomentumEnd: (event) => {\n lastOffsetY.value = event.contentOffset.y;\n },\n }, [keyboardDismissMode]);\n\n const appBarStyle = [\n animatedAppBarStyle,\n { paddingTop: safeAreaInsets.top },\n floating ? styles.floating : undefined,\n ];\n\n return {\n appBarStyle,\n titleStyle: [animatedTitleStyle],\n onAppBarLayout,\n onScroll: scrollHandler,\n scrollY,\n dy,\n normalized,\n };\n};\n"],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { useMemo } from 'react';
2
+ export default function useImperativeState(initialValue) {
3
+ return useMemo(() => {
4
+ let prevState = initialValue;
5
+ let currentState = initialValue;
6
+ return {
7
+ hasChanged: () => prevState !== currentState,
8
+ get: () => currentState,
9
+ set: nextState => {
10
+ prevState = currentState;
11
+ currentState = nextState;
12
+ }
13
+ };
14
+ }, []);
15
+ }
16
+ ;
17
+ //# sourceMappingURL=useImperativeState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","useImperativeState","initialValue","prevState","currentState","hasChanged","get","set","nextState"],"sources":["useImperativeState.ts"],"sourcesContent":["import { useMemo } from 'react';\n\n\nexport interface ImperativeState<T> {\n hasChanged: () => boolean;\n get: () => T;\n set: (nextState: T) => void;\n}\n\nexport default function useImperativeState<T>(initialValue: T): ImperativeState<T> {\n return useMemo<ImperativeState<T>>(() => {\n let prevState: T = initialValue;\n let currentState: T = initialValue;\n\n return {\n hasChanged: () => prevState !== currentState,\n get: () => currentState,\n set: (nextState) => {\n prevState = currentState;\n currentState = nextState;\n },\n };\n }, []);\n};\n"],"mappings":"AAAA,SAASA,OAAT,QAAwB,OAAxB;AASA,eAAe,SAASC,kBAAT,CAA+BC,YAA/B,EAAoE;EAC/E,OAAOF,OAAO,CAAqB,MAAM;IACrC,IAAIG,SAAY,GAAGD,YAAnB;IACA,IAAIE,YAAe,GAAGF,YAAtB;IAEA,OAAO;MACHG,UAAU,EAAE,MAAMF,SAAS,KAAKC,YAD7B;MAEHE,GAAG,EAAE,MAAMF,YAFR;MAGHG,GAAG,EAAGC,SAAD,IAAe;QAChBL,SAAS,GAAGC,YAAZ;QACAA,YAAY,GAAGI,SAAf;MACH;IANE,CAAP;EAQH,CAZa,EAYX,EAZW,CAAd;AAaH;AAAA"}
@@ -0,0 +1,28 @@
1
+ import { useEffect, useRef } from 'react';
2
+ import useAnimatedValue from './useAnimatedValue';
3
+ export default function useSyncAnimatedValue(config) {
4
+ const {
5
+ initialValue: maybeInitialValue,
6
+ shouldSyncAlways = false
7
+ } = config;
8
+ const initialValue = Number.isFinite(maybeInitialValue) ? maybeInitialValue : 0;
9
+ const animatedValue = useAnimatedValue(initialValue);
10
+ const valueRef = useRef(initialValue);
11
+ useEffect(() => {
12
+ const maybeId = shouldSyncAlways ? animatedValue.addListener(newValue => {
13
+ valueRef.current = newValue.value;
14
+ }) : undefined;
15
+ return () => {
16
+ if (maybeId != null) {
17
+ animatedValue.removeListener(maybeId);
18
+ }
19
+ };
20
+ }, [shouldSyncAlways]);
21
+ return {
22
+ animatedValue,
23
+ initialValue,
24
+ getCurrentValue: () => valueRef.current
25
+ };
26
+ }
27
+ ;
28
+ //# sourceMappingURL=useSyncAnimatedValue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useRef","useAnimatedValue","useSyncAnimatedValue","config","initialValue","maybeInitialValue","shouldSyncAlways","Number","isFinite","animatedValue","valueRef","maybeId","addListener","newValue","current","value","undefined","removeListener","getCurrentValue"],"sources":["useSyncAnimatedValue.ts"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport type { SyncAnimatedValue } from '../types';\nimport useAnimatedValue from './useAnimatedValue';\n\nexport interface SyncAnimatedValueConfig {\n initialValue: number;\n shouldSyncAlways?: boolean;\n}\n\nexport default function useSyncAnimatedValue(config: SyncAnimatedValueConfig): SyncAnimatedValue {\n const {\n initialValue: maybeInitialValue,\n shouldSyncAlways = false,\n } = config;\n\n const initialValue = Number.isFinite(maybeInitialValue) ? maybeInitialValue : 0;\n const animatedValue = useAnimatedValue(initialValue);\n\n const valueRef = useRef<number>(initialValue);\n\n useEffect(() => {\n const maybeId = shouldSyncAlways ? animatedValue.addListener((newValue) => {\n valueRef.current = newValue.value;\n }) : undefined;\n\n return () => {\n if (maybeId != null) {\n animatedValue.removeListener(maybeId);\n }\n };\n }, [shouldSyncAlways]);\n\n return {\n animatedValue,\n initialValue,\n getCurrentValue: () => valueRef.current,\n };\n};\n"],"mappings":"AAAA,SAASA,SAAT,EAAoBC,MAApB,QAAkC,OAAlC;AAEA,OAAOC,gBAAP,MAA6B,oBAA7B;AAOA,eAAe,SAASC,oBAAT,CAA8BC,MAA9B,EAAkF;EAC7F,MAAM;IACFC,YAAY,EAAEC,iBADZ;IAEFC,gBAAgB,GAAG;EAFjB,IAGFH,MAHJ;EAKA,MAAMC,YAAY,GAAGG,MAAM,CAACC,QAAP,CAAgBH,iBAAhB,IAAqCA,iBAArC,GAAyD,CAA9E;EACA,MAAMI,aAAa,GAAGR,gBAAgB,CAACG,YAAD,CAAtC;EAEA,MAAMM,QAAQ,GAAGV,MAAM,CAASI,YAAT,CAAvB;EAEAL,SAAS,CAAC,MAAM;IACZ,MAAMY,OAAO,GAAGL,gBAAgB,GAAGG,aAAa,CAACG,WAAd,CAA2BC,QAAD,IAAc;MACvEH,QAAQ,CAACI,OAAT,GAAmBD,QAAQ,CAACE,KAA5B;IACH,CAFkC,CAAH,GAE3BC,SAFL;IAIA,OAAO,MAAM;MACT,IAAIL,OAAO,IAAI,IAAf,EAAqB;QACjBF,aAAa,CAACQ,cAAd,CAA6BN,OAA7B;MACH;IACJ,CAJD;EAKH,CAVQ,EAUN,CAACL,gBAAD,CAVM,CAAT;EAYA,OAAO;IACHG,aADG;IAEHL,YAFG;IAGHc,eAAe,EAAE,MAAMR,QAAQ,CAACI;EAH7B,CAAP;AAKH;AAAA"}
@@ -1,11 +1,11 @@
1
- import React from 'react';
1
+ import { useCallback, useRef } from 'react';
2
2
  export default function useThrottle(options) {
3
3
  const {
4
4
  periodMillis,
5
5
  callback
6
6
  } = options;
7
- const lastExecMillisRef = React.useRef(0);
8
- return React.useCallback(function () {
7
+ const lastExecMillisRef = useRef(0);
8
+ return useCallback(function () {
9
9
  const now = Date.now();
10
10
  const millisAfterExecuted = now - lastExecMillisRef.current;
11
11
  lastExecMillisRef.current = now;
@@ -1 +1 @@
1
- {"version":3,"names":["React","useThrottle","options","periodMillis","callback","lastExecMillisRef","useRef","useCallback","now","Date","millisAfterExecuted","current"],"sources":["useThrottle.ts"],"sourcesContent":["import React from 'react';\n\nexport interface ThrottleOptions {\n periodMillis: number;\n callback?: (args?: any) => void;\n}\n\nexport default function useThrottle(options: ThrottleOptions) {\n const { periodMillis, callback } = options;\n\n const lastExecMillisRef = React.useRef(0);\n\n return React.useCallback((...args: any[]) => {\n const now = Date.now();\n const millisAfterExecuted = now - lastExecMillisRef.current;\n lastExecMillisRef.current = now;\n\n if (millisAfterExecuted > periodMillis || periodMillis <= 0) {\n if (callback) {\n callback(...args);\n }\n }\n }, [callback, periodMillis]);\n}\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AAOA,eAAe,SAASC,WAAT,CAAqBC,OAArB,EAA+C;EAC1D,MAAM;IAAEC,YAAF;IAAgBC;EAAhB,IAA6BF,OAAnC;EAEA,MAAMG,iBAAiB,GAAGL,KAAK,CAACM,MAAN,CAAa,CAAb,CAA1B;EAEA,OAAON,KAAK,CAACO,WAAN,CAAkB,YAAoB;IACzC,MAAMC,GAAG,GAAGC,IAAI,CAACD,GAAL,EAAZ;IACA,MAAME,mBAAmB,GAAGF,GAAG,GAAGH,iBAAiB,CAACM,OAApD;IACAN,iBAAiB,CAACM,OAAlB,GAA4BH,GAA5B;;IAEA,IAAIE,mBAAmB,GAAGP,YAAtB,IAAsCA,YAAY,IAAI,CAA1D,EAA6D;MACzD,IAAIC,QAAJ,EAAc;QACVA,QAAQ,CAAC,YAAD,CAAR;MACH;IACJ;EACJ,CAVM,EAUJ,CAACA,QAAD,EAAWD,YAAX,CAVI,CAAP;AAWH"}
1
+ {"version":3,"names":["useCallback","useRef","useThrottle","options","periodMillis","callback","lastExecMillisRef","now","Date","millisAfterExecuted","current"],"sources":["useThrottle.ts"],"sourcesContent":["import { useCallback, useRef } from 'react';\n\nexport interface ThrottleOptions {\n periodMillis: number;\n callback?: (args?: any) => void;\n}\n\nexport default function useThrottle(options: ThrottleOptions) {\n const { periodMillis, callback } = options;\n\n const lastExecMillisRef = useRef(0);\n\n return useCallback((...args: any[]) => {\n const now = Date.now();\n const millisAfterExecuted = now - lastExecMillisRef.current;\n lastExecMillisRef.current = now;\n\n if (millisAfterExecuted > periodMillis || periodMillis <= 0) {\n if (callback) {\n callback(...args);\n }\n }\n }, [callback, periodMillis]);\n}\n"],"mappings":"AAAA,SAASA,WAAT,EAAsBC,MAAtB,QAAoC,OAApC;AAOA,eAAe,SAASC,WAAT,CAAqBC,OAArB,EAA+C;EAC1D,MAAM;IAAEC,YAAF;IAAgBC;EAAhB,IAA6BF,OAAnC;EAEA,MAAMG,iBAAiB,GAAGL,MAAM,CAAC,CAAD,CAAhC;EAEA,OAAOD,WAAW,CAAC,YAAoB;IACnC,MAAMO,GAAG,GAAGC,IAAI,CAACD,GAAL,EAAZ;IACA,MAAME,mBAAmB,GAAGF,GAAG,GAAGD,iBAAiB,CAACI,OAApD;IACAJ,iBAAiB,CAACI,OAAlB,GAA4BH,GAA5B;;IAEA,IAAIE,mBAAmB,GAAGL,YAAtB,IAAsCA,YAAY,IAAI,CAA1D,EAA6D;MACzD,IAAIC,QAAJ,EAAc;QACVA,QAAQ,CAAC,YAAD,CAAR;MACH;IACJ;EACJ,CAViB,EAUf,CAACA,QAAD,EAAWD,YAAX,CAVe,CAAlB;AAWH"}
@@ -1,13 +1,19 @@
1
- import { useState, useEffect } from 'react';
2
- import { useWindowDimensions } from 'react-native';
1
+ import { useEffect, useState } from 'react';
2
+ import { Dimensions } from 'react-native';
3
3
  export default function useValidWindowDimensions() {
4
- const window = useWindowDimensions();
5
- const [validWindow, setValidWindow] = useState(window);
4
+ const [window, setWindow] = useState(() => Dimensions.get('window'));
6
5
  useEffect(() => {
7
- if (window.width !== 0 && window.height !== 0) {
8
- setValidWindow(window);
9
- }
10
- }, [window]);
11
- return validWindow;
6
+ const subscription = Dimensions.addEventListener('change', newDimension => {
7
+ const {
8
+ window: newWindow
9
+ } = newDimension;
10
+
11
+ if (newWindow.width !== 0 && newWindow.height !== 0) {
12
+ setWindow(newWindow);
13
+ }
14
+ });
15
+ return subscription.remove;
16
+ }, []);
17
+ return window;
12
18
  }
13
19
  //# sourceMappingURL=index.ios.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useState","useEffect","useWindowDimensions","useValidWindowDimensions","window","validWindow","setValidWindow","width","height"],"sources":["index.ios.ts"],"sourcesContent":["import { useState, useEffect } from 'react';\nimport { useWindowDimensions } from 'react-native';\n\nexport default function useValidWindowDimensions() {\n const window = useWindowDimensions();\n const [validWindow, setValidWindow] = useState(window);\n\n useEffect(() => {\n if (window.width !== 0 && window.height !== 0) {\n setValidWindow(window);\n }\n }, [window]);\n\n return validWindow;\n}\n"],"mappings":"AAAA,SAASA,QAAT,EAAmBC,SAAnB,QAAoC,OAApC;AACA,SAASC,mBAAT,QAAoC,cAApC;AAEA,eAAe,SAASC,wBAAT,GAAoC;EAC/C,MAAMC,MAAM,GAAGF,mBAAmB,EAAlC;EACA,MAAM,CAACG,WAAD,EAAcC,cAAd,IAAgCN,QAAQ,CAACI,MAAD,CAA9C;EAEAH,SAAS,CAAC,MAAM;IACZ,IAAIG,MAAM,CAACG,KAAP,KAAiB,CAAjB,IAAsBH,MAAM,CAACI,MAAP,KAAkB,CAA5C,EAA+C;MAC3CF,cAAc,CAACF,MAAD,CAAd;IACH;EACJ,CAJQ,EAIN,CAACA,MAAD,CAJM,CAAT;EAMA,OAAOC,WAAP;AACH"}
1
+ {"version":3,"names":["useEffect","useState","Dimensions","useValidWindowDimensions","window","setWindow","get","subscription","addEventListener","newDimension","newWindow","width","height","remove"],"sources":["index.ios.ts"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport type { ScaledSize } from 'react-native';\nimport { Dimensions } from 'react-native';\n\nexport default function useValidWindowDimensions(): ScaledSize {\n const [window, setWindow] = useState<ScaledSize>(() => Dimensions.get('window'));\n\n useEffect(() => {\n const subscription = Dimensions.addEventListener('change', (newDimension) => {\n const { window: newWindow } = newDimension;\n\n if (newWindow.width !== 0 && newWindow.height !== 0) {\n setWindow(newWindow);\n }\n });\n\n return subscription.remove;\n }, []);\n\n return window;\n}\n"],"mappings":"AAAA,SAASA,SAAT,EAAoBC,QAApB,QAAoC,OAApC;AAEA,SAASC,UAAT,QAA2B,cAA3B;AAEA,eAAe,SAASC,wBAAT,GAAgD;EAC3D,MAAM,CAACC,MAAD,EAASC,SAAT,IAAsBJ,QAAQ,CAAa,MAAMC,UAAU,CAACI,GAAX,CAAe,QAAf,CAAnB,CAApC;EAEAN,SAAS,CAAC,MAAM;IACZ,MAAMO,YAAY,GAAGL,UAAU,CAACM,gBAAX,CAA4B,QAA5B,EAAuCC,YAAD,IAAkB;MACzE,MAAM;QAAEL,MAAM,EAAEM;MAAV,IAAwBD,YAA9B;;MAEA,IAAIC,SAAS,CAACC,KAAV,KAAoB,CAApB,IAAyBD,SAAS,CAACE,MAAV,KAAqB,CAAlD,EAAqD;QACjDP,SAAS,CAACK,SAAD,CAAT;MACH;IACJ,CANoB,CAArB;IAQA,OAAOH,YAAY,CAACM,MAApB;EACH,CAVQ,EAUN,EAVM,CAAT;EAYA,OAAOT,MAAP;AACH"}
@@ -2,6 +2,7 @@ export * from './styles';
2
2
  export * from './types';
3
3
  export * from './hooks';
4
4
  export * from './utils';
5
+ export * from './store';
5
6
  export { default as Accordion } from './Accordion';
6
7
  export * from './Accordion';
7
8
  export { default as AppBar } from './AppBar';
@@ -50,6 +51,7 @@ export { default as IconButton } from './IconButton';
50
51
  export * from './IconButton';
51
52
  export { default as Image } from './Image';
52
53
  export * from './Image';
54
+ export * from './ImageCore';
53
55
  export { default as Link } from './Link';
54
56
  export * from './Link';
55
57
  export { default as List } from './List';
@@ -1 +1 @@
1
- {"version":3,"names":["default","Accordion","AppBar","AspectRatio","Avatar","Badge","Button","ButtonBase","Card","CardActions","CardContent","CardMedia","Checkbox","Chip","CircularProgress","Column","Dialog","DialogActions","DialogContent","DialogMedia","DialogTitle","Divider","Fab","IconButton","Image","Link","List","ListItem","ListItemIcon","ListItemSecondaryAction","ListItemText","ListSubheader","Menu","MenuItem","Modal","createModalCloseEvent","Pagination","PaginationItem","Paper","Portal","Radio","RadioGroup","Row","Slide","Slider","Snackbar","SnackbarContent","Spacer","SvgIcon","Switch","Tab","TabBase","Tabs","TextField","Toolbar","Tooltip","Typography"],"sources":["index.ts"],"sourcesContent":["export * from './styles';\n\nexport * from './types';\n\nexport * from './hooks';\n\nexport * from './utils';\n\nexport { default as Accordion } from './Accordion';\nexport * from './Accordion';\n\nexport { default as AppBar } from './AppBar';\nexport * from './AppBar';\n\nexport { default as AspectRatio } from './AspectRatio';\nexport * from './AspectRatio';\n\nexport { default as Avatar } from './Avatar';\nexport * from './Avatar';\n\nexport { default as Badge } from './Badge';\nexport * from './Badge';\n\nexport { default as Button } from './Button';\nexport * from './Button';\n\nexport { default as ButtonBase } from './ButtonBase';\nexport * from './ButtonBase';\n\nexport { default as Card } from './Card';\nexport * from './Card';\n\nexport { default as CardActions } from './CardActions';\nexport * from './CardActions';\n\nexport { default as CardContent } from './CardContent';\nexport * from './CardContent';\n\nexport { default as CardMedia } from './CardMedia';\nexport * from './CardMedia';\n\nexport { default as Checkbox } from './Checkbox';\nexport * from './Checkbox';\n\nexport { default as Chip } from './Chip';\nexport * from './Chip';\n\nexport { default as CircularProgress } from './CircularProgress';\nexport * from './CircularProgress';\n\nexport { default as Column } from './Column';\nexport * from './Column';\n\nexport { default as Dialog } from './Dialog';\nexport * from './Dialog';\n\nexport { default as DialogActions } from './DialogActions';\nexport * from './DialogActions';\n\nexport { default as DialogContent } from './DialogContent';\nexport * from './DialogContent';\n\nexport { default as DialogMedia } from './DialogMedia';\nexport * from './DialogMedia';\n\nexport { default as DialogTitle } from './DialogTitle';\nexport * from './DialogTitle';\n\nexport { default as Divider } from './Divider';\nexport * from './Divider';\n\nexport { default as Fab } from './Fab';\nexport * from './Fab';\n\nexport { default as IconButton } from './IconButton';\nexport * from './IconButton';\n\nexport { default as Image } from './Image';\nexport * from './Image';\n\nexport { default as Link } from './Link';\nexport * from './Link';\n\nexport { default as List } from './List';\nexport * from './List';\n\nexport { default as ListItem } from './ListItem';\nexport * from './ListItem';\n\nexport { default as ListItemIcon } from './ListItemIcon';\nexport * from './ListItemIcon';\n\nexport { default as ListItemSecondaryAction } from './ListItemSecondaryAction';\nexport * from './ListItemSecondaryAction';\n\nexport { default as ListItemText } from './ListItemText';\nexport * from './ListItemText';\n\nexport { default as ListSubheader } from './ListSubheader';\nexport * from './ListSubheader';\n\nexport { default as Menu } from './Menu';\nexport * from './Menu';\n\nexport { default as MenuItem } from './MenuItem';\nexport * from './MenuItem';\n\nexport { default as Modal, createModalCloseEvent } from './Modal';\nexport type { ModalCloseEvent } from './Modal';\nexport * from './Modal';\n\nexport { default as Pagination } from './Pagination';\nexport * from './Pagination';\n\nexport { default as PaginationItem } from './PaginationItem';\nexport * from './PaginationItem';\n\nexport { default as Paper } from './Paper';\nexport * from './Paper';\n\nexport { default as Portal } from './Portal';\nexport * from './Portal';\n\nexport { default as Radio } from './Radio';\nexport * from './Radio';\n\nexport { default as RadioGroup } from './RadioGroup';\nexport * from './RadioGroup';\n\nexport { default as Row } from './Row';\nexport * from './Row';\n\nexport { default as Slide } from './Slide';\nexport * from './Slide';\n\nexport { default as Slider } from './Slider';\nexport * from './Slider';\n\nexport { default as Snackbar } from './Snackbar';\nexport * from './Snackbar';\n\nexport { default as SnackbarContent } from './SnackbarContent';\nexport * from './SnackbarContent';\n\nexport { default as Spacer } from './Spacer';\nexport * from './Spacer';\n\nexport { default as SvgIcon } from './SvgIcon';\nexport * from './SvgIcon';\n\nexport { default as Switch } from './Switch';\nexport * from './Switch';\n\nexport { default as Tab } from './Tab';\nexport * from './Tab';\n\nexport { default as TabBase } from './TabBase';\nexport * from './TabBase';\n\nexport { default as Tabs } from './Tabs';\nexport * from './Tabs';\n\nexport { default as TextField } from './TextField';\nexport * from './TextField';\n\nexport { default as Toolbar } from './Toolbar';\nexport * from './Toolbar';\n\nexport { default as Tooltip } from './Tooltip';\nexport * from './Tooltip';\n\nexport { default as Typography } from './Typography';\nexport * from './Typography';\n\nexport * from './animated';\n"],"mappings":"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"}
1
+ {"version":3,"names":["default","Accordion","AppBar","AspectRatio","Avatar","Badge","Button","ButtonBase","Card","CardActions","CardContent","CardMedia","Checkbox","Chip","CircularProgress","Column","Dialog","DialogActions","DialogContent","DialogMedia","DialogTitle","Divider","Fab","IconButton","Image","Link","List","ListItem","ListItemIcon","ListItemSecondaryAction","ListItemText","ListSubheader","Menu","MenuItem","Modal","createModalCloseEvent","Pagination","PaginationItem","Paper","Portal","Radio","RadioGroup","Row","Slide","Slider","Snackbar","SnackbarContent","Spacer","SvgIcon","Switch","Tab","TabBase","Tabs","TextField","Toolbar","Tooltip","Typography"],"sources":["index.ts"],"sourcesContent":["export * from './styles';\n\nexport * from './types';\n\nexport * from './hooks';\n\nexport * from './utils';\n\nexport * from './store';\n\nexport { default as Accordion } from './Accordion';\nexport * from './Accordion';\n\nexport { default as AppBar } from './AppBar';\nexport * from './AppBar';\n\nexport { default as AspectRatio } from './AspectRatio';\nexport * from './AspectRatio';\n\nexport { default as Avatar } from './Avatar';\nexport * from './Avatar';\n\nexport { default as Badge } from './Badge';\nexport * from './Badge';\n\nexport { default as Button } from './Button';\nexport * from './Button';\n\nexport { default as ButtonBase } from './ButtonBase';\nexport * from './ButtonBase';\n\nexport { default as Card } from './Card';\nexport * from './Card';\n\nexport { default as CardActions } from './CardActions';\nexport * from './CardActions';\n\nexport { default as CardContent } from './CardContent';\nexport * from './CardContent';\n\nexport { default as CardMedia } from './CardMedia';\nexport * from './CardMedia';\n\nexport { default as Checkbox } from './Checkbox';\nexport * from './Checkbox';\n\nexport { default as Chip } from './Chip';\nexport * from './Chip';\n\nexport { default as CircularProgress } from './CircularProgress';\nexport * from './CircularProgress';\n\nexport { default as Column } from './Column';\nexport * from './Column';\n\nexport { default as Dialog } from './Dialog';\nexport * from './Dialog';\n\nexport { default as DialogActions } from './DialogActions';\nexport * from './DialogActions';\n\nexport { default as DialogContent } from './DialogContent';\nexport * from './DialogContent';\n\nexport { default as DialogMedia } from './DialogMedia';\nexport * from './DialogMedia';\n\nexport { default as DialogTitle } from './DialogTitle';\nexport * from './DialogTitle';\n\nexport { default as Divider } from './Divider';\nexport * from './Divider';\n\nexport { default as Fab } from './Fab';\nexport * from './Fab';\n\nexport { default as IconButton } from './IconButton';\nexport * from './IconButton';\n\nexport { default as Image } from './Image';\nexport * from './Image';\n\nexport * from './ImageCore';\n\nexport { default as Link } from './Link';\nexport * from './Link';\n\nexport { default as List } from './List';\nexport * from './List';\n\nexport { default as ListItem } from './ListItem';\nexport * from './ListItem';\n\nexport { default as ListItemIcon } from './ListItemIcon';\nexport * from './ListItemIcon';\n\nexport { default as ListItemSecondaryAction } from './ListItemSecondaryAction';\nexport * from './ListItemSecondaryAction';\n\nexport { default as ListItemText } from './ListItemText';\nexport * from './ListItemText';\n\nexport { default as ListSubheader } from './ListSubheader';\nexport * from './ListSubheader';\n\nexport { default as Menu } from './Menu';\nexport * from './Menu';\n\nexport { default as MenuItem } from './MenuItem';\nexport * from './MenuItem';\n\nexport { default as Modal, createModalCloseEvent } from './Modal';\nexport type { ModalCloseEvent } from './Modal';\nexport * from './Modal';\n\nexport { default as Pagination } from './Pagination';\nexport * from './Pagination';\n\nexport { default as PaginationItem } from './PaginationItem';\nexport * from './PaginationItem';\n\nexport { default as Paper } from './Paper';\nexport * from './Paper';\n\nexport { default as Portal } from './Portal';\nexport * from './Portal';\n\nexport { default as Radio } from './Radio';\nexport * from './Radio';\n\nexport { default as RadioGroup } from './RadioGroup';\nexport * from './RadioGroup';\n\nexport { default as Row } from './Row';\nexport * from './Row';\n\nexport { default as Slide } from './Slide';\nexport * from './Slide';\n\nexport { default as Slider } from './Slider';\nexport * from './Slider';\n\nexport { default as Snackbar } from './Snackbar';\nexport * from './Snackbar';\n\nexport { default as SnackbarContent } from './SnackbarContent';\nexport * from './SnackbarContent';\n\nexport { default as Spacer } from './Spacer';\nexport * from './Spacer';\n\nexport { default as SvgIcon } from './SvgIcon';\nexport * from './SvgIcon';\n\nexport { default as Switch } from './Switch';\nexport * from './Switch';\n\nexport { default as Tab } from './Tab';\nexport * from './Tab';\n\nexport { default as TabBase } from './TabBase';\nexport * from './TabBase';\n\nexport { default as Tabs } from './Tabs';\nexport * from './Tabs';\n\nexport { default as TextField } from './TextField';\nexport * from './TextField';\n\nexport { default as Toolbar } from './Toolbar';\nexport * from './Toolbar';\n\nexport { default as Tooltip } from './Tooltip';\nexport * from './Tooltip';\n\nexport { default as Typography } from './Typography';\nexport * from './Typography';\n\nexport * from './animated';\n"],"mappings":"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"}
@@ -1,3 +1,2 @@
1
1
  export { default as useHeight } from './useHeight';
2
- export { default as useWidth } from './useWidth';
3
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["default","useHeight","useWidth"],"sources":["index.ts"],"sourcesContent":["export { default as useHeight } from './useHeight';\nexport { default as useWidth } from './useWidth';\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,SAApB,QAAqC,aAArC;AACA,SAASD,OAAO,IAAIE,QAApB,QAAoC,YAApC"}
1
+ {"version":3,"names":["default","useHeight"],"sources":["index.ts"],"sourcesContent":["export { default as useHeight } from './useHeight';\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,SAApB,QAAqC,aAArC"}