@elizaos/capacitor-camera 1.0.0

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.
@@ -0,0 +1,191 @@
1
+ import type { PluginListenerHandle } from "@capacitor/core";
2
+ export type CameraDirection = "front" | "back" | "external";
3
+ export type CameraFlashMode = "auto" | "on" | "off" | "torch";
4
+ export type CameraFocusMode = "auto" | "continuous" | "manual";
5
+ export type CameraExposureMode = "auto" | "continuous" | "manual";
6
+ export type MediaType = "photo" | "video";
7
+ export interface CameraDevice {
8
+ deviceId: string;
9
+ label: string;
10
+ direction: CameraDirection;
11
+ hasFlash: boolean;
12
+ hasZoom: boolean;
13
+ maxZoom: number;
14
+ supportedResolutions: CameraResolution[];
15
+ supportedFrameRates: number[];
16
+ }
17
+ export interface CameraResolution {
18
+ width: number;
19
+ height: number;
20
+ }
21
+ export interface CameraPreviewOptions {
22
+ element: HTMLElement;
23
+ deviceId?: string;
24
+ direction?: CameraDirection;
25
+ resolution?: CameraResolution;
26
+ frameRate?: number;
27
+ mirror?: boolean;
28
+ }
29
+ export interface CameraPreviewResult {
30
+ width: number;
31
+ height: number;
32
+ deviceId: string;
33
+ }
34
+ export interface PhotoCaptureOptions {
35
+ quality?: number;
36
+ format?: "jpeg" | "png" | "webp";
37
+ width?: number;
38
+ height?: number;
39
+ saveToGallery?: boolean;
40
+ exifOrientation?: boolean;
41
+ }
42
+ export interface PhotoResult {
43
+ base64: string;
44
+ format: string;
45
+ width: number;
46
+ height: number;
47
+ path?: string;
48
+ exif?: Record<string, string | number>;
49
+ }
50
+ export interface VideoCaptureOptions {
51
+ quality?: "low" | "medium" | "high" | "highest";
52
+ maxDuration?: number;
53
+ maxFileSize?: number;
54
+ saveToGallery?: boolean;
55
+ audio?: boolean;
56
+ bitrate?: number;
57
+ frameRate?: number;
58
+ }
59
+ export interface VideoRecordingState {
60
+ isRecording: boolean;
61
+ duration: number;
62
+ fileSize: number;
63
+ }
64
+ export interface VideoResult {
65
+ path: string;
66
+ duration: number;
67
+ width: number;
68
+ height: number;
69
+ fileSize: number;
70
+ mimeType: string;
71
+ }
72
+ export interface CameraSettings {
73
+ flash: CameraFlashMode;
74
+ zoom: number;
75
+ focusMode: CameraFocusMode;
76
+ exposureMode: CameraExposureMode;
77
+ exposureCompensation: number;
78
+ whiteBalance: "auto" | "daylight" | "cloudy" | "tungsten" | "fluorescent";
79
+ iso?: number;
80
+ shutterSpeed?: number;
81
+ }
82
+ export interface CameraPermissionStatus {
83
+ camera: "granted" | "denied" | "prompt";
84
+ microphone: "granted" | "denied" | "prompt";
85
+ photos: "granted" | "denied" | "prompt" | "limited";
86
+ }
87
+ export interface CameraErrorEvent {
88
+ code: string;
89
+ message: string;
90
+ }
91
+ export interface CameraFrameEvent {
92
+ timestamp: number;
93
+ width: number;
94
+ height: number;
95
+ }
96
+ export interface CameraPlugin {
97
+ /**
98
+ * Get list of available camera devices
99
+ */
100
+ getDevices(): Promise<{
101
+ devices: CameraDevice[];
102
+ }>;
103
+ /**
104
+ * Start camera preview in the specified element
105
+ */
106
+ startPreview(options: CameraPreviewOptions): Promise<CameraPreviewResult>;
107
+ /**
108
+ * Stop camera preview
109
+ */
110
+ stopPreview(): Promise<void>;
111
+ /**
112
+ * Switch to a different camera
113
+ */
114
+ switchCamera(options: {
115
+ deviceId?: string;
116
+ direction?: CameraDirection;
117
+ }): Promise<CameraPreviewResult>;
118
+ /**
119
+ * Capture a photo from the current preview
120
+ */
121
+ capturePhoto(options?: PhotoCaptureOptions): Promise<PhotoResult>;
122
+ /**
123
+ * Start recording video
124
+ */
125
+ startRecording(options?: VideoCaptureOptions): Promise<void>;
126
+ /**
127
+ * Stop recording and return the video file
128
+ */
129
+ stopRecording(): Promise<VideoResult>;
130
+ /**
131
+ * Get current recording state
132
+ */
133
+ getRecordingState(): Promise<VideoRecordingState>;
134
+ /**
135
+ * Get current camera settings
136
+ */
137
+ getSettings(): Promise<{
138
+ settings: CameraSettings;
139
+ }>;
140
+ /**
141
+ * Update camera settings
142
+ */
143
+ setSettings(options: {
144
+ settings: Partial<CameraSettings>;
145
+ }): Promise<void>;
146
+ /**
147
+ * Set zoom level (1.0 = no zoom)
148
+ */
149
+ setZoom(options: {
150
+ zoom: number;
151
+ }): Promise<void>;
152
+ /**
153
+ * Set focus point (x, y are normalized 0-1)
154
+ */
155
+ setFocusPoint(options: {
156
+ x: number;
157
+ y: number;
158
+ }): Promise<void>;
159
+ /**
160
+ * Set exposure point (x, y are normalized 0-1)
161
+ */
162
+ setExposurePoint(options: {
163
+ x: number;
164
+ y: number;
165
+ }): Promise<void>;
166
+ /**
167
+ * Check camera permissions
168
+ */
169
+ checkPermissions(): Promise<CameraPermissionStatus>;
170
+ /**
171
+ * Request camera permissions
172
+ */
173
+ requestPermissions(): Promise<CameraPermissionStatus>;
174
+ /**
175
+ * Add event listener for camera frame
176
+ */
177
+ addListener(eventName: "frame", listenerFunc: (event: CameraFrameEvent) => void): Promise<PluginListenerHandle>;
178
+ /**
179
+ * Add event listener for camera error
180
+ */
181
+ addListener(eventName: "error", listenerFunc: (event: CameraErrorEvent) => void): Promise<PluginListenerHandle>;
182
+ /**
183
+ * Add event listener for recording state changes
184
+ */
185
+ addListener(eventName: "recordingState", listenerFunc: (event: VideoRecordingState) => void): Promise<PluginListenerHandle>;
186
+ /**
187
+ * Remove all event listeners
188
+ */
189
+ removeAllListeners(): Promise<void>;
190
+ }
191
+ //# sourceMappingURL=definitions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,4 @@
1
+ import type { CameraPlugin } from "./definitions";
2
+ export * from "./definitions";
3
+ export declare const Camera: CameraPlugin;
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,cAAc,eAAe,CAAC;AAI9B,eAAO,MAAM,MAAM,cAEjB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { registerPlugin } from "@capacitor/core";
2
+ export * from "./definitions";
3
+ const loadWeb = () => import("./web").then((m) => new m.CameraWeb());
4
+ export const Camera = registerPlugin("ElizaCamera", {
5
+ web: loadWeb,
6
+ });
@@ -0,0 +1,58 @@
1
+ import { WebPlugin } from "@capacitor/core";
2
+ import type { CameraDevice, CameraDirection, CameraErrorEvent, CameraFrameEvent, CameraPermissionStatus, CameraPreviewOptions, CameraPreviewResult, CameraSettings, PhotoCaptureOptions, PhotoResult, VideoCaptureOptions, VideoRecordingState, VideoResult } from "./definitions";
3
+ type CameraEventData = CameraFrameEvent | CameraErrorEvent | VideoRecordingState;
4
+ export declare class CameraWeb extends WebPlugin {
5
+ private mediaStream;
6
+ private videoElement;
7
+ private previewElement;
8
+ private currentDeviceId;
9
+ private mediaRecorder;
10
+ private recordedChunks;
11
+ private recordingStartTime;
12
+ private recordingStateInterval;
13
+ private isRecording;
14
+ private currentSettings;
15
+ private pluginListeners;
16
+ getDevices(): Promise<{
17
+ devices: CameraDevice[];
18
+ }>;
19
+ private inferDirection;
20
+ private getDeviceCapabilities;
21
+ startPreview(options: CameraPreviewOptions): Promise<CameraPreviewResult>;
22
+ stopPreview(): Promise<void>;
23
+ switchCamera(options: {
24
+ deviceId?: string;
25
+ direction?: CameraDirection;
26
+ }): Promise<CameraPreviewResult>;
27
+ capturePhoto(options?: PhotoCaptureOptions): Promise<PhotoResult>;
28
+ startRecording(options?: VideoCaptureOptions): Promise<void>;
29
+ stopRecording(): Promise<VideoResult>;
30
+ getRecordingState(): Promise<VideoRecordingState>;
31
+ getSettings(): Promise<{
32
+ settings: CameraSettings;
33
+ }>;
34
+ setSettings(options: {
35
+ settings: Partial<CameraSettings>;
36
+ }): Promise<void>;
37
+ setZoom(options: {
38
+ zoom: number;
39
+ }): Promise<void>;
40
+ private applyZoom;
41
+ setFocusPoint(options: {
42
+ x: number;
43
+ y: number;
44
+ }): Promise<void>;
45
+ setExposurePoint(options: {
46
+ x: number;
47
+ y: number;
48
+ }): Promise<void>;
49
+ checkPermissions(): Promise<CameraPermissionStatus>;
50
+ requestPermissions(): Promise<CameraPermissionStatus>;
51
+ addListener(eventName: string, listenerFunc: (event: CameraEventData) => void): Promise<{
52
+ remove: () => Promise<void>;
53
+ }>;
54
+ removeAllListeners(): Promise<void>;
55
+ protected notifyListeners(eventName: string, data: CameraEventData): void;
56
+ }
57
+ export {};
58
+ //# sourceMappingURL=web.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web.d.ts","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,WAAW,EACZ,MAAM,eAAe,CAAC;AAEvB,KAAK,eAAe,GAChB,gBAAgB,GAChB,gBAAgB,GAChB,mBAAmB,CAAC;AAYxB,qBAAa,SAAU,SAAQ,SAAS;IACtC,OAAO,CAAC,WAAW,CAA4B;IAC/C,OAAO,CAAC,YAAY,CAAiC;IACrD,OAAO,CAAC,cAAc,CAA4B;IAClD,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,sBAAsB,CAA+C;IAC7E,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,eAAe,CAOrB;IACF,OAAO,CAAC,eAAe,CAGf;IAEF,UAAU,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,YAAY,EAAE,CAAA;KAAE,CAAC;IA8BxD,OAAO,CAAC,cAAc;YAmBR,qBAAqB;IAmE7B,YAAY,CAChB,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC;IAuDzB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB5B,YAAY,CAAC,OAAO,EAAE;QAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,eAAe,CAAC;KAC7B,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAe1B,YAAY,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;IAoDjE,cAAc,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkF5D,aAAa,IAAI,OAAO,CAAC,WAAW,CAAC;IA8DrC,iBAAiB,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAgBjD,WAAW,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE,cAAc,CAAA;KAAE,CAAC;IAIpD,WAAW,CAAC,OAAO,EAAE;QACzB,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;KACnC,GAAG,OAAO,CAAC,IAAI,CAAC;IAQX,OAAO,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YAUzC,SAAS;IAwBjB,aAAa,CAAC,OAAO,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B/D,gBAAgB,CAAC,OAAO,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA6BlE,gBAAgB,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAkCnD,kBAAkB,IAAI,OAAO,CAAC,sBAAsB,CAAC;IA+CrD,WAAW,CACf,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,GAC7C,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;IAWrC,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIzC,SAAS,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI;CAO1E"}