@unif/react-native-camera 2.6.0 → 2.7.0

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 (259) hide show
  1. package/README.md +14 -0
  2. package/lib/module/camera/Camera.js +96 -27
  3. package/lib/module/camera/Camera.js.map +1 -1
  4. package/lib/module/camera/CaptureFlash.js +38 -0
  5. package/lib/module/camera/CaptureFlash.js.map +1 -0
  6. package/lib/module/camera/CaptureFlash.test.js +19 -0
  7. package/lib/module/camera/CaptureFlash.test.js.map +1 -0
  8. package/lib/module/camera/Container.js +166 -64
  9. package/lib/module/camera/Container.js.map +1 -1
  10. package/lib/module/camera/FocusIndicator.js +99 -23
  11. package/lib/module/camera/FocusIndicator.js.map +1 -1
  12. package/lib/module/camera/FocusIndicator.test.js +27 -0
  13. package/lib/module/camera/FocusIndicator.test.js.map +1 -0
  14. package/lib/module/camera/colors/dark.js +22 -0
  15. package/lib/module/camera/colors/dark.js.map +1 -0
  16. package/lib/module/camera/colors/dark.test.js +10 -0
  17. package/lib/module/camera/colors/dark.test.js.map +1 -0
  18. package/lib/module/camera/footer/ActionRow.js +65 -0
  19. package/lib/module/camera/footer/ActionRow.js.map +1 -0
  20. package/lib/module/camera/footer/ActionRow.test.js +53 -0
  21. package/lib/module/camera/footer/ActionRow.test.js.map +1 -0
  22. package/lib/module/camera/footer/FlipButton.js +31 -0
  23. package/lib/module/camera/footer/FlipButton.js.map +1 -0
  24. package/lib/module/camera/footer/FlipButton.test.js +16 -0
  25. package/lib/module/camera/footer/FlipButton.test.js.map +1 -0
  26. package/lib/module/camera/footer/ModeSwitcherPill.js +89 -0
  27. package/lib/module/camera/footer/ModeSwitcherPill.js.map +1 -0
  28. package/lib/module/camera/footer/ModeSwitcherPill.test.js +43 -0
  29. package/lib/module/camera/footer/ModeSwitcherPill.test.js.map +1 -0
  30. package/lib/module/camera/footer/RecordingTimer.js +66 -0
  31. package/lib/module/camera/footer/RecordingTimer.js.map +1 -0
  32. package/lib/module/camera/footer/RecordingTimer.test.js +20 -0
  33. package/lib/module/camera/footer/RecordingTimer.test.js.map +1 -0
  34. package/lib/module/camera/footer/Shutter.js +70 -0
  35. package/lib/module/camera/footer/Shutter.js.map +1 -0
  36. package/lib/module/camera/footer/Shutter.test.js +42 -0
  37. package/lib/module/camera/footer/Shutter.test.js.map +1 -0
  38. package/lib/module/camera/footer/ThumbnailStack.js +71 -0
  39. package/lib/module/camera/footer/ThumbnailStack.js.map +1 -0
  40. package/lib/module/camera/footer/ThumbnailStack.test.js +30 -0
  41. package/lib/module/camera/footer/ThumbnailStack.test.js.map +1 -0
  42. package/lib/module/camera/footer/ZoomChips.js +57 -0
  43. package/lib/module/camera/footer/ZoomChips.js.map +1 -0
  44. package/lib/module/camera/footer/ZoomChips.test.js +17 -0
  45. package/lib/module/camera/footer/ZoomChips.test.js.map +1 -0
  46. package/lib/module/camera/footer/index.js +7 -1
  47. package/lib/module/camera/footer/index.js.map +1 -1
  48. package/lib/module/camera/icons/VolumeIcon.js +44 -0
  49. package/lib/module/camera/icons/VolumeIcon.js.map +1 -0
  50. package/lib/module/camera/icons/VolumeIcon.test.js +18 -0
  51. package/lib/module/camera/icons/VolumeIcon.test.js.map +1 -0
  52. package/lib/module/camera/index.js +3 -1
  53. package/lib/module/camera/index.js.map +1 -1
  54. package/lib/module/camera/preview/PreviewBottomBar.js +69 -0
  55. package/lib/module/camera/preview/PreviewBottomBar.js.map +1 -0
  56. package/lib/module/camera/preview/PreviewBottomBar.test.js +46 -0
  57. package/lib/module/camera/preview/PreviewBottomBar.test.js.map +1 -0
  58. package/lib/module/camera/preview/PreviewOverlay.js +89 -0
  59. package/lib/module/camera/preview/PreviewOverlay.js.map +1 -0
  60. package/lib/module/camera/preview/PreviewOverlay.test.js +45 -0
  61. package/lib/module/camera/preview/PreviewOverlay.test.js.map +1 -0
  62. package/lib/module/camera/preview/PreviewTopBar.js +96 -0
  63. package/lib/module/camera/preview/PreviewTopBar.js.map +1 -0
  64. package/lib/module/camera/preview/PreviewTopBar.test.js +44 -0
  65. package/lib/module/camera/preview/PreviewTopBar.test.js.map +1 -0
  66. package/lib/module/camera/preview/groupTypes.js +11 -0
  67. package/lib/module/camera/preview/groupTypes.js.map +1 -0
  68. package/lib/module/camera/preview/groupTypes.test.js +25 -0
  69. package/lib/module/camera/preview/groupTypes.test.js.map +1 -0
  70. package/lib/module/camera/preview/index.js +3 -4
  71. package/lib/module/camera/preview/index.js.map +1 -1
  72. package/lib/module/camera/setup/SideRail.js +138 -0
  73. package/lib/module/camera/setup/SideRail.js.map +1 -0
  74. package/lib/module/camera/setup/SideRail.test.js +49 -0
  75. package/lib/module/camera/setup/SideRail.test.js.map +1 -0
  76. package/lib/module/camera/setup/index.js +1 -1
  77. package/lib/module/camera/setup/index.js.map +1 -1
  78. package/lib/module/components/Carousel/SlideItem.js +5 -3
  79. package/lib/module/components/Carousel/SlideItem.js.map +1 -1
  80. package/lib/module/components/Carousel/SlideItem.test.js +39 -0
  81. package/lib/module/components/Carousel/SlideItem.test.js.map +1 -0
  82. package/lib/module/components/VideoPlayer.js +34 -0
  83. package/lib/module/components/VideoPlayer.js.map +1 -0
  84. package/lib/module/components/VideoPlayer.test.js +15 -0
  85. package/lib/module/components/VideoPlayer.test.js.map +1 -0
  86. package/lib/module/components/index.js +0 -1
  87. package/lib/module/components/index.js.map +1 -1
  88. package/lib/module/hooks/index.js +0 -1
  89. package/lib/module/hooks/index.js.map +1 -1
  90. package/lib/typescript/src/camera/Camera.d.ts +3 -0
  91. package/lib/typescript/src/camera/Camera.d.ts.map +1 -1
  92. package/lib/typescript/src/camera/CaptureFlash.d.ts +6 -0
  93. package/lib/typescript/src/camera/CaptureFlash.d.ts.map +1 -0
  94. package/lib/typescript/src/camera/CaptureFlash.test.d.ts +2 -0
  95. package/lib/typescript/src/camera/CaptureFlash.test.d.ts.map +1 -0
  96. package/lib/typescript/src/camera/Container.d.ts.map +1 -1
  97. package/lib/typescript/src/camera/FocusIndicator.d.ts.map +1 -1
  98. package/lib/typescript/src/camera/FocusIndicator.test.d.ts +2 -0
  99. package/lib/typescript/src/camera/FocusIndicator.test.d.ts.map +1 -0
  100. package/lib/typescript/src/camera/colors/dark.d.ts +18 -0
  101. package/lib/typescript/src/camera/colors/dark.d.ts.map +1 -0
  102. package/lib/typescript/src/camera/colors/dark.test.d.ts +2 -0
  103. package/lib/typescript/src/camera/colors/dark.test.d.ts.map +1 -0
  104. package/lib/typescript/src/camera/footer/ActionRow.d.ts +14 -0
  105. package/lib/typescript/src/camera/footer/ActionRow.d.ts.map +1 -0
  106. package/lib/typescript/src/camera/footer/ActionRow.test.d.ts +2 -0
  107. package/lib/typescript/src/camera/footer/ActionRow.test.d.ts.map +1 -0
  108. package/lib/typescript/src/camera/footer/FlipButton.d.ts +4 -0
  109. package/lib/typescript/src/camera/footer/FlipButton.d.ts.map +1 -0
  110. package/lib/typescript/src/camera/footer/FlipButton.test.d.ts +2 -0
  111. package/lib/typescript/src/camera/footer/FlipButton.test.d.ts.map +1 -0
  112. package/lib/typescript/src/camera/footer/ModeSwitcherPill.d.ts +10 -0
  113. package/lib/typescript/src/camera/footer/ModeSwitcherPill.d.ts.map +1 -0
  114. package/lib/typescript/src/camera/footer/ModeSwitcherPill.test.d.ts +2 -0
  115. package/lib/typescript/src/camera/footer/ModeSwitcherPill.test.d.ts.map +1 -0
  116. package/lib/typescript/src/camera/footer/RecordingTimer.d.ts +5 -0
  117. package/lib/typescript/src/camera/footer/RecordingTimer.d.ts.map +1 -0
  118. package/lib/typescript/src/camera/footer/RecordingTimer.test.d.ts +2 -0
  119. package/lib/typescript/src/camera/footer/RecordingTimer.test.d.ts.map +1 -0
  120. package/lib/typescript/src/camera/footer/Shutter.d.ts +9 -0
  121. package/lib/typescript/src/camera/footer/Shutter.d.ts.map +1 -0
  122. package/lib/typescript/src/camera/footer/Shutter.test.d.ts +2 -0
  123. package/lib/typescript/src/camera/footer/Shutter.test.d.ts.map +1 -0
  124. package/lib/typescript/src/camera/footer/ThumbnailStack.d.ts +8 -0
  125. package/lib/typescript/src/camera/footer/ThumbnailStack.d.ts.map +1 -0
  126. package/lib/typescript/src/camera/footer/ThumbnailStack.test.d.ts +2 -0
  127. package/lib/typescript/src/camera/footer/ThumbnailStack.test.d.ts.map +1 -0
  128. package/lib/typescript/src/camera/footer/ZoomChips.d.ts +5 -0
  129. package/lib/typescript/src/camera/footer/ZoomChips.d.ts.map +1 -0
  130. package/lib/typescript/src/camera/footer/ZoomChips.test.d.ts +2 -0
  131. package/lib/typescript/src/camera/footer/ZoomChips.test.d.ts.map +1 -0
  132. package/lib/typescript/src/camera/footer/index.d.ts +7 -1
  133. package/lib/typescript/src/camera/footer/index.d.ts.map +1 -1
  134. package/lib/typescript/src/camera/icons/VolumeIcon.d.ts +8 -0
  135. package/lib/typescript/src/camera/icons/VolumeIcon.d.ts.map +1 -0
  136. package/lib/typescript/src/camera/icons/VolumeIcon.test.d.ts +2 -0
  137. package/lib/typescript/src/camera/icons/VolumeIcon.test.d.ts.map +1 -0
  138. package/lib/typescript/src/camera/index.d.ts +3 -1
  139. package/lib/typescript/src/camera/index.d.ts.map +1 -1
  140. package/lib/typescript/src/camera/preview/PreviewBottomBar.d.ts +12 -0
  141. package/lib/typescript/src/camera/preview/PreviewBottomBar.d.ts.map +1 -0
  142. package/lib/typescript/src/camera/preview/PreviewBottomBar.test.d.ts +2 -0
  143. package/lib/typescript/src/camera/preview/PreviewBottomBar.test.d.ts.map +1 -0
  144. package/lib/typescript/src/camera/preview/PreviewOverlay.d.ts +12 -0
  145. package/lib/typescript/src/camera/preview/PreviewOverlay.d.ts.map +1 -0
  146. package/lib/typescript/src/camera/preview/PreviewOverlay.test.d.ts +2 -0
  147. package/lib/typescript/src/camera/preview/PreviewOverlay.test.d.ts.map +1 -0
  148. package/lib/typescript/src/camera/preview/PreviewTopBar.d.ts +10 -0
  149. package/lib/typescript/src/camera/preview/PreviewTopBar.d.ts.map +1 -0
  150. package/lib/typescript/src/camera/preview/PreviewTopBar.test.d.ts +2 -0
  151. package/lib/typescript/src/camera/preview/PreviewTopBar.test.d.ts.map +1 -0
  152. package/lib/typescript/src/camera/preview/groupTypes.d.ts +4 -0
  153. package/lib/typescript/src/camera/preview/groupTypes.d.ts.map +1 -0
  154. package/lib/typescript/src/camera/preview/groupTypes.test.d.ts +2 -0
  155. package/lib/typescript/src/camera/preview/groupTypes.test.d.ts.map +1 -0
  156. package/lib/typescript/src/camera/preview/index.d.ts +3 -4
  157. package/lib/typescript/src/camera/preview/index.d.ts.map +1 -1
  158. package/lib/typescript/src/camera/setup/SideRail.d.ts +15 -0
  159. package/lib/typescript/src/camera/setup/SideRail.d.ts.map +1 -0
  160. package/lib/typescript/src/camera/setup/SideRail.test.d.ts +2 -0
  161. package/lib/typescript/src/camera/setup/SideRail.test.d.ts.map +1 -0
  162. package/lib/typescript/src/camera/setup/index.d.ts +2 -1
  163. package/lib/typescript/src/camera/setup/index.d.ts.map +1 -1
  164. package/lib/typescript/src/components/Carousel/SlideItem.d.ts.map +1 -1
  165. package/lib/typescript/src/components/Carousel/SlideItem.test.d.ts +2 -0
  166. package/lib/typescript/src/components/Carousel/SlideItem.test.d.ts.map +1 -0
  167. package/lib/typescript/src/components/VideoPlayer.d.ts +4 -0
  168. package/lib/typescript/src/components/VideoPlayer.d.ts.map +1 -0
  169. package/lib/typescript/src/components/VideoPlayer.test.d.ts +2 -0
  170. package/lib/typescript/src/components/VideoPlayer.test.d.ts.map +1 -0
  171. package/lib/typescript/src/components/index.d.ts +0 -1
  172. package/lib/typescript/src/components/index.d.ts.map +1 -1
  173. package/lib/typescript/src/hooks/index.d.ts +0 -1
  174. package/lib/typescript/src/hooks/index.d.ts.map +1 -1
  175. package/package.json +7 -3
  176. package/src/camera/Camera.tsx +117 -26
  177. package/src/camera/CaptureFlash.test.tsx +11 -0
  178. package/src/camera/CaptureFlash.tsx +42 -0
  179. package/src/camera/Container.tsx +158 -64
  180. package/src/camera/FocusIndicator.test.tsx +17 -0
  181. package/src/camera/FocusIndicator.tsx +111 -27
  182. package/src/camera/colors/dark.test.ts +8 -0
  183. package/src/camera/colors/dark.ts +19 -0
  184. package/src/camera/footer/ActionRow.test.tsx +44 -0
  185. package/src/camera/footer/ActionRow.tsx +80 -0
  186. package/src/camera/footer/FlipButton.test.tsx +9 -0
  187. package/src/camera/footer/FlipButton.tsx +22 -0
  188. package/src/camera/footer/ModeSwitcherPill.test.tsx +29 -0
  189. package/src/camera/footer/ModeSwitcherPill.tsx +97 -0
  190. package/src/camera/footer/RecordingTimer.test.tsx +14 -0
  191. package/src/camera/footer/RecordingTimer.tsx +58 -0
  192. package/src/camera/footer/Shutter.test.tsx +26 -0
  193. package/src/camera/footer/Shutter.tsx +71 -0
  194. package/src/camera/footer/ThumbnailStack.test.tsx +19 -0
  195. package/src/camera/footer/ThumbnailStack.tsx +58 -0
  196. package/src/camera/footer/ZoomChips.test.tsx +9 -0
  197. package/src/camera/footer/ZoomChips.tsx +53 -0
  198. package/src/camera/footer/index.tsx +7 -1
  199. package/src/camera/icons/VolumeIcon.test.tsx +9 -0
  200. package/src/camera/icons/VolumeIcon.tsx +39 -0
  201. package/src/camera/index.tsx +11 -1
  202. package/src/camera/preview/PreviewBottomBar.test.tsx +43 -0
  203. package/src/camera/preview/PreviewBottomBar.tsx +79 -0
  204. package/src/camera/preview/PreviewOverlay.test.tsx +45 -0
  205. package/src/camera/preview/PreviewOverlay.tsx +99 -0
  206. package/src/camera/preview/PreviewTopBar.test.tsx +46 -0
  207. package/src/camera/preview/PreviewTopBar.tsx +91 -0
  208. package/src/camera/preview/groupTypes.test.ts +34 -0
  209. package/src/camera/preview/groupTypes.ts +15 -0
  210. package/src/camera/preview/index.tsx +3 -4
  211. package/src/camera/setup/SideRail.test.tsx +37 -0
  212. package/src/camera/setup/SideRail.tsx +161 -0
  213. package/src/camera/setup/index.tsx +2 -1
  214. package/src/components/Carousel/SlideItem.test.tsx +27 -0
  215. package/src/components/Carousel/SlideItem.tsx +11 -7
  216. package/src/components/VideoPlayer.test.tsx +8 -0
  217. package/src/components/VideoPlayer.tsx +30 -0
  218. package/src/components/index.tsx +0 -1
  219. package/src/hooks/index.ts +0 -1
  220. package/lib/module/camera/footer/Footer.js +0 -94
  221. package/lib/module/camera/footer/Footer.js.map +0 -1
  222. package/lib/module/camera/preview/PreView.js +0 -43
  223. package/lib/module/camera/preview/PreView.js.map +0 -1
  224. package/lib/module/camera/preview/PreViewContainer.js +0 -33
  225. package/lib/module/camera/preview/PreViewContainer.js.map +0 -1
  226. package/lib/module/camera/preview/PreviewFooter.js +0 -36
  227. package/lib/module/camera/preview/PreviewFooter.js.map +0 -1
  228. package/lib/module/camera/preview/SinglePre.js +0 -32
  229. package/lib/module/camera/preview/SinglePre.js.map +0 -1
  230. package/lib/module/camera/setup/SetUp.js +0 -74
  231. package/lib/module/camera/setup/SetUp.js.map +0 -1
  232. package/lib/module/components/PreviewThumbnail.js +0 -39
  233. package/lib/module/components/PreviewThumbnail.js.map +0 -1
  234. package/lib/module/hooks/useConfirm.js +0 -16
  235. package/lib/module/hooks/useConfirm.js.map +0 -1
  236. package/lib/typescript/src/camera/footer/Footer.d.ts +0 -14
  237. package/lib/typescript/src/camera/footer/Footer.d.ts.map +0 -1
  238. package/lib/typescript/src/camera/preview/PreView.d.ts +0 -7
  239. package/lib/typescript/src/camera/preview/PreView.d.ts.map +0 -1
  240. package/lib/typescript/src/camera/preview/PreViewContainer.d.ts +0 -9
  241. package/lib/typescript/src/camera/preview/PreViewContainer.d.ts.map +0 -1
  242. package/lib/typescript/src/camera/preview/PreviewFooter.d.ts +0 -7
  243. package/lib/typescript/src/camera/preview/PreviewFooter.d.ts.map +0 -1
  244. package/lib/typescript/src/camera/preview/SinglePre.d.ts +0 -7
  245. package/lib/typescript/src/camera/preview/SinglePre.d.ts.map +0 -1
  246. package/lib/typescript/src/camera/setup/SetUp.d.ts +0 -13
  247. package/lib/typescript/src/camera/setup/SetUp.d.ts.map +0 -1
  248. package/lib/typescript/src/components/PreviewThumbnail.d.ts +0 -9
  249. package/lib/typescript/src/components/PreviewThumbnail.d.ts.map +0 -1
  250. package/lib/typescript/src/hooks/useConfirm.d.ts +0 -2
  251. package/lib/typescript/src/hooks/useConfirm.d.ts.map +0 -1
  252. package/src/camera/footer/Footer.tsx +0 -113
  253. package/src/camera/preview/PreView.tsx +0 -32
  254. package/src/camera/preview/PreViewContainer.tsx +0 -30
  255. package/src/camera/preview/PreviewFooter.tsx +0 -38
  256. package/src/camera/preview/SinglePre.tsx +0 -30
  257. package/src/camera/setup/SetUp.tsx +0 -93
  258. package/src/components/PreviewThumbnail.tsx +0 -45
  259. package/src/hooks/useConfirm.tsx +0 -11
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ import { useEffect, useRef } from 'react';
4
+ import { Animated, StyleSheet, Text, View } from 'react-native';
5
+ import { r } from '@unif/react-native-design';
6
+ import { DARK } from "../colors/dark.js";
7
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
+ export function formatDuration(totalSec) {
9
+ const s = Math.max(0, Math.floor(totalSec));
10
+ const mm = String(Math.floor(s / 60)).padStart(2, '0');
11
+ const ss = String(s % 60).padStart(2, '0');
12
+ return `${mm}:${ss}`;
13
+ }
14
+ export function RecordingTimer({
15
+ seconds
16
+ }) {
17
+ const blink = useRef(new Animated.Value(1)).current;
18
+ useEffect(() => {
19
+ const loop = Animated.loop(Animated.sequence([Animated.timing(blink, {
20
+ toValue: 0,
21
+ duration: 500,
22
+ useNativeDriver: true
23
+ }), Animated.timing(blink, {
24
+ toValue: 1,
25
+ duration: 500,
26
+ useNativeDriver: true
27
+ })]));
28
+ loop.start();
29
+ return () => loop.stop();
30
+ }, [blink]);
31
+ return /*#__PURE__*/_jsxs(View, {
32
+ style: styles.pill,
33
+ testID: "recording-timer",
34
+ children: [/*#__PURE__*/_jsx(Animated.View, {
35
+ style: [styles.dot, {
36
+ opacity: blink
37
+ }]
38
+ }), /*#__PURE__*/_jsx(Text, {
39
+ style: styles.text,
40
+ children: formatDuration(seconds)
41
+ })]
42
+ });
43
+ }
44
+ const styles = StyleSheet.create({
45
+ pill: {
46
+ flexDirection: 'row',
47
+ alignItems: 'center',
48
+ gap: r(8),
49
+ paddingVertical: r(6),
50
+ paddingHorizontal: r(14),
51
+ borderRadius: r(999),
52
+ backgroundColor: 'rgba(255,59,48,0.18)'
53
+ },
54
+ dot: {
55
+ width: r(8),
56
+ height: r(8),
57
+ borderRadius: r(4),
58
+ backgroundColor: DARK.recRed
59
+ },
60
+ text: {
61
+ color: DARK.white,
62
+ fontSize: r(13),
63
+ fontVariant: ['tabular-nums']
64
+ }
65
+ });
66
+ //# sourceMappingURL=RecordingTimer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useRef","Animated","StyleSheet","Text","View","r","DARK","jsx","_jsx","jsxs","_jsxs","formatDuration","totalSec","s","Math","max","floor","mm","String","padStart","ss","RecordingTimer","seconds","blink","Value","current","loop","sequence","timing","toValue","duration","useNativeDriver","start","stop","style","styles","pill","testID","children","dot","opacity","text","create","flexDirection","alignItems","gap","paddingVertical","paddingHorizontal","borderRadius","backgroundColor","width","height","recRed","color","white","fontSize","fontVariant"],"sourceRoot":"../../../../src","sources":["camera/footer/RecordingTimer.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ import { render } from '@testing-library/react-native';
4
+ import { RecordingTimer, formatDuration } from "./RecordingTimer.js";
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ it('formatDuration → MM:SS', () => {
7
+ expect(formatDuration(0)).toBe('00:00');
8
+ expect(formatDuration(65)).toBe('01:05');
9
+ expect(formatDuration(3661)).toBe('61:01');
10
+ expect(formatDuration(-5)).toBe('00:00');
11
+ });
12
+ it('renders timer pill', () => {
13
+ const {
14
+ getByTestId
15
+ } = render(/*#__PURE__*/_jsx(RecordingTimer, {
16
+ seconds: 5
17
+ }));
18
+ expect(getByTestId('recording-timer')).toBeTruthy();
19
+ });
20
+ //# sourceMappingURL=RecordingTimer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["render","RecordingTimer","formatDuration","jsx","_jsx","it","expect","toBe","getByTestId","seconds","toBeTruthy"],"sourceRoot":"../../../../src","sources":["camera/footer/RecordingTimer.test.tsx"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,+BAA+B;AACtD,SAASC,cAAc,EAAEC,cAAc,QAAQ,qBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAElEC,EAAE,CAAC,wBAAwB,EAAE,MAAM;EACjCC,MAAM,CAACJ,cAAc,CAAC,CAAC,CAAC,CAAC,CAACK,IAAI,CAAC,OAAO,CAAC;EACvCD,MAAM,CAACJ,cAAc,CAAC,EAAE,CAAC,CAAC,CAACK,IAAI,CAAC,OAAO,CAAC;EACxCD,MAAM,CAACJ,cAAc,CAAC,IAAI,CAAC,CAAC,CAACK,IAAI,CAAC,OAAO,CAAC;EAC1CD,MAAM,CAACJ,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAACK,IAAI,CAAC,OAAO,CAAC;AAC1C,CAAC,CAAC;AAEFF,EAAE,CAAC,oBAAoB,EAAE,MAAM;EAC7B,MAAM;IAAEG;EAAY,CAAC,GAAGR,MAAM,cAACI,IAAA,CAACH,cAAc;IAACQ,OAAO,EAAE;EAAE,CAAE,CAAC,CAAC;EAC9DH,MAAM,CAACE,WAAW,CAAC,iBAAiB,CAAC,CAAC,CAACE,UAAU,CAAC,CAAC;AACrD,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+
3
+ import { useRef } from 'react';
4
+ import { Animated, Pressable, StyleSheet } from 'react-native';
5
+ import { r } from '@unif/react-native-design';
6
+ import { DARK } from "../colors/dark.js";
7
+ import { jsx as _jsx } from "react/jsx-runtime";
8
+ export function Shutter({
9
+ mode,
10
+ recording,
11
+ disabled,
12
+ onPress
13
+ }) {
14
+ const scale = useRef(new Animated.Value(1)).current;
15
+ const to = v => Animated.timing(scale, {
16
+ toValue: v,
17
+ duration: 100,
18
+ useNativeDriver: true
19
+ }).start();
20
+ const isVideo = mode === 'video';
21
+ const inner = recording ? styles.innerRecording : isVideo ? styles.innerVideo : styles.innerPhoto;
22
+ return /*#__PURE__*/_jsx(Pressable, {
23
+ testID: "shutter-btn",
24
+ disabled: disabled,
25
+ onPress: onPress,
26
+ onPressIn: () => to(0.94),
27
+ onPressOut: () => to(1),
28
+ children: /*#__PURE__*/_jsx(Animated.View, {
29
+ style: [styles.ring, {
30
+ transform: [{
31
+ scale
32
+ }]
33
+ }],
34
+ children: /*#__PURE__*/_jsx(Animated.View, {
35
+ style: [styles.innerBase, inner]
36
+ })
37
+ })
38
+ });
39
+ }
40
+ const styles = StyleSheet.create({
41
+ ring: {
42
+ width: r(72),
43
+ height: r(72),
44
+ borderRadius: r(36),
45
+ borderWidth: r(3),
46
+ borderColor: DARK.white95,
47
+ alignItems: 'center',
48
+ justifyContent: 'center'
49
+ },
50
+ innerBase: {},
51
+ innerPhoto: {
52
+ width: r(58),
53
+ height: r(58),
54
+ borderRadius: r(29),
55
+ backgroundColor: DARK.white
56
+ },
57
+ innerVideo: {
58
+ width: r(58),
59
+ height: r(58),
60
+ borderRadius: r(29),
61
+ backgroundColor: DARK.recRed
62
+ },
63
+ innerRecording: {
64
+ width: r(24),
65
+ height: r(24),
66
+ borderRadius: r(4),
67
+ backgroundColor: DARK.recRed
68
+ }
69
+ });
70
+ //# sourceMappingURL=Shutter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useRef","Animated","Pressable","StyleSheet","r","DARK","jsx","_jsx","Shutter","mode","recording","disabled","onPress","scale","Value","current","to","v","timing","toValue","duration","useNativeDriver","start","isVideo","inner","styles","innerRecording","innerVideo","innerPhoto","testID","onPressIn","onPressOut","children","View","style","ring","transform","innerBase","create","width","height","borderRadius","borderWidth","borderColor","white95","alignItems","justifyContent","backgroundColor","white","recRed"],"sourceRoot":"../../../../src","sources":["camera/footer/Shutter.tsx"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,OAAO;AAC9B,SAASC,QAAQ,EAAEC,SAAS,EAAEC,UAAU,QAAQ,cAAc;AAC9D,SAASC,CAAC,QAAQ,2BAA2B;AAC7C,SAASC,IAAI,QAAQ,mBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAStC,OAAO,SAASC,OAAOA,CAAC;EAAEC,IAAI;EAAEC,SAAS;EAAEC,QAAQ;EAAEC;AAAe,CAAC,EAAE;EACrE,MAAMC,KAAK,GAAGb,MAAM,CAAC,IAAIC,QAAQ,CAACa,KAAK,CAAC,CAAC,CAAC,CAAC,CAACC,OAAO;EACnD,MAAMC,EAAE,GAAIC,CAAS,IACnBhB,QAAQ,CAACiB,MAAM,CAACL,KAAK,EAAE;IACrBM,OAAO,EAAEF,CAAC;IACVG,QAAQ,EAAE,GAAG;IACbC,eAAe,EAAE;EACnB,CAAC,CAAC,CAACC,KAAK,CAAC,CAAC;EACZ,MAAMC,OAAO,GAAGd,IAAI,KAAK,OAAO;EAChC,MAAMe,KAAK,GAAGd,SAAS,GACnBe,MAAM,CAACC,cAAc,GACrBH,OAAO,GACLE,MAAM,CAACE,UAAU,GACjBF,MAAM,CAACG,UAAU;EACvB,oBACErB,IAAA,CAACL,SAAS;IACR2B,MAAM,EAAC,aAAa;IACpBlB,QAAQ,EAAEA,QAAS;IACnBC,OAAO,EAAEA,OAAQ;IACjBkB,SAAS,EAAEA,CAAA,KAAMd,EAAE,CAAC,IAAI,CAAE;IAC1Be,UAAU,EAAEA,CAAA,KAAMf,EAAE,CAAC,CAAC,CAAE;IAAAgB,QAAA,eAExBzB,IAAA,CAACN,QAAQ,CAACgC,IAAI;MAACC,KAAK,EAAE,CAACT,MAAM,CAACU,IAAI,EAAE;QAAEC,SAAS,EAAE,CAAC;UAAEvB;QAAM,CAAC;MAAE,CAAC,CAAE;MAAAmB,QAAA,eAC9DzB,IAAA,CAACN,QAAQ,CAACgC,IAAI;QAACC,KAAK,EAAE,CAACT,MAAM,CAACY,SAAS,EAAEb,KAAK;MAAE,CAAE;IAAC,CACtC;EAAC,CACP,CAAC;AAEhB;AAEA,MAAMC,MAAM,GAAGtB,UAAU,CAACmC,MAAM,CAAC;EAC/BH,IAAI,EAAE;IACJI,KAAK,EAAEnC,CAAC,CAAC,EAAE,CAAC;IACZoC,MAAM,EAAEpC,CAAC,CAAC,EAAE,CAAC;IACbqC,YAAY,EAAErC,CAAC,CAAC,EAAE,CAAC;IACnBsC,WAAW,EAAEtC,CAAC,CAAC,CAAC,CAAC;IACjBuC,WAAW,EAAEtC,IAAI,CAACuC,OAAO;IACzBC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACDT,SAAS,EAAE,CAAC,CAAC;EACbT,UAAU,EAAE;IACVW,KAAK,EAAEnC,CAAC,CAAC,EAAE,CAAC;IACZoC,MAAM,EAAEpC,CAAC,CAAC,EAAE,CAAC;IACbqC,YAAY,EAAErC,CAAC,CAAC,EAAE,CAAC;IACnB2C,eAAe,EAAE1C,IAAI,CAAC2C;EACxB,CAAC;EACDrB,UAAU,EAAE;IACVY,KAAK,EAAEnC,CAAC,CAAC,EAAE,CAAC;IACZoC,MAAM,EAAEpC,CAAC,CAAC,EAAE,CAAC;IACbqC,YAAY,EAAErC,CAAC,CAAC,EAAE,CAAC;IACnB2C,eAAe,EAAE1C,IAAI,CAAC4C;EACxB,CAAC;EACDvB,cAAc,EAAE;IACda,KAAK,EAAEnC,CAAC,CAAC,EAAE,CAAC;IACZoC,MAAM,EAAEpC,CAAC,CAAC,EAAE,CAAC;IACbqC,YAAY,EAAErC,CAAC,CAAC,CAAC,CAAC;IAClB2C,eAAe,EAAE1C,IAAI,CAAC4C;EACxB;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ import { render, fireEvent } from '@testing-library/react-native';
4
+ import { Shutter } from "./Shutter.js";
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ it('fires onPress and renders for each mode', () => {
7
+ const onPress = jest.fn();
8
+ const {
9
+ getByTestId,
10
+ rerender
11
+ } = render(/*#__PURE__*/_jsx(Shutter, {
12
+ mode: "single",
13
+ recording: false,
14
+ onPress: onPress
15
+ }));
16
+ fireEvent.press(getByTestId('shutter-btn'));
17
+ expect(onPress).toHaveBeenCalledTimes(1);
18
+ expect(() => rerender(/*#__PURE__*/_jsx(Shutter, {
19
+ mode: "video",
20
+ recording: false,
21
+ onPress: onPress
22
+ }))).not.toThrow();
23
+ expect(() => rerender(/*#__PURE__*/_jsx(Shutter, {
24
+ mode: "video",
25
+ recording: true,
26
+ onPress: onPress
27
+ }))).not.toThrow();
28
+ });
29
+ it('disabled blocks press', () => {
30
+ const onPress = jest.fn();
31
+ const {
32
+ getByTestId
33
+ } = render(/*#__PURE__*/_jsx(Shutter, {
34
+ mode: "single",
35
+ recording: false,
36
+ disabled: true,
37
+ onPress: onPress
38
+ }));
39
+ fireEvent.press(getByTestId('shutter-btn'));
40
+ expect(onPress).not.toHaveBeenCalled();
41
+ });
42
+ //# sourceMappingURL=Shutter.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["render","fireEvent","Shutter","jsx","_jsx","it","onPress","jest","fn","getByTestId","rerender","mode","recording","press","expect","toHaveBeenCalledTimes","not","toThrow","disabled","toHaveBeenCalled"],"sourceRoot":"../../../../src","sources":["camera/footer/Shutter.test.tsx"],"mappings":";;AAAA,SAASA,MAAM,EAAEC,SAAS,QAAQ,+BAA+B;AACjE,SAASC,OAAO,QAAQ,cAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEpCC,EAAE,CAAC,yCAAyC,EAAE,MAAM;EAClD,MAAMC,OAAO,GAAGC,IAAI,CAACC,EAAE,CAAC,CAAC;EACzB,MAAM;IAAEC,WAAW;IAAEC;EAAS,CAAC,GAAGV,MAAM,cACtCI,IAAA,CAACF,OAAO;IAACS,IAAI,EAAC,QAAQ;IAACC,SAAS,EAAE,KAAM;IAACN,OAAO,EAAEA;EAAQ,CAAE,CAC9D,CAAC;EACDL,SAAS,CAACY,KAAK,CAACJ,WAAW,CAAC,aAAa,CAAC,CAAC;EAC3CK,MAAM,CAACR,OAAO,CAAC,CAACS,qBAAqB,CAAC,CAAC,CAAC;EACxCD,MAAM,CAAC,MACLJ,QAAQ,cAACN,IAAA,CAACF,OAAO;IAACS,IAAI,EAAC,OAAO;IAACC,SAAS,EAAE,KAAM;IAACN,OAAO,EAAEA;EAAQ,CAAE,CAAC,CACvE,CAAC,CAACU,GAAG,CAACC,OAAO,CAAC,CAAC;EACfH,MAAM,CAAC,MACLJ,QAAQ,cAACN,IAAA,CAACF,OAAO;IAACS,IAAI,EAAC,OAAO;IAACC,SAAS,EAAE,IAAK;IAACN,OAAO,EAAEA;EAAQ,CAAE,CAAC,CACtE,CAAC,CAACU,GAAG,CAACC,OAAO,CAAC,CAAC;AACjB,CAAC,CAAC;AAEFZ,EAAE,CAAC,uBAAuB,EAAE,MAAM;EAChC,MAAMC,OAAO,GAAGC,IAAI,CAACC,EAAE,CAAC,CAAC;EACzB,MAAM;IAAEC;EAAY,CAAC,GAAGT,MAAM,cAC5BI,IAAA,CAACF,OAAO;IAACS,IAAI,EAAC,QAAQ;IAACC,SAAS,EAAE,KAAM;IAACM,QAAQ;IAACZ,OAAO,EAAEA;EAAQ,CAAE,CACvE,CAAC;EACDL,SAAS,CAACY,KAAK,CAACJ,WAAW,CAAC,aAAa,CAAC,CAAC;EAC3CK,MAAM,CAACR,OAAO,CAAC,CAACU,GAAG,CAACG,gBAAgB,CAAC,CAAC;AACxC,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+
3
+ import { Image, StyleSheet, Text, TouchableOpacity, View } from 'react-native';
4
+ import { r } from '@unif/react-native-design';
5
+ import { DARK } from "../colors/dark.js";
6
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
+ export function ThumbnailStack({
8
+ latestUri,
9
+ count,
10
+ onPress
11
+ }) {
12
+ return /*#__PURE__*/_jsxs(TouchableOpacity, {
13
+ testID: "thumbnail-stack",
14
+ onPress: onPress,
15
+ style: styles.wrap,
16
+ children: [latestUri ? /*#__PURE__*/_jsx(Image, {
17
+ source: {
18
+ uri: latestUri
19
+ },
20
+ style: styles.img
21
+ }) : /*#__PURE__*/_jsx(View, {
22
+ style: styles.empty
23
+ }), count > 1 && /*#__PURE__*/_jsx(View, {
24
+ style: styles.badge,
25
+ testID: "thumb-badge",
26
+ children: /*#__PURE__*/_jsx(Text, {
27
+ style: styles.badgeText,
28
+ children: count
29
+ })
30
+ })]
31
+ });
32
+ }
33
+ const styles = StyleSheet.create({
34
+ wrap: {
35
+ width: r(44),
36
+ height: r(44)
37
+ },
38
+ img: {
39
+ width: r(44),
40
+ height: r(44),
41
+ borderRadius: r(6),
42
+ borderWidth: 2,
43
+ borderColor: DARK.white
44
+ },
45
+ empty: {
46
+ width: r(44),
47
+ height: r(44),
48
+ borderRadius: r(8),
49
+ borderWidth: 1.5,
50
+ borderColor: DARK.white40,
51
+ backgroundColor: DARK.white08
52
+ },
53
+ badge: {
54
+ position: 'absolute',
55
+ top: r(-6),
56
+ right: r(-6),
57
+ minWidth: r(20),
58
+ height: r(20),
59
+ borderRadius: r(999),
60
+ backgroundColor: DARK.orange,
61
+ alignItems: 'center',
62
+ justifyContent: 'center',
63
+ paddingHorizontal: r(4)
64
+ },
65
+ badgeText: {
66
+ color: DARK.white,
67
+ fontSize: r(11),
68
+ fontWeight: '700'
69
+ }
70
+ });
71
+ //# sourceMappingURL=ThumbnailStack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Image","StyleSheet","Text","TouchableOpacity","View","r","DARK","jsx","_jsx","jsxs","_jsxs","ThumbnailStack","latestUri","count","onPress","testID","style","styles","wrap","children","source","uri","img","empty","badge","badgeText","create","width","height","borderRadius","borderWidth","borderColor","white","white40","backgroundColor","white08","position","top","right","minWidth","orange","alignItems","justifyContent","paddingHorizontal","color","fontSize","fontWeight"],"sourceRoot":"../../../../src","sources":["camera/footer/ThumbnailStack.tsx"],"mappings":";;AAAA,SAASA,KAAK,EAAEC,UAAU,EAAEC,IAAI,EAAEC,gBAAgB,EAAEC,IAAI,QAAQ,cAAc;AAC9E,SAASC,CAAC,QAAQ,2BAA2B;AAC7C,SAASC,IAAI,QAAQ,mBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAItC,OAAO,SAASC,cAAcA,CAAC;EAAEC,SAAS;EAAEC,KAAK;EAAEC;AAAe,CAAC,EAAE;EACnE,oBACEJ,KAAA,CAACP,gBAAgB;IACfY,MAAM,EAAC,iBAAiB;IACxBD,OAAO,EAAEA,OAAQ;IACjBE,KAAK,EAAEC,MAAM,CAACC,IAAK;IAAAC,QAAA,GAElBP,SAAS,gBACRJ,IAAA,CAACR,KAAK;MAACoB,MAAM,EAAE;QAAEC,GAAG,EAAET;MAAU,CAAE;MAACI,KAAK,EAAEC,MAAM,CAACK;IAAI,CAAE,CAAC,gBAExDd,IAAA,CAACJ,IAAI;MAACY,KAAK,EAAEC,MAAM,CAACM;IAAM,CAAE,CAC7B,EACAV,KAAK,GAAG,CAAC,iBACRL,IAAA,CAACJ,IAAI;MAACY,KAAK,EAAEC,MAAM,CAACO,KAAM;MAACT,MAAM,EAAC,aAAa;MAAAI,QAAA,eAC7CX,IAAA,CAACN,IAAI;QAACc,KAAK,EAAEC,MAAM,CAACQ,SAAU;QAAAN,QAAA,EAAEN;MAAK,CAAO;IAAC,CACzC,CACP;EAAA,CACe,CAAC;AAEvB;AAEA,MAAMI,MAAM,GAAGhB,UAAU,CAACyB,MAAM,CAAC;EAC/BR,IAAI,EAAE;IAAES,KAAK,EAAEtB,CAAC,CAAC,EAAE,CAAC;IAAEuB,MAAM,EAAEvB,CAAC,CAAC,EAAE;EAAE,CAAC;EACrCiB,GAAG,EAAE;IACHK,KAAK,EAAEtB,CAAC,CAAC,EAAE,CAAC;IACZuB,MAAM,EAAEvB,CAAC,CAAC,EAAE,CAAC;IACbwB,YAAY,EAAExB,CAAC,CAAC,CAAC,CAAC;IAClByB,WAAW,EAAE,CAAC;IACdC,WAAW,EAAEzB,IAAI,CAAC0B;EACpB,CAAC;EACDT,KAAK,EAAE;IACLI,KAAK,EAAEtB,CAAC,CAAC,EAAE,CAAC;IACZuB,MAAM,EAAEvB,CAAC,CAAC,EAAE,CAAC;IACbwB,YAAY,EAAExB,CAAC,CAAC,CAAC,CAAC;IAClByB,WAAW,EAAE,GAAG;IAChBC,WAAW,EAAEzB,IAAI,CAAC2B,OAAO;IACzBC,eAAe,EAAE5B,IAAI,CAAC6B;EACxB,CAAC;EACDX,KAAK,EAAE;IACLY,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAEhC,CAAC,CAAC,CAAC,CAAC,CAAC;IACViC,KAAK,EAAEjC,CAAC,CAAC,CAAC,CAAC,CAAC;IACZkC,QAAQ,EAAElC,CAAC,CAAC,EAAE,CAAC;IACfuB,MAAM,EAAEvB,CAAC,CAAC,EAAE,CAAC;IACbwB,YAAY,EAAExB,CAAC,CAAC,GAAG,CAAC;IACpB6B,eAAe,EAAE5B,IAAI,CAACkC,MAAM;IAC5BC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,iBAAiB,EAAEtC,CAAC,CAAC,CAAC;EACxB,CAAC;EACDoB,SAAS,EAAE;IAAEmB,KAAK,EAAEtC,IAAI,CAAC0B,KAAK;IAAEa,QAAQ,EAAExC,CAAC,CAAC,EAAE,CAAC;IAAEyC,UAAU,EAAE;EAAM;AACrE,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+
3
+ import { render, fireEvent } from '@testing-library/react-native';
4
+ import { ThumbnailStack } from "./ThumbnailStack.js";
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ it('empty state, no badge, tappable', () => {
7
+ const onPress = jest.fn();
8
+ const {
9
+ getByTestId,
10
+ queryByTestId
11
+ } = render(/*#__PURE__*/_jsx(ThumbnailStack, {
12
+ latestUri: undefined,
13
+ count: 0,
14
+ onPress: onPress
15
+ }));
16
+ fireEvent.press(getByTestId('thumbnail-stack'));
17
+ expect(onPress).toHaveBeenCalled();
18
+ expect(queryByTestId('thumb-badge')).toBeNull();
19
+ });
20
+ it('shows badge when count > 1', () => {
21
+ const {
22
+ getByTestId
23
+ } = render(/*#__PURE__*/_jsx(ThumbnailStack, {
24
+ latestUri: "file:///a.jpg",
25
+ count: 3,
26
+ onPress: () => {}
27
+ }));
28
+ expect(getByTestId('thumb-badge')).toBeTruthy();
29
+ });
30
+ //# sourceMappingURL=ThumbnailStack.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["render","fireEvent","ThumbnailStack","jsx","_jsx","it","onPress","jest","fn","getByTestId","queryByTestId","latestUri","undefined","count","press","expect","toHaveBeenCalled","toBeNull","toBeTruthy"],"sourceRoot":"../../../../src","sources":["camera/footer/ThumbnailStack.test.tsx"],"mappings":";;AAAA,SAASA,MAAM,EAAEC,SAAS,QAAQ,+BAA+B;AACjE,SAASC,cAAc,QAAQ,qBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAElDC,EAAE,CAAC,iCAAiC,EAAE,MAAM;EAC1C,MAAMC,OAAO,GAAGC,IAAI,CAACC,EAAE,CAAC,CAAC;EACzB,MAAM;IAAEC,WAAW;IAAEC;EAAc,CAAC,GAAGV,MAAM,cAC3CI,IAAA,CAACF,cAAc;IAACS,SAAS,EAAEC,SAAU;IAACC,KAAK,EAAE,CAAE;IAACP,OAAO,EAAEA;EAAQ,CAAE,CACrE,CAAC;EACDL,SAAS,CAACa,KAAK,CAACL,WAAW,CAAC,iBAAiB,CAAC,CAAC;EAC/CM,MAAM,CAACT,OAAO,CAAC,CAACU,gBAAgB,CAAC,CAAC;EAClCD,MAAM,CAACL,aAAa,CAAC,aAAa,CAAC,CAAC,CAACO,QAAQ,CAAC,CAAC;AACjD,CAAC,CAAC;AAEFZ,EAAE,CAAC,4BAA4B,EAAE,MAAM;EACrC,MAAM;IAAEI;EAAY,CAAC,GAAGT,MAAM,cAC5BI,IAAA,CAACF,cAAc;IAACS,SAAS,EAAC,eAAe;IAACE,KAAK,EAAE,CAAE;IAACP,OAAO,EAAEA,CAAA,KAAM,CAAC;EAAE,CAAE,CAC1E,CAAC;EACDS,MAAM,CAACN,WAAW,CAAC,aAAa,CAAC,CAAC,CAACS,UAAU,CAAC,CAAC;AACjD,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ import { StyleSheet, Text, TouchableOpacity, View } from 'react-native';
4
+ import { r } from '@unif/react-native-design';
5
+ import { DARK } from "../colors/dark.js";
6
+ import { jsx as _jsx } from "react/jsx-runtime";
7
+ const STOPS = [0.5, 1, 2];
8
+ export function ZoomChips({
9
+ zoom,
10
+ onSelect
11
+ }) {
12
+ return /*#__PURE__*/_jsx(View, {
13
+ style: styles.row,
14
+ children: STOPS.map(z => {
15
+ const active = Math.abs(zoom - z) < 0.05;
16
+ return /*#__PURE__*/_jsx(TouchableOpacity, {
17
+ testID: `zoom-chip-${z}`,
18
+ onPress: () => onSelect(z),
19
+ style: [styles.chip, active && styles.chipActive],
20
+ children: /*#__PURE__*/_jsx(Text, {
21
+ style: [styles.txt, active && styles.txtActive],
22
+ children: active ? `${z}x` : `${z}`
23
+ })
24
+ }, z);
25
+ })
26
+ });
27
+ }
28
+ const styles = StyleSheet.create({
29
+ row: {
30
+ flexDirection: 'row',
31
+ gap: r(8),
32
+ padding: r(4),
33
+ borderRadius: r(999),
34
+ backgroundColor: DARK.black45
35
+ },
36
+ chip: {
37
+ width: r(32),
38
+ height: r(32),
39
+ borderRadius: r(16),
40
+ alignItems: 'center',
41
+ justifyContent: 'center'
42
+ },
43
+ chipActive: {
44
+ backgroundColor: DARK.white95
45
+ },
46
+ txt: {
47
+ color: DARK.white,
48
+ fontSize: r(12),
49
+ fontWeight: '500'
50
+ },
51
+ txtActive: {
52
+ color: DARK.orange,
53
+ fontSize: r(11),
54
+ fontWeight: '700'
55
+ }
56
+ });
57
+ //# sourceMappingURL=ZoomChips.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["StyleSheet","Text","TouchableOpacity","View","r","DARK","jsx","_jsx","STOPS","ZoomChips","zoom","onSelect","style","styles","row","children","map","z","active","Math","abs","testID","onPress","chip","chipActive","txt","txtActive","create","flexDirection","gap","padding","borderRadius","backgroundColor","black45","width","height","alignItems","justifyContent","white95","color","white","fontSize","fontWeight","orange"],"sourceRoot":"../../../../src","sources":["camera/footer/ZoomChips.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,IAAI,EAAEC,gBAAgB,EAAEC,IAAI,QAAQ,cAAc;AACvE,SAASC,CAAC,QAAQ,2BAA2B;AAC7C,SAASC,IAAI,QAAQ,mBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEtC,MAAMC,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAU;AAElC,OAAO,SAASC,SAASA,CAAC;EACxBC,IAAI;EACJC;AAIF,CAAC,EAAE;EACD,oBACEJ,IAAA,CAACJ,IAAI;IAACS,KAAK,EAAEC,MAAM,CAACC,GAAI;IAAAC,QAAA,EACrBP,KAAK,CAACQ,GAAG,CAAEC,CAAC,IAAK;MAChB,MAAMC,MAAM,GAAGC,IAAI,CAACC,GAAG,CAACV,IAAI,GAAGO,CAAC,CAAC,GAAG,IAAI;MACxC,oBACEV,IAAA,CAACL,gBAAgB;QAEfmB,MAAM,EAAE,aAAaJ,CAAC,EAAG;QACzBK,OAAO,EAAEA,CAAA,KAAMX,QAAQ,CAACM,CAAC,CAAE;QAC3BL,KAAK,EAAE,CAACC,MAAM,CAACU,IAAI,EAAEL,MAAM,IAAIL,MAAM,CAACW,UAAU,CAAE;QAAAT,QAAA,eAElDR,IAAA,CAACN,IAAI;UAACW,KAAK,EAAE,CAACC,MAAM,CAACY,GAAG,EAAEP,MAAM,IAAIL,MAAM,CAACa,SAAS,CAAE;UAAAX,QAAA,EACnDG,MAAM,GAAG,GAAGD,CAAC,GAAG,GAAG,GAAGA,CAAC;QAAE,CACtB;MAAC,GAPFA,CAQW,CAAC;IAEvB,CAAC;EAAC,CACE,CAAC;AAEX;AAEA,MAAMJ,MAAM,GAAGb,UAAU,CAAC2B,MAAM,CAAC;EAC/Bb,GAAG,EAAE;IACHc,aAAa,EAAE,KAAK;IACpBC,GAAG,EAAEzB,CAAC,CAAC,CAAC,CAAC;IACT0B,OAAO,EAAE1B,CAAC,CAAC,CAAC,CAAC;IACb2B,YAAY,EAAE3B,CAAC,CAAC,GAAG,CAAC;IACpB4B,eAAe,EAAE3B,IAAI,CAAC4B;EACxB,CAAC;EACDV,IAAI,EAAE;IACJW,KAAK,EAAE9B,CAAC,CAAC,EAAE,CAAC;IACZ+B,MAAM,EAAE/B,CAAC,CAAC,EAAE,CAAC;IACb2B,YAAY,EAAE3B,CAAC,CAAC,EAAE,CAAC;IACnBgC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE;EAClB,CAAC;EACDb,UAAU,EAAE;IAAEQ,eAAe,EAAE3B,IAAI,CAACiC;EAAQ,CAAC;EAC7Cb,GAAG,EAAE;IAAEc,KAAK,EAAElC,IAAI,CAACmC,KAAK;IAAEC,QAAQ,EAAErC,CAAC,CAAC,EAAE,CAAC;IAAEsC,UAAU,EAAE;EAAM,CAAC;EAC9DhB,SAAS,EAAE;IAAEa,KAAK,EAAElC,IAAI,CAACsC,MAAM;IAAEF,QAAQ,EAAErC,CAAC,CAAC,EAAE,CAAC;IAAEsC,UAAU,EAAE;EAAM;AACtE,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ import { render, fireEvent } from '@testing-library/react-native';
4
+ import { ZoomChips } from "./ZoomChips.js";
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ it('renders 3 chips and selects', () => {
7
+ const onSelect = jest.fn();
8
+ const {
9
+ getByTestId
10
+ } = render(/*#__PURE__*/_jsx(ZoomChips, {
11
+ zoom: 1,
12
+ onSelect: onSelect
13
+ }));
14
+ fireEvent.press(getByTestId('zoom-chip-2'));
15
+ expect(onSelect).toHaveBeenCalledWith(2);
16
+ });
17
+ //# sourceMappingURL=ZoomChips.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["render","fireEvent","ZoomChips","jsx","_jsx","it","onSelect","jest","fn","getByTestId","zoom","press","expect","toHaveBeenCalledWith"],"sourceRoot":"../../../../src","sources":["camera/footer/ZoomChips.test.tsx"],"mappings":";;AAAA,SAASA,MAAM,EAAEC,SAAS,QAAQ,+BAA+B;AACjE,SAASC,SAAS,QAAQ,gBAAa;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAExCC,EAAE,CAAC,6BAA6B,EAAE,MAAM;EACtC,MAAMC,QAAQ,GAAGC,IAAI,CAACC,EAAE,CAAC,CAAC;EAC1B,MAAM;IAAEC;EAAY,CAAC,GAAGT,MAAM,cAACI,IAAA,CAACF,SAAS;IAACQ,IAAI,EAAE,CAAE;IAACJ,QAAQ,EAAEA;EAAS,CAAE,CAAC,CAAC;EAC1EL,SAAS,CAACU,KAAK,CAACF,WAAW,CAAC,aAAa,CAAC,CAAC;EAC3CG,MAAM,CAACN,QAAQ,CAAC,CAACO,oBAAoB,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC","ignoreList":[]}
@@ -1,4 +1,10 @@
1
1
  "use strict";
2
2
 
3
- export { Footer } from "./Footer.js";
3
+ export { ActionRow } from "./ActionRow.js";
4
+ export { ModeSwitcherPill } from "./ModeSwitcherPill.js";
5
+ export { Shutter } from "./Shutter.js";
6
+ export { ZoomChips } from "./ZoomChips.js";
7
+ export { RecordingTimer } from "./RecordingTimer.js";
8
+ export { ThumbnailStack } from "./ThumbnailStack.js";
9
+ export { FlipButton } from "./FlipButton.js";
4
10
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Footer"],"sourceRoot":"../../../../src","sources":["camera/footer/index.tsx"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,aAAU","ignoreList":[]}
1
+ {"version":3,"names":["ActionRow","ModeSwitcherPill","Shutter","ZoomChips","RecordingTimer","ThumbnailStack","FlipButton"],"sourceRoot":"../../../../src","sources":["camera/footer/index.tsx"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,gBAAa;AACvC,SAASC,gBAAgB,QAAQ,uBAAoB;AACrD,SAASC,OAAO,QAAQ,cAAW;AACnC,SAASC,SAAS,QAAQ,gBAAa;AACvC,SAASC,cAAc,QAAQ,qBAAkB;AACjD,SAASC,cAAc,QAAQ,qBAAkB;AACjD,SAASC,UAAU,QAAQ,iBAAc","ignoreList":[]}
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+
3
+ import Svg, { Path, Line } from 'react-native-svg';
4
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
+ export function VolumeIcon({
6
+ on,
7
+ size,
8
+ color
9
+ }) {
10
+ return /*#__PURE__*/_jsxs(Svg, {
11
+ width: size,
12
+ height: size,
13
+ viewBox: "0 0 24 24",
14
+ fill: "none",
15
+ children: [/*#__PURE__*/_jsx(Path, {
16
+ d: "M4 9v6h4l5 4V5L8 9H4z",
17
+ fill: color,
18
+ stroke: color,
19
+ strokeWidth: 1.6,
20
+ strokeLinejoin: "round"
21
+ }), on ?
22
+ /*#__PURE__*/
23
+ // 声波两道
24
+ _jsx(Path, {
25
+ d: "M16 8.5a5 5 0 0 1 0 7M18.5 6a8.5 8.5 0 0 1 0 12",
26
+ stroke: color,
27
+ strokeWidth: 1.6,
28
+ strokeLinecap: "round",
29
+ fill: "none"
30
+ }) :
31
+ /*#__PURE__*/
32
+ // 关:斜杠
33
+ _jsx(Line, {
34
+ x1: 16,
35
+ y1: 8,
36
+ x2: 21,
37
+ y2: 16,
38
+ stroke: color,
39
+ strokeWidth: 1.6,
40
+ strokeLinecap: "round"
41
+ })]
42
+ });
43
+ }
44
+ //# sourceMappingURL=VolumeIcon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Svg","Path","Line","jsx","_jsx","jsxs","_jsxs","VolumeIcon","on","size","color","width","height","viewBox","fill","children","d","stroke","strokeWidth","strokeLinejoin","strokeLinecap","x1","y1","x2","y2"],"sourceRoot":"../../../../src","sources":["camera/icons/VolumeIcon.tsx"],"mappings":";;AAAA,OAAOA,GAAG,IAAIC,IAAI,EAAEC,IAAI,QAAQ,kBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAInD,OAAO,SAASC,UAAUA,CAAC;EAAEC,EAAE;EAAEC,IAAI;EAAEC;AAAa,CAAC,EAAE;EACrD,oBACEJ,KAAA,CAACN,GAAG;IAACW,KAAK,EAAEF,IAAK;IAACG,MAAM,EAAEH,IAAK;IAACI,OAAO,EAAC,WAAW;IAACC,IAAI,EAAC,MAAM;IAAAC,QAAA,gBAE7DX,IAAA,CAACH,IAAI;MACHe,CAAC,EAAC,uBAAuB;MACzBF,IAAI,EAAEJ,KAAM;MACZO,MAAM,EAAEP,KAAM;MACdQ,WAAW,EAAE,GAAI;MACjBC,cAAc,EAAC;IAAO,CACvB,CAAC,EACDX,EAAE;IAAA;IACD;IACAJ,IAAA,CAACH,IAAI;MACHe,CAAC,EAAC,iDAAiD;MACnDC,MAAM,EAAEP,KAAM;MACdQ,WAAW,EAAE,GAAI;MACjBE,aAAa,EAAC,OAAO;MACrBN,IAAI,EAAC;IAAM,CACZ,CAAC;IAAA;IAEF;IACAV,IAAA,CAACF,IAAI;MACHmB,EAAE,EAAE,EAAG;MACPC,EAAE,EAAE,CAAE;MACNC,EAAE,EAAE,EAAG;MACPC,EAAE,EAAE,EAAG;MACPP,MAAM,EAAEP,KAAM;MACdQ,WAAW,EAAE,GAAI;MACjBE,aAAa,EAAC;IAAO,CACtB,CACF;EAAA,CACE,CAAC;AAEV","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ import { render } from '@testing-library/react-native';
4
+ import { VolumeIcon } from "./VolumeIcon.js";
5
+ import { jsx as _jsx } from "react/jsx-runtime";
6
+ it('renders without crashing (on/off)', () => {
7
+ expect(() => render(/*#__PURE__*/_jsx(VolumeIcon, {
8
+ on: true,
9
+ size: 20,
10
+ color: "#fff"
11
+ }))).not.toThrow();
12
+ expect(() => render(/*#__PURE__*/_jsx(VolumeIcon, {
13
+ on: false,
14
+ size: 20,
15
+ color: "#fff"
16
+ }))).not.toThrow();
17
+ });
18
+ //# sourceMappingURL=VolumeIcon.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["render","VolumeIcon","jsx","_jsx","it","expect","on","size","color","not","toThrow"],"sourceRoot":"../../../../src","sources":["camera/icons/VolumeIcon.test.tsx"],"mappings":";;AAAA,SAASA,MAAM,QAAQ,+BAA+B;AACtD,SAASC,UAAU,QAAQ,iBAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAE1CC,EAAE,CAAC,mCAAmC,EAAE,MAAM;EAC5CC,MAAM,CAAC,MAAML,MAAM,cAACG,IAAA,CAACF,UAAU;IAACK,EAAE;IAACC,IAAI,EAAE,EAAG;IAACC,KAAK,EAAC;EAAM,CAAE,CAAC,CAAC,CAAC,CAACC,GAAG,CAACC,OAAO,CAAC,CAAC;EAC5EL,MAAM,CAAC,MACLL,MAAM,cAACG,IAAA,CAACF,UAAU;IAACK,EAAE,EAAE,KAAM;IAACC,IAAI,EAAE,EAAG;IAACC,KAAK,EAAC;EAAM,CAAE,CAAC,CACzD,CAAC,CAACC,GAAG,CAACC,OAAO,CAAC,CAAC;AACjB,CAAC,CAAC","ignoreList":[]}
@@ -8,5 +8,7 @@ export { ErrorView } from "./Error.js";
8
8
  export { Camera } from "./Camera.js";
9
9
  export { FocusIndicator } from "./FocusIndicator.js";
10
10
  export { capturePhotoToFile } from "./capturePhotoHelper.js";
11
- export { Footer } from "./footer/index.js";
11
+ export { ActionRow, ModeSwitcherPill, Shutter, ZoomChips, RecordingTimer, ThumbnailStack, FlipButton } from "./footer/index.js";
12
+ export { CaptureFlash } from "./CaptureFlash.js";
13
+ export { SideRail } from "./setup/index.js";
12
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ModalView","Container","NoPermission","NoCamera","ErrorView","Camera","FocusIndicator","capturePhotoToFile","Footer"],"sourceRoot":"../../../src","sources":["camera/index.tsx"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,gBAAa;AACvC,SAASC,SAAS,QAAQ,gBAAa;AACvC,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,QAAQ,QAAQ,eAAY;AACrC,SAASC,SAAS,QAAQ,YAAS;AACnC,SAASC,MAAM,QAA2B,aAAU;AACpD,SAASC,cAAc,QAAQ,qBAAkB;AACjD,SACEC,kBAAkB,QAEb,yBAAsB;AAC7B,SAASC,MAAM,QAAQ,mBAAU","ignoreList":[]}
1
+ {"version":3,"names":["ModalView","Container","NoPermission","NoCamera","ErrorView","Camera","FocusIndicator","capturePhotoToFile","ActionRow","ModeSwitcherPill","Shutter","ZoomChips","RecordingTimer","ThumbnailStack","FlipButton","CaptureFlash","SideRail"],"sourceRoot":"../../../src","sources":["camera/index.tsx"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,gBAAa;AACvC,SAASC,SAAS,QAAQ,gBAAa;AACvC,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,QAAQ,QAAQ,eAAY;AACrC,SAASC,SAAS,QAAQ,YAAS;AACnC,SAASC,MAAM,QAA2B,aAAU;AACpD,SAASC,cAAc,QAAQ,qBAAkB;AACjD,SACEC,kBAAkB,QAEb,yBAAsB;AAC7B,SACEC,SAAS,EACTC,gBAAgB,EAChBC,OAAO,EACPC,SAAS,EACTC,cAAc,EACdC,cAAc,EACdC,UAAU,QACL,mBAAU;AACjB,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,QAAQ,QAA0C,kBAAS","ignoreList":[]}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+
3
+ import { StyleSheet, Text, View } from 'react-native';
4
+ import { Button, r, useThemedStyles } from '@unif/react-native-design';
5
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
6
+ export function PreviewBottomBar({
7
+ variant,
8
+ index,
9
+ total,
10
+ onRetake,
11
+ onSave,
12
+ onBack,
13
+ onDelete
14
+ }) {
15
+ const styles = useThemedStyles(makeStyles);
16
+ return /*#__PURE__*/_jsxs(View, {
17
+ style: styles.root,
18
+ children: [variant === 'gallery' && /*#__PURE__*/_jsxs(Text, {
19
+ style: styles.counter,
20
+ children: ["\u7B2C ", index + 1, "/", total, " \u5F20"]
21
+ }), /*#__PURE__*/_jsx(View, {
22
+ style: styles.btns,
23
+ children: variant === 'confirm' ? /*#__PURE__*/_jsxs(_Fragment, {
24
+ children: [/*#__PURE__*/_jsx(Button, {
25
+ variant: "ghost",
26
+ label: "\u91CD\u62CD",
27
+ onPress: onRetake,
28
+ testID: "retake-btn"
29
+ }), /*#__PURE__*/_jsx(Button, {
30
+ variant: "primary",
31
+ label: "\u4FDD\u5B58",
32
+ onPress: onSave,
33
+ testID: "save-btn"
34
+ })]
35
+ }) : /*#__PURE__*/_jsxs(_Fragment, {
36
+ children: [/*#__PURE__*/_jsx(Button, {
37
+ variant: "ghost",
38
+ label: "\u8FD4\u56DE",
39
+ onPress: onBack,
40
+ testID: "back-btn"
41
+ }), /*#__PURE__*/_jsx(Button, {
42
+ variant: "danger",
43
+ label: "\u5220\u9664",
44
+ onPress: onDelete,
45
+ testID: "delete-btn"
46
+ })]
47
+ })
48
+ })]
49
+ });
50
+ }
51
+ const makeStyles = c => StyleSheet.create({
52
+ root: {
53
+ paddingHorizontal: r(16),
54
+ paddingBottom: r(26),
55
+ gap: r(12),
56
+ alignItems: 'center'
57
+ },
58
+ counter: {
59
+ color: c.foreground,
60
+ fontSize: r(15),
61
+ fontWeight: '600'
62
+ },
63
+ btns: {
64
+ flexDirection: 'row',
65
+ gap: r(12),
66
+ justifyContent: 'center'
67
+ }
68
+ });
69
+ //# sourceMappingURL=PreviewBottomBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["StyleSheet","Text","View","Button","r","useThemedStyles","jsxs","_jsxs","jsx","_jsx","Fragment","_Fragment","PreviewBottomBar","variant","index","total","onRetake","onSave","onBack","onDelete","styles","makeStyles","style","root","children","counter","btns","label","onPress","testID","c","create","paddingHorizontal","paddingBottom","gap","alignItems","color","foreground","fontSize","fontWeight","flexDirection","justifyContent"],"sourceRoot":"../../../../src","sources":["camera/preview/PreviewBottomBar.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AACrD,SAASC,MAAM,EAAEC,CAAC,EAAEC,eAAe,QAAQ,2BAA2B;AAAC,SAAAC,IAAA,IAAAC,KAAA,EAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA;AAavE,OAAO,SAASC,gBAAgBA,CAAC;EAC/BC,OAAO;EACPC,KAAK;EACLC,KAAK;EACLC,QAAQ;EACRC,MAAM;EACNC,MAAM;EACNC;AACK,CAAC,EAAE;EACR,MAAMC,MAAM,GAAGf,eAAe,CAACgB,UAAU,CAAC;EAC1C,oBACEd,KAAA,CAACL,IAAI;IAACoB,KAAK,EAAEF,MAAM,CAACG,IAAK;IAAAC,QAAA,GACtBX,OAAO,KAAK,SAAS,iBACpBN,KAAA,CAACN,IAAI;MAACqB,KAAK,EAAEF,MAAM,CAACK,OAAQ;MAAAD,QAAA,GAAC,SACzB,EAACV,KAAK,GAAG,CAAC,EAAC,GAAC,EAACC,KAAK,EAAC,SACvB;IAAA,CAAM,CACP,eACDN,IAAA,CAACP,IAAI;MAACoB,KAAK,EAAEF,MAAM,CAACM,IAAK;MAAAF,QAAA,EACtBX,OAAO,KAAK,SAAS,gBACpBN,KAAA,CAAAI,SAAA;QAAAa,QAAA,gBACEf,IAAA,CAACN,MAAM;UACLU,OAAO,EAAC,OAAO;UACfc,KAAK,EAAC,cAAI;UACVC,OAAO,EAAEZ,QAAS;UAClBa,MAAM,EAAC;QAAY,CACpB,CAAC,eACFpB,IAAA,CAACN,MAAM;UACLU,OAAO,EAAC,SAAS;UACjBc,KAAK,EAAC,cAAI;UACVC,OAAO,EAAEX,MAAO;UAChBY,MAAM,EAAC;QAAU,CAClB,CAAC;MAAA,CACF,CAAC,gBAEHtB,KAAA,CAAAI,SAAA;QAAAa,QAAA,gBACEf,IAAA,CAACN,MAAM;UACLU,OAAO,EAAC,OAAO;UACfc,KAAK,EAAC,cAAI;UACVC,OAAO,EAAEV,MAAO;UAChBW,MAAM,EAAC;QAAU,CAClB,CAAC,eACFpB,IAAA,CAACN,MAAM;UACLU,OAAO,EAAC,QAAQ;UAChBc,KAAK,EAAC,cAAI;UACVC,OAAO,EAAET,QAAS;UAClBU,MAAM,EAAC;QAAY,CACpB,CAAC;MAAA,CACF;IACH,CACG,CAAC;EAAA,CACH,CAAC;AAEX;AAEA,MAAMR,UAAU,GAAIS,CAAc,IAChC9B,UAAU,CAAC+B,MAAM,CAAC;EAChBR,IAAI,EAAE;IACJS,iBAAiB,EAAE5B,CAAC,CAAC,EAAE,CAAC;IACxB6B,aAAa,EAAE7B,CAAC,CAAC,EAAE,CAAC;IACpB8B,GAAG,EAAE9B,CAAC,CAAC,EAAE,CAAC;IACV+B,UAAU,EAAE;EACd,CAAC;EACDV,OAAO,EAAE;IAAEW,KAAK,EAAEN,CAAC,CAACO,UAAU;IAAEC,QAAQ,EAAElC,CAAC,CAAC,EAAE,CAAC;IAAEmC,UAAU,EAAE;EAAM,CAAC;EACpEb,IAAI,EAAE;IAAEc,aAAa,EAAE,KAAK;IAAEN,GAAG,EAAE9B,CAAC,CAAC,EAAE,CAAC;IAAEqC,cAAc,EAAE;EAAS;AACrE,CAAC,CAAC","ignoreList":[]}