@unif/react-native-camera 2.6.1 → 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 +7 -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 +4 -2
  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
@@ -1,94 +0,0 @@
1
- "use strict";
2
-
3
- import { StyleSheet, TouchableOpacity, View } from 'react-native';
4
- import { Button, Segmented, r, useThemedStyles } from '@unif/react-native-design';
5
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
- const labelMap = {
7
- single: '拍照',
8
- continuous: '连拍',
9
- video: '视频'
10
- };
11
- export function Footer({
12
- modes,
13
- currentIndex,
14
- recording,
15
- onShutter,
16
- onSelectMode,
17
- onCancel,
18
- onFinishBurst,
19
- burstCount
20
- }) {
21
- const styles = useThemedStyles(makeStyles);
22
- const modeItems = modes.map((m, i) => ({
23
- id: String(i),
24
- label: labelMap[m.mode],
25
- testID: `mode-${m.mode}`
26
- }));
27
- return /*#__PURE__*/_jsxs(View, {
28
- style: styles.root,
29
- children: [!recording && modeItems.length > 0 && /*#__PURE__*/_jsx(View, {
30
- style: styles.modesRow,
31
- children: /*#__PURE__*/_jsx(Segmented, {
32
- items: modeItems,
33
- value: String(currentIndex),
34
- onChange: v => onSelectMode(Number(v)),
35
- testID: "mode-segmented"
36
- })
37
- }), /*#__PURE__*/_jsxs(View, {
38
- style: styles.actions,
39
- children: [/*#__PURE__*/_jsx(Button, {
40
- variant: "ghost",
41
- label: "\u53D6\u6D88",
42
- onPress: onCancel,
43
- testID: "cancel-btn",
44
- disabled: recording
45
- }), /*#__PURE__*/_jsx(TouchableOpacity, {
46
- onPress: onShutter,
47
- testID: "shutter-btn",
48
- style: [styles.shutter, recording && styles.shutterRecording]
49
- }), onFinishBurst && burstCount && burstCount > 0 ? /*#__PURE__*/_jsx(Button, {
50
- variant: "primary",
51
- label: `完成 (${burstCount})`,
52
- onPress: onFinishBurst,
53
- testID: "finish-burst-btn"
54
- }) : /*#__PURE__*/_jsx(View, {
55
- style: styles.placeholder
56
- })]
57
- })]
58
- });
59
- }
60
- const makeStyles = c => StyleSheet.create({
61
- root: {
62
- position: 'absolute',
63
- bottom: r(30),
64
- left: 0,
65
- right: 0,
66
- alignItems: 'center'
67
- },
68
- modesRow: {
69
- marginBottom: r(16)
70
- },
71
- actions: {
72
- flexDirection: 'row',
73
- width: '100%',
74
- justifyContent: 'space-around',
75
- alignItems: 'center'
76
- },
77
- // shutter 圆形快门:相机 UX 惯例,沿用白底高对比度.
78
- // 录制态切换为 c.error 红底标识"录制中".
79
- shutter: {
80
- width: r(64),
81
- height: r(64),
82
- borderRadius: r(32),
83
- backgroundColor: c.surface,
84
- borderWidth: r(4),
85
- borderColor: c.outline
86
- },
87
- shutterRecording: {
88
- backgroundColor: c.error
89
- },
90
- placeholder: {
91
- width: r(60)
92
- }
93
- });
94
- //# sourceMappingURL=Footer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["StyleSheet","TouchableOpacity","View","Button","Segmented","r","useThemedStyles","jsx","_jsx","jsxs","_jsxs","labelMap","single","continuous","video","Footer","modes","currentIndex","recording","onShutter","onSelectMode","onCancel","onFinishBurst","burstCount","styles","makeStyles","modeItems","map","m","i","id","String","label","mode","testID","style","root","children","length","modesRow","items","value","onChange","v","Number","actions","variant","onPress","disabled","shutter","shutterRecording","placeholder","c","create","position","bottom","left","right","alignItems","marginBottom","flexDirection","width","justifyContent","height","borderRadius","backgroundColor","surface","borderWidth","borderColor","outline","error"],"sourceRoot":"../../../../src","sources":["camera/footer/Footer.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,43 +0,0 @@
1
- "use strict";
2
-
3
- import { useState } from 'react';
4
- import { StyleSheet, View } from 'react-native';
5
- import { r } from '@unif/react-native-design';
6
- import { Carousel } from "../../components/Carousel/index.js";
7
- import { PreviewThumbnail } from "../../components/PreviewThumbnail.js";
8
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
- export function PreView({
10
- files
11
- }) {
12
- const [index, setIndex] = useState(0);
13
- return /*#__PURE__*/_jsxs(View, {
14
- style: styles.root,
15
- testID: "multi-pre",
16
- children: [/*#__PURE__*/_jsx(Carousel, {
17
- data: files,
18
- onIndexChange: setIndex
19
- }), /*#__PURE__*/_jsx(View, {
20
- style: styles.thumbWrap,
21
- children: /*#__PURE__*/_jsx(PreviewThumbnail, {
22
- files: files,
23
- currentIndex: index,
24
- onTap: setIndex
25
- })
26
- })]
27
- });
28
- }
29
- const styles = StyleSheet.create({
30
- // 多图预览容器固定黑底:相机 UX 惯例,与 SinglePre / PreViewContainer 一致.
31
- root: {
32
- flex: 1,
33
- backgroundColor: '#000'
34
- },
35
- thumbWrap: {
36
- position: 'absolute',
37
- bottom: r(100),
38
- left: 0,
39
- right: 0,
40
- alignItems: 'center'
41
- }
42
- });
43
- //# sourceMappingURL=PreView.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useState","StyleSheet","View","r","Carousel","PreviewThumbnail","jsx","_jsx","jsxs","_jsxs","PreView","files","index","setIndex","style","styles","root","testID","children","data","onIndexChange","thumbWrap","currentIndex","onTap","create","flex","backgroundColor","position","bottom","left","right","alignItems"],"sourceRoot":"../../../../src","sources":["camera/preview/PreView.tsx"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,OAAO;AAChC,SAASC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SAASC,CAAC,QAAQ,2BAA2B;AAE7C,SAASC,QAAQ,QAAQ,oCAA2B;AACpD,SAASC,gBAAgB,QAAQ,sCAAmC;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAIrE,OAAO,SAASC,OAAOA,CAAC;EAAEC;AAAa,CAAC,EAAE;EACxC,MAAM,CAACC,KAAK,EAAEC,QAAQ,CAAC,GAAGb,QAAQ,CAAC,CAAC,CAAC;EACrC,oBACES,KAAA,CAACP,IAAI;IAACY,KAAK,EAAEC,MAAM,CAACC,IAAK;IAACC,MAAM,EAAC,WAAW;IAAAC,QAAA,gBAC1CX,IAAA,CAACH,QAAQ;MAACe,IAAI,EAAER,KAAM;MAACS,aAAa,EAAEP;IAAS,CAAE,CAAC,eAClDN,IAAA,CAACL,IAAI;MAACY,KAAK,EAAEC,MAAM,CAACM,SAAU;MAAAH,QAAA,eAC5BX,IAAA,CAACF,gBAAgB;QAACM,KAAK,EAAEA,KAAM;QAACW,YAAY,EAAEV,KAAM;QAACW,KAAK,EAAEV;MAAS,CAAE;IAAC,CACpE,CAAC;EAAA,CACH,CAAC;AAEX;AAEA,MAAME,MAAM,GAAGd,UAAU,CAACuB,MAAM,CAAC;EAC/B;EACAR,IAAI,EAAE;IAAES,IAAI,EAAE,CAAC;IAAEC,eAAe,EAAE;EAAO,CAAC;EAC1CL,SAAS,EAAE;IACTM,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAEzB,CAAC,CAAC,GAAG,CAAC;IACd0B,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1,33 +0,0 @@
1
- "use strict";
2
-
3
- import { StyleSheet, View } from 'react-native';
4
- import { SinglePre } from "./SinglePre.js";
5
- import { PreView } from "./PreView.js";
6
- import { PreviewFooter } from "./PreviewFooter.js";
7
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
8
- export function PreViewContainer({
9
- files,
10
- onRetake,
11
- onConfirm
12
- }) {
13
- const first = files[0];
14
- return /*#__PURE__*/_jsxs(View, {
15
- style: styles.root,
16
- children: [files.length === 1 && first != null ? /*#__PURE__*/_jsx(SinglePre, {
17
- file: first
18
- }) : files.length > 1 ? /*#__PURE__*/_jsx(PreView, {
19
- files: files
20
- }) : null, /*#__PURE__*/_jsx(PreviewFooter, {
21
- onRetake: onRetake,
22
- onConfirm: onConfirm
23
- })]
24
- });
25
- }
26
- const styles = StyleSheet.create({
27
- // 预览容器固定黑底:相机 UX 惯例,与 SinglePre / PreView / SlideItem 一致.
28
- root: {
29
- flex: 1,
30
- backgroundColor: '#000'
31
- }
32
- });
33
- //# sourceMappingURL=PreViewContainer.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["StyleSheet","View","SinglePre","PreView","PreviewFooter","jsx","_jsx","jsxs","_jsxs","PreViewContainer","files","onRetake","onConfirm","first","style","styles","root","children","length","file","create","flex","backgroundColor"],"sourceRoot":"../../../../src","sources":["camera/preview/PreViewContainer.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAE/C,SAASC,SAAS,QAAQ,gBAAa;AACvC,SAASC,OAAO,QAAQ,cAAW;AACnC,SAASC,aAAa,QAAQ,oBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAQhD,OAAO,SAASC,gBAAgBA,CAAC;EAAEC,KAAK;EAAEC,QAAQ;EAAEC;AAAiB,CAAC,EAAE;EACtE,MAAMC,KAAK,GAAGH,KAAK,CAAC,CAAC,CAAC;EACtB,oBACEF,KAAA,CAACP,IAAI;IAACa,KAAK,EAAEC,MAAM,CAACC,IAAK;IAAAC,QAAA,GACtBP,KAAK,CAACQ,MAAM,KAAK,CAAC,IAAIL,KAAK,IAAI,IAAI,gBAClCP,IAAA,CAACJ,SAAS;MAACiB,IAAI,EAAEN;IAAM,CAAE,CAAC,GACxBH,KAAK,CAACQ,MAAM,GAAG,CAAC,gBAClBZ,IAAA,CAACH,OAAO;MAACO,KAAK,EAAEA;IAAM,CAAE,CAAC,GACvB,IAAI,eACRJ,IAAA,CAACF,aAAa;MAACO,QAAQ,EAAEA,QAAS;MAACC,SAAS,EAAEA;IAAU,CAAE,CAAC;EAAA,CACvD,CAAC;AAEX;AAEA,MAAMG,MAAM,GAAGf,UAAU,CAACoB,MAAM,CAAC;EAC/B;EACAJ,IAAI,EAAE;IAAEK,IAAI,EAAE,CAAC;IAAEC,eAAe,EAAE;EAAO;AAC3C,CAAC,CAAC","ignoreList":[]}
@@ -1,36 +0,0 @@
1
- "use strict";
2
-
3
- import { StyleSheet, View } from 'react-native';
4
- import { Button, r } from '@unif/react-native-design';
5
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
- export function PreviewFooter({
7
- onRetake,
8
- onConfirm
9
- }) {
10
- return /*#__PURE__*/_jsxs(View, {
11
- style: styles.root,
12
- children: [/*#__PURE__*/_jsx(Button, {
13
- variant: "ghost",
14
- label: "\u91CD\u62CD",
15
- onPress: onRetake,
16
- testID: "retake-btn"
17
- }), /*#__PURE__*/_jsx(Button, {
18
- variant: "primary",
19
- label: "\u4F7F\u7528\u7167\u7247",
20
- onPress: onConfirm,
21
- testID: "confirm-btn"
22
- })]
23
- });
24
- }
25
- const styles = StyleSheet.create({
26
- root: {
27
- position: 'absolute',
28
- bottom: r(40),
29
- left: 0,
30
- right: 0,
31
- flexDirection: 'row',
32
- justifyContent: 'space-around',
33
- alignItems: 'center'
34
- }
35
- });
36
- //# sourceMappingURL=PreviewFooter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["StyleSheet","View","Button","r","jsx","_jsx","jsxs","_jsxs","PreviewFooter","onRetake","onConfirm","style","styles","root","children","variant","label","onPress","testID","create","position","bottom","left","right","flexDirection","justifyContent","alignItems"],"sourceRoot":"../../../../src","sources":["camera/preview/PreviewFooter.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SAASC,MAAM,EAAEC,CAAC,QAAQ,2BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAOtD,OAAO,SAASC,aAAaA,CAAC;EAAEC,QAAQ;EAAEC;AAAiB,CAAC,EAAE;EAC5D,oBACEH,KAAA,CAACN,IAAI;IAACU,KAAK,EAAEC,MAAM,CAACC,IAAK;IAAAC,QAAA,gBACvBT,IAAA,CAACH,MAAM;MACLa,OAAO,EAAC,OAAO;MACfC,KAAK,EAAC,cAAI;MACVC,OAAO,EAAER,QAAS;MAClBS,MAAM,EAAC;IAAY,CACpB,CAAC,eACFb,IAAA,CAACH,MAAM;MACLa,OAAO,EAAC,SAAS;MACjBC,KAAK,EAAC,0BAAM;MACZC,OAAO,EAAEP,SAAU;MACnBQ,MAAM,EAAC;IAAa,CACrB,CAAC;EAAA,CACE,CAAC;AAEX;AAEA,MAAMN,MAAM,GAAGZ,UAAU,CAACmB,MAAM,CAAC;EAC/BN,IAAI,EAAE;IACJO,QAAQ,EAAE,UAAU;IACpBC,MAAM,EAAElB,CAAC,CAAC,EAAE,CAAC;IACbmB,IAAI,EAAE,CAAC;IACPC,KAAK,EAAE,CAAC;IACRC,aAAa,EAAE,KAAK;IACpBC,cAAc,EAAE,cAAc;IAC9BC,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1,32 +0,0 @@
1
- "use strict";
2
-
3
- import { Image, StyleSheet, View } from 'react-native';
4
- import { Empty } from '@unif/react-native-design';
5
- import { jsx as _jsx } from "react/jsx-runtime";
6
- export function SinglePre({
7
- file
8
- }) {
9
- return /*#__PURE__*/_jsx(View, {
10
- style: styles.root,
11
- testID: "single-pre",
12
- children: file.mime === 'video/mp4' ? /*#__PURE__*/_jsx(Empty, {
13
- title: `视频 · ${file.duration?.toFixed(1) ?? '0.0'}s`,
14
- desc: file.path
15
- }) : /*#__PURE__*/_jsx(Image, {
16
- source: {
17
- uri: file.uri
18
- },
19
- style: StyleSheet.absoluteFill,
20
- resizeMode: "contain"
21
- })
22
- });
23
- }
24
- const styles = StyleSheet.create({
25
- // 相机预览容器固定黑底:相机 UX 惯例(任何主题下都需要让照片 / 视频在纯黑上凸显),
26
- // 不走 c.background token.
27
- root: {
28
- flex: 1,
29
- backgroundColor: '#000'
30
- }
31
- });
32
- //# sourceMappingURL=SinglePre.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["Image","StyleSheet","View","Empty","jsx","_jsx","SinglePre","file","style","styles","root","testID","children","mime","title","duration","toFixed","desc","path","source","uri","absoluteFill","resizeMode","create","flex","backgroundColor"],"sourceRoot":"../../../../src","sources":["camera/preview/SinglePre.tsx"],"mappings":";;AAAA,SAASA,KAAK,EAAEC,UAAU,EAAEC,IAAI,QAAQ,cAAc;AACtD,SAASC,KAAK,QAAQ,2BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAKlD,OAAO,SAASC,SAASA,CAAC;EAAEC;AAAY,CAAC,EAAE;EACzC,oBACEF,IAAA,CAACH,IAAI;IAACM,KAAK,EAAEC,MAAM,CAACC,IAAK;IAACC,MAAM,EAAC,YAAY;IAAAC,QAAA,EAC1CL,IAAI,CAACM,IAAI,KAAK,WAAW,gBACxBR,IAAA,CAACF,KAAK;MACJW,KAAK,EAAE,QAAQP,IAAI,CAACQ,QAAQ,EAAEC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,GAAI;MACrDC,IAAI,EAAEV,IAAI,CAACW;IAAK,CACjB,CAAC,gBAEFb,IAAA,CAACL,KAAK;MACJmB,MAAM,EAAE;QAAEC,GAAG,EAAEb,IAAI,CAACa;MAAI,CAAE;MAC1BZ,KAAK,EAAEP,UAAU,CAACoB,YAAa;MAC/BC,UAAU,EAAC;IAAS,CACrB;EACF,CACG,CAAC;AAEX;AAEA,MAAMb,MAAM,GAAGR,UAAU,CAACsB,MAAM,CAAC;EAC/B;EACA;EACAb,IAAI,EAAE;IAAEc,IAAI,EAAE,CAAC;IAAEC,eAAe,EAAE;EAAO;AAC3C,CAAC,CAAC","ignoreList":[]}
@@ -1,74 +0,0 @@
1
- "use strict";
2
-
3
- import { StyleSheet, View } from 'react-native';
4
- import { Chip, Icon, r, useColors } from '@unif/react-native-design';
5
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
- const flashLabel = {
7
- off: '闪关',
8
- on: '闪开',
9
- auto: '自动'
10
- };
11
- const flashOrder = ['off', 'auto', 'on'];
12
- const flashIconMap = {
13
- off: 'flash-off',
14
- on: 'flash-on',
15
- auto: 'flash-auto'
16
- };
17
- export function SetUp({
18
- flash,
19
- aspectRatio,
20
- onChangeFlash,
21
- onChangeAspectRatio,
22
- onToggleLens,
23
- lensLabel
24
- }) {
25
- const c = useColors();
26
- const nextFlash = () => {
27
- const i = flashOrder.indexOf(flash);
28
- const next = flashOrder[(i + 1) % flashOrder.length];
29
- onChangeFlash(next);
30
- };
31
- return /*#__PURE__*/_jsxs(View, {
32
- style: styles.root,
33
- children: [/*#__PURE__*/_jsx(Chip, {
34
- label: flashLabel[flash],
35
- leading: /*#__PURE__*/_jsx(Icon, {
36
- name: flashIconMap[flash],
37
- size: r(14),
38
- color: c.foreground
39
- }),
40
- onPress: nextFlash,
41
- selected: flash !== 'off',
42
- testID: "flash-btn"
43
- }), /*#__PURE__*/_jsx(Chip, {
44
- label: aspectRatio,
45
- leading: /*#__PURE__*/_jsx(Icon, {
46
- name: aspectRatio === '4:3' ? 'aspect-4-3' : 'aspect-16-9',
47
- size: r(14),
48
- color: c.foreground
49
- }),
50
- onPress: () => onChangeAspectRatio(aspectRatio === '4:3' ? '16:9' : '4:3'),
51
- testID: "aspect-btn"
52
- }), /*#__PURE__*/_jsx(Chip, {
53
- label: lensLabel,
54
- leading: /*#__PURE__*/_jsx(Icon, {
55
- name: "lens-flip",
56
- size: r(14),
57
- color: c.foreground
58
- }),
59
- onPress: onToggleLens,
60
- testID: "lens-btn"
61
- })]
62
- });
63
- }
64
- const styles = StyleSheet.create({
65
- root: {
66
- position: 'absolute',
67
- top: r(60),
68
- left: r(16),
69
- right: r(16),
70
- flexDirection: 'row',
71
- justifyContent: 'space-between'
72
- }
73
- });
74
- //# sourceMappingURL=SetUp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["StyleSheet","View","Chip","Icon","r","useColors","jsx","_jsx","jsxs","_jsxs","flashLabel","off","on","auto","flashOrder","flashIconMap","SetUp","flash","aspectRatio","onChangeFlash","onChangeAspectRatio","onToggleLens","lensLabel","c","nextFlash","i","indexOf","next","length","style","styles","root","children","label","leading","name","size","color","foreground","onPress","selected","testID","create","position","top","left","right","flexDirection","justifyContent"],"sourceRoot":"../../../../src","sources":["camera/setup/SetUp.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,IAAI,QAAQ,cAAc;AAC/C,SACEC,IAAI,EACJC,IAAI,EACJC,CAAC,EACDC,SAAS,QAEJ,2BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAcnC,MAAMC,UAAqC,GAAG;EAC5CC,GAAG,EAAE,IAAI;EACTC,EAAE,EAAE,IAAI;EACRC,IAAI,EAAE;AACR,CAAC;AACD,MAAMC,UAAuB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC;AAErD,MAAMC,YAAyC,GAAG;EAChDJ,GAAG,EAAE,WAAW;EAChBC,EAAE,EAAE,UAAU;EACdC,IAAI,EAAE;AACR,CAAC;AAED,OAAO,SAASG,KAAKA,CAAC;EACpBC,KAAK;EACLC,WAAW;EACXC,aAAa;EACbC,mBAAmB;EACnBC,YAAY;EACZC;AACK,CAAC,EAAE;EACR,MAAMC,CAAC,GAAGlB,SAAS,CAAC,CAAC;EACrB,MAAMmB,SAAS,GAAGA,CAAA,KAAM;IACtB,MAAMC,CAAC,GAAGX,UAAU,CAACY,OAAO,CAACT,KAAK,CAAC;IACnC,MAAMU,IAAI,GAAGb,UAAU,CAAC,CAACW,CAAC,GAAG,CAAC,IAAIX,UAAU,CAACc,MAAM,CAAc;IACjET,aAAa,CAACQ,IAAI,CAAC;EACrB,CAAC;EACD,oBACElB,KAAA,CAACR,IAAI;IAAC4B,KAAK,EAAEC,MAAM,CAACC,IAAK;IAAAC,QAAA,gBACvBzB,IAAA,CAACL,IAAI;MACH+B,KAAK,EAAEvB,UAAU,CAACO,KAAK,CAAE;MACzBiB,OAAO,eACL3B,IAAA,CAACJ,IAAI;QAACgC,IAAI,EAAEpB,YAAY,CAACE,KAAK,CAAE;QAACmB,IAAI,EAAEhC,CAAC,CAAC,EAAE,CAAE;QAACiC,KAAK,EAAEd,CAAC,CAACe;MAAW,CAAE,CACrE;MACDC,OAAO,EAAEf,SAAU;MACnBgB,QAAQ,EAAEvB,KAAK,KAAK,KAAM;MAC1BwB,MAAM,EAAC;IAAW,CACnB,CAAC,eACFlC,IAAA,CAACL,IAAI;MACH+B,KAAK,EAAEf,WAAY;MACnBgB,OAAO,eACL3B,IAAA,CAACJ,IAAI;QACHgC,IAAI,EAAEjB,WAAW,KAAK,KAAK,GAAG,YAAY,GAAG,aAAc;QAC3DkB,IAAI,EAAEhC,CAAC,CAAC,EAAE,CAAE;QACZiC,KAAK,EAAEd,CAAC,CAACe;MAAW,CACrB,CACF;MACDC,OAAO,EAAEA,CAAA,KACPnB,mBAAmB,CAACF,WAAW,KAAK,KAAK,GAAG,MAAM,GAAG,KAAK,CAC3D;MACDuB,MAAM,EAAC;IAAY,CACpB,CAAC,eACFlC,IAAA,CAACL,IAAI;MACH+B,KAAK,EAAEX,SAAU;MACjBY,OAAO,eAAE3B,IAAA,CAACJ,IAAI;QAACgC,IAAI,EAAC,WAAW;QAACC,IAAI,EAAEhC,CAAC,CAAC,EAAE,CAAE;QAACiC,KAAK,EAAEd,CAAC,CAACe;MAAW,CAAE,CAAE;MACrEC,OAAO,EAAElB,YAAa;MACtBoB,MAAM,EAAC;IAAU,CAClB,CAAC;EAAA,CACE,CAAC;AAEX;AAEA,MAAMX,MAAM,GAAG9B,UAAU,CAAC0C,MAAM,CAAC;EAC/BX,IAAI,EAAE;IACJY,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAExC,CAAC,CAAC,EAAE,CAAC;IACVyC,IAAI,EAAEzC,CAAC,CAAC,EAAE,CAAC;IACX0C,KAAK,EAAE1C,CAAC,CAAC,EAAE,CAAC;IACZ2C,aAAa,EAAE,KAAK;IACpBC,cAAc,EAAE;EAClB;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1,39 +0,0 @@
1
- "use strict";
2
-
3
- import { StyleSheet, TouchableOpacity, View } from 'react-native';
4
- import { Thumbnail, r, useThemedStyles } from '@unif/react-native-design';
5
- import { jsx as _jsx } from "react/jsx-runtime";
6
- export function PreviewThumbnail({
7
- files,
8
- currentIndex,
9
- onTap
10
- }) {
11
- const styles = useThemedStyles(makeStyles);
12
- return /*#__PURE__*/_jsx(View, {
13
- style: styles.row,
14
- children: files.map((f, i) => /*#__PURE__*/_jsx(TouchableOpacity, {
15
- onPress: () => onTap(i),
16
- style: [styles.thumbWrap, i === currentIndex && styles.thumbWrapActive],
17
- children: /*#__PURE__*/_jsx(Thumbnail, {
18
- uri: f.uri,
19
- size: "sm"
20
- })
21
- }, `${f.path}-${i}`))
22
- });
23
- }
24
- const makeStyles = c => StyleSheet.create({
25
- row: {
26
- flexDirection: 'row',
27
- gap: r(6),
28
- padding: r(8)
29
- },
30
- thumbWrap: {
31
- borderRadius: r(4),
32
- borderWidth: 2,
33
- borderColor: 'transparent'
34
- },
35
- thumbWrapActive: {
36
- borderColor: c.primary
37
- }
38
- });
39
- //# sourceMappingURL=PreviewThumbnail.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["StyleSheet","TouchableOpacity","View","Thumbnail","r","useThemedStyles","jsx","_jsx","PreviewThumbnail","files","currentIndex","onTap","styles","makeStyles","style","row","children","map","f","i","onPress","thumbWrap","thumbWrapActive","uri","size","path","c","create","flexDirection","gap","padding","borderRadius","borderWidth","borderColor","primary"],"sourceRoot":"../../../src","sources":["components/PreviewThumbnail.tsx"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,gBAAgB,EAAEC,IAAI,QAAQ,cAAc;AACjE,SACEC,SAAS,EACTC,CAAC,EACDC,eAAe,QAEV,2BAA2B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AASnC,OAAO,SAASC,gBAAgBA,CAAC;EAAEC,KAAK;EAAEC,YAAY;EAAEC;AAAa,CAAC,EAAE;EACtE,MAAMC,MAAM,GAAGP,eAAe,CAACQ,UAAU,CAAC;EAC1C,oBACEN,IAAA,CAACL,IAAI;IAACY,KAAK,EAAEF,MAAM,CAACG,GAAI;IAAAC,QAAA,EACrBP,KAAK,CAACQ,GAAG,CAAC,CAACC,CAAC,EAAEC,CAAC,kBACdZ,IAAA,CAACN,gBAAgB;MAEfmB,OAAO,EAAEA,CAAA,KAAMT,KAAK,CAACQ,CAAC,CAAE;MACxBL,KAAK,EAAE,CACLF,MAAM,CAACS,SAAS,EAChBF,CAAC,KAAKT,YAAY,IAAIE,MAAM,CAACU,eAAe,CAC5C;MAAAN,QAAA,eAEFT,IAAA,CAACJ,SAAS;QAACoB,GAAG,EAAEL,CAAC,CAACK,GAAI;QAACC,IAAI,EAAC;MAAI,CAAE;IAAC,GAP9B,GAAGN,CAAC,CAACO,IAAI,IAAIN,CAAC,EAQH,CACnB;EAAC,CACE,CAAC;AAEX;AAEA,MAAMN,UAAU,GAAIa,CAAc,IAChC1B,UAAU,CAAC2B,MAAM,CAAC;EAChBZ,GAAG,EAAE;IAAEa,aAAa,EAAE,KAAK;IAAEC,GAAG,EAAEzB,CAAC,CAAC,CAAC,CAAC;IAAE0B,OAAO,EAAE1B,CAAC,CAAC,CAAC;EAAE,CAAC;EACvDiB,SAAS,EAAE;IACTU,YAAY,EAAE3B,CAAC,CAAC,CAAC,CAAC;IAClB4B,WAAW,EAAE,CAAC;IACdC,WAAW,EAAE;EACf,CAAC;EACDX,eAAe,EAAE;IAAEW,WAAW,EAAEP,CAAC,CAACQ;EAAQ;AAC5C,CAAC,CAAC","ignoreList":[]}
@@ -1,16 +0,0 @@
1
- "use strict";
2
-
3
- import { Alert } from 'react-native';
4
- export function useConfirm() {
5
- return (title, message) => new Promise(resolve => {
6
- Alert.alert(title, message, [{
7
- text: '取消',
8
- onPress: () => resolve(false),
9
- style: 'cancel'
10
- }, {
11
- text: '确认',
12
- onPress: () => resolve(true)
13
- }]);
14
- });
15
- }
16
- //# sourceMappingURL=useConfirm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["Alert","useConfirm","title","message","Promise","resolve","alert","text","onPress","style"],"sourceRoot":"../../../src","sources":["hooks/useConfirm.tsx"],"mappings":";;AAAA,SAASA,KAAK,QAAQ,cAAc;AAEpC,OAAO,SAASC,UAAUA,CAAA,EAAG;EAC3B,OAAO,CAACC,KAAa,EAAEC,OAAe,KACpC,IAAIC,OAAO,CAAWC,OAAO,IAAK;IAChCL,KAAK,CAACM,KAAK,CAACJ,KAAK,EAAEC,OAAO,EAAE,CAC1B;MAAEI,IAAI,EAAE,IAAI;MAAEC,OAAO,EAAEA,CAAA,KAAMH,OAAO,CAAC,KAAK,CAAC;MAAEI,KAAK,EAAE;IAAS,CAAC,EAC9D;MAAEF,IAAI,EAAE,IAAI;MAAEC,OAAO,EAAEA,CAAA,KAAMH,OAAO,CAAC,IAAI;IAAE,CAAC,CAC7C,CAAC;EACJ,CAAC,CAAC;AACN","ignoreList":[]}
@@ -1,14 +0,0 @@
1
- import type { CameraMode } from '../../utils';
2
- type Props = {
3
- modes: CameraMode[];
4
- currentIndex: number;
5
- recording: boolean;
6
- onShutter: () => void;
7
- onSelectMode: (i: number) => void;
8
- onCancel: () => void;
9
- onFinishBurst?: () => void;
10
- burstCount?: number;
11
- };
12
- export declare function Footer({ modes, currentIndex, recording, onShutter, onSelectMode, onCancel, onFinishBurst, burstCount, }: Props): import("react/jsx-runtime").JSX.Element;
13
- export {};
14
- //# sourceMappingURL=Footer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Footer.d.ts","sourceRoot":"","sources":["../../../../../src/camera/footer/Footer.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,YAAY,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAQF,wBAAgB,MAAM,CAAC,EACrB,KAAK,EACL,YAAY,EACZ,SAAS,EACT,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,aAAa,EACb,UAAU,GACX,EAAE,KAAK,2CA8CP"}
@@ -1,7 +0,0 @@
1
- import type { CustomPhotoFile } from '../../utils';
2
- type Props = {
3
- files: CustomPhotoFile[];
4
- };
5
- export declare function PreView({ files }: Props): import("react/jsx-runtime").JSX.Element;
6
- export {};
7
- //# sourceMappingURL=PreView.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PreView.d.ts","sourceRoot":"","sources":["../../../../../src/camera/preview/PreView.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAInD,KAAK,KAAK,GAAG;IAAE,KAAK,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC;AAE1C,wBAAgB,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,2CAUvC"}
@@ -1,9 +0,0 @@
1
- import type { CustomPhotoFile } from '../../utils';
2
- type Props = {
3
- files: CustomPhotoFile[];
4
- onRetake: () => void;
5
- onConfirm: () => void;
6
- };
7
- export declare function PreViewContainer({ files, onRetake, onConfirm }: Props): import("react/jsx-runtime").JSX.Element;
8
- export {};
9
- //# sourceMappingURL=PreViewContainer.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PreViewContainer.d.ts","sourceRoot":"","sources":["../../../../../src/camera/preview/PreViewContainer.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAKnD,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,KAAK,2CAYrE"}
@@ -1,7 +0,0 @@
1
- type Props = {
2
- onRetake: () => void;
3
- onConfirm: () => void;
4
- };
5
- export declare function PreviewFooter({ onRetake, onConfirm }: Props): import("react/jsx-runtime").JSX.Element;
6
- export {};
7
- //# sourceMappingURL=PreviewFooter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PreviewFooter.d.ts","sourceRoot":"","sources":["../../../../../src/camera/preview/PreviewFooter.tsx"],"names":[],"mappings":"AAGA,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,KAAK,2CAiB3D"}
@@ -1,7 +0,0 @@
1
- import type { CustomPhotoFile } from '../../utils';
2
- type Props = {
3
- file: CustomPhotoFile;
4
- };
5
- export declare function SinglePre({ file }: Props): import("react/jsx-runtime").JSX.Element;
6
- export {};
7
- //# sourceMappingURL=SinglePre.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SinglePre.d.ts","sourceRoot":"","sources":["../../../../../src/camera/preview/SinglePre.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,KAAK,KAAK,GAAG;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,CAAC;AAEvC,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,2CAiBxC"}
@@ -1,13 +0,0 @@
1
- export type FlashMode = 'off' | 'on' | 'auto';
2
- export type AspectRatio = '4:3' | '16:9';
3
- type Props = {
4
- flash: FlashMode;
5
- aspectRatio: AspectRatio;
6
- onChangeFlash: (m: FlashMode) => void;
7
- onChangeAspectRatio: (r: AspectRatio) => void;
8
- onToggleLens: () => void;
9
- lensLabel: string;
10
- };
11
- export declare function SetUp({ flash, aspectRatio, onChangeFlash, onChangeAspectRatio, onToggleLens, lensLabel, }: Props): import("react/jsx-runtime").JSX.Element;
12
- export {};
13
- //# sourceMappingURL=SetUp.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"SetUp.d.ts","sourceRoot":"","sources":["../../../../../src/camera/setup/SetUp.tsx"],"names":[],"mappings":"AASA,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC;AAC9C,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,MAAM,CAAC;AAEzC,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IACtC,mBAAmB,EAAE,CAAC,CAAC,EAAE,WAAW,KAAK,IAAI,CAAC;IAC9C,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAeF,wBAAgB,KAAK,CAAC,EACpB,KAAK,EACL,WAAW,EACX,aAAa,EACb,mBAAmB,EACnB,YAAY,EACZ,SAAS,GACV,EAAE,KAAK,2CAwCP"}
@@ -1,9 +0,0 @@
1
- import type { CustomPhotoFile } from '../utils';
2
- type Props = {
3
- files: CustomPhotoFile[];
4
- currentIndex: number;
5
- onTap: (i: number) => void;
6
- };
7
- export declare function PreviewThumbnail({ files, currentIndex, onTap }: Props): import("react/jsx-runtime").JSX.Element;
8
- export {};
9
- //# sourceMappingURL=PreviewThumbnail.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PreviewThumbnail.d.ts","sourceRoot":"","sources":["../../../../src/components/PreviewThumbnail.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5B,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,KAAK,2CAkBrE"}
@@ -1,2 +0,0 @@
1
- export declare function useConfirm(): (title: string, message: string) => Promise<boolean>;
2
- //# sourceMappingURL=useConfirm.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useConfirm.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useConfirm.tsx"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,KAChB,OAAO,MAAM,EAAE,SAAS,MAAM,sBAOvC"}
@@ -1,113 +0,0 @@
1
- import { StyleSheet, TouchableOpacity, View } from 'react-native';
2
- import {
3
- Button,
4
- Segmented,
5
- r,
6
- useThemedStyles,
7
- type ColorTokens,
8
- } from '@unif/react-native-design';
9
- import type { CameraMode } from '../../utils';
10
-
11
- type Props = {
12
- modes: CameraMode[];
13
- currentIndex: number;
14
- recording: boolean;
15
- onShutter: () => void;
16
- onSelectMode: (i: number) => void;
17
- onCancel: () => void;
18
- onFinishBurst?: () => void;
19
- burstCount?: number;
20
- };
21
-
22
- const labelMap: Record<CameraMode['mode'], string> = {
23
- single: '拍照',
24
- continuous: '连拍',
25
- video: '视频',
26
- };
27
-
28
- export function Footer({
29
- modes,
30
- currentIndex,
31
- recording,
32
- onShutter,
33
- onSelectMode,
34
- onCancel,
35
- onFinishBurst,
36
- burstCount,
37
- }: Props) {
38
- const styles = useThemedStyles(makeStyles);
39
- const modeItems = modes.map((m, i) => ({
40
- id: String(i),
41
- label: labelMap[m.mode],
42
- testID: `mode-${m.mode}`,
43
- }));
44
- return (
45
- <View style={styles.root}>
46
- {!recording && modeItems.length > 0 && (
47
- <View style={styles.modesRow}>
48
- <Segmented
49
- items={modeItems}
50
- value={String(currentIndex)}
51
- onChange={(v) => onSelectMode(Number(v))}
52
- testID="mode-segmented"
53
- />
54
- </View>
55
- )}
56
- <View style={styles.actions}>
57
- <Button
58
- variant="ghost"
59
- label="取消"
60
- onPress={onCancel}
61
- testID="cancel-btn"
62
- disabled={recording}
63
- />
64
- {/* shutter 按钮:相机 UX 惯例的圆形快门,无 design 对应组件,保留自定义实现 */}
65
- <TouchableOpacity
66
- onPress={onShutter}
67
- testID="shutter-btn"
68
- style={[styles.shutter, recording && styles.shutterRecording]}
69
- />
70
- {onFinishBurst && burstCount && burstCount > 0 ? (
71
- <Button
72
- variant="primary"
73
- label={`完成 (${burstCount})`}
74
- onPress={onFinishBurst}
75
- testID="finish-burst-btn"
76
- />
77
- ) : (
78
- <View style={styles.placeholder} />
79
- )}
80
- </View>
81
- </View>
82
- );
83
- }
84
-
85
- const makeStyles = (c: ColorTokens) =>
86
- StyleSheet.create({
87
- root: {
88
- position: 'absolute',
89
- bottom: r(30),
90
- left: 0,
91
- right: 0,
92
- alignItems: 'center',
93
- },
94
- modesRow: { marginBottom: r(16) },
95
- actions: {
96
- flexDirection: 'row',
97
- width: '100%',
98
- justifyContent: 'space-around',
99
- alignItems: 'center',
100
- },
101
- // shutter 圆形快门:相机 UX 惯例,沿用白底高对比度.
102
- // 录制态切换为 c.error 红底标识"录制中".
103
- shutter: {
104
- width: r(64),
105
- height: r(64),
106
- borderRadius: r(32),
107
- backgroundColor: c.surface,
108
- borderWidth: r(4),
109
- borderColor: c.outline,
110
- },
111
- shutterRecording: { backgroundColor: c.error },
112
- placeholder: { width: r(60) },
113
- });