@hexar/biometric-identity-sdk-react-native 1.0.6 → 1.0.8

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.
@@ -1 +1 @@
1
- {"version":3,"file":"BiometricIdentityFlow.d.ts","sourceRoot":"","sources":["../../src/components/BiometricIdentityFlow.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAA2C,MAAM,OAAO,CAAC;AAChE,OAAO,EAOL,SAAS,EACV,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,cAAc,EAId,iBAAiB,EAClB,MAAM,oCAAoC,CAAC;AAU5C,MAAM,WAAW,0BAA0B;IACzC,oBAAoB,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzD,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IACzC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE;QACP,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,OAAO,CAAC,EAAE,SAAS,CAAC;KACrB,CAAC;CACH;AAED,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAwStE,CAAC;AAiOF,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"BiometricIdentityFlow.d.ts","sourceRoot":"","sources":["../../src/components/BiometricIdentityFlow.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAA2C,MAAM,OAAO,CAAC;AAChE,OAAO,EAOL,SAAS,EACV,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,cAAc,EAKd,iBAAiB,EAClB,MAAM,oCAAoC,CAAC;AAU5C,MAAM,WAAW,0BAA0B;IACzC,oBAAoB,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzD,OAAO,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAC;IACzC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE;QACP,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,OAAO,CAAC,EAAE,SAAS,CAAC;KACrB,CAAC;CACH;AAED,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CAoTtE,CAAC;AAiOF,eAAe,qBAAqB,CAAC"}
@@ -56,11 +56,16 @@ const BiometricIdentityFlow = ({ onValidationComplete, onError, theme, language,
56
56
  const [currentChallenges, setCurrentChallenges] = (0, react_1.useState)([]);
57
57
  const [isLoadingChallenges, setIsLoadingChallenges] = (0, react_1.useState)(false);
58
58
  // Set language early, before any components render
59
+ // Priority: language prop > SDK config language > default 'en'
59
60
  // Run on mount and whenever language prop changes
60
61
  (0, react_1.useEffect)(() => {
61
62
  if (language) {
63
+ // If language prop is provided, override the config
62
64
  (0, biometric_identity_sdk_core_1.setLanguage)(language);
63
65
  }
66
+ // If no language prop, the language should already be set by BiometricIdentitySDK.configure()
67
+ // The global language state is set when configure() is called, so getStrings() will
68
+ // automatically return strings for the configured language (or 'en' as default)
64
69
  }, [language]);
65
70
  const strings = (0, biometric_identity_sdk_core_1.getStrings)();
66
71
  const styles = createStyles(theme);
@@ -153,17 +158,21 @@ const BiometricIdentityFlow = ({ onValidationComplete, onError, theme, language,
153
158
  }
154
159
  // Show instructions on first load
155
160
  if (showInstructions) {
156
- return (react_1.default.createElement(InstructionsScreen_1.InstructionsScreen, { theme: theme, language: language, onStart: () => setShowInstructions(false), styles: customStyles }));
161
+ return (react_1.default.createElement(InstructionsScreen_1.InstructionsScreen, { theme: theme, language: language, onStart: () => setShowInstructions(false), onCancel: onError ? () => onError({
162
+ name: 'BiometricError',
163
+ message: 'User cancelled',
164
+ code: biometric_identity_sdk_core_1.BiometricErrorCode.USER_CANCELLED,
165
+ }) : undefined, styles: customStyles }));
157
166
  }
158
167
  // Show camera/video recorder
159
168
  if (showCamera) {
160
169
  if (cameraMode === 'video') {
161
- return (react_1.default.createElement(VideoRecorder_1.VideoRecorder, { theme: theme, challenges: currentChallenges, smartMode: smartLivenessMode, sessionId: sdk.getSessionId() || undefined, onComplete: handleCaptureComplete, onCancel: () => setShowCamera(false), onFetchChallenges: async () => {
170
+ return (react_1.default.createElement(VideoRecorder_1.VideoRecorder, { theme: theme, language: language, challenges: currentChallenges, smartMode: smartLivenessMode, sessionId: sdk.getSessionId() || undefined, onComplete: handleCaptureComplete, onCancel: () => setShowCamera(false), onFetchChallenges: async () => {
162
171
  const challenges = await fetchChallenges('active');
163
172
  return challenges;
164
173
  } }));
165
174
  }
166
- return (react_1.default.createElement(CameraCapture_1.CameraCapture, { mode: cameraMode, theme: theme, onCapture: handleCaptureComplete, onCancel: () => setShowCamera(false) }));
175
+ return (react_1.default.createElement(CameraCapture_1.CameraCapture, { mode: cameraMode, theme: theme, language: language, onCapture: handleCaptureComplete, onCancel: () => setShowCamera(false) }));
167
176
  }
168
177
  // Show validation progress
169
178
  if (state.currentStep === biometric_identity_sdk_core_1.SDKStep.VALIDATING) {
@@ -3,10 +3,11 @@
3
3
  * Handles ID document photo capture
4
4
  */
5
5
  import React from 'react';
6
- import { ThemeConfig } from '@hexar/biometric-identity-sdk-core';
6
+ import { ThemeConfig, SupportedLanguage } from '@hexar/biometric-identity-sdk-core';
7
7
  export interface CameraCaptureProps {
8
8
  mode: 'front' | 'back';
9
9
  theme?: ThemeConfig;
10
+ language?: SupportedLanguage;
10
11
  onCapture: (imageData: string) => void;
11
12
  onCancel: () => void;
12
13
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CameraCapture.d.ts","sourceRoot":"","sources":["../../src/components/CameraCapture.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAsC,MAAM,OAAO,CAAC;AAY3D,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAIjE,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAiNtD,CAAC;AA0JF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"CameraCapture.d.ts","sourceRoot":"","sources":["../../src/components/CameraCapture.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAsC,MAAM,OAAO,CAAC;AAY3D,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAA2B,MAAM,oCAAoC,CAAC;AAI7G,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA6NtD,CAAC;AA0JF,eAAe,aAAa,CAAC"}
@@ -42,12 +42,17 @@ const react_1 = __importStar(require("react"));
42
42
  const react_native_1 = require("react-native");
43
43
  const react_native_vision_camera_1 = require("react-native-vision-camera");
44
44
  const react_native_permissions_1 = require("react-native-permissions");
45
+ const biometric_identity_sdk_core_1 = require("@hexar/biometric-identity-sdk-core");
45
46
  const { width, height } = react_native_1.Dimensions.get('window');
46
- const CameraCapture = ({ mode, theme, onCapture, onCancel, }) => {
47
+ const CameraCapture = ({ mode, theme, language, onCapture, onCancel, }) => {
47
48
  const [isCapturing, setIsCapturing] = (0, react_1.useState)(false);
48
49
  const [hasPermission, setHasPermission] = (0, react_1.useState)(false);
49
50
  const cameraRef = (0, react_1.useRef)(null);
50
51
  const { hasPermission: cameraPermission, requestPermission } = (0, react_native_vision_camera_1.useCameraPermission)();
52
+ if (language) {
53
+ (0, biometric_identity_sdk_core_1.setLanguage)(language);
54
+ }
55
+ const strings = (0, biometric_identity_sdk_core_1.getStrings)();
51
56
  // Get camera device (back camera for document capture)
52
57
  const device = (0, react_native_vision_camera_1.useCameraDevice)('back');
53
58
  (0, react_1.useEffect)(() => {
@@ -78,7 +83,10 @@ const CameraCapture = ({ mode, theme, onCapture, onCancel, }) => {
78
83
  catch (error) {
79
84
  console.error('Permission check error:', error);
80
85
  setHasPermission(false);
81
- react_native_1.Alert.alert('Camera Permission Required', 'Please enable camera access in your device settings to capture your ID document.');
86
+ const errorMsg = typeof strings.errors.cameraPermissionDenied === 'string'
87
+ ? strings.errors.cameraPermissionDenied
88
+ : strings.errors.cameraPermissionDenied?.message || 'Please enable camera access in your device settings to capture your ID document.';
89
+ react_native_1.Alert.alert('Camera Permission Required', errorMsg);
82
90
  }
83
91
  };
84
92
  const handleCapture = async () => {
@@ -136,23 +144,25 @@ const CameraCapture = ({ mode, theme, onCapture, onCancel, }) => {
136
144
  }
137
145
  };
138
146
  const instructions = mode === 'front'
139
- ? 'Position the front of your ID within the frame'
140
- : 'Position the back of your ID within the frame';
147
+ ? strings.capture.frontId.instruction
148
+ : strings.capture.backId.instruction;
141
149
  if (!hasPermission) {
142
150
  return (react_1.default.createElement(react_native_1.View, { style: styles.container },
143
151
  react_1.default.createElement(react_native_1.View, { style: styles.permissionContainer },
144
- react_1.default.createElement(react_native_1.Text, { style: styles.permissionText }, "Camera permission is required"),
152
+ react_1.default.createElement(react_native_1.Text, { style: styles.permissionText }, typeof strings.errors.cameraPermissionDenied === 'string'
153
+ ? strings.errors.cameraPermissionDenied
154
+ : strings.errors.cameraPermissionDenied?.message || 'Camera permission is required'),
145
155
  react_1.default.createElement(react_native_1.TouchableOpacity, { style: [styles.button, { backgroundColor: theme?.primaryColor || '#6366F1' }], onPress: checkPermissions },
146
- react_1.default.createElement(react_native_1.Text, { style: styles.buttonText }, "Grant Permission")),
156
+ react_1.default.createElement(react_native_1.Text, { style: styles.buttonText }, strings.common.grantPermission || 'Grant Permission')),
147
157
  react_1.default.createElement(react_native_1.TouchableOpacity, { style: [styles.button, styles.cancelButton], onPress: onCancel },
148
- react_1.default.createElement(react_native_1.Text, { style: styles.buttonText }, "Cancel")))));
158
+ react_1.default.createElement(react_native_1.Text, { style: styles.buttonText }, strings.common.cancel || 'Cancel')))));
149
159
  }
150
160
  if (!device) {
151
161
  return (react_1.default.createElement(react_native_1.View, { style: styles.container },
152
162
  react_1.default.createElement(react_native_1.View, { style: styles.permissionContainer },
153
- react_1.default.createElement(react_native_1.Text, { style: styles.permissionText }, "Camera not available"),
163
+ react_1.default.createElement(react_native_1.Text, { style: styles.permissionText }, strings.errors.cameraNotAvailable || 'Camera not available'),
154
164
  react_1.default.createElement(react_native_1.TouchableOpacity, { style: [styles.button, styles.cancelButton], onPress: onCancel },
155
- react_1.default.createElement(react_native_1.Text, { style: styles.buttonText }, "Cancel")))));
165
+ react_1.default.createElement(react_native_1.Text, { style: styles.buttonText }, strings.common.cancel || 'Cancel')))));
156
166
  }
157
167
  return (react_1.default.createElement(react_native_1.View, { style: styles.container },
158
168
  react_1.default.createElement(react_native_1.View, { style: styles.cameraContainer },
@@ -166,15 +176,11 @@ const CameraCapture = ({ mode, theme, onCapture, onCancel, }) => {
166
176
  react_1.default.createElement(react_native_1.View, { style: [styles.corner, styles.cornerBottomRight] }))))),
167
177
  react_1.default.createElement(react_native_1.View, { style: styles.instructionsContainer },
168
178
  react_1.default.createElement(react_native_1.Text, { style: styles.instructionsText }, instructions),
169
- react_1.default.createElement(react_native_1.Text, { style: styles.tipsText },
170
- "\u2022 Ensure good lighting",
171
- '\n',
172
- "\u2022 Avoid glare and shadows",
173
- '\n',
174
- "\u2022 Keep document flat and complete")),
179
+ react_1.default.createElement(react_native_1.Text, { style: styles.tipsText }, mode === 'front' ? strings.capture.frontId.tips : strings.capture.backId.tips ||
180
+ '• Ensure good lighting\n• Avoid glare and shadows\n• Keep document flat and complete')),
175
181
  react_1.default.createElement(react_native_1.View, { style: styles.controls },
176
182
  react_1.default.createElement(react_native_1.TouchableOpacity, { style: [styles.button, styles.cancelButton], onPress: onCancel },
177
- react_1.default.createElement(react_native_1.Text, { style: styles.buttonText }, "Cancel")),
183
+ react_1.default.createElement(react_native_1.Text, { style: styles.buttonText }, strings.common.cancel || 'Cancel')),
178
184
  react_1.default.createElement(react_native_1.TouchableOpacity, { style: [
179
185
  styles.button,
180
186
  styles.captureButton,
@@ -9,6 +9,7 @@ export interface InstructionsScreenProps {
9
9
  theme?: ThemeConfig;
10
10
  language?: SupportedLanguage;
11
11
  onStart: () => void;
12
+ onCancel?: () => void;
12
13
  styles?: {
13
14
  container?: ViewStyle;
14
15
  content?: ViewStyle;
@@ -1 +1 @@
1
- {"version":3,"file":"InstructionsScreen.d.ts","sourceRoot":"","sources":["../../src/components/InstructionsScreen.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,EAML,SAAS,EACV,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAA2B,MAAM,oCAAoC,CAAC;AAE7G,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE;QACP,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,OAAO,CAAC,EAAE,SAAS,CAAC;KACrB,CAAC;CACH;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA4FhE,CAAC;AAuLF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"InstructionsScreen.d.ts","sourceRoot":"","sources":["../../src/components/InstructionsScreen.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAA8B,MAAM,OAAO,CAAC;AACnD,OAAO,EAML,SAAS,EACV,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAA2B,MAAM,oCAAoC,CAAC;AAE7G,MAAM,WAAW,uBAAuB;IACtC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,MAAM,CAAC,EAAE;QACP,SAAS,CAAC,EAAE,SAAS,CAAC;QACtB,OAAO,CAAC,EAAE,SAAS,CAAC;KACrB,CAAC;CACH;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CA4GhE,CAAC;AAiMF,eAAe,kBAAkB,CAAC"}
@@ -41,7 +41,7 @@ exports.InstructionsScreen = void 0;
41
41
  const react_1 = __importStar(require("react"));
42
42
  const react_native_1 = require("react-native");
43
43
  const biometric_identity_sdk_core_1 = require("@hexar/biometric-identity-sdk-core");
44
- const InstructionsScreen = ({ theme, language = 'en', onStart, styles: customStyles, }) => {
44
+ const InstructionsScreen = ({ theme, language = 'en', onStart, onCancel, styles: customStyles, }) => {
45
45
  const [strings, setStrings] = (0, react_1.useState)(() => {
46
46
  // Set initial language
47
47
  if (language) {
@@ -76,9 +76,16 @@ const InstructionsScreen = ({ theme, language = 'en', onStart, styles: customSty
76
76
  react_1.default.createElement(react_native_1.View, { style: styles.privacyContainer },
77
77
  react_1.default.createElement(react_native_1.Text, { style: styles.privacyText }, privacyContent))),
78
78
  react_1.default.createElement(react_native_1.View, { style: styles.footer },
79
+ onCancel && (react_1.default.createElement(react_native_1.TouchableOpacity, { style: [
80
+ styles.button,
81
+ styles.cancelButton,
82
+ { borderColor: theme?.errorColor || '#EF4444' },
83
+ ], onPress: onCancel },
84
+ react_1.default.createElement(react_native_1.Text, { style: [styles.buttonText, { color: theme?.errorColor || '#EF4444' }] }, strings.common.cancel || 'Cancel'))),
79
85
  react_1.default.createElement(react_native_1.TouchableOpacity, { style: [
80
86
  styles.button,
81
87
  { backgroundColor: theme?.primaryColor || '#6366F1' },
88
+ onCancel && styles.startButton,
82
89
  ], onPress: onStart },
83
90
  react_1.default.createElement(react_native_1.Text, { style: styles.buttonText }, strings.instructions.startButton)))));
84
91
  };
@@ -175,12 +182,22 @@ const styles = react_native_1.StyleSheet.create({
175
182
  padding: 24,
176
183
  borderTopWidth: 1,
177
184
  borderTopColor: '#E5E7EB',
185
+ flexDirection: 'row',
186
+ gap: 12,
178
187
  },
179
188
  button: {
180
189
  paddingVertical: 16,
181
190
  paddingHorizontal: 32,
182
191
  borderRadius: 8,
183
192
  alignItems: 'center',
193
+ flex: 1,
194
+ },
195
+ cancelButton: {
196
+ borderWidth: 2,
197
+ backgroundColor: 'transparent',
198
+ },
199
+ startButton: {
200
+ flex: 1,
184
201
  },
185
202
  buttonText: {
186
203
  color: '#FFFFFF',
@@ -3,7 +3,7 @@
3
3
  * Features challenge-response flow with guided head movements
4
4
  */
5
5
  import React from 'react';
6
- import { ThemeConfig, LivenessInstruction } from '@hexar/biometric-identity-sdk-core';
6
+ import { ThemeConfig, LivenessInstruction, SupportedLanguage } from '@hexar/biometric-identity-sdk-core';
7
7
  export interface ChallengeAction {
8
8
  action: string;
9
9
  instruction: string;
@@ -13,6 +13,7 @@ export interface ChallengeAction {
13
13
  }
14
14
  export interface VideoRecorderProps {
15
15
  theme?: ThemeConfig;
16
+ language?: SupportedLanguage;
16
17
  /** Total recording duration in ms (default: 8000ms for smart mode) */
17
18
  duration?: number;
18
19
  /** Instructions for user to follow */
@@ -1 +1 @@
1
- {"version":3,"file":"VideoRecorder.d.ts","sourceRoot":"","sources":["../../src/components/VideoRecorder.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AAaxE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAGtF,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACrC,0CAA0C;IAC1C,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;IAC/B,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wCAAwC;IACxC,UAAU,EAAE,CAAC,SAAS,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACtD,iCAAiC;IACjC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,gDAAgD;IAChD,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAgDD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CA2kBtD,CAAC;AA4OF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"VideoRecorder.d.ts","sourceRoot":"","sources":["../../src/components/VideoRecorder.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAmD,MAAM,OAAO,CAAC;AAaxE,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,iBAAiB,EAA2B,MAAM,oCAAoC,CAAC;AAGlI,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,YAAY,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACrC,0CAA0C;IAC1C,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;IAC/B,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,wCAAwC;IACxC,UAAU,EAAE,CAAC,SAAS,EAAE,oBAAoB,KAAK,IAAI,CAAC;IACtD,iCAAiC;IACjC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,gDAAgD;IAChD,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;CACtD;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA+CD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAmsBtD,CAAC;AA4OF,eAAe,aAAa,CAAC"}