UNPKG

react-native-camera-kit

Version:

A high performance, fully featured, rock solid camera library for React Native applications

124 lines (119 loc) 3.77 kB
import { type ViewProps } from 'react-native'; import { CameraType, type FlashMode, type FocusMode, type ZoomMode, type TorchMode, type ResizeMode, type CodeFormat, } from './types'; import { Orientation } from './index'; export type OnReadCodeData = { nativeEvent: { codeStringValue: string; codeFormat: CodeFormat; }; }; export type OnOrientationChangeData = { nativeEvent: { orientation: typeof Orientation[keyof typeof Orientation]; }; }; export type OnZoom = { nativeEvent: { zoom: number; }; } export interface CameraProps extends ViewProps { // Behavior flashMode?: FlashMode; focusMode?: FocusMode; /** * Enable or disable the pinch gesture handler. * If `zoomMode` is `on`, you must pass `zoom` as `undefined`, or * avoid setting `zoom` it to allow pinch to zoom. * Examples: * ``` * <Camera zoomMode="on" /> * <Camera zoomMode="on" zoom={undefined} /> * <Camera zoomMode="off" zoom={1.0} /> * ``` */ zoomMode?: ZoomMode; /** * Controls zoom. Higher values zooms in. * Default zoom is `1.0`, relative to 'wide angle' camera. * Examples of minimum/widest zoom: * - iPhone 6S Plus minimum is `1.0` * - iPhone 14 Pro Max minimum `0.5` * - Google Pixel 7 minimum is `0.7` * ## Example * ``` * const [zoom, setZoom] = useState(1.0); * <Button onPress={() => setZoom(1.0)} title="Reset" /> * <Camera * zoom={zoom} * onZoom={(e) => { * setZoom(e.nativeEvent.zoom); * console.log('zoom', e.nativeEvent.zoom); * }} * /> * ``` */ zoom?: number; /** * Limits the maximum zoom factor to something smaller than the camera's maximum. * You cannot go beyond the camera's maximum, only below. * The purpose of limiting zoom is because some modern iPhones report max zoom of 150+ * which is probably beyond what you want. See documentation for the `zoom` prop for more info. * Example: * ``` * <Camera * maxZoom={15.0} * /> * ``` */ maxZoom?: number; torchMode?: TorchMode; cameraType?: CameraType; onOrientationChange?: (event: OnOrientationChangeData) => void; /** * Callback triggered when user pinches to zoom and on startup. * Example: * ``` * <Camera * onZoom={(e) => { * console.log('zoom', e.nativeEvent.zoom); * }} * /> * ``` */ onZoom?: (event: OnZoom) => void; /** **Android only**. Triggered when camera fails to initialize */ onError?: (event: { nativeEvent: { errorMessage: string } }) => void; // Barcode only scanBarcode?: boolean; showFrame?: boolean; laserColor?: number | string; frameColor?: number | string; barcodeFrameSize?: { width: number; height: number }; onReadCode?: (event: OnReadCodeData) => void; // Specific to iOS ratioOverlay?: string; ratioOverlayColor?: number | string; resetFocusTimeout?: number; resetFocusWhenMotionDetected?: boolean; resizeMode?: ResizeMode; /** Throttle how often the barcode scanner triggers a new scan */ scanThrottleDelay?: number; /** **iOS Only**. 'speed' provides 60-80% faster image capturing */ maxPhotoQualityPrioritization?: 'balanced' | 'quality' | 'speed'; /** **iOS Only (iOS 26+)**. Enables `AVCaptureOutput.deferredStartEnabled` when supported to prioritize getting the preview visible faster. Default: `true`. When enabled, the first capture may be delayed by a few hundred milliseconds. Not supported on Android. */ iOsDeferredStart?: boolean; /** **Android only**. Play a shutter capture sound when capturing a photo */ shutterPhotoSound?: boolean; onCaptureButtonPressIn?: ({ nativeEvent: {} }) => void; onCaptureButtonPressOut?: ({ nativeEvent: {} }) => void; allowedBarcodeTypes?: CodeFormat[]; }