1{"version":3,"file":"ExponentCamera.web.js","sourceRoot":"","sources":["../src/ExponentCamera.web.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { CSSProperties } from 'react';\nimport { CapturedPicture, NativeProps, PictureOptions, MountError } from './Camera.types';\nimport CameraModule, { CameraType } from './CameraModule/CameraModule';\nimport CameraManager from './ExponentCameraManager.web';\n\nlet findNodeHandle = function(node: any): any {};\nlet flatten = data => data;\nlet View = props => <div {...props} />;\n\n// Without react-native-web\ntry {\n const ReactNative = require('react-native');\n findNodeHandle = ReactNative.findNodeHandle;\n flatten = ReactNative.StyleSheet.flatten;\n View = ReactNative.View;\n} catch (error) {}\n\nexport default class ExponentCamera extends React.Component<NativeProps> {\n video?: number | null;\n camera?: CameraModule;\n\n state = { type: null };\n\n componentWillUnmount() {\n if (this.camera) {\n this.camera.unmount();\n }\n }\n\n componentWillReceiveProps(nextProps) {\n this._updateCameraProps(nextProps);\n }\n\n _updateCameraProps = async ({\n type,\n zoom,\n pictureSize,\n flashMode,\n autoFocus,\n // focusDepth,\n whiteBalance,\n }: NativeProps) => {\n const { camera } = this;\n if (!camera) {\n return;\n }\n await Promise.all([\n camera.setTypeAsync(type as CameraType),\n camera.setPictureSize(pictureSize as string),\n camera.setZoomAsync(zoom as number),\n camera.setAutoFocusAsync(autoFocus as string),\n camera.setWhiteBalanceAsync(whiteBalance as string),\n camera.setFlashModeAsync(flashMode as string),\n camera.ensureCameraIsRunningAsync(),\n ]);\n const actualCameraType = camera.getActualCameraType();\n if (actualCameraType !== this.state.type) {\n this.setState({ type: actualCameraType });\n }\n };\n\n getCamera = (): CameraModule => {\n if (this.camera) {\n return this.camera;\n }\n throw new Error('Camera is not defined yet!');\n };\n\n getAvailablePictureSizes = async (ratio: string): Promise<string[]> => {\n const camera = this.getCamera();\n return camera.getAvailablePictureSizes(ratio);\n };\n\n takePicture = async (options: PictureOptions): Promise<CapturedPicture> => {\n const camera = this.getCamera();\n return camera.takePicture({\n ...options,\n // This will always be defined, the option gets added to a queue in the upper-level. We should replace the original so it isn't called twice.\n onPictureSaved: this.props.onPictureSaved,\n });\n };\n\n resumePreview = async (): Promise<void> => {\n const camera = this.getCamera();\n await camera.resumePreview();\n };\n\n pausePreview = (): void => {\n const camera = this.getCamera();\n camera.pausePreview();\n };\n\n onCameraReady = () => {\n if (this.props.onCameraReady) {\n this.props.onCameraReady();\n }\n };\n\n onMountError = ({ nativeEvent }: { nativeEvent: MountError }) => {\n if (this.props.onMountError) {\n this.props.onMountError({ nativeEvent });\n }\n };\n\n _setRef = ref => {\n if (!ref) {\n this.video = null;\n if (this.camera) {\n this.camera.unmount();\n this.camera = undefined;\n }\n return;\n }\n this.video = findNodeHandle(ref);\n this.camera = new CameraModule(ref);\n this.camera.onCameraReady = this.onCameraReady;\n this.camera.onMountError = this.onMountError;\n this._updateCameraProps(this.props);\n };\n\n render() {\n const transform = this.state.type === CameraManager.Type.front ? 'rotateY(180deg)' : 'none';\n const reactStyle = flatten(this.props.style);\n const style: CSSProperties = {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n width: '100%',\n height: '100%',\n objectFit: 'cover',\n transform,\n };\n\n return (\n <View style={{ flex: 1, alignItems: 'stretch', ...reactStyle }}>\n <video ref={this._setRef} style={style} autoPlay playsInline />\n {this.props.children}\n </View>\n );\n }\n}\n"]}