diff --git a/Example/App.js b/Example/App.js index 6c18568..237aab2 100644 --- a/Example/App.js +++ b/Example/App.js @@ -26,7 +26,7 @@ const App: () => React$Node = () => { const videoRecorder = useRef(null) function startRecorder () { if (videoRecorder && videoRecorder.current) { - videoRecorder.current.open((data) => { + videoRecorder.current.open({ maxLength: 30 }, (data) => { console.log('captured data', data); }) } diff --git a/Example/android/app/build.gradle b/Example/android/app/build.gradle index 6ab488d..616c675 100644 --- a/Example/android/app/build.gradle +++ b/Example/android/app/build.gradle @@ -179,6 +179,8 @@ android { } dependencies { + implementation project(':react-native-camera') + implementation project(':react-native-vector-icons') implementation fileTree(dir: "libs", include: ["*.jar"]) implementation "com.facebook.react:react-native:+" // From node_modules diff --git a/Example/android/app/src/main/assets/fonts/AntDesign.ttf b/Example/android/app/src/main/assets/fonts/AntDesign.ttf new file mode 100644 index 0000000..2abf035 Binary files /dev/null and b/Example/android/app/src/main/assets/fonts/AntDesign.ttf differ diff --git a/Example/android/app/src/main/assets/fonts/Entypo.ttf b/Example/android/app/src/main/assets/fonts/Entypo.ttf new file mode 100644 index 0000000..1c8f5e9 Binary files /dev/null and b/Example/android/app/src/main/assets/fonts/Entypo.ttf differ diff --git a/Example/android/app/src/main/assets/fonts/EvilIcons.ttf b/Example/android/app/src/main/assets/fonts/EvilIcons.ttf new file mode 100644 index 0000000..6868f7b Binary files /dev/null and b/Example/android/app/src/main/assets/fonts/EvilIcons.ttf differ diff --git a/Example/android/app/src/main/assets/fonts/Feather.ttf b/Example/android/app/src/main/assets/fonts/Feather.ttf new file mode 100644 index 0000000..852c713 Binary files /dev/null and b/Example/android/app/src/main/assets/fonts/Feather.ttf differ diff --git a/Example/android/app/src/main/assets/fonts/FontAwesome.ttf b/Example/android/app/src/main/assets/fonts/FontAwesome.ttf new file mode 100644 index 0000000..35acda2 Binary files /dev/null and b/Example/android/app/src/main/assets/fonts/FontAwesome.ttf differ diff --git a/Example/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf b/Example/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf new file mode 100644 index 0000000..5f72e91 Binary files /dev/null and b/Example/android/app/src/main/assets/fonts/FontAwesome5_Brands.ttf differ diff --git a/Example/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf b/Example/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf new file mode 100644 index 0000000..a309313 Binary files /dev/null and b/Example/android/app/src/main/assets/fonts/FontAwesome5_Regular.ttf differ diff --git a/Example/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf b/Example/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf new file mode 100644 index 0000000..7ece328 Binary files /dev/null and b/Example/android/app/src/main/assets/fonts/FontAwesome5_Solid.ttf differ diff --git a/Example/android/app/src/main/assets/fonts/Fontisto.ttf b/Example/android/app/src/main/assets/fonts/Fontisto.ttf new file mode 100755 index 0000000..96e2e81 Binary files /dev/null and b/Example/android/app/src/main/assets/fonts/Fontisto.ttf differ diff --git a/Example/android/app/src/main/assets/fonts/Foundation.ttf b/Example/android/app/src/main/assets/fonts/Foundation.ttf new file mode 100644 index 0000000..6cce217 Binary files /dev/null and b/Example/android/app/src/main/assets/fonts/Foundation.ttf differ diff --git a/Example/android/app/src/main/assets/fonts/Ionicons.ttf b/Example/android/app/src/main/assets/fonts/Ionicons.ttf new file mode 100644 index 0000000..67bd842 Binary files /dev/null and b/Example/android/app/src/main/assets/fonts/Ionicons.ttf differ diff --git a/Example/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf b/Example/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf new file mode 100644 index 0000000..9cc8db1 Binary files /dev/null and b/Example/android/app/src/main/assets/fonts/MaterialCommunityIcons.ttf differ diff --git a/Example/android/app/src/main/assets/fonts/MaterialIcons.ttf b/Example/android/app/src/main/assets/fonts/MaterialIcons.ttf new file mode 100644 index 0000000..7015564 Binary files /dev/null and b/Example/android/app/src/main/assets/fonts/MaterialIcons.ttf differ diff --git a/Example/android/app/src/main/assets/fonts/Octicons.ttf b/Example/android/app/src/main/assets/fonts/Octicons.ttf new file mode 100644 index 0000000..ceac75d Binary files /dev/null and b/Example/android/app/src/main/assets/fonts/Octicons.ttf differ diff --git a/Example/android/app/src/main/assets/fonts/SimpleLineIcons.ttf b/Example/android/app/src/main/assets/fonts/SimpleLineIcons.ttf new file mode 100644 index 0000000..6ecb686 Binary files /dev/null and b/Example/android/app/src/main/assets/fonts/SimpleLineIcons.ttf differ diff --git a/Example/android/app/src/main/assets/fonts/Zocial.ttf b/Example/android/app/src/main/assets/fonts/Zocial.ttf new file mode 100644 index 0000000..e4ae46c Binary files /dev/null and b/Example/android/app/src/main/assets/fonts/Zocial.ttf differ diff --git a/Example/android/app/src/main/java/com/example/MainApplication.java b/Example/android/app/src/main/java/com/example/MainApplication.java index 567e0a6..ac11c35 100644 --- a/Example/android/app/src/main/java/com/example/MainApplication.java +++ b/Example/android/app/src/main/java/com/example/MainApplication.java @@ -4,6 +4,10 @@ import android.content.Context; import com.facebook.react.PackageList; import com.facebook.react.ReactApplication; +import org.reactnative.camera.RNCameraPackage; +import com.oblador.vectoricons.VectorIconsPackage; +import com.hauvo.compress.RNCompressPackage; +import com.react.rnspinkit.RNSpinkitPackage; import com.facebook.react.ReactNativeHost; import com.facebook.react.ReactPackage; import com.facebook.soloader.SoLoader; diff --git a/Example/android/settings.gradle b/Example/android/settings.gradle index 47725a0..b7b74ff 100644 --- a/Example/android/settings.gradle +++ b/Example/android/settings.gradle @@ -1,3 +1,7 @@ rootProject.name = 'Example' +include ':react-native-camera' +project(':react-native-camera').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-camera/android') +include ':react-native-vector-icons' +project(':react-native-vector-icons').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-vector-icons/android') apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) include ':app' diff --git a/Example/ios/Example.xcodeproj/project.pbxproj b/Example/ios/Example.xcodeproj/project.pbxproj index 9efadca..0c9c398 100644 --- a/Example/ios/Example.xcodeproj/project.pbxproj +++ b/Example/ios/Example.xcodeproj/project.pbxproj @@ -18,22 +18,22 @@ 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 2DCD954D1E0B4F2C00145EB5 /* ExampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* ExampleTests.m */; }; 36E756AD6A096076D0CD0C98 /* libPods-Example.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1B53BD6C8904B4ECA280F5E7 /* libPods-Example.a */; }; - 3DFAD1CC239416B300E73A93 /* Fontisto.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3DFAD1BC239416B300E73A93 /* Fontisto.ttf */; }; - 3DFAD1CD239416B300E73A93 /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3DFAD1BD239416B300E73A93 /* Octicons.ttf */; }; - 3DFAD1CE239416B300E73A93 /* Feather.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3DFAD1BE239416B300E73A93 /* Feather.ttf */; }; - 3DFAD1CF239416B300E73A93 /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3DFAD1BF239416B300E73A93 /* Entypo.ttf */; }; - 3DFAD1D0239416B300E73A93 /* FontAwesome5_Brands.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3DFAD1C0239416B300E73A93 /* FontAwesome5_Brands.ttf */; }; - 3DFAD1D1239416B300E73A93 /* MaterialCommunityIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3DFAD1C1239416B300E73A93 /* MaterialCommunityIcons.ttf */; }; - 3DFAD1D2239416B300E73A93 /* AntDesign.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3DFAD1C2239416B300E73A93 /* AntDesign.ttf */; }; - 3DFAD1D3239416B300E73A93 /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3DFAD1C3239416B300E73A93 /* Foundation.ttf */; }; - 3DFAD1D4239416B300E73A93 /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3DFAD1C4239416B300E73A93 /* Ionicons.ttf */; }; - 3DFAD1D5239416B300E73A93 /* FontAwesome5_Solid.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3DFAD1C5239416B300E73A93 /* FontAwesome5_Solid.ttf */; }; - 3DFAD1D6239416B300E73A93 /* FontAwesome5_Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3DFAD1C6239416B300E73A93 /* FontAwesome5_Regular.ttf */; }; - 3DFAD1D7239416B300E73A93 /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3DFAD1C7239416B300E73A93 /* FontAwesome.ttf */; }; - 3DFAD1D8239416B300E73A93 /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3DFAD1C8239416B300E73A93 /* Zocial.ttf */; }; - 3DFAD1D9239416B300E73A93 /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3DFAD1C9239416B300E73A93 /* EvilIcons.ttf */; }; - 3DFAD1DA239416B300E73A93 /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3DFAD1CA239416B300E73A93 /* SimpleLineIcons.ttf */; }; - 3DFAD1DB239416B300E73A93 /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3DFAD1CB239416B300E73A93 /* MaterialIcons.ttf */; }; + 3D85428F2394CCCE0069AD2A /* Fontisto.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3D85427F2394CCCE0069AD2A /* Fontisto.ttf */; }; + 3D8542902394CCCE0069AD2A /* Octicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3D8542802394CCCE0069AD2A /* Octicons.ttf */; }; + 3D8542912394CCCE0069AD2A /* Feather.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3D8542812394CCCE0069AD2A /* Feather.ttf */; }; + 3D8542922394CCCE0069AD2A /* Entypo.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3D8542822394CCCE0069AD2A /* Entypo.ttf */; }; + 3D8542932394CCCE0069AD2A /* FontAwesome5_Brands.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3D8542832394CCCE0069AD2A /* FontAwesome5_Brands.ttf */; }; + 3D8542942394CCCE0069AD2A /* MaterialCommunityIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3D8542842394CCCE0069AD2A /* MaterialCommunityIcons.ttf */; }; + 3D8542952394CCCE0069AD2A /* AntDesign.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3D8542852394CCCE0069AD2A /* AntDesign.ttf */; }; + 3D8542962394CCCE0069AD2A /* Foundation.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3D8542862394CCCE0069AD2A /* Foundation.ttf */; }; + 3D8542972394CCCE0069AD2A /* Ionicons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3D8542872394CCCE0069AD2A /* Ionicons.ttf */; }; + 3D8542982394CCCE0069AD2A /* FontAwesome5_Solid.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3D8542882394CCCE0069AD2A /* FontAwesome5_Solid.ttf */; }; + 3D8542992394CCCE0069AD2A /* FontAwesome5_Regular.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3D8542892394CCCE0069AD2A /* FontAwesome5_Regular.ttf */; }; + 3D85429A2394CCCE0069AD2A /* FontAwesome.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3D85428A2394CCCE0069AD2A /* FontAwesome.ttf */; }; + 3D85429B2394CCCE0069AD2A /* Zocial.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3D85428B2394CCCE0069AD2A /* Zocial.ttf */; }; + 3D85429C2394CCCE0069AD2A /* EvilIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3D85428C2394CCCE0069AD2A /* EvilIcons.ttf */; }; + 3D85429D2394CCCE0069AD2A /* SimpleLineIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3D85428D2394CCCE0069AD2A /* SimpleLineIcons.ttf */; }; + 3D85429E2394CCCE0069AD2A /* MaterialIcons.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 3D85428E2394CCCE0069AD2A /* MaterialIcons.ttf */; }; ABBF872789DCF1A47A1B0DC8 /* libPods-Example-tvOSTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BB390EEEF97953654DFCC2E4 /* libPods-Example-tvOSTests.a */; }; D583B3D8BB388A16CAEEA6BC /* libPods-ExampleTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = AA263E94D3A5DCF4B296F6D5 /* libPods-ExampleTests.a */; }; /* End PBXBuildFile section */ @@ -72,22 +72,22 @@ 2D02E4901E0B4A5D006451C7 /* Example-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Example-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 37DCCCAF936308FA19ACEA5F /* Pods-Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example.release.xcconfig"; path = "Target Support Files/Pods-Example/Pods-Example.release.xcconfig"; sourceTree = ""; }; 3BE89341294E2215541C8FC6 /* libPods-Example-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-Example-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; - 3DFAD1BC239416B300E73A93 /* Fontisto.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Fontisto.ttf; sourceTree = ""; }; - 3DFAD1BD239416B300E73A93 /* Octicons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Octicons.ttf; sourceTree = ""; }; - 3DFAD1BE239416B300E73A93 /* Feather.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Feather.ttf; sourceTree = ""; }; - 3DFAD1BF239416B300E73A93 /* Entypo.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Entypo.ttf; sourceTree = ""; }; - 3DFAD1C0239416B300E73A93 /* FontAwesome5_Brands.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = FontAwesome5_Brands.ttf; sourceTree = ""; }; - 3DFAD1C1239416B300E73A93 /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = MaterialCommunityIcons.ttf; sourceTree = ""; }; - 3DFAD1C2239416B300E73A93 /* AntDesign.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = AntDesign.ttf; sourceTree = ""; }; - 3DFAD1C3239416B300E73A93 /* Foundation.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Foundation.ttf; sourceTree = ""; }; - 3DFAD1C4239416B300E73A93 /* Ionicons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Ionicons.ttf; sourceTree = ""; }; - 3DFAD1C5239416B300E73A93 /* FontAwesome5_Solid.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = FontAwesome5_Solid.ttf; sourceTree = ""; }; - 3DFAD1C6239416B300E73A93 /* FontAwesome5_Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = FontAwesome5_Regular.ttf; sourceTree = ""; }; - 3DFAD1C7239416B300E73A93 /* FontAwesome.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = FontAwesome.ttf; sourceTree = ""; }; - 3DFAD1C8239416B300E73A93 /* Zocial.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Zocial.ttf; sourceTree = ""; }; - 3DFAD1C9239416B300E73A93 /* EvilIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = EvilIcons.ttf; sourceTree = ""; }; - 3DFAD1CA239416B300E73A93 /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = SimpleLineIcons.ttf; sourceTree = ""; }; - 3DFAD1CB239416B300E73A93 /* MaterialIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = MaterialIcons.ttf; sourceTree = ""; }; + 3D85427F2394CCCE0069AD2A /* Fontisto.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Fontisto.ttf; sourceTree = ""; }; + 3D8542802394CCCE0069AD2A /* Octicons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Octicons.ttf; sourceTree = ""; }; + 3D8542812394CCCE0069AD2A /* Feather.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Feather.ttf; sourceTree = ""; }; + 3D8542822394CCCE0069AD2A /* Entypo.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Entypo.ttf; sourceTree = ""; }; + 3D8542832394CCCE0069AD2A /* FontAwesome5_Brands.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = FontAwesome5_Brands.ttf; sourceTree = ""; }; + 3D8542842394CCCE0069AD2A /* MaterialCommunityIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = MaterialCommunityIcons.ttf; sourceTree = ""; }; + 3D8542852394CCCE0069AD2A /* AntDesign.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = AntDesign.ttf; sourceTree = ""; }; + 3D8542862394CCCE0069AD2A /* Foundation.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Foundation.ttf; sourceTree = ""; }; + 3D8542872394CCCE0069AD2A /* Ionicons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Ionicons.ttf; sourceTree = ""; }; + 3D8542882394CCCE0069AD2A /* FontAwesome5_Solid.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = FontAwesome5_Solid.ttf; sourceTree = ""; }; + 3D8542892394CCCE0069AD2A /* FontAwesome5_Regular.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = FontAwesome5_Regular.ttf; sourceTree = ""; }; + 3D85428A2394CCCE0069AD2A /* FontAwesome.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = FontAwesome.ttf; sourceTree = ""; }; + 3D85428B2394CCCE0069AD2A /* Zocial.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Zocial.ttf; sourceTree = ""; }; + 3D85428C2394CCCE0069AD2A /* EvilIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = EvilIcons.ttf; sourceTree = ""; }; + 3D85428D2394CCCE0069AD2A /* SimpleLineIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = SimpleLineIcons.ttf; sourceTree = ""; }; + 3D85428E2394CCCE0069AD2A /* MaterialIcons.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = MaterialIcons.ttf; sourceTree = ""; }; 3F36A26BC4D74587F8F5ACFB /* Pods-Example-tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example-tvOS.release.xcconfig"; path = "Target Support Files/Pods-Example-tvOS/Pods-Example-tvOS.release.xcconfig"; sourceTree = ""; }; 5D859CD7AC4D4E3033680BA5 /* Pods-Example-tvOSTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example-tvOSTests.release.xcconfig"; path = "Target Support Files/Pods-Example-tvOSTests/Pods-Example-tvOSTests.release.xcconfig"; sourceTree = ""; }; 6705F1DEFD292382A9D6F073 /* Pods-ExampleTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ExampleTests.debug.xcconfig"; path = "Target Support Files/Pods-ExampleTests/Pods-ExampleTests.debug.xcconfig"; sourceTree = ""; }; @@ -181,25 +181,32 @@ name = Frameworks; sourceTree = ""; }; - 3DFAD1BB239416B300E73A93 /* Fonts */ = { + 382640CD41CE4A67B079A4B3 /* Resources */ = { isa = PBXGroup; children = ( - 3DFAD1BC239416B300E73A93 /* Fontisto.ttf */, - 3DFAD1BD239416B300E73A93 /* Octicons.ttf */, - 3DFAD1BE239416B300E73A93 /* Feather.ttf */, - 3DFAD1BF239416B300E73A93 /* Entypo.ttf */, - 3DFAD1C0239416B300E73A93 /* FontAwesome5_Brands.ttf */, - 3DFAD1C1239416B300E73A93 /* MaterialCommunityIcons.ttf */, - 3DFAD1C2239416B300E73A93 /* AntDesign.ttf */, - 3DFAD1C3239416B300E73A93 /* Foundation.ttf */, - 3DFAD1C4239416B300E73A93 /* Ionicons.ttf */, - 3DFAD1C5239416B300E73A93 /* FontAwesome5_Solid.ttf */, - 3DFAD1C6239416B300E73A93 /* FontAwesome5_Regular.ttf */, - 3DFAD1C7239416B300E73A93 /* FontAwesome.ttf */, - 3DFAD1C8239416B300E73A93 /* Zocial.ttf */, - 3DFAD1C9239416B300E73A93 /* EvilIcons.ttf */, - 3DFAD1CA239416B300E73A93 /* SimpleLineIcons.ttf */, - 3DFAD1CB239416B300E73A93 /* MaterialIcons.ttf */, + ); + name = Resources; + sourceTree = ""; + }; + 3D85427E2394CCCE0069AD2A /* Fonts */ = { + isa = PBXGroup; + children = ( + 3D85427F2394CCCE0069AD2A /* Fontisto.ttf */, + 3D8542802394CCCE0069AD2A /* Octicons.ttf */, + 3D8542812394CCCE0069AD2A /* Feather.ttf */, + 3D8542822394CCCE0069AD2A /* Entypo.ttf */, + 3D8542832394CCCE0069AD2A /* FontAwesome5_Brands.ttf */, + 3D8542842394CCCE0069AD2A /* MaterialCommunityIcons.ttf */, + 3D8542852394CCCE0069AD2A /* AntDesign.ttf */, + 3D8542862394CCCE0069AD2A /* Foundation.ttf */, + 3D8542872394CCCE0069AD2A /* Ionicons.ttf */, + 3D8542882394CCCE0069AD2A /* FontAwesome5_Solid.ttf */, + 3D8542892394CCCE0069AD2A /* FontAwesome5_Regular.ttf */, + 3D85428A2394CCCE0069AD2A /* FontAwesome.ttf */, + 3D85428B2394CCCE0069AD2A /* Zocial.ttf */, + 3D85428C2394CCCE0069AD2A /* EvilIcons.ttf */, + 3D85428D2394CCCE0069AD2A /* SimpleLineIcons.ttf */, + 3D85428E2394CCCE0069AD2A /* MaterialIcons.ttf */, ); name = Fonts; path = "../node_modules/react-native-vector-icons/Fonts"; @@ -215,13 +222,14 @@ 83CBB9F61A601CBA00E9B192 = { isa = PBXGroup; children = ( - 3DFAD1BB239416B300E73A93 /* Fonts */, + 3D85427E2394CCCE0069AD2A /* Fonts */, 13B07FAE1A68108700A75B9A /* Example */, 832341AE1AAA6A7D00B99B32 /* Libraries */, 00E356EF1AD99517003FC87E /* ExampleTests */, 83CBBA001A601CBA00E9B192 /* Products */, 2D16E6871FA4F8E400B85C8A /* Frameworks */, FBCDE909B7A53E7E54037B8A /* Pods */, + 382640CD41CE4A67B079A4B3 /* Resources */, ); indentWidth = 2; sourceTree = ""; @@ -341,13 +349,16 @@ 83CBB9F71A601CBA00E9B192 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0940; + LastUpgradeCheck = 940; ORGANIZATIONNAME = Facebook; TargetAttributes = { 00E356ED1AD99517003FC87E = { CreatedOnToolsVersion = 6.2; TestTargetID = 13B07F861A680F5B00A75B9A; }; + 13B07F861A680F5B00A75B9A = { + DevelopmentTeam = JFUMMY68VD; + }; 2D02E47A1E0B4A5D006451C7 = { CreatedOnToolsVersion = 8.2.1; ProvisioningStyle = Automatic; @@ -393,23 +404,23 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 3DFAD1CC239416B300E73A93 /* Fontisto.ttf in Resources */, - 3DFAD1D7239416B300E73A93 /* FontAwesome.ttf in Resources */, - 3DFAD1D3239416B300E73A93 /* Foundation.ttf in Resources */, - 3DFAD1D6239416B300E73A93 /* FontAwesome5_Regular.ttf in Resources */, - 3DFAD1D4239416B300E73A93 /* Ionicons.ttf in Resources */, - 3DFAD1D9239416B300E73A93 /* EvilIcons.ttf in Resources */, - 3DFAD1CF239416B300E73A93 /* Entypo.ttf in Resources */, + 3D85428F2394CCCE0069AD2A /* Fontisto.ttf in Resources */, + 3D85429A2394CCCE0069AD2A /* FontAwesome.ttf in Resources */, + 3D8542962394CCCE0069AD2A /* Foundation.ttf in Resources */, + 3D8542992394CCCE0069AD2A /* FontAwesome5_Regular.ttf in Resources */, + 3D8542972394CCCE0069AD2A /* Ionicons.ttf in Resources */, + 3D85429C2394CCCE0069AD2A /* EvilIcons.ttf in Resources */, + 3D8542922394CCCE0069AD2A /* Entypo.ttf in Resources */, 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, - 3DFAD1D8239416B300E73A93 /* Zocial.ttf in Resources */, - 3DFAD1DA239416B300E73A93 /* SimpleLineIcons.ttf in Resources */, - 3DFAD1CE239416B300E73A93 /* Feather.ttf in Resources */, - 3DFAD1CD239416B300E73A93 /* Octicons.ttf in Resources */, - 3DFAD1D0239416B300E73A93 /* FontAwesome5_Brands.ttf in Resources */, - 3DFAD1D2239416B300E73A93 /* AntDesign.ttf in Resources */, - 3DFAD1DB239416B300E73A93 /* MaterialIcons.ttf in Resources */, - 3DFAD1D5239416B300E73A93 /* FontAwesome5_Solid.ttf in Resources */, - 3DFAD1D1239416B300E73A93 /* MaterialCommunityIcons.ttf in Resources */, + 3D85429B2394CCCE0069AD2A /* Zocial.ttf in Resources */, + 3D85429D2394CCCE0069AD2A /* SimpleLineIcons.ttf in Resources */, + 3D8542912394CCCE0069AD2A /* Feather.ttf in Resources */, + 3D8542902394CCCE0069AD2A /* Octicons.ttf in Resources */, + 3D8542932394CCCE0069AD2A /* FontAwesome5_Brands.ttf in Resources */, + 3D8542952394CCCE0069AD2A /* AntDesign.ttf in Resources */, + 3D85429E2394CCCE0069AD2A /* MaterialIcons.ttf in Resources */, + 3D8542982394CCCE0069AD2A /* FontAwesome5_Solid.ttf in Resources */, + 3D8542942394CCCE0069AD2A /* MaterialCommunityIcons.ttf in Resources */, 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -699,8 +710,10 @@ baseConfigurationReference = DE5E558A9867E7EBE80C7373 /* Pods-Example.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; DEAD_CODE_STRIPPING = NO; + DEVELOPMENT_TEAM = JFUMMY68VD; INFOPLIST_FILE = Example/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; OTHER_LDFLAGS = ( @@ -719,7 +732,9 @@ baseConfigurationReference = 37DCCCAF936308FA19ACEA5F /* Pods-Example.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_TEAM = JFUMMY68VD; INFOPLIST_FILE = Example/Info.plist; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; OTHER_LDFLAGS = ( diff --git a/Example/ios/Example/Info.plist b/Example/ios/Example/Info.plist index 84b0ce4..a09a099 100644 --- a/Example/ios/Example/Info.plist +++ b/Example/ios/Example/Info.plist @@ -38,7 +38,7 @@ NSLocationWhenInUseUsageDescription - + UILaunchStoryboardName LaunchScreen UIRequiredDeviceCapabilities @@ -70,19 +70,14 @@ SimpleLineIcons.ttf Octicons.ttf Zocial.ttf + Fontisto.ttf NSCameraUsageDescription Your message to user when the camera is accessed for the first time - - NSPhotoLibraryAddUsageDescription Your message to user when the photo library is accessed for the first time - - NSPhotoLibraryUsageDescription Your message to user when the photo library is accessed for the first time - - NSMicrophoneUsageDescription Your message to user when the microphone is accessed for the first time diff --git a/Example/ios/Podfile b/Example/ios/Podfile index d28a6c0..cea6d3d 100644 --- a/Example/ios/Podfile +++ b/Example/ios/Podfile @@ -35,7 +35,7 @@ target 'Example' do pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec' pod 'react-native-camera', :path => '../node_modules/react-native-camera' - pod 'RNMov2mp4', :path => '../node_modules/react-native-beautiful-video-recorder/ios' + pod 'RNVectorIcons', :path => '../node_modules/react-native-vector-icons' target 'ExampleTests' do inherit! :search_paths diff --git a/Example/ios/Podfile.lock b/Example/ios/Podfile.lock index 4aec636..02d6611 100644 --- a/Example/ios/Podfile.lock +++ b/Example/ios/Podfile.lock @@ -182,13 +182,13 @@ PODS: - React-cxxreact (= 0.61.5) - React-jsi (= 0.61.5) - React-jsinspector (0.61.5) - - react-native-camera (3.13.0): + - react-native-camera (3.13.1): - React - - react-native-camera/RCT (= 3.13.0) - - react-native-camera/RN (= 3.13.0) - - react-native-camera/RCT (3.13.0): + - react-native-camera/RCT (= 3.13.1) + - react-native-camera/RN (= 3.13.1) + - react-native-camera/RCT (3.13.1): - React - - react-native-camera/RN (3.13.0): + - react-native-camera/RN (3.13.1): - React - React-RCTActionSheet (0.61.5): - React-Core/RCTActionSheetHeaders (= 0.61.5) @@ -225,7 +225,7 @@ PODS: - React-cxxreact (= 0.61.5) - React-jsi (= 0.61.5) - ReactCommon/jscallinvoker (= 0.61.5) - - RNMov2mp4 (1.0.0): + - RNVectorIcons (6.6.0): - React - Yoga (1.14.0) @@ -258,7 +258,7 @@ DEPENDENCIES: - React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`) - ReactCommon/jscallinvoker (from `../node_modules/react-native/ReactCommon`) - ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`) - - RNMov2mp4 (from `../node_modules/react-native-beautiful-video-recorder/ios`) + - RNVectorIcons (from `../node_modules/react-native-vector-icons`) - Yoga (from `../node_modules/react-native/ReactCommon/yoga`) SPEC REPOS: @@ -316,8 +316,8 @@ EXTERNAL SOURCES: :path: "../node_modules/react-native/Libraries/Vibration" ReactCommon: :path: "../node_modules/react-native/ReactCommon" - RNMov2mp4: - :path: "../node_modules/react-native-beautiful-video-recorder/ios" + RNVectorIcons: + :path: "../node_modules/react-native-vector-icons" Yoga: :path: "../node_modules/react-native/ReactCommon/yoga" @@ -337,7 +337,7 @@ SPEC CHECKSUMS: React-jsi: cb2cd74d7ccf4cffb071a46833613edc79cdf8f7 React-jsiexecutor: d5525f9ed5f782fdbacb64b9b01a43a9323d2386 React-jsinspector: fa0ecc501688c3c4c34f28834a76302233e29dc0 - react-native-camera: 05b9bf888b87885b60ef4f56f8027b41b739b40b + react-native-camera: 1df7f9a047591bbc2c9a7ec80bd6412d3c19579f React-RCTActionSheet: 600b4d10e3aea0913b5a92256d2719c0cdd26d76 React-RCTAnimation: 791a87558389c80908ed06cc5dfc5e7920dfa360 React-RCTBlob: d89293cc0236d9cb0933d85e430b0bbe81ad1d72 @@ -348,9 +348,9 @@ SPEC CHECKSUMS: React-RCTText: 9ccc88273e9a3aacff5094d2175a605efa854dbe React-RCTVibration: a49a1f42bf8f5acf1c3e297097517c6b3af377ad ReactCommon: 198c7c8d3591f975e5431bec1b0b3b581aa1c5dd - RNMov2mp4: 6a6c99208945d315a9c811c02e4e17d83c638eb7 + RNVectorIcons: 0bb4def82230be1333ddaeee9fcba45f0b288ed4 Yoga: f2a7cd4280bfe2cca5a7aed98ba0eb3d1310f18b -PODFILE CHECKSUM: ffefae56b29e9ef1b481b2b621b5baf42d2f2671 +PODFILE CHECKSUM: be6fc1aa9dad6f19602fe27b03ca07e1fbbb97c8 COCOAPODS: 1.8.3 diff --git a/Example/package.json b/Example/package.json index f2ff516..f1b1409 100644 --- a/Example/package.json +++ b/Example/package.json @@ -12,7 +12,9 @@ "dependencies": { "react": "16.9.0", "react-native": "0.61.5", - "react-native-beautiful-video-recorder": "file:../" + "react-native-beautiful-video-recorder": "file:../", + "react-native-camera": "^3.13.1", + "react-native-vector-icons": "^6.6.0" }, "devDependencies": { "@babel/core": "^7.7.4", diff --git a/Example/yarn.lock b/Example/yarn.lock index 343fe56..c67f544 100644 --- a/Example/yarn.lock +++ b/Example/yarn.lock @@ -5162,7 +5162,7 @@ prompts@^2.0.1: kleur "^3.0.3" sisteransi "^1.0.3" -prop-types@^15.5.8, prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@^15.6.2, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -5232,44 +5232,19 @@ react-is@^16.8.1, react-is@^16.8.4, react-is@^16.9.0: resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c" integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q== -"react-native-beautiful-video-recorder@file:..": - version "1.2.0" - dependencies: - moment "2.24.0" - react-native-camera "3.13.0" - react-native-compress "1.0.2" - react-native-spinkit "1.5.0" - react-native-vector-icons "6.6.0" - "react-native-beautiful-video-recorder@file:../": - version "1.2.0" + version "2.0.0" dependencies: moment "2.24.0" - react-native-camera "3.13.0" - react-native-compress "1.0.2" - react-native-spinkit "1.5.0" - react-native-vector-icons "6.6.0" -react-native-camera@3.13.0: - version "3.13.0" - resolved "https://registry.yarnpkg.com/react-native-camera/-/react-native-camera-3.13.0.tgz#999741e3b5e56426ee678055d0bc4e57e90631cc" - integrity sha512-iMB8ODN1abcuUiWy62+YD2ae/p/ADMOGcFi+41KV7FpNKjbIM8fYbIx2oLyljTxXvBPL5pMovqW2aw5DEwf3IQ== +react-native-camera@^3.13.1: + version "3.13.1" + resolved "https://registry.yarnpkg.com/react-native-camera/-/react-native-camera-3.13.1.tgz#016a011ca264d7044e2f1ad11fc624b90020aeb9" + integrity sha512-HXCo75sFYOJRqtbiG12ttoG6K4UdS1mfOwu6NoQmxj6IV2KrNgdOYO4YTyLymGUXNs3LyOWpJskVvCRupoFA3A== dependencies: prop-types "^15.6.2" -react-native-compress@1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/react-native-compress/-/react-native-compress-1.0.2.tgz#202fdf71d6ca3938c4c3a0a54158eb68d4debf6b" - integrity sha1-IC/fcdbKOTjEw6ClQVjraNTev2s= - -react-native-spinkit@1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/react-native-spinkit/-/react-native-spinkit-1.5.0.tgz#598b4b138b1e95cc232dfb2fc7e64dcdd45de574" - integrity sha512-HHOIH3Lq+oFsmhPBO9Y2hcxkKNm955gmNBaFgNUrshhGU4Dqp8qWj3bbVrwjBJOC5W+cvHSqyTsfgmpMPoUoTA== - dependencies: - prop-types "^15.5.8" - -react-native-vector-icons@6.6.0: +react-native-vector-icons@^6.6.0: version "6.6.0" resolved "https://registry.yarnpkg.com/react-native-vector-icons/-/react-native-vector-icons-6.6.0.tgz#66cf004918eb05d90778d64bd42077c1800d481b" integrity sha512-MImKVx8JEvVVBnaShMr7/yTX4Y062JZMupht1T+IEgbqBj4aQeQ1z2SH4VHWKNtWtppk4kz9gYyUiMWqx6tNSw== diff --git a/README.md b/README.md index a2e75fa..1143c6e 100644 --- a/README.md +++ b/README.md @@ -7,15 +7,16 @@ The video recorder component that extends from `react-native-camera`. It works f ## Features: - Record video on iOS and Android. -- Convert MOV to MP4 on iOS. So both Android & iOS will return MP4 format. +- Support `cameraOptions` and `recordAsyncOptions` from `react-native-camera` ## Installation ```bash -npm i --save react-native-beautiful-video-recorder -react-native link +yarn add react-native-beautiful-video-recorder react-native-camera react-native-vector-icons ``` +Follow `react-native-camera` & `react-native-vector-icons` for linking native libraries. + Please file an issue if you have any trouble! ## Configuration ### iOS @@ -47,7 +48,8 @@ import VideoRecorder from 'react-native-beautiful-video-recorder'; .... start = () => { - this.videoRecorder.open((data) => { + // 30 seconds + this.videoRecorder.open({ maxLength: 30 },(data) => { console.log('captured data', data); }); } @@ -59,11 +61,19 @@ render() { Start - { this.videoRecorder = ref; }} compressQuality={'medium'} /> // quality will be 'low', 'medium' or 'high' + { this.videoRecorder = ref; }} /> ); } ``` + +## Properties + +param | Info +------ | ---- +cameraOptions | https://github.com/react-native-community/react-native-camera/blob/master/docs/RNCamera.md +recordOptions | https://github.com/react-native-community/react-native-camera/blob/master/docs/RNCamera.md + ## Callback Data param | Info diff --git a/ios/RNMov2mp4.h b/ios/RNMov2mp4.h deleted file mode 100644 index 81b2c0d..0000000 --- a/ios/RNMov2mp4.h +++ /dev/null @@ -1,11 +0,0 @@ - -#if __has_include("RCTBridgeModule.h") -#import "RCTBridgeModule.h" -#else -#import -#endif - -@interface RNMov2mp4 : NSObject - -@end - \ No newline at end of file diff --git a/ios/RNMov2mp4.m b/ios/RNMov2mp4.m deleted file mode 100644 index 07949f0..0000000 --- a/ios/RNMov2mp4.m +++ /dev/null @@ -1,64 +0,0 @@ - -#import "RNMov2mp4.h" -#import -#import - -@implementation RNMov2mp4 - -- (dispatch_queue_t)methodQueue -{ - return dispatch_get_main_queue(); -} -RCT_EXPORT_MODULE() - -RCT_EXPORT_METHOD(convert:(NSString *)movPath resolve:(RCTPromiseResolveBlock)resolve - reject:(RCTPromiseRejectBlock)reject) -{ - @try { - movPath = [movPath stringByReplacingOccurrencesOfString:@"file://" - withString:@""]; - AVURLAsset *avAsset = [AVURLAsset URLAssetWithURL:[NSURL fileURLWithPath:movPath] options:nil]; - NSArray *compatiblePresets = [AVAssetExportSession exportPresetsCompatibleWithAsset:avAsset]; - - if ([compatiblePresets containsObject:AVAssetExportPresetLowQuality]) - { - AVAssetExportSession *exportSession = [[AVAssetExportSession alloc]initWithAsset:avAsset presetName:AVAssetExportPresetPassthrough]; - // save to temp directory - NSString* tempDirectory = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, - NSUserDomainMask, - YES) lastObject]; - NSString *videoPath = [tempDirectory stringByAppendingPathComponent: [NSString stringWithFormat:@"%@.mp4", [[NSProcessInfo processInfo] globallyUniqueString]]]; - - exportSession.outputURL = [NSURL fileURLWithPath:videoPath]; - NSLog(@"videopath of your mp4 file = %@",videoPath); // PATH OF YOUR .mp4 FILE - exportSession.outputFileType = AVFileTypeMPEG4; - - [exportSession exportAsynchronouslyWithCompletionHandler:^{ - - switch ([exportSession status]) { - - case AVAssetExportSessionStatusFailed: - reject([[exportSession error] localizedDescription], nil, nil); - break; - - case AVAssetExportSessionStatusCancelled: - reject(@"Canceled", nil, nil); - break; - - case AVAssetExportSessionStatusCompleted: - resolve(@{ @"path": videoPath }); - break; - - default: - break; - } - }]; - - } - } @catch(NSException *e) { - reject(e.reason, nil, nil); - } -} - -@end - diff --git a/ios/RNMov2mp4.podspec b/ios/RNMov2mp4.podspec deleted file mode 100644 index 294eaea..0000000 --- a/ios/RNMov2mp4.podspec +++ /dev/null @@ -1,24 +0,0 @@ - -Pod::Spec.new do |s| - s.name = "RNMov2mp4" - s.version = "1.0.0" - s.summary = "RNMov2mp4" - s.description = <<-DESC - RNMov2mp4 - DESC - s.homepage = "hauvo.me" - s.license = "MIT" - # s.license = { :type => "MIT", :file => "FILE_LICENSE" } - s.author = { "author" => "author@domain.cn" } - s.platform = :ios, "7.0" - s.source = { :git => "https://github.com/author/RNMov2mp4.git", :tag => "master" } - s.source_files = "RNMov2mp4/**/*.{h,m}" - s.requires_arc = true - - - s.dependency "React" - #s.dependency "others" - -end - - \ No newline at end of file diff --git a/ios/RNMov2mp4.xcodeproj/project.pbxproj b/ios/RNMov2mp4.xcodeproj/project.pbxproj deleted file mode 100644 index 14d91bc..0000000 --- a/ios/RNMov2mp4.xcodeproj/project.pbxproj +++ /dev/null @@ -1,252 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 46; - objects = { - -/* Begin PBXBuildFile section */ - B3E7B58A1CC2AC0600A0062D /* RNMov2mp4.m in Sources */ = {isa = PBXBuildFile; fileRef = B3E7B5891CC2AC0600A0062D /* RNMov2mp4.m */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 58B511D91A9E6C8500147676 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = "include/$(PRODUCT_NAME)"; - dstSubfolderSpec = 16; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 134814201AA4EA6300B7C361 /* libRNMov2mp4.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libRNMov2mp4.a; sourceTree = BUILT_PRODUCTS_DIR; }; - B3E7B5881CC2AC0600A0062D /* RNMov2mp4.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RNMov2mp4.h; sourceTree = ""; }; - B3E7B5891CC2AC0600A0062D /* RNMov2mp4.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RNMov2mp4.m; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 58B511D81A9E6C8500147676 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 134814211AA4EA7D00B7C361 /* Products */ = { - isa = PBXGroup; - children = ( - 134814201AA4EA6300B7C361 /* libRNMov2mp4.a */, - ); - name = Products; - sourceTree = ""; - }; - 58B511D21A9E6C8500147676 = { - isa = PBXGroup; - children = ( - B3E7B5881CC2AC0600A0062D /* RNMov2mp4.h */, - B3E7B5891CC2AC0600A0062D /* RNMov2mp4.m */, - 134814211AA4EA7D00B7C361 /* Products */, - ); - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 58B511DA1A9E6C8500147676 /* RNMov2mp4 */ = { - isa = PBXNativeTarget; - buildConfigurationList = 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "RNMov2mp4" */; - buildPhases = ( - 58B511D71A9E6C8500147676 /* Sources */, - 58B511D81A9E6C8500147676 /* Frameworks */, - 58B511D91A9E6C8500147676 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = RNMov2mp4; - productName = RCTDataManager; - productReference = 134814201AA4EA6300B7C361 /* libRNMov2mp4.a */; - productType = "com.apple.product-type.library.static"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 58B511D31A9E6C8500147676 /* Project object */ = { - isa = PBXProject; - attributes = { - LastUpgradeCheck = 0610; - ORGANIZATIONNAME = Facebook; - TargetAttributes = { - 58B511DA1A9E6C8500147676 = { - CreatedOnToolsVersion = 6.1.1; - }; - }; - }; - buildConfigurationList = 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "RNMov2mp4" */; - compatibilityVersion = "Xcode 3.2"; - developmentRegion = English; - hasScannedForEncodings = 0; - knownRegions = ( - en, - ); - mainGroup = 58B511D21A9E6C8500147676; - productRefGroup = 58B511D21A9E6C8500147676; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 58B511DA1A9E6C8500147676 /* RNMov2mp4 */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXSourcesBuildPhase section */ - 58B511D71A9E6C8500147676 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B3E7B58A1CC2AC0600A0062D /* RNMov2mp4.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 58B511ED1A9E6C8500147676 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_DYNAMIC_NO_PIC = NO; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_SYMBOLS_PRIVATE_EXTERN = NO; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - MTL_ENABLE_DEBUG_INFO = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - }; - name = Debug; - }; - 58B511EE1A9E6C8500147676 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; - CLANG_CXX_LIBRARY = "libc++"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = YES; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu99; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 7.0; - MTL_ENABLE_DEBUG_INFO = NO; - SDKROOT = iphoneos; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - 58B511F01A9E6C8500147676 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../../React/**", - "$(SRCROOT)/../../react-native/React/**", - ); - LIBRARY_SEARCH_PATHS = "$(inherited)"; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = RNMov2mp4; - SKIP_INSTALL = YES; - }; - name = Debug; - }; - 58B511F11A9E6C8500147676 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - HEADER_SEARCH_PATHS = ( - "$(inherited)", - /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include, - "$(SRCROOT)/../../../React/**", - "$(SRCROOT)/../../react-native/React/**", - ); - LIBRARY_SEARCH_PATHS = "$(inherited)"; - OTHER_LDFLAGS = "-ObjC"; - PRODUCT_NAME = RNMov2mp4; - SKIP_INSTALL = YES; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 58B511D61A9E6C8500147676 /* Build configuration list for PBXProject "RNMov2mp4" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 58B511ED1A9E6C8500147676 /* Debug */, - 58B511EE1A9E6C8500147676 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 58B511EF1A9E6C8500147676 /* Build configuration list for PBXNativeTarget "RNMov2mp4" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 58B511F01A9E6C8500147676 /* Debug */, - 58B511F11A9E6C8500147676 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 58B511D31A9E6C8500147676 /* Project object */; -} diff --git a/ios/RNMov2mp4.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ios/RNMov2mp4.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a..0000000 --- a/ios/RNMov2mp4.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/ios/RNMov2mp4.xcodeproj/project.xcworkspace/xcshareddata/RNMov2mp4.xcscmblueprint b/ios/RNMov2mp4.xcodeproj/project.xcworkspace/xcshareddata/RNMov2mp4.xcscmblueprint deleted file mode 100644 index 5d56469..0000000 --- a/ios/RNMov2mp4.xcodeproj/project.xcworkspace/xcshareddata/RNMov2mp4.xcscmblueprint +++ /dev/null @@ -1,30 +0,0 @@ -{ - "DVTSourceControlWorkspaceBlueprintPrimaryRemoteRepositoryKey" : "D1DF6C15F0E6FC0F87A5956D67DB950DB3825AFE", - "DVTSourceControlWorkspaceBlueprintWorkingCopyRepositoryLocationsKey" : { - - }, - "DVTSourceControlWorkspaceBlueprintWorkingCopyStatesKey" : { - "D1DF6C15F0E6FC0F87A5956D67DB950DB3825AFE" : 9223372036854775807, - "828240D890F84F56D274CF8EF6326640720D3A73" : 9223372036854775807 - }, - "DVTSourceControlWorkspaceBlueprintIdentifierKey" : "5568736F-3AE4-4078-8094-528C520CC4C1", - "DVTSourceControlWorkspaceBlueprintWorkingCopyPathsKey" : { - "D1DF6C15F0E6FC0F87A5956D67DB950DB3825AFE" : "react-native-beautiful-video-recorder\/", - "828240D890F84F56D274CF8EF6326640720D3A73" : "..\/.." - }, - "DVTSourceControlWorkspaceBlueprintNameKey" : "RNMov2mp4", - "DVTSourceControlWorkspaceBlueprintVersion" : 204, - "DVTSourceControlWorkspaceBlueprintRelativePathToProjectKey" : "lib\/Mov2mp4\/ios\/RNMov2mp4.xcodeproj", - "DVTSourceControlWorkspaceBlueprintRemoteRepositoriesKey" : [ - { - "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "gitlab.com:littlelives-littlestories\/react-native-app.git", - "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", - "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "828240D890F84F56D274CF8EF6326640720D3A73" - }, - { - "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/phuochau\/react-native-beautiful-video-recorder.git", - "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", - "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "D1DF6C15F0E6FC0F87A5956D67DB950DB3825AFE" - } - ] -} \ No newline at end of file diff --git a/ios/RNMov2mp4.xcodeproj/project.xcworkspace/xcuserdata/hauvo.xcuserdatad/UserInterfaceState.xcuserstate b/ios/RNMov2mp4.xcodeproj/project.xcworkspace/xcuserdata/hauvo.xcuserdatad/UserInterfaceState.xcuserstate deleted file mode 100644 index 5fa7c70..0000000 Binary files a/ios/RNMov2mp4.xcodeproj/project.xcworkspace/xcuserdata/hauvo.xcuserdatad/UserInterfaceState.xcuserstate and /dev/null differ diff --git a/ios/RNMov2mp4.xcodeproj/xcuserdata/hauvo.xcuserdatad/xcschemes/RNMov2mp4.xcscheme b/ios/RNMov2mp4.xcodeproj/xcuserdata/hauvo.xcuserdatad/xcschemes/RNMov2mp4.xcscheme deleted file mode 100644 index a699154..0000000 --- a/ios/RNMov2mp4.xcodeproj/xcuserdata/hauvo.xcuserdatad/xcschemes/RNMov2mp4.xcscheme +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ios/RNMov2mp4.xcodeproj/xcuserdata/hauvo.xcuserdatad/xcschemes/xcschememanagement.plist b/ios/RNMov2mp4.xcodeproj/xcuserdata/hauvo.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index 44612b7..0000000 --- a/ios/RNMov2mp4.xcodeproj/xcuserdata/hauvo.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,22 +0,0 @@ - - - - - SchemeUserState - - RNMov2mp4.xcscheme - - orderHint - 0 - - - SuppressBuildableAutocreation - - 58B511DA1A9E6C8500147676 - - primary - - - - - diff --git a/lib/Loader/index.js b/lib/Loader/index.js deleted file mode 100644 index 655418e..0000000 --- a/lib/Loader/index.js +++ /dev/null @@ -1,37 +0,0 @@ -import React, { Component } from 'react'; -import { - View, -} from 'react-native'; -import PropTypes from 'prop-types' -import styles from './style'; -const Spinner = require('react-native-spinkit'); - -// we will change component later -export default class Loader extends Component { - static propTypes = { - style: PropTypes.oneOfType([PropTypes.number, PropTypes.array, PropTypes.object]), - isVisible: PropTypes.bool, - size: PropTypes.number, - color: PropTypes.string, - type: PropTypes.string, - children: PropTypes.oneOfType([PropTypes.object, PropTypes.array]), - } - - static defaultProps = { - isVisible: true, - size: 48, - type: 'Bounce', - color: '#ffffff', - } - - render() { - const { style, isVisible, size, type, color, children } = this.props; - return ( - - - {children} - - ); - } - -} diff --git a/lib/Loader/style.js b/lib/Loader/style.js deleted file mode 100644 index 579b163..0000000 --- a/lib/Loader/style.js +++ /dev/null @@ -1,15 +0,0 @@ -import { - StyleSheet, -} from 'react-native'; - -export default StyleSheet.create({ - container: { - position: 'absolute', - top: 0, - left: 0, - bottom: 0, - right: 0, - alignItems: 'center', - justifyContent: 'center', - }, -}); diff --git a/lib/index.ios.js b/lib/index.ios.js deleted file mode 100644 index 7fe7af2..0000000 --- a/lib/index.ios.js +++ /dev/null @@ -1,240 +0,0 @@ -import React, { Component } from 'react'; -import { - Modal, - View, - TouchableWithoutFeedback, - TouchableOpacity, - Text, - InteractionManager, -} from 'react-native'; -import PropTypes from 'prop-types' -import moment from 'moment'; -import { RNCamera } from 'react-native-camera'; -import Compress from 'react-native-compress'; -import RecordingButton from './RecordingButton'; -import Loader from './Loader'; -import styles, { buttonClose, durationText, renderClose, renderDone } from './style'; - -export default class VideoRecorder extends Component { - static propTypes = { - isOpen: PropTypes.bool, - runAfterInteractions: PropTypes.bool, - compressQuality: PropTypes.string, - convertingText: PropTypes.string, - cameraOptions: PropTypes.shape({}), - buttonCloseStyle: PropTypes.shape({}), - durationTextStyle: PropTypes.shape({}), - maxLength: PropTypes.number, - renderClose: PropTypes.func, - renderDone: PropTypes.func, - } - - static defaultProps = { - isOpen: false, - runAfterInteractions: true, - cameraOptions: {}, - compressQuality: 'medium', - convertingText: 'Converting video to MP4...', - buttonCloseStyle: buttonClose, - durationTextStyle: durationText, - maxLength: -1, - renderClose, - renderDone, - } - - constructor(...props) { - super(...props); - this.state = { - isOpen: this.props.isOpen, - loading: true, - time: 0, - recorded: false, - recordedData: null, - converting: false, - }; - } - - componentDidMount() { - const doPostMount = () => this.setState({ loading: false }); - if (this.props.runAfterInteractions) { - InteractionManager.runAfterInteractions(doPostMount); - } else { - doPostMount(); - } - } - - onSave = () => { - const { compressQuality } = this.props; - if (this.callback) { - this.setState({ converting: true }, () => { - Compress.compressVideo(this.state.recordedData.path, compressQuality).then((result) => { - console.log('New video path', result); - this.callback({ - path: result.path, - mime: 'video/mp4', - }); - this.close(); - }); - }); - } else this.close(); - } - - open = (callback) => { - this.callback = callback; - this.setState({ - isOpen: true, - isRecording: false, - time: 0, - recorded: false, - recordedData: null, - converting: false, - }); - } - - close = () => { - this.setState({ isOpen: false }); - } - - startCapture = () => { - const shouldStartCapture = () => { - this.camera.recordAsync() - .then((data) => { - console.log('video capture', data); - this.setState({ - recorded: true, - recordedData: data, - }); - }).catch(err => console.error(err)); - setTimeout(() => { - this.startTimer(); - this.setState({ - isRecording: true, - recorded: false, - recordedData: null, - time: 0, - }); - }); - }; - if ((this.props.maxLength > 0) || (this.props.maxLength < 0)) { - if (this.props.runAfterInteractions) { - InteractionManager.runAfterInteractions(shouldStartCapture); - } else { - shouldStartCapture(); - } - } - } - - stopCapture = () => { - const shouldStopCapture = () => { - this.stopTimer(); - this.camera.stopRecording(); - this.setState({ - isRecording: false, - }); - }; - if (this.props.runAfterInteractions) { - InteractionManager.runAfterInteractions(shouldStopCapture); - } else { - shouldStopCapture(); - } - } - - startTimer = () => { - this.timer = setInterval(() => { - const time = this.state.time + 1; - this.setState({ time }); - if (this.props.maxLength > 0 && time >= this.props.maxLength) { - this.stopCapture(); - } - }, 1000); - } - - stopTimer = () => { - if (this.timer) clearInterval(this.timer); - } - - convertTimeString = (time) => { - return moment().startOf('day').seconds(time).format('mm:ss'); - } - - renderTimer() { - const { isRecording, time, recorded } = this.state; - return ( - - { - (recorded || isRecording) && - - {this.convertTimeString(time)} - - } - - ); - } - - renderContent() { - const { isRecording, recorded } = this.state; - return ( - - {this.renderTimer()} - - - { - recorded && - - {this.props.renderDone()} - - } - - - ); - } - - renderCamera() { - return ( - { this.camera = cam; }} - style={styles.preview} - {...this.props.cameraOptions} - captureAudio - > - {this.renderContent()} - - ); - } - - renderLoader() { - if (this.state.converting) { - return ( - - {this.props.convertingText} - - ); - } - return null; - } - - render() { - const { loading, isOpen } = this.state; - if (loading) return ; - return ( - - - - - - - - {this.renderCamera()} - {this.renderLoader()} - - - {this.props.renderClose()} - - - - - ); - } -} diff --git a/lib/index.android.js b/lib/index.js similarity index 91% rename from lib/index.android.js rename to lib/index.js index 2833122..e8f3edf 100644 --- a/lib/index.android.js +++ b/lib/index.js @@ -18,9 +18,9 @@ export default class VideoRecorder extends Component { isOpen: PropTypes.bool, runAfterInteractions: PropTypes.bool, cameraOptions: PropTypes.shape({}), + recordOptions: PropTypes.shape({}), buttonCloseStyle: PropTypes.shape({}), durationTextStyle: PropTypes.shape({}), - maxLength: PropTypes.number, renderClose: PropTypes.func, renderDone: PropTypes.func, } @@ -29,9 +29,9 @@ export default class VideoRecorder extends Component { isOpen: false, runAfterInteractions: true, cameraOptions: {}, + recordOptions: {}, buttonCloseStyle: buttonClose, durationTextStyle: durationText, - maxLength: -1, renderClose, renderDone, } @@ -43,7 +43,7 @@ export default class VideoRecorder extends Component { loading: true, time: 0, recorded: false, - recordedData: null, + recordedData: null }; } @@ -57,18 +57,24 @@ export default class VideoRecorder extends Component { } onSave = () => { - if (this.callback) this.callback(this.state.recordedData); + if (this.callback) { + this.callback(this.state.recordedData); + } + this.close(); } - open = (callback) => { + open = (options, callback) => { this.callback = callback; this.setState({ + maxLength: -1, + ...options, isOpen: true, isRecording: false, time: 0, recorded: false, recordedData: null, + converting: false, }); } @@ -78,7 +84,7 @@ export default class VideoRecorder extends Component { startCapture = () => { const shouldStartCapture = () => { - this.camera.recordAsync() + this.camera.recordAsync(this.props.recordOptions) .then((data) => { console.log('video capture', data); this.setState({ @@ -96,7 +102,7 @@ export default class VideoRecorder extends Component { }); }); }; - if ((this.props.maxLength > 0) || (this.props.maxLength < 0)) { + if ((this.state.maxLength > 0) || (this.state.maxLength < 0)) { if (this.props.runAfterInteractions) { InteractionManager.runAfterInteractions(shouldStartCapture); } else { @@ -124,7 +130,7 @@ export default class VideoRecorder extends Component { this.timer = setInterval(() => { const time = this.state.time + 1; this.setState({ time }); - if (this.props.maxLength >= 0 && time >= this.props.maxLength) { + if (this.state.maxLength > 0 && time >= this.state.maxLength) { this.stopCapture(); } }, 1000); diff --git a/package.json b/package.json index 250c96c..65b5cf3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "react-native-beautiful-video-recorder", - "version": "1.2.0", + "version": "2.0.0", "description": "", "main": "./lib", "scripts": { @@ -19,14 +19,12 @@ ], "license": "MIT", "dependencies": { - "moment": "2.24.0", - "react-native-camera": "3.13.0", - "react-native-compress": "1.0.2", - "react-native-spinkit": "1.5.0", - "react-native-vector-icons": "6.6.0" + "moment": "2.24.0" }, "peerDependencies": { "react": "16.9.0", - "react-native": "0.61.5" + "react-native": "0.61.5", + "react-native-camera": "3.13.0", + "react-native-vector-icons": "6.6.0" } }