scandit-react-native-datacapture-id 7.6.0 → 8.0.0-beta.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.
package/dist/index.js CHANGED
@@ -1,82 +1,19 @@
1
- import { ScreenStateManager, FactoryMaker, createNativeProxy } from 'scandit-react-native-datacapture-core/dist/core';
2
- import { NativeModules, NativeEventEmitter, AppState } from 'react-native';
3
- import { IdCapture, IdCaptureSettings, loadIdDefaults, IdCaptureOverlay, IdCaptureListenerEvents } from './id.js';
4
- export { AamvaBarcodeVerificationResult, AamvaBarcodeVerificationStatus, AamvaBarcodeVerifier, BarcodeResult, CapturedId, CapturedSides, DateResult, DriverLicense, Duration, FullDocumentScanner, HealthInsuranceCard, IdAnonymizationMode, IdCapture, IdCaptureController, IdCaptureDocumentType, IdCaptureFeedback, IdCaptureListenerController, IdCaptureListenerEvents, IdCaptureOverlay, IdCaptureRegion, IdCaptureSettings, IdCard, IdImageType, IdImages, IdLayoutLineStyle, IdLayoutStyle, IdSide, MRZResult, Passport, ProfessionalDrivingPermit, RegionSpecific, RegionSpecificSubtype, RejectionReason, ResidencePermit, SingleSideScanner, TextHintPosition, UsRealIdStatus, VIZResult, VehicleRestriction, VisaIcao } from './id.js';
5
- import { FrameSourceState, Camera, CameraPosition, DataCaptureView, createRNNativeCaller, initCoreDefaults } from 'scandit-react-native-datacapture-core';
6
- import React, { forwardRef, useImperativeHandle, useState, useEffect, useRef, useMemo } from 'react';
7
-
8
- // tslint:disable:variable-name
9
- const NativeModule$1 = NativeModules.ScanditDataCaptureId;
10
- new NativeEventEmitter(NativeModule$1);
11
- // tslint:enable:variable-name
12
- class NativeIdCaptureProxy {
13
- resetMode() {
14
- return NativeModule$1.reset();
15
- }
16
- createContextForBarcodeVerification(contextJSON) {
17
- return NativeModule$1.createContextForBarcodeVerification(contextJSON);
18
- }
19
- verifyCapturedIdAsync(capturedId) {
20
- return NativeModule$1.verifyCapturedIdAsync(capturedId);
21
- }
22
- setModeEnabledState(enabled) {
23
- NativeModule$1.setModeEnabledState(enabled);
24
- }
25
- updateIdCaptureMode(modeJson) {
26
- return NativeModule$1.updateIdCaptureMode(modeJson);
27
- }
28
- applyIdCaptureModeSettings(newSettingsJson) {
29
- return NativeModule$1.applyIdCaptureModeSettings(newSettingsJson);
30
- }
31
- updateFeedback(feedbackJson) {
32
- return NativeModule$1.updateIdCaptureFeedback(feedbackJson);
33
- }
34
- }
35
-
36
- // tslint:disable:variable-name
37
- const NativeModule = NativeModules.ScanditDataCaptureId;
38
- const RNEventEmitter = new NativeEventEmitter(NativeModule);
39
- // tslint:enable:variable-name
40
- class NativeIdCaptureListenerProxy {
41
- nativeListeners = [];
42
- eventEmitter;
43
- constructor() {
44
- this.eventEmitter = FactoryMaker.getInstance('EventEmitter');
45
- }
46
- isModeEnabled = () => false;
47
- subscribeDidCaptureListener() {
48
- const didCaptureListener = RNEventEmitter.addListener(IdCaptureListenerEvents.didCapture, (event) => {
49
- this.eventEmitter.emit(IdCaptureListenerEvents.didCapture, event.data);
50
- });
51
- this.nativeListeners.push(didCaptureListener);
52
- }
53
- subscribeDidRejectListener() {
54
- const didRejectListener = RNEventEmitter.addListener(IdCaptureListenerEvents.didReject, (event) => {
55
- this.eventEmitter.emit(IdCaptureListenerEvents.didReject, event.data);
56
- });
57
- this.nativeListeners.push(didRejectListener);
58
- }
59
- unregisterListenerForEvents() {
60
- this.nativeListeners.forEach(listener => listener.remove());
61
- this.nativeListeners = [];
62
- }
63
- finishDidCaptureCallback(isEnabled) {
64
- NativeModule.finishDidCaptureCallback(isEnabled);
65
- }
66
- finishDidLocalizeCallback(isEnabled) {
67
- NativeModule.finishDidLocalizeCallback(isEnabled);
68
- }
69
- finishDidRejectCallback(isEnabled) {
70
- NativeModule.finishDidRejectCallback(isEnabled);
71
- }
72
- finishDidTimeOutCallback(isEnabled) {
73
- NativeModule.finishDidTimeOutCallback(isEnabled);
74
- }
75
- }
1
+ import { CameraOwnershipHelper, FactoryMaker, createNativeProxy } from 'scandit-react-native-datacapture-core/dist/core';
2
+ import { FrameSourceState, CameraPosition, DataCaptureView, createRNNativeCaller, initCoreDefaults } from 'scandit-react-native-datacapture-core';
3
+ import { NativeModules, AppState } from 'react-native';
4
+ import { IdCapture, IdCaptureSettings, IdCaptureOverlay, loadIdDefaults } from './id.js';
5
+ export { AamvaBarcodeVerificationResult, AamvaBarcodeVerificationStatus, BarcodeResult, CapturedId, CapturedSides, DataConsistencyCheck, DataConsistencyResult, DateResult, DriverLicense, DrivingLicenseCategory, DrivingLicenseDetails, Duration, FullDocumentScanner, HealthInsuranceCard, IdAnonymizationMode, IdCapture, IdCaptureController, IdCaptureDocumentType, IdCaptureFeedback, IdCaptureListenerController, IdCaptureListenerEvents, IdCaptureOverlay, IdCaptureRegion, IdCaptureSettings, IdCard, IdFieldType, IdImageType, IdImages, IdLayoutLineStyle, IdLayoutStyle, IdSide, MRZResult, MobileDocumentResult, Passport, ProfessionalDrivingPermit, RegionSpecific, RegionSpecificSubtype, RejectionReason, ResidencePermit, Sex, SingleSideScanner, TextHintPosition, UsRealIdStatus, VIZResult, VehicleRestriction, VerificationResult, VisaIcao } from './id.js';
6
+ import React, { forwardRef, useImperativeHandle, useState, useMemo, useCallback, useEffect, useRef } from 'react';
76
7
 
77
8
  function initIdProxy() {
78
- FactoryMaker.bindInstance('IdCaptureProxy', new NativeIdCaptureProxy());
79
- FactoryMaker.bindInstance('IdCaptureListenerProxy', new NativeIdCaptureListenerProxy());
9
+ FactoryMaker.bindLazyInstance('IdCaptureProxy', () => {
10
+ const caller = createRNNativeCaller(NativeModules.ScanditDataCaptureId);
11
+ return createNativeProxy(caller);
12
+ });
13
+ FactoryMaker.bindLazyInstance('IdCaptureListenerProxy', () => {
14
+ const caller = createRNNativeCaller(NativeModules.ScanditDataCaptureId);
15
+ return createNativeProxy(caller);
16
+ });
80
17
  FactoryMaker.bindLazyInstance('IdCaptureOverlayProxy', () => {
81
18
  const caller = createRNNativeCaller(NativeModules.ScanditDataCaptureId);
82
19
  return createNativeProxy(caller);
@@ -95,49 +32,48 @@ const IdCaptureView = forwardRef(function IdCaptureView(props, ref) {
95
32
  reset() {
96
33
  getMode().reset();
97
34
  },
98
- }), []);
35
+ }),
36
+ // eslint-disable-next-line react-hooks/exhaustive-deps
37
+ []);
99
38
  /* STATE VARIABLES */
100
39
  const [isEnabledState, setIsEnabledState] = useState(false);
101
40
  const [frameSourceState, setFrameSourceState] = useState(FrameSourceState.Off);
41
+ const [viewId] = useState(() => Math.floor(Math.random() * 1000000));
42
+ const [isCameraSetup, setIsCameraSetup] = useState(false);
43
+ // Create camera owner using viewId
44
+ const cameraOwner = useMemo(() => ({
45
+ id: `id-capture-view-${viewId}`,
46
+ }), [viewId]);
102
47
  /* STATE HANDLERS */
48
+ const getMode = useCallback(() => {
49
+ if (idCaptureModeRef.current !== null) {
50
+ return idCaptureModeRef.current;
51
+ }
52
+ idCaptureModeRef.current = new IdCapture(props.idCaptureSettings || new IdCaptureSettings());
53
+ idCaptureModeRef.current.parentId = viewId;
54
+ return idCaptureModeRef.current;
55
+ }, [props.idCaptureSettings, viewId]);
103
56
  useEffect(() => {
104
57
  getMode().isEnabled = isEnabledState;
105
- }, [isEnabledState]);
58
+ }, [isEnabledState, getMode]);
106
59
  useEffect(() => {
107
- if (screenStateManager.isScreenActive(viewId.current)) {
108
- getCamera()?.switchToDesiredState(frameSourceState);
109
- }
110
- }, [frameSourceState]);
60
+ const position = props.desiredCameraPosition || CameraPosition.WorldFacing;
61
+ CameraOwnershipHelper.withCamera(position, cameraOwner, async (camera) => {
62
+ await camera.switchToDesiredState(frameSourceState);
63
+ });
64
+ }, [frameSourceState, props.desiredCameraPosition, cameraOwner]);
111
65
  const viewRef = useRef(null);
112
66
  const componentIsSetUp = useRef(false);
113
- const viewId = useRef(Math.floor(Math.random() * 1000000));
114
- const screenStateManager = useMemo(() => {
115
- return ScreenStateManager.getInstance();
116
- }, []);
117
67
  const idCaptureModeRef = useRef(null);
118
- function getMode() {
119
- if (idCaptureModeRef.current !== null) {
120
- return idCaptureModeRef.current;
121
- }
122
- idCaptureModeRef.current = IdCapture.forContext(null, props.idCaptureSettings || new IdCaptureSettings());
123
- return idCaptureModeRef.current;
124
- }
125
68
  const idCaptureOverlayRef = useRef(null);
126
- function getIdCaptureOverlay() {
69
+ const getIdCaptureOverlay = useCallback(() => {
127
70
  if (idCaptureOverlayRef.current !== null) {
128
71
  return idCaptureOverlayRef.current;
129
72
  }
130
73
  idCaptureOverlayRef.current = new IdCaptureOverlay(getMode());
131
74
  return idCaptureOverlayRef.current;
132
- }
133
- const cameraRef = useRef(null);
134
- function getCamera() {
135
- if (cameraRef.current !== null) {
136
- return cameraRef.current;
137
- }
138
- cameraRef.current = Camera.asPositionWithSettings(props.desiredCameraPosition || CameraPosition.WorldFacing, props.cameraSettings || IdCapture.recommendedCameraSettings);
139
- return cameraRef.current;
140
- }
75
+ }, [getMode]);
76
+ // Remove getCamera function as we'll use CameraOwnershipHelper
141
77
  const torchSwitchControl = useRef(null);
142
78
  const zoomSwitchControl = useRef(null);
143
79
  const appState = useRef(AppState.currentState);
@@ -157,27 +93,49 @@ const IdCaptureView = forwardRef(function IdCaptureView(props, ref) {
157
93
  });
158
94
  return () => {
159
95
  subscription.remove();
160
- doCleanup();
96
+ doDestroy();
161
97
  };
98
+ // eslint-disable-next-line react-hooks/exhaustive-deps
162
99
  }, []);
163
- const doSetup = () => {
164
- screenStateManager.setActiveScreen(viewId.current);
100
+ const setupCamera = useCallback(async () => {
101
+ const position = props.desiredCameraPosition || CameraPosition.WorldFacing;
102
+ // Request ownership and set up camera
103
+ await CameraOwnershipHelper.withCameraWhenAvailable(position, cameraOwner, async (camera) => {
104
+ const settings = props.cameraSettings || IdCapture.createRecommendedCameraSettings();
105
+ await camera.applySettings(settings);
106
+ await props.context.setFrameSource(camera);
107
+ await camera.switchToDesiredState(props.desiredCameraState || FrameSourceState.On);
108
+ // Mark camera as set up
109
+ setIsCameraSetup(true);
110
+ });
111
+ }, [props.desiredCameraPosition, cameraOwner, props.cameraSettings, props.context, props.desiredCameraState]);
112
+ const doSetup = useCallback(() => {
165
113
  if (componentIsSetUp.current)
166
114
  return;
167
115
  componentIsSetUp.current = true;
168
- /* Handling Data Capture Context */
169
- props.context.setFrameSource(getCamera());
116
+ /* Setup camera with ownership - WAIT for completion */
117
+ setupCamera();
118
+ /* Only proceed after camera is ready */
170
119
  props.context.removeAllModes();
171
120
  props.context.addMode(getMode());
172
121
  /* Adding ID Capture Overlay */
173
122
  if (viewRef.current) {
174
123
  viewRef.current.addOverlay(getIdCaptureOverlay());
175
124
  }
125
+ }, [setupCamera, props.context, getMode, getIdCaptureOverlay]);
126
+ const doDestroy = () => {
127
+ doCleanup();
128
+ idCaptureModeRef.current = null;
129
+ torchSwitchControl.current = null;
130
+ zoomSwitchControl.current = null;
131
+ idCaptureOverlayRef.current = null;
176
132
  };
177
- const doCleanup = () => {
133
+ const doCleanup = useCallback(() => {
178
134
  if (!componentIsSetUp.current)
179
135
  return;
180
136
  componentIsSetUp.current = false;
137
+ // Reset camera setup state
138
+ setIsCameraSetup(false);
181
139
  /* Remove the torch control */
182
140
  if (torchSwitchControl.current) {
183
141
  viewRef.current?.removeControl(torchSwitchControl.current);
@@ -186,43 +144,61 @@ const IdCaptureView = forwardRef(function IdCaptureView(props, ref) {
186
144
  if (zoomSwitchControl.current) {
187
145
  viewRef.current?.removeControl(zoomSwitchControl.current);
188
146
  }
189
- /* Closing the camera if camera is active */
190
- if (screenStateManager.isScreenActive(viewId.current)) {
191
- getCamera()?.switchToDesiredState(FrameSourceState.Off);
192
- props.context.setFrameSource(null);
193
- }
194
147
  /* Cleaning Data Capture Context */
195
148
  if (idCaptureModeRef.current) {
196
149
  props.context.removeMode(idCaptureModeRef.current);
197
150
  }
198
- idCaptureModeRef.current = null;
199
151
  /* Cleaning Overlays */
200
152
  if (viewRef.current) {
201
153
  viewRef.current.view?.overlays?.forEach((overlay) => viewRef.current?.view?.removeOverlay(overlay));
202
154
  }
203
- };
155
+ /* Turn off camera and release ownership */
156
+ const position = props.desiredCameraPosition || CameraPosition.WorldFacing;
157
+ CameraOwnershipHelper.withCamera(position, cameraOwner, async (camera) => {
158
+ await camera.switchToDesiredState(FrameSourceState.Off);
159
+ await props.context.setFrameSource(null);
160
+ }).finally(() => {
161
+ // Release camera ownership
162
+ CameraOwnershipHelper.releaseOwnership(position, cameraOwner);
163
+ });
164
+ }, [props.desiredCameraPosition, cameraOwner, props.context]);
204
165
  /* ID CAPTURE MODE */
205
166
  useEffect(() => {
206
167
  if (props.idCaptureSettings) {
207
168
  getMode().applySettings(props.idCaptureSettings);
208
169
  }
209
- }, [props.idCaptureSettings]);
170
+ }, [props.idCaptureSettings, getMode]);
210
171
  useEffect(() => {
211
172
  setIsEnabledState(props.isEnabled);
212
173
  setFrameSourceState(props.desiredCameraState || FrameSourceState.On);
213
- }, [props.isEnabled]);
174
+ }, [props.isEnabled, props.desiredCameraState]);
175
+ const listenerRef = useRef(null);
176
+ const callbacksRef = useRef({ didCaptureId: props.didCaptureId, didRejectId: props.didRejectId });
177
+ // Update callback references when props change
214
178
  useEffect(() => {
215
- const listeners = [...getMode().listeners];
216
- listeners.forEach((listener) => {
217
- getMode().removeListener(listener);
218
- });
219
- if (props.didCaptureId || props.didRejectId) {
220
- getMode().addListener({
221
- didCaptureId: props.didCaptureId,
222
- didRejectId: props.didRejectId,
223
- });
224
- }
179
+ callbacksRef.current = { didCaptureId: props.didCaptureId, didRejectId: props.didRejectId };
225
180
  }, [props.didCaptureId, props.didRejectId]);
181
+ // Add/remove listener only when needed
182
+ useEffect(() => {
183
+ const setupListeners = async () => {
184
+ const shouldHaveListener = props.didCaptureId || props.didRejectId;
185
+ const hasListener = listenerRef.current !== null;
186
+ if (shouldHaveListener && !hasListener) {
187
+ // Add listener
188
+ listenerRef.current = {
189
+ didCaptureId: (idCapture, capturedId) => callbacksRef.current.didCaptureId?.(idCapture, capturedId),
190
+ didRejectId: (idCapture, rejectedId, reason) => callbacksRef.current.didRejectId?.(idCapture, rejectedId, reason),
191
+ };
192
+ await getMode().addListener(listenerRef.current);
193
+ }
194
+ else if (!shouldHaveListener && hasListener && listenerRef.current) {
195
+ // Remove listener
196
+ await getMode().removeListener(listenerRef.current);
197
+ listenerRef.current = null;
198
+ }
199
+ };
200
+ setupListeners();
201
+ }, [props.didCaptureId, props.didRejectId, getMode, listenerRef, callbacksRef]);
226
202
  /* OVERLAYS */
227
203
  useEffect(() => {
228
204
  if (props.capturedBrush) {
@@ -234,33 +210,48 @@ const IdCaptureView = forwardRef(function IdCaptureView(props, ref) {
234
210
  if (props.localizedBrush) {
235
211
  getIdCaptureOverlay().localizedBrush = props.localizedBrush;
236
212
  }
237
- }, [props.capturedBrush, props.rejectedBrush, props.localizedBrush]);
213
+ }, [props.capturedBrush, props.rejectedBrush, props.localizedBrush, getIdCaptureOverlay]);
238
214
  /* CAMERA */
239
215
  useEffect(() => {
240
- getCamera()?.applySettings(props.cameraSettings || IdCapture.recommendedCameraSettings);
241
- }, [props.cameraSettings]);
216
+ if (!isCameraSetup)
217
+ return; // Don't run until camera is ready
218
+ const position = props.desiredCameraPosition || CameraPosition.WorldFacing;
219
+ const settings = props.cameraSettings || IdCapture.createRecommendedCameraSettings();
220
+ CameraOwnershipHelper.withCamera(position, cameraOwner, async (camera) => {
221
+ await camera.applySettings(settings);
222
+ });
223
+ }, [props.cameraSettings, props.desiredCameraPosition, cameraOwner, isCameraSetup]);
242
224
  useEffect(() => {
243
- if (props.desiredCameraState && screenStateManager.isScreenActive(viewId.current)) {
225
+ if (props.desiredCameraState) {
244
226
  setFrameSourceState(props.desiredCameraState);
245
227
  }
246
228
  }, [props.desiredCameraState]);
247
229
  useEffect(() => {
248
230
  if (props.desiredCameraPosition) {
249
- setFrameSourceState(FrameSourceState.Off);
250
- props.context.setFrameSource(null).then(() => {
251
- cameraRef.current = Camera.asPositionWithSettings(props.desiredCameraPosition || CameraPosition.WorldFacing, props.cameraSettings || IdCapture.recommendedCameraSettings);
252
- props.context.setFrameSource(getCamera()).then(() => {
253
- setFrameSourceState(props.desiredCameraState || FrameSourceState.On);
254
- });
255
- });
231
+ // Handle camera position change with ownership
232
+ const currentOwnedPosition = CameraOwnershipHelper.getOwnedPosition(cameraOwner);
233
+ const newPosition = props.desiredCameraPosition;
234
+ if (currentOwnedPosition && currentOwnedPosition !== newPosition) {
235
+ // Release old camera ownership
236
+ CameraOwnershipHelper.releaseOwnership(currentOwnedPosition, cameraOwner);
237
+ // Set up new camera
238
+ setupCamera();
239
+ }
240
+ else if (!currentOwnedPosition) {
241
+ // No camera owned yet, set up new camera
242
+ setupCamera();
243
+ }
256
244
  }
257
- }, [props.desiredCameraPosition]);
245
+ }, [props.desiredCameraPosition, cameraOwner, setupCamera]);
258
246
  /* CONTROLS */
259
247
  useEffect(() => {
260
248
  if (props.desiredTorchState) {
261
- getCamera().desiredTorchState = props.desiredTorchState;
249
+ const position = props.desiredCameraPosition || CameraPosition.WorldFacing;
250
+ CameraOwnershipHelper.withCameraWhenAvailable(position, cameraOwner, async (camera) => {
251
+ camera.desiredTorchState = props.desiredTorchState;
252
+ });
262
253
  }
263
- }, [props.desiredTorchState]);
254
+ }, [props.desiredTorchState, props.desiredCameraPosition, cameraOwner]);
264
255
  useEffect(() => {
265
256
  if (!viewRef.current)
266
257
  return;
@@ -288,7 +279,7 @@ const IdCaptureView = forwardRef(function IdCaptureView(props, ref) {
288
279
  if (props.feedback) {
289
280
  getMode().feedback = props.feedback;
290
281
  }
291
- }, [props.feedback]);
282
+ }, [props.feedback, getMode]);
292
283
  useEffect(() => {
293
284
  if (!props.navigation)
294
285
  return;
@@ -308,8 +299,8 @@ const IdCaptureView = forwardRef(function IdCaptureView(props, ref) {
308
299
  // tslint:disable-next-line:no-console
309
300
  console.error(e);
310
301
  }
311
- }, [props.navigation]);
312
- return React.createElement(DataCaptureView, { context: props.context, style: { flex: 1 }, ref: viewRef });
302
+ }, [props.navigation, doSetup, doCleanup]);
303
+ return React.createElement(DataCaptureView, { context: props.context, parentId: viewId, style: { flex: 1 }, ref: viewRef });
313
304
  });
314
305
 
315
306
  initIdDefaults();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../ts/native/IdCaptureProxy.ts","../ts/native/IdCaptureListenerProxy.ts","../ts/native/initProxy.ts","../ts/private/initDefaults.ts","../ts/IdCaptureView.tsx","../ts/index.ts"],"sourcesContent":["import { NativeEventEmitter, NativeModules } from 'react-native';\n// tslint:disable:variable-name\nconst NativeModule = NativeModules.ScanditDataCaptureId;\nconst RNEventEmitter = new NativeEventEmitter(NativeModule);\n// tslint:enable:variable-name\nexport class NativeIdCaptureProxy {\n resetMode() {\n return NativeModule.reset();\n }\n createContextForBarcodeVerification(contextJSON) {\n return NativeModule.createContextForBarcodeVerification(contextJSON);\n }\n verifyCapturedIdAsync(capturedId) {\n return NativeModule.verifyCapturedIdAsync(capturedId);\n }\n setModeEnabledState(enabled) {\n NativeModule.setModeEnabledState(enabled);\n }\n updateIdCaptureMode(modeJson) {\n return NativeModule.updateIdCaptureMode(modeJson);\n }\n applyIdCaptureModeSettings(newSettingsJson) {\n return NativeModule.applyIdCaptureModeSettings(newSettingsJson);\n }\n updateFeedback(feedbackJson) {\n return NativeModule.updateIdCaptureFeedback(feedbackJson);\n }\n}\n//# sourceMappingURL=IdCaptureProxy.js.map","import { NativeEventEmitter, NativeModules } from 'react-native';\nimport { FactoryMaker } from 'scandit-datacapture-frameworks-core';\nimport { IdCaptureListenerEvents } from 'scandit-datacapture-frameworks-id';\n// tslint:disable:variable-name\nconst NativeModule = NativeModules.ScanditDataCaptureId;\nconst RNEventEmitter = new NativeEventEmitter(NativeModule);\n// tslint:enable:variable-name\nexport class NativeIdCaptureListenerProxy {\n nativeListeners = [];\n eventEmitter;\n constructor() {\n this.eventEmitter = FactoryMaker.getInstance('EventEmitter');\n }\n isModeEnabled = () => false;\n subscribeDidCaptureListener() {\n const didCaptureListener = RNEventEmitter.addListener(IdCaptureListenerEvents.didCapture, (event) => {\n this.eventEmitter.emit(IdCaptureListenerEvents.didCapture, event.data);\n });\n this.nativeListeners.push(didCaptureListener);\n }\n subscribeDidRejectListener() {\n const didRejectListener = RNEventEmitter.addListener(IdCaptureListenerEvents.didReject, (event) => {\n this.eventEmitter.emit(IdCaptureListenerEvents.didReject, event.data);\n });\n this.nativeListeners.push(didRejectListener);\n }\n unregisterListenerForEvents() {\n this.nativeListeners.forEach(listener => listener.remove());\n this.nativeListeners = [];\n }\n finishDidCaptureCallback(isEnabled) {\n NativeModule.finishDidCaptureCallback(isEnabled);\n }\n finishDidLocalizeCallback(isEnabled) {\n NativeModule.finishDidLocalizeCallback(isEnabled);\n }\n finishDidRejectCallback(isEnabled) {\n NativeModule.finishDidRejectCallback(isEnabled);\n }\n finishDidTimeOutCallback(isEnabled) {\n NativeModule.finishDidTimeOutCallback(isEnabled);\n }\n}\n//# sourceMappingURL=IdCaptureListenerProxy.js.map","import { createNativeProxy, FactoryMaker } from 'scandit-datacapture-frameworks-core';\nimport { NativeIdCaptureProxy } from './IdCaptureProxy';\nimport { NativeIdCaptureListenerProxy } from './IdCaptureListenerProxy';\nimport { createRNNativeCaller } from 'scandit-react-native-datacapture-core';\nimport { NativeModules } from 'react-native';\nexport function initIdProxy() {\n FactoryMaker.bindInstance('IdCaptureProxy', new NativeIdCaptureProxy());\n FactoryMaker.bindInstance('IdCaptureListenerProxy', new NativeIdCaptureListenerProxy());\n FactoryMaker.bindLazyInstance('IdCaptureOverlayProxy', () => {\n const caller = createRNNativeCaller(NativeModules.ScanditDataCaptureId);\n return createNativeProxy(caller);\n });\n}\n//# sourceMappingURL=initProxy.js.map","import { NativeModules } from 'react-native';\nimport { initCoreDefaults } from 'scandit-react-native-datacapture-core';\nimport { loadIdDefaults } from 'scandit-datacapture-frameworks-id';\nconst dataCaptureId = NativeModules.ScanditDataCaptureId;\nexport function initIdDefaults() {\n initCoreDefaults();\n loadIdDefaults(dataCaptureId.Defaults);\n}\n//# sourceMappingURL=initDefaults.js.map","import React, { useEffect, useRef, useState, forwardRef, useImperativeHandle, useMemo } from 'react';\nimport { AppState } from 'react-native';\nimport { Camera, CameraPosition, DataCaptureView, FrameSourceState, } from 'scandit-react-native-datacapture-core';\nimport { IdCapture, IdCaptureOverlay, IdCaptureSettings, } from 'scandit-datacapture-frameworks-id';\nimport { ScreenStateManager } from 'scandit-datacapture-frameworks-core';\n// tslint:disable-next-line\nexport const IdCaptureView = forwardRef(function IdCaptureView(props, ref) {\n useImperativeHandle(ref, () => ({\n reset() {\n getMode().reset();\n },\n }), []);\n /* STATE VARIABLES */\n const [isEnabledState, setIsEnabledState] = useState(false);\n const [frameSourceState, setFrameSourceState] = useState(FrameSourceState.Off);\n /* STATE HANDLERS */\n useEffect(() => {\n getMode().isEnabled = isEnabledState;\n }, [isEnabledState]);\n useEffect(() => {\n if (screenStateManager.isScreenActive(viewId.current)) {\n getCamera()?.switchToDesiredState(frameSourceState);\n }\n }, [frameSourceState]);\n const viewRef = useRef(null);\n const componentIsSetUp = useRef(false);\n const viewId = useRef(Math.floor(Math.random() * 1000000));\n const screenStateManager = useMemo(() => {\n return ScreenStateManager.getInstance();\n }, []);\n const idCaptureModeRef = useRef(null);\n function getMode() {\n if (idCaptureModeRef.current !== null) {\n return idCaptureModeRef.current;\n }\n idCaptureModeRef.current = IdCapture.forContext(null, props.idCaptureSettings || new IdCaptureSettings());\n return idCaptureModeRef.current;\n }\n const idCaptureOverlayRef = useRef(null);\n function getIdCaptureOverlay() {\n if (idCaptureOverlayRef.current !== null) {\n return idCaptureOverlayRef.current;\n }\n idCaptureOverlayRef.current = new IdCaptureOverlay(getMode());\n return idCaptureOverlayRef.current;\n }\n const cameraRef = useRef(null);\n function getCamera() {\n if (cameraRef.current !== null) {\n return cameraRef.current;\n }\n cameraRef.current = Camera.asPositionWithSettings(props.desiredCameraPosition || CameraPosition.WorldFacing, props.cameraSettings || IdCapture.recommendedCameraSettings);\n return cameraRef.current;\n }\n const torchSwitchControl = useRef(null);\n const zoomSwitchControl = useRef(null);\n const appState = useRef(AppState.currentState);\n /* SETUP */\n useEffect(() => {\n doSetup();\n const subscription = AppState.addEventListener('change', nextAppState => {\n if (appState.current.match(/inactive|background/) && nextAppState === 'active') {\n setIsEnabledState(props.isEnabled);\n setFrameSourceState(props.desiredCameraState || FrameSourceState.On);\n }\n else {\n setIsEnabledState(false);\n setFrameSourceState(FrameSourceState.Off);\n }\n appState.current = nextAppState;\n });\n return () => {\n subscription.remove();\n doCleanup();\n };\n }, []);\n const doSetup = () => {\n screenStateManager.setActiveScreen(viewId.current);\n if (componentIsSetUp.current)\n return;\n componentIsSetUp.current = true;\n /* Handling Data Capture Context */\n props.context.setFrameSource(getCamera());\n props.context.removeAllModes();\n props.context.addMode(getMode());\n /* Adding ID Capture Overlay */\n if (viewRef.current) {\n viewRef.current.addOverlay(getIdCaptureOverlay());\n }\n };\n const doCleanup = () => {\n if (!componentIsSetUp.current)\n return;\n componentIsSetUp.current = false;\n /* Remove the torch control */\n if (torchSwitchControl.current) {\n viewRef.current?.removeControl(torchSwitchControl.current);\n }\n /* Remove the zoom control */\n if (zoomSwitchControl.current) {\n viewRef.current?.removeControl(zoomSwitchControl.current);\n }\n /* Closing the camera if camera is active */\n if (screenStateManager.isScreenActive(viewId.current)) {\n getCamera()?.switchToDesiredState(FrameSourceState.Off);\n props.context.setFrameSource(null);\n }\n /* Cleaning Data Capture Context */\n if (idCaptureModeRef.current) {\n props.context.removeMode(idCaptureModeRef.current);\n }\n idCaptureModeRef.current = null;\n /* Cleaning Overlays */\n if (viewRef.current) {\n viewRef.current.view?.overlays?.forEach((overlay) => viewRef.current?.view?.removeOverlay(overlay));\n }\n };\n /* ID CAPTURE MODE */\n useEffect(() => {\n if (props.idCaptureSettings) {\n getMode().applySettings(props.idCaptureSettings);\n }\n }, [props.idCaptureSettings]);\n useEffect(() => {\n setIsEnabledState(props.isEnabled);\n setFrameSourceState(props.desiredCameraState || FrameSourceState.On);\n }, [props.isEnabled]);\n useEffect(() => {\n const listeners = [...getMode().listeners];\n listeners.forEach((listener) => {\n getMode().removeListener(listener);\n });\n if (props.didCaptureId || props.didRejectId) {\n getMode().addListener({\n didCaptureId: props.didCaptureId,\n didRejectId: props.didRejectId,\n });\n }\n }, [props.didCaptureId, props.didRejectId]);\n /* OVERLAYS */\n useEffect(() => {\n if (props.capturedBrush) {\n getIdCaptureOverlay().capturedBrush = props.capturedBrush;\n }\n if (props.rejectedBrush) {\n getIdCaptureOverlay().rejectedBrush = props.rejectedBrush;\n }\n if (props.localizedBrush) {\n getIdCaptureOverlay().localizedBrush = props.localizedBrush;\n }\n }, [props.capturedBrush, props.rejectedBrush, props.localizedBrush]);\n /* CAMERA */\n useEffect(() => {\n getCamera()?.applySettings(props.cameraSettings || IdCapture.recommendedCameraSettings);\n }, [props.cameraSettings]);\n useEffect(() => {\n if (props.desiredCameraState && screenStateManager.isScreenActive(viewId.current)) {\n setFrameSourceState(props.desiredCameraState);\n }\n }, [props.desiredCameraState]);\n useEffect(() => {\n if (props.desiredCameraPosition) {\n setFrameSourceState(FrameSourceState.Off);\n props.context.setFrameSource(null).then(() => {\n cameraRef.current = Camera.asPositionWithSettings(props.desiredCameraPosition || CameraPosition.WorldFacing, props.cameraSettings || IdCapture.recommendedCameraSettings);\n props.context.setFrameSource(getCamera()).then(() => {\n setFrameSourceState(props.desiredCameraState || FrameSourceState.On);\n });\n });\n }\n }, [props.desiredCameraPosition]);\n /* CONTROLS */\n useEffect(() => {\n if (props.desiredTorchState) {\n getCamera().desiredTorchState = props.desiredTorchState;\n }\n }, [props.desiredTorchState]);\n useEffect(() => {\n if (!viewRef.current)\n return;\n if (torchSwitchControl.current) {\n viewRef.current?.removeControl(torchSwitchControl.current);\n }\n if (!props.torchSwitchControl)\n return;\n torchSwitchControl.current = props.torchSwitchControl;\n viewRef.current.addControl(torchSwitchControl.current);\n }, [props.torchSwitchControl]);\n useEffect(() => {\n if (!viewRef.current)\n return;\n if (zoomSwitchControl.current) {\n viewRef.current?.removeControl(zoomSwitchControl.current);\n }\n if (!props.zoomSwitchControl)\n return;\n zoomSwitchControl.current = props.zoomSwitchControl;\n viewRef.current.addControl(zoomSwitchControl.current);\n }, [props.zoomSwitchControl]);\n /* MISC */\n useEffect(() => {\n if (props.feedback) {\n getMode().feedback = props.feedback;\n }\n }, [props.feedback]);\n useEffect(() => {\n if (!props.navigation)\n return;\n try {\n const unsubscribeFromFocus = props.navigation.addListener('focus', () => {\n doSetup();\n });\n const unsubscribeFromBlur = props.navigation.addListener('blur', () => {\n doCleanup();\n });\n return () => {\n unsubscribeFromFocus();\n unsubscribeFromBlur();\n };\n }\n catch (e) {\n // tslint:disable-next-line:no-console\n console.error(e);\n }\n }, [props.navigation]);\n return React.createElement(DataCaptureView, { context: props.context, style: { flex: 1 }, ref: viewRef });\n});\n//# sourceMappingURL=IdCaptureView.js.map","import { initIdProxy } from './native/initProxy';\nimport { initIdDefaults } from './private/initDefaults';\ninitIdDefaults();\ninitIdProxy();\nexport { DateResult, IdAnonymizationMode, IdImageType, CapturedSides, TextHintPosition, Duration } from 'scandit-datacapture-frameworks-id';\nexport { AamvaBarcodeVerificationResult, AamvaBarcodeVerificationStatus, AamvaBarcodeVerifier } from 'scandit-datacapture-frameworks-id';\nexport { CapturedId, BarcodeResult, MRZResult, ProfessionalDrivingPermit } from 'scandit-datacapture-frameworks-id';\nexport { VehicleRestriction, VIZResult } from 'scandit-datacapture-frameworks-id';\nexport { UsRealIdStatus } from 'scandit-datacapture-frameworks-id';\nexport { IdCaptureController, IdCaptureListenerController, IdCaptureListenerEvents } from 'scandit-datacapture-frameworks-id';\nexport { IdCapture, IdCaptureFeedback, IdCaptureOverlay, IdCaptureSettings, IdLayoutLineStyle, IdLayoutStyle, RejectionReason } from 'scandit-datacapture-frameworks-id';\nexport { IdCaptureDocumentType, DriverLicense, HealthInsuranceCard, IdCard, Passport, RegionSpecific, ResidencePermit, VisaIcao } from 'scandit-datacapture-frameworks-id';\nexport { SingleSideScanner, FullDocumentScanner, IdCaptureRegion, RegionSpecificSubtype, IdImages, IdSide } from 'scandit-datacapture-frameworks-id';\nexport * from './IdCaptureView';\n//# sourceMappingURL=index.js.map"],"names":["NativeModule"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../ts/native/initProxy.ts","../ts/private/initDefaults.ts","../ts/IdCaptureView.tsx","../ts/index.ts"],"sourcesContent":["import { createNativeProxy, FactoryMaker } from 'scandit-datacapture-frameworks-core';\nimport { createRNNativeCaller } from 'scandit-react-native-datacapture-core';\nimport { NativeModules } from 'react-native';\nexport function initIdProxy() {\n FactoryMaker.bindLazyInstance('IdCaptureProxy', () => {\n const caller = createRNNativeCaller(NativeModules.ScanditDataCaptureId);\n return createNativeProxy(caller);\n });\n FactoryMaker.bindLazyInstance('IdCaptureListenerProxy', () => {\n const caller = createRNNativeCaller(NativeModules.ScanditDataCaptureId);\n return createNativeProxy(caller);\n });\n FactoryMaker.bindLazyInstance('IdCaptureOverlayProxy', () => {\n const caller = createRNNativeCaller(NativeModules.ScanditDataCaptureId);\n return createNativeProxy(caller);\n });\n}\n//# sourceMappingURL=initProxy.js.map","import { NativeModules } from 'react-native';\nimport { initCoreDefaults } from 'scandit-react-native-datacapture-core';\nimport { loadIdDefaults } from 'scandit-datacapture-frameworks-id';\nconst dataCaptureId = NativeModules.ScanditDataCaptureId;\nexport function initIdDefaults() {\n initCoreDefaults();\n loadIdDefaults(dataCaptureId.Defaults);\n}\n//# sourceMappingURL=initDefaults.js.map","import React, { useEffect, useRef, useState, forwardRef, useImperativeHandle, useMemo, useCallback } from 'react';\nimport { AppState } from 'react-native';\nimport { CameraPosition, DataCaptureView, FrameSourceState, } from 'scandit-react-native-datacapture-core';\nimport { IdCapture, IdCaptureOverlay, IdCaptureSettings, } from 'scandit-datacapture-frameworks-id';\nimport { CameraOwnershipHelper } from 'scandit-datacapture-frameworks-core';\n// tslint:disable-next-line\nexport const IdCaptureView = forwardRef(function IdCaptureView(props, ref) {\n useImperativeHandle(ref, () => ({\n reset() {\n getMode().reset();\n },\n }), \n // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n /* STATE VARIABLES */\n const [isEnabledState, setIsEnabledState] = useState(false);\n const [frameSourceState, setFrameSourceState] = useState(FrameSourceState.Off);\n const [viewId] = useState(() => Math.floor(Math.random() * 1000000));\n const [isCameraSetup, setIsCameraSetup] = useState(false);\n // Create camera owner using viewId\n const cameraOwner = useMemo(() => ({\n id: `id-capture-view-${viewId}`,\n }), [viewId]);\n /* STATE HANDLERS */\n const getMode = useCallback(() => {\n if (idCaptureModeRef.current !== null) {\n return idCaptureModeRef.current;\n }\n idCaptureModeRef.current = new IdCapture(props.idCaptureSettings || new IdCaptureSettings());\n idCaptureModeRef.current.parentId = viewId;\n return idCaptureModeRef.current;\n }, [props.idCaptureSettings, viewId]);\n useEffect(() => {\n getMode().isEnabled = isEnabledState;\n }, [isEnabledState, getMode]);\n useEffect(() => {\n const position = props.desiredCameraPosition || CameraPosition.WorldFacing;\n CameraOwnershipHelper.withCamera(position, cameraOwner, async (camera) => {\n await camera.switchToDesiredState(frameSourceState);\n });\n }, [frameSourceState, props.desiredCameraPosition, cameraOwner]);\n const viewRef = useRef(null);\n const componentIsSetUp = useRef(false);\n const idCaptureModeRef = useRef(null);\n const idCaptureOverlayRef = useRef(null);\n const getIdCaptureOverlay = useCallback(() => {\n if (idCaptureOverlayRef.current !== null) {\n return idCaptureOverlayRef.current;\n }\n idCaptureOverlayRef.current = new IdCaptureOverlay(getMode());\n return idCaptureOverlayRef.current;\n }, [getMode]);\n // Remove getCamera function as we'll use CameraOwnershipHelper\n const torchSwitchControl = useRef(null);\n const zoomSwitchControl = useRef(null);\n const appState = useRef(AppState.currentState);\n /* SETUP */\n useEffect(() => {\n doSetup();\n const subscription = AppState.addEventListener('change', nextAppState => {\n if (appState.current.match(/inactive|background/) && nextAppState === 'active') {\n setIsEnabledState(props.isEnabled);\n setFrameSourceState(props.desiredCameraState || FrameSourceState.On);\n }\n else {\n setIsEnabledState(false);\n setFrameSourceState(FrameSourceState.Off);\n }\n appState.current = nextAppState;\n });\n return () => {\n subscription.remove();\n doDestroy();\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n const setupCamera = useCallback(async () => {\n const position = props.desiredCameraPosition || CameraPosition.WorldFacing;\n // Request ownership and set up camera\n await CameraOwnershipHelper.withCameraWhenAvailable(position, cameraOwner, async (camera) => {\n const settings = props.cameraSettings || IdCapture.createRecommendedCameraSettings();\n await camera.applySettings(settings);\n await props.context.setFrameSource(camera);\n await camera.switchToDesiredState(props.desiredCameraState || FrameSourceState.On);\n // Mark camera as set up\n setIsCameraSetup(true);\n });\n }, [props.desiredCameraPosition, cameraOwner, props.cameraSettings, props.context, props.desiredCameraState]);\n const doSetup = useCallback(() => {\n if (componentIsSetUp.current)\n return;\n componentIsSetUp.current = true;\n /* Setup camera with ownership - WAIT for completion */\n setupCamera();\n /* Only proceed after camera is ready */\n props.context.removeAllModes();\n props.context.addMode(getMode());\n /* Adding ID Capture Overlay */\n if (viewRef.current) {\n viewRef.current.addOverlay(getIdCaptureOverlay());\n }\n }, [setupCamera, props.context, getMode, getIdCaptureOverlay]);\n const doDestroy = () => {\n doCleanup();\n idCaptureModeRef.current = null;\n torchSwitchControl.current = null;\n zoomSwitchControl.current = null;\n idCaptureOverlayRef.current = null;\n };\n const doCleanup = useCallback(() => {\n if (!componentIsSetUp.current)\n return;\n componentIsSetUp.current = false;\n // Reset camera setup state\n setIsCameraSetup(false);\n /* Remove the torch control */\n if (torchSwitchControl.current) {\n viewRef.current?.removeControl(torchSwitchControl.current);\n }\n /* Remove the zoom control */\n if (zoomSwitchControl.current) {\n viewRef.current?.removeControl(zoomSwitchControl.current);\n }\n /* Cleaning Data Capture Context */\n if (idCaptureModeRef.current) {\n props.context.removeMode(idCaptureModeRef.current);\n }\n /* Cleaning Overlays */\n if (viewRef.current) {\n viewRef.current.view?.overlays?.forEach((overlay) => viewRef.current?.view?.removeOverlay(overlay));\n }\n /* Turn off camera and release ownership */\n const position = props.desiredCameraPosition || CameraPosition.WorldFacing;\n CameraOwnershipHelper.withCamera(position, cameraOwner, async (camera) => {\n await camera.switchToDesiredState(FrameSourceState.Off);\n await props.context.setFrameSource(null);\n }).finally(() => {\n // Release camera ownership\n CameraOwnershipHelper.releaseOwnership(position, cameraOwner);\n });\n }, [props.desiredCameraPosition, cameraOwner, props.context]);\n /* ID CAPTURE MODE */\n useEffect(() => {\n if (props.idCaptureSettings) {\n getMode().applySettings(props.idCaptureSettings);\n }\n }, [props.idCaptureSettings, getMode]);\n useEffect(() => {\n setIsEnabledState(props.isEnabled);\n setFrameSourceState(props.desiredCameraState || FrameSourceState.On);\n }, [props.isEnabled, props.desiredCameraState]);\n const listenerRef = useRef(null);\n const callbacksRef = useRef({ didCaptureId: props.didCaptureId, didRejectId: props.didRejectId });\n // Update callback references when props change\n useEffect(() => {\n callbacksRef.current = { didCaptureId: props.didCaptureId, didRejectId: props.didRejectId };\n }, [props.didCaptureId, props.didRejectId]);\n // Add/remove listener only when needed\n useEffect(() => {\n const setupListeners = async () => {\n const shouldHaveListener = props.didCaptureId || props.didRejectId;\n const hasListener = listenerRef.current !== null;\n if (shouldHaveListener && !hasListener) {\n // Add listener\n listenerRef.current = {\n didCaptureId: (idCapture, capturedId) => callbacksRef.current.didCaptureId?.(idCapture, capturedId),\n didRejectId: (idCapture, rejectedId, reason) => callbacksRef.current.didRejectId?.(idCapture, rejectedId, reason),\n };\n await getMode().addListener(listenerRef.current);\n }\n else if (!shouldHaveListener && hasListener && listenerRef.current) {\n // Remove listener\n await getMode().removeListener(listenerRef.current);\n listenerRef.current = null;\n }\n };\n setupListeners();\n }, [props.didCaptureId, props.didRejectId, getMode, listenerRef, callbacksRef]);\n /* OVERLAYS */\n useEffect(() => {\n if (props.capturedBrush) {\n getIdCaptureOverlay().capturedBrush = props.capturedBrush;\n }\n if (props.rejectedBrush) {\n getIdCaptureOverlay().rejectedBrush = props.rejectedBrush;\n }\n if (props.localizedBrush) {\n getIdCaptureOverlay().localizedBrush = props.localizedBrush;\n }\n }, [props.capturedBrush, props.rejectedBrush, props.localizedBrush, getIdCaptureOverlay]);\n /* CAMERA */\n useEffect(() => {\n if (!isCameraSetup)\n return; // Don't run until camera is ready\n const position = props.desiredCameraPosition || CameraPosition.WorldFacing;\n const settings = props.cameraSettings || IdCapture.createRecommendedCameraSettings();\n CameraOwnershipHelper.withCamera(position, cameraOwner, async (camera) => {\n await camera.applySettings(settings);\n });\n }, [props.cameraSettings, props.desiredCameraPosition, cameraOwner, isCameraSetup]);\n useEffect(() => {\n if (props.desiredCameraState) {\n setFrameSourceState(props.desiredCameraState);\n }\n }, [props.desiredCameraState]);\n useEffect(() => {\n if (props.desiredCameraPosition) {\n // Handle camera position change with ownership\n const currentOwnedPosition = CameraOwnershipHelper.getOwnedPosition(cameraOwner);\n const newPosition = props.desiredCameraPosition;\n if (currentOwnedPosition && currentOwnedPosition !== newPosition) {\n // Release old camera ownership\n CameraOwnershipHelper.releaseOwnership(currentOwnedPosition, cameraOwner);\n // Set up new camera\n setupCamera();\n }\n else if (!currentOwnedPosition) {\n // No camera owned yet, set up new camera\n setupCamera();\n }\n }\n }, [props.desiredCameraPosition, cameraOwner, setupCamera]);\n /* CONTROLS */\n useEffect(() => {\n if (props.desiredTorchState) {\n const position = props.desiredCameraPosition || CameraPosition.WorldFacing;\n CameraOwnershipHelper.withCameraWhenAvailable(position, cameraOwner, async (camera) => {\n camera.desiredTorchState = props.desiredTorchState;\n });\n }\n }, [props.desiredTorchState, props.desiredCameraPosition, cameraOwner]);\n useEffect(() => {\n if (!viewRef.current)\n return;\n if (torchSwitchControl.current) {\n viewRef.current?.removeControl(torchSwitchControl.current);\n }\n if (!props.torchSwitchControl)\n return;\n torchSwitchControl.current = props.torchSwitchControl;\n viewRef.current.addControl(torchSwitchControl.current);\n }, [props.torchSwitchControl]);\n useEffect(() => {\n if (!viewRef.current)\n return;\n if (zoomSwitchControl.current) {\n viewRef.current?.removeControl(zoomSwitchControl.current);\n }\n if (!props.zoomSwitchControl)\n return;\n zoomSwitchControl.current = props.zoomSwitchControl;\n viewRef.current.addControl(zoomSwitchControl.current);\n }, [props.zoomSwitchControl]);\n /* MISC */\n useEffect(() => {\n if (props.feedback) {\n getMode().feedback = props.feedback;\n }\n }, [props.feedback, getMode]);\n useEffect(() => {\n if (!props.navigation)\n return;\n try {\n const unsubscribeFromFocus = props.navigation.addListener('focus', () => {\n doSetup();\n });\n const unsubscribeFromBlur = props.navigation.addListener('blur', () => {\n doCleanup();\n });\n return () => {\n unsubscribeFromFocus();\n unsubscribeFromBlur();\n };\n }\n catch (e) {\n // tslint:disable-next-line:no-console\n console.error(e);\n }\n }, [props.navigation, doSetup, doCleanup]);\n return React.createElement(DataCaptureView, { context: props.context, parentId: viewId, style: { flex: 1 }, ref: viewRef });\n});\n//# sourceMappingURL=IdCaptureView.js.map","import { initIdProxy } from './native/initProxy';\nimport { initIdDefaults } from './private/initDefaults';\ninitIdDefaults();\ninitIdProxy();\nexport { DateResult, IdAnonymizationMode, IdImageType, CapturedSides, TextHintPosition, Duration } from 'scandit-datacapture-frameworks-id';\nexport { AamvaBarcodeVerificationResult, AamvaBarcodeVerificationStatus } from 'scandit-datacapture-frameworks-id';\nexport { CapturedId, BarcodeResult, MRZResult, ProfessionalDrivingPermit } from 'scandit-datacapture-frameworks-id';\nexport { VehicleRestriction, VIZResult, IdFieldType } from 'scandit-datacapture-frameworks-id';\nexport { UsRealIdStatus } from 'scandit-datacapture-frameworks-id';\nexport { IdCaptureController, IdCaptureListenerController, IdCaptureListenerEvents } from 'scandit-datacapture-frameworks-id';\nexport { IdCapture, IdCaptureFeedback, IdCaptureOverlay, IdCaptureSettings, IdLayoutLineStyle, IdLayoutStyle, RejectionReason } from 'scandit-datacapture-frameworks-id';\nexport { IdCaptureDocumentType, DriverLicense, HealthInsuranceCard, IdCard, Passport, RegionSpecific, ResidencePermit, VisaIcao } from 'scandit-datacapture-frameworks-id';\nexport { SingleSideScanner, FullDocumentScanner, IdCaptureRegion, RegionSpecificSubtype, IdImages, IdSide } from 'scandit-datacapture-frameworks-id';\nexport { DataConsistencyResult, DrivingLicenseCategory, DrivingLicenseDetails, DataConsistencyCheck, MobileDocumentResult, VerificationResult, Sex } from 'scandit-datacapture-frameworks-id';\nexport * from './IdCaptureView';\n//# sourceMappingURL=index.js.map"],"names":[],"mappings":";;;;;;;AAGO,SAAS,WAAW,GAAG;AAC9B,IAAI,YAAY,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,MAAM;AAC1D,QAAQ,MAAM,MAAM,GAAG,oBAAoB,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;AAChF,QAAQ,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACzC,KAAK,CAAC,CAAC;AACP,IAAI,YAAY,CAAC,gBAAgB,CAAC,wBAAwB,EAAE,MAAM;AAClE,QAAQ,MAAM,MAAM,GAAG,oBAAoB,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;AAChF,QAAQ,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACzC,KAAK,CAAC,CAAC;AACP,IAAI,YAAY,CAAC,gBAAgB,CAAC,uBAAuB,EAAE,MAAM;AACjE,QAAQ,MAAM,MAAM,GAAG,oBAAoB,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;AAChF,QAAQ,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;AACzC,KAAK,CAAC,CAAC;AACP;;ACbA,MAAM,aAAa,GAAG,aAAa,CAAC,oBAAoB,CAAC;AAClD,SAAS,cAAc,GAAG;AACjC,IAAI,gBAAgB,EAAE,CAAC;AACvB,IAAI,cAAc,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AAC3C;;ACFA;AACY,MAAC,aAAa,GAAG,UAAU,CAAC,SAAS,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE;AAC3E,IAAI,mBAAmB,CAAC,GAAG,EAAE,OAAO;AACpC,QAAQ,KAAK,GAAG;AAChB,YAAY,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;AAC9B,SAAS;AACT,KAAK,CAAC;AACN;AACA,IAAI,EAAE,CAAC,CAAC;AACR;AACA,IAAI,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAChE,IAAI,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AACnF,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC;AACzE,IAAI,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9D;AACA,IAAI,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO;AACvC,QAAQ,EAAE,EAAE,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AACvC,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AAClB;AACA,IAAI,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM;AACtC,QAAQ,IAAI,gBAAgB,CAAC,OAAO,KAAK,IAAI,EAAE;AAC/C,YAAY,OAAO,gBAAgB,CAAC,OAAO,CAAC;AAC5C,SAAS;AACT,QAAQ,gBAAgB,CAAC,OAAO,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,iBAAiB,IAAI,IAAI,iBAAiB,EAAE,CAAC,CAAC;AACrG,QAAQ,gBAAgB,CAAC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC;AACnD,QAAQ,OAAO,gBAAgB,CAAC,OAAO,CAAC;AACxC,KAAK,EAAE,CAAC,KAAK,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;AAC1C,IAAI,SAAS,CAAC,MAAM;AACpB,QAAQ,OAAO,EAAE,CAAC,SAAS,GAAG,cAAc,CAAC;AAC7C,KAAK,EAAE,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC,CAAC;AAClC,IAAI,SAAS,CAAC,MAAM;AACpB,QAAQ,MAAM,QAAQ,GAAG,KAAK,CAAC,qBAAqB,IAAI,cAAc,CAAC,WAAW,CAAC;AACnF,QAAQ,qBAAqB,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,MAAM,KAAK;AAClF,YAAY,MAAM,MAAM,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;AAChE,SAAS,CAAC,CAAC;AACX,KAAK,EAAE,CAAC,gBAAgB,EAAE,KAAK,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC,CAAC;AACrE,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACjC,IAAI,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;AAC3C,IAAI,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1C,IAAI,MAAM,mBAAmB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7C,IAAI,MAAM,mBAAmB,GAAG,WAAW,CAAC,MAAM;AAClD,QAAQ,IAAI,mBAAmB,CAAC,OAAO,KAAK,IAAI,EAAE;AAClD,YAAY,OAAO,mBAAmB,CAAC,OAAO,CAAC;AAC/C,SAAS;AACT,QAAQ,mBAAmB,CAAC,OAAO,GAAG,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC,CAAC;AACtE,QAAQ,OAAO,mBAAmB,CAAC,OAAO,CAAC;AAC3C,KAAK,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAClB;AACA,IAAI,MAAM,kBAAkB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC5C,IAAI,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AAC3C,IAAI,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AACnD;AACA,IAAI,SAAS,CAAC,MAAM;AACpB,QAAQ,OAAO,EAAE,CAAC;AAClB,QAAQ,MAAM,YAAY,GAAG,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,YAAY,IAAI;AACjF,YAAY,IAAI,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,YAAY,KAAK,QAAQ,EAAE;AAC5F,gBAAgB,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AACnD,gBAAgB,mBAAmB,CAAC,KAAK,CAAC,kBAAkB,IAAI,gBAAgB,CAAC,EAAE,CAAC,CAAC;AACrF,aAAa;AACb,iBAAiB;AACjB,gBAAgB,iBAAiB,CAAC,KAAK,CAAC,CAAC;AACzC,gBAAgB,mBAAmB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AAC1D,aAAa;AACb,YAAY,QAAQ,CAAC,OAAO,GAAG,YAAY,CAAC;AAC5C,SAAS,CAAC,CAAC;AACX,QAAQ,OAAO,MAAM;AACrB,YAAY,YAAY,CAAC,MAAM,EAAE,CAAC;AAClC,YAAY,SAAS,EAAE,CAAC;AACxB,SAAS,CAAC;AACV;AACA,KAAK,EAAE,EAAE,CAAC,CAAC;AACX,IAAI,MAAM,WAAW,GAAG,WAAW,CAAC,YAAY;AAChD,QAAQ,MAAM,QAAQ,GAAG,KAAK,CAAC,qBAAqB,IAAI,cAAc,CAAC,WAAW,CAAC;AACnF;AACA,QAAQ,MAAM,qBAAqB,CAAC,uBAAuB,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,MAAM,KAAK;AACrG,YAAY,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,IAAI,SAAS,CAAC,+BAA+B,EAAE,CAAC;AACjG,YAAY,MAAM,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACjD,YAAY,MAAM,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;AACvD,YAAY,MAAM,MAAM,CAAC,oBAAoB,CAAC,KAAK,CAAC,kBAAkB,IAAI,gBAAgB,CAAC,EAAE,CAAC,CAAC;AAC/F;AACA,YAAY,gBAAgB,CAAC,IAAI,CAAC,CAAC;AACnC,SAAS,CAAC,CAAC;AACX,KAAK,EAAE,CAAC,KAAK,CAAC,qBAAqB,EAAE,WAAW,EAAE,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAClH,IAAI,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM;AACtC,QAAQ,IAAI,gBAAgB,CAAC,OAAO;AACpC,YAAY,OAAO;AACnB,QAAQ,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC;AACxC;AACA,QAAQ,WAAW,EAAE,CAAC;AACtB;AACA,QAAQ,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;AACvC,QAAQ,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;AACzC;AACA,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE;AAC7B,YAAY,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC;AAC9D,SAAS;AACT,KAAK,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC;AACnE,IAAI,MAAM,SAAS,GAAG,MAAM;AAC5B,QAAQ,SAAS,EAAE,CAAC;AACpB,QAAQ,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC;AACxC,QAAQ,kBAAkB,CAAC,OAAO,GAAG,IAAI,CAAC;AAC1C,QAAQ,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAC;AACzC,QAAQ,mBAAmB,CAAC,OAAO,GAAG,IAAI,CAAC;AAC3C,KAAK,CAAC;AACN,IAAI,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM;AACxC,QAAQ,IAAI,CAAC,gBAAgB,CAAC,OAAO;AACrC,YAAY,OAAO;AACnB,QAAQ,gBAAgB,CAAC,OAAO,GAAG,KAAK,CAAC;AACzC;AACA,QAAQ,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAChC;AACA,QAAQ,IAAI,kBAAkB,CAAC,OAAO,EAAE;AACxC,YAAY,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACvE,SAAS;AACT;AACA,QAAQ,IAAI,iBAAiB,CAAC,OAAO,EAAE;AACvC,YAAY,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACtE,SAAS;AACT;AACA,QAAQ,IAAI,gBAAgB,CAAC,OAAO,EAAE;AACtC,YAAY,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC/D,SAAS;AACT;AACA,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE;AAC7B,YAAY,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;AAChH,SAAS;AACT;AACA,QAAQ,MAAM,QAAQ,GAAG,KAAK,CAAC,qBAAqB,IAAI,cAAc,CAAC,WAAW,CAAC;AACnF,QAAQ,qBAAqB,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,MAAM,KAAK;AAClF,YAAY,MAAM,MAAM,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;AACpE,YAAY,MAAM,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;AACrD,SAAS,CAAC,CAAC,OAAO,CAAC,MAAM;AACzB;AACA,YAAY,qBAAqB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AAC1E,SAAS,CAAC,CAAC;AACX,KAAK,EAAE,CAAC,KAAK,CAAC,qBAAqB,EAAE,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAClE;AACA,IAAI,SAAS,CAAC,MAAM;AACpB,QAAQ,IAAI,KAAK,CAAC,iBAAiB,EAAE;AACrC,YAAY,OAAO,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;AAC7D,SAAS;AACT,KAAK,EAAE,CAAC,KAAK,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC;AAC3C,IAAI,SAAS,CAAC,MAAM;AACpB,QAAQ,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC3C,QAAQ,mBAAmB,CAAC,KAAK,CAAC,kBAAkB,IAAI,gBAAgB,CAAC,EAAE,CAAC,CAAC;AAC7E,KAAK,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACpD,IAAI,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACrC,IAAI,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AACtG;AACA,IAAI,SAAS,CAAC,MAAM;AACpB,QAAQ,YAAY,CAAC,OAAO,GAAG,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC;AACpG,KAAK,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;AAChD;AACA,IAAI,SAAS,CAAC,MAAM;AACpB,QAAQ,MAAM,cAAc,GAAG,YAAY;AAC3C,YAAY,MAAM,kBAAkB,GAAG,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,WAAW,CAAC;AAC/E,YAAY,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,KAAK,IAAI,CAAC;AAC7D,YAAY,IAAI,kBAAkB,IAAI,CAAC,WAAW,EAAE;AACpD;AACA,gBAAgB,WAAW,CAAC,OAAO,GAAG;AACtC,oBAAoB,YAAY,EAAE,CAAC,SAAS,EAAE,UAAU,KAAK,YAAY,CAAC,OAAO,CAAC,YAAY,GAAG,SAAS,EAAE,UAAU,CAAC;AACvH,oBAAoB,WAAW,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,KAAK,YAAY,CAAC,OAAO,CAAC,WAAW,GAAG,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC;AACrI,iBAAiB,CAAC;AAClB,gBAAgB,MAAM,OAAO,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACjE,aAAa;AACb,iBAAiB,IAAI,CAAC,kBAAkB,IAAI,WAAW,IAAI,WAAW,CAAC,OAAO,EAAE;AAChF;AACA,gBAAgB,MAAM,OAAO,EAAE,CAAC,cAAc,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AACpE,gBAAgB,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC;AAC3C,aAAa;AACb,SAAS,CAAC;AACV,QAAQ,cAAc,EAAE,CAAC;AACzB,KAAK,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;AACpF;AACA,IAAI,SAAS,CAAC,MAAM;AACpB,QAAQ,IAAI,KAAK,CAAC,aAAa,EAAE;AACjC,YAAY,mBAAmB,EAAE,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;AACtE,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,aAAa,EAAE;AACjC,YAAY,mBAAmB,EAAE,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;AACtE,SAAS;AACT,QAAQ,IAAI,KAAK,CAAC,cAAc,EAAE;AAClC,YAAY,mBAAmB,EAAE,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;AACxE,SAAS;AACT,KAAK,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,KAAK,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAC9F;AACA,IAAI,SAAS,CAAC,MAAM;AACpB,QAAQ,IAAI,CAAC,aAAa;AAC1B,YAAY,OAAO;AACnB,QAAQ,MAAM,QAAQ,GAAG,KAAK,CAAC,qBAAqB,IAAI,cAAc,CAAC,WAAW,CAAC;AACnF,QAAQ,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,IAAI,SAAS,CAAC,+BAA+B,EAAE,CAAC;AAC7F,QAAQ,qBAAqB,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,MAAM,KAAK;AAClF,YAAY,MAAM,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;AACjD,SAAS,CAAC,CAAC;AACX,KAAK,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,qBAAqB,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;AACxF,IAAI,SAAS,CAAC,MAAM;AACpB,QAAQ,IAAI,KAAK,CAAC,kBAAkB,EAAE;AACtC,YAAY,mBAAmB,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;AAC1D,SAAS;AACT,KAAK,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACnC,IAAI,SAAS,CAAC,MAAM;AACpB,QAAQ,IAAI,KAAK,CAAC,qBAAqB,EAAE;AACzC;AACA,YAAY,MAAM,oBAAoB,GAAG,qBAAqB,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;AAC7F,YAAY,MAAM,WAAW,GAAG,KAAK,CAAC,qBAAqB,CAAC;AAC5D,YAAY,IAAI,oBAAoB,IAAI,oBAAoB,KAAK,WAAW,EAAE;AAC9E;AACA,gBAAgB,qBAAqB,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,WAAW,CAAC,CAAC;AAC1F;AACA,gBAAgB,WAAW,EAAE,CAAC;AAC9B,aAAa;AACb,iBAAiB,IAAI,CAAC,oBAAoB,EAAE;AAC5C;AACA,gBAAgB,WAAW,EAAE,CAAC;AAC9B,aAAa;AACb,SAAS;AACT,KAAK,EAAE,CAAC,KAAK,CAAC,qBAAqB,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;AAChE;AACA,IAAI,SAAS,CAAC,MAAM;AACpB,QAAQ,IAAI,KAAK,CAAC,iBAAiB,EAAE;AACrC,YAAY,MAAM,QAAQ,GAAG,KAAK,CAAC,qBAAqB,IAAI,cAAc,CAAC,WAAW,CAAC;AACvF,YAAY,qBAAqB,CAAC,uBAAuB,CAAC,QAAQ,EAAE,WAAW,EAAE,OAAO,MAAM,KAAK;AACnG,gBAAgB,MAAM,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC;AACnE,aAAa,CAAC,CAAC;AACf,SAAS;AACT,KAAK,EAAE,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC,CAAC;AAC5E,IAAI,SAAS,CAAC,MAAM;AACpB,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO;AAC5B,YAAY,OAAO;AACnB,QAAQ,IAAI,kBAAkB,CAAC,OAAO,EAAE;AACxC,YAAY,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AACvE,SAAS;AACT,QAAQ,IAAI,CAAC,KAAK,CAAC,kBAAkB;AACrC,YAAY,OAAO;AACnB,QAAQ,kBAAkB,CAAC,OAAO,GAAG,KAAK,CAAC,kBAAkB,CAAC;AAC9D,QAAQ,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC/D,KAAK,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;AACnC,IAAI,SAAS,CAAC,MAAM;AACpB,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO;AAC5B,YAAY,OAAO;AACnB,QAAQ,IAAI,iBAAiB,CAAC,OAAO,EAAE;AACvC,YAAY,OAAO,CAAC,OAAO,EAAE,aAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AACtE,SAAS;AACT,QAAQ,IAAI,CAAC,KAAK,CAAC,iBAAiB;AACpC,YAAY,OAAO;AACnB,QAAQ,iBAAiB,CAAC,OAAO,GAAG,KAAK,CAAC,iBAAiB,CAAC;AAC5D,QAAQ,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;AAC9D,KAAK,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAClC;AACA,IAAI,SAAS,CAAC,MAAM;AACpB,QAAQ,IAAI,KAAK,CAAC,QAAQ,EAAE;AAC5B,YAAY,OAAO,EAAE,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;AAChD,SAAS;AACT,KAAK,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;AAClC,IAAI,SAAS,CAAC,MAAM;AACpB,QAAQ,IAAI,CAAC,KAAK,CAAC,UAAU;AAC7B,YAAY,OAAO;AACnB,QAAQ,IAAI;AACZ,YAAY,MAAM,oBAAoB,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM;AACrF,gBAAgB,OAAO,EAAE,CAAC;AAC1B,aAAa,CAAC,CAAC;AACf,YAAY,MAAM,mBAAmB,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM;AACnF,gBAAgB,SAAS,EAAE,CAAC;AAC5B,aAAa,CAAC,CAAC;AACf,YAAY,OAAO,MAAM;AACzB,gBAAgB,oBAAoB,EAAE,CAAC;AACvC,gBAAgB,mBAAmB,EAAE,CAAC;AACtC,aAAa,CAAC;AACd,SAAS;AACT,QAAQ,OAAO,CAAC,EAAE;AAClB;AACA,YAAY,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC7B,SAAS;AACT,KAAK,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AAC/C,IAAI,OAAO,KAAK,CAAC,aAAa,CAAC,eAAe,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;AAChI,CAAC;;ACtRD,cAAc,EAAE,CAAC;AACjB,WAAW,EAAE;;;;"}