@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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SideRail.d.ts","sourceRoot":"","sources":["../../../../../src/camera/setup/SideRail.tsx"],"names":[],"mappings":"AAMA,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,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,aAAa,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IACtC,mBAAmB,EAAE,CAAC,CAAC,EAAE,WAAW,KAAK,IAAI,CAAC;IAC9C,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B,CAAC;AAcF,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,WAAW,EACX,KAAK,EACL,IAAI,EACJ,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,YAAY,GACb,EAAE,KAAK,2CAmFP"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SideRail.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SideRail.test.d.ts","sourceRoot":"","sources":["../../../../../src/camera/setup/SideRail.test.tsx"],"names":[],"mappings":""}
@@ -1,2 +1,3 @@
1
- export { SetUp, type FlashMode, type AspectRatio } from './SetUp';
1
+ export { SideRail } from './SideRail';
2
+ export type { FlashMode, AspectRatio } from './SideRail';
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/camera/setup/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/camera/setup/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"SlideItem.d.ts","sourceRoot":"","sources":["../../../../../src/components/Carousel/SlideItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,2CAU5D"}
1
+ {"version":3,"file":"SlideItem.d.ts","sourceRoot":"","sources":["../../../../../src/components/Carousel/SlideItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,2CAc5D"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=SlideItem.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SlideItem.test.d.ts","sourceRoot":"","sources":["../../../../../src/components/Carousel/SlideItem.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export declare function VideoPlayer({ uri }: {
2
+ uri: string;
3
+ }): import("react/jsx-runtime").JSX.Element;
4
+ //# sourceMappingURL=VideoPlayer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoPlayer.d.ts","sourceRoot":"","sources":["../../../../src/components/VideoPlayer.tsx"],"names":[],"mappings":"AAIA,wBAAgB,WAAW,CAAC,EAAE,GAAG,EAAE,EAAE;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,2CAyBnD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=VideoPlayer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VideoPlayer.test.d.ts","sourceRoot":"","sources":["../../../../src/components/VideoPlayer.test.tsx"],"names":[],"mappings":""}
@@ -1,4 +1,3 @@
1
1
  export { Loading } from './Loading';
2
- export { PreviewThumbnail } from './PreviewThumbnail';
3
2
  export * from './Carousel';
4
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,cAAc,YAAY,CAAC"}
@@ -1,4 +1,3 @@
1
1
  export { useCreation } from './useCreation';
2
- export { useConfirm } from './useConfirm';
3
2
  export { useCamera } from './useCamera';
4
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unif/react-native-camera",
3
- "version": "2.6.1",
3
+ "version": "2.7.0",
4
4
  "description": "基于 react-native-vision-camera 5.x 的相机库(单拍/连拍/视频录制)",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -97,12 +97,13 @@
97
97
  "react-native": "0.85.0",
98
98
  "react-native-builder-bob": "^0.41.0",
99
99
  "react-native-gesture-handler": "^2.21.0",
100
- "react-native-nitro-image": "^0.14.0",
100
+ "react-native-nitro-image": "^0.15.0",
101
101
  "react-native-nitro-modules": "^0.35.0",
102
102
  "react-native-reanimated": "^4.0.0",
103
103
  "react-native-reanimated-carousel": "^5.0.0-beta.5",
104
104
  "react-native-safe-area-context": "^5.0.0",
105
105
  "react-native-svg": "^15.15.5",
106
+ "react-native-video": "7.0.0-beta.9",
106
107
  "react-native-vision-camera": "^5.0.0",
107
108
  "react-native-vision-camera-worklets": "^5.0.0",
108
109
  "react-native-webview": "*",
@@ -125,6 +126,7 @@
125
126
  "react-native-reanimated-carousel": ">=5.0.0-beta.0",
126
127
  "react-native-safe-area-context": ">=5.0.0",
127
128
  "react-native-svg": ">=15",
129
+ "react-native-video": ">=7.0.0-beta.0",
128
130
  "react-native-vision-camera": "^5.0.0",
129
131
  "react-native-vision-camera-worklets": "^5.0.0",
130
132
  "react-native-webview": "*",
@@ -1,11 +1,13 @@
1
1
  import {
2
2
  forwardRef,
3
3
  useCallback,
4
+ useEffect,
4
5
  useImperativeHandle,
5
6
  useRef,
6
7
  useState,
7
8
  } from 'react';
8
- import { StyleSheet, useWindowDimensions, View } from 'react-native';
9
+ import { Animated, StyleSheet, useWindowDimensions, View } from 'react-native';
10
+ import Svg, { Line } from 'react-native-svg';
9
11
  import {
10
12
  Camera as VisionCamera,
11
13
  useMicrophonePermission,
@@ -24,6 +26,7 @@ import type { CameraMode, CustomPhotoFile, Point } from '../utils';
24
26
  import { buildPhotoFile } from '../utils';
25
27
  import { capturePhotoToFile } from './capturePhotoHelper';
26
28
  import { FocusIndicator } from './FocusIndicator';
29
+ import { DARK } from './colors/dark';
27
30
  import type { AspectRatio, FlashMode } from './setup';
28
31
 
29
32
  const NEUTRAL_ZOOM = 1;
@@ -41,10 +44,23 @@ type Props = {
41
44
  flash?: FlashMode;
42
45
  aspectRatio?: AspectRatio;
43
46
  zoomShared?: SharedValue<number>;
47
+ sound?: boolean;
48
+ grid?: boolean;
49
+ flipNonce?: number;
44
50
  };
45
51
 
46
52
  export const Camera = forwardRef<CameraHandle, Props>(function Camera(
47
- { device, currentMode, isActive = true, flash, aspectRatio, zoomShared },
53
+ {
54
+ device,
55
+ currentMode,
56
+ isActive = true,
57
+ flash,
58
+ aspectRatio,
59
+ zoomShared,
60
+ sound,
61
+ grid,
62
+ flipNonce,
63
+ },
48
64
  ref
49
65
  ) {
50
66
  const cameraRef = useRef<CameraRef>(null);
@@ -95,6 +111,25 @@ export const Camera = forwardRef<CameraHandle, Props>(function Camera(
95
111
  zoom.value = Math.min(Math.max(z, device.minZoom), device.maxZoom);
96
112
  });
97
113
 
114
+ // 翻转动画:flipNonce 变化时播一次 rotateY 0→180→0(前后摄切换的 3D 翻转视觉)。
115
+ const flipAnim = useRef(new Animated.Value(0)).current;
116
+
117
+ useEffect(() => {
118
+ if (!flipNonce) return;
119
+ Animated.sequence([
120
+ Animated.timing(flipAnim, {
121
+ toValue: 1,
122
+ duration: 180,
123
+ useNativeDriver: true,
124
+ }),
125
+ Animated.timing(flipAnim, {
126
+ toValue: 0,
127
+ duration: 180,
128
+ useNativeDriver: true,
129
+ }),
130
+ ]).start();
131
+ }, [flipNonce, flipAnim]);
132
+
98
133
  const [focusPoint, setFocusPoint] = useState<Point | null>(null);
99
134
 
100
135
  const handleFocus = useCallback(
@@ -128,7 +163,7 @@ export const Camera = forwardRef<CameraHandle, Props>(function Camera(
128
163
  try {
129
164
  const raw = await capturePhotoToFile(photoOutput, {
130
165
  flashMode: flash ?? 'off',
131
- enableShutterSound: true,
166
+ enableShutterSound: sound ?? true,
132
167
  });
133
168
  return buildPhotoFile(
134
169
  { path: raw.path, width: raw.width, height: raw.height },
@@ -216,6 +251,7 @@ export const Camera = forwardRef<CameraHandle, Props>(function Camera(
216
251
  requestMic,
217
252
  flash,
218
253
  cameraType,
254
+ sound,
219
255
  ]
220
256
  );
221
257
 
@@ -224,35 +260,90 @@ export const Camera = forwardRef<CameraHandle, Props>(function Camera(
224
260
  return (
225
261
  <View style={styles.root}>
226
262
  <GestureDetector gesture={composed}>
227
- <View style={[styles.frame, { width: frameW, height: frameH }]}>
228
- <VisionCamera
229
- ref={cameraRef}
230
- style={StyleSheet.absoluteFill}
231
- resizeMode="cover"
232
- device={device}
233
- isActive={isActive}
234
- outputs={outputs as CameraProps['outputs']}
235
- constraints={[{ photoHDR: false }]}
236
- zoom={zoom}
237
- torchMode={
238
- currentMode.mode === 'video' && flash === 'on' ? 'on' : 'off'
239
- }
240
- onSubjectAreaChanged={() => cameraRef.current?.resetFocus()}
241
- nativeID="vision-camera"
242
- />
243
- {focusPoint && (
244
- <FocusIndicator
245
- key={`${focusPoint.x}-${focusPoint.y}`}
246
- point={focusPoint}
247
- onAnimationEnd={() => setFocusPoint(null)}
263
+ <Animated.View
264
+ style={{
265
+ transform: [
266
+ { perspective: 1000 },
267
+ {
268
+ rotateY: flipAnim.interpolate({
269
+ inputRange: [0, 1],
270
+ outputRange: ['0deg', '180deg'],
271
+ }),
272
+ },
273
+ ],
274
+ }}
275
+ >
276
+ <View style={[styles.frame, { width: frameW, height: frameH }]}>
277
+ <VisionCamera
278
+ ref={cameraRef}
279
+ style={StyleSheet.absoluteFill}
280
+ resizeMode="cover"
281
+ device={device}
282
+ isActive={isActive}
283
+ outputs={outputs as CameraProps['outputs']}
284
+ constraints={[{ photoHDR: false }]}
285
+ zoom={zoom}
286
+ torchMode={
287
+ currentMode.mode === 'video' && flash === 'on' ? 'on' : 'off'
288
+ }
289
+ onSubjectAreaChanged={() => cameraRef.current?.resetFocus()}
290
+ nativeID="vision-camera"
248
291
  />
249
- )}
250
- </View>
292
+ {grid && <GridOverlay />}
293
+ {focusPoint && (
294
+ <FocusIndicator
295
+ key={`${focusPoint.x}-${focusPoint.y}`}
296
+ point={focusPoint}
297
+ onAnimationEnd={() => setFocusPoint(null)}
298
+ />
299
+ )}
300
+ </View>
301
+ </Animated.View>
251
302
  </GestureDetector>
252
303
  </View>
253
304
  );
254
305
  });
255
306
 
307
+ // 网格叠加:2 竖 2 横线把取景框 3 等分(rule-of-thirds 九宫格)。pointerEvents=none 不挡手势。
308
+ function GridOverlay() {
309
+ return (
310
+ <Svg style={StyleSheet.absoluteFill} pointerEvents="none">
311
+ <Line
312
+ x1="33.33%"
313
+ y1="0%"
314
+ x2="33.33%"
315
+ y2="100%"
316
+ stroke={DARK.white25}
317
+ strokeWidth={0.5}
318
+ />
319
+ <Line
320
+ x1="66.66%"
321
+ y1="0%"
322
+ x2="66.66%"
323
+ y2="100%"
324
+ stroke={DARK.white25}
325
+ strokeWidth={0.5}
326
+ />
327
+ <Line
328
+ x1="0%"
329
+ y1="33.33%"
330
+ x2="100%"
331
+ y2="33.33%"
332
+ stroke={DARK.white25}
333
+ strokeWidth={0.5}
334
+ />
335
+ <Line
336
+ x1="0%"
337
+ y1="66.66%"
338
+ x2="100%"
339
+ y2="66.66%"
340
+ stroke={DARK.white25}
341
+ strokeWidth={0.5}
342
+ />
343
+ </Svg>
344
+ );
345
+ }
346
+
256
347
  const styles = StyleSheet.create({
257
348
  // 全屏黑底,把取景框居中 → 框外区域是黑边(letterbox)。
258
349
  root: {
@@ -0,0 +1,11 @@
1
+ import { render } from '@testing-library/react-native';
2
+ import { CaptureFlash } from './CaptureFlash';
3
+
4
+ it('renders overlay', () => {
5
+ const { getByTestId } = render(<CaptureFlash trigger={1} />);
6
+ expect(getByTestId('capture-flash')).toBeTruthy();
7
+ });
8
+
9
+ it('does not crash when trigger is 0', () => {
10
+ expect(() => render(<CaptureFlash trigger={0} />)).not.toThrow();
11
+ });
@@ -0,0 +1,42 @@
1
+ import { useEffect, useRef } from 'react';
2
+ import { Animated, StyleSheet } from 'react-native';
3
+ import { DARK } from './colors/dark';
4
+
5
+ type Props = { trigger: number };
6
+
7
+ // 拍照闪光:全屏白 overlay。`trigger`(nonce)变化时闪一下 —— opacity 0→0.85(60ms 进)→0(180ms 出)。
8
+ // trigger===0 视为初始态,不播(避免挂载即闪)。
9
+ export function CaptureFlash({ trigger }: Props) {
10
+ const opacity = useRef(new Animated.Value(0)).current;
11
+
12
+ useEffect(() => {
13
+ if (trigger === 0) {
14
+ return;
15
+ }
16
+ const anim = Animated.sequence([
17
+ Animated.timing(opacity, {
18
+ toValue: 0.85,
19
+ duration: 60,
20
+ useNativeDriver: true,
21
+ }),
22
+ Animated.timing(opacity, {
23
+ toValue: 0,
24
+ duration: 180,
25
+ useNativeDriver: true,
26
+ }),
27
+ ]);
28
+ anim.start();
29
+ return () => anim.stop();
30
+ }, [trigger, opacity]);
31
+
32
+ return (
33
+ <Animated.View
34
+ testID="capture-flash"
35
+ pointerEvents="none"
36
+ style={[
37
+ StyleSheet.absoluteFill,
38
+ { backgroundColor: DARK.white, opacity },
39
+ ]}
40
+ />
41
+ );
42
+ }