UNPKG

use-simple-camera

Version:

Production-ready React Hooks for Camera, Video Recording, QR/Barcode Scanning, Motion Detection, and Audio Analysis. Zero dependencies, fully typed, and easy to use.

70 lines (68 loc) 2.6 kB
import { CameraError, CameraPreset, FilterType, UseCameraConfig } from '../types'; export declare const useSimpleCamera: (config?: UseCameraConfig) => { stream: MediaStream | null; error: CameraError | null; permissionGranted: boolean; videoDevices: MediaDeviceInfo[]; audioDevices: MediaDeviceInfo[]; activePreset: CameraPreset | null; startCamera: (constraintsOrPreset?: MediaStreamConstraints | { preset: CameraPreset; deviceId?: string; }) => Promise<void>; stopCamera: () => void; acquirePermissions: () => Promise<void>; startScreenShare: () => Promise<void>; toggleVideo: (enabled: boolean) => void; toggleAudio: (enabled: boolean) => void; toggleFacingMode: () => Promise<void>; togglePiP: (videoElement: HTMLVideoElement) => Promise<void>; captureImage: (options?: { mirror?: boolean; format?: string; quality?: number; filter?: FilterType; }) => Promise<string>; controls: import('../types').CameraControls; recorder: { isRecording: boolean; isPaused: boolean; recordedBlob: Blob | null; startRecording: (options?: import('../types').VideoRecorderOptions & { onComplete?: (blob: Blob) => void; mode?: "video-only" | "audio-only" | "both"; }) => void; stopRecording: () => void; pauseRecording: () => void; resumeRecording: () => void; takeSnapshot: () => Promise<Blob | null>; clearRecordings: () => void; }; audioLevel: { volume: number; }; motionDetection: { motionDetected: boolean; }; barcodeScanner: { isSupported: boolean; isScanning: boolean; }; orientation: { orientation: import('./useOrientation').OrientationType; angle: number; }; storage: { saveToLocal: (blob: Blob, filename: string, options?: { retentionMs?: number; }) => Promise<void>; getFromLocal: (filename: string) => Promise<Blob | null>; deleteFromLocal: (filename: string) => Promise<void>; downloadFromLocal: (filename: string) => Promise<void>; uploadToRemote: (blob: Blob, options: import('./useStorage').UploadOptions) => Promise<void>; isUploading: boolean; }; setMotionCallback: import('react').Dispatch<import('react').SetStateAction<(() => void) | undefined>>; setBarcodeCallback: import('react').Dispatch<import('react').SetStateAction<((code: string) => void) | undefined>>; isCameraActive: boolean; };