react-native-frame-capture 1.0.1

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.
Files changed (77) hide show
  1. package/FrameCapture.podspec +21 -0
  2. package/LICENSE +20 -0
  3. package/README.md +158 -0
  4. package/android/build.gradle +77 -0
  5. package/android/gradle.properties +5 -0
  6. package/android/src/main/AndroidManifest.xml +20 -0
  7. package/android/src/main/java/com/framecapture/CaptureManager.kt +831 -0
  8. package/android/src/main/java/com/framecapture/Constants.kt +196 -0
  9. package/android/src/main/java/com/framecapture/ErrorHandler.kt +165 -0
  10. package/android/src/main/java/com/framecapture/FrameCaptureModule.kt +653 -0
  11. package/android/src/main/java/com/framecapture/FrameCapturePackage.kt +32 -0
  12. package/android/src/main/java/com/framecapture/OverlayRenderer.kt +423 -0
  13. package/android/src/main/java/com/framecapture/PermissionHandler.kt +150 -0
  14. package/android/src/main/java/com/framecapture/ScreenCaptureService.kt +366 -0
  15. package/android/src/main/java/com/framecapture/StorageManager.kt +221 -0
  16. package/android/src/main/java/com/framecapture/capture/BitmapProcessor.kt +157 -0
  17. package/android/src/main/java/com/framecapture/capture/CaptureEventEmitter.kt +120 -0
  18. package/android/src/main/java/com/framecapture/models/CaptureModels.kt +302 -0
  19. package/android/src/main/java/com/framecapture/models/EnumsAndExtensions.kt +60 -0
  20. package/android/src/main/java/com/framecapture/models/OverlayModels.kt +154 -0
  21. package/android/src/main/java/com/framecapture/service/CaptureNotificationManager.kt +286 -0
  22. package/android/src/main/java/com/framecapture/storage/StorageStrategies.kt +317 -0
  23. package/android/src/main/java/com/framecapture/utils/ValidationUtils.kt +379 -0
  24. package/app.plugin.js +1 -0
  25. package/ios/FrameCapture.h +5 -0
  26. package/ios/FrameCapture.mm +21 -0
  27. package/lib/module/NativeFrameCapture.js +24 -0
  28. package/lib/module/NativeFrameCapture.js.map +1 -0
  29. package/lib/module/api.js +146 -0
  30. package/lib/module/api.js.map +1 -0
  31. package/lib/module/constants.js +67 -0
  32. package/lib/module/constants.js.map +1 -0
  33. package/lib/module/errors.js +19 -0
  34. package/lib/module/errors.js.map +1 -0
  35. package/lib/module/events.js +58 -0
  36. package/lib/module/events.js.map +1 -0
  37. package/lib/module/index.js +24 -0
  38. package/lib/module/index.js.map +1 -0
  39. package/lib/module/normalize.js +51 -0
  40. package/lib/module/normalize.js.map +1 -0
  41. package/lib/module/package.json +1 -0
  42. package/lib/module/types.js +165 -0
  43. package/lib/module/types.js.map +1 -0
  44. package/lib/module/validation.js +190 -0
  45. package/lib/module/validation.js.map +1 -0
  46. package/lib/typescript/package.json +1 -0
  47. package/lib/typescript/plugin/src/index.d.ts +4 -0
  48. package/lib/typescript/plugin/src/index.d.ts.map +1 -0
  49. package/lib/typescript/src/NativeFrameCapture.d.ts +75 -0
  50. package/lib/typescript/src/NativeFrameCapture.d.ts.map +1 -0
  51. package/lib/typescript/src/api.d.ts +66 -0
  52. package/lib/typescript/src/api.d.ts.map +1 -0
  53. package/lib/typescript/src/constants.d.ts +41 -0
  54. package/lib/typescript/src/constants.d.ts.map +1 -0
  55. package/lib/typescript/src/errors.d.ts +14 -0
  56. package/lib/typescript/src/errors.d.ts.map +1 -0
  57. package/lib/typescript/src/events.d.ts +30 -0
  58. package/lib/typescript/src/events.d.ts.map +1 -0
  59. package/lib/typescript/src/index.d.ts +12 -0
  60. package/lib/typescript/src/index.d.ts.map +1 -0
  61. package/lib/typescript/src/normalize.d.ts +43 -0
  62. package/lib/typescript/src/normalize.d.ts.map +1 -0
  63. package/lib/typescript/src/types.d.ts +247 -0
  64. package/lib/typescript/src/types.d.ts.map +1 -0
  65. package/lib/typescript/src/validation.d.ts +15 -0
  66. package/lib/typescript/src/validation.d.ts.map +1 -0
  67. package/package.json +196 -0
  68. package/plugin/build/index.js +48 -0
  69. package/src/NativeFrameCapture.ts +86 -0
  70. package/src/api.ts +189 -0
  71. package/src/constants.ts +69 -0
  72. package/src/errors.ts +21 -0
  73. package/src/events.ts +61 -0
  74. package/src/index.tsx +31 -0
  75. package/src/normalize.ts +81 -0
  76. package/src/types.ts +327 -0
  77. package/src/validation.ts +321 -0
@@ -0,0 +1,21 @@
1
+ #import "FrameCapture.h"
2
+
3
+ @implementation FrameCapture
4
+ - (NSNumber *)multiply:(double)a b:(double)b {
5
+ NSNumber *result = @(a * b);
6
+
7
+ return result;
8
+ }
9
+
10
+ - (std::shared_ptr<facebook::react::TurboModule>)getTurboModule:
11
+ (const facebook::react::ObjCTurboModule::InitParams &)params
12
+ {
13
+ return std::make_shared<facebook::react::NativeFrameCaptureSpecJSI>(params);
14
+ }
15
+
16
+ + (NSString *)moduleName
17
+ {
18
+ return @"FrameCapture";
19
+ }
20
+
21
+ @end
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Native TurboModule bridge for React Native Frame Capture
5
+ * @module NativeFrameCapture
6
+ */
7
+
8
+ import { TurboModuleRegistry } from 'react-native';
9
+
10
+ /**
11
+ * EventEmitter type for TurboModule events
12
+ */
13
+
14
+ /**
15
+ * Event payload types (defined inline for codegen compatibility)
16
+ */
17
+
18
+ /**
19
+ * TurboModule specification for FrameCapture
20
+ * Defines the native methods implemented in Kotlin
21
+ */
22
+
23
+ export default TurboModuleRegistry.getEnforcing('FrameCapture');
24
+ //# sourceMappingURL=NativeFrameCapture.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"..\\..\\src","sources":["NativeFrameCapture.ts"],"mappings":";;AAAA;AACA;AACA;AACA;;AAEA,SAASA,mBAAmB,QAA0B,cAAc;;AAEpE;AACA;AACA;;AAGA;AACA;AACA;;AA4CA;AACA;AACA;AACA;;AAwBA,eAAeA,mBAAmB,CAACC,YAAY,CAAO,cAAc,CAAC","ignoreList":[]}
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Core API functions for React Native Frame Capture
5
+ * @module api
6
+ */
7
+
8
+ import NativeFrameCapture from "./NativeFrameCapture.js";
9
+ import { CaptureError } from "./errors.js";
10
+ import { validateOptions, mergeOptions } from "./validation.js";
11
+ import { normalizeOptions } from "./normalize.js";
12
+ import { CaptureErrorCode } from "./types.js";
13
+
14
+ /**
15
+ * Requests MediaProjection permission from the user
16
+ *
17
+ * @returns Promise resolving to permission status
18
+ * @throws {CaptureError} if permission request fails
19
+ */
20
+ export async function requestPermission() {
21
+ try {
22
+ const result = await NativeFrameCapture.requestPermission();
23
+ return result;
24
+ } catch (error) {
25
+ throw new CaptureError(error.code || CaptureErrorCode.SYSTEM_ERROR, error.message || 'Failed to request permission', error.details);
26
+ }
27
+ }
28
+
29
+ /**
30
+ * Checks current permission status without requesting
31
+ *
32
+ * @returns Promise resolving to current permission status
33
+ */
34
+ export async function checkPermission() {
35
+ try {
36
+ const result = await NativeFrameCapture.checkPermission();
37
+ return result;
38
+ } catch (error) {
39
+ throw new CaptureError(error.code || CaptureErrorCode.SYSTEM_ERROR, error.message || 'Failed to check permission', error.details);
40
+ }
41
+ }
42
+
43
+ /**
44
+ * Starts screen capture with the given options
45
+ *
46
+ * @param options - Capture configuration options (optional, uses defaults if not provided)
47
+ * @returns Promise resolving to capture session information
48
+ * @throws {CaptureError} if capture cannot be started
49
+ */
50
+ export async function startCapture(options) {
51
+ if (options) {
52
+ validateOptions(options);
53
+ }
54
+ const finalOptions = mergeOptions(options);
55
+ const nativeOptions = normalizeOptions(finalOptions);
56
+ try {
57
+ const result = await NativeFrameCapture.startCapture(nativeOptions);
58
+ return result;
59
+ } catch (error) {
60
+ throw new CaptureError(error.code || CaptureErrorCode.SYSTEM_ERROR, error.message || 'Failed to start capture', error.details);
61
+ }
62
+ }
63
+
64
+ /**
65
+ * Stops the active capture session
66
+ *
67
+ * @returns Promise that resolves when capture is stopped
68
+ * @throws {CaptureError} if stop operation fails
69
+ */
70
+ export async function stopCapture() {
71
+ try {
72
+ await NativeFrameCapture.stopCapture();
73
+ } catch (error) {
74
+ throw new CaptureError(error.code || CaptureErrorCode.SYSTEM_ERROR, error.message || 'Failed to stop capture', error.details);
75
+ }
76
+ }
77
+
78
+ /**
79
+ * Pauses the active capture session
80
+ *
81
+ * @returns Promise that resolves when capture is paused
82
+ * @throws {CaptureError} if pause operation fails
83
+ */
84
+ export async function pauseCapture() {
85
+ try {
86
+ await NativeFrameCapture.pauseCapture();
87
+ } catch (error) {
88
+ throw new CaptureError(error.code || CaptureErrorCode.SYSTEM_ERROR, error.message || 'Failed to pause capture', error.details);
89
+ }
90
+ }
91
+
92
+ /**
93
+ * Resumes a paused capture session
94
+ *
95
+ * @returns Promise that resolves when capture is resumed
96
+ * @throws {CaptureError} if resume operation fails
97
+ */
98
+ export async function resumeCapture() {
99
+ try {
100
+ await NativeFrameCapture.resumeCapture();
101
+ } catch (error) {
102
+ throw new CaptureError(error.code || CaptureErrorCode.SYSTEM_ERROR, error.message || 'Failed to resume capture', error.details);
103
+ }
104
+ }
105
+
106
+ /**
107
+ * Gets the current capture status
108
+ *
109
+ * @returns Promise resolving to current capture status
110
+ */
111
+ export async function getCaptureStatus() {
112
+ try {
113
+ const result = await NativeFrameCapture.getCaptureStatus();
114
+ return result;
115
+ } catch (error) {
116
+ throw new CaptureError(error.code || CaptureErrorCode.SYSTEM_ERROR, error.message || 'Failed to get capture status', error.details);
117
+ }
118
+ }
119
+
120
+ /**
121
+ * Checks if notification permission is granted (Android 13+)
122
+ *
123
+ * @returns Promise resolving to permission status
124
+ */
125
+ export async function checkNotificationPermission() {
126
+ try {
127
+ const result = await NativeFrameCapture.checkNotificationPermission();
128
+ return result;
129
+ } catch (error) {
130
+ throw new CaptureError(error.code || CaptureErrorCode.SYSTEM_ERROR, error.message || 'Failed to check notification permission', error.details);
131
+ }
132
+ }
133
+
134
+ /**
135
+ * Manually cleans up all temporary frame files
136
+ *
137
+ * @returns Promise that resolves when cleanup is complete
138
+ */
139
+ export async function cleanupTempFrames() {
140
+ try {
141
+ await NativeFrameCapture.cleanupTempFrames();
142
+ } catch (error) {
143
+ throw new CaptureError(error.code || CaptureErrorCode.SYSTEM_ERROR, error.message || 'Failed to cleanup temp frames', error.details);
144
+ }
145
+ }
146
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NativeFrameCapture","CaptureError","validateOptions","mergeOptions","normalizeOptions","CaptureErrorCode","requestPermission","result","error","code","SYSTEM_ERROR","message","details","checkPermission","startCapture","options","finalOptions","nativeOptions","stopCapture","pauseCapture","resumeCapture","getCaptureStatus","checkNotificationPermission","cleanupTempFrames"],"sourceRoot":"..\\..\\src","sources":["api.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Constants for React Native Frame Capture
5
+ * @module constants
6
+ */
7
+
8
+ /**
9
+ * Default configuration options
10
+ */
11
+ export const DEFAULT_OPTIONS = {
12
+ capture: {
13
+ interval: 1000
14
+ },
15
+ image: {
16
+ quality: 80,
17
+ format: 'jpeg'
18
+ }
19
+ };
20
+
21
+ /**
22
+ * Default advanced configuration (for validation fallbacks)
23
+ */
24
+ export const DEFAULT_ADVANCED_CONFIG = {
25
+ storage: {
26
+ warningThreshold: 100 * 1024 * 1024 // 100MB
27
+ },
28
+ fileNaming: {
29
+ prefix: 'capture_',
30
+ dateFormat: 'yyyyMMdd_HHmmss_SSS',
31
+ framePadding: 5
32
+ },
33
+ performance: {
34
+ overlayCacheSize: 10 * 1024 * 1024,
35
+ // 10MB
36
+ imageReaderBuffers: 2,
37
+ executorShutdownTimeout: 5000,
38
+ executorForcedShutdownTimeout: 1000
39
+ }
40
+ };
41
+
42
+ /**
43
+ * Minimum interval between captures (milliseconds)
44
+ */
45
+ export const MIN_INTERVAL = 100;
46
+
47
+ /**
48
+ * Maximum interval between captures (milliseconds)
49
+ */
50
+ export const MAX_INTERVAL = 60000;
51
+
52
+ /**
53
+ * Minimum image quality value
54
+ */
55
+ export const MIN_QUALITY = 0;
56
+
57
+ /**
58
+ * Maximum image quality value
59
+ */
60
+ export const MAX_QUALITY = 100;
61
+
62
+ /**
63
+ * Storage warning threshold (bytes)
64
+ * @deprecated Use advanced.storage.warningThreshold in CaptureOptions instead
65
+ */
66
+ export const STORAGE_WARNING_THRESHOLD = 100 * 1024 * 1024; // 100MB
67
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DEFAULT_OPTIONS","capture","interval","image","quality","format","DEFAULT_ADVANCED_CONFIG","storage","warningThreshold","fileNaming","prefix","dateFormat","framePadding","performance","overlayCacheSize","imageReaderBuffers","executorShutdownTimeout","executorForcedShutdownTimeout","MIN_INTERVAL","MAX_INTERVAL","MIN_QUALITY","MAX_QUALITY","STORAGE_WARNING_THRESHOLD"],"sourceRoot":"..\\..\\src","sources":["constants.ts"],"mappings":";;AAAA;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA,OAAO,MAAMA,eAA+B,GAAG;EAC7CC,OAAO,EAAE;IACPC,QAAQ,EAAE;EACZ,CAAC;EACDC,KAAK,EAAE;IACLC,OAAO,EAAE,EAAE;IACXC,MAAM,EAAE;EACV;AACF,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMC,uBAAuB,GAAG;EACrCC,OAAO,EAAE;IACPC,gBAAgB,EAAE,GAAG,GAAG,IAAI,GAAG,IAAI,CAAE;EACvC,CAAC;EACDC,UAAU,EAAE;IACVC,MAAM,EAAE,UAAU;IAClBC,UAAU,EAAE,qBAAqB;IACjCC,YAAY,EAAE;EAChB,CAA+B;EAC/BC,WAAW,EAAE;IACXC,gBAAgB,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI;IAAE;IACpCC,kBAAkB,EAAE,CAAC;IACrBC,uBAAuB,EAAE,IAAI;IAC7BC,6BAA6B,EAAE;EACjC;AACF,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMC,YAAY,GAAG,GAAG;;AAE/B;AACA;AACA;AACA,OAAO,MAAMC,YAAY,GAAG,KAAK;;AAEjC;AACA;AACA;AACA,OAAO,MAAMC,WAAW,GAAG,CAAC;;AAE5B;AACA;AACA;AACA,OAAO,MAAMC,WAAW,GAAG,GAAG;;AAE9B;AACA;AACA;AACA;AACA,OAAO,MAAMC,yBAAyB,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Error handling for React Native Frame Capture
5
+ * @module errors
6
+ */
7
+
8
+ /**
9
+ * Custom error class for capture operations
10
+ */
11
+ export class CaptureError extends Error {
12
+ constructor(code, message, details) {
13
+ super(message);
14
+ this.name = 'CaptureError';
15
+ this.code = code;
16
+ this.details = details;
17
+ }
18
+ }
19
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CaptureError","Error","constructor","code","message","details","name"],"sourceRoot":"..\\..\\src","sources":["errors.ts"],"mappings":";;AAAA;AACA;AACA;AACA;;AAIA;AACA;AACA;AACA,OAAO,MAAMA,YAAY,SAASC,KAAK,CAAC;EAItCC,WAAWA,CAACC,IAAsB,EAAEC,OAAe,EAAEC,OAAa,EAAE;IAClE,KAAK,CAACD,OAAO,CAAC;IACd,IAAI,CAACE,IAAI,GAAG,cAAc;IAC1B,IAAI,CAACH,IAAI,GAAGA,IAAI;IAChB,IAAI,CAACE,OAAO,GAAGA,OAAO;EACxB;AACF","ignoreList":[]}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Event handling for React Native Frame Capture
5
+ * @module events
6
+ */
7
+
8
+ import NativeFrameCapture from "./NativeFrameCapture.js";
9
+ import { CaptureEventType } from "./types.js";
10
+
11
+ /**
12
+ * Adds an event listener for capture events
13
+ *
14
+ * @param event - Event type to listen for
15
+ * @param callback - Function to call when event is emitted
16
+ * @returns Subscription object that can be used to remove the listener
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * const subscription = addListener(
21
+ * CaptureEventType.FRAME_CAPTURED,
22
+ * (event) => console.log('Frame captured:', event.filePath)
23
+ * );
24
+ *
25
+ * // Later, remove the listener
26
+ * subscription.remove();
27
+ * ```
28
+ */
29
+ export function addListener(event, callback) {
30
+ switch (event) {
31
+ case CaptureEventType.FRAME_CAPTURED:
32
+ return NativeFrameCapture.onFrameCaptured(callback);
33
+ case CaptureEventType.CAPTURE_ERROR:
34
+ return NativeFrameCapture.onCaptureError(callback);
35
+ case CaptureEventType.CAPTURE_STOP:
36
+ return NativeFrameCapture.onCaptureStop(callback);
37
+ case CaptureEventType.CAPTURE_START:
38
+ return NativeFrameCapture.onCaptureStart(callback);
39
+ case CaptureEventType.STORAGE_WARNING:
40
+ return NativeFrameCapture.onStorageWarning(callback);
41
+ case CaptureEventType.CAPTURE_PAUSE:
42
+ return NativeFrameCapture.onCapturePause(callback);
43
+ case CaptureEventType.CAPTURE_RESUME:
44
+ return NativeFrameCapture.onCaptureResume(callback);
45
+ case CaptureEventType.OVERLAY_ERROR:
46
+ return NativeFrameCapture.onOverlayError(callback);
47
+ default:
48
+ throw new Error(`Unknown event type: ${event}`);
49
+ }
50
+ }
51
+
52
+ /**
53
+ * @deprecated Use subscription.remove() instead
54
+ */
55
+ export function removeAllListeners(_event) {
56
+ console.warn('removeAllListeners is deprecated in New Architecture. Use subscription.remove() instead.');
57
+ }
58
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NativeFrameCapture","CaptureEventType","addListener","event","callback","FRAME_CAPTURED","onFrameCaptured","CAPTURE_ERROR","onCaptureError","CAPTURE_STOP","onCaptureStop","CAPTURE_START","onCaptureStart","STORAGE_WARNING","onStorageWarning","CAPTURE_PAUSE","onCapturePause","CAPTURE_RESUME","onCaptureResume","OVERLAY_ERROR","onOverlayError","Error","removeAllListeners","_event","console","warn"],"sourceRoot":"..\\..\\src","sources":["events.ts"],"mappings":";;AAAA;AACA;AACA;AACA;;AAGA,OAAOA,kBAAkB,MAAM,yBAAsB;AACrD,SAASC,gBAAgB,QAAmC,YAAS;;AAErE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASC,WAAWA,CACzBC,KAAuB,EACvBC,QAA8B,EACX;EACnB,QAAQD,KAAK;IACX,KAAKF,gBAAgB,CAACI,cAAc;MAClC,OAAOL,kBAAkB,CAACM,eAAe,CAACF,QAAe,CAAC;IAC5D,KAAKH,gBAAgB,CAACM,aAAa;MACjC,OAAOP,kBAAkB,CAACQ,cAAc,CAACJ,QAAe,CAAC;IAC3D,KAAKH,gBAAgB,CAACQ,YAAY;MAChC,OAAOT,kBAAkB,CAACU,aAAa,CAACN,QAAe,CAAC;IAC1D,KAAKH,gBAAgB,CAACU,aAAa;MACjC,OAAOX,kBAAkB,CAACY,cAAc,CAACR,QAAe,CAAC;IAC3D,KAAKH,gBAAgB,CAACY,eAAe;MACnC,OAAOb,kBAAkB,CAACc,gBAAgB,CAACV,QAAe,CAAC;IAC7D,KAAKH,gBAAgB,CAACc,aAAa;MACjC,OAAOf,kBAAkB,CAACgB,cAAc,CAACZ,QAAe,CAAC;IAC3D,KAAKH,gBAAgB,CAACgB,cAAc;MAClC,OAAOjB,kBAAkB,CAACkB,eAAe,CAACd,QAAe,CAAC;IAC5D,KAAKH,gBAAgB,CAACkB,aAAa;MACjC,OAAOnB,kBAAkB,CAACoB,cAAc,CAAChB,QAAe,CAAC;IAC3D;MACE,MAAM,IAAIiB,KAAK,CAAC,uBAAuBlB,KAAK,EAAE,CAAC;EACnD;AACF;;AAEA;AACA;AACA;AACA,OAAO,SAASmB,kBAAkBA,CAACC,MAAwB,EAAQ;EACjEC,OAAO,CAACC,IAAI,CACV,0FACF,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * React Native Frame Capture
5
+ * Production-grade screen capture library for React Native Android
6
+ *
7
+ * @packageDocumentation
8
+ */
9
+
10
+ // Export types
11
+ export * from "./types.js";
12
+
13
+ // Export constants
14
+ export * from "./constants.js";
15
+
16
+ // Export errors
17
+ export { CaptureError } from "./errors.js";
18
+
19
+ // Export API functions
20
+ export { requestPermission, checkPermission, startCapture, stopCapture, pauseCapture, resumeCapture, getCaptureStatus, checkNotificationPermission, cleanupTempFrames } from "./api.js";
21
+
22
+ // Export event functions
23
+ export { addListener, removeAllListeners } from "./events.js";
24
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CaptureError","requestPermission","checkPermission","startCapture","stopCapture","pauseCapture","resumeCapture","getCaptureStatus","checkNotificationPermission","cleanupTempFrames","addListener","removeAllListeners"],"sourceRoot":"..\\..\\src","sources":["index.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,YAAS;;AAEvB;AACA,cAAc,gBAAa;;AAE3B;AACA,SAASA,YAAY,QAAQ,aAAU;;AAEvC;AACA,SACEC,iBAAiB,EACjBC,eAAe,EACfC,YAAY,EACZC,WAAW,EACXC,YAAY,EACZC,aAAa,EACbC,gBAAgB,EAChBC,2BAA2B,EAC3BC,iBAAiB,QACZ,UAAO;;AAEd;AACA,SAASC,WAAW,EAAEC,kBAAkB,QAAQ,aAAU","ignoreList":[]}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Normalization utilities for converting organized CaptureOptions
5
+ * to the flat structure expected by native code
6
+ * @module normalize
7
+ */
8
+
9
+ /**
10
+ * Flat options structure expected by native code
11
+ */
12
+
13
+ /**
14
+ * Normalizes organized CaptureOptions to flat structure for native code
15
+ */
16
+ export function normalizeOptions(options) {
17
+ const {
18
+ capture,
19
+ image,
20
+ storage,
21
+ performance,
22
+ notification,
23
+ overlays
24
+ } = options;
25
+ return {
26
+ // Capture config
27
+ interval: capture.interval,
28
+ // Image config
29
+ quality: image.quality,
30
+ format: image.format,
31
+ scaleResolution: image.scaleResolution,
32
+ captureRegion: image.region,
33
+ excludeStatusBar: image.excludeStatusBar,
34
+ // Storage config
35
+ saveFrames: storage?.saveFrames,
36
+ storageLocation: storage?.location,
37
+ outputDirectory: storage?.outputDirectory,
38
+ // Pass through as-is
39
+ notification,
40
+ overlays,
41
+ // Advanced config (nested structure for native)
42
+ advanced: {
43
+ storage: storage?.warningThreshold !== undefined ? {
44
+ warningThreshold: storage.warningThreshold
45
+ } : undefined,
46
+ fileNaming: storage?.fileNaming,
47
+ performance
48
+ }
49
+ };
50
+ }
51
+ //# sourceMappingURL=normalize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["normalizeOptions","options","capture","image","storage","performance","notification","overlays","interval","quality","format","scaleResolution","captureRegion","region","excludeStatusBar","saveFrames","storageLocation","location","outputDirectory","advanced","warningThreshold","undefined","fileNaming"],"sourceRoot":"..\\..\\src","sources":["normalize.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAIA;AACA;AACA;;AA+BA;AACA;AACA;AACA,OAAO,SAASA,gBAAgBA,CAC9BC,OAAuB,EACD;EACtB,MAAM;IAAEC,OAAO;IAAEC,KAAK;IAAEC,OAAO;IAAEC,WAAW;IAAEC,YAAY;IAAEC;EAAS,CAAC,GACpEN,OAAO;EAET,OAAO;IACL;IACAO,QAAQ,EAAEN,OAAO,CAACM,QAAQ;IAE1B;IACAC,OAAO,EAAEN,KAAK,CAACM,OAAO;IACtBC,MAAM,EAAEP,KAAK,CAACO,MAAM;IACpBC,eAAe,EAAER,KAAK,CAACQ,eAAe;IACtCC,aAAa,EAAET,KAAK,CAACU,MAAM;IAC3BC,gBAAgB,EAAEX,KAAK,CAACW,gBAAgB;IAExC;IACAC,UAAU,EAAEX,OAAO,EAAEW,UAAU;IAC/BC,eAAe,EAAEZ,OAAO,EAAEa,QAAQ;IAClCC,eAAe,EAAEd,OAAO,EAAEc,eAAe;IAEzC;IACAZ,YAAY;IACZC,QAAQ;IAER;IACAY,QAAQ,EAAE;MACRf,OAAO,EACLA,OAAO,EAAEgB,gBAAgB,KAAKC,SAAS,GACnC;QAAED,gBAAgB,EAAEhB,OAAO,CAACgB;MAAiB,CAAC,GAC9CC,SAAS;MACfC,UAAU,EAAElB,OAAO,EAAEkB,UAAU;MAC/BjB;IACF;EACF,CAAC;AACH","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Type definitions for React Native Frame Capture
5
+ * @module types
6
+ */
7
+
8
+ // ============================================================================
9
+ // Enums
10
+ // ============================================================================
11
+
12
+ /**
13
+ * Capture state values
14
+ */
15
+ export let CaptureState = /*#__PURE__*/function (CaptureState) {
16
+ CaptureState["IDLE"] = "idle";
17
+ CaptureState["CAPTURING"] = "capturing";
18
+ CaptureState["PAUSED"] = "paused";
19
+ CaptureState["STOPPING"] = "stopping";
20
+ return CaptureState;
21
+ }({});
22
+
23
+ /**
24
+ * Permission status values
25
+ */
26
+ export let PermissionStatus = /*#__PURE__*/function (PermissionStatus) {
27
+ PermissionStatus["GRANTED"] = "granted";
28
+ PermissionStatus["DENIED"] = "denied";
29
+ PermissionStatus["NOT_DETERMINED"] = "not_determined";
30
+ return PermissionStatus;
31
+ }({});
32
+
33
+ /**
34
+ * Error codes for capture operations
35
+ */
36
+ export let CaptureErrorCode = /*#__PURE__*/function (CaptureErrorCode) {
37
+ CaptureErrorCode["PERMISSION_DENIED"] = "PERMISSION_DENIED";
38
+ CaptureErrorCode["ALREADY_CAPTURING"] = "ALREADY_CAPTURING";
39
+ CaptureErrorCode["INVALID_OPTIONS"] = "INVALID_OPTIONS";
40
+ CaptureErrorCode["STORAGE_ERROR"] = "STORAGE_ERROR";
41
+ CaptureErrorCode["SYSTEM_ERROR"] = "SYSTEM_ERROR";
42
+ CaptureErrorCode["NOT_SUPPORTED"] = "NOT_SUPPORTED";
43
+ return CaptureErrorCode;
44
+ }({});
45
+
46
+ /**
47
+ * Event types emitted by the capture system
48
+ */
49
+ export let CaptureEventType = /*#__PURE__*/function (CaptureEventType) {
50
+ CaptureEventType["FRAME_CAPTURED"] = "onFrameCaptured";
51
+ CaptureEventType["CAPTURE_ERROR"] = "onCaptureError";
52
+ CaptureEventType["CAPTURE_STOP"] = "onCaptureStop";
53
+ CaptureEventType["CAPTURE_START"] = "onCaptureStart";
54
+ CaptureEventType["STORAGE_WARNING"] = "onStorageWarning";
55
+ CaptureEventType["CAPTURE_PAUSE"] = "onCapturePause";
56
+ CaptureEventType["CAPTURE_RESUME"] = "onCaptureResume";
57
+ CaptureEventType["OVERLAY_ERROR"] = "onOverlayError";
58
+ return CaptureEventType;
59
+ }({});
60
+
61
+ // ============================================================================
62
+ // Basic Types
63
+ // ============================================================================
64
+
65
+ /**
66
+ * Unit type for capture region coordinates
67
+ */
68
+
69
+ /**
70
+ * Position preset for overlay placement
71
+ */
72
+
73
+ // ============================================================================
74
+ // Capture Configuration
75
+ // ============================================================================
76
+
77
+ /**
78
+ * Custom capture region specification
79
+ */
80
+
81
+ /**
82
+ * File naming configuration
83
+ */
84
+
85
+ /**
86
+ * Notification customization options for the foreground service
87
+ */
88
+
89
+ /**
90
+ * Capture behavior configuration
91
+ */
92
+
93
+ /**
94
+ * Image processing configuration
95
+ */
96
+
97
+ /**
98
+ * Storage configuration
99
+ */
100
+
101
+ /**
102
+ * Performance tuning configuration
103
+ */
104
+
105
+ /**
106
+ * Configuration options for screen capture
107
+ */
108
+
109
+ // ============================================================================
110
+ // Overlay Configuration
111
+ // ============================================================================
112
+
113
+ /**
114
+ * Custom position coordinates for overlay placement
115
+ */
116
+
117
+ /**
118
+ * Overlay position - either a preset string or custom coordinates
119
+ */
120
+
121
+ /**
122
+ * Text overlay style configuration
123
+ */
124
+
125
+ /**
126
+ * Text overlay configuration
127
+ */
128
+
129
+ /**
130
+ * Image size configuration
131
+ */
132
+
133
+ /**
134
+ * Image overlay configuration
135
+ */
136
+
137
+ /**
138
+ * Union type for all overlay configurations
139
+ */
140
+
141
+ // ============================================================================
142
+ // Session and Status
143
+ // ============================================================================
144
+
145
+ /**
146
+ * Information about an active capture session
147
+ */
148
+
149
+ /**
150
+ * Current capture status
151
+ */
152
+
153
+ // ============================================================================
154
+ // Event Interfaces
155
+ // ============================================================================
156
+
157
+ /**
158
+ * Re-export event types from NativeFrameCapture for consistency
159
+ * These are defined in NativeFrameCapture.ts for codegen compatibility
160
+ */
161
+
162
+ /**
163
+ * Union type for all event callbacks
164
+ */
165
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CaptureState","PermissionStatus","CaptureErrorCode","CaptureEventType"],"sourceRoot":"..\\..\\src","sources":["types.ts"],"mappings":";;AAAA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAYA,YAAY,0BAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAZA,YAAY;EAAA,OAAZA,YAAY;AAAA;;AAOxB;AACA;AACA;AACA,WAAYC,gBAAgB,0BAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAA,OAAhBA,gBAAgB;AAAA;;AAM5B;AACA;AACA;AACA,WAAYC,gBAAgB,0BAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAA,OAAhBA,gBAAgB;AAAA;;AAS5B;AACA;AACA;AACA,WAAYC,gBAAgB,0BAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAhBA,gBAAgB;EAAA,OAAhBA,gBAAgB;AAAA;;AAW5B;AACA;AACA;;AAEA;AACA;AACA;;AAGA;AACA;AACA;;AAQA;AACA;AACA;;AAEA;AACA;AACA;;AAcA;AACA;AACA;;AAUA;AACA;AACA;;AAmBA;AACA;AACA;;AAMA;AACA;AACA;;AAcA;AACA;AACA;;AAcA;AACA;AACA;;AAYA;AACA;AACA;;AAgBA;AACA;AACA;;AAEA;AACA;AACA;;AAOA;AACA;AACA;;AAGA;AACA;AACA;;AAUA;AACA;AACA;;AAQA;AACA;AACA;;AAMA;AACA;AACA;;AASA;AACA;AACA;;AAGA;AACA;AACA;;AAEA;AACA;AACA;;AAQA;AACA;AACA;;AAOA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAuBA;AACA;AACA","ignoreList":[]}