forked from expo/expo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Camera.js.map
1 lines (1 loc) · 16.9 KB
/
Camera.js.map
1
{"version":3,"file":"Camera.js","sourceRoot":"","sources":["../src/Camera.tsx"],"names":[],"mappings":"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","sourcesContent":["import { UnavailabilityError } from '@unimodules/core';\nimport mapValues from 'lodash/mapValues';\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport { findNodeHandle, Platform, ViewPropTypes } from 'react-native';\n\nimport {\n CapturedPicture,\n NativeProps,\n PictureOptions,\n Props,\n RecordingOptions,\n PermissionResponse,\n} from './Camera.types';\nimport ExponentCamera from './ExponentCamera';\nimport _CameraManager from './ExponentCameraManager';\n\n// TODO: Bacon: Fix multiplatform\nconst CameraManager = _CameraManager as any;\n\nconst EventThrottleMs = 500;\n\nconst _PICTURE_SAVED_CALLBACKS = {};\n\nlet _GLOBAL_PICTURE_ID = 1;\n\nfunction ensurePictureOptions(options?: PictureOptions): PictureOptions {\n let pictureOptions = options || {};\n\n if (!pictureOptions || typeof pictureOptions !== 'object') {\n pictureOptions = {};\n }\n\n if (!pictureOptions.quality) {\n pictureOptions.quality = 1;\n }\n if (pictureOptions.onPictureSaved) {\n const id = _GLOBAL_PICTURE_ID++;\n _PICTURE_SAVED_CALLBACKS[id] = pictureOptions.onPictureSaved;\n pictureOptions.id = id;\n pictureOptions.fastMode = true;\n }\n return pictureOptions;\n}\n\nfunction ensureRecordingOptions(options?: RecordingOptions): RecordingOptions {\n let recordingOptions = options || {};\n\n if (!recordingOptions || typeof recordingOptions !== 'object') {\n recordingOptions = {};\n } else if (typeof recordingOptions.quality === 'string') {\n recordingOptions.quality = Camera.Constants.VideoQuality[recordingOptions.quality];\n }\n\n return recordingOptions;\n}\n\nfunction ensureNativeProps(options?: Props): NativeProps {\n let props = options || {};\n\n if (!props || typeof props !== 'object') {\n props = {};\n }\n\n const newProps: NativeProps = mapValues(props, convertProp);\n\n const propsKeys = Object.keys(newProps);\n // barCodeTypes is deprecated\n if (!propsKeys.includes('barCodeScannerSettings') && propsKeys.includes('barCodeTypes')) {\n console.warn(\n `The \"barCodeTypes\" prop for Camera is deprecated and will be removed in SDK 34. Use \"barCodeScannerSettings\" instead.`\n );\n newProps.barCodeScannerSettings = {\n // @ts-ignore\n barCodeTypes: newProps.barCodeTypes,\n };\n }\n\n if (props.onBarCodeScanned) {\n newProps.barCodeScannerEnabled = true;\n }\n\n if (props.onFacesDetected) {\n newProps.faceDetectorEnabled = true;\n }\n\n if (Platform.OS !== 'android') {\n delete newProps.ratio;\n delete newProps.useCamera2Api;\n }\n\n return newProps;\n}\n\nfunction convertProp(value: any, key: string): any {\n if (typeof value === 'string' && Camera.ConversionTables[key]) {\n return Camera.ConversionTables[key][value];\n }\n\n return value;\n}\n\nfunction _onPictureSaved({ nativeEvent }: { nativeEvent: { data: CapturedPicture; id: number } }) {\n const { id, data } = nativeEvent;\n const callback = _PICTURE_SAVED_CALLBACKS[id];\n if (callback) {\n callback(data);\n delete _PICTURE_SAVED_CALLBACKS[id];\n }\n}\n\nexport default class Camera extends React.Component<Props> {\n static async isAvailableAsync(): Promise<boolean> {\n if (!CameraManager.isAvailableAsync) {\n throw new UnavailabilityError('expo-camera', 'isAvailableAsync');\n }\n\n return await CameraManager.isAvailableAsync();\n }\n\n static async getAvailableCameraTypesAsync(): Promise<('front' | 'back')[]> {\n if (!CameraManager.getAvailableCameraTypesAsync) {\n throw new UnavailabilityError('expo-camera', 'getAvailableCameraTypesAsync');\n }\n\n return await CameraManager.getAvailableCameraTypesAsync();\n }\n\n static Constants = {\n Type: CameraManager.Type,\n FlashMode: CameraManager.FlashMode,\n AutoFocus: CameraManager.AutoFocus,\n WhiteBalance: CameraManager.WhiteBalance,\n VideoQuality: CameraManager.VideoQuality,\n VideoStabilization: CameraManager.VideoStabilization || {},\n };\n\n // Values under keys from this object will be transformed to native options\n static ConversionTables = {\n type: CameraManager.Type,\n flashMode: CameraManager.FlashMode,\n autoFocus: CameraManager.AutoFocus,\n whiteBalance: CameraManager.WhiteBalance,\n };\n\n static propTypes = {\n ...ViewPropTypes,\n zoom: PropTypes.number,\n ratio: PropTypes.string,\n focusDepth: PropTypes.number,\n onMountError: PropTypes.func,\n pictureSize: PropTypes.string,\n onCameraReady: PropTypes.func,\n useCamera2Api: PropTypes.bool,\n onBarCodeScanned: PropTypes.func,\n barCodeScannerSettings: PropTypes.object,\n onFacesDetected: PropTypes.func,\n faceDetectorSettings: PropTypes.object,\n type: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n flashMode: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n videoStabilizationMode: PropTypes.number,\n whiteBalance: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n autoFocus: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool]),\n };\n\n static defaultProps: Props = {\n zoom: 0,\n ratio: '4:3',\n focusDepth: 0,\n faceDetectorSettings: {},\n type: CameraManager.Type.back,\n autoFocus: CameraManager.AutoFocus.on,\n flashMode: CameraManager.FlashMode.off,\n whiteBalance: CameraManager.WhiteBalance.auto,\n };\n\n static async getPermissionsAsync(): Promise<PermissionResponse> {\n return CameraManager.getPermissionsAsync();\n }\n\n static async requestPermissionsAsync(): Promise<PermissionResponse> {\n return CameraManager.requestPermissionsAsync();\n }\n\n _cameraHandle?: number | null;\n _cameraRef?: React.Component | null;\n _lastEvents: { [eventName: string]: string } = {};\n _lastEventsTimes: { [eventName: string]: Date } = {};\n\n async takePictureAsync(options?: PictureOptions): Promise<CapturedPicture> {\n const pictureOptions = ensurePictureOptions(options);\n\n return await CameraManager.takePicture(pictureOptions, this._cameraHandle);\n }\n\n async getSupportedRatiosAsync(): Promise<string[]> {\n if (!CameraManager.getSupportedRatios) {\n throw new UnavailabilityError('Camera', 'getSupportedRatiosAsync');\n }\n\n return await CameraManager.getSupportedRatios(this._cameraHandle);\n }\n\n async getAvailablePictureSizesAsync(ratio?: string): Promise<string[]> {\n if (!CameraManager.getAvailablePictureSizes) {\n throw new UnavailabilityError('Camera', 'getAvailablePictureSizesAsync');\n }\n return await CameraManager.getAvailablePictureSizes(ratio, this._cameraHandle);\n }\n\n async recordAsync(options?: RecordingOptions): Promise<{ uri: string }> {\n if (!CameraManager.record) {\n throw new UnavailabilityError('Camera', 'recordAsync');\n }\n\n const recordingOptions = ensureRecordingOptions(options);\n\n return await CameraManager.record(recordingOptions, this._cameraHandle);\n }\n\n stopRecording() {\n if (!CameraManager.stopRecording) {\n throw new UnavailabilityError('Camera', 'stopRecording');\n }\n\n CameraManager.stopRecording(this._cameraHandle);\n }\n\n pausePreview() {\n if (!CameraManager.pausePreview) {\n throw new UnavailabilityError('Camera', 'pausePreview');\n }\n\n CameraManager.pausePreview(this._cameraHandle);\n }\n\n resumePreview() {\n if (!CameraManager.resumePreview) {\n throw new UnavailabilityError('Camera', 'resumePreview');\n }\n\n CameraManager.resumePreview(this._cameraHandle);\n }\n\n _onCameraReady = () => {\n if (this.props.onCameraReady) {\n this.props.onCameraReady();\n }\n };\n\n _onMountError = ({ nativeEvent }: { nativeEvent: { message: string } }) => {\n if (this.props.onMountError) {\n this.props.onMountError(nativeEvent);\n }\n };\n\n _onObjectDetected = (callback?: Function) => ({ nativeEvent }: { nativeEvent: any }) => {\n const { type } = nativeEvent;\n if (\n this._lastEvents[type] &&\n this._lastEventsTimes[type] &&\n JSON.stringify(nativeEvent) === this._lastEvents[type] &&\n new Date().getTime() - this._lastEventsTimes[type].getTime() < EventThrottleMs\n ) {\n return;\n }\n\n if (callback) {\n callback(nativeEvent);\n this._lastEventsTimes[type] = new Date();\n this._lastEvents[type] = JSON.stringify(nativeEvent);\n }\n };\n\n _setReference = (ref?: React.Component) => {\n if (ref) {\n this._cameraRef = ref;\n // TODO: Bacon: Unify these\n if (Platform.OS === 'web') {\n this._cameraHandle = ref as any;\n } else {\n this._cameraHandle = findNodeHandle(ref);\n }\n } else {\n this._cameraRef = null;\n this._cameraHandle = null;\n }\n };\n\n render() {\n const nativeProps = ensureNativeProps(this.props);\n\n const onBarCodeScanned = this._onObjectDetected(this.props.onBarCodeScanned);\n const onFacesDetected = this._onObjectDetected(this.props.onFacesDetected);\n\n return (\n <ExponentCamera\n {...nativeProps}\n ref={this._setReference}\n onCameraReady={this._onCameraReady}\n onMountError={this._onMountError}\n onBarCodeScanned={onBarCodeScanned}\n onFacesDetected={onFacesDetected}\n onPictureSaved={_onPictureSaved}\n />\n );\n }\n}\n\nexport const { Constants, getPermissionsAsync, requestPermissionsAsync } = Camera;\n"]}