@microblink/camera-manager 7.0.0-next.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/camera-manager.js +8243 -0
- package/package.json +70 -0
- package/types/core/Camera.d.ts +33 -0
- package/types/core/Camera.d.ts.map +1 -0
- package/types/core/Camera.test.d.ts +2 -0
- package/types/core/Camera.test.d.ts.map +1 -0
- package/types/core/CameraManager.d.ts +115 -0
- package/types/core/CameraManager.d.ts.map +1 -0
- package/types/core/cameraManagerStore.d.ts +68 -0
- package/types/core/cameraManagerStore.d.ts.map +1 -0
- package/types/core/cameraNames.d.ts +23 -0
- package/types/core/cameraNames.d.ts.map +1 -0
- package/types/core/cameraUtils.d.ts +28 -0
- package/types/core/cameraUtils.d.ts.map +1 -0
- package/types/core/createCustomImageData.d.ts +11 -0
- package/types/core/createCustomImageData.d.ts.map +1 -0
- package/types/core/imageDataUtils.d.ts +3 -0
- package/types/core/imageDataUtils.d.ts.map +1 -0
- package/types/core/iosCameraNames.d.ts +2 -0
- package/types/core/iosCameraNames.d.ts.map +1 -0
- package/types/core/utils.d.ts +4 -0
- package/types/core/utils.d.ts.map +1 -0
- package/types/core/videoToImageData.d.ts +2 -0
- package/types/core/videoToImageData.d.ts.map +1 -0
- package/types/index.d.ts +9 -0
- package/types/index.d.ts.map +1 -0
- package/types/index.rollup.d.ts +279 -0
- package/types/media-mock/MediaMocker.d.ts +809 -0
- package/types/media-mock/MediaMocker.d.ts.map +1 -0
- package/types/media-mock/createInputDeviceInfo.d.ts +14 -0
- package/types/media-mock/createInputDeviceInfo.d.ts.map +1 -0
- package/types/media-mock/defineProperty.d.ts +7 -0
- package/types/media-mock/defineProperty.d.ts.map +1 -0
- package/types/media-mock/fake-devices.d.ts +802 -0
- package/types/media-mock/fake-devices.d.ts.map +1 -0
- package/types/media-mock/utils.d.ts +2 -0
- package/types/media-mock/utils.d.ts.map +1 -0
- package/types/tests/camera-picking.test.d.ts +2 -0
- package/types/tests/camera-picking.test.d.ts.map +1 -0
- package/types/tsdoc-metadata.json +11 -0
- package/types/ui/CameraSelector.d.ts +3 -0
- package/types/ui/CameraSelector.d.ts.map +1 -0
- package/types/ui/CameraUiStoreContext.d.ts +31 -0
- package/types/ui/CameraUiStoreContext.d.ts.map +1 -0
- package/types/ui/CaptureScreen.d.ts +4 -0
- package/types/ui/CaptureScreen.d.ts.map +1 -0
- package/types/ui/ErrorAlert.d.ts +5 -0
- package/types/ui/ErrorAlert.d.ts.map +1 -0
- package/types/ui/Header.d.ts +3 -0
- package/types/ui/Header.d.ts.map +1 -0
- package/types/ui/LocalizationContext.d.ts +16 -0
- package/types/ui/LocalizationContext.d.ts.map +1 -0
- package/types/ui/RootComponent.d.ts +4 -0
- package/types/ui/RootComponent.d.ts.map +1 -0
- package/types/ui/SolidShadowRoot.d.ts +18 -0
- package/types/ui/SolidShadowRoot.d.ts.map +1 -0
- package/types/ui/createCameraManagerUi.d.ts +27 -0
- package/types/ui/createCameraManagerUi.d.ts.map +1 -0
- package/types/ui/locales/en.d.ts +10 -0
- package/types/ui/locales/en.d.ts.map +1 -0
- package/types/ui/zustandRefStore.d.ts +26 -0
- package/types/ui/zustandRefStore.d.ts.map +1 -0
package/package.json
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@microblink/camera-manager",
|
|
3
|
+
"description": "",
|
|
4
|
+
"version": "7.0.0-next.2",
|
|
5
|
+
"author": "",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/camera-manager.js",
|
|
8
|
+
"module": "./dist/camera-manager.js",
|
|
9
|
+
"types": "./types/index.rollup.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./types/index.rollup.d.ts",
|
|
13
|
+
"import": "./dist/camera-manager.js"
|
|
14
|
+
},
|
|
15
|
+
"./package.json": "./package.json"
|
|
16
|
+
},
|
|
17
|
+
"publishConfig": {
|
|
18
|
+
"access": "public",
|
|
19
|
+
"registry": "https://registry.npmjs.org/"
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"dist",
|
|
23
|
+
"types"
|
|
24
|
+
],
|
|
25
|
+
"dependencies": {
|
|
26
|
+
"@csstools/normalize.css": "^12.1.1",
|
|
27
|
+
"@solid-primitives/keyed": "^1.5.0",
|
|
28
|
+
"@wessberg/connection-observer": "^1.0.5",
|
|
29
|
+
"clsx": "^2.1.1",
|
|
30
|
+
"common-tags": "^1.8.2",
|
|
31
|
+
"is-plain-obj": "^4.1.0",
|
|
32
|
+
"nanoid": "^5.0.2",
|
|
33
|
+
"rad-event-listener": "^0.2.4",
|
|
34
|
+
"rvfc-polyfill": "^1.0.7",
|
|
35
|
+
"ua-parser-js": "^1.0.36"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"type-fest": "^4.35.0"
|
|
39
|
+
},
|
|
40
|
+
"keywords": [],
|
|
41
|
+
"license": "ISC",
|
|
42
|
+
"peerDependencies": {
|
|
43
|
+
"@ark-ui/solid": "^4.10.1",
|
|
44
|
+
"solid-js": "^1.9.4",
|
|
45
|
+
"solid-motionone": "^1.0.3",
|
|
46
|
+
"solid-zustand": "^1.8.1",
|
|
47
|
+
"ts-pattern": "^5.6.2",
|
|
48
|
+
"zustand": "^4.5.5"
|
|
49
|
+
},
|
|
50
|
+
"scripts": {
|
|
51
|
+
"build": "concurrently pnpm:build:js pnpm:build:types && pnpm type-rollup",
|
|
52
|
+
"build:dev": "concurrently pnpm:build:js-dev pnpm:build:types",
|
|
53
|
+
"build:js": "vite build",
|
|
54
|
+
"build:js-dev": "vite build --mode development",
|
|
55
|
+
"build:types": "tsc",
|
|
56
|
+
"clean": "rimraf .turbo types dist public/resources/* *.tgz",
|
|
57
|
+
"lint": "concurrently pnpm:lint:types pnpm:lint:eslint",
|
|
58
|
+
"lint:eslint": "eslint ./src --max-warnings 0",
|
|
59
|
+
"lint:types": "tsc --emitDeclarationOnly false --noEmit",
|
|
60
|
+
"pack-check": "publint && pnpm pack | tail -n1 | xargs attw --profile esm-only",
|
|
61
|
+
"publish-test": "pnpm clean && pnpm build && pack-check",
|
|
62
|
+
"test": "vitest run",
|
|
63
|
+
"test:browser": "vitest run --workspace=vitest.workspace.ts",
|
|
64
|
+
"test:watch": "vitest",
|
|
65
|
+
"type-rollup": "api-extractor run --local",
|
|
66
|
+
"watch": "concurrently pnpm:watch:js pnpm:watch:types",
|
|
67
|
+
"watch:js": "pnpm run build:js --watch --mode development",
|
|
68
|
+
"watch:types": "pnpm run build:types --watch"
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { VideoResolution } from "./CameraManager";
|
|
2
|
+
export type FacingMode = "front" | "back" | undefined;
|
|
3
|
+
/**
|
|
4
|
+
* Represents a camera device and its active stream.
|
|
5
|
+
*/
|
|
6
|
+
export declare class Camera {
|
|
7
|
+
#private;
|
|
8
|
+
deviceInfo: InputDeviceInfo;
|
|
9
|
+
/**
|
|
10
|
+
* Stream capabilities as reported by the stream.
|
|
11
|
+
*
|
|
12
|
+
* On iOS it's the same as `deviceCapabilities`. Firefox is only reporting
|
|
13
|
+
* rudimentary capabilities, so we can't rely on this for picking the right
|
|
14
|
+
* camera.
|
|
15
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack/getCapabilities
|
|
16
|
+
*/
|
|
17
|
+
streamCapabilities?: ReturnType<MediaStreamTrack["getCapabilities"]>;
|
|
18
|
+
activeStream: MediaStream | undefined;
|
|
19
|
+
name: string;
|
|
20
|
+
facingMode: FacingMode;
|
|
21
|
+
torchSupported: boolean;
|
|
22
|
+
torchEnabled: boolean;
|
|
23
|
+
singleShotSupported: boolean;
|
|
24
|
+
original: this;
|
|
25
|
+
notify: (reason?: unknown) => void;
|
|
26
|
+
notifyStateChange?: (camera: Camera, reason?: unknown) => void;
|
|
27
|
+
constructor(deviceInfo: InputDeviceInfo);
|
|
28
|
+
startStream(resolution: VideoResolution): Promise<MediaStream>;
|
|
29
|
+
toggleTorch(): Promise<boolean>;
|
|
30
|
+
stopStream(): void;
|
|
31
|
+
getVideoTrack(): MediaStreamTrack | undefined;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=Camera.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Camera.d.ts","sourceRoot":"","sources":["../../src/core/Camera.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAIlD,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC;AAEtD;;GAEG;AACH,qBAAa,MAAM;;IACjB,UAAU,EAAE,eAAe,CAAC;IAC5B;;;;;;;OAOG;IACH,kBAAkB,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACrE,YAAY,EAAE,WAAW,GAAG,SAAS,CAAC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,UAAU,CAAC;IACvB,cAAc,UAAS;IACvB,YAAY,UAAS;IACrB,mBAAmB,UAAS;IAE5B,QAAQ,OAAQ;IAEhB,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;gBAanD,UAAU,EAAE,eAAe;IAmDjC,WAAW,CAAC,UAAU,EAAE,eAAe;IAsEvC,WAAW;IA+BjB,UAAU;IAUV,aAAa;CAQd"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Camera.test.d.ts","sourceRoot":"","sources":["../../src/core/Camera.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { Camera, FacingMode } from "./Camera";
|
|
2
|
+
import { cameraManagerStore as store } from "./cameraManagerStore";
|
|
3
|
+
export type FrameCaptureCallback = (frame: ImageData) => void | Promise<void>;
|
|
4
|
+
/**
|
|
5
|
+
* Available video resolutions for the camera stream.
|
|
6
|
+
*/
|
|
7
|
+
export declare const videoResolutions: {
|
|
8
|
+
HD: {
|
|
9
|
+
width: number;
|
|
10
|
+
height: number;
|
|
11
|
+
};
|
|
12
|
+
FHD: {
|
|
13
|
+
width: number;
|
|
14
|
+
height: number;
|
|
15
|
+
};
|
|
16
|
+
UHD: {
|
|
17
|
+
width: number;
|
|
18
|
+
height: number;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
export type VideoResolution = keyof typeof videoResolutions;
|
|
22
|
+
export type CameraPreference = {
|
|
23
|
+
preferredCamera: Camera;
|
|
24
|
+
preferredFacing?: never;
|
|
25
|
+
} | {
|
|
26
|
+
preferredFacing: FacingMode;
|
|
27
|
+
preferredCamera?: never;
|
|
28
|
+
} | {
|
|
29
|
+
preferredCamera?: never;
|
|
30
|
+
preferredFacing?: never;
|
|
31
|
+
};
|
|
32
|
+
export declare class CameraManager {
|
|
33
|
+
#private;
|
|
34
|
+
/**
|
|
35
|
+
* Sets the resolution of the camera stream
|
|
36
|
+
*/
|
|
37
|
+
setResolution: (resolution: VideoResolution) => Promise<void>;
|
|
38
|
+
get resolution(): "HD" | "FHD" | "UHD";
|
|
39
|
+
/**
|
|
40
|
+
* True if there is a video playing or capturing
|
|
41
|
+
* TODO: see if we can simplify this, by observing the video playback state
|
|
42
|
+
*/
|
|
43
|
+
get isActive(): boolean;
|
|
44
|
+
setFacingFilter(facingFilter: FacingMode[]): void;
|
|
45
|
+
/**
|
|
46
|
+
* Returns the cameras that are available to the user, filtered by the facing mode.
|
|
47
|
+
* If no facing mode is set, all cameras are returned.
|
|
48
|
+
*/
|
|
49
|
+
getCameras(): Camera[];
|
|
50
|
+
/**
|
|
51
|
+
* Single-time setup for a video element
|
|
52
|
+
*/
|
|
53
|
+
initVideoElement(videoElement: HTMLVideoElement): void;
|
|
54
|
+
addFrameCaptureCallback(frameCaptureCallback: FrameCaptureCallback): void;
|
|
55
|
+
removeFrameCaptureCallback(frameCaptureCallback: FrameCaptureCallback): void;
|
|
56
|
+
deinitVideoElement(): void;
|
|
57
|
+
/**
|
|
58
|
+
* Select a camera device from available ones.
|
|
59
|
+
*/
|
|
60
|
+
selectCamera(camera: Camera): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Refreshes available devices on the system and updates the state.
|
|
63
|
+
*/
|
|
64
|
+
refreshCameraDevices(): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Starts the video playback
|
|
67
|
+
*
|
|
68
|
+
* @returns resolves when playback starts
|
|
69
|
+
*/
|
|
70
|
+
startPlayback(): Promise<void>;
|
|
71
|
+
/**
|
|
72
|
+
* Starts playback and frame capturing.
|
|
73
|
+
*/
|
|
74
|
+
startFrameCapture(): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Starts a best-effort camera stream. Will pick a camera automatically if
|
|
77
|
+
* none is selected.
|
|
78
|
+
* TODO: Rename method
|
|
79
|
+
*/
|
|
80
|
+
startCameraStream({ autoplay, preferredCamera, preferredFacing, }?: {
|
|
81
|
+
autoplay?: boolean;
|
|
82
|
+
} & CameraPreference): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* Pauses capturing frames without pausing playback.
|
|
85
|
+
*/
|
|
86
|
+
stopFrameCapture(): void;
|
|
87
|
+
/**
|
|
88
|
+
* Stops the currently active stream. Also stops the video playback and capturing process.
|
|
89
|
+
*/
|
|
90
|
+
stopStream(): void;
|
|
91
|
+
/**
|
|
92
|
+
* Pauses the video playback. This will also stop the capturing process.
|
|
93
|
+
*/
|
|
94
|
+
pausePlayback(): void;
|
|
95
|
+
/**
|
|
96
|
+
* If true, the video and captured frames will be mirrored horizontally.
|
|
97
|
+
* TODO: apply when needed
|
|
98
|
+
*/
|
|
99
|
+
setMirrorX(mirrorX: boolean): void;
|
|
100
|
+
/**
|
|
101
|
+
* Allows the user to subscribe to state changes inside the Camera Manager.
|
|
102
|
+
* Implemented using Zustand. For usage information, see
|
|
103
|
+
* {@link https://github.com/pmndrs/zustand#using-subscribe-with-selector}
|
|
104
|
+
*/
|
|
105
|
+
subscribe: typeof store.subscribe;
|
|
106
|
+
/**
|
|
107
|
+
* Gets the current internal state of the CameraManager.
|
|
108
|
+
*/
|
|
109
|
+
getState: typeof store.getState;
|
|
110
|
+
/**
|
|
111
|
+
* Resets the CameraManager and stop all streams
|
|
112
|
+
*/
|
|
113
|
+
destroy(): void;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=CameraManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CameraManager.d.ts","sourceRoot":"","sources":["../../src/core/CameraManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAO9C,OAAO,EAGL,kBAAkB,IAAI,KAAK,EAC5B,MAAM,sBAAsB,CAAC;AAK9B,MAAM,MAAM,oBAAoB,GAAG,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE9E;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;CAI5B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,gBAAgB,CAAC;AAE5D,MAAM,MAAM,gBAAgB,GACxB;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,KAAK,CAAA;CAAE,GACpD;IAAE,eAAe,EAAE,UAAU,CAAC;IAAC,eAAe,CAAC,EAAE,KAAK,CAAA;CAAE,GACxD;IAAE,eAAe,CAAC,EAAE,KAAK,CAAC;IAAC,eAAe,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC;AAEzD,qBAAa,aAAa;;IAiBxB;;OAEG;IACH,aAAa,eAAsB,eAAe,mBAUhD;IAEF,IAAI,UAAU,yBAEb;IAED;;;OAGG;IACH,IAAI,QAAQ,YAEX;IAED,eAAe,CAAC,YAAY,EAAE,UAAU,EAAE;IAM1C;;;OAGG;IACH,UAAU;IAsBV;;OAEG;IACH,gBAAgB,CAAC,YAAY,EAAE,gBAAgB;IAyE/C,uBAAuB,CAAC,oBAAoB,EAAE,oBAAoB;IAIlE,0BAA0B,CAAC,oBAAoB,EAAE,oBAAoB;IAIrE,kBAAkB;IAQlB;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM;IA0DjC;;OAEG;IACG,oBAAoB;IAgE1B;;;;OAIG;IACG,aAAa;IAuCnB;;OAEG;IACG,iBAAiB;IAqCvB;;;;OAIG;IACG,iBAAiB,CAAC,EACtB,QAAe,EACf,eAAe,EACf,eAAe,GAChB,GAAE;QACD,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,GAAG,gBAAqB;IA8EzB;;OAEG;IACH,gBAAgB;IAMhB;;OAEG;IACH,UAAU;IAcV;;OAEG;IACH,aAAa;IAmDb;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO;IAQ3B;;;;OAIG;IACH,SAAS,EAAE,OAAO,KAAK,CAAC,SAAS,CAAmB;IAEpD;;OAEG;IACH,QAAQ,EAAE,OAAO,KAAK,CAAC,QAAQ,CAAkB;IAEjD;;OAEG;IACH,OAAO;CAKR"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { Camera, FacingMode } from "./Camera";
|
|
2
|
+
export type PlaybackState = "idle" | "playback" | "capturing";
|
|
3
|
+
export type CameraManagerStore = {
|
|
4
|
+
/**
|
|
5
|
+
* The video element that will display the camera stream.
|
|
6
|
+
*/
|
|
7
|
+
videoElement?: HTMLVideoElement;
|
|
8
|
+
/**
|
|
9
|
+
* The list of cameras that are available to the user.
|
|
10
|
+
*/
|
|
11
|
+
cameras: Camera[];
|
|
12
|
+
/**
|
|
13
|
+
* The facing mode filter that will be used to filter the available cameras.
|
|
14
|
+
* Can be a single facing mode or an array of facing modes.
|
|
15
|
+
*/
|
|
16
|
+
facingFilter?: FacingMode[];
|
|
17
|
+
/**
|
|
18
|
+
* The currently selected camera.
|
|
19
|
+
*/
|
|
20
|
+
selectedCamera?: Camera;
|
|
21
|
+
/**
|
|
22
|
+
* Capturing / playing / idle
|
|
23
|
+
*/
|
|
24
|
+
playbackState: PlaybackState;
|
|
25
|
+
/**
|
|
26
|
+
* Indicates if the camera is currently being swapped.
|
|
27
|
+
*/
|
|
28
|
+
isSwappingCamera: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Indicates if camera list is currently being queried.
|
|
31
|
+
*/
|
|
32
|
+
isQueryingCameras: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Indicates if the captured frames will be mirrored horizontally
|
|
35
|
+
*/
|
|
36
|
+
mirrorX: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* If the Camera manager has encountered an error, this will be set to the error.
|
|
39
|
+
*/
|
|
40
|
+
errorState?: Error;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* ⚠️ DANGER AHEAD ⚠️
|
|
44
|
+
*
|
|
45
|
+
* The Zustand store. Use only if you know what you're doing.
|
|
46
|
+
*
|
|
47
|
+
* Never set the state as this will break the application logic. We do not have
|
|
48
|
+
* two-way binding. Make sure you only observe the state.
|
|
49
|
+
*
|
|
50
|
+
* Prefer using subscriptions if you require observable state.
|
|
51
|
+
*
|
|
52
|
+
* {@link https://github.com/pmndrs/zustand}
|
|
53
|
+
*/
|
|
54
|
+
export declare const cameraManagerStore: Omit<import("zustand/vanilla").StoreApi<CameraManagerStore>, "subscribe"> & {
|
|
55
|
+
subscribe: {
|
|
56
|
+
(listener: (selectedState: CameraManagerStore, previousSelectedState: CameraManagerStore) => void): () => void;
|
|
57
|
+
<U>(selector: (state: CameraManagerStore) => U, listener: (selectedState: U, previousSelectedState: U) => void, options?: {
|
|
58
|
+
equalityFn?: ((a: U, b: U) => boolean) | undefined;
|
|
59
|
+
fireImmediately?: boolean;
|
|
60
|
+
} | undefined): () => void;
|
|
61
|
+
};
|
|
62
|
+
};
|
|
63
|
+
/**
|
|
64
|
+
* Resets the store to its initial state.
|
|
65
|
+
* Stops all camera streams as a side effect.
|
|
66
|
+
*/
|
|
67
|
+
export declare const resetCameraManagerStore: () => void;
|
|
68
|
+
//# sourceMappingURL=cameraManagerStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cameraManagerStore.d.ts","sourceRoot":"","sources":["../../src/core/cameraManagerStore.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAG9C,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,CAAC;AAE9D,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;OAEG;IACH,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAEhC;;OAEG;IACH,OAAO,EAAE,MAAM,EAAE,CAAC;IAElB;;;OAGG;IACH,YAAY,CAAC,EAAE,UAAU,EAAE,CAAC;IAE5B;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB;;OAEG;IACH,aAAa,EAAE,aAAa,CAAC;IAE7B;;OAEG;IACH,gBAAgB,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,iBAAiB,EAAE,OAAO,CAAC;IAE3B;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,UAAU,CAAC,EAAE,KAAK,CAAC;CACpB,CAAC;AAeF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;CAG9B,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,YAOnC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic keywords for back camera
|
|
3
|
+
*/
|
|
4
|
+
export declare const backCameraKeywords: ["back", "rear", "rück", "arrière", "trasera", "trás", "traseira", "posteriore", "achterzijde", "baksidan", "bagside", "bak", "takakamera", "πίσω", "darrere", "задней", "tylny", "spate", "hátsó", "zadní", "zadná", "задня", "stražnja", "الخلفية", "אחורית", "arka", "后面", "后置", "後面", "後置", "背面", "背置", "후", "背面", "หลัง", "belakang", "बैक", "posterior"];
|
|
5
|
+
/**
|
|
6
|
+
* Generic keywords for front camera
|
|
7
|
+
*/
|
|
8
|
+
export declare const frontCameraKeywords: ["front", "vorder", "avant", "frontal", "frente", "frontale", "voorzijde", "framsidan", "forside", "front", "etukamera", "μπροστά", "davant", "передняя", "przedni", "față", "elülső", "přední", "predná", "передня", "prednja", "الأمامية", "קדמית", "ön", "前面", "前置", "前面", "前置", "전면", "前面", "หน้า", "depan", "फ्रंट", "frontal"];
|
|
9
|
+
/**
|
|
10
|
+
* Localizations for iOS back camera
|
|
11
|
+
*/
|
|
12
|
+
export declare const backCameraLocalizations: ["후면 카메라", "後置相機", "Задна камера", "後置鏡頭", "Camera mặt sau", "Hátoldali kamera", "Cámara trasera", "Back Camera", "Kamera på baksidan", "Πίσω κάμερα", "Bagsidekamera", "Zadná kamera", "Fotocamera (posteriore)", "Câmara traseira", "מצלמה אחורית", "Takakamera", "Rückkamera", "Caméra arrière", "Zadní fotoaparát", "Артқы камера", "Tylny aparat", "बैक कैमरा", "Hátsó kamera", "Camera aan achterzijde", "Kamera Belakang", "Câmera Traseira", "Stražnja kamera", "الكاميرا الخلفية", "Càmera posterior", "Fotocamera posteriore", "Càmera del darrere", "กล้องด้านหลัง", "Cameră spate", "Kamera, bagside", "背面カメラ", "Задня камера", "Arka Kamera", "后置相机", "Камера на задней панели", "后置镜头", "Kamera bak", "Задняя камера", "Aparat tylny", "Kamera på baksiden", "Câmera de Trás"];
|
|
13
|
+
/**
|
|
14
|
+
* Localizations for iOS back dual wide camera
|
|
15
|
+
*/
|
|
16
|
+
export declare const backDualWideCameraLocalizations: ["Cameră dublă cu obiectiv superangular spate", "מצלמה כפולה רחבה אחורית", "Артқы қос кең бұрышты камера", "Câmara grande angular dupla traseira", "Πίσω διπλή ευρεία κάμερα", "後置雙廣角鏡頭相機", "Задна двойна широкоъгълна камера", "Càmera dual posterior amb gran angular", "Zadná duálna širokouhlá kamera", "كاميرا خلفية مزدوجة عريضة", "Задняя двойная широкоугольная камера", "Задня здвоєна ширококутна камера", "Cámara amplia posterior doble", "Dwikamera Lebar Belakang", "Tylny dwuobiektywowy aparat szerokokątny", "Dubbel vidvinkelkamera på baksidan", "Back Dual Wide Camera", "Hátsó, kettős, széles látószögű kamera", "후면 듀얼 와이드 카메라", "Double caméra grand angle arrière", "Fotocamera doppia con grandangolo (posteriore)", "Double appareil photo grand angle arrière", "Zadní duální širokoúhlý fotoaparát", "Çift Geniş Kamera Arka Yüzü", "Laajakulmainen kaksoistakakamera", "Rückseitige Dual-Weitwinkelkamera", "बैक ड्युअल वाइड कैमरा", "后置双广角镜头", "Câmera Dupla Grande-Angular Traseira", "後置雙廣角相機", "กล้องคู่ด้านหลังมุมกว้าง", "Kamera Lebar Belakang Ganda", "Dobbelt vidvinkelkamera bak", "Camera kép rộng mặt sau", "Cámara trasera dual con gran angular", "背面デュアル広角カメラ", "Stražnja dvostruka široka kamera"];
|
|
17
|
+
/**
|
|
18
|
+
* Check if a string contains any of the keywords
|
|
19
|
+
*/
|
|
20
|
+
export declare const containsKeyword: (string: string, keywords: string[]) => boolean;
|
|
21
|
+
export declare const isBackCameraName: (string: string) => boolean;
|
|
22
|
+
export declare const isFrontCameraName: (string: string) => boolean;
|
|
23
|
+
//# sourceMappingURL=cameraNames.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cameraNames.d.ts","sourceRoot":"","sources":["../../src/core/cameraNames.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,kBAAkB,gWAuEF,CAAC;AAE9B;;GAEG;AACH,eAAO,MAAM,mBAAmB,sUAmEH,CAAC;AAE9B;;GAEG;AACH,eAAO,MAAM,uBAAuB,8vBA8CP,CAAC;AAE9B;;GAEG;AACH,eAAO,MAAM,+BAA+B,krCAsCf,CAAC;AAE9B;;GAEG;AACH,eAAO,MAAM,eAAe,WAAY,MAAM,YAAY,MAAM,EAAE,YAEjE,CAAC;AAEF,eAAO,MAAM,gBAAgB,WAAY,MAAM,YACF,CAAC;AAE9C,eAAO,MAAM,iBAAiB,WAAY,MAAM,YACF,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Camera, FacingMode } from "./Camera";
|
|
2
|
+
import { VideoResolution } from "./CameraManager";
|
|
3
|
+
/**
|
|
4
|
+
* Trigger camera permission dialog.
|
|
5
|
+
*/
|
|
6
|
+
export declare const askForCameraPermission: () => Promise<void>;
|
|
7
|
+
/**
|
|
8
|
+
* Returns available camera (`videoinput`) devices on the user's device.
|
|
9
|
+
*/
|
|
10
|
+
export declare const getCameraDevices: () => Promise<InputDeviceInfo[]>;
|
|
11
|
+
export declare const closeStreamTracks: (stream: MediaStream) => void;
|
|
12
|
+
export declare const createConstraints: (resolution: VideoResolution, facing?: FacingMode, id?: Camera["deviceInfo"]["deviceId"]) => MediaStreamConstraints;
|
|
13
|
+
/**
|
|
14
|
+
* The thing from tldraw
|
|
15
|
+
* @param cameras Available {@linkcode Camera}s on the device
|
|
16
|
+
* @param resolution Ideal resolution for the camera stream, will fall back to the closest available resolution.
|
|
17
|
+
* @param requestedFacing Ideal facing mode for the camera stream. If not provided, will default to back camera.
|
|
18
|
+
* If no facing mode is available, will return a best effort match.
|
|
19
|
+
*
|
|
20
|
+
* @returns A {@linkcode Camera} instance that matches the provided constraints, with an active stream.
|
|
21
|
+
*/
|
|
22
|
+
export declare const findIdealCamera: (cameras: Camera[], resolution?: VideoResolution, requestedFacing?: FacingMode) => Promise<Camera>;
|
|
23
|
+
/**
|
|
24
|
+
* Creates an array of {@linkcode Camera} instances with stream from native
|
|
25
|
+
* `deviceInfo` objects.
|
|
26
|
+
*/
|
|
27
|
+
export declare function createCameras(cameras: InputDeviceInfo[]): Camera[];
|
|
28
|
+
//# sourceMappingURL=cameraUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cameraUtils.d.ts","sourceRoot":"","sources":["../../src/core/cameraUtils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAoB,MAAM,iBAAiB,CAAC;AAIpE;;GAEG;AACH,eAAO,MAAM,sBAAsB,qBAalC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,kCAkB5B,CAAC;AAEF,eAAO,MAAM,iBAAiB,WAAY,WAAW,SAKpD,CAAC;AAEF,eAAO,MAAM,iBAAiB,eAChB,eAAe,WAClB,UAAU,OACd,MAAM,CAAC,YAAY,CAAC,CAAC,UAAU,CAAC,2BActC,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,YACjB,MAAM,EAAE,eACL,eAAe,oBACV,UAAU,KAC1B,OAAO,CAAC,MAAM,CAmIhB,CAAC;AAEF;;;GAGG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,eAAe,EAAE,YAWvD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* fix for postmessage performance
|
|
3
|
+
* https://bugs.chromium.org/p/chromium/issues/detail?id=1439768&q=&can=4
|
|
4
|
+
*/
|
|
5
|
+
export declare function createCustomImageData(imageData: ImageData): {
|
|
6
|
+
data: Uint8ClampedArray<ArrayBufferLike>;
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
colorSpace: PredefinedColorSpace;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=createCustomImageData.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createCustomImageData.d.ts","sourceRoot":"","sources":["../../src/core/createCustomImageData.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,SAAS;;;;;EASzD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"imageDataUtils.d.ts","sourceRoot":"","sources":["../../src/core/imageDataUtils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,cAAe,SAAS,WAclD,CAAC;AAEF,eAAO,MAAM,0BAA0B,YAAa,MAAM,WACR,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iosCameraNames.d.ts","sourceRoot":"","sources":["../../src/core/iosCameraNames.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,+BAA+B,UAsC3C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/core/utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,UAEvC;AAED,eAAO,MAAM,OAAO,WAAY,OAAO,KAAG,KASzC,CAAC;AAEF,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,QAY9D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"videoToImageData.d.ts","sourceRoot":"","sources":["../../src/core/videoToImageData.ts"],"names":[],"mappings":"AAEA,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,EAAE,OAAO,UAAQ,aA6BxE"}
|
package/types/index.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import "rvfc-polyfill";
|
|
2
|
+
export * from "./core/cameraManagerStore";
|
|
3
|
+
export * from "./core/Camera";
|
|
4
|
+
export * from "./core/CameraManager";
|
|
5
|
+
export * from "./ui/createCameraManagerUi";
|
|
6
|
+
export { cameraUiRefStore } from "./ui/zustandRefStore";
|
|
7
|
+
export type { CameraUiRefs } from "./ui/zustandRefStore";
|
|
8
|
+
export type { CameraUiLocalizationStrings, CameraUiLocaleRecord, } from "./ui/LocalizationContext";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAEvB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AAErC,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,YAAY,EACV,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,0BAA0B,CAAC"}
|