Reformat (#116)
* Reformat * Prettier: Print Width 140 * SwiftFormat: Disable `organizeDeclarations` * React Helpers -> React Utils * Use bundle exec for pods * Disable Hermes in Example * Create clean.sh * Update package.json * Re-generate lockfiles * Add bundle install step to bootstrap
This commit is contained in:
parent
67b72682b4
commit
7c33839e36
@ -6,5 +6,5 @@ module.exports = {
|
|||||||
semi: true,
|
semi: true,
|
||||||
tabWidth: 2,
|
tabWidth: 2,
|
||||||
useTabs: false,
|
useTabs: false,
|
||||||
printWidth: 150
|
printWidth: 140
|
||||||
};
|
};
|
||||||
|
@ -62,7 +62,10 @@ Navigation.events().registerNavigationButtonPressedListener((event) => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
Navigation.events().registerAppLaunchedListener(async () => {
|
Navigation.events().registerAppLaunchedListener(async () => {
|
||||||
const [cameraPermission, microphonePermission] = await Promise.all([Camera.getCameraPermissionStatus(), Camera.getMicrophonePermissionStatus()]);
|
const [cameraPermission, microphonePermission] = await Promise.all([
|
||||||
|
Camera.getCameraPermissionStatus(),
|
||||||
|
Camera.getMicrophonePermissionStatus(),
|
||||||
|
]);
|
||||||
let rootName = 'Splash';
|
let rootName = 'Splash';
|
||||||
if (cameraPermission === 'authorized' && microphonePermission === 'authorized') rootName = 'Home';
|
if (cameraPermission === 'authorized' && microphonePermission === 'authorized') rootName = 'Home';
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ target 'VisionCameraExample' do
|
|||||||
|
|
||||||
use_react_native!(
|
use_react_native!(
|
||||||
:path => config["reactNativePath"],
|
:path => config["reactNativePath"],
|
||||||
:hermes_enabled => true
|
:hermes_enabled => false
|
||||||
)
|
)
|
||||||
|
|
||||||
pod 'VisionCamera', :path => '../..'
|
pod 'VisionCamera', :path => '../..'
|
||||||
|
@ -10,7 +10,6 @@
|
|||||||
13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
|
13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
|
||||||
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
|
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
|
||||||
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
|
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
|
||||||
1418D3321C8725E6B5FC766C /* libPods-VisionCameraExample.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7C172C3576DFA1EFFC0357F8 /* libPods-VisionCameraExample.a */; };
|
|
||||||
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
|
81AB9BB82411601600AC10FF /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */; };
|
||||||
B8F0E10825E0199F00586F16 /* File.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8F0E10725E0199F00586F16 /* File.swift */; };
|
B8F0E10825E0199F00586F16 /* File.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8F0E10725E0199F00586F16 /* File.swift */; };
|
||||||
/* End PBXBuildFile section */
|
/* End PBXBuildFile section */
|
||||||
@ -23,12 +22,9 @@
|
|||||||
13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = VisionCameraExample/Images.xcassets; sourceTree = "<group>"; };
|
13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = VisionCameraExample/Images.xcassets; sourceTree = "<group>"; };
|
||||||
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = VisionCameraExample/Info.plist; sourceTree = "<group>"; };
|
13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = VisionCameraExample/Info.plist; sourceTree = "<group>"; };
|
||||||
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = VisionCameraExample/main.m; sourceTree = "<group>"; };
|
13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = VisionCameraExample/main.m; sourceTree = "<group>"; };
|
||||||
7C172C3576DFA1EFFC0357F8 /* libPods-VisionCameraExample.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-VisionCameraExample.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
||||||
81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = VisionCameraExample/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
81AB9BB72411601600AC10FF /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = LaunchScreen.storyboard; path = VisionCameraExample/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||||
B8F0E10625E0199F00586F16 /* VisionCameraExample-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "VisionCameraExample-Bridging-Header.h"; sourceTree = "<group>"; };
|
B8F0E10625E0199F00586F16 /* VisionCameraExample-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "VisionCameraExample-Bridging-Header.h"; sourceTree = "<group>"; };
|
||||||
B8F0E10725E0199F00586F16 /* File.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = File.swift; sourceTree = "<group>"; };
|
B8F0E10725E0199F00586F16 /* File.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = File.swift; sourceTree = "<group>"; };
|
||||||
D82DF6231A53E8DE9A87D6B0 /* Pods-VisionCameraExample.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-VisionCameraExample.debug.xcconfig"; path = "Target Support Files/Pods-VisionCameraExample/Pods-VisionCameraExample.debug.xcconfig"; sourceTree = "<group>"; };
|
|
||||||
EC2ABEB83E509E61726A8E69 /* Pods-VisionCameraExample.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-VisionCameraExample.release.xcconfig"; path = "Target Support Files/Pods-VisionCameraExample/Pods-VisionCameraExample.release.xcconfig"; sourceTree = "<group>"; };
|
|
||||||
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
|
ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
|
||||||
ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; };
|
ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; };
|
||||||
/* End PBXFileReference section */
|
/* End PBXFileReference section */
|
||||||
@ -38,7 +34,6 @@
|
|||||||
isa = PBXFrameworksBuildPhase;
|
isa = PBXFrameworksBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
files = (
|
files = (
|
||||||
1418D3321C8725E6B5FC766C /* libPods-VisionCameraExample.a in Frameworks */,
|
|
||||||
);
|
);
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
runOnlyForDeploymentPostprocessing = 0;
|
||||||
};
|
};
|
||||||
@ -66,7 +61,6 @@
|
|||||||
children = (
|
children = (
|
||||||
ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
|
ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
|
||||||
ED2971642150620600B7C4FE /* JavaScriptCore.framework */,
|
ED2971642150620600B7C4FE /* JavaScriptCore.framework */,
|
||||||
7C172C3576DFA1EFFC0357F8 /* libPods-VisionCameraExample.a */,
|
|
||||||
);
|
);
|
||||||
name = Frameworks;
|
name = Frameworks;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -74,8 +68,6 @@
|
|||||||
6B9684456A2045ADE5A6E47E /* Pods */ = {
|
6B9684456A2045ADE5A6E47E /* Pods */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
D82DF6231A53E8DE9A87D6B0 /* Pods-VisionCameraExample.debug.xcconfig */,
|
|
||||||
EC2ABEB83E509E61726A8E69 /* Pods-VisionCameraExample.release.xcconfig */,
|
|
||||||
);
|
);
|
||||||
path = Pods;
|
path = Pods;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -116,7 +108,6 @@
|
|||||||
isa = PBXNativeTarget;
|
isa = PBXNativeTarget;
|
||||||
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "VisionCameraExample" */;
|
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "VisionCameraExample" */;
|
||||||
buildPhases = (
|
buildPhases = (
|
||||||
8CCB88D3394D79DC3E33EBBD /* [CP] Check Pods Manifest.lock */,
|
|
||||||
B81F12712604CF8800B08949 /* SwiftFormat */,
|
B81F12712604CF8800B08949 /* SwiftFormat */,
|
||||||
B81F12702604CF6600B08949 /* SwiftLint */,
|
B81F12702604CF6600B08949 /* SwiftLint */,
|
||||||
FD10A7F022414F080027D42C /* Start Packager */,
|
FD10A7F022414F080027D42C /* Start Packager */,
|
||||||
@ -124,8 +115,6 @@
|
|||||||
13B07F8C1A680F5B00A75B9A /* Frameworks */,
|
13B07F8C1A680F5B00A75B9A /* Frameworks */,
|
||||||
13B07F8E1A680F5B00A75B9A /* Resources */,
|
13B07F8E1A680F5B00A75B9A /* Resources */,
|
||||||
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
|
00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
|
||||||
3F377A9A5593490EC3E1131F /* [CP] Embed Pods Frameworks */,
|
|
||||||
D6355D2C1A82AA568E4170C4 /* [CP] Copy Pods Resources */,
|
|
||||||
);
|
);
|
||||||
buildRules = (
|
buildRules = (
|
||||||
);
|
);
|
||||||
@ -195,48 +184,6 @@
|
|||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh";
|
shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh";
|
||||||
};
|
};
|
||||||
3F377A9A5593490EC3E1131F /* [CP] Embed Pods Frameworks */ = {
|
|
||||||
isa = PBXShellScriptBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
);
|
|
||||||
inputPaths = (
|
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-VisionCameraExample/Pods-VisionCameraExample-frameworks.sh",
|
|
||||||
"${PODS_ROOT}/hermes-engine/destroot/Library/Frameworks/iphoneos/hermes.framework",
|
|
||||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL/OpenSSL.framework/OpenSSL",
|
|
||||||
);
|
|
||||||
name = "[CP] Embed Pods Frameworks";
|
|
||||||
outputPaths = (
|
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
|
|
||||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework",
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
shellPath = /bin/sh;
|
|
||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-VisionCameraExample/Pods-VisionCameraExample-frameworks.sh\"\n";
|
|
||||||
showEnvVarsInLog = 0;
|
|
||||||
};
|
|
||||||
8CCB88D3394D79DC3E33EBBD /* [CP] Check Pods Manifest.lock */ = {
|
|
||||||
isa = PBXShellScriptBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
);
|
|
||||||
inputFileListPaths = (
|
|
||||||
);
|
|
||||||
inputPaths = (
|
|
||||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
|
||||||
"${PODS_ROOT}/Manifest.lock",
|
|
||||||
);
|
|
||||||
name = "[CP] Check Pods Manifest.lock";
|
|
||||||
outputFileListPaths = (
|
|
||||||
);
|
|
||||||
outputPaths = (
|
|
||||||
"$(DERIVED_FILE_DIR)/Pods-VisionCameraExample-checkManifestLockResult.txt",
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
shellPath = /bin/sh;
|
|
||||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
|
||||||
showEnvVarsInLog = 0;
|
|
||||||
};
|
|
||||||
B81F12702604CF6600B08949 /* SwiftLint */ = {
|
B81F12702604CF6600B08949 /* SwiftLint */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
@ -273,56 +220,6 @@
|
|||||||
shellPath = /bin/sh;
|
shellPath = /bin/sh;
|
||||||
shellScript = "if which swiftformat >/dev/null; then\n swiftformat .\nelse\n echo \"warning: SwiftFormat not installed, download from https://github.com/nicklockwood/SwiftFormat\"\nfi\n";
|
shellScript = "if which swiftformat >/dev/null; then\n swiftformat .\nelse\n echo \"warning: SwiftFormat not installed, download from https://github.com/nicklockwood/SwiftFormat\"\nfi\n";
|
||||||
};
|
};
|
||||||
D6355D2C1A82AA568E4170C4 /* [CP] Copy Pods Resources */ = {
|
|
||||||
isa = PBXShellScriptBuildPhase;
|
|
||||||
buildActionMask = 2147483647;
|
|
||||||
files = (
|
|
||||||
);
|
|
||||||
inputPaths = (
|
|
||||||
"${PODS_ROOT}/Target Support Files/Pods-VisionCameraExample/Pods-VisionCameraExample-resources.sh",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf",
|
|
||||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf",
|
|
||||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
|
|
||||||
);
|
|
||||||
name = "[CP] Copy Pods Resources";
|
|
||||||
outputPaths = (
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf",
|
|
||||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
|
|
||||||
);
|
|
||||||
runOnlyForDeploymentPostprocessing = 0;
|
|
||||||
shellPath = /bin/sh;
|
|
||||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-VisionCameraExample/Pods-VisionCameraExample-resources.sh\"\n";
|
|
||||||
showEnvVarsInLog = 0;
|
|
||||||
};
|
|
||||||
FD10A7F022414F080027D42C /* Start Packager */ = {
|
FD10A7F022414F080027D42C /* Start Packager */ = {
|
||||||
isa = PBXShellScriptBuildPhase;
|
isa = PBXShellScriptBuildPhase;
|
||||||
buildActionMask = 2147483647;
|
buildActionMask = 2147483647;
|
||||||
@ -360,7 +257,6 @@
|
|||||||
/* Begin XCBuildConfiguration section */
|
/* Begin XCBuildConfiguration section */
|
||||||
13B07F941A680F5B00A75B9A /* Debug */ = {
|
13B07F941A680F5B00A75B9A /* Debug */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = D82DF6231A53E8DE9A87D6B0 /* Pods-VisionCameraExample.debug.xcconfig */;
|
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
@ -385,7 +281,6 @@
|
|||||||
};
|
};
|
||||||
13B07F951A680F5B00A75B9A /* Release */ = {
|
13B07F951A680F5B00A75B9A /* Release */ = {
|
||||||
isa = XCBuildConfiguration;
|
isa = XCBuildConfiguration;
|
||||||
baseConfigurationReference = EC2ABEB83E509E61726A8E69 /* Pods-VisionCameraExample.release.xcconfig */;
|
|
||||||
buildSettings = {
|
buildSettings = {
|
||||||
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
||||||
CLANG_ENABLE_MODULES = YES;
|
CLANG_ENABLE_MODULES = YES;
|
||||||
|
@ -7,7 +7,8 @@
|
|||||||
"android": "react-native run-android",
|
"android": "react-native run-android",
|
||||||
"ios": "react-native run-ios",
|
"ios": "react-native run-ios",
|
||||||
"start": "react-native start",
|
"start": "react-native start",
|
||||||
"pods": "cd ios && pod install"
|
"setup": "cd ios && bundle install",
|
||||||
|
"pods": "cd ios && bundle exec pod install"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@react-native-community/blur": "^3.6.0",
|
"@react-native-community/blur": "^3.6.0",
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -5,8 +5,7 @@
|
|||||||
--disable andOperator
|
--disable andOperator
|
||||||
--disable redundantReturn
|
--disable redundantReturn
|
||||||
--disable wrapMultilineStatementBraces
|
--disable wrapMultilineStatementBraces
|
||||||
|
--disable organizeDeclarations
|
||||||
--enable organizeDeclarations
|
|
||||||
|
|
||||||
--enable markTypes
|
--enable markTypes
|
||||||
|
|
||||||
|
@ -6,8 +6,7 @@
|
|||||||
// Copyright © 2020 Facebook. All rights reserved.
|
// Copyright © 2020 Facebook. All rights reserved.
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CameraBridge_h
|
#pragma once
|
||||||
#define CameraBridge_h
|
|
||||||
|
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
#import <React/RCTViewManager.h>
|
#import <React/RCTViewManager.h>
|
||||||
@ -16,5 +15,3 @@
|
|||||||
@interface CameraBridge: RCTViewManager
|
@interface CameraBridge: RCTViewManager
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
#endif /* CameraBridge_h */
|
|
||||||
|
@ -14,8 +14,6 @@ enum PermissionError: String {
|
|||||||
case microphone = "microphone-permission-denied"
|
case microphone = "microphone-permission-denied"
|
||||||
case camera = "camera-permission-denied"
|
case camera = "camera-permission-denied"
|
||||||
|
|
||||||
// MARK: Internal
|
|
||||||
|
|
||||||
var code: String {
|
var code: String {
|
||||||
return rawValue
|
return rawValue
|
||||||
}
|
}
|
||||||
@ -39,8 +37,6 @@ enum ParameterError {
|
|||||||
case unsupportedInput(inputDescriptor: String)
|
case unsupportedInput(inputDescriptor: String)
|
||||||
case invalidCombination(provided: String, missing: String)
|
case invalidCombination(provided: String, missing: String)
|
||||||
|
|
||||||
// MARK: Internal
|
|
||||||
|
|
||||||
var code: String {
|
var code: String {
|
||||||
switch self {
|
switch self {
|
||||||
case .invalid:
|
case .invalid:
|
||||||
@ -84,8 +80,6 @@ enum DeviceError: String {
|
|||||||
case focusNotSupported = "focus-not-supported"
|
case focusNotSupported = "focus-not-supported"
|
||||||
case notAvailableOnSimulator = "camera-not-available-on-simulator"
|
case notAvailableOnSimulator = "camera-not-available-on-simulator"
|
||||||
|
|
||||||
// MARK: Internal
|
|
||||||
|
|
||||||
var code: String {
|
var code: String {
|
||||||
return rawValue
|
return rawValue
|
||||||
}
|
}
|
||||||
@ -120,8 +114,6 @@ enum FormatError {
|
|||||||
case invalidFormat
|
case invalidFormat
|
||||||
case invalidPreset(preset: String)
|
case invalidPreset(preset: String)
|
||||||
|
|
||||||
// MARK: Internal
|
|
||||||
|
|
||||||
var code: String {
|
var code: String {
|
||||||
switch self {
|
switch self {
|
||||||
case .invalidFormat:
|
case .invalidFormat:
|
||||||
@ -156,8 +148,6 @@ enum SessionError {
|
|||||||
case audioSessionSetupFailed(reason: String)
|
case audioSessionSetupFailed(reason: String)
|
||||||
case audioInUseByOtherApp
|
case audioInUseByOtherApp
|
||||||
|
|
||||||
// MARK: Internal
|
|
||||||
|
|
||||||
var code: String {
|
var code: String {
|
||||||
switch self {
|
switch self {
|
||||||
case .cameraNotReady:
|
case .cameraNotReady:
|
||||||
@ -192,8 +182,6 @@ enum CaptureError {
|
|||||||
case invalidPhotoCodec
|
case invalidPhotoCodec
|
||||||
case unknown(message: String? = nil)
|
case unknown(message: String? = nil)
|
||||||
|
|
||||||
// MARK: Internal
|
|
||||||
|
|
||||||
var code: String {
|
var code: String {
|
||||||
switch self {
|
switch self {
|
||||||
case .invalidPhotoFormat:
|
case .invalidPhotoFormat:
|
||||||
@ -238,8 +226,6 @@ enum CaptureError {
|
|||||||
enum SystemError: String {
|
enum SystemError: String {
|
||||||
case noManager = "no-camera-manager"
|
case noManager = "no-camera-manager"
|
||||||
|
|
||||||
// MARK: Internal
|
|
||||||
|
|
||||||
var code: String {
|
var code: String {
|
||||||
return rawValue
|
return rawValue
|
||||||
}
|
}
|
||||||
@ -264,8 +250,6 @@ enum CameraError: Error {
|
|||||||
case system(_ id: SystemError)
|
case system(_ id: SystemError)
|
||||||
case unknown(message: String? = nil)
|
case unknown(message: String? = nil)
|
||||||
|
|
||||||
// MARK: Internal
|
|
||||||
|
|
||||||
var code: String {
|
var code: String {
|
||||||
switch self {
|
switch self {
|
||||||
case let .permission(id: id):
|
case let .permission(id: id):
|
||||||
|
@ -11,8 +11,6 @@ import AVFoundation
|
|||||||
// MARK: - TakePhotoOptions
|
// MARK: - TakePhotoOptions
|
||||||
|
|
||||||
struct TakePhotoOptions {
|
struct TakePhotoOptions {
|
||||||
// MARK: Lifecycle
|
|
||||||
|
|
||||||
init(fromDictionary dictionary: NSDictionary) {
|
init(fromDictionary dictionary: NSDictionary) {
|
||||||
if let videoCodec = dictionary.value(forKey: "videoCodec") as? String {
|
if let videoCodec = dictionary.value(forKey: "videoCodec") as? String {
|
||||||
self.videoCodec = AVVideoCodecType(withString: videoCodec)
|
self.videoCodec = AVVideoCodecType(withString: videoCodec)
|
||||||
@ -20,8 +18,6 @@ struct TakePhotoOptions {
|
|||||||
qualityPrioritization = dictionary.value(forKey: "qualityPrioritization") as? String
|
qualityPrioritization = dictionary.value(forKey: "qualityPrioritization") as? String
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: Internal
|
|
||||||
|
|
||||||
var videoCodec: AVVideoCodecType?
|
var videoCodec: AVVideoCodecType?
|
||||||
var qualityPrioritization: String?
|
var qualityPrioritization: String?
|
||||||
}
|
}
|
||||||
|
@ -32,11 +32,77 @@ private let propsThatRequireDeviceReconfiguration = ["fps",
|
|||||||
|
|
||||||
// MARK: - CameraView
|
// MARK: - CameraView
|
||||||
|
|
||||||
final class CameraView: UIView {
|
public final class CameraView: UIView {
|
||||||
// MARK: Lifecycle
|
// pragma MARK: React Properties
|
||||||
|
|
||||||
|
// props that require reconfiguring
|
||||||
|
@objc var cameraId: NSString?
|
||||||
|
@objc var enableDepthData = false
|
||||||
|
@objc var enableHighResolutionCapture: NSNumber? // nullable bool
|
||||||
|
@objc var enablePortraitEffectsMatteDelivery = false
|
||||||
|
@objc var preset: String?
|
||||||
|
// props that require format reconfiguring
|
||||||
|
@objc var format: NSDictionary?
|
||||||
|
@objc var fps: NSNumber?
|
||||||
|
@objc var hdr: NSNumber? // nullable bool
|
||||||
|
@objc var lowLightBoost: NSNumber? // nullable bool
|
||||||
|
@objc var colorSpace: NSString?
|
||||||
|
// other props
|
||||||
|
@objc var isActive = false
|
||||||
|
@objc var torch = "off"
|
||||||
|
@objc var zoom: NSNumber = 0.0 // in percent
|
||||||
|
// events
|
||||||
|
@objc var onInitialized: RCTDirectEventBlock?
|
||||||
|
@objc var onError: RCTDirectEventBlock?
|
||||||
|
// zoom
|
||||||
|
@objc var enableZoomGesture = false {
|
||||||
|
didSet {
|
||||||
|
if enableZoomGesture {
|
||||||
|
addPinchGestureRecognizer()
|
||||||
|
} else {
|
||||||
|
removePinchGestureRecognizer()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// pragma MARK: Internal Properties
|
||||||
|
|
||||||
|
internal var isReady = false
|
||||||
|
/// The serial execution queue for the camera preview layer (input stream) as well as output processing (take photo and record video)
|
||||||
|
internal let queue = DispatchQueue(label: "com.mrousavy.camera-queue", qos: .userInteractive, attributes: [], autoreleaseFrequency: .inherit, target: nil)
|
||||||
|
// Capture Session
|
||||||
|
internal let captureSession = AVCaptureSession()
|
||||||
|
// Inputs
|
||||||
|
internal var videoDeviceInput: AVCaptureDeviceInput?
|
||||||
|
internal var audioDeviceInput: AVCaptureDeviceInput?
|
||||||
|
// Outputs
|
||||||
|
internal var photoOutput: AVCapturePhotoOutput?
|
||||||
|
internal var movieOutput: AVCaptureMovieFileOutput?
|
||||||
|
// CameraView+TakePhoto
|
||||||
|
internal var photoCaptureDelegates: [PhotoCaptureDelegate] = []
|
||||||
|
// CameraView+RecordVideo
|
||||||
|
internal var recordingDelegateResolver: RCTPromiseResolveBlock?
|
||||||
|
internal var recordingDelegateRejecter: RCTPromiseRejectBlock?
|
||||||
|
// CameraView+Zoom
|
||||||
|
internal var pinchGestureRecognizer: UIPinchGestureRecognizer?
|
||||||
|
internal var pinchScaleOffset: CGFloat = 1.0
|
||||||
|
|
||||||
|
var isRunning: Bool {
|
||||||
|
return captureSession.isRunning
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Convenience wrapper to get layer as its statically known type.
|
||||||
|
var videoPreviewLayer: AVCaptureVideoPreviewLayer {
|
||||||
|
// swiftlint:disable force_cast
|
||||||
|
return layer as! AVCaptureVideoPreviewLayer
|
||||||
|
}
|
||||||
|
|
||||||
|
override public class var layerClass: AnyClass {
|
||||||
|
return AVCaptureVideoPreviewLayer.self
|
||||||
|
}
|
||||||
|
|
||||||
// pragma MARK: Setup
|
// pragma MARK: Setup
|
||||||
override init(frame: CGRect) {
|
override public init(frame: CGRect) {
|
||||||
super.init(frame: frame)
|
super.init(frame: frame)
|
||||||
videoPreviewLayer.session = captureSession
|
videoPreviewLayer.session = captureSession
|
||||||
videoPreviewLayer.videoGravity = .resizeAspectFill
|
videoPreviewLayer.videoGravity = .resizeAspectFill
|
||||||
@ -80,82 +146,14 @@ final class CameraView: UIView {
|
|||||||
fatalError("init(coder:) is not implemented.")
|
fatalError("init(coder:) is not implemented.")
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: Internal
|
override public func removeFromSuperview() {
|
||||||
|
|
||||||
override class var layerClass: AnyClass {
|
|
||||||
return AVCaptureVideoPreviewLayer.self
|
|
||||||
}
|
|
||||||
|
|
||||||
// pragma MARK: Exported Properties
|
|
||||||
// props that require reconfiguring
|
|
||||||
@objc var cameraId: NSString?
|
|
||||||
@objc var enableDepthData = false
|
|
||||||
@objc var enableHighResolutionCapture: NSNumber? // nullable bool
|
|
||||||
@objc var enablePortraitEffectsMatteDelivery = false
|
|
||||||
@objc var preset: String?
|
|
||||||
// props that require format reconfiguring
|
|
||||||
@objc var format: NSDictionary?
|
|
||||||
@objc var fps: NSNumber?
|
|
||||||
@objc var hdr: NSNumber? // nullable bool
|
|
||||||
@objc var lowLightBoost: NSNumber? // nullable bool
|
|
||||||
@objc var colorSpace: NSString?
|
|
||||||
// other props
|
|
||||||
@objc var isActive = false
|
|
||||||
@objc var torch = "off"
|
|
||||||
@objc var zoom: NSNumber = 0.0 // in percent
|
|
||||||
// events
|
|
||||||
@objc var onInitialized: RCTDirectEventBlock?
|
|
||||||
@objc var onError: RCTDirectEventBlock?
|
|
||||||
|
|
||||||
// pragma MARK: Private Properties
|
|
||||||
internal var isReady = false
|
|
||||||
/// The serial execution queue for the camera preview layer (input stream) as well as output processing (take photo and record video)
|
|
||||||
internal let queue = DispatchQueue(label: "com.mrousavy.camera-queue", qos: .userInteractive, attributes: [], autoreleaseFrequency: .inherit, target: nil)
|
|
||||||
// Capture Session
|
|
||||||
internal let captureSession = AVCaptureSession()
|
|
||||||
// Inputs
|
|
||||||
internal var videoDeviceInput: AVCaptureDeviceInput?
|
|
||||||
internal var audioDeviceInput: AVCaptureDeviceInput?
|
|
||||||
// Outputs
|
|
||||||
internal var photoOutput: AVCapturePhotoOutput?
|
|
||||||
internal var movieOutput: AVCaptureMovieFileOutput?
|
|
||||||
// CameraView+TakePhoto
|
|
||||||
internal var photoCaptureDelegates: [PhotoCaptureDelegate] = []
|
|
||||||
// CameraView+RecordVideo
|
|
||||||
internal var recordingDelegateResolver: RCTPromiseResolveBlock?
|
|
||||||
internal var recordingDelegateRejecter: RCTPromiseRejectBlock?
|
|
||||||
// CameraView+Zoom
|
|
||||||
internal var pinchGestureRecognizer: UIPinchGestureRecognizer?
|
|
||||||
internal var pinchScaleOffset: CGFloat = 1.0
|
|
||||||
|
|
||||||
@objc var enableZoomGesture = false {
|
|
||||||
didSet {
|
|
||||||
if enableZoomGesture {
|
|
||||||
addPinchGestureRecognizer()
|
|
||||||
} else {
|
|
||||||
removePinchGestureRecognizer()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var isRunning: Bool {
|
|
||||||
return captureSession.isRunning
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Convenience wrapper to get layer as its statically known type.
|
|
||||||
var videoPreviewLayer: AVCaptureVideoPreviewLayer {
|
|
||||||
// swiftlint:disable force_cast
|
|
||||||
return layer as! AVCaptureVideoPreviewLayer
|
|
||||||
}
|
|
||||||
|
|
||||||
override func removeFromSuperview() {
|
|
||||||
ReactLogger.log(level: .info, message: "Removing Camera View...")
|
ReactLogger.log(level: .info, message: "Removing Camera View...")
|
||||||
captureSession.stopRunning()
|
captureSession.stopRunning()
|
||||||
super.removeFromSuperview()
|
super.removeFromSuperview()
|
||||||
}
|
}
|
||||||
|
|
||||||
// pragma MARK: Props updating
|
// pragma MARK: Props updating
|
||||||
override final func didSetProps(_ changedProps: [String]!) {
|
override public final func didSetProps(_ changedProps: [String]!) {
|
||||||
ReactLogger.log(level: .info, message: "Updating \(changedProps.count) prop(s)...")
|
ReactLogger.log(level: .info, message: "Updating \(changedProps.count) prop(s)...")
|
||||||
let shouldReconfigure = changedProps.contains { propsThatRequireReconfiguration.contains($0) }
|
let shouldReconfigure = changedProps.contains { propsThatRequireReconfiguration.contains($0) }
|
||||||
let shouldReconfigureFormat = shouldReconfigure || changedProps.contains("format")
|
let shouldReconfigureFormat = shouldReconfigure || changedProps.contains("format")
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
// Copyright © 2020 Facebook. All rights reserved.
|
// Copyright © 2020 Facebook. All rights reserved.
|
||||||
//
|
//
|
||||||
|
|
||||||
#import "CameraBridge.h"
|
#import <Foundation/Foundation.h>
|
||||||
#import <React/RCTViewManager.h>
|
#import <React/RCTViewManager.h>
|
||||||
|
|
||||||
@interface RCT_EXTERN_REMAP_MODULE(CameraView, CameraViewManager, RCTViewManager)
|
@interface RCT_EXTERN_REMAP_MODULE(CameraView, CameraViewManager, RCTViewManager)
|
||||||
|
@ -11,8 +11,6 @@ import Foundation
|
|||||||
|
|
||||||
@objc(CameraViewManager)
|
@objc(CameraViewManager)
|
||||||
final class CameraViewManager: RCTViewManager {
|
final class CameraViewManager: RCTViewManager {
|
||||||
// MARK: Internal
|
|
||||||
|
|
||||||
override var methodQueue: DispatchQueue! {
|
override var methodQueue: DispatchQueue! {
|
||||||
return DispatchQueue.main
|
return DispatchQueue.main
|
||||||
}
|
}
|
||||||
|
@ -13,16 +13,12 @@ private var delegatesReferences: [NSObject] = []
|
|||||||
// MARK: - PhotoCaptureDelegate
|
// MARK: - PhotoCaptureDelegate
|
||||||
|
|
||||||
class PhotoCaptureDelegate: NSObject, AVCapturePhotoCaptureDelegate {
|
class PhotoCaptureDelegate: NSObject, AVCapturePhotoCaptureDelegate {
|
||||||
// MARK: Lifecycle
|
|
||||||
|
|
||||||
required init(promise: Promise) {
|
required init(promise: Promise) {
|
||||||
self.promise = promise
|
self.promise = promise
|
||||||
super.init()
|
super.init()
|
||||||
delegatesReferences.append(self)
|
delegatesReferences.append(self)
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: Internal
|
|
||||||
|
|
||||||
func photoOutput(_: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) {
|
func photoOutput(_: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: Error?) {
|
||||||
defer {
|
defer {
|
||||||
delegatesReferences.removeAll(where: { $0 == self })
|
delegatesReferences.removeAll(where: { $0 == self })
|
||||||
|
@ -14,15 +14,11 @@ import Foundation
|
|||||||
* Represents a JavaScript Promise instance. `reject()` and `resolve()` should only be called once.
|
* Represents a JavaScript Promise instance. `reject()` and `resolve()` should only be called once.
|
||||||
*/
|
*/
|
||||||
class Promise {
|
class Promise {
|
||||||
// MARK: Lifecycle
|
|
||||||
|
|
||||||
init(resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
|
init(resolver: @escaping RCTPromiseResolveBlock, rejecter: @escaping RCTPromiseRejectBlock) {
|
||||||
self.resolver = resolver
|
self.resolver = resolver
|
||||||
self.rejecter = rejecter
|
self.rejecter = rejecter
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: Internal
|
|
||||||
|
|
||||||
func reject(error: CameraError, cause: NSError?) {
|
func reject(error: CameraError, cause: NSError?) {
|
||||||
rejecter(error.code, error.message, cause)
|
rejecter(error.code, error.message, cause)
|
||||||
}
|
}
|
@ -17,8 +17,6 @@ private var delegateReferences: [NSObject] = []
|
|||||||
// MARK: - RecordingDelegateWithCallback
|
// MARK: - RecordingDelegateWithCallback
|
||||||
|
|
||||||
class RecordingDelegateWithCallback: NSObject, AVCaptureFileOutputRecordingDelegate {
|
class RecordingDelegateWithCallback: NSObject, AVCaptureFileOutputRecordingDelegate {
|
||||||
// MARK: Lifecycle
|
|
||||||
|
|
||||||
init(callback: @escaping RCTResponseSenderBlock, resetTorchMode: @escaping () -> Void) {
|
init(callback: @escaping RCTResponseSenderBlock, resetTorchMode: @escaping () -> Void) {
|
||||||
self.callback = callback
|
self.callback = callback
|
||||||
self.resetTorchMode = resetTorchMode
|
self.resetTorchMode = resetTorchMode
|
||||||
@ -26,8 +24,6 @@ class RecordingDelegateWithCallback: NSObject, AVCaptureFileOutputRecordingDeleg
|
|||||||
delegateReferences.append(self)
|
delegateReferences.append(self)
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: Internal
|
|
||||||
|
|
||||||
func fileOutput(_ output: AVCaptureFileOutput, didFinishRecordingTo outputFileURL: URL, from _: [AVCaptureConnection], error: Error?) {
|
func fileOutput(_ output: AVCaptureFileOutput, didFinishRecordingTo outputFileURL: URL, from _: [AVCaptureConnection], error: Error?) {
|
||||||
defer {
|
defer {
|
||||||
self.resetTorchMode()
|
self.resetTorchMode()
|
||||||
|
@ -138,7 +138,7 @@
|
|||||||
B887516125E0102000DB86D6 /* Extensions */,
|
B887516125E0102000DB86D6 /* Extensions */,
|
||||||
B887517225E0102000DB86D6 /* Parsers */,
|
B887517225E0102000DB86D6 /* Parsers */,
|
||||||
B887515C25E0102000DB86D6 /* PhotoCaptureDelegate.swift */,
|
B887515C25E0102000DB86D6 /* PhotoCaptureDelegate.swift */,
|
||||||
B887516D25E0102000DB86D6 /* React Helpers */,
|
B887516D25E0102000DB86D6 /* React Utils */,
|
||||||
B887516025E0102000DB86D6 /* VideoCaptureDelegate.swift */,
|
B887516025E0102000DB86D6 /* VideoCaptureDelegate.swift */,
|
||||||
134814211AA4EA7D00B7C361 /* Products */,
|
134814211AA4EA7D00B7C361 /* Products */,
|
||||||
);
|
);
|
||||||
@ -162,14 +162,14 @@
|
|||||||
path = Extensions;
|
path = Extensions;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
B887516D25E0102000DB86D6 /* React Helpers */ = {
|
B887516D25E0102000DB86D6 /* React Utils */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
B887516E25E0102000DB86D6 /* MakeReactError.swift */,
|
B887516E25E0102000DB86D6 /* MakeReactError.swift */,
|
||||||
B887516F25E0102000DB86D6 /* ReactLogger.swift */,
|
B887516F25E0102000DB86D6 /* ReactLogger.swift */,
|
||||||
B887517025E0102000DB86D6 /* Promise.swift */,
|
B887517025E0102000DB86D6 /* Promise.swift */,
|
||||||
);
|
);
|
||||||
path = "React Helpers";
|
path = "React Utils";
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
B887517225E0102000DB86D6 /* Parsers */ = {
|
B887517225E0102000DB86D6 /* Parsers */ = {
|
||||||
|
@ -34,10 +34,11 @@
|
|||||||
"release": "release-it",
|
"release": "release-it",
|
||||||
"example": "yarn --cwd example",
|
"example": "yarn --cwd example",
|
||||||
"pods": "cd example && pod-install --quiet",
|
"pods": "cd example && pod-install --quiet",
|
||||||
"bootstrap": "yarn example && yarn && yarn pods",
|
"bootstrap": "yarn example && yarn && yarn setup && yarn pods",
|
||||||
"check-android": "scripts/ktlint.sh",
|
"check-android": "scripts/ktlint.sh",
|
||||||
"check-ios": "scripts/swiftformat.sh && scripts/swiftlint.sh",
|
"check-ios": "scripts/swiftformat.sh && scripts/swiftlint.sh",
|
||||||
"check-all": "scripts/check-all.sh",
|
"check-all": "scripts/check-all.sh",
|
||||||
|
"clean": "scripts/clean.sh",
|
||||||
"docs": "cd docs && yarn build"
|
"docs": "cd docs && yarn build"
|
||||||
},
|
},
|
||||||
"keywords": [
|
"keywords": [
|
||||||
|
51
scripts/clean.sh
Executable file
51
scripts/clean.sh
Executable file
@ -0,0 +1,51 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
cd ..
|
||||||
|
echo "Running clean script in $PWD"
|
||||||
|
|
||||||
|
echo "rm -rf node_modules"
|
||||||
|
rm -rf node_modules
|
||||||
|
echo "rm -rf yarn.lock"
|
||||||
|
rm -rf yarn.lock
|
||||||
|
rm -rf package-lock.json
|
||||||
|
|
||||||
|
echo "cd example"
|
||||||
|
cd example
|
||||||
|
|
||||||
|
echo "rm -rf node_modules"
|
||||||
|
rm -rf node_modules
|
||||||
|
echo "rm -rf yarn.lock"
|
||||||
|
rm -rf yarn.lock
|
||||||
|
rm -rf package-lock.json
|
||||||
|
|
||||||
|
echo "rm -rf ~/Library/Caches/CocoaPods"
|
||||||
|
rm -rf ~/Library/Caches/CocoaPods
|
||||||
|
echo "rm -rf ios/Pods"
|
||||||
|
rm -rf ios/Pods
|
||||||
|
echo "rm -rf ios/Podfile.lock"
|
||||||
|
rm -rf ios/Podfile.lock
|
||||||
|
echo "rm -rf ~/Library/Developer/Xcode/DerivedData/*"
|
||||||
|
rm -rf ~/Library/Developer/Xcode/DerivedData/*
|
||||||
|
|
||||||
|
cd ios
|
||||||
|
echo "pod deintegrate"
|
||||||
|
pod deintegrate
|
||||||
|
echo "bundle clean"
|
||||||
|
bundle clean --force
|
||||||
|
|
||||||
|
cd ../..
|
||||||
|
echo "yarn in $PWD"
|
||||||
|
yarn
|
||||||
|
|
||||||
|
cd example
|
||||||
|
echo "yarn in $PWD"
|
||||||
|
yarn
|
||||||
|
|
||||||
|
cd ios
|
||||||
|
echo "bundle install"
|
||||||
|
bundle install
|
||||||
|
echo "pod setup"
|
||||||
|
bundle exec pod setup
|
||||||
|
echo "pod install"
|
||||||
|
bundle exec pod install
|
@ -22,7 +22,9 @@ export type LogicalCameraDeviceType = 'dual-camera' | 'dual-wide-camera' | 'trip
|
|||||||
* Parses an array of physical device types into a single {@linkcode PhysicalCameraDeviceType} or {@linkcode LogicalCameraDeviceType}, depending what matches.
|
* Parses an array of physical device types into a single {@linkcode PhysicalCameraDeviceType} or {@linkcode LogicalCameraDeviceType}, depending what matches.
|
||||||
* @method
|
* @method
|
||||||
*/
|
*/
|
||||||
export const parsePhysicalDeviceTypes = (physicalDeviceTypes: PhysicalCameraDeviceType[]): PhysicalCameraDeviceType | LogicalCameraDeviceType => {
|
export const parsePhysicalDeviceTypes = (
|
||||||
|
physicalDeviceTypes: PhysicalCameraDeviceType[],
|
||||||
|
): PhysicalCameraDeviceType | LogicalCameraDeviceType => {
|
||||||
if (physicalDeviceTypes.length === 1) {
|
if (physicalDeviceTypes.length === 1) {
|
||||||
// @ts-expect-error for very obvious reasons
|
// @ts-expect-error for very obvious reasons
|
||||||
return physicalDeviceTypes[0];
|
return physicalDeviceTypes[0];
|
||||||
|
@ -84,7 +84,15 @@ export interface ErrorWithCause {
|
|||||||
cause?: ErrorWithCause;
|
cause?: ErrorWithCause;
|
||||||
}
|
}
|
||||||
|
|
||||||
type CameraErrorCode = PermissionError | ParameterError | DeviceError | FormatError | SessionError | CaptureError | SystemError | UnknownError;
|
type CameraErrorCode =
|
||||||
|
| PermissionError
|
||||||
|
| ParameterError
|
||||||
|
| DeviceError
|
||||||
|
| FormatError
|
||||||
|
| SessionError
|
||||||
|
| CaptureError
|
||||||
|
| SystemError
|
||||||
|
| UnknownError;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents any kind of error that occured in the {@linkcode Camera} View Module.
|
* Represents any kind of error that occured in the {@linkcode Camera} View Module.
|
||||||
|
Loading…
Reference in New Issue
Block a user