@fountain-ui/lab 1.21.0 → 2.0.0-beta.10

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 (181) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/build/commonjs/AnimatedY/AnimatedY.js +10 -14
  3. package/build/commonjs/AnimatedY/AnimatedY.js.map +1 -1
  4. package/build/commonjs/AnimatedY/AnimatedYProps.js.map +1 -1
  5. package/build/commonjs/AnimatedY/index.js.map +1 -1
  6. package/build/commonjs/BottomSheet/BottomSheetNative.js +8 -2
  7. package/build/commonjs/BottomSheet/BottomSheetNative.js.map +1 -1
  8. package/build/commonjs/BottomSheet/BottomSheetProps.js.map +1 -1
  9. package/build/commonjs/BottomSheet/BottomSheetWeb.js +2 -6
  10. package/build/commonjs/BottomSheet/BottomSheetWeb.js.map +1 -1
  11. package/build/commonjs/BottomSheet/TransparentBackdrop.js +1 -1
  12. package/build/commonjs/BottomSheet/TransparentBackdrop.js.map +1 -1
  13. package/build/commonjs/BottomSheet/index.js.map +1 -1
  14. package/build/commonjs/BottomSheet/index.native.js.map +1 -1
  15. package/build/commonjs/Carousel/CarouselNative.js.map +1 -1
  16. package/build/commonjs/Carousel/CarouselProps.js.map +1 -1
  17. package/build/commonjs/Carousel/CarouselWeb.js +1 -1
  18. package/build/commonjs/Carousel/CarouselWeb.js.map +1 -1
  19. package/build/commonjs/Carousel/index.js.map +1 -1
  20. package/build/commonjs/Carousel/index.native.js.map +1 -1
  21. package/build/commonjs/Carousel/utils.js +1 -1
  22. package/build/commonjs/Carousel/utils.js.map +1 -1
  23. package/build/commonjs/ComicViewer/ComicViewer.js +168 -0
  24. package/build/commonjs/ComicViewer/ComicViewer.js.map +1 -0
  25. package/build/commonjs/ComicViewer/ComicViewerItemProps.js +6 -0
  26. package/build/commonjs/ComicViewer/ComicViewerItemProps.js.map +1 -0
  27. package/build/commonjs/ComicViewer/ComicViewerProps.js +2 -0
  28. package/build/commonjs/ComicViewer/ComicViewerProps.js.map +1 -0
  29. package/build/commonjs/ComicViewer/ViewerItem.js +88 -0
  30. package/build/commonjs/ComicViewer/ViewerItem.js.map +1 -0
  31. package/build/commonjs/ComicViewer/index.js +16 -0
  32. package/build/commonjs/ComicViewer/index.js.map +1 -0
  33. package/build/commonjs/DateTimePicker/DateTimePicker.js +7 -1
  34. package/build/commonjs/DateTimePicker/DateTimePicker.js.map +1 -1
  35. package/build/commonjs/DateTimePicker/DateTimePickerProps.js.map +1 -1
  36. package/build/commonjs/DateTimePicker/DateTimePickerProvider.js.map +1 -1
  37. package/build/commonjs/DateTimePicker/YearPicker.js +22 -17
  38. package/build/commonjs/DateTimePicker/YearPicker.js.map +1 -1
  39. package/build/commonjs/DateTimePicker/index.js +4 -4
  40. package/build/commonjs/DateTimePicker/index.js.map +1 -1
  41. package/build/commonjs/DateTimePicker/utils.js +2 -1
  42. package/build/commonjs/DateTimePicker/utils.js.map +1 -1
  43. package/build/commonjs/FlipCard/FlipCard.js +7 -13
  44. package/build/commonjs/FlipCard/FlipCard.js.map +1 -1
  45. package/build/commonjs/FlipCard/FlipCardProps.js.map +1 -1
  46. package/build/commonjs/FlipCard/index.js.map +1 -1
  47. package/build/commonjs/StatusBarProvider/Provider.js +1 -1
  48. package/build/commonjs/StatusBarProvider/Provider.js.map +1 -1
  49. package/build/commonjs/StatusBarProvider/StatusBarProvider.js.map +1 -1
  50. package/build/commonjs/StatusBarProvider/StatusBarProviderProps.js.map +1 -1
  51. package/build/commonjs/StatusBarProvider/index.js.map +1 -1
  52. package/build/commonjs/ViewPager/ChildrenMemoizedPage.js +1 -1
  53. package/build/commonjs/ViewPager/ChildrenMemoizedPage.js.map +1 -1
  54. package/build/commonjs/ViewPager/ViewPagerNative.js +19 -16
  55. package/build/commonjs/ViewPager/ViewPagerNative.js.map +1 -1
  56. package/build/commonjs/ViewPager/ViewPagerProps.js.map +1 -1
  57. package/build/commonjs/ViewPager/ViewPagerWeb.js.map +1 -1
  58. package/build/commonjs/ViewPager/index.js.map +1 -1
  59. package/build/commonjs/ViewPager/index.native.js.map +1 -1
  60. package/build/commonjs/ViewPager/utils.js +13 -11
  61. package/build/commonjs/ViewPager/utils.js.map +1 -1
  62. package/build/commonjs/hooks/index.js.map +1 -1
  63. package/build/commonjs/hooks/useAppbarStyles.js.map +1 -1
  64. package/build/commonjs/hooks/useElevationStyle.js.map +1 -1
  65. package/build/commonjs/hooks/useHeight.js +5 -4
  66. package/build/commonjs/hooks/useHeight.js.map +1 -1
  67. package/build/commonjs/hooks/useUnstableCollapsibleAppBar.js +56 -57
  68. package/build/commonjs/hooks/useUnstableCollapsibleAppBar.js.map +1 -1
  69. package/build/commonjs/hooks/useUnstableToggleDisplayStyle.js +9 -11
  70. package/build/commonjs/hooks/useUnstableToggleDisplayStyle.js.map +1 -1
  71. package/build/commonjs/index.js +25 -4
  72. package/build/commonjs/index.js.map +1 -1
  73. package/build/module/AnimatedY/AnimatedY.js +11 -10
  74. package/build/module/AnimatedY/AnimatedY.js.map +1 -1
  75. package/build/module/AnimatedY/AnimatedYProps.js.map +1 -1
  76. package/build/module/AnimatedY/index.js.map +1 -1
  77. package/build/module/BottomSheet/BottomSheetNative.js +8 -2
  78. package/build/module/BottomSheet/BottomSheetNative.js.map +1 -1
  79. package/build/module/BottomSheet/BottomSheetProps.js.map +1 -1
  80. package/build/module/BottomSheet/BottomSheetWeb.js +2 -6
  81. package/build/module/BottomSheet/BottomSheetWeb.js.map +1 -1
  82. package/build/module/BottomSheet/TransparentBackdrop.js +1 -1
  83. package/build/module/BottomSheet/TransparentBackdrop.js.map +1 -1
  84. package/build/module/BottomSheet/index.js.map +1 -1
  85. package/build/module/BottomSheet/index.native.js.map +1 -1
  86. package/build/module/Carousel/CarouselNative.js.map +1 -1
  87. package/build/module/Carousel/CarouselProps.js.map +1 -1
  88. package/build/module/Carousel/CarouselWeb.js +1 -1
  89. package/build/module/Carousel/CarouselWeb.js.map +1 -1
  90. package/build/module/Carousel/index.js.map +1 -1
  91. package/build/module/Carousel/index.native.js.map +1 -1
  92. package/build/module/Carousel/utils.js.map +1 -1
  93. package/build/module/ComicViewer/ComicViewer.js +151 -0
  94. package/build/module/ComicViewer/ComicViewer.js.map +1 -0
  95. package/build/module/ComicViewer/ComicViewerItemProps.js +2 -0
  96. package/build/module/ComicViewer/ComicViewerItemProps.js.map +1 -0
  97. package/build/module/ComicViewer/ComicViewerProps.js +2 -0
  98. package/build/module/ComicViewer/ComicViewerProps.js.map +1 -0
  99. package/build/module/ComicViewer/ViewerItem.js +72 -0
  100. package/build/module/ComicViewer/ViewerItem.js.map +1 -0
  101. package/build/module/ComicViewer/index.js +2 -0
  102. package/build/module/ComicViewer/index.js.map +1 -0
  103. package/build/module/DateTimePicker/DateTimePicker.js +7 -1
  104. package/build/module/DateTimePicker/DateTimePicker.js.map +1 -1
  105. package/build/module/DateTimePicker/DateTimePickerProps.js.map +1 -1
  106. package/build/module/DateTimePicker/DateTimePickerProvider.js.map +1 -1
  107. package/build/module/DateTimePicker/YearPicker.js +22 -17
  108. package/build/module/DateTimePicker/YearPicker.js.map +1 -1
  109. package/build/module/DateTimePicker/index.js.map +1 -1
  110. package/build/module/DateTimePicker/utils.js +2 -1
  111. package/build/module/DateTimePicker/utils.js.map +1 -1
  112. package/build/module/FlipCard/FlipCard.js +7 -7
  113. package/build/module/FlipCard/FlipCard.js.map +1 -1
  114. package/build/module/FlipCard/FlipCardProps.js.map +1 -1
  115. package/build/module/FlipCard/index.js.map +1 -1
  116. package/build/module/StatusBarProvider/Provider.js.map +1 -1
  117. package/build/module/StatusBarProvider/StatusBarProvider.js.map +1 -1
  118. package/build/module/StatusBarProvider/StatusBarProviderProps.js.map +1 -1
  119. package/build/module/StatusBarProvider/index.js.map +1 -1
  120. package/build/module/ViewPager/ChildrenMemoizedPage.js +1 -1
  121. package/build/module/ViewPager/ChildrenMemoizedPage.js.map +1 -1
  122. package/build/module/ViewPager/ViewPagerNative.js +14 -9
  123. package/build/module/ViewPager/ViewPagerNative.js.map +1 -1
  124. package/build/module/ViewPager/ViewPagerProps.js.map +1 -1
  125. package/build/module/ViewPager/ViewPagerWeb.js.map +1 -1
  126. package/build/module/ViewPager/index.js.map +1 -1
  127. package/build/module/ViewPager/index.native.js.map +1 -1
  128. package/build/module/ViewPager/utils.js +11 -10
  129. package/build/module/ViewPager/utils.js.map +1 -1
  130. package/build/module/hooks/index.js.map +1 -1
  131. package/build/module/hooks/useAppbarStyles.js.map +1 -1
  132. package/build/module/hooks/useElevationStyle.js.map +1 -1
  133. package/build/module/hooks/useHeight.js +4 -3
  134. package/build/module/hooks/useHeight.js.map +1 -1
  135. package/build/module/hooks/useUnstableCollapsibleAppBar.js +58 -43
  136. package/build/module/hooks/useUnstableCollapsibleAppBar.js.map +1 -1
  137. package/build/module/hooks/useUnstableToggleDisplayStyle.js +9 -7
  138. package/build/module/hooks/useUnstableToggleDisplayStyle.js.map +1 -1
  139. package/build/module/index.js +2 -0
  140. package/build/module/index.js.map +1 -1
  141. package/build/typescript/AnimatedY/AnimatedY.d.ts +0 -1
  142. package/build/typescript/BottomSheet/BottomSheetNative.d.ts +0 -1
  143. package/build/typescript/BottomSheet/BottomSheetWeb.d.ts +0 -1
  144. package/build/typescript/BottomSheet/TransparentBackdrop.d.ts +0 -1
  145. package/build/typescript/Carousel/CarouselNative.d.ts +0 -1
  146. package/build/typescript/ComicViewer/ComicViewer.d.ts +2 -0
  147. package/build/typescript/ComicViewer/ComicViewerItemProps.d.ts +12 -0
  148. package/build/typescript/ComicViewer/ComicViewerProps.d.ts +76 -0
  149. package/build/typescript/ComicViewer/ViewerItem.d.ts +7 -0
  150. package/build/typescript/ComicViewer/index.d.ts +3 -0
  151. package/build/typescript/DateTimePicker/DateTimePicker.d.ts +0 -1
  152. package/build/typescript/DateTimePicker/YearPicker.d.ts +0 -1
  153. package/build/typescript/FlipCard/FlipCard.d.ts +0 -1
  154. package/build/typescript/StatusBarProvider/StatusBarProvider.d.ts +0 -1
  155. package/build/typescript/ViewPager/ViewPagerNative.d.ts +0 -1
  156. package/build/typescript/ViewPager/ViewPagerWeb.d.ts +0 -1
  157. package/build/typescript/hooks/useUnstableCollapsibleAppBar.d.ts +2 -3
  158. package/build/typescript/hooks/useUnstableToggleDisplayStyle.d.ts +2 -2
  159. package/build/typescript/index.d.ts +2 -0
  160. package/package.json +13 -13
  161. package/src/AnimatedY/AnimatedY.tsx +13 -10
  162. package/src/BottomSheet/BottomSheetNative.tsx +6 -0
  163. package/src/ComicViewer/ComicViewer.tsx +162 -0
  164. package/src/ComicViewer/ComicViewerItemProps.ts +15 -0
  165. package/src/ComicViewer/ComicViewerProps.ts +90 -0
  166. package/src/ComicViewer/ViewerItem.tsx +76 -0
  167. package/src/ComicViewer/index.ts +3 -0
  168. package/src/DateTimePicker/DateTimePicker.tsx +6 -0
  169. package/src/DateTimePicker/YearPicker.tsx +2 -1
  170. package/src/FlipCard/FlipCard.tsx +8 -8
  171. package/src/ViewPager/ViewPagerNative.tsx +16 -9
  172. package/src/hooks/useHeight.ts +2 -2
  173. package/src/hooks/useUnstableCollapsibleAppBar.ts +59 -42
  174. package/src/hooks/useUnstableToggleDisplayStyle.ts +8 -6
  175. package/src/index.ts +3 -0
  176. package/build/commonjs/hooks/useWidth.js +0 -29
  177. package/build/commonjs/hooks/useWidth.js.map +0 -1
  178. package/build/module/hooks/useWidth.js +0 -15
  179. package/build/module/hooks/useWidth.js.map +0 -1
  180. package/build/typescript/hooks/useWidth.d.ts +0 -2
  181. package/src/hooks/useWidth.ts +0 -17
@@ -1 +1 @@
1
- {"version":3,"sources":["index.native.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA","sourcesContent":["export { default } from './ViewPagerNative';\n"]}
1
+ {"version":3,"names":[],"sources":["index.native.ts"],"sourcesContent":["export { default } from './ViewPagerNative';\n"],"mappings":";;;;;;;;;;;;AAAA"}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.usePageRenderer = exports.defaultPageComponent = exports.defaultLoading = exports.defaultEnableNeighborPageRerender = exports.defaultEnableVisibleHint = void 0;
6
+ exports.usePageRenderer = exports.defaultPageComponent = exports.defaultLoading = exports.defaultEnableVisibleHint = exports.defaultEnableNeighborPageRerender = void 0;
7
7
 
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
 
@@ -20,23 +20,25 @@ exports.defaultLoading = defaultLoading;
20
20
  const defaultPageComponent = _ChildrenMemoizedPage.default;
21
21
  exports.defaultPageComponent = defaultPageComponent;
22
22
 
23
- const usePageRenderer = ({
24
- enableVisibleHint,
25
- index: currentIndex,
26
- loading,
27
- pageComponent: PageComponent,
28
- pageForceRerenderKey,
29
- enableNeighborPageRerender
30
- }) => {
23
+ const usePageRenderer = _ref => {
24
+ let {
25
+ enableVisibleHint,
26
+ index: currentIndex,
27
+ loading,
28
+ pageComponent: PageComponent,
29
+ pageForceRerenderKey,
30
+ enableNeighborPageRerender
31
+ } = _ref;
32
+
31
33
  const pagesStateRef = _react.default.useRef([]);
32
34
 
33
35
  pagesStateRef.current[currentIndex] = { ...pagesStateRef.current[currentIndex],
34
36
  visited: true
35
37
  };
36
38
  return children => _react.default.Children.map(children, (child, index) => {
37
- var _pagesStateRef$curren, _pagesStateRef$curren2;
39
+ var _pagesStateRef$curren;
38
40
 
39
- const visited = (_pagesStateRef$curren = (_pagesStateRef$curren2 = pagesStateRef.current[index]) === null || _pagesStateRef$curren2 === void 0 ? void 0 : _pagesStateRef$curren2.visited) !== null && _pagesStateRef$curren !== void 0 ? _pagesStateRef$curren : false;
41
+ const visited = ((_pagesStateRef$curren = pagesStateRef.current[index]) === null || _pagesStateRef$curren === void 0 ? void 0 : _pagesStateRef$curren.visited) ?? false;
40
42
  const content = loading === 'eager' || visited ? child : null;
41
43
  const isVisible = enableVisibleHint ? index === currentIndex : false;
42
44
  const isNeighborIndex = index === currentIndex - 1 || index === currentIndex + 1;
@@ -1 +1 @@
1
- {"version":3,"sources":["utils.tsx"],"names":["defaultEnableVisibleHint","defaultEnableNeighborPageRerender","defaultLoading","defaultPageComponent","ChildrenMemoizedPage","usePageRenderer","enableVisibleHint","index","currentIndex","loading","pageComponent","PageComponent","pageForceRerenderKey","enableNeighborPageRerender","pagesStateRef","React","useRef","current","visited","children","Children","map","child","content","isVisible","isNeighborIndex"],"mappings":";;;;;;;AAAA;;AAEA;;;;AAmBO,MAAMA,wBAAiC,GAAG,KAA1C;;AAEA,MAAMC,iCAA0C,GAAG,KAAnD;;AAEA,MAAMC,cAAuB,GAAG,MAAhC;;AAEA,MAAMC,oBAAmC,GAAGC,6BAA5C;;;AAEA,MAAMC,eAAe,GAAG,CAAC;AAC5BC,EAAAA,iBAD4B;AAE5BC,EAAAA,KAAK,EAAEC,YAFqB;AAG5BC,EAAAA,OAH4B;AAI5BC,EAAAA,aAAa,EAAEC,aAJa;AAK5BC,EAAAA,oBAL4B;AAM5BC,EAAAA;AAN4B,CAAD,KAOO;AAClC,QAAMC,aAAa,GAAGC,eAAMC,MAAN,CAA+B,EAA/B,CAAtB;;AAEAF,EAAAA,aAAa,CAACG,OAAd,CAAsBT,YAAtB,IAAsC,EAClC,GAAGM,aAAa,CAACG,OAAd,CAAsBT,YAAtB,CAD+B;AAElCU,IAAAA,OAAO,EAAE;AAFyB,GAAtC;AAKA,SAAQC,QAAQ,IAAIJ,eAAMK,QAAN,CAAeC,GAAf,CAAmBF,QAAnB,EAA6B,CAACG,KAAD,EAAQf,KAAR,KAAkB;AAAA;;AAC/D,UAAMW,OAAO,sDAAGJ,aAAa,CAACG,OAAd,CAAsBV,KAAtB,CAAH,2DAAG,uBAA8BW,OAAjC,yEAA4C,KAAzD;AACA,UAAMK,OAAO,GAAId,OAAO,KAAK,OAAZ,IAAuBS,OAAxB,GAAmCI,KAAnC,GAA2C,IAA3D;AAEA,UAAME,SAAS,GAAGlB,iBAAiB,GAAIC,KAAK,KAAKC,YAAd,GAA8B,KAAjE;AACA,UAAMiB,eAAe,GAAGlB,KAAK,KAAKC,YAAY,GAAG,CAAzB,IAA8BD,KAAK,KAAKC,YAAY,GAAG,CAA/E;AAEA,wBACI,6BAAC,aAAD;AACI,MAAA,GAAG,EAAED,KADT;AAEI,MAAA,QAAQ,EAAEgB,OAFd;AAGI,MAAA,UAAU,EAAEV,0BAA0B,IAAIY,eAH9C;AAII,MAAA,SAAS,EAAED,SAJf;AAKI,MAAA,WAAW,EAAEZ;AALjB,MADJ;AASH,GAhBmB,CAApB;AAiBH,CAhCM","sourcesContent":["import React from 'react';\nimport ViewPagerProps, { Loading, PageComponent } from './ViewPagerProps';\nimport ChildrenMemoizedPage from './ChildrenMemoizedPage';\n\nexport interface PageState {\n visited?: boolean;\n}\n\nexport interface PageRenderOption {\n enableVisibleHint: boolean;\n enableNeighborPageRerender: boolean;\n index: number;\n loading: Loading;\n pageComponent: PageComponent;\n pageForceRerenderKey?: any;\n}\n\nexport interface PageRenderer {\n (children: ViewPagerProps['children']): React.ReactNode;\n}\n\nexport const defaultEnableVisibleHint: boolean = false;\n\nexport const defaultEnableNeighborPageRerender: boolean = false;\n\nexport const defaultLoading: Loading = 'lazy';\n\nexport const defaultPageComponent: PageComponent = ChildrenMemoizedPage;\n\nexport const usePageRenderer = ({\n enableVisibleHint,\n index: currentIndex,\n loading,\n pageComponent: PageComponent,\n pageForceRerenderKey,\n enableNeighborPageRerender,\n}: PageRenderOption): PageRenderer => {\n const pagesStateRef = React.useRef<Array<PageState>>([]);\n\n pagesStateRef.current[currentIndex] = {\n ...pagesStateRef.current[currentIndex],\n visited: true,\n };\n\n return (children => React.Children.map(children, (child, index) => {\n const visited = pagesStateRef.current[index]?.visited ?? false;\n const content = (loading === 'eager' || visited) ? child : null;\n\n const isVisible = enableVisibleHint ? (index === currentIndex) : false;\n const isNeighborIndex = index === currentIndex - 1 || index === currentIndex + 1;\n\n return (\n <PageComponent\n key={index}\n children={content}\n isNeighbor={enableNeighborPageRerender && isNeighborIndex}\n isVisible={isVisible}\n rerenderKey={pageForceRerenderKey}\n />\n );\n }));\n};\n"]}
1
+ {"version":3,"names":["defaultEnableVisibleHint","defaultEnableNeighborPageRerender","defaultLoading","defaultPageComponent","ChildrenMemoizedPage","usePageRenderer","enableVisibleHint","index","currentIndex","loading","pageComponent","PageComponent","pageForceRerenderKey","enableNeighborPageRerender","pagesStateRef","React","useRef","current","visited","children","Children","map","child","content","isVisible","isNeighborIndex"],"sources":["utils.tsx"],"sourcesContent":["import React from 'react';\nimport ViewPagerProps, { Loading, PageComponent } from './ViewPagerProps';\nimport ChildrenMemoizedPage from './ChildrenMemoizedPage';\n\nexport interface PageState {\n visited?: boolean;\n}\n\nexport interface PageRenderOption {\n enableVisibleHint: boolean;\n enableNeighborPageRerender: boolean;\n index: number;\n loading: Loading;\n pageComponent: PageComponent;\n pageForceRerenderKey?: any;\n}\n\nexport interface PageRenderer {\n (children: ViewPagerProps['children']): React.ReactNode;\n}\n\nexport const defaultEnableVisibleHint: boolean = false;\n\nexport const defaultEnableNeighborPageRerender: boolean = false;\n\nexport const defaultLoading: Loading = 'lazy';\n\nexport const defaultPageComponent: PageComponent = ChildrenMemoizedPage;\n\nexport const usePageRenderer = ({\n enableVisibleHint,\n index: currentIndex,\n loading,\n pageComponent: PageComponent,\n pageForceRerenderKey,\n enableNeighborPageRerender,\n}: PageRenderOption): PageRenderer => {\n const pagesStateRef = React.useRef<Array<PageState>>([]);\n\n pagesStateRef.current[currentIndex] = {\n ...pagesStateRef.current[currentIndex],\n visited: true,\n };\n\n return (children => React.Children.map(children, (child, index) => {\n const visited = pagesStateRef.current[index]?.visited ?? false;\n const content = (loading === 'eager' || visited) ? child : null;\n\n const isVisible = enableVisibleHint ? (index === currentIndex) : false;\n const isNeighborIndex = index === currentIndex - 1 || index === currentIndex + 1;\n\n return (\n <PageComponent\n key={index}\n children={content}\n isNeighbor={enableNeighborPageRerender && isNeighborIndex}\n isVisible={isVisible}\n rerenderKey={pageForceRerenderKey}\n />\n );\n }));\n};\n"],"mappings":";;;;;;;AAAA;;AAEA;;;;AAmBO,MAAMA,wBAAiC,GAAG,KAA1C;;AAEA,MAAMC,iCAA0C,GAAG,KAAnD;;AAEA,MAAMC,cAAuB,GAAG,MAAhC;;AAEA,MAAMC,oBAAmC,GAAGC,6BAA5C;;;AAEA,MAAMC,eAAe,GAAG,QAOO;EAAA,IAPN;IAC5BC,iBAD4B;IAE5BC,KAAK,EAAEC,YAFqB;IAG5BC,OAH4B;IAI5BC,aAAa,EAAEC,aAJa;IAK5BC,oBAL4B;IAM5BC;EAN4B,CAOM;;EAClC,MAAMC,aAAa,GAAGC,cAAA,CAAMC,MAAN,CAA+B,EAA/B,CAAtB;;EAEAF,aAAa,CAACG,OAAd,CAAsBT,YAAtB,IAAsC,EAClC,GAAGM,aAAa,CAACG,OAAd,CAAsBT,YAAtB,CAD+B;IAElCU,OAAO,EAAE;EAFyB,CAAtC;EAKA,OAAQC,QAAQ,IAAIJ,cAAA,CAAMK,QAAN,CAAeC,GAAf,CAAmBF,QAAnB,EAA6B,CAACG,KAAD,EAAQf,KAAR,KAAkB;IAAA;;IAC/D,MAAMW,OAAO,GAAG,0BAAAJ,aAAa,CAACG,OAAd,CAAsBV,KAAtB,iFAA8BW,OAA9B,KAAyC,KAAzD;IACA,MAAMK,OAAO,GAAId,OAAO,KAAK,OAAZ,IAAuBS,OAAxB,GAAmCI,KAAnC,GAA2C,IAA3D;IAEA,MAAME,SAAS,GAAGlB,iBAAiB,GAAIC,KAAK,KAAKC,YAAd,GAA8B,KAAjE;IACA,MAAMiB,eAAe,GAAGlB,KAAK,KAAKC,YAAY,GAAG,CAAzB,IAA8BD,KAAK,KAAKC,YAAY,GAAG,CAA/E;IAEA,oBACI,6BAAC,aAAD;MACI,GAAG,EAAED,KADT;MAEI,QAAQ,EAAEgB,OAFd;MAGI,UAAU,EAAEV,0BAA0B,IAAIY,eAH9C;MAII,SAAS,EAAED,SAJf;MAKI,WAAW,EAAEZ;IALjB,EADJ;EASH,CAhBmB,CAApB;AAiBH,CAhCM"}
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;AACA","sourcesContent":["export { default as useUnstableCollapsibleAppBar } from './useUnstableCollapsibleAppBar';\nexport { default as useUnstableToggleDisplayStyle } from './useUnstableToggleDisplayStyle';\n\n"]}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { default as useUnstableCollapsibleAppBar } from './useUnstableCollapsibleAppBar';\nexport { default as useUnstableToggleDisplayStyle } from './useUnstableToggleDisplayStyle';\n\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;;AACA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["useAppbarStyles.ts"],"names":["useAppBarStyles","floating","position","top","left","right"],"mappings":";;;;;;;AAIA,MAAMA,eAAwC,GAAG,YAA0B;AACvE,SAAO;AACHC,IAAAA,QAAQ,EAAE;AACNC,MAAAA,QAAQ,EAAE,UADJ;AAENC,MAAAA,GAAG,EAAE,CAFC;AAGNC,MAAAA,IAAI,EAAE,CAHA;AAINC,MAAAA,KAAK,EAAE;AAJD;AADP,GAAP;AAQH,CATD;;eAWeL,e","sourcesContent":["import { NamedStylesStringUnion, UseStyles } from '@fountain-ui/styles';\n\ntype AppBarStyles = NamedStylesStringUnion<'floating'>;\n\nconst useAppBarStyles: UseStyles<AppBarStyles> = function (): AppBarStyles {\n return {\n floating: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n },\n };\n};\n\nexport default useAppBarStyles;"]}
1
+ {"version":3,"names":["useAppBarStyles","floating","position","top","left","right"],"sources":["useAppbarStyles.ts"],"sourcesContent":["import { NamedStylesStringUnion, UseStyles } from '@fountain-ui/styles';\n\ntype AppBarStyles = NamedStylesStringUnion<'floating'>;\n\nconst useAppBarStyles: UseStyles<AppBarStyles> = function (): AppBarStyles {\n return {\n floating: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n },\n };\n};\n\nexport default useAppBarStyles;"],"mappings":";;;;;;;AAIA,MAAMA,eAAwC,GAAG,YAA0B;EACvE,OAAO;IACHC,QAAQ,EAAE;MACNC,QAAQ,EAAE,UADJ;MAENC,GAAG,EAAE,CAFC;MAGNC,IAAI,EAAE,CAHA;MAINC,KAAK,EAAE;IAJD;EADP,CAAP;AAQH,CATD;;eAWeL,e"}
@@ -1 +1 @@
1
- {"version":3,"sources":["useElevationStyle.ts"],"names":["useElevationStyle","elevation","theme","shadow","Platform","select","android","ios","web","boxShadow"],"mappings":";;;;;;;AAAA;;AAEA;;AAEe,SAASA,iBAAT,CAA2BC,SAA3B,EAAiD;AAC5D,QAAMC,KAAK,GAAG,uBAAd;AACA,QAAMC,MAAM,GAAGD,KAAK,CAACC,MAAN,CAAaF,SAAb,CAAf;AAEA,SAAOG,sBAASC,MAAT,CAAqB;AACxBC,IAAAA,OAAO,EAAEH,MAAF,aAAEA,MAAF,uBAAEA,MAAM,CAAEF,SADO;AAExBM,IAAAA,GAAG,EAAEJ,MAAF,aAAEA,MAAF,uBAAEA,MAAM,CAAEA,MAFW;AAGxBK,IAAAA,GAAG,EAAEL,MAAF,aAAEA,MAAF,uBAAEA,MAAM,CAAEM;AAHW,GAArB,CAAP;AAKH;;AAAA","sourcesContent":["import { Platform } from 'react-native';\nimport type { Elevation } from '@fountain-ui/styles';\nimport { useTheme } from '@fountain-ui/styles';\n\nexport default function useElevationStyle(elevation: Elevation) {\n const theme = useTheme();\n const shadow = theme.shadow[elevation];\n\n return Platform.select<any>({\n android: shadow?.elevation,\n ios: shadow?.shadow,\n web: shadow?.boxShadow,\n });\n};\n"]}
1
+ {"version":3,"names":["useElevationStyle","elevation","theme","useTheme","shadow","Platform","select","android","ios","web","boxShadow"],"sources":["useElevationStyle.ts"],"sourcesContent":["import { Platform } from 'react-native';\nimport type { Elevation } from '@fountain-ui/styles';\nimport { useTheme } from '@fountain-ui/styles';\n\nexport default function useElevationStyle(elevation: Elevation) {\n const theme = useTheme();\n const shadow = theme.shadow[elevation];\n\n return Platform.select<any>({\n android: shadow?.elevation,\n ios: shadow?.shadow,\n web: shadow?.boxShadow,\n });\n};\n"],"mappings":";;;;;;;AAAA;;AAEA;;AAEe,SAASA,iBAAT,CAA2BC,SAA3B,EAAiD;EAC5D,MAAMC,KAAK,GAAG,IAAAC,gBAAA,GAAd;EACA,MAAMC,MAAM,GAAGF,KAAK,CAACE,MAAN,CAAaH,SAAb,CAAf;EAEA,OAAOI,qBAAA,CAASC,MAAT,CAAqB;IACxBC,OAAO,EAAEH,MAAF,aAAEA,MAAF,uBAAEA,MAAM,CAAEH,SADO;IAExBO,GAAG,EAAEJ,MAAF,aAAEA,MAAF,uBAAEA,MAAM,CAAEA,MAFW;IAGxBK,GAAG,EAAEL,MAAF,aAAEA,MAAF,uBAAEA,MAAM,CAAEM;EAHW,CAArB,CAAP;AAKH;;AAAA"}
@@ -7,17 +7,18 @@ exports.default = useHeight;
7
7
 
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
 
10
- var _reactNativeReanimated = _interopRequireDefault(require("react-native-reanimated"));
10
+ var _reactNativeReanimated = require("react-native-reanimated");
11
11
 
12
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
13
13
 
14
- function useHeight(initialHeight = 0) {
14
+ function useHeight() {
15
+ let initialHeight = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
16
+
15
17
  const [height, setHeight] = _react.default.useState(initialHeight);
16
18
 
17
- const onLayout = _reactNativeReanimated.default.useWorkletCallback(e => {
19
+ const onLayout = (0, _reactNativeReanimated.useWorkletCallback)(e => {
18
20
  setHeight(e.nativeEvent.layout.height);
19
21
  }, []);
20
-
21
22
  return [height, onLayout];
22
23
  }
23
24
 
@@ -1 +1 @@
1
- {"version":3,"sources":["useHeight.ts"],"names":["useHeight","initialHeight","height","setHeight","React","useState","onLayout","Animated","useWorkletCallback","e","nativeEvent","layout"],"mappings":";;;;;;;AAAA;;AAEA;;;;AAIe,SAASA,SAAT,CAAmBC,aAAa,GAAG,CAAnC,EAAkE;AAC7E,QAAM,CAACC,MAAD,EAASC,SAAT,IAAsBC,eAAMC,QAAN,CAAuBJ,aAAvB,CAA5B;;AAEA,QAAMK,QAAQ,GAAGC,+BAASC,kBAAT,CAA6BC,CAAD,IAAO;AAChDN,IAAAA,SAAS,CAACM,CAAC,CAACC,WAAF,CAAcC,MAAd,CAAqBT,MAAtB,CAAT;AACH,GAFgB,EAEd,EAFc,CAAjB;;AAIA,SAAO,CAACA,MAAD,EAASI,QAAT,CAAP;AACH;;AAAA","sourcesContent":["import React from 'react';\nimport { ViewProps } from 'react-native';\nimport Animated from 'react-native-reanimated';\n\ntype OnLayoutCallback = ViewProps['onLayout'];\n\nexport default function useHeight(initialHeight = 0): [number, OnLayoutCallback] {\n const [height, setHeight] = React.useState<number>(initialHeight);\n\n const onLayout = Animated.useWorkletCallback((e) => {\n setHeight(e.nativeEvent.layout.height);\n }, []);\n\n return [height, onLayout];\n};\n"]}
1
+ {"version":3,"names":["useHeight","initialHeight","height","setHeight","React","useState","onLayout","useWorkletCallback","e","nativeEvent","layout"],"sources":["useHeight.ts"],"sourcesContent":["import React from 'react';\nimport { ViewProps } from 'react-native';\nimport { useWorkletCallback } from 'react-native-reanimated';\n\ntype OnLayoutCallback = ViewProps['onLayout'];\n\nexport default function useHeight(initialHeight = 0): [number, OnLayoutCallback] {\n const [height, setHeight] = React.useState<number>(initialHeight);\n\n const onLayout = useWorkletCallback((e) => {\n setHeight(e.nativeEvent.layout.height);\n }, []);\n\n return [height, onLayout];\n};\n"],"mappings":";;;;;;;AAAA;;AAEA;;;;AAIe,SAASA,SAAT,GAAkE;EAAA,IAA/CC,aAA+C,uEAA/B,CAA+B;;EAC7E,MAAM,CAACC,MAAD,EAASC,SAAT,IAAsBC,cAAA,CAAMC,QAAN,CAAuBJ,aAAvB,CAA5B;;EAEA,MAAMK,QAAQ,GAAG,IAAAC,yCAAA,EAAoBC,CAAD,IAAO;IACvCL,SAAS,CAACK,CAAC,CAACC,WAAF,CAAcC,MAAd,CAAqBR,MAAtB,CAAT;EACH,CAFgB,EAEd,EAFc,CAAjB;EAIA,OAAO,CAACA,MAAD,EAASI,QAAT,CAAP;AACH;;AAAA"}
@@ -5,11 +5,11 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = useUnstableCollapsibleAppBar;
7
7
 
8
- var _react = _interopRequireWildcard(require("react"));
8
+ var _react = require("react");
9
9
 
10
10
  var _reactNative = require("react-native");
11
11
 
12
- var _reactNativeReanimated = _interopRequireDefault(require("react-native-reanimated"));
12
+ var _reactNativeReanimated = require("react-native-reanimated");
13
13
 
14
14
  var _reactNativeSafeAreaContext = require("react-native-safe-area-context");
15
15
 
@@ -21,12 +21,7 @@ var _useHeight = _interopRequireDefault(require("./useHeight"));
21
21
 
22
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
23
 
24
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
-
26
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
-
28
24
  const defaultOptions = {
29
- translucent: false,
30
25
  shouldTranslateYReset: false
31
26
  };
32
27
  const ANIMATION_DURATION_MILLIS = 100;
@@ -39,9 +34,9 @@ function useLargerValueOfLastTwoValues(value) {
39
34
  return Math.max(...refLatestTwoValues.current);
40
35
  }
41
36
 
42
- function useUnstableCollapsibleAppBar(userOptions = defaultOptions) {
37
+ function useUnstableCollapsibleAppBar() {
38
+ let userOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultOptions;
43
39
  const {
44
- translucent,
45
40
  shouldTranslateYReset
46
41
  } = { ...defaultOptions,
47
42
  ...userOptions
@@ -51,53 +46,58 @@ function useUnstableCollapsibleAppBar(userOptions = defaultOptions) {
51
46
  const [appBarHeight, onAppBarLayout] = (0, _useHeight.default)();
52
47
  const appBarMaxHeight = useLargerValueOfLastTwoValues(appBarHeight);
53
48
  const [collapsibleToolbarHeight, onCollapsibleToolbarLayout] = (0, _useHeight.default)();
49
+ const maxTranslateY = (0, _reactNativeReanimated.useDerivedValue)(() => -collapsibleToolbarHeight, [collapsibleToolbarHeight]);
50
+ const translateY = (0, _reactNativeReanimated.useSharedValue)(0);
51
+ const lastTranslateY = (0, _reactNativeReanimated.useSharedValue)(0);
52
+ const lastOffsetY = (0, _reactNativeReanimated.useSharedValue)(0);
53
+ const prevOffsetY = (0, _reactNativeReanimated.useSharedValue)(0);
54
+ const overlapped = (0, _reactNativeReanimated.useSharedValue)(false);
55
+ const vectorY = (0, _reactNativeReanimated.useSharedValue)(0);
56
+ const elevationStyle = (0, _useElevationStyle.default)(4);
57
+ const animatedStyle = (0, _reactNativeReanimated.useAnimatedStyle)(() => {
58
+ const transform = [{
59
+ translateY: translateY.value
60
+ }];
61
+
62
+ if (_reactNative.Platform.OS === 'web') {
63
+ return {
64
+ transform,
65
+ boxShadow: overlapped.value ? elevationStyle === null || elevationStyle === void 0 ? void 0 : elevationStyle.boxShadow : 0
66
+ };
67
+ }
54
68
 
55
- const maxTranslateY = _reactNativeReanimated.default.useDerivedValue(() => -collapsibleToolbarHeight);
56
-
57
- const translateY = _reactNativeReanimated.default.useSharedValue(0);
58
-
59
- const lastTranslateY = _reactNativeReanimated.default.useSharedValue(0);
60
-
61
- const lastOffsetY = _reactNativeReanimated.default.useSharedValue(0);
62
-
63
- const prevOffsetY = _reactNativeReanimated.default.useSharedValue(0);
64
-
65
- const overlapped = _reactNativeReanimated.default.useSharedValue(false);
66
-
67
- const vectorY = _reactNativeReanimated.default.useSharedValue(0);
69
+ if (_reactNative.Platform.OS === 'android') {
70
+ return {
71
+ transform,
72
+ elevation: overlapped.value ? elevationStyle === null || elevationStyle === void 0 ? void 0 : elevationStyle.elevation : 0
73
+ };
74
+ }
68
75
 
69
- const elevationStyle = (0, _useElevationStyle.default)(4);
76
+ if (_reactNative.Platform.OS === 'ios') {
77
+ return {
78
+ transform,
79
+ shadowColor: elevationStyle === null || elevationStyle === void 0 ? void 0 : elevationStyle.shadowColor,
80
+ shadowOffset: elevationStyle === null || elevationStyle === void 0 ? void 0 : elevationStyle.shadowOffset,
81
+ shadowRadius: elevationStyle === null || elevationStyle === void 0 ? void 0 : elevationStyle.shadowRadius,
82
+ shadowOpacity: overlapped.value ? elevationStyle === null || elevationStyle === void 0 ? void 0 : elevationStyle.shadowOpacity : 0
83
+ };
84
+ }
70
85
 
71
- const animatedStyle = _reactNativeReanimated.default.useAnimatedStyle(() => {
72
- return _reactNative.Platform.OS === 'web' ? {
73
- transform: [{
74
- translateY: translateY.value
75
- }],
76
- boxShadow: overlapped.value ? elevationStyle === null || elevationStyle === void 0 ? void 0 : elevationStyle.boxShadow : 0
77
- } : {
78
- transform: [{
79
- translateY: translateY.value
80
- }],
81
- elevation: overlapped.value ? elevationStyle === null || elevationStyle === void 0 ? void 0 : elevationStyle.elevation : 0,
82
- shadowColor: elevationStyle === null || elevationStyle === void 0 ? void 0 : elevationStyle.shadowColor,
83
- shadowOffset: elevationStyle === null || elevationStyle === void 0 ? void 0 : elevationStyle.shadowOffset,
84
- shadowRadius: elevationStyle === null || elevationStyle === void 0 ? void 0 : elevationStyle.shadowRadius,
85
- shadowOpacity: overlapped.value ? elevationStyle === null || elevationStyle === void 0 ? void 0 : elevationStyle.shadowOpacity : 0
86
- };
87
- });
88
-
89
- const indexRef = _react.default.useRef(0);
90
-
91
- const offsetsRef = _react.default.useRef([]);
86
+ return {};
87
+ }, [
88
+ /**
89
+ * FIXME: Consider add `elevationStyle` to dependencies.
90
+ */
91
+ ]);
92
+ const indexRef = (0, _react.useRef)(0);
93
+ const offsetsRef = (0, _react.useRef)([]);
92
94
 
93
95
  const onScrollViewChanged = nextIndex => {
94
- var _offsetsRef$current$n;
95
-
96
96
  const prevIndex = indexRef.current;
97
97
 
98
98
  if (prevIndex === nextIndex) {
99
99
  if (shouldTranslateYReset) {
100
- translateY.value = _reactNativeReanimated.default.withTiming(0, {
100
+ translateY.value = (0, _reactNativeReanimated.withTiming)(0, {
101
101
  duration: ANIMATION_DURATION_MILLIS
102
102
  });
103
103
  vectorY.value = 0;
@@ -109,21 +109,21 @@ function useUnstableCollapsibleAppBar(userOptions = defaultOptions) {
109
109
  }
110
110
 
111
111
  offsetsRef.current[prevIndex] = lastOffsetY.value;
112
- const savedOffsetY = (_offsetsRef$current$n = offsetsRef.current[nextIndex]) !== null && _offsetsRef$current$n !== void 0 ? _offsetsRef$current$n : 0;
112
+ const savedOffsetY = offsetsRef.current[nextIndex] ?? 0;
113
113
  lastOffsetY.value = savedOffsetY;
114
114
  indexRef.current = nextIndex; // Determine whether to overlap every time index is changed.
115
115
 
116
116
  overlapped.value = savedOffsetY > 0; // If next ScrollView's offset is too short, expand app bar.
117
117
 
118
118
  if (translateY.value < 0 && savedOffsetY < appBarHeight) {
119
- translateY.value = _reactNativeReanimated.default.withTiming(0, {
119
+ translateY.value = (0, _reactNativeReanimated.withTiming)(0, {
120
120
  duration: ANIMATION_DURATION_MILLIS
121
121
  });
122
122
  vectorY.value = 0;
123
123
  }
124
124
  };
125
125
 
126
- const scrollHandler = _reactNativeReanimated.default.useAnimatedScrollHandler({
126
+ const scrollHandler = (0, _reactNativeReanimated.useAnimatedScrollHandler)({
127
127
  onBeginDrag: () => {
128
128
  lastTranslateY.value = translateY.value;
129
129
  },
@@ -145,13 +145,13 @@ function useUnstableCollapsibleAppBar(userOptions = defaultOptions) {
145
145
  } else {
146
146
  if (offsetY > -maxTy) {
147
147
  if (ty === 0) {
148
- translateY.value = _reactNativeReanimated.default.withTiming(Math.min(Math.max(-offsetY, maxTy), 0), {
148
+ translateY.value = (0, _reactNativeReanimated.withTiming)(Math.min(Math.max(-offsetY, maxTy), 0), {
149
149
  duration: ANIMATION_DURATION_MILLIS
150
150
  });
151
151
  }
152
152
  } else {
153
153
  if (ty === maxTy) {
154
- translateY.value = _reactNativeReanimated.default.withTiming(0, {
154
+ translateY.value = (0, _reactNativeReanimated.withTiming)(0, {
155
155
  duration: ANIMATION_DURATION_MILLIS
156
156
  });
157
157
  }
@@ -177,16 +177,15 @@ function useUnstableCollapsibleAppBar(userOptions = defaultOptions) {
177
177
  const threshold = maxTy * 0.5;
178
178
  const nextTranslateY = ty > threshold || offsetY < appBarHeight ? 0 : maxTy;
179
179
  overlapped.value = offsetY + nextTranslateY > 0;
180
- translateY.value = _reactNativeReanimated.default.withTiming(nextTranslateY, {
180
+ translateY.value = (0, _reactNativeReanimated.withTiming)(nextTranslateY, {
181
181
  duration: ANIMATION_DURATION_MILLIS
182
182
  });
183
183
  }
184
- });
185
-
184
+ }, []);
186
185
  const hasCollapsible = collapsibleToolbarHeight > 0;
187
- const appBarStyle = [animatedStyle, translucent ? {
186
+ const appBarStyle = [animatedStyle, {
188
187
  paddingTop: safeAreaInsets.top
189
- } : undefined, hasCollapsible ? styles.floating : undefined];
188
+ }, hasCollapsible ? styles.floating : undefined];
190
189
  return {
191
190
  appBarStyle,
192
191
  vectorY,
@@ -1 +1 @@
1
- {"version":3,"sources":["useUnstableCollapsibleAppBar.ts"],"names":["defaultOptions","translucent","shouldTranslateYReset","ANIMATION_DURATION_MILLIS","SUPPORTS_DRAG_DETECTION","Platform","OS","useLargerValueOfLastTwoValues","value","refLatestTwoValues","current","shift","push","Math","max","useUnstableCollapsibleAppBar","userOptions","styles","safeAreaInsets","appBarHeight","onAppBarLayout","appBarMaxHeight","collapsibleToolbarHeight","onCollapsibleToolbarLayout","maxTranslateY","Animated","useDerivedValue","translateY","useSharedValue","lastTranslateY","lastOffsetY","prevOffsetY","overlapped","vectorY","elevationStyle","animatedStyle","useAnimatedStyle","transform","boxShadow","elevation","shadowColor","shadowOffset","shadowRadius","shadowOpacity","indexRef","React","useRef","offsetsRef","onScrollViewChanged","nextIndex","prevIndex","withTiming","duration","savedOffsetY","scrollHandler","useAnimatedScrollHandler","onBeginDrag","onMomentumBegin","onScroll","event","offsetY","contentOffset","y","ty","maxTy","deltaY","dy","min","onEndDrag","onMomentumEnd","threshold","nextTranslateY","hasCollapsible","appBarStyle","paddingTop","top","undefined","floating","scrollContentInsets"],"mappings":"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","sourcesContent":["import React, { useRef } from 'react';\nimport { Falsy, Platform, RegisteredStyle, ScrollViewProps, ViewProps, ViewStyle } from 'react-native';\nimport Animated from 'react-native-reanimated';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport useAppbarStyles from './useAppbarStyles';\nimport useElevationStyle from './useElevationStyle';\nimport useHeight from './useHeight';\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 translucent?: boolean;\n shouldTranslateYReset?: boolean;\n}\n\nexport interface CollapsibleAppBar {\n appBarStyle: ViewStyleProp;\n vectorY: Animated.SharedValue<number>;\n onAppBarLayout: OnLayoutCallback;\n onCollapsibleToolbarLayout: OnLayoutCallback;\n onScroll: OnScroll;\n onScrollViewChanged: (index: number) => void;\n scrollContentInsets: ContentInsets;\n}\n\nconst defaultOptions: Required<Options> = {\n translucent: false,\n shouldTranslateYReset: false,\n};\n\nconst ANIMATION_DURATION_MILLIS = 100;\n\nconst SUPPORTS_DRAG_DETECTION = Platform.OS !== 'web';\n\n\nfunction useLargerValueOfLastTwoValues(value: number) {\n const refLatestTwoValues = useRef([0, 0]);\n\n refLatestTwoValues.current.shift();\n refLatestTwoValues.current.push(value);\n\n return Math.max(...refLatestTwoValues.current);\n}\n\n\nexport default function useUnstableCollapsibleAppBar(userOptions: Options = defaultOptions): CollapsibleAppBar {\n const {\n translucent,\n shouldTranslateYReset,\n }: 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 appBarMaxHeight = useLargerValueOfLastTwoValues(appBarHeight);\n const [collapsibleToolbarHeight, onCollapsibleToolbarLayout] = useHeight();\n\n const maxTranslateY = Animated.useDerivedValue(() => -collapsibleToolbarHeight);\n\n const translateY = Animated.useSharedValue<number>(0);\n const lastTranslateY = Animated.useSharedValue<number>(0);\n const lastOffsetY = Animated.useSharedValue<number>(0);\n const prevOffsetY = Animated.useSharedValue<number>(0);\n const overlapped = Animated.useSharedValue<boolean>(false);\n const vectorY = Animated.useSharedValue<number>(0);\n\n const elevationStyle = useElevationStyle(4);\n const animatedStyle = Animated.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 if (shouldTranslateYReset) {\n translateY.value = Animated.withTiming(0, {\n duration: ANIMATION_DURATION_MILLIS,\n });\n\n vectorY.value = 0;\n offsetsRef.current = [];\n overlapped.value = false;\n }\n\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 = Animated.withTiming(0, {\n duration: ANIMATION_DURATION_MILLIS,\n });\n\n vectorY.value = 0;\n }\n };\n\n const scrollHandler = Animated.useAnimatedScrollHandler({\n onBeginDrag: () => {\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 const deltaY = offsetY - prevOffsetY.value;\n vectorY.value = (vectorY.value * deltaY >= 0 && offsetY > 0) ? vectorY.value + deltaY : deltaY;\n prevOffsetY.value = offsetY;\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 = Animated.withTiming(Math.min(Math.max(-offsetY, maxTy), 0), {\n duration: ANIMATION_DURATION_MILLIS,\n });\n }\n } else {\n if (ty === maxTy) {\n translateY.value = Animated.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 = Animated.withTiming(nextTranslateY, {\n duration: ANIMATION_DURATION_MILLIS,\n });\n },\n });\n\n const hasCollapsible = collapsibleToolbarHeight > 0;\n\n const appBarStyle = [\n animatedStyle,\n translucent ? { paddingTop: safeAreaInsets.top } : undefined,\n hasCollapsible ? styles.floating : undefined,\n ];\n\n return {\n appBarStyle,\n vectorY,\n onAppBarLayout,\n onCollapsibleToolbarLayout,\n onScroll: scrollHandler,\n onScrollViewChanged,\n scrollContentInsets: { top: hasCollapsible ? appBarMaxHeight : 0 },\n };\n};\n"]}
1
+ {"version":3,"names":["defaultOptions","shouldTranslateYReset","ANIMATION_DURATION_MILLIS","SUPPORTS_DRAG_DETECTION","Platform","OS","useLargerValueOfLastTwoValues","value","refLatestTwoValues","useRef","current","shift","push","Math","max","useUnstableCollapsibleAppBar","userOptions","styles","useAppbarStyles","safeAreaInsets","useSafeAreaInsets","appBarHeight","onAppBarLayout","useHeight","appBarMaxHeight","collapsibleToolbarHeight","onCollapsibleToolbarLayout","maxTranslateY","useDerivedValue","translateY","useSharedValue","lastTranslateY","lastOffsetY","prevOffsetY","overlapped","vectorY","elevationStyle","useElevationStyle","animatedStyle","useAnimatedStyle","transform","boxShadow","elevation","shadowColor","shadowOffset","shadowRadius","shadowOpacity","indexRef","offsetsRef","onScrollViewChanged","nextIndex","prevIndex","withTiming","duration","savedOffsetY","scrollHandler","useAnimatedScrollHandler","onBeginDrag","onMomentumBegin","onScroll","event","offsetY","contentOffset","y","ty","maxTy","deltaY","dy","min","onEndDrag","onMomentumEnd","threshold","nextTranslateY","hasCollapsible","appBarStyle","paddingTop","top","floating","undefined","scrollContentInsets"],"sources":["useUnstableCollapsibleAppBar.ts"],"sourcesContent":["import { useRef } from 'react';\nimport { Falsy, Platform, RegisteredStyle, ScrollViewProps, ViewProps, ViewStyle } from 'react-native';\nimport type { SharedValue } from 'react-native-reanimated';\nimport {\n useAnimatedScrollHandler,\n useAnimatedStyle,\n useDerivedValue,\n useSharedValue,\n withTiming,\n} from 'react-native-reanimated';\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\nimport useAppbarStyles from './useAppbarStyles';\nimport useElevationStyle from './useElevationStyle';\nimport useHeight from './useHeight';\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 shouldTranslateYReset?: boolean;\n}\n\nexport interface CollapsibleAppBar {\n appBarStyle: ViewStyleProp;\n vectorY: SharedValue<number>;\n onAppBarLayout: OnLayoutCallback;\n onCollapsibleToolbarLayout: OnLayoutCallback;\n onScroll: OnScroll;\n onScrollViewChanged: (index: number) => void;\n scrollContentInsets: ContentInsets;\n}\n\nconst defaultOptions: Required<Options> = {\n shouldTranslateYReset: false,\n};\n\nconst ANIMATION_DURATION_MILLIS = 100;\n\nconst SUPPORTS_DRAG_DETECTION = Platform.OS !== 'web';\n\nfunction useLargerValueOfLastTwoValues(value: number) {\n const refLatestTwoValues = useRef([0, 0]);\n\n refLatestTwoValues.current.shift();\n refLatestTwoValues.current.push(value);\n\n return Math.max(...refLatestTwoValues.current);\n}\n\nexport default function useUnstableCollapsibleAppBar(userOptions: Options = defaultOptions): CollapsibleAppBar {\n const { shouldTranslateYReset }: 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 appBarMaxHeight = useLargerValueOfLastTwoValues(appBarHeight);\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 prevOffsetY = useSharedValue<number>(0);\n const overlapped = useSharedValue<boolean>(false);\n const vectorY = useSharedValue<number>(0);\n\n const elevationStyle = useElevationStyle(4);\n const animatedStyle = useAnimatedStyle(() => {\n const transform = [{ translateY: translateY.value }];\n\n if (Platform.OS === 'web') {\n return {\n transform,\n boxShadow: overlapped.value ? elevationStyle?.boxShadow : 0,\n };\n }\n if (Platform.OS === 'android') {\n return {\n transform,\n elevation: overlapped.value ? elevationStyle?.elevation : 0,\n };\n }\n if (Platform.OS === 'ios') {\n return {\n transform,\n shadowColor: elevationStyle?.shadowColor,\n shadowOffset: elevationStyle?.shadowOffset,\n shadowRadius: elevationStyle?.shadowRadius,\n shadowOpacity: overlapped.value ? elevationStyle?.shadowOpacity : 0,\n };\n }\n return {};\n }, [\n /**\n * FIXME: Consider add `elevationStyle` to dependencies.\n */\n ]);\n\n const indexRef = useRef<number>(0);\n const offsetsRef = useRef<Array<number>>([]);\n\n const onScrollViewChanged = (nextIndex: number) => {\n const prevIndex = indexRef.current;\n if (prevIndex === nextIndex) {\n if (shouldTranslateYReset) {\n translateY.value = withTiming(0, {\n duration: ANIMATION_DURATION_MILLIS,\n });\n\n vectorY.value = 0;\n offsetsRef.current = [];\n overlapped.value = false;\n }\n\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 vectorY.value = 0;\n }\n };\n\n const scrollHandler = useAnimatedScrollHandler({\n onBeginDrag: () => {\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 const deltaY = offsetY - prevOffsetY.value;\n vectorY.value = (vectorY.value * deltaY >= 0 && offsetY > 0) ? vectorY.value + deltaY : deltaY;\n prevOffsetY.value = offsetY;\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 vectorY,\n onAppBarLayout,\n onCollapsibleToolbarLayout,\n onScroll: scrollHandler,\n onScrollViewChanged,\n scrollContentInsets: { top: hasCollapsible ? appBarMaxHeight : 0 },\n };\n};\n"],"mappings":"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"}
@@ -5,24 +5,22 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = useAnimatedDisplayStyle;
7
7
 
8
- var _reactNativeReanimated = _interopRequireDefault(require("react-native-reanimated"));
8
+ var _reactNativeReanimated = require("react-native-reanimated");
9
9
 
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
-
12
- function useAnimatedDisplayStyle(vectorY, threshold = 200, defaultDisplay = 'flex') {
13
- const display = _reactNativeReanimated.default.useSharedValue(defaultDisplay);
14
-
15
- _reactNativeReanimated.default.useAnimatedReaction(() => vectorY.value, vy => {
10
+ function useAnimatedDisplayStyle(vectorY) {
11
+ let threshold = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 200;
12
+ let defaultDisplay = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'flex';
13
+ const display = (0, _reactNativeReanimated.useSharedValue)(defaultDisplay);
14
+ (0, _reactNativeReanimated.useAnimatedReaction)(() => vectorY.value, vy => {
16
15
  if (vy >= threshold) {
17
16
  display.value = 'none';
18
17
  } else if (vy < threshold) {
19
18
  display.value = 'flex';
20
19
  }
21
- });
22
-
23
- return _reactNativeReanimated.default.useAnimatedStyle(() => ({
20
+ }, [threshold]);
21
+ return (0, _reactNativeReanimated.useAnimatedStyle)(() => ({
24
22
  display: display.value
25
- }));
23
+ }), []);
26
24
  }
27
25
 
28
26
  ;
@@ -1 +1 @@
1
- {"version":3,"sources":["useUnstableToggleDisplayStyle.ts"],"names":["useAnimatedDisplayStyle","vectorY","threshold","defaultDisplay","display","Animated","useSharedValue","useAnimatedReaction","value","vy","useAnimatedStyle"],"mappings":";;;;;;;AAAA;;;;AAEe,SAASA,uBAAT,CACXC,OADW,EAEXC,SAAiB,GAAG,GAFT,EAGXC,cAA+B,GAAG,MAHvB,EAIb;AACE,QAAMC,OAAO,GAAGC,+BAASC,cAAT,CAAwBH,cAAxB,CAAhB;;AAEAE,iCAASE,mBAAT,CACI,MAAMN,OAAO,CAACO,KADlB,EAEKC,EAAD,IAAQ;AACJ,QAAIA,EAAE,IAAIP,SAAV,EAAqB;AACjBE,MAAAA,OAAO,CAACI,KAAR,GAAgB,MAAhB;AACH,KAFD,MAEO,IAAIC,EAAE,GAAGP,SAAT,EAAoB;AACvBE,MAAAA,OAAO,CAACI,KAAR,GAAgB,MAAhB;AACH;AACJ,GARL;;AAWA,SAAOH,+BAASK,gBAAT,CAA0B,OAAO;AACpCN,IAAAA,OAAO,EAAEA,OAAO,CAACI;AADmB,GAAP,CAA1B,CAAP;AAGH;;AAAA","sourcesContent":["import Animated from 'react-native-reanimated';\n\nexport default function useAnimatedDisplayStyle(\n vectorY: Animated.SharedValue<number>,\n threshold: number = 200,\n defaultDisplay: 'flex' | 'none' = 'flex',\n) {\n const display = Animated.useSharedValue(defaultDisplay);\n\n Animated.useAnimatedReaction(\n () => vectorY.value,\n (vy) => {\n if (vy >= threshold) {\n display.value = 'none';\n } else if (vy < threshold) {\n display.value = 'flex';\n }\n },\n );\n\n return Animated.useAnimatedStyle(() => ({\n display: display.value,\n }));\n};\n"]}
1
+ {"version":3,"names":["useAnimatedDisplayStyle","vectorY","threshold","defaultDisplay","display","useSharedValue","useAnimatedReaction","value","vy","useAnimatedStyle"],"sources":["useUnstableToggleDisplayStyle.ts"],"sourcesContent":["import type { SharedValue } from 'react-native-reanimated';\nimport { useAnimatedReaction, useAnimatedStyle, useSharedValue } from 'react-native-reanimated';\n\nexport default function useAnimatedDisplayStyle(\n vectorY: SharedValue<number>,\n threshold: number = 200,\n defaultDisplay: 'flex' | 'none' = 'flex',\n) {\n const display = useSharedValue(defaultDisplay);\n\n useAnimatedReaction(\n () => vectorY.value,\n (vy) => {\n if (vy >= threshold) {\n display.value = 'none';\n } else if (vy < threshold) {\n display.value = 'flex';\n }\n },\n [threshold],\n );\n\n return useAnimatedStyle(() => ({\n display: display.value,\n }), []);\n};\n"],"mappings":";;;;;;;AACA;;AAEe,SAASA,uBAAT,CACXC,OADW,EAIb;EAAA,IAFEC,SAEF,uEAFsB,GAEtB;EAAA,IADEC,cACF,uEADoC,MACpC;EACE,MAAMC,OAAO,GAAG,IAAAC,qCAAA,EAAeF,cAAf,CAAhB;EAEA,IAAAG,0CAAA,EACI,MAAML,OAAO,CAACM,KADlB,EAEKC,EAAD,IAAQ;IACJ,IAAIA,EAAE,IAAIN,SAAV,EAAqB;MACjBE,OAAO,CAACG,KAAR,GAAgB,MAAhB;IACH,CAFD,MAEO,IAAIC,EAAE,GAAGN,SAAT,EAAoB;MACvBE,OAAO,CAACG,KAAR,GAAgB,MAAhB;IACH;EACJ,CARL,EASI,CAACL,SAAD,CATJ;EAYA,OAAO,IAAAO,uCAAA,EAAiB,OAAO;IAC3BL,OAAO,EAAEA,OAAO,CAACG;EADU,CAAP,CAAjB,EAEH,EAFG,CAAP;AAGH;;AAAA"}
@@ -9,6 +9,7 @@ var _exportNames = {
9
9
  DateTimePicker: true,
10
10
  FlipCard: true,
11
11
  ViewPager: true,
12
+ ComicViewer: true,
12
13
  StatusBarProvider: true,
13
14
  useStatusBarContext: true
14
15
  };
@@ -24,6 +25,12 @@ Object.defineProperty(exports, "Carousel", {
24
25
  return _Carousel.default;
25
26
  }
26
27
  });
28
+ Object.defineProperty(exports, "ComicViewer", {
29
+ enumerable: true,
30
+ get: function () {
31
+ return _ComicViewer.default;
32
+ }
33
+ });
27
34
  Object.defineProperty(exports, "DateTimePicker", {
28
35
  enumerable: true,
29
36
  get: function () {
@@ -36,16 +43,16 @@ Object.defineProperty(exports, "FlipCard", {
36
43
  return _FlipCard.default;
37
44
  }
38
45
  });
39
- Object.defineProperty(exports, "ViewPager", {
46
+ Object.defineProperty(exports, "StatusBarProvider", {
40
47
  enumerable: true,
41
48
  get: function () {
42
- return _ViewPager.default;
49
+ return _StatusBarProvider.default;
43
50
  }
44
51
  });
45
- Object.defineProperty(exports, "StatusBarProvider", {
52
+ Object.defineProperty(exports, "ViewPager", {
46
53
  enumerable: true,
47
54
  get: function () {
48
- return _StatusBarProvider.default;
55
+ return _ViewPager.default;
49
56
  }
50
57
  });
51
58
  Object.defineProperty(exports, "useStatusBarContext", {
@@ -125,6 +132,20 @@ Object.keys(_ViewPager).forEach(function (key) {
125
132
  });
126
133
  });
127
134
 
135
+ var _ComicViewer = _interopRequireWildcard(require("./ComicViewer"));
136
+
137
+ Object.keys(_ComicViewer).forEach(function (key) {
138
+ if (key === "default" || key === "__esModule") return;
139
+ if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
140
+ if (key in exports && exports[key] === _ComicViewer[key]) return;
141
+ Object.defineProperty(exports, key, {
142
+ enumerable: true,
143
+ get: function () {
144
+ return _ComicViewer[key];
145
+ }
146
+ });
147
+ });
148
+
128
149
  var _StatusBarProvider = _interopRequireWildcard(require("./StatusBarProvider"));
129
150
 
130
151
  Object.keys(_StatusBarProvider).forEach(function (key) {
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEA;;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAEA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA","sourcesContent":["export { default as BottomSheet } from './BottomSheet';\nexport * from './BottomSheet';\n\nexport { default as Carousel } from './Carousel';\nexport * from './Carousel';\n\nexport { default as DateTimePicker } from './DateTimePicker';\nexport * from './DateTimePicker';\n\nexport { default as FlipCard } from './FlipCard';\nexport * from './FlipCard';\n\nexport { default as ViewPager } from './ViewPager';\nexport * from './ViewPager';\n\nexport { default as StatusBarProvider, useStatusBarContext } from './StatusBarProvider';\nexport * from './StatusBarProvider';\n\nexport * from './hooks';\n"]}
1
+ {"version":3,"names":[],"sources":["index.ts"],"sourcesContent":["export { default as BottomSheet } from './BottomSheet';\nexport * from './BottomSheet';\n\nexport { default as Carousel } from './Carousel';\nexport * from './Carousel';\n\nexport { default as DateTimePicker } from './DateTimePicker';\nexport * from './DateTimePicker';\n\nexport { default as FlipCard } from './FlipCard';\nexport * from './FlipCard';\n\nexport { default as ViewPager } from './ViewPager';\nexport * from './ViewPager';\n\nexport { default as ComicViewer } from './ComicViewer';\nexport * from './ComicViewer';\n\nexport { default as StatusBarProvider, useStatusBarContext } from './StatusBarProvider';\nexport * from './StatusBarProvider';\n\nexport * from './hooks';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAEA;;AACA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAEA;;AACA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAEA;;AACA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAEA;;AACA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAEA;;AACA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAEA;;AACA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AAEA;;AAAA;EAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA"}
@@ -1,23 +1,24 @@
1
- import React from 'react';
2
- import Animated, { Easing } from 'react-native-reanimated';
1
+ import React, { useEffect } from 'react';
2
+ import Animated, { Easing, useAnimatedStyle, useSharedValue, withTiming } from 'react-native-reanimated';
3
+ const ANIMATION_CONFIG = {
4
+ duration: 150,
5
+ easing: Easing.out(Easing.exp)
6
+ };
3
7
  export default function AnimatedY(props) {
4
8
  const {
5
9
  children,
6
10
  translateY,
7
11
  style
8
12
  } = props;
9
- const animatedY = Animated.useSharedValue(translateY);
10
- const animatedStyle = Animated.useAnimatedStyle(() => ({
13
+ const animatedY = useSharedValue(translateY);
14
+ const animatedStyle = useAnimatedStyle(() => ({
11
15
  transform: [{
12
16
  translateY: animatedY.value
13
17
  }]
14
- }));
15
- React.useEffect(() => {
18
+ }), []);
19
+ useEffect(() => {
16
20
  if (translateY >= 0) {
17
- animatedY.value = Animated.withTiming(translateY, {
18
- duration: 150,
19
- easing: Easing.out(Easing.exp)
20
- });
21
+ animatedY.value = withTiming(translateY, ANIMATION_CONFIG);
21
22
  }
22
23
  }, [translateY]);
23
24
  return /*#__PURE__*/React.createElement(Animated.View, {
@@ -1 +1 @@
1
- {"version":3,"sources":["AnimatedY.tsx"],"names":["React","Animated","Easing","AnimatedY","props","children","translateY","style","animatedY","useSharedValue","animatedStyle","useAnimatedStyle","transform","value","useEffect","withTiming","duration","easing","out","exp"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,OAAOC,QAAP,IAAmBC,MAAnB,QAAiC,yBAAjC;AAGA,eAAe,SAASC,SAAT,CAAmBC,KAAnB,EAA0C;AACrD,QAAM;AACFC,IAAAA,QADE;AAEFC,IAAAA,UAFE;AAGFC,IAAAA;AAHE,MAIFH,KAJJ;AAMA,QAAMI,SAAS,GAAGP,QAAQ,CAACQ,cAAT,CAAwBH,UAAxB,CAAlB;AACA,QAAMI,aAAa,GAAGT,QAAQ,CAACU,gBAAT,CAA0B,OAAO;AACnDC,IAAAA,SAAS,EAAE,CAAC;AAAEN,MAAAA,UAAU,EAAEE,SAAS,CAACK;AAAxB,KAAD;AADwC,GAAP,CAA1B,CAAtB;AAIAb,EAAAA,KAAK,CAACc,SAAN,CAAgB,MAAM;AAClB,QAAIR,UAAU,IAAI,CAAlB,EAAqB;AACjBE,MAAAA,SAAS,CAACK,KAAV,GAAkBZ,QAAQ,CAACc,UAAT,CAAoBT,UAApB,EAAgC;AAC9CU,QAAAA,QAAQ,EAAE,GADoC;AAE9CC,QAAAA,MAAM,EAAEf,MAAM,CAACgB,GAAP,CAAWhB,MAAM,CAACiB,GAAlB;AAFsC,OAAhC,CAAlB;AAIH;AACJ,GAPD,EAOG,CAACb,UAAD,CAPH;AASA,sBACI,oBAAC,QAAD,CAAU,IAAV;AACI,IAAA,QAAQ,EAAED,QADd;AAEI,IAAA,KAAK,EAAE,CACHK,aADG,EAEHH,KAFG;AAFX,IADJ;AASH;AAAA","sourcesContent":["import React from 'react';\nimport Animated, { Easing } from 'react-native-reanimated';\nimport type AnimatedYProps from './AnimatedYProps';\n\nexport default function AnimatedY(props: AnimatedYProps) {\n const {\n children,\n translateY,\n style,\n } = props;\n\n const animatedY = Animated.useSharedValue(translateY);\n const animatedStyle = Animated.useAnimatedStyle(() => ({\n transform: [{ translateY: animatedY.value }],\n }));\n\n React.useEffect(() => {\n if (translateY >= 0) {\n animatedY.value = Animated.withTiming(translateY, {\n duration: 150,\n easing: Easing.out(Easing.exp),\n });\n }\n }, [translateY]);\n\n return (\n <Animated.View\n children={children}\n style={[\n animatedStyle,\n style,\n ]}\n />\n );\n};\n"]}
1
+ {"version":3,"names":["React","useEffect","Animated","Easing","useAnimatedStyle","useSharedValue","withTiming","ANIMATION_CONFIG","duration","easing","out","exp","AnimatedY","props","children","translateY","style","animatedY","animatedStyle","transform","value"],"sources":["AnimatedY.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport type { WithTimingConfig } from 'react-native-reanimated';\nimport Animated, { Easing, useAnimatedStyle, useSharedValue, withTiming } from 'react-native-reanimated';\nimport type AnimatedYProps from './AnimatedYProps';\n\nconst ANIMATION_CONFIG: Readonly<WithTimingConfig> = {\n duration: 150,\n easing: Easing.out(Easing.exp),\n};\n\nexport default function AnimatedY(props: AnimatedYProps) {\n const {\n children,\n translateY,\n style,\n } = props;\n\n const animatedY = useSharedValue(translateY);\n const animatedStyle = useAnimatedStyle(() => ({\n transform: [{ translateY: animatedY.value }],\n }), []);\n\n useEffect(() => {\n if (translateY >= 0) {\n animatedY.value = withTiming(translateY, ANIMATION_CONFIG);\n }\n }, [translateY]);\n\n return (\n <Animated.View\n children={children}\n style={[\n animatedStyle,\n style,\n ]}\n />\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAP,IAAgBC,SAAhB,QAAiC,OAAjC;AAEA,OAAOC,QAAP,IAAmBC,MAAnB,EAA2BC,gBAA3B,EAA6CC,cAA7C,EAA6DC,UAA7D,QAA+E,yBAA/E;AAGA,MAAMC,gBAA4C,GAAG;EACjDC,QAAQ,EAAE,GADuC;EAEjDC,MAAM,EAAEN,MAAM,CAACO,GAAP,CAAWP,MAAM,CAACQ,GAAlB;AAFyC,CAArD;AAKA,eAAe,SAASC,SAAT,CAAmBC,KAAnB,EAA0C;EACrD,MAAM;IACFC,QADE;IAEFC,UAFE;IAGFC;EAHE,IAIFH,KAJJ;EAMA,MAAMI,SAAS,GAAGZ,cAAc,CAACU,UAAD,CAAhC;EACA,MAAMG,aAAa,GAAGd,gBAAgB,CAAC,OAAO;IAC1Ce,SAAS,EAAE,CAAC;MAAEJ,UAAU,EAAEE,SAAS,CAACG;IAAxB,CAAD;EAD+B,CAAP,CAAD,EAElC,EAFkC,CAAtC;EAIAnB,SAAS,CAAC,MAAM;IACZ,IAAIc,UAAU,IAAI,CAAlB,EAAqB;MACjBE,SAAS,CAACG,KAAV,GAAkBd,UAAU,CAACS,UAAD,EAAaR,gBAAb,CAA5B;IACH;EACJ,CAJQ,EAIN,CAACQ,UAAD,CAJM,CAAT;EAMA,oBACI,oBAAC,QAAD,CAAU,IAAV;IACI,QAAQ,EAAED,QADd;IAEI,KAAK,EAAE,CACHI,aADG,EAEHF,KAFG;EAFX,EADJ;AASH;AAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","sourcesContent":[]}
1
+ {"version":3,"names":[],"sources":["AnimatedYProps.ts"],"sourcesContent":["import React from 'react';\nimport type { ComponentProps } from '@fountain-ui/core';\n\nexport default interface AnimatedYProps extends ComponentProps<{\n /**\n * The content of the component.\n */\n children?: React.ReactNode;\n\n /**\n * The translate y value of the component.\n */\n translateY: number;\n}> {}\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"names":["default"],"mappings":"AAAA,SAASA,OAAT,QAAwB,aAAxB","sourcesContent":["export { default } from './AnimatedY';\nexport type { default as AnimatedYProps } from './AnimatedYProps';\n"]}
1
+ {"version":3,"names":["default"],"sources":["index.ts"],"sourcesContent":["export { default } from './AnimatedY';\nexport type { default as AnimatedYProps } from './AnimatedYProps';\n"],"mappings":"AAAA,SAASA,OAAT,QAAwB,aAAxB"}
@@ -1,4 +1,4 @@
1
- function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
1
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
2
2
 
3
3
  import React from 'react';
4
4
  import { Platform } from 'react-native';
@@ -44,6 +44,7 @@ export default function BottomSheet(props) {
44
44
  } else {
45
45
  var _bottomSheetRef$curre3;
46
46
 
47
+ // @ts-ignore
47
48
  (_bottomSheetRef$curre3 = bottomSheetRef.current) === null || _bottomSheetRef$curre3 === void 0 ? void 0 : _bottomSheetRef$curre3.snapToIndex(index);
48
49
  }
49
50
  }, [index]);
@@ -57,6 +58,9 @@ export default function BottomSheet(props) {
57
58
  web: shadow === null || shadow === void 0 ? void 0 : shadow.boxShadow
58
59
  })
59
60
  };
61
+ const backgroundStyle = {
62
+ backgroundColor: theme.palette.paper.default
63
+ };
60
64
  const isBackdropTransparent = backdropOpacity <= 0;
61
65
 
62
66
  const OpacityAwareBackdrop = props => /*#__PURE__*/React.createElement(BottomSheetBackdrop, _extends({}, props, {
@@ -66,7 +70,9 @@ export default function BottomSheet(props) {
66
70
  }));
67
71
 
68
72
  return /*#__PURE__*/React.createElement(BottomSheetModalProvider, null, /*#__PURE__*/React.createElement(BottomSheetModal, {
69
- backdropComponent: isBackdropTransparent ? TransparentBackdrop : OpacityAwareBackdrop,
73
+ backdropComponent: isBackdropTransparent ? TransparentBackdrop : OpacityAwareBackdrop // @ts-ignore
74
+ ,
75
+ backgroundStyle: backgroundStyle,
70
76
  index: index,
71
77
  handleComponent: NoHandle,
72
78
  onChange: handleChange,