@unif/react-native-camera 1.2.6 → 2.0.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 (407) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +92 -22
  3. package/lib/module/camera/Camera.js +163 -285
  4. package/lib/module/camera/Camera.js.map +1 -1
  5. package/lib/module/camera/Container.js +209 -49
  6. package/lib/module/camera/Container.js.map +1 -1
  7. package/lib/module/camera/Error.js +23 -18
  8. package/lib/module/camera/Error.js.map +1 -1
  9. package/lib/module/camera/FocusIndicator.js +35 -41
  10. package/lib/module/camera/FocusIndicator.js.map +1 -1
  11. package/lib/module/camera/ModalView.js +28 -21
  12. package/lib/module/camera/ModalView.js.map +1 -1
  13. package/lib/module/camera/NoCamera.js +38 -14
  14. package/lib/module/camera/NoCamera.js.map +1 -1
  15. package/lib/module/camera/NoPermission.js +44 -38
  16. package/lib/module/camera/NoPermission.js.map +1 -1
  17. package/lib/module/camera/capturePhotoHelper.js +24 -0
  18. package/lib/module/camera/capturePhotoHelper.js.map +1 -0
  19. package/lib/module/camera/footer/Footer.js +83 -140
  20. package/lib/module/camera/footer/Footer.js.map +1 -1
  21. package/lib/module/camera/footer/index.js +3 -2
  22. package/lib/module/camera/footer/index.js.map +1 -1
  23. package/lib/module/camera/index.js +11 -13
  24. package/lib/module/camera/index.js.map +1 -1
  25. package/lib/module/camera/preview/PreView.js +36 -93
  26. package/lib/module/camera/preview/PreView.js.map +1 -1
  27. package/lib/module/camera/preview/PreViewContainer.js +28 -29
  28. package/lib/module/camera/preview/PreViewContainer.js.map +1 -1
  29. package/lib/module/camera/preview/PreviewFooter.js +30 -21
  30. package/lib/module/camera/preview/PreviewFooter.js.map +1 -1
  31. package/lib/module/camera/preview/SinglePre.js +28 -60
  32. package/lib/module/camera/preview/SinglePre.js.map +1 -1
  33. package/lib/module/camera/preview/index.js +6 -12
  34. package/lib/module/camera/preview/index.js.map +1 -1
  35. package/lib/module/camera/setup/SetUp.js +67 -189
  36. package/lib/module/camera/setup/SetUp.js.map +1 -1
  37. package/lib/module/camera/setup/index.js +3 -2
  38. package/lib/module/camera/setup/index.js.map +1 -1
  39. package/lib/module/components/Carousel/Carousel.js +33 -40
  40. package/lib/module/components/Carousel/Carousel.js.map +1 -1
  41. package/lib/module/components/Carousel/SlideItem.js +22 -70
  42. package/lib/module/components/Carousel/SlideItem.js.map +1 -1
  43. package/lib/module/components/Carousel/index.js +4 -11
  44. package/lib/module/components/Carousel/index.js.map +1 -1
  45. package/lib/module/components/Loading.js +15 -61
  46. package/lib/module/components/Loading.js.map +1 -1
  47. package/lib/module/components/PreviewThumbnail.js +36 -33
  48. package/lib/module/components/PreviewThumbnail.js.map +1 -1
  49. package/lib/module/components/index.js +5 -8
  50. package/lib/module/components/index.js.map +1 -1
  51. package/lib/module/hooks/index.js +5 -11
  52. package/lib/module/hooks/index.js.map +1 -1
  53. package/lib/module/hooks/useCamera.js +44 -0
  54. package/lib/module/hooks/useCamera.js.map +1 -0
  55. package/lib/module/hooks/useConfirm.js +13 -49
  56. package/lib/module/hooks/useConfirm.js.map +1 -1
  57. package/lib/module/hooks/useCreation.js +18 -0
  58. package/lib/module/hooks/useCreation.js.map +1 -0
  59. package/lib/module/index.js +4 -24
  60. package/lib/module/index.js.map +1 -1
  61. package/lib/module/package.json +1 -0
  62. package/lib/module/utils/depsAreSame.js +7 -4
  63. package/lib/module/utils/depsAreSame.js.map +1 -1
  64. package/lib/module/utils/index.js +6 -14
  65. package/lib/module/utils/index.js.map +1 -1
  66. package/lib/module/utils/interface.js +1 -21
  67. package/lib/module/utils/interface.js.map +1 -1
  68. package/lib/module/utils/px-to-dp.js +6 -10
  69. package/lib/module/utils/px-to-dp.js.map +1 -1
  70. package/lib/module/utils/util.js +16 -40
  71. package/lib/module/utils/util.js.map +1 -1
  72. package/lib/typescript/jest.setup.d.ts +1 -0
  73. package/lib/typescript/jest.setup.d.ts.map +1 -0
  74. package/lib/typescript/package.json +1 -0
  75. package/lib/typescript/src/camera/Camera.d.ts +18 -10
  76. package/lib/typescript/src/camera/Camera.d.ts.map +1 -1
  77. package/lib/typescript/src/camera/Container.d.ts +7 -5
  78. package/lib/typescript/src/camera/Container.d.ts.map +1 -1
  79. package/lib/typescript/src/camera/Error.d.ts +3 -7
  80. package/lib/typescript/src/camera/Error.d.ts.map +1 -1
  81. package/lib/typescript/src/camera/FocusIndicator.d.ts +7 -7
  82. package/lib/typescript/src/camera/FocusIndicator.d.ts.map +1 -1
  83. package/lib/typescript/src/camera/ModalView.d.ts +7 -4
  84. package/lib/typescript/src/camera/ModalView.d.ts.map +1 -1
  85. package/lib/typescript/src/camera/NoCamera.d.ts +5 -3
  86. package/lib/typescript/src/camera/NoCamera.d.ts.map +1 -1
  87. package/lib/typescript/src/camera/NoPermission.d.ts +6 -3
  88. package/lib/typescript/src/camera/NoPermission.d.ts.map +1 -1
  89. package/lib/typescript/src/camera/capturePhotoHelper.d.ts +16 -0
  90. package/lib/typescript/src/camera/capturePhotoHelper.d.ts.map +1 -0
  91. package/lib/typescript/src/camera/footer/Footer.d.ts +13 -15
  92. package/lib/typescript/src/camera/footer/Footer.d.ts.map +1 -1
  93. package/lib/typescript/src/camera/footer/index.d.ts +1 -2
  94. package/lib/typescript/src/camera/footer/index.d.ts.map +1 -1
  95. package/lib/typescript/src/camera/index.d.ts +9 -5
  96. package/lib/typescript/src/camera/index.d.ts.map +1 -1
  97. package/lib/typescript/src/camera/preview/PreView.d.ts +6 -9
  98. package/lib/typescript/src/camera/preview/PreView.d.ts.map +1 -1
  99. package/lib/typescript/src/camera/preview/PreViewContainer.d.ts +8 -5
  100. package/lib/typescript/src/camera/preview/PreViewContainer.d.ts.map +1 -1
  101. package/lib/typescript/src/camera/preview/PreviewFooter.d.ts +6 -6
  102. package/lib/typescript/src/camera/preview/PreviewFooter.d.ts.map +1 -1
  103. package/lib/typescript/src/camera/preview/SinglePre.d.ts +5 -28
  104. package/lib/typescript/src/camera/preview/SinglePre.d.ts.map +1 -1
  105. package/lib/typescript/src/camera/preview/index.d.ts +4 -4
  106. package/lib/typescript/src/camera/preview/index.d.ts.map +1 -1
  107. package/lib/typescript/src/camera/setup/SetUp.d.ts +12 -11
  108. package/lib/typescript/src/camera/setup/SetUp.d.ts.map +1 -1
  109. package/lib/typescript/src/camera/setup/index.d.ts +1 -2
  110. package/lib/typescript/src/camera/setup/index.d.ts.map +1 -1
  111. package/lib/typescript/src/components/Carousel/Carousel.d.ts +6 -8
  112. package/lib/typescript/src/components/Carousel/Carousel.d.ts.map +1 -1
  113. package/lib/typescript/src/components/Carousel/SlideItem.d.ts +4 -12
  114. package/lib/typescript/src/components/Carousel/SlideItem.d.ts.map +1 -1
  115. package/lib/typescript/src/components/Carousel/index.d.ts +2 -3
  116. package/lib/typescript/src/components/Carousel/index.d.ts.map +1 -1
  117. package/lib/typescript/src/components/Loading.d.ts +1 -3
  118. package/lib/typescript/src/components/Loading.d.ts.map +1 -1
  119. package/lib/typescript/src/components/PreviewThumbnail.d.ts +7 -8
  120. package/lib/typescript/src/components/PreviewThumbnail.d.ts.map +1 -1
  121. package/lib/typescript/src/components/index.d.ts +2 -7
  122. package/lib/typescript/src/components/index.d.ts.map +1 -1
  123. package/lib/typescript/src/hooks/index.d.ts +3 -3
  124. package/lib/typescript/src/hooks/index.d.ts.map +1 -1
  125. package/lib/typescript/src/hooks/useCamera.d.ts +4 -0
  126. package/lib/typescript/src/hooks/useCamera.d.ts.map +1 -0
  127. package/lib/typescript/src/hooks/useConfirm.d.ts +1 -5
  128. package/lib/typescript/src/hooks/useConfirm.d.ts.map +1 -1
  129. package/lib/typescript/src/hooks/useCreation.d.ts +2 -0
  130. package/lib/typescript/src/hooks/useCreation.d.ts.map +1 -0
  131. package/lib/typescript/src/index.d.ts +3 -4
  132. package/lib/typescript/src/index.d.ts.map +1 -1
  133. package/lib/typescript/src/utils/depsAreSame.d.ts +1 -2
  134. package/lib/typescript/src/utils/depsAreSame.d.ts.map +1 -1
  135. package/lib/typescript/src/utils/index.d.ts +2 -4
  136. package/lib/typescript/src/utils/index.d.ts.map +1 -1
  137. package/lib/typescript/src/utils/interface.d.ts +30 -70
  138. package/lib/typescript/src/utils/interface.d.ts.map +1 -1
  139. package/lib/typescript/src/utils/px-to-dp.d.ts +1 -3
  140. package/lib/typescript/src/utils/px-to-dp.d.ts.map +1 -1
  141. package/lib/typescript/src/utils/util.d.ts +8 -9
  142. package/lib/typescript/src/utils/util.d.ts.map +1 -1
  143. package/package.json +120 -107
  144. package/src/camera/Camera.tsx +210 -331
  145. package/src/camera/Container.tsx +224 -50
  146. package/src/camera/Error.tsx +22 -23
  147. package/src/camera/FocusIndicator.tsx +36 -46
  148. package/src/camera/ModalView.tsx +26 -24
  149. package/src/camera/NoCamera.tsx +37 -14
  150. package/src/camera/NoPermission.tsx +45 -37
  151. package/src/camera/capturePhotoHelper.ts +37 -0
  152. package/src/camera/footer/Footer.tsx +104 -195
  153. package/src/camera/footer/index.tsx +1 -2
  154. package/src/camera/index.tsx +12 -13
  155. package/src/camera/preview/PreView.tsx +22 -103
  156. package/src/camera/preview/PreViewContainer.tsx +23 -27
  157. package/src/camera/preview/PreviewFooter.tsx +28 -22
  158. package/src/camera/preview/SinglePre.tsx +23 -68
  159. package/src/camera/preview/index.tsx +4 -13
  160. package/src/camera/setup/SetUp.tsx +80 -217
  161. package/src/camera/setup/index.tsx +1 -3
  162. package/src/components/Carousel/Carousel.tsx +22 -42
  163. package/src/components/Carousel/SlideItem.tsx +12 -87
  164. package/src/components/Carousel/index.tsx +2 -13
  165. package/src/components/Loading.tsx +7 -69
  166. package/src/components/PreviewThumbnail.tsx +38 -33
  167. package/src/components/index.tsx +2 -7
  168. package/src/hooks/index.ts +3 -12
  169. package/src/hooks/useCamera.tsx +42 -0
  170. package/src/hooks/useConfirm.tsx +10 -57
  171. package/src/hooks/useCreation.ts +26 -0
  172. package/src/index.tsx +3 -37
  173. package/src/utils/depsAreSame.ts +7 -8
  174. package/src/utils/index.ts +2 -12
  175. package/src/utils/interface.ts +26 -87
  176. package/src/utils/px-to-dp.tsx +5 -9
  177. package/src/utils/util.ts +17 -42
  178. package/UnifRNCamera.podspec +0 -41
  179. package/android/CMakeLists.txt +0 -15
  180. package/android/build.gradle +0 -124
  181. package/android/cpp-adapter.cpp +0 -8
  182. package/android/gradle.properties +0 -5
  183. package/android/src/main/AndroidManifest.xml +0 -3
  184. package/android/src/main/AndroidManifestNew.xml +0 -2
  185. package/android/src/main/java/com/unif/reactnativecamera/ReactNativeCameraModule.java +0 -34
  186. package/android/src/main/java/com/unif/reactnativecamera/ReactNativeCameraPackage.java +0 -45
  187. package/android/src/newarch/ReactNativeCameraSpec.java +0 -9
  188. package/android/src/oldarch/ReactNativeCameraSpec.java +0 -13
  189. package/cpp/unif-react-native-camera.cpp +0 -7
  190. package/cpp/unif-react-native-camera.h +0 -8
  191. package/ios/ReactNativeCamera.h +0 -15
  192. package/ios/ReactNativeCamera.mm +0 -51
  193. package/lib/commonjs/NativeReactNativeCamera.js +0 -17
  194. package/lib/commonjs/NativeReactNativeCamera.js.map +0 -1
  195. package/lib/commonjs/assets/close.png +0 -0
  196. package/lib/commonjs/assets/home/record.png +0 -0
  197. package/lib/commonjs/assets/home/take.png +0 -0
  198. package/lib/commonjs/assets/preview/back.png +0 -0
  199. package/lib/commonjs/assets/preview/del.png +0 -0
  200. package/lib/commonjs/assets/preview/rotate.png +0 -0
  201. package/lib/commonjs/assets/preview/save.png +0 -0
  202. package/lib/commonjs/assets/tools/auto.png +0 -0
  203. package/lib/commonjs/assets/tools/defaultEye.png +0 -0
  204. package/lib/commonjs/assets/tools/enlarge.png +0 -0
  205. package/lib/commonjs/assets/tools/fishEye.png +0 -0
  206. package/lib/commonjs/assets/tools/narrow.png +0 -0
  207. package/lib/commonjs/assets/tools/off.png +0 -0
  208. package/lib/commonjs/assets/tools/on.png +0 -0
  209. package/lib/commonjs/assets/tools/volumeOff.png +0 -0
  210. package/lib/commonjs/assets/tools/volumeOn.png +0 -0
  211. package/lib/commonjs/camera/Camera.js +0 -316
  212. package/lib/commonjs/camera/Camera.js.map +0 -1
  213. package/lib/commonjs/camera/Container.js +0 -64
  214. package/lib/commonjs/camera/Container.js.map +0 -1
  215. package/lib/commonjs/camera/Error.js +0 -30
  216. package/lib/commonjs/camera/Error.js.map +0 -1
  217. package/lib/commonjs/camera/FocusIndicator.js +0 -64
  218. package/lib/commonjs/camera/FocusIndicator.js.map +0 -1
  219. package/lib/commonjs/camera/ModalView.js +0 -37
  220. package/lib/commonjs/camera/ModalView.js.map +0 -1
  221. package/lib/commonjs/camera/NoCamera.js +0 -23
  222. package/lib/commonjs/camera/NoCamera.js.map +0 -1
  223. package/lib/commonjs/camera/NoPermission.js +0 -50
  224. package/lib/commonjs/camera/NoPermission.js.map +0 -1
  225. package/lib/commonjs/camera/footer/Footer.js +0 -159
  226. package/lib/commonjs/camera/footer/Footer.js.map +0 -1
  227. package/lib/commonjs/camera/footer/index.js +0 -14
  228. package/lib/commonjs/camera/footer/index.js.map +0 -1
  229. package/lib/commonjs/camera/index.js +0 -35
  230. package/lib/commonjs/camera/index.js.map +0 -1
  231. package/lib/commonjs/camera/preview/PreView.js +0 -109
  232. package/lib/commonjs/camera/preview/PreView.js.map +0 -1
  233. package/lib/commonjs/camera/preview/PreViewContainer.js +0 -42
  234. package/lib/commonjs/camera/preview/PreViewContainer.js.map +0 -1
  235. package/lib/commonjs/camera/preview/PreviewFooter.js +0 -35
  236. package/lib/commonjs/camera/preview/PreviewFooter.js.map +0 -1
  237. package/lib/commonjs/camera/preview/SinglePre.js +0 -72
  238. package/lib/commonjs/camera/preview/SinglePre.js.map +0 -1
  239. package/lib/commonjs/camera/preview/index.js +0 -28
  240. package/lib/commonjs/camera/preview/index.js.map +0 -1
  241. package/lib/commonjs/camera/setup/SetUp.js +0 -205
  242. package/lib/commonjs/camera/setup/SetUp.js.map +0 -1
  243. package/lib/commonjs/camera/setup/index.js +0 -14
  244. package/lib/commonjs/camera/setup/index.js.map +0 -1
  245. package/lib/commonjs/camera/watermark/Render.js +0 -110
  246. package/lib/commonjs/camera/watermark/Render.js.map +0 -1
  247. package/lib/commonjs/camera/watermark/ViewShotWatermark.js +0 -143
  248. package/lib/commonjs/camera/watermark/ViewShotWatermark.js.map +0 -1
  249. package/lib/commonjs/camera/watermark/index.js +0 -21
  250. package/lib/commonjs/camera/watermark/index.js.map +0 -1
  251. package/lib/commonjs/components/Back.js +0 -48
  252. package/lib/commonjs/components/Back.js.map +0 -1
  253. package/lib/commonjs/components/Carousel/Carousel.js +0 -51
  254. package/lib/commonjs/components/Carousel/Carousel.js.map +0 -1
  255. package/lib/commonjs/components/Carousel/SlideItem.js +0 -84
  256. package/lib/commonjs/components/Carousel/SlideItem.js.map +0 -1
  257. package/lib/commonjs/components/Carousel/index.js +0 -21
  258. package/lib/commonjs/components/Carousel/index.js.map +0 -1
  259. package/lib/commonjs/components/Delete.js +0 -36
  260. package/lib/commonjs/components/Delete.js.map +0 -1
  261. package/lib/commonjs/components/Loading.js +0 -75
  262. package/lib/commonjs/components/Loading.js.map +0 -1
  263. package/lib/commonjs/components/Modal/Confirm.js +0 -121
  264. package/lib/commonjs/components/Modal/Confirm.js.map +0 -1
  265. package/lib/commonjs/components/Modal/index.js +0 -14
  266. package/lib/commonjs/components/Modal/index.js.map +0 -1
  267. package/lib/commonjs/components/PreviewThumbnail.js +0 -44
  268. package/lib/commonjs/components/PreviewThumbnail.js.map +0 -1
  269. package/lib/commonjs/components/Rotate.js +0 -32
  270. package/lib/commonjs/components/Rotate.js.map +0 -1
  271. package/lib/commonjs/components/Save.js +0 -48
  272. package/lib/commonjs/components/Save.js.map +0 -1
  273. package/lib/commonjs/components/index.js +0 -73
  274. package/lib/commonjs/components/index.js.map +0 -1
  275. package/lib/commonjs/hooks/index.js +0 -21
  276. package/lib/commonjs/hooks/index.js.map +0 -1
  277. package/lib/commonjs/hooks/useCamera.tsx/index.js +0 -90
  278. package/lib/commonjs/hooks/useCamera.tsx/index.js.map +0 -1
  279. package/lib/commonjs/hooks/useConfirm.js +0 -61
  280. package/lib/commonjs/hooks/useConfirm.js.map +0 -1
  281. package/lib/commonjs/hooks/useCreation/index.js +0 -34
  282. package/lib/commonjs/hooks/useCreation/index.js.map +0 -1
  283. package/lib/commonjs/index.js +0 -39
  284. package/lib/commonjs/index.js.map +0 -1
  285. package/lib/commonjs/utils/common.js +0 -69
  286. package/lib/commonjs/utils/common.js.map +0 -1
  287. package/lib/commonjs/utils/depsAreSame.js +0 -14
  288. package/lib/commonjs/utils/depsAreSame.js.map +0 -1
  289. package/lib/commonjs/utils/index.js +0 -72
  290. package/lib/commonjs/utils/index.js.map +0 -1
  291. package/lib/commonjs/utils/interface.js +0 -24
  292. package/lib/commonjs/utils/interface.js.map +0 -1
  293. package/lib/commonjs/utils/px-to-dp.js +0 -21
  294. package/lib/commonjs/utils/px-to-dp.js.map +0 -1
  295. package/lib/commonjs/utils/render-item.js +0 -40
  296. package/lib/commonjs/utils/render-item.js.map +0 -1
  297. package/lib/commonjs/utils/util.js +0 -53
  298. package/lib/commonjs/utils/util.js.map +0 -1
  299. package/lib/commonjs/utils/watermark.js +0 -49
  300. package/lib/commonjs/utils/watermark.js.map +0 -1
  301. package/lib/module/NativeReactNativeCamera.js +0 -12
  302. package/lib/module/NativeReactNativeCamera.js.map +0 -1
  303. package/lib/module/assets/close.png +0 -0
  304. package/lib/module/assets/home/record.png +0 -0
  305. package/lib/module/assets/home/take.png +0 -0
  306. package/lib/module/assets/preview/back.png +0 -0
  307. package/lib/module/assets/preview/del.png +0 -0
  308. package/lib/module/assets/preview/rotate.png +0 -0
  309. package/lib/module/assets/preview/save.png +0 -0
  310. package/lib/module/assets/tools/auto.png +0 -0
  311. package/lib/module/assets/tools/defaultEye.png +0 -0
  312. package/lib/module/assets/tools/enlarge.png +0 -0
  313. package/lib/module/assets/tools/fishEye.png +0 -0
  314. package/lib/module/assets/tools/narrow.png +0 -0
  315. package/lib/module/assets/tools/off.png +0 -0
  316. package/lib/module/assets/tools/on.png +0 -0
  317. package/lib/module/assets/tools/volumeOff.png +0 -0
  318. package/lib/module/assets/tools/volumeOn.png +0 -0
  319. package/lib/module/camera/watermark/Render.js +0 -102
  320. package/lib/module/camera/watermark/Render.js.map +0 -1
  321. package/lib/module/camera/watermark/ViewShotWatermark.js +0 -133
  322. package/lib/module/camera/watermark/ViewShotWatermark.js.map +0 -1
  323. package/lib/module/camera/watermark/index.js +0 -13
  324. package/lib/module/camera/watermark/index.js.map +0 -1
  325. package/lib/module/components/Back.js +0 -40
  326. package/lib/module/components/Back.js.map +0 -1
  327. package/lib/module/components/Delete.js +0 -28
  328. package/lib/module/components/Delete.js.map +0 -1
  329. package/lib/module/components/Modal/Confirm.js +0 -111
  330. package/lib/module/components/Modal/Confirm.js.map +0 -1
  331. package/lib/module/components/Modal/index.js +0 -3
  332. package/lib/module/components/Modal/index.js.map +0 -1
  333. package/lib/module/components/Rotate.js +0 -24
  334. package/lib/module/components/Rotate.js.map +0 -1
  335. package/lib/module/components/Save.js +0 -40
  336. package/lib/module/components/Save.js.map +0 -1
  337. package/lib/module/hooks/useCamera.tsx/index.js +0 -81
  338. package/lib/module/hooks/useCamera.tsx/index.js.map +0 -1
  339. package/lib/module/hooks/useCreation/index.js +0 -27
  340. package/lib/module/hooks/useCreation/index.js.map +0 -1
  341. package/lib/module/utils/common.js +0 -62
  342. package/lib/module/utils/common.js.map +0 -1
  343. package/lib/module/utils/render-item.js +0 -32
  344. package/lib/module/utils/render-item.js.map +0 -1
  345. package/lib/module/utils/watermark.js +0 -39
  346. package/lib/module/utils/watermark.js.map +0 -1
  347. package/lib/typescript/src/NativeReactNativeCamera.d.ts +0 -6
  348. package/lib/typescript/src/NativeReactNativeCamera.d.ts.map +0 -1
  349. package/lib/typescript/src/camera/watermark/Render.d.ts +0 -26
  350. package/lib/typescript/src/camera/watermark/Render.d.ts.map +0 -1
  351. package/lib/typescript/src/camera/watermark/ViewShotWatermark.d.ts +0 -41
  352. package/lib/typescript/src/camera/watermark/ViewShotWatermark.d.ts.map +0 -1
  353. package/lib/typescript/src/camera/watermark/index.d.ts +0 -4
  354. package/lib/typescript/src/camera/watermark/index.d.ts.map +0 -1
  355. package/lib/typescript/src/components/Back.d.ts +0 -20
  356. package/lib/typescript/src/components/Back.d.ts.map +0 -1
  357. package/lib/typescript/src/components/Delete.d.ts +0 -7
  358. package/lib/typescript/src/components/Delete.d.ts.map +0 -1
  359. package/lib/typescript/src/components/Modal/Confirm.d.ts +0 -9
  360. package/lib/typescript/src/components/Modal/Confirm.d.ts.map +0 -1
  361. package/lib/typescript/src/components/Modal/index.d.ts +0 -3
  362. package/lib/typescript/src/components/Modal/index.d.ts.map +0 -1
  363. package/lib/typescript/src/components/Rotate.d.ts +0 -9
  364. package/lib/typescript/src/components/Rotate.d.ts.map +0 -1
  365. package/lib/typescript/src/components/Save.d.ts +0 -20
  366. package/lib/typescript/src/components/Save.d.ts.map +0 -1
  367. package/lib/typescript/src/hooks/useCamera.tsx/index.d.ts +0 -5
  368. package/lib/typescript/src/hooks/useCamera.tsx/index.d.ts.map +0 -1
  369. package/lib/typescript/src/hooks/useCreation/index.d.ts +0 -3
  370. package/lib/typescript/src/hooks/useCreation/index.d.ts.map +0 -1
  371. package/lib/typescript/src/utils/common.d.ts +0 -14
  372. package/lib/typescript/src/utils/common.d.ts.map +0 -1
  373. package/lib/typescript/src/utils/render-item.d.ts +0 -10
  374. package/lib/typescript/src/utils/render-item.d.ts.map +0 -1
  375. package/lib/typescript/src/utils/watermark.d.ts +0 -11
  376. package/lib/typescript/src/utils/watermark.d.ts.map +0 -1
  377. package/src/NativeReactNativeCamera.ts +0 -15
  378. package/src/assets/close.png +0 -0
  379. package/src/assets/home/record.png +0 -0
  380. package/src/assets/home/take.png +0 -0
  381. package/src/assets/preview/back.png +0 -0
  382. package/src/assets/preview/del.png +0 -0
  383. package/src/assets/preview/rotate.png +0 -0
  384. package/src/assets/preview/save.png +0 -0
  385. package/src/assets/tools/auto.png +0 -0
  386. package/src/assets/tools/defaultEye.png +0 -0
  387. package/src/assets/tools/enlarge.png +0 -0
  388. package/src/assets/tools/fishEye.png +0 -0
  389. package/src/assets/tools/narrow.png +0 -0
  390. package/src/assets/tools/off.png +0 -0
  391. package/src/assets/tools/on.png +0 -0
  392. package/src/assets/tools/volumeOff.png +0 -0
  393. package/src/assets/tools/volumeOn.png +0 -0
  394. package/src/camera/watermark/Render.tsx +0 -128
  395. package/src/camera/watermark/ViewShotWatermark.tsx +0 -134
  396. package/src/camera/watermark/index.tsx +0 -12
  397. package/src/components/Back.tsx +0 -37
  398. package/src/components/Delete.tsx +0 -30
  399. package/src/components/Modal/Confirm.tsx +0 -116
  400. package/src/components/Modal/index.tsx +0 -3
  401. package/src/components/Rotate.tsx +0 -32
  402. package/src/components/Save.tsx +0 -37
  403. package/src/hooks/useCamera.tsx/index.tsx +0 -95
  404. package/src/hooks/useCreation/index.ts +0 -25
  405. package/src/utils/common.ts +0 -67
  406. package/src/utils/render-item.tsx +0 -39
  407. package/src/utils/watermark.ts +0 -55
@@ -1,358 +1,237 @@
1
- /*
2
- * @Author: 刘利军
3
- * @Date: 2024-12-02 13:48:40
4
- * @LastEditors: 刘利军
5
- * @LastEditTime: 2025-01-17 08:44:43
6
- * @Description:
7
- * @PageName:
8
- */
9
-
10
- import { StyleSheet, Pressable } from 'react-native';
11
- import React, { useCallback, useRef, useState, useEffect } from 'react';
12
1
  import {
13
- CameraRuntimeError,
14
- Camera as VisionCamera,
15
- useCameraDevice,
16
- useCameraFormat,
17
- } from 'react-native-vision-camera';
18
- import { SafeAreaProvider } from 'react-native-safe-area-context';
19
- import NoCamera from './NoCamera';
20
- import FocusIndicator from './FocusIndicator';
21
-
2
+ forwardRef,
3
+ useCallback,
4
+ useImperativeHandle,
5
+ useRef,
6
+ useState,
7
+ } from 'react';
8
+ import { StyleSheet, View } from 'react-native';
22
9
  import {
23
- type CameraBack,
24
- type CameraMode,
10
+ Camera as VisionCamera,
11
+ useMicrophonePermission,
12
+ usePhotoOutput,
13
+ useVideoOutput,
14
+ type CameraRef,
15
+ type CameraDevice,
25
16
  type CameraProps,
26
- type CameraType,
27
- type CustomPhotoFile,
28
- type FlashMode,
29
- type Resolution,
17
+ type FocusOptions,
18
+ type Recorder,
19
+ } from 'react-native-vision-camera';
20
+ import { runOnJS, useSharedValue } from 'react-native-reanimated';
21
+ import type { SharedValue } from 'react-native-reanimated';
22
+ import { Gesture, GestureDetector } from 'react-native-gesture-handler';
23
+ import type {
24
+ CameraMode,
25
+ CustomPhotoFile,
26
+ PhotoQuality,
27
+ Point,
30
28
  } from '../utils';
31
- import { Footer } from './footer';
32
- import { SetUp } from './setup';
33
- import { PreView, PreViewContainer, SinglePre } from './preview';
34
- import { GestureHandlerRootView } from 'react-native-gesture-handler';
35
- import { useConfirm } from '../hooks';
36
- import { ViewShotWatermark, WaterMarkRender } from './watermark';
37
- import Error from './Error';
38
-
39
- export const PhotoAspectRatio: { [key: number]: number } = {
40
- 4: 4 / 3,
41
- 16: 16 / 9,
42
- };
43
-
44
- let enableShutterSound = false;
45
- let flash: FlashMode = 'off';
46
- const Camera: React.FC<{
47
- data: CameraProps;
48
- back: () => void;
49
- onChange: (data: CameraBack) => void;
50
- }> = ({ data, back, onChange }) => {
51
- const { cameraMode, dataRetainedMode } = data;
52
-
53
- const [position, setPosition] = useState<CameraType>(
54
- cameraMode?.[0]?.type || 'back'
55
- );
56
- const [preVis, setPreVis] = useState(false);
57
-
58
- const [photoResolution, setPhotoResolution] = useState<
59
- Resolution | undefined
60
- >(cameraMode?.[0]?.photoResolution);
61
-
62
- const [videoResolution, setVideoResolution] = useState<
63
- Resolution | undefined
64
- >(cameraMode?.[0]?.videoResolution);
65
-
66
- const [watermarkUriVis, setWatermarkUriVis] = useState(false);
67
- const device = useCameraDevice(position);
68
- const onError = useCallback((error: CameraRuntimeError) => {
69
- setCameraError(error);
70
- }, []);
29
+ import { buildPhotoFile } from '../utils';
30
+ import { capturePhotoToFile } from './capturePhotoHelper';
31
+ import { FocusIndicator } from './FocusIndicator';
32
+ import type { AspectRatio, FlashMode } from './setup';
71
33
 
72
- const [aspectRatio, setAspectRatio] = useState<number>(16);
73
- const [resizeMode, setResizeMode] = useState<
74
- 'cover' | 'contain' | undefined
75
- >();
34
+ const NEUTRAL_ZOOM = 1;
76
35
 
77
- const [zoom, setZoom] = useState(device?.neutralZoom);
78
- const format = useCameraFormat(device, [
79
- { photoAspectRatio: PhotoAspectRatio[aspectRatio] },
80
- { videoAspectRatio: PhotoAspectRatio[aspectRatio] },
81
- { videoResolution: videoResolution || 'max' },
82
- { photoResolution: photoResolution || 'max' },
83
- ]);
84
- const camera = useRef<VisionCamera>(null);
85
- const [photos, setPhotos] = useState<CustomPhotoFile[]>([]);
86
- const [mode, setMode] = useState(cameraMode?.[0]?.mode as CameraMode);
87
-
88
- const { confirmApi, contextHolder } = useConfirm();
89
- const [cameraError, setCameraError] = useState<CameraRuntimeError>();
90
-
91
- // 聚焦点状态
92
- const [focusPoint, setFocusPoint] = useState<{ x: number; y: number } | null>(
93
- null
94
- );
36
+ export type CameraHandle = {
37
+ capture: () => Promise<CustomPhotoFile | null>;
38
+ startVideo: () => Promise<void>;
39
+ stopVideo: () => Promise<CustomPhotoFile | null>;
40
+ };
95
41
 
96
- // 防抖定时器
97
- const focusTimerRef = useRef<NodeJS.Timeout | null>(null);
42
+ type Props = {
43
+ device: CameraDevice;
44
+ currentMode: CameraMode;
45
+ isActive?: boolean;
46
+ flash?: FlashMode;
47
+ aspectRatio?: AspectRatio;
48
+ zoomShared?: SharedValue<number>;
49
+ };
98
50
 
99
- // 点击聚焦处理(带防抖)
100
- const handleFocus = useCallback((x: number, y: number) => {
101
- // 清除之前的防抖定时器
102
- if (focusTimerRef.current) {
103
- clearTimeout(focusTimerRef.current);
104
- }
51
+ export const Camera = forwardRef<CameraHandle, Props>(function Camera(
52
+ { device, currentMode, isActive = true, flash, aspectRatio, zoomShared },
53
+ ref
54
+ ) {
55
+ const cameraRef = useRef<CameraRef>(null);
56
+
57
+ const targetResolution =
58
+ (aspectRatio ?? '4:3') === '4:3'
59
+ ? { width: 1080, height: 1440 }
60
+ : { width: 1080, height: 1920 };
61
+
62
+ const photoOutput = usePhotoOutput({
63
+ qualityPrioritization: (currentMode.photoQuality ??
64
+ 'speed') as PhotoQuality,
65
+ quality: currentMode.jpegQuality ?? 0.9,
66
+ targetResolution,
67
+ });
68
+
69
+ const videoOutput = useVideoOutput();
70
+ const { hasPermission: hasMic, requestPermission: requestMic } =
71
+ useMicrophonePermission();
72
+
73
+ const activeRecorderRef = useRef<Recorder | null>(null);
74
+ const preparedRecorderRef = useRef<Recorder | null>(null);
75
+ const finishResolverRef = useRef<
76
+ ((file: CustomPhotoFile | null) => void) | null
77
+ >(null);
78
+
79
+ const internalZoom = useSharedValue(NEUTRAL_ZOOM);
80
+ const zoom = zoomShared ?? internalZoom;
81
+ const zoomOffset = useSharedValue(0);
82
+
83
+ const pinchGesture = Gesture.Pinch()
84
+ .onBegin(() => {
85
+ 'worklet';
86
+ zoomOffset.value = zoom.value;
87
+ })
88
+ .onUpdate((e) => {
89
+ 'worklet';
90
+ const z = zoomOffset.value * e.scale;
91
+ zoom.value = Math.min(Math.max(z, device.minZoom), device.maxZoom);
92
+ });
105
93
 
106
- // 更新聚焦指示器位置
107
- setFocusPoint({ x, y });
94
+ const [focusPoint, setFocusPoint] = useState<Point | null>(null);
108
95
 
109
- // 防抖延迟执行聚焦
110
- focusTimerRef.current = setTimeout(async () => {
96
+ const handleFocus = useCallback(
97
+ async (x: number, y: number) => {
98
+ if (!device.supportsFocusMetering) return;
99
+ setFocusPoint({ x, y });
111
100
  try {
112
- await camera.current?.focus({ x, y });
113
- } catch (error) {
114
- // 忽略 focus-canceled 错误
115
- if (
116
- error &&
117
- typeof error === 'object' &&
118
- 'code' in error &&
119
- error.code !== 'capture/focus-canceled'
120
- ) {
121
- console.error('Focus error:', error);
122
- }
101
+ await cameraRef.current?.focusTo({ x, y }, {
102
+ responsiveness: 'snappy',
103
+ adaptiveness: 'continuous',
104
+ autoResetAfter: 3,
105
+ } satisfies FocusOptions);
106
+ } catch (e) {
107
+ console.warn('focusTo failed', e);
123
108
  }
124
- // 延迟清除指示器
125
- setTimeout(() => setFocusPoint(null), 400);
126
- }, 300);
127
- }, []);
128
-
129
- useEffect(() => {
130
- return () => {
131
- if (focusTimerRef.current) {
132
- clearTimeout(focusTimerRef.current);
133
- }
134
- };
135
- }, []);
109
+ },
110
+ [device.supportsFocusMetering]
111
+ );
136
112
 
137
- if (cameraError) {
138
- return (
139
- <Error data={cameraError} onPress={() => setCameraError(undefined)} />
140
- );
141
- }
142
- if (device == null) {
143
- return <NoCamera />;
144
- }
113
+ const tapGesture = Gesture.Tap().onEnd(({ x, y }) => {
114
+ 'worklet';
115
+ runOnJS(handleFocus)(x, y);
116
+ });
117
+
118
+ const composed = Gesture.Simultaneous(pinchGesture, tapGesture);
119
+
120
+ useImperativeHandle(
121
+ ref,
122
+ () => ({
123
+ capture: async () => {
124
+ try {
125
+ const raw = await capturePhotoToFile(photoOutput, {
126
+ flashMode: flash ?? 'off',
127
+ enableShutterSound: true,
128
+ });
129
+ return buildPhotoFile(
130
+ { path: raw.path, width: raw.width, height: raw.height },
131
+ currentMode.mode
132
+ );
133
+ } catch (e) {
134
+ console.warn('capturePhoto failed', e);
135
+ return null;
136
+ }
137
+ },
145
138
 
146
- const commonBack = () => {
147
- setPreVis(false);
148
- };
149
- const signleBack = () => {
150
- setPhotos([]);
151
- commonBack();
152
- };
139
+ startVideo: async () => {
140
+ if (!hasMic) {
141
+ await requestMic().catch(() => {});
142
+ }
143
+ try {
144
+ let recorder = preparedRecorderRef.current;
145
+ if (recorder == null) {
146
+ recorder = await videoOutput.createRecorder({});
147
+ }
148
+ preparedRecorderRef.current = null;
149
+ if (activeRecorderRef.current != null) return;
150
+ activeRecorderRef.current = recorder;
151
+
152
+ await recorder.startRecording(
153
+ (filePath, _reason) => {
154
+ const file = buildPhotoFile(
155
+ { path: filePath, width: 0, height: 0 },
156
+ 'video',
157
+ true
158
+ );
159
+ activeRecorderRef.current = null;
160
+ finishResolverRef.current?.(file);
161
+ finishResolverRef.current = null;
162
+ },
163
+ (error) => {
164
+ console.warn('recorder error', error);
165
+ activeRecorderRef.current = null;
166
+ finishResolverRef.current?.(null);
167
+ finishResolverRef.current = null;
168
+ },
169
+ () => {},
170
+ () => {}
171
+ );
172
+
173
+ preparedRecorderRef.current = await videoOutput.createRecorder({});
174
+ } catch (e) {
175
+ console.warn('startRecording failed', e);
176
+ activeRecorderRef.current = null;
177
+ }
178
+ },
179
+
180
+ stopVideo: async () => {
181
+ const active = activeRecorderRef.current;
182
+ if (active == null) return null;
183
+ try {
184
+ const durationSec = active.recordedDuration;
185
+ const finishedPromise = new Promise<CustomPhotoFile | null>(
186
+ (resolve) => {
187
+ finishResolverRef.current = (file) => {
188
+ if (file != null && durationSec != null) {
189
+ resolve({ ...file, duration: durationSec });
190
+ } else {
191
+ resolve(file);
192
+ }
193
+ };
194
+ }
195
+ );
196
+ await active.stopRecording();
197
+ return await finishedPromise;
198
+ } catch (e) {
199
+ console.warn('stopRecording failed', e);
200
+ activeRecorderRef.current = null;
201
+ return null;
202
+ }
203
+ },
204
+ }),
205
+ [photoOutput, videoOutput, currentMode.mode, hasMic, requestMic, flash]
206
+ );
153
207
 
154
- const isSingle = () => dataRetainedMode === 'clear' && mode === 'single';
155
- const showPreview = () => {
156
- setPreVis(true);
157
- };
158
- const showVideo = () => cameraMode.some((item) => item.mode === 'video');
208
+ const outputs = currentMode.mode === 'video' ? [videoOutput] : [photoOutput];
159
209
 
160
- const confirm = () => {
161
- onChange({
162
- code: 200,
163
- data: photos.map((item) => ({
164
- cameraMode: item.mode,
165
- id: new Date().getTime().toString(),
166
- cameraType: item.cameraType,
167
- path: item.path,
168
- })),
169
- message: '保存成功',
170
- });
171
- };
172
- const openViewShotWatermark = () => {
173
- setWatermarkUriVis((val) => !val);
174
- };
175
210
  return (
176
- <GestureHandlerRootView>
177
- <SafeAreaProvider>
211
+ <GestureDetector gesture={composed}>
212
+ <View style={StyleSheet.absoluteFill}>
178
213
  <VisionCamera
179
- onError={onError}
180
- zoom={zoom}
181
- preview={true}
182
- ref={camera}
183
- style={styles.camera}
214
+ ref={cameraRef}
215
+ style={StyleSheet.absoluteFill}
184
216
  device={device}
185
- isActive={true}
186
- enableZoomGesture={true}
187
- photoQualityBalance="speed"
188
- photo={true}
189
- video={showVideo()}
190
- audio={showVideo()}
191
- resizeMode={resizeMode}
192
- format={format}
193
- />
194
-
195
- <Pressable
196
- style={styles.cameraOverlay}
197
- onPress={(event) => {
198
- const { locationX, locationY } = event.nativeEvent;
199
- handleFocus(locationX, locationY);
200
- }}
201
- />
202
-
203
- <SetUp
204
- isMultiCam={false}
205
- onChange={(val) => (flash = val)}
206
- onAspectRationChange={setAspectRatio}
207
- onScreenChange={setResizeMode}
208
- onVolumeChange={(val) => (enableShutterSound = val)}
209
- onFishEyeOpen={(val) => {
210
- if (val === 'fishEye') {
211
- setZoom(device.minZoom);
212
- }
213
- if (val === 'default') {
214
- setZoom(device.neutralZoom);
215
- }
216
- }}
217
- />
218
- <Footer
219
- cameraMode={cameraMode}
220
- photos={photos}
221
- backPress={async () => {
222
- if (photos.length > 0) {
223
- const isBack = await confirmApi.open({
224
- text: '返回会清空已拍摄数据,请确认!',
225
- });
226
- if (isBack) {
227
- back();
228
- }
229
- } else {
230
- back();
231
- }
232
- }}
233
- thumbnailPress={showPreview}
234
- onChange={(item) => {
235
- if (dataRetainedMode === 'clear') {
236
- setPhotos([]);
237
- }
238
- setMode(item.mode);
239
- setPhotoResolution(item.photoResolution);
240
- setVideoResolution(item.videoResolution);
241
- }}
242
- takePress={async () => {
243
- const photo = await camera.current?.takePhoto({
244
- flash,
245
- enableShutterSound: enableShutterSound,
246
- });
247
- if (photo) {
248
- setPhotos((p) => [
249
- ...p,
250
- {
251
- ...photo,
252
- frontTime: new Date().getTime(),
253
- mode,
254
- cameraType: position,
255
- },
256
- ]);
257
- }
258
- // 拍照后进行水印
259
- if (data.watermark) {
260
- openViewShotWatermark();
261
- } else {
262
- if (isSingle()) {
263
- showPreview();
264
- }
265
- }
266
- }}
267
- savePress={() => confirm()}
268
- rotatePress={() => {
269
- setPosition((val) => {
270
- if (val === 'back') {
271
- return 'front';
272
- }
273
- return 'back';
274
- });
275
- }}
217
+ isActive={isActive}
218
+ outputs={outputs as CameraProps['outputs']}
219
+ constraints={[{ photoHDR: false }]}
220
+ zoom={zoom}
221
+ torchMode={
222
+ currentMode.mode === 'video' && flash === 'on' ? 'on' : 'off'
223
+ }
224
+ onSubjectAreaChanged={() => cameraRef.current?.resetFocus()}
225
+ nativeID="vision-camera"
276
226
  />
277
-
278
- {watermarkUriVis && (
279
- <ViewShotWatermark
280
- resizeMode={resizeMode}
281
- data={photos.at(-1)}
282
- watermark={data.watermark}
283
- onChange={(value) => {
284
- setPhotos((photosList) => {
285
- return photosList.map((item) => {
286
- if (item.frontTime === value.frontTime) {
287
- return value;
288
- }
289
- return item;
290
- });
291
- });
292
- openViewShotWatermark();
293
- if (isSingle()) {
294
- showPreview();
295
- }
296
- }}
297
- />
298
- )}
299
-
300
- <PreViewContainer visible={preVis}>
301
- {isSingle() ? (
302
- <SinglePre
303
- resizeMode={resizeMode}
304
- uri={photos[0]?.path as string}
305
- onBack={() => signleBack()}
306
- onSave={() => confirm()}
307
- />
308
- ) : (
309
- <PreView
310
- cameraMode={cameraMode}
311
- data={photos}
312
- onBack={() => commonBack()}
313
- onDel={async (snapItem) => {
314
- const isConfirm = await confirmApi.open({
315
- text: '图片删除后无法恢复,请确认!',
316
- });
317
- if (isConfirm) {
318
- setPhotos((photoList) => {
319
- return photoList.filter(
320
- (photo) => photo.path !== snapItem?.path
321
- );
322
- });
323
- return isConfirm;
324
- }
325
- return isConfirm;
326
- }}
327
- />
328
- )}
329
- </PreViewContainer>
330
- {data.watermark && <WaterMarkRender data={data.watermark} />}
331
- {contextHolder}
332
-
333
- {/* 聚焦指示器 */}
334
227
  {focusPoint && (
335
228
  <FocusIndicator
336
229
  key={`${focusPoint.x}-${focusPoint.y}`}
337
- x={focusPoint.x}
338
- y={focusPoint.y}
230
+ point={focusPoint}
231
+ onAnimationEnd={() => setFocusPoint(null)}
339
232
  />
340
233
  )}
341
- </SafeAreaProvider>
342
- </GestureHandlerRootView>
234
+ </View>
235
+ </GestureDetector>
343
236
  );
344
- };
345
-
346
- export default Camera;
347
-
348
- const styles = StyleSheet.create({
349
- camera: { flex: 1, backgroundColor: '#000' },
350
- cameraOverlay: {
351
- position: 'absolute',
352
- top: 0,
353
- left: 0,
354
- right: 0,
355
- bottom: 0,
356
- zIndex: 1,
357
- },
358
237
  });