idmission-web-sdk 2.2.34 → 2.2.36

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 (70) hide show
  1. package/dist/components/CompositeWizard.d.ts +1 -2
  2. package/dist/components/CompositeWizard.d.ts.map +1 -1
  3. package/dist/components/camera/CameraAccessDeniedOverlay.d.ts.map +1 -1
  4. package/dist/components/camera/CameraVideoTag.d.ts +2 -4
  5. package/dist/components/camera/CameraVideoTag.d.ts.map +1 -1
  6. package/dist/components/camera/MicrophoneAccessDeniedOverlay.d.ts.map +1 -1
  7. package/dist/components/common/debug.d.ts.map +1 -1
  8. package/dist/components/customer_flows/CustomerBiometricsEnrollment.d.ts.map +1 -1
  9. package/dist/components/customer_flows/CustomerIdAndBiometricsEnrollment.d.ts.map +1 -1
  10. package/dist/components/customer_flows/CustomerIdentification.d.ts.map +1 -1
  11. package/dist/components/customer_flows/CustomerVerification.d.ts.map +1 -1
  12. package/dist/components/customer_flows/DocumentCapture.d.ts.map +1 -1
  13. package/dist/components/customer_flows/FaceValidation.d.ts.map +1 -1
  14. package/dist/components/customer_flows/IdAndFaceValidation.d.ts.map +1 -1
  15. package/dist/components/customer_flows/IdValidation.d.ts.map +1 -1
  16. package/dist/components/customer_flows/VideoIdValidation.d.ts.map +1 -1
  17. package/dist/components/customer_identification/CustomerIdentificationWizard.d.ts +1 -1
  18. package/dist/components/customer_identification/CustomerIdentificationWizard.d.ts.map +1 -1
  19. package/dist/components/customer_verification/CustomerVerificationWizard.d.ts.map +1 -1
  20. package/dist/components/document_capture/DocumentCaptureScreen.d.ts.map +1 -1
  21. package/dist/components/document_capture/DocumentCaptureStateProvider.d.ts.map +1 -1
  22. package/dist/components/face_liveness/FaceLivenessWizard.d.ts.map +1 -1
  23. package/dist/components/id_capture/DocumentDetectionModelProvider.d.ts.map +1 -1
  24. package/dist/components/id_capture/FocusModelProvider.d.ts.map +1 -1
  25. package/dist/components/id_capture/IdCapture.d.ts.map +1 -1
  26. package/dist/components/id_capture/IdCaptureGuideOverlay.d.ts.map +1 -1
  27. package/dist/components/id_capture/IdCaptureGuides.d.ts.map +1 -1
  28. package/dist/components/id_capture/IdCaptureGuidesCommon.d.ts.map +1 -1
  29. package/dist/components/id_capture/IdCaptureLoadingGraphic.d.ts.map +1 -1
  30. package/dist/components/id_capture/IdCaptureLoadingOverlayDefault.d.ts.map +1 -1
  31. package/dist/components/id_capture/IdCaptureLoadingOverlayLegacy.d.ts.map +1 -1
  32. package/dist/components/id_capture/IdCaptureWizard.d.ts.map +1 -1
  33. package/dist/components/selfie_capture/SelfieCapture.d.ts.map +1 -1
  34. package/dist/components/selfie_capture/SelfieCaptureLoadingGraphic.d.ts.map +1 -1
  35. package/dist/components/selfie_capture/SelfieCaptureLoadingOverlayDefault.d.ts.map +1 -1
  36. package/dist/components/selfie_capture/SelfieCaptureLoadingOverlayLegacy.d.ts.map +1 -1
  37. package/dist/components/selfie_capture/SelfieGuidanceModelsProvider.d.ts.map +1 -1
  38. package/dist/components/video_id/IdVideoCapture.d.ts +1 -1
  39. package/dist/components/video_id/IdVideoCapture.d.ts.map +1 -1
  40. package/dist/components/video_id/IdVideoCaptureFlipIdPrompt.d.ts.map +1 -1
  41. package/dist/components/video_id/IdVideoCaptureGuides.d.ts.map +1 -1
  42. package/dist/components/video_id/IdVideoCaptureWizard.d.ts.map +1 -1
  43. package/dist/components/video_signature_capture/VideoSignatureCapture.d.ts.map +1 -1
  44. package/dist/components/video_signature_capture/VideoSignatureWizard.d.ts.map +1 -1
  45. package/dist/lib/camera/Camera.d.ts +4 -0
  46. package/dist/lib/camera/Camera.d.ts.map +1 -1
  47. package/dist/lib/camera/cameraStore.d.ts +52 -0
  48. package/dist/lib/camera/cameraStore.d.ts.map +1 -0
  49. package/dist/lib/camera/videoRefStack.d.ts +6 -0
  50. package/dist/lib/camera/videoRefStack.d.ts.map +1 -0
  51. package/dist/lib/models/DocumentDetection.d.ts +3 -1
  52. package/dist/lib/models/DocumentDetection.d.ts.map +1 -1
  53. package/dist/lib/models/FaceDetection.d.ts +3 -1
  54. package/dist/lib/models/FaceDetection.d.ts.map +1 -1
  55. package/dist/lib/models/Focus.d.ts +3 -1
  56. package/dist/lib/models/Focus.d.ts.map +1 -1
  57. package/dist/sdk2.cjs.development.js +1277 -1169
  58. package/dist/sdk2.cjs.development.js.map +1 -1
  59. package/dist/sdk2.cjs.production.js +1 -1
  60. package/dist/sdk2.cjs.production.js.map +1 -1
  61. package/dist/sdk2.esm.js +1277 -1169
  62. package/dist/sdk2.esm.js.map +1 -1
  63. package/dist/sdk2.umd.development.js +1675 -1450
  64. package/dist/sdk2.umd.development.js.map +1 -1
  65. package/dist/sdk2.umd.production.js +1 -1
  66. package/dist/sdk2.umd.production.js.map +1 -1
  67. package/dist/version.d.ts +1 -1
  68. package/package.json +5 -4
  69. package/dist/components/camera/CameraProvider.d.ts +0 -17
  70. package/dist/components/camera/CameraProvider.d.ts.map +0 -1
@@ -9,10 +9,12 @@ var tusJsClient = require('tus-js-client');
9
9
  var SparkMD5 = require('spark-md5');
10
10
  var useResizeObserver = require('use-resize-observer');
11
11
  var tasksVision = require('@mediapipe/tasks-vision');
12
+ var zustand = require('zustand');
12
13
  var useDebounce = require('use-debounce');
13
14
  var reactDom = require('react-dom');
14
15
  var LanguageDetector = require('i18next-browser-languagedetector');
15
16
  var i18n = require('i18next');
17
+ var shallow = require('zustand/react/shallow');
16
18
  var SignatureCanvas = require('react-signature-canvas');
17
19
 
18
20
  function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; }
@@ -232,7 +234,7 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
232
234
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
233
235
  };
234
236
 
235
- var webSdkVersion = '2.2.34';
237
+ var webSdkVersion = '2.2.36';
236
238
 
237
239
  function getPlatform() {
238
240
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
@@ -393,7 +395,7 @@ function videoDataUrlToB64(url) {
393
395
  });
394
396
  }
395
397
 
396
- var PageContainerDiv = styled__default.default.div(templateObject_1$J || (templateObject_1$J = __makeTemplateObject(["\n ", "\n\n ", "\n\n &.flex {\n display: flex;\n }\n\n &.padded {\n box-sizing: border-box;\n padding: 16px 24px;\n }\n"], ["\n ", "\n\n ", "\n\n &.flex {\n display: flex;\n }\n\n &.padded {\n box-sizing: border-box;\n padding: 16px 24px;\n }\n"])), function (props) {
398
+ var PageContainerDiv = styled__default.default.div(templateObject_1$L || (templateObject_1$L = __makeTemplateObject(["\n ", "\n\n ", "\n\n &.flex {\n display: flex;\n }\n\n &.padded {\n box-sizing: border-box;\n padding: 16px 24px;\n }\n"], ["\n ", "\n\n ", "\n\n &.flex {\n display: flex;\n }\n\n &.padded {\n box-sizing: border-box;\n padding: 16px 24px;\n }\n"])), function (props) {
397
399
  var _a;
398
400
  return props.theme.isFullscreen === false ? "" : "\n position: fixed;\n top: 0;\n left: 0;\n width: var(--app-width);\n height: calc(\n var(--app-height) - ".concat((_a = props.$heightOffset) !== null && _a !== void 0 ? _a : 0, "px\n );\n overflow-x: hidden;\n overflow-y: auto;\n ");
399
401
  }, function (props) {
@@ -433,7 +435,7 @@ var PageContainer = /*#__PURE__*/React.forwardRef(function (_a, ref) {
433
435
  }, dimensionsCalculated && children);
434
436
  });
435
437
  PageContainer.displayName = 'PageContainer';
436
- var templateObject_1$J;
438
+ var templateObject_1$L;
437
439
 
438
440
  var LoaderButton = function LoaderButton(_a) {
439
441
  var children = _a.children,
@@ -492,30 +494,30 @@ var LoaderButton = function LoaderButton(_a) {
492
494
  className: "ladda-label"
493
495
  }, children));
494
496
  };
495
- var StyledButton = styled__default.default.button(templateObject_1$I || (templateObject_1$I = __makeTemplateObject(["\n ", "\n\n /*!\n * Ladda\n * http://lab.hakim.se/ladda\n * MIT licensed\n *\n * Copyright (C) 2018 Hakim El Hattab, http://hakim.se\n */\n\n position: relative;\n\n .ladda-spinner {\n position: absolute;\n z-index: 2;\n display: inline-block;\n width: 32px;\n top: 50%;\n margin-top: 0;\n opacity: 0;\n pointer-events: none;\n }\n .ladda-label {\n position: relative;\n z-index: 3;\n }\n .ladda-progress {\n position: absolute;\n width: 0;\n height: 100%;\n left: 0;\n top: 0;\n background: rgba(0, 0, 0, 0.2);\n display: none;\n transition: 0.1s linear all !important;\n }\n &[data-loading] .ladda-progress {\n display: block;\n }\n\n transition: 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) all !important;\n\n .ladda-spinner,\n .ladda-label {\n transition: 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) all !important;\n }\n &[data-style='zoom-in'],\n &[data-style='zoom-in'] .ladda-spinner,\n &[data-style='zoom-in'] .ladda-label,\n &[data-style='zoom-out'],\n &[data-style='zoom-out'] .ladda-spinner,\n &[data-style='zoom-out'] .ladda-label {\n transition: 0.3s ease all !important;\n }\n &[data-style='expand-right'] .ladda-spinner {\n right: -6px;\n }\n &[data-style='expand-right'][data-size='s'] .ladda-spinner,\n &[data-style='expand-right'][data-size='xs'] .ladda-spinner {\n right: -12px;\n }\n &[data-style='expand-right'][data-loading] {\n padding-right: 56px;\n }\n &[data-style='expand-right'][data-loading] .ladda-spinner {\n opacity: 1;\n }\n &[data-style='expand-right'][data-loading][data-size='s'],\n &[data-style='expand-right'][data-loading][data-size='xs'] {\n padding-right: 40px;\n }\n &[data-style='expand-left'] .ladda-spinner {\n left: 26px;\n }\n &[data-style='expand-left'][data-size='s'] .ladda-spinner,\n &[data-style='expand-left'][data-size='xs'] .ladda-spinner {\n left: 4px;\n }\n &[data-style='expand-left'][data-loading] {\n padding-left: 56px;\n }\n &[data-style='expand-left'][data-loading] .ladda-spinner {\n opacity: 1;\n }\n &[data-style='expand-left'][data-loading][data-size='s'],\n &[data-style='expand-left'][data-loading][data-size='xs'] {\n padding-left: 40px;\n }\n &[data-style='expand-up'] {\n overflow: hidden;\n }\n &[data-style='expand-up'] .ladda-spinner {\n top: -32px;\n left: 50%;\n margin-left: 0;\n }\n &[data-style='expand-up'][data-loading] {\n padding-top: 54px;\n }\n &[data-style='expand-up'][data-loading] .ladda-spinner {\n opacity: 1;\n top: 26px;\n margin-top: 0;\n }\n &[data-style='expand-up'][data-loading][data-size='s'],\n &[data-style='expand-up'][data-loading][data-size='xs'] {\n padding-top: 32px;\n }\n &[data-style='expand-up'][data-loading][data-size='s'] .ladda-spinner,\n &[data-style='expand-up'][data-loading][data-size='xs'] .ladda-spinner {\n top: 4px;\n }\n &[data-style='expand-down'] {\n overflow: hidden;\n }\n &[data-style='expand-down'] .ladda-spinner {\n top: 62px;\n left: 50%;\n margin-left: 0;\n }\n &[data-style='expand-down'][data-size='s'] .ladda-spinner,\n &[data-style='expand-down'][data-size='xs'] .ladda-spinner {\n top: 40px;\n }\n &[data-style='expand-down'][data-loading] {\n padding-bottom: 54px;\n }\n &[data-style='expand-down'][data-loading] .ladda-spinner {\n opacity: 1;\n }\n &[data-style='expand-down'][data-loading][data-size='s'],\n &[data-style='expand-down'][data-loading][data-size='xs'] {\n padding-bottom: 32px;\n }\n &[data-style='slide-left'] {\n overflow: hidden;\n }\n &[data-style='slide-left'] .ladda-label {\n position: relative;\n }\n &[data-style='slide-left'] .ladda-spinner {\n left: 100%;\n margin-left: 0;\n }\n &[data-style='slide-left'][data-loading] .ladda-label {\n opacity: 0;\n left: -100%;\n }\n &[data-style='slide-left'][data-loading] .ladda-spinner {\n opacity: 1;\n left: 50%;\n }\n &[data-style='slide-right'] {\n overflow: hidden;\n }\n &[data-style='slide-right'] .ladda-label {\n position: relative;\n }\n &[data-style='slide-right'] .ladda-spinner {\n right: 100%;\n margin-left: 0;\n left: 16px;\n }\n [dir='rtl'] &[data-style='slide-right'] .ladda-spinner {\n right: auto;\n }\n &[data-style='slide-right'][data-loading] .ladda-label {\n opacity: 0;\n left: 100%;\n }\n &[data-style='slide-right'][data-loading] .ladda-spinner {\n opacity: 1;\n left: 50%;\n }\n &[data-style='slide-up'] {\n overflow: hidden;\n }\n &[data-style='slide-up'] .ladda-label {\n position: relative;\n }\n &[data-style='slide-up'] .ladda-spinner {\n left: 50%;\n margin-left: 0;\n margin-top: 1em;\n }\n &[data-style='slide-up'][data-loading] .ladda-label {\n opacity: 0;\n top: -1em;\n }\n &[data-style='slide-up'][data-loading] .ladda-spinner {\n opacity: 1;\n margin-top: 0;\n }\n &[data-style='slide-down'] {\n overflow: hidden;\n }\n &[data-style='slide-down'] .ladda-label {\n position: relative;\n }\n &[data-style='slide-down'] .ladda-spinner {\n left: 50%;\n margin-left: 0;\n margin-top: -2em;\n }\n &[data-style='slide-down'][data-loading] .ladda-label {\n opacity: 0;\n top: 1em;\n }\n &[data-style='slide-down'][data-loading] .ladda-spinner {\n opacity: 1;\n margin-top: 0;\n }\n &[data-style='zoom-out'] {\n overflow: hidden;\n }\n &[data-style='zoom-out'] .ladda-spinner {\n left: 50%;\n margin-left: 32px;\n transform: scale(2.5);\n }\n &[data-style='zoom-out'] .ladda-label {\n position: relative;\n display: inline-block;\n }\n &[data-style='zoom-out'][data-loading] .ladda-label {\n opacity: 0;\n transform: scale(0.5);\n }\n &[data-style='zoom-out'][data-loading] .ladda-spinner {\n opacity: 1;\n margin-left: 0;\n transform: none;\n }\n &[data-style='zoom-in'] {\n overflow: hidden;\n }\n &[data-style='zoom-in'] .ladda-spinner {\n left: 50%;\n margin-left: -16px;\n transform: scale(0.2);\n }\n &[data-style='zoom-in'] .ladda-label {\n position: relative;\n display: inline-block;\n }\n &[data-style='zoom-in'][data-loading] .ladda-label {\n opacity: 0;\n transform: scale(2.2);\n }\n &[data-style='zoom-in'][data-loading] .ladda-spinner {\n opacity: 1;\n margin-left: 0;\n transform: none;\n }\n &[data-style='contract'] {\n overflow: hidden;\n width: 100px;\n }\n &[data-style='contract'] .ladda-spinner {\n left: 50%;\n margin-left: 0;\n }\n &[data-style='contract'][data-loading] {\n border-radius: 50%;\n width: 52px;\n }\n &[data-style='contract'][data-loading] .ladda-label {\n opacity: 0;\n }\n &[data-style='contract'][data-loading] .ladda-spinner {\n opacity: 1;\n }\n &[data-style='contract-overlay'] {\n overflow: hidden;\n width: 100px;\n box-shadow: 0px 0px 0px 2000px rgba(0, 0, 0, 0);\n }\n &[data-style='contract-overlay'] .ladda-spinner {\n left: 50%;\n margin-left: 0;\n }\n &[data-style='contract-overlay'][data-loading] {\n border-radius: 50%;\n width: 52px;\n box-shadow: 0px 0px 0px 2000px rgba(0, 0, 0, 0.8);\n }\n &[data-style='contract-overlay'][data-loading] .ladda-label {\n opacity: 0;\n }\n &[data-style='contract-overlay'][data-loading] .ladda-spinner {\n opacity: 1;\n }\n [dir='rtl'] .ladda-spinner > div {\n left: 25% !important;\n }\n"], ["\n ", "\n\n /*!\n * Ladda\n * http://lab.hakim.se/ladda\n * MIT licensed\n *\n * Copyright (C) 2018 Hakim El Hattab, http://hakim.se\n */\n\n position: relative;\n\n .ladda-spinner {\n position: absolute;\n z-index: 2;\n display: inline-block;\n width: 32px;\n top: 50%;\n margin-top: 0;\n opacity: 0;\n pointer-events: none;\n }\n .ladda-label {\n position: relative;\n z-index: 3;\n }\n .ladda-progress {\n position: absolute;\n width: 0;\n height: 100%;\n left: 0;\n top: 0;\n background: rgba(0, 0, 0, 0.2);\n display: none;\n transition: 0.1s linear all !important;\n }\n &[data-loading] .ladda-progress {\n display: block;\n }\n\n transition: 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) all !important;\n\n .ladda-spinner,\n .ladda-label {\n transition: 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) all !important;\n }\n &[data-style='zoom-in'],\n &[data-style='zoom-in'] .ladda-spinner,\n &[data-style='zoom-in'] .ladda-label,\n &[data-style='zoom-out'],\n &[data-style='zoom-out'] .ladda-spinner,\n &[data-style='zoom-out'] .ladda-label {\n transition: 0.3s ease all !important;\n }\n &[data-style='expand-right'] .ladda-spinner {\n right: -6px;\n }\n &[data-style='expand-right'][data-size='s'] .ladda-spinner,\n &[data-style='expand-right'][data-size='xs'] .ladda-spinner {\n right: -12px;\n }\n &[data-style='expand-right'][data-loading] {\n padding-right: 56px;\n }\n &[data-style='expand-right'][data-loading] .ladda-spinner {\n opacity: 1;\n }\n &[data-style='expand-right'][data-loading][data-size='s'],\n &[data-style='expand-right'][data-loading][data-size='xs'] {\n padding-right: 40px;\n }\n &[data-style='expand-left'] .ladda-spinner {\n left: 26px;\n }\n &[data-style='expand-left'][data-size='s'] .ladda-spinner,\n &[data-style='expand-left'][data-size='xs'] .ladda-spinner {\n left: 4px;\n }\n &[data-style='expand-left'][data-loading] {\n padding-left: 56px;\n }\n &[data-style='expand-left'][data-loading] .ladda-spinner {\n opacity: 1;\n }\n &[data-style='expand-left'][data-loading][data-size='s'],\n &[data-style='expand-left'][data-loading][data-size='xs'] {\n padding-left: 40px;\n }\n &[data-style='expand-up'] {\n overflow: hidden;\n }\n &[data-style='expand-up'] .ladda-spinner {\n top: -32px;\n left: 50%;\n margin-left: 0;\n }\n &[data-style='expand-up'][data-loading] {\n padding-top: 54px;\n }\n &[data-style='expand-up'][data-loading] .ladda-spinner {\n opacity: 1;\n top: 26px;\n margin-top: 0;\n }\n &[data-style='expand-up'][data-loading][data-size='s'],\n &[data-style='expand-up'][data-loading][data-size='xs'] {\n padding-top: 32px;\n }\n &[data-style='expand-up'][data-loading][data-size='s'] .ladda-spinner,\n &[data-style='expand-up'][data-loading][data-size='xs'] .ladda-spinner {\n top: 4px;\n }\n &[data-style='expand-down'] {\n overflow: hidden;\n }\n &[data-style='expand-down'] .ladda-spinner {\n top: 62px;\n left: 50%;\n margin-left: 0;\n }\n &[data-style='expand-down'][data-size='s'] .ladda-spinner,\n &[data-style='expand-down'][data-size='xs'] .ladda-spinner {\n top: 40px;\n }\n &[data-style='expand-down'][data-loading] {\n padding-bottom: 54px;\n }\n &[data-style='expand-down'][data-loading] .ladda-spinner {\n opacity: 1;\n }\n &[data-style='expand-down'][data-loading][data-size='s'],\n &[data-style='expand-down'][data-loading][data-size='xs'] {\n padding-bottom: 32px;\n }\n &[data-style='slide-left'] {\n overflow: hidden;\n }\n &[data-style='slide-left'] .ladda-label {\n position: relative;\n }\n &[data-style='slide-left'] .ladda-spinner {\n left: 100%;\n margin-left: 0;\n }\n &[data-style='slide-left'][data-loading] .ladda-label {\n opacity: 0;\n left: -100%;\n }\n &[data-style='slide-left'][data-loading] .ladda-spinner {\n opacity: 1;\n left: 50%;\n }\n &[data-style='slide-right'] {\n overflow: hidden;\n }\n &[data-style='slide-right'] .ladda-label {\n position: relative;\n }\n &[data-style='slide-right'] .ladda-spinner {\n right: 100%;\n margin-left: 0;\n left: 16px;\n }\n [dir='rtl'] &[data-style='slide-right'] .ladda-spinner {\n right: auto;\n }\n &[data-style='slide-right'][data-loading] .ladda-label {\n opacity: 0;\n left: 100%;\n }\n &[data-style='slide-right'][data-loading] .ladda-spinner {\n opacity: 1;\n left: 50%;\n }\n &[data-style='slide-up'] {\n overflow: hidden;\n }\n &[data-style='slide-up'] .ladda-label {\n position: relative;\n }\n &[data-style='slide-up'] .ladda-spinner {\n left: 50%;\n margin-left: 0;\n margin-top: 1em;\n }\n &[data-style='slide-up'][data-loading] .ladda-label {\n opacity: 0;\n top: -1em;\n }\n &[data-style='slide-up'][data-loading] .ladda-spinner {\n opacity: 1;\n margin-top: 0;\n }\n &[data-style='slide-down'] {\n overflow: hidden;\n }\n &[data-style='slide-down'] .ladda-label {\n position: relative;\n }\n &[data-style='slide-down'] .ladda-spinner {\n left: 50%;\n margin-left: 0;\n margin-top: -2em;\n }\n &[data-style='slide-down'][data-loading] .ladda-label {\n opacity: 0;\n top: 1em;\n }\n &[data-style='slide-down'][data-loading] .ladda-spinner {\n opacity: 1;\n margin-top: 0;\n }\n &[data-style='zoom-out'] {\n overflow: hidden;\n }\n &[data-style='zoom-out'] .ladda-spinner {\n left: 50%;\n margin-left: 32px;\n transform: scale(2.5);\n }\n &[data-style='zoom-out'] .ladda-label {\n position: relative;\n display: inline-block;\n }\n &[data-style='zoom-out'][data-loading] .ladda-label {\n opacity: 0;\n transform: scale(0.5);\n }\n &[data-style='zoom-out'][data-loading] .ladda-spinner {\n opacity: 1;\n margin-left: 0;\n transform: none;\n }\n &[data-style='zoom-in'] {\n overflow: hidden;\n }\n &[data-style='zoom-in'] .ladda-spinner {\n left: 50%;\n margin-left: -16px;\n transform: scale(0.2);\n }\n &[data-style='zoom-in'] .ladda-label {\n position: relative;\n display: inline-block;\n }\n &[data-style='zoom-in'][data-loading] .ladda-label {\n opacity: 0;\n transform: scale(2.2);\n }\n &[data-style='zoom-in'][data-loading] .ladda-spinner {\n opacity: 1;\n margin-left: 0;\n transform: none;\n }\n &[data-style='contract'] {\n overflow: hidden;\n width: 100px;\n }\n &[data-style='contract'] .ladda-spinner {\n left: 50%;\n margin-left: 0;\n }\n &[data-style='contract'][data-loading] {\n border-radius: 50%;\n width: 52px;\n }\n &[data-style='contract'][data-loading] .ladda-label {\n opacity: 0;\n }\n &[data-style='contract'][data-loading] .ladda-spinner {\n opacity: 1;\n }\n &[data-style='contract-overlay'] {\n overflow: hidden;\n width: 100px;\n box-shadow: 0px 0px 0px 2000px rgba(0, 0, 0, 0);\n }\n &[data-style='contract-overlay'] .ladda-spinner {\n left: 50%;\n margin-left: 0;\n }\n &[data-style='contract-overlay'][data-loading] {\n border-radius: 50%;\n width: 52px;\n box-shadow: 0px 0px 0px 2000px rgba(0, 0, 0, 0.8);\n }\n &[data-style='contract-overlay'][data-loading] .ladda-label {\n opacity: 0;\n }\n &[data-style='contract-overlay'][data-loading] .ladda-spinner {\n opacity: 1;\n }\n [dir='rtl'] .ladda-spinner > div {\n left: 25% !important;\n }\n"])), function (props) {
497
+ var StyledButton = styled__default.default.button(templateObject_1$K || (templateObject_1$K = __makeTemplateObject(["\n ", "\n\n /*!\n * Ladda\n * http://lab.hakim.se/ladda\n * MIT licensed\n *\n * Copyright (C) 2018 Hakim El Hattab, http://hakim.se\n */\n\n position: relative;\n\n .ladda-spinner {\n position: absolute;\n z-index: 2;\n display: inline-block;\n width: 32px;\n top: 50%;\n margin-top: 0;\n opacity: 0;\n pointer-events: none;\n }\n .ladda-label {\n position: relative;\n z-index: 3;\n }\n .ladda-progress {\n position: absolute;\n width: 0;\n height: 100%;\n left: 0;\n top: 0;\n background: rgba(0, 0, 0, 0.2);\n display: none;\n transition: 0.1s linear all !important;\n }\n &[data-loading] .ladda-progress {\n display: block;\n }\n\n transition: 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) all !important;\n\n .ladda-spinner,\n .ladda-label {\n transition: 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) all !important;\n }\n &[data-style='zoom-in'],\n &[data-style='zoom-in'] .ladda-spinner,\n &[data-style='zoom-in'] .ladda-label,\n &[data-style='zoom-out'],\n &[data-style='zoom-out'] .ladda-spinner,\n &[data-style='zoom-out'] .ladda-label {\n transition: 0.3s ease all !important;\n }\n &[data-style='expand-right'] .ladda-spinner {\n right: -6px;\n }\n &[data-style='expand-right'][data-size='s'] .ladda-spinner,\n &[data-style='expand-right'][data-size='xs'] .ladda-spinner {\n right: -12px;\n }\n &[data-style='expand-right'][data-loading] {\n padding-right: 56px;\n }\n &[data-style='expand-right'][data-loading] .ladda-spinner {\n opacity: 1;\n }\n &[data-style='expand-right'][data-loading][data-size='s'],\n &[data-style='expand-right'][data-loading][data-size='xs'] {\n padding-right: 40px;\n }\n &[data-style='expand-left'] .ladda-spinner {\n left: 26px;\n }\n &[data-style='expand-left'][data-size='s'] .ladda-spinner,\n &[data-style='expand-left'][data-size='xs'] .ladda-spinner {\n left: 4px;\n }\n &[data-style='expand-left'][data-loading] {\n padding-left: 56px;\n }\n &[data-style='expand-left'][data-loading] .ladda-spinner {\n opacity: 1;\n }\n &[data-style='expand-left'][data-loading][data-size='s'],\n &[data-style='expand-left'][data-loading][data-size='xs'] {\n padding-left: 40px;\n }\n &[data-style='expand-up'] {\n overflow: hidden;\n }\n &[data-style='expand-up'] .ladda-spinner {\n top: -32px;\n left: 50%;\n margin-left: 0;\n }\n &[data-style='expand-up'][data-loading] {\n padding-top: 54px;\n }\n &[data-style='expand-up'][data-loading] .ladda-spinner {\n opacity: 1;\n top: 26px;\n margin-top: 0;\n }\n &[data-style='expand-up'][data-loading][data-size='s'],\n &[data-style='expand-up'][data-loading][data-size='xs'] {\n padding-top: 32px;\n }\n &[data-style='expand-up'][data-loading][data-size='s'] .ladda-spinner,\n &[data-style='expand-up'][data-loading][data-size='xs'] .ladda-spinner {\n top: 4px;\n }\n &[data-style='expand-down'] {\n overflow: hidden;\n }\n &[data-style='expand-down'] .ladda-spinner {\n top: 62px;\n left: 50%;\n margin-left: 0;\n }\n &[data-style='expand-down'][data-size='s'] .ladda-spinner,\n &[data-style='expand-down'][data-size='xs'] .ladda-spinner {\n top: 40px;\n }\n &[data-style='expand-down'][data-loading] {\n padding-bottom: 54px;\n }\n &[data-style='expand-down'][data-loading] .ladda-spinner {\n opacity: 1;\n }\n &[data-style='expand-down'][data-loading][data-size='s'],\n &[data-style='expand-down'][data-loading][data-size='xs'] {\n padding-bottom: 32px;\n }\n &[data-style='slide-left'] {\n overflow: hidden;\n }\n &[data-style='slide-left'] .ladda-label {\n position: relative;\n }\n &[data-style='slide-left'] .ladda-spinner {\n left: 100%;\n margin-left: 0;\n }\n &[data-style='slide-left'][data-loading] .ladda-label {\n opacity: 0;\n left: -100%;\n }\n &[data-style='slide-left'][data-loading] .ladda-spinner {\n opacity: 1;\n left: 50%;\n }\n &[data-style='slide-right'] {\n overflow: hidden;\n }\n &[data-style='slide-right'] .ladda-label {\n position: relative;\n }\n &[data-style='slide-right'] .ladda-spinner {\n right: 100%;\n margin-left: 0;\n left: 16px;\n }\n [dir='rtl'] &[data-style='slide-right'] .ladda-spinner {\n right: auto;\n }\n &[data-style='slide-right'][data-loading] .ladda-label {\n opacity: 0;\n left: 100%;\n }\n &[data-style='slide-right'][data-loading] .ladda-spinner {\n opacity: 1;\n left: 50%;\n }\n &[data-style='slide-up'] {\n overflow: hidden;\n }\n &[data-style='slide-up'] .ladda-label {\n position: relative;\n }\n &[data-style='slide-up'] .ladda-spinner {\n left: 50%;\n margin-left: 0;\n margin-top: 1em;\n }\n &[data-style='slide-up'][data-loading] .ladda-label {\n opacity: 0;\n top: -1em;\n }\n &[data-style='slide-up'][data-loading] .ladda-spinner {\n opacity: 1;\n margin-top: 0;\n }\n &[data-style='slide-down'] {\n overflow: hidden;\n }\n &[data-style='slide-down'] .ladda-label {\n position: relative;\n }\n &[data-style='slide-down'] .ladda-spinner {\n left: 50%;\n margin-left: 0;\n margin-top: -2em;\n }\n &[data-style='slide-down'][data-loading] .ladda-label {\n opacity: 0;\n top: 1em;\n }\n &[data-style='slide-down'][data-loading] .ladda-spinner {\n opacity: 1;\n margin-top: 0;\n }\n &[data-style='zoom-out'] {\n overflow: hidden;\n }\n &[data-style='zoom-out'] .ladda-spinner {\n left: 50%;\n margin-left: 32px;\n transform: scale(2.5);\n }\n &[data-style='zoom-out'] .ladda-label {\n position: relative;\n display: inline-block;\n }\n &[data-style='zoom-out'][data-loading] .ladda-label {\n opacity: 0;\n transform: scale(0.5);\n }\n &[data-style='zoom-out'][data-loading] .ladda-spinner {\n opacity: 1;\n margin-left: 0;\n transform: none;\n }\n &[data-style='zoom-in'] {\n overflow: hidden;\n }\n &[data-style='zoom-in'] .ladda-spinner {\n left: 50%;\n margin-left: -16px;\n transform: scale(0.2);\n }\n &[data-style='zoom-in'] .ladda-label {\n position: relative;\n display: inline-block;\n }\n &[data-style='zoom-in'][data-loading] .ladda-label {\n opacity: 0;\n transform: scale(2.2);\n }\n &[data-style='zoom-in'][data-loading] .ladda-spinner {\n opacity: 1;\n margin-left: 0;\n transform: none;\n }\n &[data-style='contract'] {\n overflow: hidden;\n width: 100px;\n }\n &[data-style='contract'] .ladda-spinner {\n left: 50%;\n margin-left: 0;\n }\n &[data-style='contract'][data-loading] {\n border-radius: 50%;\n width: 52px;\n }\n &[data-style='contract'][data-loading] .ladda-label {\n opacity: 0;\n }\n &[data-style='contract'][data-loading] .ladda-spinner {\n opacity: 1;\n }\n &[data-style='contract-overlay'] {\n overflow: hidden;\n width: 100px;\n box-shadow: 0px 0px 0px 2000px rgba(0, 0, 0, 0);\n }\n &[data-style='contract-overlay'] .ladda-spinner {\n left: 50%;\n margin-left: 0;\n }\n &[data-style='contract-overlay'][data-loading] {\n border-radius: 50%;\n width: 52px;\n box-shadow: 0px 0px 0px 2000px rgba(0, 0, 0, 0.8);\n }\n &[data-style='contract-overlay'][data-loading] .ladda-label {\n opacity: 0;\n }\n &[data-style='contract-overlay'][data-loading] .ladda-spinner {\n opacity: 1;\n }\n [dir='rtl'] .ladda-spinner > div {\n left: 25% !important;\n }\n"], ["\n ", "\n\n /*!\n * Ladda\n * http://lab.hakim.se/ladda\n * MIT licensed\n *\n * Copyright (C) 2018 Hakim El Hattab, http://hakim.se\n */\n\n position: relative;\n\n .ladda-spinner {\n position: absolute;\n z-index: 2;\n display: inline-block;\n width: 32px;\n top: 50%;\n margin-top: 0;\n opacity: 0;\n pointer-events: none;\n }\n .ladda-label {\n position: relative;\n z-index: 3;\n }\n .ladda-progress {\n position: absolute;\n width: 0;\n height: 100%;\n left: 0;\n top: 0;\n background: rgba(0, 0, 0, 0.2);\n display: none;\n transition: 0.1s linear all !important;\n }\n &[data-loading] .ladda-progress {\n display: block;\n }\n\n transition: 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) all !important;\n\n .ladda-spinner,\n .ladda-label {\n transition: 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) all !important;\n }\n &[data-style='zoom-in'],\n &[data-style='zoom-in'] .ladda-spinner,\n &[data-style='zoom-in'] .ladda-label,\n &[data-style='zoom-out'],\n &[data-style='zoom-out'] .ladda-spinner,\n &[data-style='zoom-out'] .ladda-label {\n transition: 0.3s ease all !important;\n }\n &[data-style='expand-right'] .ladda-spinner {\n right: -6px;\n }\n &[data-style='expand-right'][data-size='s'] .ladda-spinner,\n &[data-style='expand-right'][data-size='xs'] .ladda-spinner {\n right: -12px;\n }\n &[data-style='expand-right'][data-loading] {\n padding-right: 56px;\n }\n &[data-style='expand-right'][data-loading] .ladda-spinner {\n opacity: 1;\n }\n &[data-style='expand-right'][data-loading][data-size='s'],\n &[data-style='expand-right'][data-loading][data-size='xs'] {\n padding-right: 40px;\n }\n &[data-style='expand-left'] .ladda-spinner {\n left: 26px;\n }\n &[data-style='expand-left'][data-size='s'] .ladda-spinner,\n &[data-style='expand-left'][data-size='xs'] .ladda-spinner {\n left: 4px;\n }\n &[data-style='expand-left'][data-loading] {\n padding-left: 56px;\n }\n &[data-style='expand-left'][data-loading] .ladda-spinner {\n opacity: 1;\n }\n &[data-style='expand-left'][data-loading][data-size='s'],\n &[data-style='expand-left'][data-loading][data-size='xs'] {\n padding-left: 40px;\n }\n &[data-style='expand-up'] {\n overflow: hidden;\n }\n &[data-style='expand-up'] .ladda-spinner {\n top: -32px;\n left: 50%;\n margin-left: 0;\n }\n &[data-style='expand-up'][data-loading] {\n padding-top: 54px;\n }\n &[data-style='expand-up'][data-loading] .ladda-spinner {\n opacity: 1;\n top: 26px;\n margin-top: 0;\n }\n &[data-style='expand-up'][data-loading][data-size='s'],\n &[data-style='expand-up'][data-loading][data-size='xs'] {\n padding-top: 32px;\n }\n &[data-style='expand-up'][data-loading][data-size='s'] .ladda-spinner,\n &[data-style='expand-up'][data-loading][data-size='xs'] .ladda-spinner {\n top: 4px;\n }\n &[data-style='expand-down'] {\n overflow: hidden;\n }\n &[data-style='expand-down'] .ladda-spinner {\n top: 62px;\n left: 50%;\n margin-left: 0;\n }\n &[data-style='expand-down'][data-size='s'] .ladda-spinner,\n &[data-style='expand-down'][data-size='xs'] .ladda-spinner {\n top: 40px;\n }\n &[data-style='expand-down'][data-loading] {\n padding-bottom: 54px;\n }\n &[data-style='expand-down'][data-loading] .ladda-spinner {\n opacity: 1;\n }\n &[data-style='expand-down'][data-loading][data-size='s'],\n &[data-style='expand-down'][data-loading][data-size='xs'] {\n padding-bottom: 32px;\n }\n &[data-style='slide-left'] {\n overflow: hidden;\n }\n &[data-style='slide-left'] .ladda-label {\n position: relative;\n }\n &[data-style='slide-left'] .ladda-spinner {\n left: 100%;\n margin-left: 0;\n }\n &[data-style='slide-left'][data-loading] .ladda-label {\n opacity: 0;\n left: -100%;\n }\n &[data-style='slide-left'][data-loading] .ladda-spinner {\n opacity: 1;\n left: 50%;\n }\n &[data-style='slide-right'] {\n overflow: hidden;\n }\n &[data-style='slide-right'] .ladda-label {\n position: relative;\n }\n &[data-style='slide-right'] .ladda-spinner {\n right: 100%;\n margin-left: 0;\n left: 16px;\n }\n [dir='rtl'] &[data-style='slide-right'] .ladda-spinner {\n right: auto;\n }\n &[data-style='slide-right'][data-loading] .ladda-label {\n opacity: 0;\n left: 100%;\n }\n &[data-style='slide-right'][data-loading] .ladda-spinner {\n opacity: 1;\n left: 50%;\n }\n &[data-style='slide-up'] {\n overflow: hidden;\n }\n &[data-style='slide-up'] .ladda-label {\n position: relative;\n }\n &[data-style='slide-up'] .ladda-spinner {\n left: 50%;\n margin-left: 0;\n margin-top: 1em;\n }\n &[data-style='slide-up'][data-loading] .ladda-label {\n opacity: 0;\n top: -1em;\n }\n &[data-style='slide-up'][data-loading] .ladda-spinner {\n opacity: 1;\n margin-top: 0;\n }\n &[data-style='slide-down'] {\n overflow: hidden;\n }\n &[data-style='slide-down'] .ladda-label {\n position: relative;\n }\n &[data-style='slide-down'] .ladda-spinner {\n left: 50%;\n margin-left: 0;\n margin-top: -2em;\n }\n &[data-style='slide-down'][data-loading] .ladda-label {\n opacity: 0;\n top: 1em;\n }\n &[data-style='slide-down'][data-loading] .ladda-spinner {\n opacity: 1;\n margin-top: 0;\n }\n &[data-style='zoom-out'] {\n overflow: hidden;\n }\n &[data-style='zoom-out'] .ladda-spinner {\n left: 50%;\n margin-left: 32px;\n transform: scale(2.5);\n }\n &[data-style='zoom-out'] .ladda-label {\n position: relative;\n display: inline-block;\n }\n &[data-style='zoom-out'][data-loading] .ladda-label {\n opacity: 0;\n transform: scale(0.5);\n }\n &[data-style='zoom-out'][data-loading] .ladda-spinner {\n opacity: 1;\n margin-left: 0;\n transform: none;\n }\n &[data-style='zoom-in'] {\n overflow: hidden;\n }\n &[data-style='zoom-in'] .ladda-spinner {\n left: 50%;\n margin-left: -16px;\n transform: scale(0.2);\n }\n &[data-style='zoom-in'] .ladda-label {\n position: relative;\n display: inline-block;\n }\n &[data-style='zoom-in'][data-loading] .ladda-label {\n opacity: 0;\n transform: scale(2.2);\n }\n &[data-style='zoom-in'][data-loading] .ladda-spinner {\n opacity: 1;\n margin-left: 0;\n transform: none;\n }\n &[data-style='contract'] {\n overflow: hidden;\n width: 100px;\n }\n &[data-style='contract'] .ladda-spinner {\n left: 50%;\n margin-left: 0;\n }\n &[data-style='contract'][data-loading] {\n border-radius: 50%;\n width: 52px;\n }\n &[data-style='contract'][data-loading] .ladda-label {\n opacity: 0;\n }\n &[data-style='contract'][data-loading] .ladda-spinner {\n opacity: 1;\n }\n &[data-style='contract-overlay'] {\n overflow: hidden;\n width: 100px;\n box-shadow: 0px 0px 0px 2000px rgba(0, 0, 0, 0);\n }\n &[data-style='contract-overlay'] .ladda-spinner {\n left: 50%;\n margin-left: 0;\n }\n &[data-style='contract-overlay'][data-loading] {\n border-radius: 50%;\n width: 52px;\n box-shadow: 0px 0px 0px 2000px rgba(0, 0, 0, 0.8);\n }\n &[data-style='contract-overlay'][data-loading] .ladda-label {\n opacity: 0;\n }\n &[data-style='contract-overlay'][data-loading] .ladda-spinner {\n opacity: 1;\n }\n [dir='rtl'] .ladda-spinner > div {\n left: 25% !important;\n }\n"])), function (props) {
496
498
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
497
499
  return ((_a = props.theme.buttons) === null || _a === void 0 ? void 0 : _a.style) === 'bootstrap' && "\n border-radius: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n text-transform: none;\n -webkit-appearance: button;\n \n &:not(:disabled),\n &[type='button']:not(:disabled),\n &[type='reset']:not(:disabled),\n &[type='submit']:not(:disabled) {\n cursor: pointer;\n }\n \n &:focus:not(:focus-visible) {\n outline: 0;\n }\n \n --bs-btn-padding-x: 0.75rem;\n --bs-btn-padding-y: 0.375rem;\n --bs-btn-font-family: ;\n --bs-btn-font-size: 1rem;\n --bs-btn-font-weight: 400;\n --bs-btn-line-height: 1.5;\n --bs-btn-color: var(--bs-body-color);\n --bs-btn-bg: transparent;\n --bs-btn-border-width: var(--bs-border-width);\n --bs-btn-border-color: transparent;\n --bs-btn-border-radius: var(--bs-border-radius);\n --bs-btn-hover-border-color: transparent;\n --bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15),\n 0 1px 1px rgba(0, 0, 0, 0.075);\n --bs-btn-disabled-opacity: 0.65;\n --bs-btn-focus-box-shadow: 0 0 0 0.25rem\n rgba(var(--bs-btn-focus-shadow-rgb), 0.5);\n display: inline-block;\n padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x);\n font-family: var(--bs-btn-font-family);\n font-size: var(--bs-btn-font-size);\n font-weight: var(--bs-btn-font-weight);\n line-height: var(--bs-btn-line-height);\n color: var(--bs-btn-color);\n text-align: center;\n text-decoration: none;\n vertical-align: middle;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n border: var(--bs-btn-border-width) solid var(--bs-btn-border-color);\n border-radius: var(--bs-btn-border-radius);\n background-color: var(--bs-btn-bg);\n //transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out,\n // border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n \n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n \n &:hover {\n filter: brightness(1.15);\n }\n \n &:focus-visible {\n color: var(--bs-btn-hover-color);\n background-color: var(--bs-btn-hover-bg);\n border-color: var(--bs-btn-hover-border-color);\n outline: 0;\n box-shadow: var(--bs-btn-focus-box-shadow);\n }\n \n &:disabled,\n &.disabled,\n fieldset:disabled & {\n color: var(--bs-btn-disabled-color);\n pointer-events: none;\n background-color: var(--bs-btn-disabled-bg);\n border-color: var(--bs-btn-disabled-border-color);\n opacity: var(--bs-btn-disabled-opacity);\n }\n \n --bs-btn-color: ".concat((_f = (_b = props.$textColor) !== null && _b !== void 0 ? _b : (_e = (_c = props.theme.buttons) === null || _c === void 0 ? void 0 : _c[(_d = props.$variant) !== null && _d !== void 0 ? _d : 'primary']) === null || _e === void 0 ? void 0 : _e.textColor) !== null && _f !== void 0 ? _f : '#fff', ";\n --bs-btn-bg: ").concat((_l = (_g = props.$backgroundColor) !== null && _g !== void 0 ? _g : (_k = (_h = props.theme.buttons) === null || _h === void 0 ? void 0 : _h[(_j = props.$variant) !== null && _j !== void 0 ? _j : 'primary']) === null || _k === void 0 ? void 0 : _k.backgroundColor) !== null && _l !== void 0 ? _l : '#0d6efd', ";\n --bs-btn-border-color: var(--bs-btn-bg);\n --bs-btn-focus-shadow-rgb: 49, 132, 253;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #0a58ca;\n --bs-btn-active-border-color: #0a53be;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: ").concat((_q = (_m = props.$disabledTextColor) !== null && _m !== void 0 ? _m : (_p = (_o = props.theme.buttons) === null || _o === void 0 ? void 0 : _o.loading) === null || _p === void 0 ? void 0 : _p.textColor) !== null && _q !== void 0 ? _q : '#fff', ";\n --bs-btn-disabled-bg: ").concat((_u = (_r = props.$disabledBackgroundColor) !== null && _r !== void 0 ? _r : (_t = (_s = props.theme.buttons) === null || _s === void 0 ? void 0 : _s.loading) === null || _t === void 0 ? void 0 : _t.backgroundColor) !== null && _u !== void 0 ? _u : 'gray', ";\n --bs-btn-disabled-border-color: ").concat((_v = props.$disabledBackgroundColor) !== null && _v !== void 0 ? _v : '#0d6efd', ";\n \n --bs-btn-padding-y: 14px;\n --bs-btn-padding-x: 1rem;\n --bs-btn-font-size: 18px;\n --bs-btn-border-radius: 4px;\n ");
498
500
  });
499
- var templateObject_1$I;
501
+ var templateObject_1$K;
500
502
 
501
- var OverlayContainer = styled__default.default(PageContainer)(templateObject_1$H || (templateObject_1$H = __makeTemplateObject(["\n background: ", ";\n ", "\n z-index: 10000;\n"], ["\n background: ", ";\n ", "\n z-index: 10000;\n"])), function (props) {
503
+ var OverlayContainer = styled__default.default(PageContainer)(templateObject_1$J || (templateObject_1$J = __makeTemplateObject(["\n background: ", ";\n ", "\n z-index: 10000;\n"], ["\n background: ", ";\n ", "\n z-index: 10000;\n"])), function (props) {
502
504
  return props.theme.background ? "".concat(props.theme.background) : "white";
503
505
  }, function (props) {
504
506
  return props.theme.textColor ? "color: ".concat(props.theme.textColor, ";") : "";
505
507
  });
506
- var OverlayInner$2 = styled__default.default.div(templateObject_2$y || (templateObject_2$y = __makeTemplateObject(["\n text-align: ", ";\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n max-width: 100dvw;\n max-height: 100dvh;\n width: 100%;\n height: 100%;\n ", "\n"], ["\n text-align: ", ";\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n max-width: 100dvw;\n max-height: 100dvh;\n width: 100%;\n height: 100%;\n ", "\n"])), function (props) {
508
+ var OverlayInner$2 = styled__default.default.div(templateObject_2$A || (templateObject_2$A = __makeTemplateObject(["\n text-align: ", ";\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n max-width: 100dvw;\n max-height: 100dvh;\n width: 100%;\n height: 100%;\n ", "\n"], ["\n text-align: ", ";\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n max-width: 100dvw;\n max-height: 100dvh;\n width: 100%;\n height: 100%;\n ", "\n"])), function (props) {
507
509
  var _a;
508
510
  return (_a = props.theme.textAlign) !== null && _a !== void 0 ? _a : 'center';
509
511
  }, function (props) {
510
512
  return props.theme.padding ? "box-sizing: border-box; padding: ".concat(props.theme.padding, ";") : "";
511
513
  });
512
- var OverlayImageContainer = styled__default.default.div(templateObject_3$p || (templateObject_3$p = __makeTemplateObject(["\n position: relative;\n display: flex;\n flex-grow: 1;\n padding-bottom: 25px;\n max-width: 100dvw;\n max-height: 100dvh;\n overflow: hidden;\n\n & > img,\n & > svg {\n margin: 0 auto;\n width: max-content;\n max-width: 100%;\n max-height: 100%;\n aspect-ratio: initial;\n object-fit: contain;\n display: block;\n }\n"], ["\n position: relative;\n display: flex;\n flex-grow: 1;\n padding-bottom: 25px;\n max-width: 100dvw;\n max-height: 100dvh;\n overflow: hidden;\n\n & > img,\n & > svg {\n margin: 0 auto;\n width: max-content;\n max-width: 100%;\n max-height: 100%;\n aspect-ratio: initial;\n object-fit: contain;\n display: block;\n }\n"])));
513
- var OverlayImageRow = styled__default.default.div(templateObject_4$j || (templateObject_4$j = __makeTemplateObject(["\n display: flex;\n margin: auto;\n\n & > div {\n max-height: calc(100vh - 320px);\n\n & > img {\n width: 100%;\n max-height: 100%;\n height: auto;\n object-fit: contain;\n }\n }\n"], ["\n display: flex;\n margin: auto;\n\n & > div {\n max-height: calc(100vh - 320px);\n\n & > img {\n width: 100%;\n max-height: 100%;\n height: auto;\n object-fit: contain;\n }\n }\n"])));
514
- var GrayOverlayContainer = styled__default.default(OverlayContainer)(templateObject_5$b || (templateObject_5$b = __makeTemplateObject(["\n background: #f7f6fb;\n"], ["\n background: #f7f6fb;\n"])));
515
- var ButtonsColumn = styled__default.default.div(templateObject_6$8 || (templateObject_6$8 = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n gap: 15px 0;\n justify-content: center;\n margin-top: 24px;\n"], ["\n display: flex;\n flex-direction: column;\n gap: 15px 0;\n justify-content: center;\n margin-top: 24px;\n"])));
516
- var WideButton = styled__default.default(LoaderButton)(templateObject_7$5 || (templateObject_7$5 = __makeTemplateObject(["\n width: 100%;\n border-radius: 30px;\n"], ["\n width: 100%;\n border-radius: 30px;\n"])));
514
+ var OverlayImageContainer = styled__default.default.div(templateObject_3$r || (templateObject_3$r = __makeTemplateObject(["\n position: relative;\n display: flex;\n flex-grow: 1;\n padding-bottom: 25px;\n max-width: 100dvw;\n max-height: 100dvh;\n overflow: hidden;\n\n & > img,\n & > svg {\n margin: 0 auto;\n width: max-content;\n max-width: 100%;\n max-height: 100%;\n aspect-ratio: initial;\n object-fit: contain;\n display: block;\n }\n"], ["\n position: relative;\n display: flex;\n flex-grow: 1;\n padding-bottom: 25px;\n max-width: 100dvw;\n max-height: 100dvh;\n overflow: hidden;\n\n & > img,\n & > svg {\n margin: 0 auto;\n width: max-content;\n max-width: 100%;\n max-height: 100%;\n aspect-ratio: initial;\n object-fit: contain;\n display: block;\n }\n"])));
515
+ var OverlayImageRow = styled__default.default.div(templateObject_4$l || (templateObject_4$l = __makeTemplateObject(["\n display: flex;\n margin: auto;\n\n & > div {\n max-height: calc(100vh - 320px);\n\n & > img {\n width: 100%;\n max-height: 100%;\n height: auto;\n object-fit: contain;\n }\n }\n"], ["\n display: flex;\n margin: auto;\n\n & > div {\n max-height: calc(100vh - 320px);\n\n & > img {\n width: 100%;\n max-height: 100%;\n height: auto;\n object-fit: contain;\n }\n }\n"])));
516
+ var GrayOverlayContainer = styled__default.default(OverlayContainer)(templateObject_5$c || (templateObject_5$c = __makeTemplateObject(["\n background: #f7f6fb;\n"], ["\n background: #f7f6fb;\n"])));
517
+ var ButtonsColumn = styled__default.default.div(templateObject_6$9 || (templateObject_6$9 = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n gap: 15px 0;\n justify-content: center;\n margin-top: 24px;\n"], ["\n display: flex;\n flex-direction: column;\n gap: 15px 0;\n justify-content: center;\n margin-top: 24px;\n"])));
518
+ var WideButton = styled__default.default(LoaderButton)(templateObject_7$6 || (templateObject_7$6 = __makeTemplateObject(["\n width: 100%;\n border-radius: 30px;\n"], ["\n width: 100%;\n border-radius: 30px;\n"])));
517
519
  var WideBorderButton = styled__default.default(WideButton)(templateObject_8$3 || (templateObject_8$3 = __makeTemplateObject(["\n color: black;\n background: white;\n border: 1px solid var(--idm-color-secondary-500);\n box-sizing: border-box;\n"], ["\n color: black;\n background: white;\n border: 1px solid var(--idm-color-secondary-500);\n box-sizing: border-box;\n"])));
518
- var templateObject_1$H, templateObject_2$y, templateObject_3$p, templateObject_4$j, templateObject_5$b, templateObject_6$8, templateObject_7$5, templateObject_8$3;
520
+ var templateObject_1$J, templateObject_2$A, templateObject_3$r, templateObject_4$l, templateObject_5$c, templateObject_6$9, templateObject_7$6, templateObject_8$3;
519
521
 
520
522
  var GeolocationAccessDeniedOverlay = function GeolocationAccessDeniedOverlay(_a) {
521
523
  var accessBlockedImageUrl = _a.accessBlockedImageUrl;
@@ -762,13 +764,13 @@ var SessionValidationErrorOverlay = function SessionValidationErrorOverlay(_a) {
762
764
  }, retryText)))));
763
765
  };
764
766
 
765
- var wavesAnimation = styled.keyframes(templateObject_1$G || (templateObject_1$G = __makeTemplateObject(["\n 0% {\n opacity: 0;\n transform: scale3d(1, 1, 1);\n }\n 80% {\n opacity: 1;\n }\n 100% {\n transform: scale3d(2, 2, 1);\n opacity: 0;\n }\n"], ["\n 0% {\n opacity: 0;\n transform: scale3d(1, 1, 1);\n }\n 80% {\n opacity: 1;\n }\n 100% {\n transform: scale3d(2, 2, 1);\n opacity: 0;\n }\n"])));
766
- var progressBarAnimation = styled.keyframes(templateObject_2$x || (templateObject_2$x = __makeTemplateObject(["\n 0% {\n width: 0;\n }\n 100% {\n width: 100%;\n }\n"], ["\n 0% {\n width: 0;\n }\n 100% {\n width: 100%;\n }\n"])));
767
- var dualRingSpinnerAnimation = styled.keyframes(templateObject_3$o || (templateObject_3$o = __makeTemplateObject(["\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n"], ["\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n"])));
768
- var progressBorderAnimation = styled.keyframes(templateObject_4$i || (templateObject_4$i = __makeTemplateObject(["\n to {\n stroke-dashoffset: 0;\n }\n"], ["\n to {\n stroke-dashoffset: 0;\n }\n"])));
769
- var templateObject_1$G, templateObject_2$x, templateObject_3$o, templateObject_4$i;
767
+ var wavesAnimation = styled.keyframes(templateObject_1$I || (templateObject_1$I = __makeTemplateObject(["\n 0% {\n opacity: 0;\n transform: scale3d(1, 1, 1);\n }\n 80% {\n opacity: 1;\n }\n 100% {\n transform: scale3d(2, 2, 1);\n opacity: 0;\n }\n"], ["\n 0% {\n opacity: 0;\n transform: scale3d(1, 1, 1);\n }\n 80% {\n opacity: 1;\n }\n 100% {\n transform: scale3d(2, 2, 1);\n opacity: 0;\n }\n"])));
768
+ var progressBarAnimation = styled.keyframes(templateObject_2$z || (templateObject_2$z = __makeTemplateObject(["\n 0% {\n width: 0;\n }\n 100% {\n width: 100%;\n }\n"], ["\n 0% {\n width: 0;\n }\n 100% {\n width: 100%;\n }\n"])));
769
+ var dualRingSpinnerAnimation = styled.keyframes(templateObject_3$q || (templateObject_3$q = __makeTemplateObject(["\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n"], ["\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n"])));
770
+ var progressBorderAnimation = styled.keyframes(templateObject_4$k || (templateObject_4$k = __makeTemplateObject(["\n to {\n stroke-dashoffset: 0;\n }\n"], ["\n to {\n stroke-dashoffset: 0;\n }\n"])));
771
+ var templateObject_1$I, templateObject_2$z, templateObject_3$q, templateObject_4$k;
770
772
 
771
- var Spinner = styled__default.default.div(templateObject_1$F || (templateObject_1$F = __makeTemplateObject(["\n display: inline-block;\n width: ", "px;\n height: ", "px;\n margin: auto;\n\n &:after {\n content: ' ';\n display: block;\n width: ", "px;\n height: ", "px;\n margin: 8px;\n border-radius: 50%;\n border: ", "px solid\n ", ";\n border-color: ", " transparent\n ", " transparent;\n animation: ", " 1.2s linear infinite;\n box-sizing: content-box;\n }\n"], ["\n display: inline-block;\n width: ", "px;\n height: ", "px;\n margin: auto;\n\n &:after {\n content: ' ';\n display: block;\n width: ", "px;\n height: ", "px;\n margin: 8px;\n border-radius: 50%;\n border: ", "px solid\n ", ";\n border-color: ", " transparent\n ", " transparent;\n animation: ", " 1.2s linear infinite;\n box-sizing: content-box;\n }\n"])), function (_a) {
773
+ var Spinner = styled__default.default.div(templateObject_1$H || (templateObject_1$H = __makeTemplateObject(["\n display: inline-block;\n width: ", "px;\n height: ", "px;\n margin: auto;\n\n &:after {\n content: ' ';\n display: block;\n width: ", "px;\n height: ", "px;\n margin: 8px;\n border-radius: 50%;\n border: ", "px solid\n ", ";\n border-color: ", " transparent\n ", " transparent;\n animation: ", " 1.2s linear infinite;\n box-sizing: content-box;\n }\n"], ["\n display: inline-block;\n width: ", "px;\n height: ", "px;\n margin: auto;\n\n &:after {\n content: ' ';\n display: block;\n width: ", "px;\n height: ", "px;\n margin: 8px;\n border-radius: 50%;\n border: ", "px solid\n ", ";\n border-color: ", " transparent\n ", " transparent;\n animation: ", " 1.2s linear infinite;\n box-sizing: content-box;\n }\n"])), function (_a) {
772
774
  var $size = _a.$size;
773
775
  return $size !== null && $size !== void 0 ? $size : 80;
774
776
  }, function (_a) {
@@ -793,7 +795,7 @@ var Spinner = styled__default.default.div(templateObject_1$F || (templateObject_
793
795
  var $color = _a.$color;
794
796
  return $color !== null && $color !== void 0 ? $color : '#888';
795
797
  }, dualRingSpinnerAnimation);
796
- var templateObject_1$F;
798
+ var templateObject_1$H;
797
799
 
798
800
  exports.defaultAuthUrl = 'https://portal-api.idmission.com';
799
801
  var allowedAuthUrls = ['https://portal-api.idmission.com', 'https://portal-api-uat.idmission.com', 'https://portal-api-demo.idmission.com', 'https://portal-api-dev.idmission.com', 'http://localhost:10000'];
@@ -801,11 +803,11 @@ function setDefaultAuthUrl(url) {
801
803
  if (!allowedAuthUrls.includes(url)) throw new Error('invalid auth url');
802
804
  exports.defaultAuthUrl = url;
803
805
  }
804
- var initialState$5 = {
806
+ var initialState$6 = {
805
807
  authUrl: exports.defaultAuthUrl,
806
808
  sessionCheckState: 'READY'
807
809
  };
808
- var AuthStateContext = /*#__PURE__*/React.createContext(initialState$5);
810
+ var AuthStateContext = /*#__PURE__*/React.createContext(initialState$6);
809
811
  var AuthDispatchContext = /*#__PURE__*/React.createContext(function () {});
810
812
  var reducer$4 = function reducer(state, action) {
811
813
  switch (action.type) {
@@ -837,7 +839,7 @@ function useAuthReducer(authUrl, sessionId) {
837
839
  if (authUrl === void 0) {
838
840
  authUrl = exports.defaultAuthUrl;
839
841
  }
840
- var _a = React.useReducer(reducer$4, _assign(_assign({}, initialState$5), {
842
+ var _a = React.useReducer(reducer$4, _assign(_assign({}, initialState$6), {
841
843
  authUrl: authUrl
842
844
  })),
843
845
  state = _a[0],
@@ -1917,608 +1919,6 @@ function calculateMd5(blob) {
1917
1919
  });
1918
1920
  }
1919
1921
 
1920
- function getFrameDimensions(frame) {
1921
- var frameWidth = frame.width,
1922
- frameHeight = frame.height;
1923
- if (frame instanceof HTMLImageElement) {
1924
- frameWidth = frame.naturalWidth;
1925
- frameHeight = frame.naturalHeight;
1926
- }
1927
- if (frame instanceof HTMLVideoElement) {
1928
- frameWidth = frame.videoWidth;
1929
- frameHeight = frame.videoHeight;
1930
- }
1931
- return [frameWidth, frameHeight];
1932
- }
1933
-
1934
- var InvisibleCanvas = styled__default.default.canvas(templateObject_1$E || (templateObject_1$E = __makeTemplateObject(["\n display: none;\n"], ["\n display: none;\n"])));
1935
- function drawToCanvas(canvas, frame, width, height) {
1936
- if (!canvas) return;
1937
- var ctx = canvas.getContext('2d');
1938
- if (!ctx) return;
1939
- if (!width || !height) {
1940
- var _a = getFrameDimensions(frame),
1941
- frameWidth = _a[0],
1942
- frameHeight = _a[1];
1943
- width || (width = frameWidth);
1944
- height || (height = frameHeight);
1945
- }
1946
- canvas.width = width;
1947
- canvas.height = height;
1948
- ctx.drawImage(frame, 0, 0, width, height);
1949
- }
1950
- function clearCanvas(canvas) {
1951
- var _a;
1952
- (_a = canvas === null || canvas === void 0 ? void 0 : canvas.getContext('2d')) === null || _a === void 0 ? void 0 : _a.clearRect(0, 0, canvas === null || canvas === void 0 ? void 0 : canvas.width, canvas === null || canvas === void 0 ? void 0 : canvas.height);
1953
- }
1954
- var templateObject_1$E;
1955
-
1956
- function listAvailableCameras(facingMode_1) {
1957
- return __awaiter(this, arguments, void 0, function (facingMode, requestMicAccess) {
1958
- var cameraEnumerationStream, videoDevices;
1959
- if (requestMicAccess === void 0) {
1960
- requestMicAccess = false;
1961
- }
1962
- return __generator(this, function (_a) {
1963
- switch (_a.label) {
1964
- case 0:
1965
- return [4 /*yield*/, navigator.mediaDevices.getUserMedia({
1966
- video: {
1967
- facingMode: {
1968
- exact: facingMode
1969
- }
1970
- },
1971
- audio: requestMicAccess
1972
- })
1973
- // This lists all available cameras attached to the user's device.
1974
- ];
1975
- case 1:
1976
- cameraEnumerationStream = _a.sent();
1977
- return [4 /*yield*/, navigator.mediaDevices.enumerateDevices()];
1978
- case 2:
1979
- videoDevices = _a.sent().filter(function (_a) {
1980
- var kind = _a.kind;
1981
- return kind === 'videoinput';
1982
- });
1983
- // Release the access to the user's camera that we obtained for enumeration purposes.
1984
- cameraEnumerationStream.getVideoTracks().forEach(function (track) {
1985
- track.enabled = false;
1986
- track.stop();
1987
- });
1988
- cameraEnumerationStream = null;
1989
- return [2 /*return*/, videoDevices];
1990
- }
1991
- });
1992
- });
1993
- }
1994
- var frontLabels = ['front', 'avant', 'anteriore', 'cameraaanvoorzijde', 'kamerapåframsidan', 'forsidekamera', 'kamerapåforsiden', 'aparatprzedni', 'etukamera', 'kameradepan', 'ÖnKamera', 'cameramặttrước', 'camerăfață', 'prednákamera', 'prednjakamera', 'előlapikamera', 'přednífotoaparát', 'μπροστινήκάμερα', 'переднякамера', 'передняякамера', 'преднакамера', 'алдыңғыкамера', 'מצלמה קדמית', 'الكاميرا الأمامية', 'फ़्रंटकैमरा', '前置相机', '前置鏡頭', '前面カメラ', '전면카메라', 'กล้องด้านหน้า'].map(function (s) {
1995
- return s.toLocaleLowerCase().split(' ').join('');
1996
- });
1997
- var rearLabels = ['back', 'rear', 'posterior', 'trasera', 'traseira', 'arrière', 'rückkamera', 'fotocamera(posteriore)', 'cameraaanachterzijde', 'kamerapåbaksidan', 'kamerapåbaksiden', 'bagsidekamera', 'aparattylny', 'takakamera', 'arkakamera', 'kamerabelakang', 'cameramặtsau', 'camerăspate', 'stražnjakamera', 'zadnákamera', 'hátoldalikamera', 'zadnífotoaparát', 'πίσωκάμερα', 'заднякамера', 'Задняякамера', 'заднакамера', 'артқыкамера', 'מצלמה אחורית', 'الكاميرا الخلفية', 'बैककैमरा', '后置相机', '後置鏡頭', '背面カメラ', '후면카메라', 'กล้องด้านหลัง'].map(function (s) {
1998
- return s.toLocaleLowerCase().split(' ').join('');
1999
- });
2000
- var backUltraWideLabels = ['backdualwidecamera', 'backultrawidecamera', 'ultraampliaposterior', 'ultra-angulartraseira', 'ultragrandeangulartraseira', 'ultragrandangle', 'ultragranangular', 'ultra-weitwinkelkamera', 'ultra-grandangolo', 'ultrabredecameraaanachterzijde', 'ultravidvinkelkamerapåbaksidan', 'ultravidvinkelkameraetpåbagsiden', 'ultravidvinkelkamerabak', 'ultragenişkameraarkayüzü', 'ultralaajakulmainentakakamera', 'tylnyaparatultraszerokokątny', 'cameracựcrộngmặtsau', 'camerăcuobiectivultra‑superangularspate', 'ultraszéleslátószögűkamera', 'kameraultralebarbelakang', 'stražnjaultraširokakamera', 'zadníultraširokoúhlýfotoaparát', 'ultraširokouhlá', 'πίσωυπερευρείακάμερα', 'заднянадширококутнакамера', 'Задняясверхширокоугольнаякамера', 'Задна свръх широкоъгълна камера', 'артқыультракеңбұрыштыкамера', 'מצלמה אולטרה רחבה אחורית', 'كاميرا خلفية عريضة جدًا', 'बैकअल्ट्रावाइडकैमरा', '后置超广角相机', '後置超廣角鏡頭相機', '背面超広角カメラ', '후면울트라와이드카메라', 'กล้องด้านหลังอัลตร้าไวด์'].map(function (s) {
2001
- return s.toLocaleLowerCase().split(' ').join('');
2002
- });
2003
- var labelMatches = function labelMatches(labelOrDevice, labelSetOrLabel) {
2004
- var label = labelOrDevice instanceof MediaDeviceInfo ? getDeviceLabel(labelOrDevice) : labelOrDevice;
2005
- var labelSet = typeof labelSetOrLabel === 'string' ? [labelSetOrLabel] : labelSetOrLabel;
2006
- return labelSet.some(function (l) {
2007
- return label.includes(l);
2008
- });
2009
- };
2010
- var getDeviceLabel = function getDeviceLabel(deviceInfo) {
2011
- return deviceInfo.label.toLocaleLowerCase().split(' ').join('');
2012
- };
2013
- var currentCamera;
2014
- var currentAudioStream;
2015
- function obtainCameraAccess(stream, deviceLabel, video) {
2016
- releaseCameraAccess();
2017
- log('obtaining camera access...');
2018
- var _a = stream.getVideoTracks()[0].getSettings(),
2019
- width = _a.width,
2020
- height = _a.height;
2021
- var label = deviceLabel.toLocaleLowerCase().split(' ').join('');
2022
- var isRearFacing = labelMatches(label, __spreadArray(__spreadArray(__spreadArray([], rearLabels, true), backUltraWideLabels, true), ['iphone'], false));
2023
- var release = function release() {
2024
- stream.getTracks().forEach(function (track) {
2025
- track.enabled = false;
2026
- track.stop();
2027
- });
2028
- if (video) {
2029
- video.pause();
2030
- video.srcObject = null;
2031
- video.src = '';
2032
- }
2033
- };
2034
- width || (width = 0);
2035
- height || (height = 0);
2036
- currentCamera = {
2037
- label: deviceLabel,
2038
- stream: stream,
2039
- width: width,
2040
- height: height,
2041
- isRearFacing: isRearFacing,
2042
- release: release
2043
- };
2044
- if (video) video.srcObject = stream;
2045
- return currentCamera;
2046
- }
2047
- function releaseCameraAccess() {
2048
- if (!currentCamera) return;
2049
- log('releasing camera access...');
2050
- currentCamera.release();
2051
- currentCamera = undefined;
2052
- }
2053
- function releaseMicrophoneAccess() {
2054
- var _a;
2055
- if (!currentAudioStream) return;
2056
- log('releasing microphone access...');
2057
- (_a = currentAudioStream.stop) === null || _a === void 0 ? void 0 : _a.call(currentAudioStream);
2058
- currentAudioStream.getAudioTracks().forEach(function (t) {
2059
- var _a;
2060
- (_a = t.stop) === null || _a === void 0 ? void 0 : _a.call(t);
2061
- });
2062
- currentAudioStream = undefined;
2063
- }
2064
- function usePreferredCaptureDevice(_a) {
2065
- var _b = _a === void 0 ? {} : _a,
2066
- _c = _b.requestAccessAutomatically,
2067
- requestAccessAutomatically = _c === void 0 ? true : _c,
2068
- _d = _b.preferFrontFacingCamera,
2069
- preferFrontFacingCamera = _d === void 0 ? false : _d,
2070
- _e = _b.preferContinuityCamera,
2071
- preferContinuityCamera = _e === void 0 ? true : _e,
2072
- _f = _b.requireMicrophoneAccess,
2073
- requireMicrophoneAccess = _f === void 0 ? false : _f,
2074
- _g = _b.maxVideoWidth,
2075
- maxVideoWidth = _g === void 0 ? 1920 : _g,
2076
- maxFps = _b.maxFps,
2077
- _h = _b.debugMode,
2078
- debugMode = _h === void 0 ? false : _h;
2079
- var videoRef = React.useRef(null);
2080
- var videoRefStack = React.useRef([]);
2081
- var cameraRef = React.useRef(null);
2082
- var _j = React.useState(false),
2083
- cameraReady = _j[0],
2084
- setCameraReady = _j[1];
2085
- var _k = React.useState(false),
2086
- microphoneReady = _k[0],
2087
- setMicrophoneReady = _k[1];
2088
- var _l = React.useState(null),
2089
- videoDevice = _l[0],
2090
- setVideoDevice = _l[1];
2091
- var _m = React.useState(null),
2092
- audioStream = _m[0],
2093
- setAudioStream = _m[1];
2094
- var _o = React.useState(false),
2095
- videoLoaded = _o[0],
2096
- setVideoLoaded = _o[1];
2097
- var _p = React.useState(false),
2098
- iphoneContinuityCameraAvailable = _p[0],
2099
- setIphoneContinuityCameraAvailable = _p[1];
2100
- var _q = React.useState(preferContinuityCamera),
2101
- iphoneContinuityCameraAllowed = _q[0],
2102
- setIphoneContinuityCameraAllowed = _q[1];
2103
- var _r = React.useState(false),
2104
- iphoneContinuityCameraDenied = _r[0],
2105
- setIphoneContinuityCameraDenied = _r[1];
2106
- var _s = React.useState(false),
2107
- cameraAccessDenied = _s[0],
2108
- setCameraAccessDenied = _s[1];
2109
- var _t = React.useState(false),
2110
- microphoneAccessDenied = _t[0],
2111
- setMicrophoneAccessDenied = _t[1];
2112
- var videoRefElement = videoRef.current;
2113
- React.useEffect(function pushVideoRefToStackWhenChanged() {
2114
- // proceed if the video element being mounted is not already at the top of the videoRefStack.
2115
- var topOfStack = videoRefStack.current.slice(-1)[0];
2116
- if (videoRefElement && videoRefElement !== topOfStack) {
2117
- log('adding video to stack', videoRefElement);
2118
- videoRefStack.current.push(videoRefElement);
2119
- }
2120
- }, [videoRefElement]);
2121
- var onVideoUnmounted = React.useCallback(function (videoElement) {
2122
- log('removing video from stack', videoElement);
2123
- videoRefStack.current = videoRefStack.current.filter(function (v) {
2124
- return v !== videoElement;
2125
- });
2126
- videoRef.current = videoRefStack.current.slice(-1)[0]; // top of stack.
2127
- log('new videoRef is', videoRef.current);
2128
- }, []);
2129
- React.useEffect(function resetCameraOnContinuityPreferenceChanged() {
2130
- if (debugMode) {
2131
- log('iphone continuity camera allowed changed', iphoneContinuityCameraAllowed);
2132
- }
2133
- releaseCameraAccess();
2134
- cameraRef.current = null;
2135
- setVideoLoaded(false);
2136
- }, [debugMode, iphoneContinuityCameraAllowed]);
2137
- // NOTE: the bound callback function here is called requestCameraAccess, because
2138
- // it initiates the useEffect chain that results in camera access being requested
2139
- // (requestCameraAccessAutomatically -> chooseFromAvailableCameras -> accessChosenCamera).
2140
- //
2141
- // We chose to title the inner function "chooseFromAvailableCameras" because
2142
- // that's all it literally does -- the available cameras are enumerated, and then
2143
- // the result is parsed to decide which one we like best, which is then passed to
2144
- // setVideoDevice, which causes accessChosenCamera to trigger.
2145
- //
2146
- // I am not a huge fan of getUserMedia's design -- you need to call it twice in order
2147
- // to select the "best" camera for your application's purposes.
2148
- var requestCameraAccess = React.useCallback(function chooseFromAvailableCameras() {
2149
- return __awaiter(this, void 0, void 0, function () {
2150
- var availableCameras, selectedCamera, platform_1, iphoneContinuityCamera, e_1;
2151
- var _a, _b;
2152
- return __generator(this, function (_c) {
2153
- switch (_c.label) {
2154
- case 0:
2155
- setCameraReady(false);
2156
- setCameraAccessDenied(false);
2157
- _c.label = 1;
2158
- case 1:
2159
- _c.trys.push([1, 3,, 4]);
2160
- return [4 /*yield*/, listAvailableCameras()];
2161
- case 2:
2162
- availableCameras = _c.sent();
2163
- selectedCamera = void 0;
2164
- if (debugMode) {
2165
- log('availableCameras', availableCameras);
2166
- }
2167
- platform_1 = getPlatform();
2168
- if (debugMode) {
2169
- log('platformDetails', platform_1);
2170
- }
2171
- if (!iphoneContinuityCameraDenied && (!(platform_1 === null || platform_1 === void 0 ? void 0 : platform_1.os) || platform_1.os.family === 'OS X')) {
2172
- iphoneContinuityCamera = availableCameras.find(function (deviceInfo) {
2173
- return labelMatches(deviceInfo, 'iphone');
2174
- });
2175
- setIphoneContinuityCameraAvailable(!!iphoneContinuityCamera);
2176
- if (iphoneContinuityCamera && iphoneContinuityCameraAllowed) {
2177
- selectedCamera = iphoneContinuityCamera;
2178
- }
2179
- } else if (((_a = platform_1 === null || platform_1 === void 0 ? void 0 : platform_1.os) === null || _a === void 0 ? void 0 : _a.family) === 'Android' || availableCameras.every(function (c) {
2180
- return c.label.startsWith('camera2 ');
2181
- })) {
2182
- availableCameras = availableCameras.sort(function (a, b) {
2183
- return a.label.toLowerCase().localeCompare(b.label.toLowerCase());
2184
- });
2185
- if (debugMode) {
2186
- log('cameras have been sorted', availableCameras);
2187
- }
2188
- }
2189
- if (preferFrontFacingCamera) {
2190
- selectedCamera = availableCameras.find(function (deviceInfo) {
2191
- return labelMatches(deviceInfo, frontLabels);
2192
- });
2193
- }
2194
- selectedCamera || (selectedCamera = availableCameras.find(function (deviceInfo) {
2195
- return labelMatches(deviceInfo, 'backtriplecamera');
2196
- }));
2197
- selectedCamera || (selectedCamera = availableCameras.find(function (deviceInfo) {
2198
- return labelMatches(deviceInfo, 'backdualcamera');
2199
- }));
2200
- selectedCamera || (selectedCamera = availableCameras.find(function (deviceInfo) {
2201
- return labelMatches(deviceInfo, rearLabels) && !labelMatches(deviceInfo, backUltraWideLabels);
2202
- }));
2203
- selectedCamera || (selectedCamera = availableCameras.find(function (deviceInfo) {
2204
- return labelMatches(deviceInfo, rearLabels);
2205
- }));
2206
- // on iOS, the front facing camera always is at the first position in the list, so we skip it if all else fails.
2207
- if (!preferFrontFacingCamera && ((_b = platform_1 === null || platform_1 === void 0 ? void 0 : platform_1.os) === null || _b === void 0 ? void 0 : _b.family) === 'iOS' && availableCameras.length > 0) {
2208
- selectedCamera || (selectedCamera = availableCameras[1]);
2209
- }
2210
- selectedCamera || (selectedCamera = availableCameras[0]);
2211
- if (debugMode) log('selectedCamera', selectedCamera);
2212
- setVideoDevice(selectedCamera);
2213
- return [3 /*break*/, 4];
2214
- case 3:
2215
- e_1 = _c.sent();
2216
- if (e_1.name === 'NotAllowedError') {
2217
- error('camera access has been blocked by the user', e_1);
2218
- setCameraAccessDenied(true);
2219
- } else {
2220
- error('camera access encountered some other error', e_1);
2221
- throw e_1;
2222
- }
2223
- return [3 /*break*/, 4];
2224
- case 4:
2225
- return [2 /*return*/];
2226
- }
2227
- });
2228
- });
2229
- }, [debugMode, iphoneContinuityCameraAllowed, iphoneContinuityCameraDenied, preferFrontFacingCamera]);
2230
- React.useEffect(function requestCameraAccessAutomatically() {
2231
- if (requestAccessAutomatically && !cameraAccessDenied) {
2232
- requestCameraAccess()["catch"](error);
2233
- }
2234
- }, [cameraAccessDenied, requestAccessAutomatically, requestCameraAccess]);
2235
- React.useEffect(function accessChosenCamera() {
2236
- var _this = this;
2237
- var _a;
2238
- if (!videoDevice) return;
2239
- var cleanup = function cleanup() {
2240
- releaseCameraAccess();
2241
- cameraRef.current = null;
2242
- setVideoLoaded(false);
2243
- };
2244
- if (!((_a = navigator.mediaDevices) === null || _a === void 0 ? void 0 : _a.getUserMedia)) return cleanup;
2245
- (function () {
2246
- return __awaiter(_this, void 0, void 0, function () {
2247
- var constraints, stream, e_2, handleStreamEnded;
2248
- var _a;
2249
- return __generator(this, function (_b) {
2250
- switch (_b.label) {
2251
- case 0:
2252
- constraints = {
2253
- audio: false,
2254
- video: {
2255
- deviceId: {
2256
- exact: videoDevice.deviceId
2257
- },
2258
- width: {
2259
- ideal: maxVideoWidth
2260
- },
2261
- aspectRatio: 1.777777778,
2262
- frameRate: {}
2263
- }
2264
- };
2265
- if (maxFps) {
2266
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
2267
- // @ts-ignore
2268
- constraints.video.frameRate = {
2269
- max: maxFps
2270
- };
2271
- }
2272
- stream = null;
2273
- _b.label = 1;
2274
- case 1:
2275
- _b.trys.push([1, 3,, 4]);
2276
- return [4 /*yield*/, navigator.mediaDevices.getUserMedia(constraints)];
2277
- case 2:
2278
- stream = _b.sent();
2279
- return [3 /*break*/, 4];
2280
- case 3:
2281
- e_2 = _b.sent();
2282
- if (e_2.name === 'NotAllowedError') {
2283
- if (iphoneContinuityCameraAllowed) {
2284
- setIphoneContinuityCameraAvailable(false);
2285
- setIphoneContinuityCameraDenied(true);
2286
- } else {
2287
- setCameraAccessDenied(true);
2288
- }
2289
- return [2 /*return*/];
2290
- }
2291
- return [3 /*break*/, 4];
2292
- case 4:
2293
- if (!!stream) return [3 /*break*/, 8];
2294
- _b.label = 5;
2295
- case 5:
2296
- _b.trys.push([5, 7,, 8]);
2297
- return [4 /*yield*/, navigator.mediaDevices.getUserMedia({
2298
- audio: false,
2299
- video: true
2300
- })];
2301
- case 6:
2302
- stream = _b.sent();
2303
- log('opened stream with no width and height constraints');
2304
- return [3 /*break*/, 8];
2305
- case 7:
2306
- _b.sent();
2307
- log('cannot open stream at all');
2308
- return [3 /*break*/, 8];
2309
- case 8:
2310
- if (!stream) {
2311
- throw new Error('failed to open camera');
2312
- }
2313
- handleStreamEnded = function handleStreamEnded() {
2314
- if (iphoneContinuityCameraAvailable && iphoneContinuityCameraAllowed) {
2315
- log('someone unplugged the continuity camera');
2316
- releaseCameraAccess();
2317
- cameraRef.current = null;
2318
- setIphoneContinuityCameraAvailable(false);
2319
- setIphoneContinuityCameraDenied(true);
2320
- setVideoDevice(null);
2321
- } else {
2322
- log('someone unplugged the webcam');
2323
- releaseCameraAccess();
2324
- cameraRef.current = null;
2325
- setVideoLoaded(false);
2326
- setCameraAccessDenied(true);
2327
- }
2328
- };
2329
- (_a = videoRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener('ended', handleStreamEnded);
2330
- stream.getVideoTracks().forEach(function (track) {
2331
- track.onended = handleStreamEnded;
2332
- });
2333
- cameraRef.current = obtainCameraAccess(stream, videoDevice.label, videoRef.current);
2334
- return [2 /*return*/];
2335
- }
2336
- });
2337
- });
2338
- })();
2339
- return cleanup;
2340
- }, [iphoneContinuityCameraAllowed, iphoneContinuityCameraAvailable, maxFps, maxVideoWidth, videoDevice]);
2341
- React.useEffect(function triggerCameraReady() {
2342
- // TODO: in the future let's evaluate whether we can simplify this to just
2343
- // setCameraReady(!!videoDevice && videoLoaded) -- we are wondering whether
2344
- // we somehow depend on this being set twice.
2345
- setCameraReady(false);
2346
- if (videoDevice && videoLoaded) {
2347
- setCameraReady(videoDevice && videoLoaded);
2348
- }
2349
- }, [videoLoaded, videoDevice]);
2350
- var requestMicrophoneAccess = React.useCallback(function _requestMicrophoneAccess() {
2351
- return __awaiter(this, void 0, void 0, function () {
2352
- var stream;
2353
- return __generator(this, function (_a) {
2354
- switch (_a.label) {
2355
- case 0:
2356
- setMicrophoneReady(false);
2357
- setMicrophoneAccessDenied(false);
2358
- _a.label = 1;
2359
- case 1:
2360
- _a.trys.push([1, 3,, 4]);
2361
- return [4 /*yield*/, navigator.mediaDevices.getUserMedia({
2362
- audio: true,
2363
- video: false
2364
- })];
2365
- case 2:
2366
- stream = _a.sent();
2367
- currentAudioStream = stream;
2368
- setAudioStream(stream);
2369
- setMicrophoneReady(true);
2370
- stream.getAudioTracks().forEach(function (track) {
2371
- track.onended = function () {
2372
- setMicrophoneAccessDenied(true);
2373
- };
2374
- });
2375
- return [3 /*break*/, 4];
2376
- case 3:
2377
- _a.sent();
2378
- setMicrophoneAccessDenied(true);
2379
- return [3 /*break*/, 4];
2380
- case 4:
2381
- return [2 /*return*/];
2382
- }
2383
- });
2384
- });
2385
- }, []);
2386
- React.useEffect(function requestMicrophoneAccessIfNeeded() {
2387
- if (!requireMicrophoneAccess || microphoneAccessDenied) return;
2388
- requestMicrophoneAccess()["catch"](error);
2389
- return function () {
2390
- releaseMicrophoneAccess();
2391
- setAudioStream(null);
2392
- setMicrophoneReady(false);
2393
- };
2394
- }, [microphoneAccessDenied, requestMicrophoneAccess, requireMicrophoneAccess]);
2395
- var takePhoto = React.useCallback(function _takePhoto() {
2396
- return __awaiter(this, void 0, void 0, function () {
2397
- var canvas;
2398
- return __generator(this, function (_a) {
2399
- switch (_a.label) {
2400
- case 0:
2401
- if (!cameraRef.current) return [2 /*return*/, null];
2402
- if (!(typeof ImageCapture !== 'undefined')) return [3 /*break*/, 2];
2403
- return [4 /*yield*/, new ImageCapture(cameraRef.current.stream.getTracks()[0]).takePhoto()];
2404
- case 1:
2405
- return [2 /*return*/, _a.sent()];
2406
- case 2:
2407
- if (!videoRef.current) return [2 /*return*/, null];
2408
- canvas = document.createElement('canvas');
2409
- drawToCanvas(canvas, videoRef.current);
2410
- return [2 /*return*/, new Promise(function (resolve) {
2411
- return canvas.toBlob(resolve);
2412
- })];
2413
- }
2414
- });
2415
- });
2416
- }, []);
2417
- return React.useMemo(function () {
2418
- return {
2419
- videoRef: videoRef,
2420
- videoDevice: videoDevice,
2421
- videoLoaded: videoLoaded,
2422
- setVideoLoaded: setVideoLoaded,
2423
- onVideoUnmounted: onVideoUnmounted,
2424
- cameraRef: cameraRef,
2425
- cameraReady: cameraReady,
2426
- cameraAccessDenied: cameraAccessDenied,
2427
- requestCameraAccess: requestCameraAccess,
2428
- releaseCameraAccess: releaseCameraAccess,
2429
- iphoneContinuityCameraAvailable: iphoneContinuityCameraAvailable,
2430
- iphoneContinuityCameraAllowed: iphoneContinuityCameraAllowed,
2431
- setIphoneContinuityCameraAllowed: setIphoneContinuityCameraAllowed,
2432
- takePhoto: takePhoto,
2433
- audioStream: audioStream,
2434
- microphoneReady: microphoneReady,
2435
- microphoneAccessDenied: microphoneAccessDenied,
2436
- requestMicrophoneAccess: requestMicrophoneAccess
2437
- };
2438
- }, [audioStream, cameraAccessDenied, cameraReady, iphoneContinuityCameraAllowed, iphoneContinuityCameraAvailable, microphoneAccessDenied, microphoneReady, onVideoUnmounted, requestCameraAccess, requestMicrophoneAccess, takePhoto, videoDevice, videoLoaded]);
2439
- }
2440
-
2441
- var CameraStateContext = /*#__PURE__*/React.createContext({
2442
- videoRef: {
2443
- current: null
2444
- },
2445
- videoDevice: null,
2446
- videoLoaded: false,
2447
- cameraRef: {
2448
- current: null
2449
- },
2450
- cameraReady: false,
2451
- cameraAccessDenied: false,
2452
- requestCameraAccess: function requestCameraAccess() {
2453
- return null;
2454
- },
2455
- releaseCameraAccess: function releaseCameraAccess() {
2456
- return null;
2457
- },
2458
- iphoneContinuityCameraAvailable: false,
2459
- iphoneContinuityCameraAllowed: true,
2460
- setIphoneContinuityCameraAllowed: function setIphoneContinuityCameraAllowed() {
2461
- return null;
2462
- },
2463
- takePhoto: function takePhoto() {
2464
- return Promise.resolve(null);
2465
- },
2466
- setVideoLoaded: function setVideoLoaded() {
2467
- return null;
2468
- },
2469
- onVideoUnmounted: function onVideoUnmounted() {
2470
- return null;
2471
- },
2472
- audioStream: null,
2473
- microphoneReady: false,
2474
- microphoneAccessDenied: false,
2475
- requestMicrophoneAccess: function requestMicrophoneAccess() {
2476
- return null;
2477
- }
2478
- });
2479
- var CameraProvider = function CameraProvider(_a) {
2480
- var children = _a.children,
2481
- _b = _a.requestAccessAutomatically,
2482
- requestAccessAutomatically = _b === void 0 ? true : _b,
2483
- _c = _a.preferFrontFacingCamera,
2484
- preferFrontFacingCamera = _c === void 0 ? false : _c,
2485
- _d = _a.preferContinuityCamera,
2486
- preferContinuityCamera = _d === void 0 ? true : _d,
2487
- _e = _a.requireMicrophoneAccess,
2488
- requireMicrophoneAccess = _e === void 0 ? false : _e,
2489
- _f = _a.maxVideoWidth,
2490
- maxVideoWidth = _f === void 0 ? 1920 : _f,
2491
- maxFps = _a.maxFps,
2492
- onCameraAccessDenied = _a.onCameraAccessDenied,
2493
- onMicrophoneAccessDenied = _a.onMicrophoneAccessDenied,
2494
- _g = _a.debugMode,
2495
- debugMode = _g === void 0 ? false : _g;
2496
- var captureDevice = usePreferredCaptureDevice({
2497
- requestAccessAutomatically: requestAccessAutomatically,
2498
- preferFrontFacingCamera: preferFrontFacingCamera,
2499
- preferContinuityCamera: preferContinuityCamera,
2500
- requireMicrophoneAccess: requireMicrophoneAccess,
2501
- maxVideoWidth: maxVideoWidth,
2502
- maxFps: maxFps,
2503
- debugMode: debugMode
2504
- });
2505
- React.useEffect(function () {
2506
- if (captureDevice.cameraAccessDenied) onCameraAccessDenied === null || onCameraAccessDenied === void 0 ? void 0 : onCameraAccessDenied();
2507
- }, [captureDevice.cameraAccessDenied, onCameraAccessDenied]);
2508
- React.useEffect(function () {
2509
- if (captureDevice.microphoneAccessDenied) onMicrophoneAccessDenied === null || onMicrophoneAccessDenied === void 0 ? void 0 : onMicrophoneAccessDenied();
2510
- }, [captureDevice.microphoneAccessDenied, onMicrophoneAccessDenied]);
2511
- var releaseCameraAccess = captureDevice.releaseCameraAccess;
2512
- React.useEffect(function () {
2513
- return function () {
2514
- releaseCameraAccess();
2515
- };
2516
- }, [releaseCameraAccess]);
2517
- return /*#__PURE__*/React__namespace.default.createElement(CameraStateContext.Provider, {
2518
- value: captureDevice
2519
- }, children);
2520
- };
2521
-
2522
1922
  var visionTasksBasePath = "https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@0.10.7/wasm";
2523
1923
  var visionRuntimePreloading = false;
2524
1924
  function preloadVisionRuntime() {
@@ -2561,6 +1961,42 @@ function preloadVisionRuntime() {
2561
1961
  });
2562
1962
  }
2563
1963
 
1964
+ function getFrameDimensions(frame) {
1965
+ var frameWidth = frame.width,
1966
+ frameHeight = frame.height;
1967
+ if (frame instanceof HTMLImageElement) {
1968
+ frameWidth = frame.naturalWidth;
1969
+ frameHeight = frame.naturalHeight;
1970
+ }
1971
+ if (frame instanceof HTMLVideoElement) {
1972
+ frameWidth = frame.videoWidth;
1973
+ frameHeight = frame.videoHeight;
1974
+ }
1975
+ return [frameWidth, frameHeight];
1976
+ }
1977
+
1978
+ var InvisibleCanvas = styled__default.default.canvas(templateObject_1$G || (templateObject_1$G = __makeTemplateObject(["\n display: none;\n"], ["\n display: none;\n"])));
1979
+ function drawToCanvas(canvas, frame, width, height) {
1980
+ if (!canvas) return;
1981
+ var ctx = canvas.getContext('2d');
1982
+ if (!ctx) return;
1983
+ if (!width || !height) {
1984
+ var _a = getFrameDimensions(frame),
1985
+ frameWidth = _a[0],
1986
+ frameHeight = _a[1];
1987
+ width || (width = frameWidth);
1988
+ height || (height = frameHeight);
1989
+ }
1990
+ canvas.width = width;
1991
+ canvas.height = height;
1992
+ ctx.drawImage(frame, 0, 0, width, height);
1993
+ }
1994
+ function clearCanvas(canvas) {
1995
+ var _a;
1996
+ (_a = canvas === null || canvas === void 0 ? void 0 : canvas.getContext('2d')) === null || _a === void 0 ? void 0 : _a.clearRect(0, 0, canvas === null || canvas === void 0 ? void 0 : canvas.width, canvas === null || canvas === void 0 ? void 0 : canvas.height);
1997
+ }
1998
+ var templateObject_1$G;
1999
+
2564
2000
  function cropToShoulders(rawCanvas, cropCanvas, resizeCanvas, frame, face, quality, maxHeight) {
2565
2001
  if (quality === void 0) {
2566
2002
  quality = 0.92;
@@ -2864,7 +2300,8 @@ function useLoadFocusModel(_a) {
2864
2300
  modelPath = _b === void 0 ? defaultFocusModelPath : _b,
2865
2301
  _c = _a.modelLoadTimeoutMs,
2866
2302
  modelLoadTimeoutMs = _c === void 0 ? defaultFocusModelLoadTimeoutMs : _c,
2867
- onModelError = _a.onModelError;
2303
+ onModelError = _a.onModelError,
2304
+ videoRef = _a.videoRef;
2868
2305
  var _d = React.useState(false),
2869
2306
  ready = _d[0],
2870
2307
  setReady = _d[1];
@@ -2874,7 +2311,6 @@ function useLoadFocusModel(_a) {
2874
2311
  var _f = React.useState(null),
2875
2312
  modelError = _f[0],
2876
2313
  setModelError = _f[1];
2877
- var videoRef = React.useContext(CameraStateContext).videoRef;
2878
2314
  React.useEffect(function loadModel() {
2879
2315
  var _this = this;
2880
2316
  setReady(false);
@@ -3012,7 +2448,8 @@ function closeFaceDetector() {
3012
2448
  function useLoadFaceDetector(_a) {
3013
2449
  var onModelError = _a.onModelError,
3014
2450
  _b = _a.modelLoadTimeoutMs,
3015
- modelLoadTimeoutMs = _b === void 0 ? defaultSelfieCaptureModelLoadTimeoutMs : _b;
2451
+ modelLoadTimeoutMs = _b === void 0 ? defaultSelfieCaptureModelLoadTimeoutMs : _b,
2452
+ videoRef = _a.videoRef;
3016
2453
  var _c = React.useState(false),
3017
2454
  ready = _c[0],
3018
2455
  setReady = _c[1];
@@ -3022,7 +2459,6 @@ function useLoadFaceDetector(_a) {
3022
2459
  var _e = React.useState(null),
3023
2460
  modelError = _e[0],
3024
2461
  setModelError = _e[1];
3025
- var videoRef = React.useContext(CameraStateContext).videoRef;
3026
2462
  React.useEffect(function loadModel() {
3027
2463
  var _this = this;
3028
2464
  setReady(false);
@@ -3503,7 +2939,8 @@ function useLoadDocumentDetector(_a) {
3503
2939
  modelLoadTimeoutMs = _c === void 0 ? defaultDocumentDetectionModelLoadTimeoutMs : _c,
3504
2940
  _d = _a.scoreThreshold,
3505
2941
  scoreThreshold = _d === void 0 ? defaultDocumentDetectionScoreThreshold : _d,
3506
- onModelError = _a.onModelError;
2942
+ onModelError = _a.onModelError,
2943
+ videoRef = _a.videoRef;
3507
2944
  var _e = React.useState(false),
3508
2945
  ready = _e[0],
3509
2946
  setReady = _e[1];
@@ -3513,7 +2950,6 @@ function useLoadDocumentDetector(_a) {
3513
2950
  var _g = React.useState(null),
3514
2951
  modelError = _g[0],
3515
2952
  setModelError = _g[1];
3516
- var videoRef = React.useContext(CameraStateContext).videoRef;
3517
2953
  React.useEffect(function loadModel() {
3518
2954
  var _this = this;
3519
2955
  setReady(false);
@@ -3822,6 +3258,470 @@ function useFrameLoop(fn, _a) {
3822
3258
  };
3823
3259
  }
3824
3260
 
3261
+ function listAvailableCameras(facingMode_1) {
3262
+ return __awaiter(this, arguments, void 0, function (facingMode, requestMicAccess) {
3263
+ var cameraEnumerationStream, videoDevices;
3264
+ if (requestMicAccess === void 0) {
3265
+ requestMicAccess = false;
3266
+ }
3267
+ return __generator(this, function (_a) {
3268
+ switch (_a.label) {
3269
+ case 0:
3270
+ return [4 /*yield*/, navigator.mediaDevices.getUserMedia({
3271
+ video: {
3272
+ facingMode: {
3273
+ exact: facingMode
3274
+ }
3275
+ },
3276
+ audio: requestMicAccess
3277
+ })
3278
+ // This lists all available cameras attached to the user's device.
3279
+ ];
3280
+ case 1:
3281
+ cameraEnumerationStream = _a.sent();
3282
+ return [4 /*yield*/, navigator.mediaDevices.enumerateDevices()];
3283
+ case 2:
3284
+ videoDevices = _a.sent().filter(function (_a) {
3285
+ var kind = _a.kind;
3286
+ return kind === 'videoinput';
3287
+ });
3288
+ // Release the access to the user's camera that we obtained for enumeration purposes.
3289
+ cameraEnumerationStream.getVideoTracks().forEach(function (track) {
3290
+ track.enabled = false;
3291
+ track.stop();
3292
+ });
3293
+ cameraEnumerationStream = null;
3294
+ return [2 /*return*/, videoDevices];
3295
+ }
3296
+ });
3297
+ });
3298
+ }
3299
+ var frontCameraLabels = ['front', 'avant', 'anteriore', 'cameraaanvoorzijde', 'kamerapåframsidan', 'forsidekamera', 'kamerapåforsiden', 'aparatprzedni', 'etukamera', 'kameradepan', 'ÖnKamera', 'cameramặttrước', 'camerăfață', 'prednákamera', 'prednjakamera', 'előlapikamera', 'přednífotoaparát', 'μπροστινήκάμερα', 'переднякамера', 'передняякамера', 'преднакамера', 'алдыңғыкамера', 'מצלמה קדמית', 'الكاميرا الأمامية', 'फ़्रंटकैमरा', '前置相机', '前置鏡頭', '前面カメラ', '전면카메라', 'กล้องด้านหน้า'].map(function (s) {
3300
+ return s.toLocaleLowerCase().split(' ').join('');
3301
+ });
3302
+ var rearCameraLabels = ['back', 'rear', 'posterior', 'trasera', 'traseira', 'arrière', 'rückkamera', 'fotocamera(posteriore)', 'cameraaanachterzijde', 'kamerapåbaksidan', 'kamerapåbaksiden', 'bagsidekamera', 'aparattylny', 'takakamera', 'arkakamera', 'kamerabelakang', 'cameramặtsau', 'camerăspate', 'stražnjakamera', 'zadnákamera', 'hátoldalikamera', 'zadnífotoaparát', 'πίσωκάμερα', 'заднякамера', 'Задняякамера', 'заднакамера', 'артқыкамера', 'מצלמה אחורית', 'الكاميرا الخلفية', 'बैककैमरा', '后置相机', '後置鏡頭', '背面カメラ', '후면카메라', 'กล้องด้านหลัง'].map(function (s) {
3303
+ return s.toLocaleLowerCase().split(' ').join('');
3304
+ });
3305
+ var backUltraWideCameraLabels = ['backdualwidecamera', 'backultrawidecamera', 'ultraampliaposterior', 'ultra-angulartraseira', 'ultragrandeangulartraseira', 'ultragrandangle', 'ultragranangular', 'ultra-weitwinkelkamera', 'ultra-grandangolo', 'ultrabredecameraaanachterzijde', 'ultravidvinkelkamerapåbaksidan', 'ultravidvinkelkameraetpåbagsiden', 'ultravidvinkelkamerabak', 'ultragenişkameraarkayüzü', 'ultralaajakulmainentakakamera', 'tylnyaparatultraszerokokątny', 'cameracựcrộngmặtsau', 'camerăcuobiectivultra‑superangularspate', 'ultraszéleslátószögűkamera', 'kameraultralebarbelakang', 'stražnjaultraširokakamera', 'zadníultraširokoúhlýfotoaparát', 'ultraširokouhlá', 'πίσωυπερευρείακάμερα', 'заднянадширококутнакамера', 'Задняясверхширокоугольнаякамера', 'Задна свръх широкоъгълна камера', 'артқыультракеңбұрыштыкамера', 'מצלמה אולטרה רחבה אחורית', 'كاميرا خلفية عريضة جدًا', 'बैकअल्ट्रावाइडकैमरा', '后置超广角相机', '後置超廣角鏡頭相機', '背面超広角カメラ', '후면울트라와이드카메라', 'กล้องด้านหลังอัลตร้าไวด์'].map(function (s) {
3306
+ return s.toLocaleLowerCase().split(' ').join('');
3307
+ });
3308
+ var cameraLabelMatches = function cameraLabelMatches(labelOrDevice, labelSetOrLabel) {
3309
+ var label = labelOrDevice instanceof MediaDeviceInfo ? getDeviceLabel(labelOrDevice) : labelOrDevice;
3310
+ var labelSet = typeof labelSetOrLabel === 'string' ? [labelSetOrLabel] : labelSetOrLabel;
3311
+ return labelSet.some(function (l) {
3312
+ return label.includes(l);
3313
+ });
3314
+ };
3315
+ var getDeviceLabel = function getDeviceLabel(deviceInfo) {
3316
+ return deviceInfo.label.toLocaleLowerCase().split(' ').join('');
3317
+ };
3318
+ var currentCamera;
3319
+ function obtainCameraAccess(stream, deviceLabel, video) {
3320
+ releaseCameraAccess();
3321
+ log('obtaining camera access...');
3322
+ var _a = stream.getVideoTracks()[0].getSettings(),
3323
+ width = _a.width,
3324
+ height = _a.height;
3325
+ log('camera dimensions', width, height);
3326
+ var label = deviceLabel.toLocaleLowerCase().split(' ').join('');
3327
+ log('camera label', label);
3328
+ var isRearFacing = cameraLabelMatches(label, __spreadArray(__spreadArray(__spreadArray([], rearCameraLabels, true), backUltraWideCameraLabels, true), ['iphone'], false));
3329
+ log('is rear facing?', isRearFacing);
3330
+ var release = function release() {
3331
+ stream.getTracks().forEach(function (track) {
3332
+ track.enabled = false;
3333
+ track.stop();
3334
+ });
3335
+ if (video) {
3336
+ video.pause();
3337
+ video.srcObject = null;
3338
+ video.src = '';
3339
+ }
3340
+ };
3341
+ width || (width = 0);
3342
+ height || (height = 0);
3343
+ currentCamera = {
3344
+ label: deviceLabel,
3345
+ stream: stream,
3346
+ width: width,
3347
+ height: height,
3348
+ isRearFacing: isRearFacing,
3349
+ release: release
3350
+ };
3351
+ log('camera access granted');
3352
+ if (video) video.srcObject = stream;
3353
+ log('video source initialized');
3354
+ return currentCamera;
3355
+ }
3356
+ function releaseCameraAccess() {
3357
+ if (!currentCamera) return;
3358
+ log('releasing camera access...');
3359
+ currentCamera.release();
3360
+ currentCamera = undefined;
3361
+ }
3362
+
3363
+ var initialState$5 = {
3364
+ videoRef: {
3365
+ current: null
3366
+ },
3367
+ videoLoaded: false,
3368
+ videoStream: null,
3369
+ videoDevice: null,
3370
+ isRearFacing: false,
3371
+ camera: null,
3372
+ cameraReady: false,
3373
+ cameraAccessDenied: false,
3374
+ iphoneContinuityCameraAvailable: false,
3375
+ iphoneContinuityCameraDenied: false,
3376
+ preferIphoneContinuityCamera: true,
3377
+ audioStream: null,
3378
+ microphoneReady: false,
3379
+ microphoneAccessDenied: false
3380
+ };
3381
+ var createCameraStore = function createCameraStore(config) {
3382
+ var store = zustand.createStore(function (set, get) {
3383
+ return _assign(_assign(_assign({}, initialState$5), config), {
3384
+ reset: function reset() {
3385
+ return set(_assign(_assign({}, initialState$5), config));
3386
+ },
3387
+ setConfig: function setConfig(config) {
3388
+ return set(config);
3389
+ },
3390
+ onVideoMounted: function onVideoMounted() {
3391
+ return set({
3392
+ videoLoaded: true
3393
+ });
3394
+ },
3395
+ setIphoneContinuityCameraAllowed: function setIphoneContinuityCameraAllowed(value) {
3396
+ return set({
3397
+ preferIphoneContinuityCamera: value
3398
+ });
3399
+ },
3400
+ requestCameraAccess: function requestCameraAccess() {
3401
+ return __awaiter(this, void 0, void 0, function () {
3402
+ var _a, releaseCameraAccess, preferIphoneContinuityCamera, iphoneContinuityCameraDenied, availableCameras, selectedCamera, platform_1, iphoneContinuityCamera, constraints, stream, e_1, iphoneContinuityCameraAvailable_1, handleStreamEnded_1, camera, e_3;
3403
+ var _b, _c, _d;
3404
+ return __generator(this, function (_e) {
3405
+ switch (_e.label) {
3406
+ case 0:
3407
+ _a = get(), releaseCameraAccess = _a.releaseCameraAccess, preferIphoneContinuityCamera = _a.preferIphoneContinuityCamera, iphoneContinuityCameraDenied = _a.iphoneContinuityCameraDenied;
3408
+ releaseCameraAccess();
3409
+ _e.label = 1;
3410
+ case 1:
3411
+ _e.trys.push([1, 11,, 12]);
3412
+ return [4 /*yield*/, listAvailableCameras()];
3413
+ case 2:
3414
+ availableCameras = _e.sent();
3415
+ selectedCamera = void 0;
3416
+ debug('availableCameras', availableCameras);
3417
+ platform_1 = getPlatform();
3418
+ debug('platformDetails', platform_1);
3419
+ if (!iphoneContinuityCameraDenied && (!(platform_1 === null || platform_1 === void 0 ? void 0 : platform_1.os) || platform_1.os.family === 'OS X')) {
3420
+ iphoneContinuityCamera = availableCameras.find(function (deviceInfo) {
3421
+ return cameraLabelMatches(deviceInfo, 'iphone');
3422
+ });
3423
+ set({
3424
+ iphoneContinuityCameraAvailable: !!iphoneContinuityCamera
3425
+ });
3426
+ if (iphoneContinuityCamera && preferIphoneContinuityCamera) {
3427
+ selectedCamera = iphoneContinuityCamera;
3428
+ }
3429
+ } else if (((_b = platform_1 === null || platform_1 === void 0 ? void 0 : platform_1.os) === null || _b === void 0 ? void 0 : _b.family) === 'Android' || availableCameras.every(function (c) {
3430
+ return c.label.startsWith('camera2 ');
3431
+ })) {
3432
+ availableCameras = availableCameras.sort(function (a, b) {
3433
+ return a.label.toLowerCase().localeCompare(b.label.toLowerCase());
3434
+ });
3435
+ debug('cameras have been sorted', availableCameras);
3436
+ }
3437
+ if (config.preferFrontFacingCamera) {
3438
+ selectedCamera = availableCameras.find(function (deviceInfo) {
3439
+ return cameraLabelMatches(deviceInfo, frontCameraLabels);
3440
+ });
3441
+ }
3442
+ selectedCamera || (selectedCamera = availableCameras.find(function (deviceInfo) {
3443
+ return cameraLabelMatches(deviceInfo, 'backtriplecamera');
3444
+ }));
3445
+ selectedCamera || (selectedCamera = availableCameras.find(function (deviceInfo) {
3446
+ return cameraLabelMatches(deviceInfo, 'backdualcamera');
3447
+ }));
3448
+ selectedCamera || (selectedCamera = availableCameras.find(function (deviceInfo) {
3449
+ return cameraLabelMatches(deviceInfo, rearCameraLabels) && !cameraLabelMatches(deviceInfo, backUltraWideCameraLabels);
3450
+ }));
3451
+ selectedCamera || (selectedCamera = availableCameras.find(function (deviceInfo) {
3452
+ return cameraLabelMatches(deviceInfo, rearCameraLabels);
3453
+ }));
3454
+ // on iOS, the front facing camera always is at the first position in the list, so we skip it if all else fails.
3455
+ if (!config.preferFrontFacingCamera && ((_c = platform_1 === null || platform_1 === void 0 ? void 0 : platform_1.os) === null || _c === void 0 ? void 0 : _c.family) === 'iOS' && availableCameras.length > 0) {
3456
+ selectedCamera || (selectedCamera = availableCameras[1]);
3457
+ }
3458
+ selectedCamera || (selectedCamera = availableCameras[0]);
3459
+ debug('selectedCamera', selectedCamera);
3460
+ set({
3461
+ videoDevice: selectedCamera
3462
+ });
3463
+ constraints = {
3464
+ audio: false,
3465
+ video: {
3466
+ deviceId: {
3467
+ exact: selectedCamera.deviceId
3468
+ },
3469
+ width: {
3470
+ ideal: config.maxVideoWidth
3471
+ },
3472
+ aspectRatio: 1.777777778,
3473
+ frameRate: {}
3474
+ }
3475
+ };
3476
+ if (config.maxFps) {
3477
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
3478
+ // @ts-ignore
3479
+ constraints.video.frameRate = {
3480
+ max: config.maxFps
3481
+ };
3482
+ }
3483
+ stream = null;
3484
+ _e.label = 3;
3485
+ case 3:
3486
+ _e.trys.push([3, 5,, 6]);
3487
+ debug('obtaining camera access with constraints', constraints);
3488
+ return [4 /*yield*/, navigator.mediaDevices.getUserMedia(constraints)];
3489
+ case 4:
3490
+ stream = _e.sent();
3491
+ return [3 /*break*/, 6];
3492
+ case 5:
3493
+ e_1 = _e.sent();
3494
+ if (e_1.name === 'NotAllowedError') {
3495
+ if (preferIphoneContinuityCamera) {
3496
+ set({
3497
+ iphoneContinuityCameraAvailable: false,
3498
+ iphoneContinuityCameraDenied: true
3499
+ });
3500
+ } else {
3501
+ set({
3502
+ cameraAccessDenied: true
3503
+ });
3504
+ }
3505
+ return [2 /*return*/];
3506
+ }
3507
+ return [3 /*break*/, 6];
3508
+ case 6:
3509
+ if (!!stream) return [3 /*break*/, 10];
3510
+ _e.label = 7;
3511
+ case 7:
3512
+ _e.trys.push([7, 9,, 10]);
3513
+ return [4 /*yield*/, navigator.mediaDevices.getUserMedia({
3514
+ audio: false,
3515
+ video: true
3516
+ })];
3517
+ case 8:
3518
+ stream = _e.sent();
3519
+ debug('opened stream with no width and height constraints');
3520
+ return [3 /*break*/, 10];
3521
+ case 9:
3522
+ _e.sent();
3523
+ debug('cannot open stream at all');
3524
+ return [3 /*break*/, 10];
3525
+ case 10:
3526
+ if (!stream) {
3527
+ error('failed to open camera');
3528
+ throw new Error('failed to open camera');
3529
+ }
3530
+ debug('camera access granted with constraints', constraints);
3531
+ iphoneContinuityCameraAvailable_1 = get().iphoneContinuityCameraAvailable;
3532
+ handleStreamEnded_1 = function handleStreamEnded_1() {
3533
+ if (iphoneContinuityCameraAvailable_1 && preferIphoneContinuityCamera) {
3534
+ debug('someone unplugged the continuity camera');
3535
+ releaseCameraAccess();
3536
+ set({
3537
+ videoStream: null,
3538
+ videoDevice: null,
3539
+ iphoneContinuityCameraAvailable: false,
3540
+ iphoneContinuityCameraDenied: true
3541
+ });
3542
+ } else {
3543
+ debug('someone unplugged the webcam');
3544
+ releaseCameraAccess();
3545
+ set({
3546
+ videoStream: null,
3547
+ videoDevice: null,
3548
+ videoLoaded: false,
3549
+ cameraAccessDenied: true
3550
+ });
3551
+ }
3552
+ };
3553
+ (_d = config.videoRef.current) === null || _d === void 0 ? void 0 : _d.addEventListener('ended', handleStreamEnded_1);
3554
+ stream.getVideoTracks().forEach(function (track) {
3555
+ track.onended = handleStreamEnded_1;
3556
+ });
3557
+ camera = obtainCameraAccess(stream, selectedCamera.label, config.videoRef.current);
3558
+ set({
3559
+ camera: camera,
3560
+ cameraReady: true,
3561
+ isRearFacing: camera.isRearFacing,
3562
+ videoStream: stream
3563
+ });
3564
+ return [3 /*break*/, 12];
3565
+ case 11:
3566
+ e_3 = _e.sent();
3567
+ if (e_3.name === 'NotAllowedError') {
3568
+ error('camera access has been blocked by the user', e_3);
3569
+ set({
3570
+ cameraAccessDenied: true
3571
+ });
3572
+ } else {
3573
+ error('camera access encountered some other error', e_3);
3574
+ throw e_3;
3575
+ }
3576
+ return [3 /*break*/, 12];
3577
+ case 12:
3578
+ return [2 /*return*/];
3579
+ }
3580
+ });
3581
+ });
3582
+ },
3583
+ releaseCameraAccess: function releaseCameraAccess() {
3584
+ return __awaiter(this, void 0, void 0, function () {
3585
+ var camera;
3586
+ return __generator(this, function (_a) {
3587
+ camera = get().camera;
3588
+ if (!camera) return [2 /*return*/];
3589
+ camera.release();
3590
+ set({
3591
+ camera: null,
3592
+ cameraReady: false,
3593
+ cameraAccessDenied: false
3594
+ });
3595
+ return [2 /*return*/];
3596
+ });
3597
+ });
3598
+ },
3599
+ requestMicrophoneAccess: function requestMicrophoneAccess() {
3600
+ return __awaiter(this, void 0, void 0, function () {
3601
+ var stream;
3602
+ return __generator(this, function (_a) {
3603
+ switch (_a.label) {
3604
+ case 0:
3605
+ get().releaseMicrophoneAccess();
3606
+ _a.label = 1;
3607
+ case 1:
3608
+ _a.trys.push([1, 3,, 4]);
3609
+ return [4 /*yield*/, navigator.mediaDevices.getUserMedia({
3610
+ audio: true,
3611
+ video: false
3612
+ })];
3613
+ case 2:
3614
+ stream = _a.sent();
3615
+ set({
3616
+ audioStream: stream,
3617
+ microphoneReady: true
3618
+ });
3619
+ stream.getAudioTracks().forEach(function (track) {
3620
+ track.onended = function () {
3621
+ set({
3622
+ microphoneAccessDenied: true
3623
+ });
3624
+ };
3625
+ });
3626
+ return [3 /*break*/, 4];
3627
+ case 3:
3628
+ _a.sent();
3629
+ set({
3630
+ microphoneAccessDenied: true
3631
+ });
3632
+ return [3 /*break*/, 4];
3633
+ case 4:
3634
+ return [2 /*return*/];
3635
+ }
3636
+ });
3637
+ });
3638
+ },
3639
+ releaseMicrophoneAccess: function releaseMicrophoneAccess() {
3640
+ var _a;
3641
+ var audioStream = get().audioStream;
3642
+ (_a = audioStream === null || audioStream === void 0 ? void 0 : audioStream.stop) === null || _a === void 0 ? void 0 : _a.call(audioStream);
3643
+ audioStream === null || audioStream === void 0 ? void 0 : audioStream.getAudioTracks().forEach(function (track) {
3644
+ var _a;
3645
+ (_a = track.stop) === null || _a === void 0 ? void 0 : _a.call(track);
3646
+ });
3647
+ set({
3648
+ audioStream: null,
3649
+ microphoneReady: false,
3650
+ microphoneAccessDenied: false
3651
+ });
3652
+ }
3653
+ });
3654
+ });
3655
+ if (config.requestAccessAutomatically) {
3656
+ store.getState().requestCameraAccess();
3657
+ }
3658
+ if (config.requireMicrophoneAccess) {
3659
+ store.getState().requestMicrophoneAccess();
3660
+ }
3661
+ return _assign(_assign({}, store), {
3662
+ destroy: function destroy() {
3663
+ store.getState().releaseCameraAccess();
3664
+ store.getState().releaseMicrophoneAccess();
3665
+ }
3666
+ });
3667
+ };
3668
+ var CameraStoreContext = /*#__PURE__*/React.createContext(undefined);
3669
+ function CameraStoreProvider(_a) {
3670
+ var children = _a.children,
3671
+ _b = _a.requestAccessAutomatically,
3672
+ requestAccessAutomatically = _b === void 0 ? true : _b,
3673
+ _c = _a.preferIphoneContinuityCamera,
3674
+ preferIphoneContinuityCamera = _c === void 0 ? true : _c,
3675
+ _d = _a.preferFrontFacingCamera,
3676
+ preferFrontFacingCamera = _d === void 0 ? false : _d,
3677
+ _e = _a.maxVideoWidth,
3678
+ maxVideoWidth = _e === void 0 ? 1920 : _e,
3679
+ maxFps = _a.maxFps,
3680
+ onCameraAccessDenied = _a.onCameraAccessDenied,
3681
+ onMicrophoneAccessDenied = _a.onMicrophoneAccessDenied,
3682
+ _f = _a.requireMicrophoneAccess,
3683
+ requireMicrophoneAccess = _f === void 0 ? false : _f;
3684
+ var videoRef = React.useRef(null);
3685
+ var store = React.useRef();
3686
+ store.current || (store.current = createCameraStore({
3687
+ videoRef: videoRef,
3688
+ requestAccessAutomatically: requestAccessAutomatically,
3689
+ preferIphoneContinuityCamera: preferIphoneContinuityCamera,
3690
+ preferFrontFacingCamera: preferFrontFacingCamera,
3691
+ maxVideoWidth: maxVideoWidth,
3692
+ maxFps: maxFps,
3693
+ onCameraAccessDenied: onCameraAccessDenied,
3694
+ onMicrophoneAccessDenied: onMicrophoneAccessDenied,
3695
+ requireMicrophoneAccess: requireMicrophoneAccess
3696
+ }));
3697
+ React.useEffect(function () {
3698
+ var _a, _b, _c;
3699
+ var state = (_a = store.current) === null || _a === void 0 ? void 0 : _a.getState();
3700
+ if (!state) return;
3701
+ if (preferIphoneContinuityCamera !== (state === null || state === void 0 ? void 0 : state.preferIphoneContinuityCamera) || preferFrontFacingCamera !== (state === null || state === void 0 ? void 0 : state.preferFrontFacingCamera)) {
3702
+ (_b = store.current) === null || _b === void 0 ? void 0 : _b.setState({
3703
+ preferIphoneContinuityCamera: preferIphoneContinuityCamera,
3704
+ preferFrontFacingCamera: preferFrontFacingCamera
3705
+ });
3706
+ (_c = store.current) === null || _c === void 0 ? void 0 : _c.getState().requestCameraAccess();
3707
+ }
3708
+ }, [preferFrontFacingCamera, preferIphoneContinuityCamera]);
3709
+ React.useEffect(function () {
3710
+ return function () {
3711
+ var _a;
3712
+ return (_a = store.current) === null || _a === void 0 ? void 0 : _a.destroy();
3713
+ };
3714
+ }, []);
3715
+ return /*#__PURE__*/React__namespace.default.createElement(CameraStoreContext.Provider, {
3716
+ value: store.current
3717
+ }, children);
3718
+ }
3719
+ function useCameraStore(selector) {
3720
+ var store = React.useContext(CameraStoreContext);
3721
+ if (!store) throw new Error('useCameraStore cannot be used without Provider');
3722
+ return zustand.useStore(store, selector);
3723
+ }
3724
+
3825
3725
  var DocumentDetectionModelContext = /*#__PURE__*/React.createContext({
3826
3726
  startDocumentDetection: function startDocumentDetection() {
3827
3727
  return null;
@@ -3867,7 +3767,7 @@ function DocumentDetectionModelProvider(_a) {
3867
3767
  _g = _a.documentDetectionModelLoadTimeoutMs,
3868
3768
  documentDetectionModelLoadTimeoutMs = _g === void 0 ? defaultDocumentDetectionModelLoadTimeoutMs : _g,
3869
3769
  onDocumentDetectionModelError = _a.onDocumentDetectionModelError;
3870
- var _h = React.useContext(CameraStateContext),
3770
+ var _h = useCameraStore(),
3871
3771
  videoRef = _h.videoRef,
3872
3772
  videoLoaded = _h.videoLoaded,
3873
3773
  cameraReady = _h.cameraReady;
@@ -3890,7 +3790,8 @@ function DocumentDetectionModelProvider(_a) {
3890
3790
  modelPath: documentDetectionModelPath,
3891
3791
  modelLoadTimeoutMs: documentDetectionModelLoadTimeoutMs,
3892
3792
  scoreThreshold: documentDetectionModelScoreThreshold,
3893
- onModelError: onDocumentDetectionModelError
3793
+ onModelError: onDocumentDetectionModelError,
3794
+ videoRef: videoRef
3894
3795
  }),
3895
3796
  ready = _o.ready,
3896
3797
  modelDownloadProgress = _o.modelDownloadProgress,
@@ -4007,10 +3908,12 @@ function FocusModelProvider(_a) {
4007
3908
  var _e = React.useState({}),
4008
3909
  focusThresholds = _e[0],
4009
3910
  setFocusThresholds = _e[1];
3911
+ var videoRef = useCameraStore().videoRef;
4010
3912
  var _f = useLoadFocusModel({
4011
3913
  modelPath: focusModelPath,
4012
3914
  modelLoadTimeoutMs: focusModelLoadTimeoutMs,
4013
- onModelError: onFocusModelError
3915
+ onModelError: onFocusModelError,
3916
+ videoRef: videoRef
4014
3917
  }),
4015
3918
  ready = _f.ready,
4016
3919
  modelDownloadProgress = _f.modelDownloadProgress,
@@ -4682,12 +4585,12 @@ function DebugStatsPane(_a) {
4682
4585
  if (!portalLocation) return element;
4683
4586
  return /*#__PURE__*/reactDom.createPortal(element, portalLocation);
4684
4587
  }
4685
- var DebugStatsPaneDiv = styled__default.default.span(templateObject_1$D || (templateObject_1$D = __makeTemplateObject(["\n font-size: 16px;\n font-family: monospace;\n position: absolute;\n left: 20px;\n bottom: 20px;\n margin-right: 20px;\n padding: 8px;\n color: limegreen;\n background: rgba(0, 0, 0, 0.5);\n z-index: 10002;\n"], ["\n font-size: 16px;\n font-family: monospace;\n position: absolute;\n left: 20px;\n bottom: 20px;\n margin-right: 20px;\n padding: 8px;\n color: limegreen;\n background: rgba(0, 0, 0, 0.5);\n z-index: 10002;\n"])));
4686
- var ObjectDetectionDebugOverlayDiv = styled__default.default.div(templateObject_2$w || (templateObject_2$w = __makeTemplateObject(["\n position: absolute;\n z-index: 1001;\n width: 100%;\n height: 100%;\n max-width: 100%;\n max-height: 100%;\n overflow: hidden;\n ", "\n"], ["\n position: absolute;\n z-index: 1001;\n width: 100%;\n height: 100%;\n max-width: 100%;\n max-height: 100%;\n overflow: hidden;\n ", "\n"])), function (_a) {
4588
+ var DebugStatsPaneDiv = styled__default.default.span(templateObject_1$F || (templateObject_1$F = __makeTemplateObject(["\n font-size: 16px;\n font-family: monospace;\n position: absolute;\n left: 20px;\n bottom: 20px;\n margin-right: 20px;\n padding: 8px;\n color: limegreen;\n background: rgba(0, 0, 0, 0.5);\n z-index: 10002;\n"], ["\n font-size: 16px;\n font-family: monospace;\n position: absolute;\n left: 20px;\n bottom: 20px;\n margin-right: 20px;\n padding: 8px;\n color: limegreen;\n background: rgba(0, 0, 0, 0.5);\n z-index: 10002;\n"])));
4589
+ var ObjectDetectionDebugOverlayDiv = styled__default.default.div(templateObject_2$y || (templateObject_2$y = __makeTemplateObject(["\n position: absolute;\n z-index: 1001;\n width: 100%;\n height: 100%;\n max-width: 100%;\n max-height: 100%;\n overflow: hidden;\n ", "\n transform-style: preserve-3d;\n"], ["\n position: absolute;\n z-index: 1001;\n width: 100%;\n height: 100%;\n max-width: 100%;\n max-height: 100%;\n overflow: hidden;\n ", "\n transform-style: preserve-3d;\n"])), function (_a) {
4687
4590
  var $flipX = _a.$flipX;
4688
4591
  return $flipX ? 'transform: scaleX(-1);' : '';
4689
4592
  });
4690
- var ObjectDetectionDebugBox = styled__default.default.div(templateObject_3$n || (templateObject_3$n = __makeTemplateObject(["\n font: 10px monospace;\n position: absolute;\n border: 3px solid ", ";\n color: ", ";\n ", "\n"], ["\n font: 10px monospace;\n position: absolute;\n border: 3px solid ", ";\n color: ", ";\n ", "\n"])), function (_a) {
4593
+ var ObjectDetectionDebugBox = styled__default.default.div(templateObject_3$p || (templateObject_3$p = __makeTemplateObject(["\n font: 10px monospace;\n position: absolute;\n border: 3px solid ", ";\n color: ", ";\n ", "\n transform-style: preserve-3d;\n"], ["\n font: 10px monospace;\n position: absolute;\n border: 3px solid ", ";\n color: ", ";\n ", "\n transform-style: preserve-3d;\n"])), function (_a) {
4691
4594
  var $color = _a.$color;
4692
4595
  return $color !== null && $color !== void 0 ? $color : 'green';
4693
4596
  }, function (_a) {
@@ -4697,7 +4600,7 @@ var ObjectDetectionDebugBox = styled__default.default.div(templateObject_3$n ||
4697
4600
  var $flipX = _a.$flipX;
4698
4601
  return $flipX ? 'transform: scaleX(-1);' : '';
4699
4602
  });
4700
- var FaceDetectionKeypointMarker = styled__default.default.div(templateObject_4$h || (templateObject_4$h = __makeTemplateObject(["\n position: absolute;\n width: 4px;\n height: 4px;\n border: 2px solid ", ";\n font: 10px monospace;\n color: ", ";\n border-radius: 50%;\n ", "\n"], ["\n position: absolute;\n width: 4px;\n height: 4px;\n border: 2px solid ", ";\n font: 10px monospace;\n color: ", ";\n border-radius: 50%;\n ", "\n"])), function (_a) {
4603
+ var FaceDetectionKeypointMarker = styled__default.default.div(templateObject_4$j || (templateObject_4$j = __makeTemplateObject(["\n position: absolute;\n width: 4px;\n height: 4px;\n border: 2px solid ", ";\n font: 10px monospace;\n color: ", ";\n border-radius: 50%;\n ", "\n transform-style: preserve-3d;\n"], ["\n position: absolute;\n width: 4px;\n height: 4px;\n border: 2px solid ", ";\n font: 10px monospace;\n color: ", ";\n border-radius: 50%;\n ", "\n transform-style: preserve-3d;\n"])), function (_a) {
4701
4604
  var $color = _a.$color;
4702
4605
  return $color !== null && $color !== void 0 ? $color : 'red';
4703
4606
  }, function (_a) {
@@ -4888,7 +4791,7 @@ function SelfieCaptureFaceKeypoint(_a) {
4888
4791
  }
4889
4792
  });
4890
4793
  }
4891
- var templateObject_1$D, templateObject_2$w, templateObject_3$n, templateObject_4$h;
4794
+ var templateObject_1$F, templateObject_2$y, templateObject_3$p, templateObject_4$j;
4892
4795
 
4893
4796
  var enTranslation = {};
4894
4797
 
@@ -5065,7 +4968,7 @@ function useTranslations(verbiage, fallbacks) {
5065
4968
  }, [fallbacks, i18n.language, t, verbiage]);
5066
4969
  }
5067
4970
 
5068
- var GuidanceMessageContainerDiv = styled__default.default.div(templateObject_1$C || (templateObject_1$C = __makeTemplateObject(["\n position: absolute;\n top: calc(", ");\n ", "\n font-weight: bold;\n width: 100%;\n display: flex;\n"], ["\n position: absolute;\n top: calc(", ");\n ", "\n font-weight: bold;\n width: 100%;\n display: flex;\n"])), function (_a) {
4971
+ var GuidanceMessageContainerDiv = styled__default.default.div(templateObject_1$E || (templateObject_1$E = __makeTemplateObject(["\n position: absolute;\n top: calc(", ");\n ", "\n font-weight: bold;\n width: 100%;\n display: flex;\n"], ["\n position: absolute;\n top: calc(", ");\n ", "\n font-weight: bold;\n width: 100%;\n display: flex;\n"])), function (_a) {
5069
4972
  var $top = _a.$top;
5070
4973
  return $top !== null && $top !== void 0 ? $top : '10vh';
5071
4974
  }, function (_a) {
@@ -5078,14 +4981,14 @@ var GuidanceMessageContainer = function GuidanceMessageContainer(props) {
5078
4981
  if (!portalLocation) return element;
5079
4982
  return /*#__PURE__*/reactDom.createPortal(element, portalLocation);
5080
4983
  };
5081
- var GuidanceMessage = styled__default.default.div(templateObject_2$v || (templateObject_2$v = __makeTemplateObject(["\n margin-left: auto;\n margin-right: auto;\n background: ", ";\n color: ", ";\n padding: 10px 12px 8px;\n border-radius: 8px;\n z-index: 10001;\n"], ["\n margin-left: auto;\n margin-right: auto;\n background: ", ";\n color: ", ";\n padding: 10px 12px 8px;\n border-radius: 8px;\n z-index: 10001;\n"])), function (props) {
4984
+ var GuidanceMessage = styled__default.default.div(templateObject_2$x || (templateObject_2$x = __makeTemplateObject(["\n margin-left: auto;\n margin-right: auto;\n background: ", ";\n color: ", ";\n padding: 10px 12px 8px;\n border-radius: 8px;\n z-index: 10001;\n"], ["\n margin-left: auto;\n margin-right: auto;\n background: ", ";\n color: ", ";\n padding: 10px 12px 8px;\n border-radius: 8px;\n z-index: 10001;\n"])), function (props) {
5082
4985
  var _a, _b, _c, _d, _e, _f;
5083
4986
  return (_f = (_a = props.$background) !== null && _a !== void 0 ? _a : (_e = (_c = (_b = props.theme) === null || _b === void 0 ? void 0 : _b.guidanceMessages) === null || _c === void 0 ? void 0 : _c[(_d = props.$variant) !== null && _d !== void 0 ? _d : 'default']) === null || _e === void 0 ? void 0 : _e.backgroundColor) !== null && _f !== void 0 ? _f : '#ccc';
5084
4987
  }, function (props) {
5085
4988
  var _a, _b, _c, _d, _e, _f;
5086
4989
  return (_f = (_a = props.$textColor) !== null && _a !== void 0 ? _a : (_e = (_c = (_b = props.theme) === null || _b === void 0 ? void 0 : _b.guidanceMessages) === null || _c === void 0 ? void 0 : _c[(_d = props.$variant) !== null && _d !== void 0 ? _d : 'default']) === null || _e === void 0 ? void 0 : _e.textColor) !== null && _f !== void 0 ? _f : 'black';
5087
4990
  });
5088
- var templateObject_1$C, templateObject_2$v;
4991
+ var templateObject_1$E, templateObject_2$x;
5089
4992
 
5090
4993
  function OverrideWrongDocumentTypeGuidanceDialog(_a) {
5091
4994
  var _b = _a.classNames,
@@ -5100,7 +5003,7 @@ function OverrideWrongDocumentTypeGuidanceDialog(_a) {
5100
5003
  buttonText: 'OK'
5101
5004
  });
5102
5005
  if (!state.allowOverrideWrongDocumentTypeGuidance) return null;
5103
- return /*#__PURE__*/React__namespace.default.createElement(Container$1, {
5006
+ return /*#__PURE__*/React__namespace.default.createElement(Container$2, {
5104
5007
  className: classNames.container
5105
5008
  }, /*#__PURE__*/React__namespace.default.createElement(InnerContainer, {
5106
5009
  className: classNames.inner
@@ -5118,45 +5021,47 @@ function OverrideWrongDocumentTypeGuidanceDialog(_a) {
5118
5021
  }
5119
5022
  }, verbiage.buttonText))));
5120
5023
  }
5121
- var Container$1 = styled__default.default.div(templateObject_1$B || (templateObject_1$B = __makeTemplateObject(["\n position: fixed;\n left: 0;\n bottom: 0;\n width: 100dvw;\n background: ", ";\n color: ", ";\n display: flex;\n z-index: 100001;\n"], ["\n position: fixed;\n left: 0;\n bottom: 0;\n width: 100dvw;\n background: ", ";\n color: ", ";\n display: flex;\n z-index: 100001;\n"])), function (props) {
5024
+ var Container$2 = styled__default.default.div(templateObject_1$D || (templateObject_1$D = __makeTemplateObject(["\n position: fixed;\n left: 0;\n bottom: 0;\n width: 100dvw;\n background: ", ";\n color: ", ";\n display: flex;\n z-index: 100001;\n"], ["\n position: fixed;\n left: 0;\n bottom: 0;\n width: 100dvw;\n background: ", ";\n color: ", ";\n display: flex;\n z-index: 100001;\n"])), function (props) {
5122
5025
  var _a, _b, _c;
5123
5026
  return (_c = (_b = (_a = props.theme.idCapture) === null || _a === void 0 ? void 0 : _a.overrideWrongDocumentTypeGuidance) === null || _b === void 0 ? void 0 : _b.backgroundColor) !== null && _c !== void 0 ? _c : '#eed202';
5124
5027
  }, function (props) {
5125
5028
  var _a, _b, _c;
5126
5029
  return (_c = (_b = (_a = props.theme.idCapture) === null || _a === void 0 ? void 0 : _a.overrideWrongDocumentTypeGuidance) === null || _b === void 0 ? void 0 : _b.textColor) !== null && _c !== void 0 ? _c : 'black';
5127
5030
  });
5128
- var InnerContainer = styled__default.default.div(templateObject_2$u || (templateObject_2$u = __makeTemplateObject(["\n display: flex;\n flex-direction: row;\n padding: 16px 24px;\n margin: auto 0;\n width: 100%;\n"], ["\n display: flex;\n flex-direction: row;\n padding: 16px 24px;\n margin: auto 0;\n width: 100%;\n"])));
5129
- var Message = styled__default.default.span(templateObject_3$m || (templateObject_3$m = __makeTemplateObject(["\n display: block;\n margin: auto 12px auto 0;\n"], ["\n display: block;\n margin: auto 12px auto 0;\n"])));
5130
- var ButtonContainer = styled__default.default.div(templateObject_4$g || (templateObject_4$g = __makeTemplateObject(["\n display: flex;\n margin-left: auto;\n"], ["\n display: flex;\n margin-left: auto;\n"])));
5131
- var Button = styled__default.default(LoaderButton)(templateObject_5$a || (templateObject_5$a = __makeTemplateObject(["\n white-space: nowrap;\n margin: auto;\n"], ["\n white-space: nowrap;\n margin: auto;\n"])));
5132
- var templateObject_1$B, templateObject_2$u, templateObject_3$m, templateObject_4$g, templateObject_5$a;
5031
+ var InnerContainer = styled__default.default.div(templateObject_2$w || (templateObject_2$w = __makeTemplateObject(["\n display: flex;\n flex-direction: row;\n padding: 16px 24px;\n margin: auto 0;\n width: 100%;\n"], ["\n display: flex;\n flex-direction: row;\n padding: 16px 24px;\n margin: auto 0;\n width: 100%;\n"])));
5032
+ var Message = styled__default.default.span(templateObject_3$o || (templateObject_3$o = __makeTemplateObject(["\n display: block;\n margin: auto 12px auto 0;\n"], ["\n display: block;\n margin: auto 12px auto 0;\n"])));
5033
+ var ButtonContainer = styled__default.default.div(templateObject_4$i || (templateObject_4$i = __makeTemplateObject(["\n display: flex;\n margin-left: auto;\n"], ["\n display: flex;\n margin-left: auto;\n"])));
5034
+ var Button = styled__default.default(LoaderButton)(templateObject_5$b || (templateObject_5$b = __makeTemplateObject(["\n white-space: nowrap;\n margin: auto;\n"], ["\n white-space: nowrap;\n margin: auto;\n"])));
5035
+ var templateObject_1$D, templateObject_2$w, templateObject_3$o, templateObject_4$i, templateObject_5$b;
5133
5036
 
5134
5037
  var IdCapture = function IdCapture(_a) {
5135
- var _b, _c, _d, _e, _f, _g, _h, _j;
5038
+ var _b, _c, _d, _e, _f, _g, _h;
5136
5039
  var requiredDocumentType = _a.requiredDocumentType,
5137
- _k = _a.thresholds,
5138
- thresholds = _k === void 0 ? defaultIdCaptureThresholds : _k,
5040
+ _j = _a.thresholds,
5041
+ thresholds = _j === void 0 ? defaultIdCaptureThresholds : _j,
5139
5042
  guidanceMessage = _a.guidanceMessage,
5140
5043
  guidanceSatisfied = _a.guidanceSatisfied,
5141
5044
  onCapture = _a.onCapture,
5142
- _l = _a.classNames,
5143
- classNames = _l === void 0 ? {} : _l,
5144
- _m = _a.colors,
5145
- colors = _m === void 0 ? {} : _m,
5146
- _o = _a.verbiage,
5147
- rawVerbiage = _o === void 0 ? {} : _o,
5148
- _p = _a.debugMode,
5149
- debugMode = _p === void 0 ? false : _p;
5150
- var _q = useResizeObserver__default.default(),
5151
- ref = _q.ref,
5152
- _r = _q.width,
5153
- width = _r === void 0 ? 1 : _r,
5154
- _s = _q.height,
5155
- height = _s === void 0 ? 1 : _s;
5156
- var _t = useIdCaptureState(),
5157
- state = _t[0],
5158
- dispatch = _t[1];
5159
- var cameraRef = React.useContext(CameraStateContext).cameraRef;
5045
+ _k = _a.classNames,
5046
+ classNames = _k === void 0 ? {} : _k,
5047
+ _l = _a.colors,
5048
+ colors = _l === void 0 ? {} : _l,
5049
+ _m = _a.verbiage,
5050
+ rawVerbiage = _m === void 0 ? {} : _m,
5051
+ _o = _a.debugMode,
5052
+ debugMode = _o === void 0 ? false : _o;
5053
+ var _p = useResizeObserver__default.default(),
5054
+ ref = _p.ref,
5055
+ _q = _p.width,
5056
+ width = _q === void 0 ? 1 : _q,
5057
+ _r = _p.height,
5058
+ height = _r === void 0 ? 1 : _r;
5059
+ var _s = useIdCaptureState(),
5060
+ state = _s[0],
5061
+ dispatch = _s[1];
5062
+ var _t = useCameraStore(),
5063
+ camera = _t.camera,
5064
+ isRearFacing = _t.isRearFacing;
5160
5065
  var _u = React.useContext(IdCaptureModelsContext),
5161
5066
  modelsReady = _u.ready,
5162
5067
  setThresholds = _u.setThresholds,
@@ -5268,17 +5173,16 @@ var IdCapture = function IdCapture(_a) {
5268
5173
  classNames: classNames.overrideWrongDocumentTypeGuidanceDialog,
5269
5174
  verbiage: rawVerbiage.overrideWrongDocumentTypeGuidanceDialog
5270
5175
  }))), debugMode && ( /*#__PURE__*/React__namespace.default.createElement(DebugBoundingBoxOverlay, {
5271
- "$flipX": !((_j = cameraRef.current) === null || _j === void 0 ? void 0 : _j.isRearFacing),
5176
+ "$flipX": !isRearFacing,
5272
5177
  scaling: debugScalingDetails
5273
5178
  }, state.detectedObjects.map(function (obj, i) {
5274
- var _a;
5275
5179
  return /*#__PURE__*/React__namespace.default.createElement(IdCaptureDetectedObjectDebugBox, {
5276
5180
  key: i,
5277
5181
  obj: obj,
5278
5182
  scaling: debugScalingDetails,
5279
- flipX: !((_a = cameraRef.current) === null || _a === void 0 ? void 0 : _a.isRearFacing)
5183
+ flipX: !isRearFacing
5280
5184
  });
5281
- }))), debugMode && ( /*#__PURE__*/React__namespace.default.createElement(DebugStatsPane, null, cameraRef.current ? ( /*#__PURE__*/React__namespace.default.createElement(React__namespace.default.Fragment, null, "\u2705 Camera: ", cameraRef.current.label, " (", cameraRef.current.width, "x", cameraRef.current.height, ")")) : '❌ Camera not ready', /*#__PURE__*/React__namespace.default.createElement("br", null), state.frameCaptureRate > 0.75 ? '✅' : '👎', " Frame Rate:", ' ', Math.round((state.frameCaptureRate + Number.EPSILON) * 1000) / 1000, ' ', "fps (", detectionTime, "ms doc detect, ", focusPredictionTime, "ms focus)", /*#__PURE__*/React__namespace.default.createElement("br", null), modelsReady ? ( /*#__PURE__*/React__namespace.default.createElement(React__namespace.default.Fragment, null, state.detectionThresholdMet ? '✅' : '❌', " Detected Document Type: ", state.detectedDocumentType, /*#__PURE__*/React__namespace.default.createElement("br", null), state.idCardFrontDetectionThresholdMet ? '✅' : '❌', " ID Card Front Score: ", state.idCardFrontDetectionScore.toFixed(3), /*#__PURE__*/React__namespace.default.createElement("br", null), state.idCardBackDetectionThresholdMet ? '✅' : '❌', " ID Card Back Score: ", state.idCardBackDetectionScore.toFixed(3), /*#__PURE__*/React__namespace.default.createElement("br", null), state.passportDetectionThresholdMet ? '✅' : '❌', " Passport Score: ", state.passportDetectionScore.toFixed(3), /*#__PURE__*/React__namespace.default.createElement("br", null), state.focusThresholdMet ? '✅' : '❌', " Focus Score:", ' ', state.focusScore.toFixed(3), /*#__PURE__*/React__namespace.default.createElement("br", null), state.documentInBounds ? '✅' : '❌', " Document In Bounds", /*#__PURE__*/React__namespace.default.createElement("br", null), state.documentIsStable ? '✅' : '❌', " Document Is Stable", /*#__PURE__*/React__namespace.default.createElement("br", null), state.goodFramesThresholdMet ? '✅' : '❌', " Good Frame Count:", ' ', state.goodFramesCount, "/", state.goodFramesThreshold)) : ( /*#__PURE__*/React__namespace.default.createElement(React__namespace.default.Fragment, null, "\u274C Models not ready")))));
5185
+ }))), debugMode && ( /*#__PURE__*/React__namespace.default.createElement(DebugStatsPane, null, camera ? ( /*#__PURE__*/React__namespace.default.createElement(React__namespace.default.Fragment, null, "\u2705 Camera: ", camera.label, " (", camera.width, "x", camera.height, ")")) : '❌ Camera not ready', /*#__PURE__*/React__namespace.default.createElement("br", null), state.frameCaptureRate > 0.75 ? '✅' : '👎', " Frame Rate:", ' ', Math.round((state.frameCaptureRate + Number.EPSILON) * 1000) / 1000, ' ', "fps (", detectionTime, "ms doc detect, ", focusPredictionTime, "ms focus)", /*#__PURE__*/React__namespace.default.createElement("br", null), modelsReady ? ( /*#__PURE__*/React__namespace.default.createElement(React__namespace.default.Fragment, null, state.detectionThresholdMet ? '✅' : '❌', " Detected Document Type: ", state.detectedDocumentType, /*#__PURE__*/React__namespace.default.createElement("br", null), state.idCardFrontDetectionThresholdMet ? '✅' : '❌', " ID Card Front Score: ", state.idCardFrontDetectionScore.toFixed(3), /*#__PURE__*/React__namespace.default.createElement("br", null), state.idCardBackDetectionThresholdMet ? '✅' : '❌', " ID Card Back Score: ", state.idCardBackDetectionScore.toFixed(3), /*#__PURE__*/React__namespace.default.createElement("br", null), state.passportDetectionThresholdMet ? '✅' : '❌', " Passport Score: ", state.passportDetectionScore.toFixed(3), /*#__PURE__*/React__namespace.default.createElement("br", null), state.focusThresholdMet ? '✅' : '❌', " Focus Score:", ' ', state.focusScore.toFixed(3), /*#__PURE__*/React__namespace.default.createElement("br", null), state.documentInBounds ? '✅' : '❌', " Document In Bounds", /*#__PURE__*/React__namespace.default.createElement("br", null), state.documentIsStable ? '✅' : '❌', " Document Is Stable", /*#__PURE__*/React__namespace.default.createElement("br", null), state.goodFramesThresholdMet ? '✅' : '❌', " Good Frame Count:", ' ', state.goodFramesCount, "/", state.goodFramesThreshold)) : ( /*#__PURE__*/React__namespace.default.createElement(React__namespace.default.Fragment, null, "\u274C Models not ready")))));
5282
5186
  };
5283
5187
  var timeSince = function timeSince(t) {
5284
5188
  if (!t) return 0;
@@ -5295,7 +5199,9 @@ var CameraAccessDeniedOverlay = function CameraAccessDeniedOverlay(_a) {
5295
5199
  colors = _e === void 0 ? {} : _e,
5296
5200
  _f = _a.verbiage,
5297
5201
  rawVerbiage = _f === void 0 ? {} : _f;
5298
- var requestCameraAccess = React.useContext(CameraStateContext).requestCameraAccess;
5202
+ var requestCameraAccess = useCameraStore(function (state) {
5203
+ return state.requestCameraAccess;
5204
+ });
5299
5205
  assets.imageUrl || (assets.imageUrl = DEFAULT_CDN_URL + '/camera-disable-icon.png');
5300
5206
  var verbiage = useTranslations(rawVerbiage, {
5301
5207
  headingText: 'Your camera permission is disabled',
@@ -5324,13 +5230,13 @@ var CameraAccessDeniedOverlay = function CameraAccessDeniedOverlay(_a) {
5324
5230
  finished: true
5325
5231
  }, verbiage.retryBtnText)));
5326
5232
  };
5327
- var StyledOverlayInner$3 = styled__default.default(OverlayInner$2)(templateObject_1$A || (templateObject_1$A = __makeTemplateObject(["\n max-width: 500px;\n height: auto;\n margin: auto;\n"], ["\n max-width: 500px;\n height: auto;\n margin: auto;\n"])));
5328
- var StyledOverlayImageContainer$3 = styled__default.default(OverlayImageContainer)(templateObject_2$t || (templateObject_2$t = __makeTemplateObject(["\n flex-grow: 0;\n"], ["\n flex-grow: 0;\n"])));
5329
- var Description$4 = styled__default.default.p(templateObject_3$l || (templateObject_3$l = __makeTemplateObject(["\n line-height: 1.5;\n margin-bottom: 50px;\n"], ["\n line-height: 1.5;\n margin-bottom: 50px;\n"])));
5330
- var RetryButton$1 = styled__default.default(LoaderButton)(templateObject_4$f || (templateObject_4$f = __makeTemplateObject(["\n width: 200px;\n margin: 0 auto;\n"], ["\n width: 200px;\n margin: 0 auto;\n"])));
5331
- var templateObject_1$A, templateObject_2$t, templateObject_3$l, templateObject_4$f;
5233
+ var StyledOverlayInner$3 = styled__default.default(OverlayInner$2)(templateObject_1$C || (templateObject_1$C = __makeTemplateObject(["\n max-width: 500px;\n height: auto;\n margin: auto;\n"], ["\n max-width: 500px;\n height: auto;\n margin: auto;\n"])));
5234
+ var StyledOverlayImageContainer$3 = styled__default.default(OverlayImageContainer)(templateObject_2$v || (templateObject_2$v = __makeTemplateObject(["\n flex-grow: 0;\n"], ["\n flex-grow: 0;\n"])));
5235
+ var Description$4 = styled__default.default.p(templateObject_3$n || (templateObject_3$n = __makeTemplateObject(["\n line-height: 1.5;\n margin-bottom: 50px;\n"], ["\n line-height: 1.5;\n margin-bottom: 50px;\n"])));
5236
+ var RetryButton$1 = styled__default.default(LoaderButton)(templateObject_4$h || (templateObject_4$h = __makeTemplateObject(["\n width: 200px;\n margin: 0 auto;\n"], ["\n width: 200px;\n margin: 0 auto;\n"])));
5237
+ var templateObject_1$C, templateObject_2$v, templateObject_3$n, templateObject_4$h;
5332
5238
 
5333
- var ExitCaptureStyledButton = styled__default.default.button(templateObject_1$z || (templateObject_1$z = __makeTemplateObject(["\n position: absolute;\n top: 12px;\n right: 12px;\n font-size: 20px;\n width: 32px;\n height: 32px;\n font-family: monospace;\n z-index: 1002;\n border: none;\n border-radius: 4px;\n background: #ccc;\n cursor: pointer;\n padding: 8px;\n box-sizing: border-box;\n display: flex;\n\n &:hover {\n background: #ddd;\n }\n\n & > svg {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n }\n"], ["\n position: absolute;\n top: 12px;\n right: 12px;\n font-size: 20px;\n width: 32px;\n height: 32px;\n font-family: monospace;\n z-index: 1002;\n border: none;\n border-radius: 4px;\n background: #ccc;\n cursor: pointer;\n padding: 8px;\n box-sizing: border-box;\n display: flex;\n\n &:hover {\n background: #ddd;\n }\n\n & > svg {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n }\n"])));
5239
+ var ExitCaptureStyledButton = styled__default.default.button(templateObject_1$B || (templateObject_1$B = __makeTemplateObject(["\n position: absolute;\n top: 12px;\n right: 12px;\n font-size: 20px;\n width: 32px;\n height: 32px;\n font-family: monospace;\n z-index: 1002;\n border: none;\n border-radius: 4px;\n background: #ccc;\n cursor: pointer;\n padding: 8px;\n box-sizing: border-box;\n display: flex;\n\n &:hover {\n background: #ddd;\n }\n\n & > svg {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n }\n"], ["\n position: absolute;\n top: 12px;\n right: 12px;\n font-size: 20px;\n width: 32px;\n height: 32px;\n font-family: monospace;\n z-index: 1002;\n border: none;\n border-radius: 4px;\n background: #ccc;\n cursor: pointer;\n padding: 8px;\n box-sizing: border-box;\n display: flex;\n\n &:hover {\n background: #ddd;\n }\n\n & > svg {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n }\n"])));
5334
5240
  var ExitCaptureButton = function ExitCaptureButton(_a) {
5335
5241
  var onClick = _a.onClick,
5336
5242
  className = _a.className;
@@ -5374,10 +5280,10 @@ var ExitCaptureButton = function ExitCaptureButton(_a) {
5374
5280
  y2: "19.75"
5375
5281
  }))));
5376
5282
  };
5377
- var templateObject_1$z;
5283
+ var templateObject_1$B;
5378
5284
 
5379
- var ButtonsRow = styled__default.default.div(templateObject_1$y || (templateObject_1$y = __makeTemplateObject(["\n display: flex;\n gap: 0 15px;\n justify-content: center;\n"], ["\n display: flex;\n gap: 0 15px;\n justify-content: center;\n"])));
5380
- var templateObject_1$y;
5285
+ var ButtonsRow = styled__default.default.div(templateObject_1$A || (templateObject_1$A = __makeTemplateObject(["\n display: flex;\n gap: 0 15px;\n justify-content: center;\n"], ["\n display: flex;\n gap: 0 15px;\n justify-content: center;\n"])));
5286
+ var templateObject_1$A;
5381
5287
 
5382
5288
  function IdCaptureLoadingGraphic(props) {
5383
5289
  var isMobile = window.innerHeight > window.innerWidth;
@@ -5406,25 +5312,15 @@ function IdCaptureLoadingGraphicDesktop(_a) {
5406
5312
  var theme = styled.useTheme();
5407
5313
  var accentColor = (_d = (_c = (_b = theme.idCapture) === null || _b === void 0 ? void 0 : _b.loadingOverlay) === null || _c === void 0 ? void 0 : _c.loadingGraphicAccentColor) !== null && _d !== void 0 ? _d : 'var(--idm-color-positive-600)';
5408
5314
  var accentOpacity = (_g = (_f = (_e = theme.idCapture) === null || _e === void 0 ? void 0 : _e.loadingOverlay) === null || _f === void 0 ? void 0 : _f.loadingGraphicAccentOpacity) !== null && _g !== void 0 ? _g : 0.2;
5409
- return /*#__PURE__*/React__namespace.default.createElement("div", {
5410
- style: {
5411
- display: 'flex',
5412
- width: '100%',
5413
- height: '100%'
5414
- }
5415
- }, /*#__PURE__*/React__namespace.default.createElement("svg", {
5315
+ return /*#__PURE__*/React__namespace.default.createElement(LoadingGraphicWrapper, null, /*#__PURE__*/React__namespace.default.createElement(LoadingGraphicSvg, {
5416
5316
  className: className,
5417
5317
  width: width,
5418
5318
  height: height,
5319
+ "$frame": frame,
5320
+ "$borderColor": accentColor,
5419
5321
  viewBox: "0 0 698 452",
5420
5322
  fill: "none",
5421
- xmlns: "http://www.w3.org/2000/svg",
5422
- style: {
5423
- margin: 'auto',
5424
- transform: "scale(".concat(frame > 1 ? 1 : frame === 1 ? 1.25 : 0.75, ")"),
5425
- transition: 'transform 0.2s linear, border-width 0.2s linear',
5426
- border: "".concat(frame >= 5 ? 10 : 0, "px solid ").concat(accentColor)
5427
- }
5323
+ xmlns: "http://www.w3.org/2000/svg"
5428
5324
  }, /*#__PURE__*/React__namespace.default.createElement("g", {
5429
5325
  filter: frame === 1 ? 'url(#filter0_f_91_884)' : undefined
5430
5326
  }, /*#__PURE__*/React__namespace.default.createElement("path", {
@@ -5652,12 +5548,9 @@ function IdCaptureLoadingGraphicMobile(_a) {
5652
5548
  viewBox: "0 0 428 747",
5653
5549
  fill: "none",
5654
5550
  xmlns: "http://www.w3.org/2000/svg"
5655
- }, /*#__PURE__*/React__namespace.default.createElement("g", {
5551
+ }, /*#__PURE__*/React__namespace.default.createElement(LoadingGraphicCardGroup, {
5656
5552
  id: "card",
5657
- style: {
5658
- transform: "translate(".concat(frame < 1 ? '-500px' : '0', ", 0)"),
5659
- transition: 'transform 0.3s linear'
5660
- }
5553
+ "$offScreen": frame < 1
5661
5554
  }, /*#__PURE__*/React__namespace.default.createElement("path", {
5662
5555
  d: "M76.5001 181.274C76.5001 176.027 80.7534 171.774 86.0001 171.774L342 171.774C347.247 171.774 351.5 176.027 351.5 181.274L351.5 586C351.5 591.247 347.247 595.5 342 595.5L86.0001 595.5C80.7534 595.5 76.5001 591.247 76.5001 586L76.5001 181.274Z",
5663
5556
  fill: "#F3F3F3",
@@ -5840,13 +5733,10 @@ function IdCaptureLoadingGraphicMobile(_a) {
5840
5733
  strokeWidth: "5",
5841
5734
  strokeLinecap: "round",
5842
5735
  strokeLinejoin: "round"
5843
- }))), /*#__PURE__*/React__namespace.default.createElement("g", {
5736
+ }))), /*#__PURE__*/React__namespace.default.createElement(LoadingGraphicPhoneGroup, {
5844
5737
  id: "phone",
5845
5738
  clipPath: "url(#clip0_29_1778)",
5846
- style: {
5847
- transform: "translate(".concat(frame < 1 ? '40px' : '0', ", 0)"),
5848
- transition: 'transform 0.3s linear'
5849
- }
5739
+ "$offScreen": frame < 1
5850
5740
  }, /*#__PURE__*/React__namespace.default.createElement("rect", {
5851
5741
  x: "154",
5852
5742
  y: "693",
@@ -5874,6 +5764,21 @@ function IdCaptureLoadingGraphicMobile(_a) {
5874
5764
  fill: "white"
5875
5765
  }))));
5876
5766
  }
5767
+ var LoadingGraphicWrapper = styled__default.default.div(templateObject_1$z || (templateObject_1$z = __makeTemplateObject(["\n display: flex;\n width: 100%;\n height: 100%;\n"], ["\n display: flex;\n width: 100%;\n height: 100%;\n"])));
5768
+ var LoadingGraphicSvg = styled__default.default.svg(templateObject_2$u || (templateObject_2$u = __makeTemplateObject(["\n margin: auto;\n transform: scale(\n ", "\n );\n transform-style: preserve-3d;\n transition:\n transform 0.2s linear,\n border-width 0.2s linear;\n border: ", "px solid\n ", ";\n"], ["\n margin: auto;\n transform: scale(\n ", "\n );\n transform-style: preserve-3d;\n transition:\n transform 0.2s linear,\n border-width 0.2s linear;\n border: ", "px solid\n ", ";\n"])), function (props) {
5769
+ return props.$frame > 1 ? 1 : props.$frame === 1 ? 1.25 : 0.75;
5770
+ }, function (props) {
5771
+ return props.$frame >= 5 ? 10 : 0;
5772
+ }, function (props) {
5773
+ return props.$borderColor;
5774
+ });
5775
+ var LoadingGraphicCardGroup = styled__default.default.g(templateObject_3$m || (templateObject_3$m = __makeTemplateObject(["\n transform: translate(", ", 0);\n transform-style: preserve-3d;\n transition: transform 0.3s linear;\n"], ["\n transform: translate(", ", 0);\n transform-style: preserve-3d;\n transition: transform 0.3s linear;\n"])), function (props) {
5776
+ return props.$offScreen ? '-500px' : '0';
5777
+ });
5778
+ var LoadingGraphicPhoneGroup = styled__default.default.g(templateObject_4$g || (templateObject_4$g = __makeTemplateObject(["\n transform: translate(", ", 0);\n transform-style: preserve-3d;\n transition: transform 0.3s linear;\n"], ["\n transform: translate(", ", 0);\n transform-style: preserve-3d;\n transition: transform 0.3s linear;\n"])), function (props) {
5779
+ return props.$offScreen ? '40px' : '0';
5780
+ });
5781
+ var templateObject_1$z, templateObject_2$u, templateObject_3$m, templateObject_4$g;
5877
5782
 
5878
5783
  function LoadingListItemIndicator(_a) {
5879
5784
  var _b = _a.state,
@@ -5944,7 +5849,7 @@ var IdCaptureLoadingOverlayDefault = function IdCaptureLoadingOverlayDefault(_a)
5944
5849
  var _o = React.useContext(IdCaptureModelsContext),
5945
5850
  modelsReady = _o.ready,
5946
5851
  modelDownloadProgress = _o.modelDownloadProgress;
5947
- var _p = React.useContext(CameraStateContext),
5852
+ var _p = useCameraStore(),
5948
5853
  cameraReady = _p.cameraReady,
5949
5854
  cameraAccessDenied = _p.cameraAccessDenied,
5950
5855
  iphoneContinuityCameraAvailable = _p.iphoneContinuityCameraAvailable,
@@ -6068,24 +5973,24 @@ var IdCaptureLoadingOverlayDefault = function IdCaptureLoadingOverlayDefault(_a)
6068
5973
  }
6069
5974
  }, verbiage.continueText))))));
6070
5975
  };
6071
- var OverlayInner$1 = styled__default.default.div(templateObject_1$x || (templateObject_1$x = __makeTemplateObject(["\n height: 100dvh;\n display: flex;\n flex-direction: column;\n background: ", ";\n color: ", ";\n"], ["\n height: 100dvh;\n display: flex;\n flex-direction: column;\n background: ", ";\n color: ", ";\n"])), function (props) {
5976
+ var OverlayInner$1 = styled__default.default.div(templateObject_1$y || (templateObject_1$y = __makeTemplateObject(["\n height: 100dvh;\n display: flex;\n flex-direction: column;\n background: ", ";\n color: ", ";\n"], ["\n height: 100dvh;\n display: flex;\n flex-direction: column;\n background: ", ";\n color: ", ";\n"])), function (props) {
6072
5977
  var _a, _b, _c, _d;
6073
5978
  return (_d = (_c = (_b = (_a = props.theme) === null || _a === void 0 ? void 0 : _a.idCapture) === null || _b === void 0 ? void 0 : _b.loadingOverlay) === null || _c === void 0 ? void 0 : _c.backgroundColor) !== null && _d !== void 0 ? _d : '#ecedf3';
6074
5979
  }, function (props) {
6075
5980
  var _a, _b, _c, _d;
6076
5981
  return (_d = (_c = (_b = (_a = props.theme) === null || _a === void 0 ? void 0 : _a.idCapture) === null || _b === void 0 ? void 0 : _b.loadingOverlay) === null || _c === void 0 ? void 0 : _c.textColor) !== null && _d !== void 0 ? _d : 'black';
6077
5982
  });
6078
- var OverlayHeader$1 = styled__default.default.div(templateObject_2$s || (templateObject_2$s = __makeTemplateObject(["\n text-align: ", ";\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n ", "\n padding-bottom: 0;\n"], ["\n text-align: ", ";\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n ", "\n padding-bottom: 0;\n"])), function (props) {
5983
+ var OverlayHeader$1 = styled__default.default.div(templateObject_2$t || (templateObject_2$t = __makeTemplateObject(["\n text-align: ", ";\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n ", "\n padding-bottom: 0;\n"], ["\n text-align: ", ";\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n ", "\n padding-bottom: 0;\n"])), function (props) {
6079
5984
  var _a;
6080
5985
  return (_a = props.theme.textAlign) !== null && _a !== void 0 ? _a : 'center';
6081
5986
  }, function (props) {
6082
5987
  return props.theme.padding ? "box-sizing: border-box; padding: ".concat(props.theme.padding, ";") : "";
6083
5988
  });
6084
- var StyledGuidanceMessage$2 = styled__default.default(GuidanceMessage)(templateObject_3$k || (templateObject_3$k = __makeTemplateObject(["\n padding: 16px 24px;\n margin-top: 16px;\n font-size: 18px;\n font-weight: bold;\n background: white;\n box-shadow:\n 0 1px 3px 0 rgb(0 0 0 / 0.1),\n 0 1px 2px -1px rgb(0 0 0 / 0.1);\n"], ["\n padding: 16px 24px;\n margin-top: 16px;\n font-size: 18px;\n font-weight: bold;\n background: white;\n box-shadow:\n 0 1px 3px 0 rgb(0 0 0 / 0.1),\n 0 1px 2px -1px rgb(0 0 0 / 0.1);\n"])));
6085
- var StyledOverlayImageContainer$2 = styled__default.default(OverlayImageContainer)(templateObject_4$e || (templateObject_4$e = __makeTemplateObject(["\n padding: 0 0 100px;\n\n & > svg {\n height: 100%;\n }\n"], ["\n padding: 0 0 100px;\n\n & > svg {\n height: 100%;\n }\n"])));
6086
- var ContinuityCameraCheckboxContainer$1 = styled__default.default.div(templateObject_5$9 || (templateObject_5$9 = __makeTemplateObject(["\n position: fixed;\n bottom: 120px;\n width: 100dvw;\n display: flex;\n"], ["\n position: fixed;\n bottom: 120px;\n width: 100dvw;\n display: flex;\n"])));
6087
- var ContinuityCameraCheckboxInner = styled__default.default(GuidanceMessage)(templateObject_6$7 || (templateObject_6$7 = __makeTemplateObject(["\n padding: 12px 18px;\n margin: 0 auto;\n font-size: 14px;\n font-weight: bold;\n background: white;\n box-shadow:\n 0 1px 3px 0 rgb(0 0 0 / 0.1),\n 0 1px 2px -1px rgb(0 0 0 / 0.1);\n"], ["\n padding: 12px 18px;\n margin: 0 auto;\n font-size: 14px;\n font-weight: bold;\n background: white;\n box-shadow:\n 0 1px 3px 0 rgb(0 0 0 / 0.1),\n 0 1px 2px -1px rgb(0 0 0 / 0.1);\n"])));
6088
- var ContinuityCameraCheckbox$1 = styled__default.default.input(templateObject_7$4 || (templateObject_7$4 = __makeTemplateObject(["\n margin-right: 8px;\n"], ["\n margin-right: 8px;\n"])));
5989
+ var StyledGuidanceMessage$2 = styled__default.default(GuidanceMessage)(templateObject_3$l || (templateObject_3$l = __makeTemplateObject(["\n padding: 16px 24px;\n margin-top: 16px;\n font-size: 18px;\n font-weight: bold;\n background: white;\n box-shadow:\n 0 1px 3px 0 rgb(0 0 0 / 0.1),\n 0 1px 2px -1px rgb(0 0 0 / 0.1);\n"], ["\n padding: 16px 24px;\n margin-top: 16px;\n font-size: 18px;\n font-weight: bold;\n background: white;\n box-shadow:\n 0 1px 3px 0 rgb(0 0 0 / 0.1),\n 0 1px 2px -1px rgb(0 0 0 / 0.1);\n"])));
5990
+ var StyledOverlayImageContainer$2 = styled__default.default(OverlayImageContainer)(templateObject_4$f || (templateObject_4$f = __makeTemplateObject(["\n padding: 0 0 100px;\n\n & > svg {\n height: 100%;\n }\n"], ["\n padding: 0 0 100px;\n\n & > svg {\n height: 100%;\n }\n"])));
5991
+ var ContinuityCameraCheckboxContainer$1 = styled__default.default.div(templateObject_5$a || (templateObject_5$a = __makeTemplateObject(["\n position: fixed;\n bottom: 120px;\n width: 100dvw;\n display: flex;\n"], ["\n position: fixed;\n bottom: 120px;\n width: 100dvw;\n display: flex;\n"])));
5992
+ var ContinuityCameraCheckboxInner = styled__default.default(GuidanceMessage)(templateObject_6$8 || (templateObject_6$8 = __makeTemplateObject(["\n padding: 12px 18px;\n margin: 0 auto;\n font-size: 14px;\n font-weight: bold;\n background: white;\n box-shadow:\n 0 1px 3px 0 rgb(0 0 0 / 0.1),\n 0 1px 2px -1px rgb(0 0 0 / 0.1);\n"], ["\n padding: 12px 18px;\n margin: 0 auto;\n font-size: 14px;\n font-weight: bold;\n background: white;\n box-shadow:\n 0 1px 3px 0 rgb(0 0 0 / 0.1),\n 0 1px 2px -1px rgb(0 0 0 / 0.1);\n"])));
5993
+ var ContinuityCameraCheckbox$1 = styled__default.default.input(templateObject_7$5 || (templateObject_7$5 = __makeTemplateObject(["\n margin-right: 8px;\n"], ["\n margin-right: 8px;\n"])));
6089
5994
  var StyledButtonsRow$a = styled__default.default(ButtonsRow)(templateObject_8$2 || (templateObject_8$2 = __makeTemplateObject(["\n display: flex;\n flex-direction: row;\n padding: 15px 25px;\n height: 100px;\n color: ", ";\n ", "\n position: fixed;\n bottom: 0;\n left: 0;\n width: 100dvw;\n box-sizing: border-box;\n"], ["\n display: flex;\n flex-direction: row;\n padding: 15px 25px;\n height: 100px;\n color: ", ";\n ", "\n position: fixed;\n bottom: 0;\n left: 0;\n width: 100dvw;\n box-sizing: border-box;\n"])), function (props) {
6090
5995
  var _a, _b, _c, _d;
6091
5996
  return (_d = (_c = (_b = (_a = props.theme) === null || _a === void 0 ? void 0 : _a.idCapture) === null || _b === void 0 ? void 0 : _b.loadingOverlay) === null || _c === void 0 ? void 0 : _c.progressBarTextColor) !== null && _d !== void 0 ? _d : 'white';
@@ -6111,7 +6016,7 @@ var ProgressIndicator$1 = styled__default.default.span(templateObject_15$1 || (t
6111
6016
  var _a, _b, _c, _d;
6112
6017
  return (_d = (_c = (_b = (_a = props.theme) === null || _a === void 0 ? void 0 : _a.idCapture) === null || _b === void 0 ? void 0 : _b.loadingOverlay) === null || _c === void 0 ? void 0 : _c.progressBarIndicatorColor) !== null && _d !== void 0 ? _d : 'var(--idm-color-positive-600)';
6113
6018
  }, progressBarAnimation);
6114
- var CustomLoadingGraphic$1 = styled__default.default.img(templateObject_16 || (templateObject_16 = __makeTemplateObject([""], [""])));
6019
+ var CustomLoadingGraphic$1 = styled__default.default.img(templateObject_16 || (templateObject_16 = __makeTemplateObject(["\n transform-style: preserve-3d;\n"], ["\n transform-style: preserve-3d;\n"])));
6115
6020
  var ContinueButtonContainer$1 = styled__default.default.div(templateObject_17 || (templateObject_17 = __makeTemplateObject(["\n display: flex;\n"], ["\n display: flex;\n"])));
6116
6021
  var ContinueButton$1 = styled__default.default(LoaderButton)(templateObject_18 || (templateObject_18 = __makeTemplateObject(["\n margin: auto;\n white-space: nowrap;\n ", "\n ", "\n"], ["\n margin: auto;\n white-space: nowrap;\n ", "\n ", "\n"])), function (props) {
6117
6022
  var _a, _b, _c, _d, _e, _f;
@@ -6120,10 +6025,10 @@ var ContinueButton$1 = styled__default.default(LoaderButton)(templateObject_18 |
6120
6025
  var _a, _b, _c, _d, _e, _f;
6121
6026
  return ((_c = (_b = (_a = props.theme) === null || _a === void 0 ? void 0 : _a.idCapture) === null || _b === void 0 ? void 0 : _b.loadingOverlay) === null || _c === void 0 ? void 0 : _c.continueBtnBorder) ? "border: ".concat((_f = (_e = (_d = props.theme) === null || _d === void 0 ? void 0 : _d.idCapture) === null || _e === void 0 ? void 0 : _e.loadingOverlay) === null || _f === void 0 ? void 0 : _f.continueBtnBorder, ";") : '';
6122
6027
  });
6123
- var templateObject_1$x, templateObject_2$s, templateObject_3$k, templateObject_4$e, templateObject_5$9, templateObject_6$7, templateObject_7$4, templateObject_8$2, templateObject_9$2, templateObject_10$1, templateObject_11$1, templateObject_12$1, templateObject_13$1, templateObject_14$1, templateObject_15$1, templateObject_16, templateObject_17, templateObject_18;
6028
+ var templateObject_1$y, templateObject_2$t, templateObject_3$l, templateObject_4$f, templateObject_5$a, templateObject_6$8, templateObject_7$5, templateObject_8$2, templateObject_9$2, templateObject_10$1, templateObject_11$1, templateObject_12$1, templateObject_13$1, templateObject_14$1, templateObject_15$1, templateObject_16, templateObject_17, templateObject_18;
6124
6029
 
6125
- var ContinuityCameraCheckboxContainer = styled__default.default.div(templateObject_1$w || (templateObject_1$w = __makeTemplateObject(["\n margin-top: 15px;\n margin-bottom: 15px;\n"], ["\n margin-top: 15px;\n margin-bottom: 15px;\n"])));
6126
- var ContinuityCameraCheckbox = styled__default.default.input(templateObject_2$r || (templateObject_2$r = __makeTemplateObject(["\n margin-right: 8px;\n"], ["\n margin-right: 8px;\n"])));
6030
+ var ContinuityCameraCheckboxContainer = styled__default.default.div(templateObject_1$x || (templateObject_1$x = __makeTemplateObject(["\n margin-top: 15px;\n margin-bottom: 15px;\n"], ["\n margin-top: 15px;\n margin-bottom: 15px;\n"])));
6031
+ var ContinuityCameraCheckbox = styled__default.default.input(templateObject_2$s || (templateObject_2$s = __makeTemplateObject(["\n margin-right: 8px;\n"], ["\n margin-right: 8px;\n"])));
6127
6032
  var IdCaptureLoadingOverlayLegacy = function IdCaptureLoadingOverlayLegacy(_a) {
6128
6033
  var _b, _c, _d, _e;
6129
6034
  var onDismissed = _a.onDismissed,
@@ -6142,7 +6047,14 @@ var IdCaptureLoadingOverlayLegacy = function IdCaptureLoadingOverlayLegacy(_a) {
6142
6047
  var _l = React.useContext(IdCaptureModelsContext),
6143
6048
  modelsReady = _l.ready,
6144
6049
  modelDownloadProgress = _l.modelDownloadProgress;
6145
- var _m = React.useContext(CameraStateContext),
6050
+ var _m = useCameraStore(shallow.useShallow(function (state) {
6051
+ return {
6052
+ cameraReady: state.cameraReady,
6053
+ cameraAccessDenied: state.cameraAccessDenied,
6054
+ iphoneContinuityCameraAvailable: state.iphoneContinuityCameraAvailable,
6055
+ setIphoneContinuityCameraAllowed: state.setIphoneContinuityCameraAllowed
6056
+ };
6057
+ })),
6146
6058
  cameraReady = _m.cameraReady,
6147
6059
  cameraAccessDenied = _m.cameraAccessDenied,
6148
6060
  iphoneContinuityCameraAvailable = _m.iphoneContinuityCameraAvailable,
@@ -6234,7 +6146,7 @@ var IdCaptureLoadingOverlayLegacy = function IdCaptureLoadingOverlayLegacy(_a) {
6234
6146
  }
6235
6147
  }, cameraReady && modelsReady ? verbiage.continueText : modelsReady ? verbiage.cameraInitializingText : modelDownloadProgress >= 100 ? verbiage.modelsWarmingUpText : "".concat(verbiage.downloadingText, " (").concat(modelDownloadProgress, "%)"))));
6236
6148
  };
6237
- var templateObject_1$w, templateObject_2$r;
6149
+ var templateObject_1$x, templateObject_2$s;
6238
6150
 
6239
6151
  var components$1 = {
6240
6152
  "default": IdCaptureLoadingOverlayDefault,
@@ -6292,9 +6204,9 @@ var CapturedDocumentImg = function CapturedDocumentImg(_a) {
6292
6204
  });
6293
6205
  };
6294
6206
 
6295
- var Card = styled__default.default.div(templateObject_1$v || (templateObject_1$v = __makeTemplateObject(["\n background: white;\n border-radius: 8px;\n padding: 24px;\n box-shadow: 0 0 8px rgba(0, 0, 0, 0.1);\n margin: auto;\n max-width: min(500px, 100dvw - 48px);\n max-height: 100%;\n overflow: auto;\n box-sizing: border-box;\n"], ["\n background: white;\n border-radius: 8px;\n padding: 24px;\n box-shadow: 0 0 8px rgba(0, 0, 0, 0.1);\n margin: auto;\n max-width: min(500px, 100dvw - 48px);\n max-height: 100%;\n overflow: auto;\n box-sizing: border-box;\n"])));
6296
- var FlexCard = styled__default.default(Card)(templateObject_2$q || (templateObject_2$q = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n"], ["\n display: flex;\n flex-direction: column;\n"])));
6297
- var templateObject_1$v, templateObject_2$q;
6207
+ var Card = styled__default.default.div(templateObject_1$w || (templateObject_1$w = __makeTemplateObject(["\n background: white;\n border-radius: 8px;\n padding: 24px;\n box-shadow: 0 0 8px rgba(0, 0, 0, 0.1);\n margin: auto;\n max-width: min(500px, 100dvw - 48px);\n max-height: 100%;\n overflow: auto;\n box-sizing: border-box;\n"], ["\n background: white;\n border-radius: 8px;\n padding: 24px;\n box-shadow: 0 0 8px rgba(0, 0, 0, 0.1);\n margin: auto;\n max-width: min(500px, 100dvw - 48px);\n max-height: 100%;\n overflow: auto;\n box-sizing: border-box;\n"])));
6208
+ var FlexCard = styled__default.default(Card)(templateObject_2$r || (templateObject_2$r = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n"], ["\n display: flex;\n flex-direction: column;\n"])));
6209
+ var templateObject_1$w, templateObject_2$r;
6298
6210
 
6299
6211
  var IdCaptureSuccess = function IdCaptureSuccess(_a) {
6300
6212
  var capturedDocuments = _a.capturedDocuments,
@@ -6369,13 +6281,13 @@ var IdCaptureSuccess = function IdCaptureSuccess(_a) {
6369
6281
  finished: true
6370
6282
  }, verbiage.retryText)))));
6371
6283
  };
6372
- var Heading$a = styled__default.default.h1(templateObject_1$u || (templateObject_1$u = __makeTemplateObject(["\n font-size: 1.5rem;\n margin-top: 0;\n margin-bottom: 1.5rem;\n"], ["\n font-size: 1.5rem;\n margin-top: 0;\n margin-bottom: 1.5rem;\n"])));
6373
- var ImagesContainer = styled__default.default(OverlayImageContainer)(templateObject_2$p || (templateObject_2$p = __makeTemplateObject(["\n flex-grow: 1;\n overflow-y: auto;\n padding-bottom: 0;\n max-width: 100%;\n"], ["\n flex-grow: 1;\n overflow-y: auto;\n padding-bottom: 0;\n max-width: 100%;\n"])));
6374
- var ImageRow = styled__default.default(OverlayImageRow)(templateObject_3$j || (templateObject_3$j = __makeTemplateObject(["\n max-width: 100%;\n flex-direction: column;\n display: grid;\n grid-gap: 12px;\n //grid-template-columns: 1fr 1fr;\n"], ["\n max-width: 100%;\n flex-direction: column;\n display: grid;\n grid-gap: 12px;\n //grid-template-columns: 1fr 1fr;\n"])));
6375
- var ImageCol$1 = styled__default.default.div(templateObject_4$d || (templateObject_4$d = __makeTemplateObject(["\n width: 100%;\n max-height: none !important;\n"], ["\n width: 100%;\n max-height: none !important;\n"])));
6376
- var StyledImage = styled__default.default(CapturedDocumentImg)(templateObject_5$8 || (templateObject_5$8 = __makeTemplateObject(["\n width: 100%;\n border-radius: 12px;\n"], ["\n width: 100%;\n border-radius: 12px;\n"])));
6377
- var DebugPre = styled__default.default.pre(templateObject_6$6 || (templateObject_6$6 = __makeTemplateObject(["\n text-align: left;\n max-width: min(450px, 100dvw - 100px);\n overflow-x: auto;\n"], ["\n text-align: left;\n max-width: min(450px, 100dvw - 100px);\n overflow-x: auto;\n"])));
6378
- var templateObject_1$u, templateObject_2$p, templateObject_3$j, templateObject_4$d, templateObject_5$8, templateObject_6$6;
6284
+ var Heading$a = styled__default.default.h1(templateObject_1$v || (templateObject_1$v = __makeTemplateObject(["\n font-size: 1.5rem;\n margin-top: 0;\n margin-bottom: 1.5rem;\n"], ["\n font-size: 1.5rem;\n margin-top: 0;\n margin-bottom: 1.5rem;\n"])));
6285
+ var ImagesContainer = styled__default.default(OverlayImageContainer)(templateObject_2$q || (templateObject_2$q = __makeTemplateObject(["\n flex-grow: 1;\n overflow-y: auto;\n padding-bottom: 0;\n max-width: 100%;\n"], ["\n flex-grow: 1;\n overflow-y: auto;\n padding-bottom: 0;\n max-width: 100%;\n"])));
6286
+ var ImageRow = styled__default.default(OverlayImageRow)(templateObject_3$k || (templateObject_3$k = __makeTemplateObject(["\n max-width: 100%;\n flex-direction: column;\n display: grid;\n grid-gap: 12px;\n //grid-template-columns: 1fr 1fr;\n"], ["\n max-width: 100%;\n flex-direction: column;\n display: grid;\n grid-gap: 12px;\n //grid-template-columns: 1fr 1fr;\n"])));
6287
+ var ImageCol$1 = styled__default.default.div(templateObject_4$e || (templateObject_4$e = __makeTemplateObject(["\n width: 100%;\n max-height: none !important;\n"], ["\n width: 100%;\n max-height: none !important;\n"])));
6288
+ var StyledImage = styled__default.default(CapturedDocumentImg)(templateObject_5$9 || (templateObject_5$9 = __makeTemplateObject(["\n width: 100%;\n border-radius: 12px;\n"], ["\n width: 100%;\n border-radius: 12px;\n"])));
6289
+ var DebugPre = styled__default.default.pre(templateObject_6$7 || (templateObject_6$7 = __makeTemplateObject(["\n text-align: left;\n max-width: min(450px, 100dvw - 100px);\n overflow-x: auto;\n"], ["\n text-align: left;\n max-width: min(450px, 100dvw - 100px);\n overflow-x: auto;\n"])));
6290
+ var templateObject_1$v, templateObject_2$q, templateObject_3$k, templateObject_4$e, templateObject_5$9, templateObject_6$7;
6379
6291
 
6380
6292
  function useShowSuccessScreen(skipSuccessScreen, successScreenReady, onDoneCallback) {
6381
6293
  var _this = this;
@@ -6427,10 +6339,10 @@ function resetCanvasDimensions(canvas) {
6427
6339
  canvas.style.height = '0';
6428
6340
  }
6429
6341
 
6430
- var IdCardGuideImageContainer = styled__default.default(IdCardBorder)(templateObject_1$t || (templateObject_1$t = __makeTemplateObject(["\n position: relative;\n ", "\n box-sizing: border-box;\n"], ["\n position: relative;\n ", "\n box-sizing: border-box;\n"])), function (props) {
6342
+ var IdCardGuideImageContainer = styled__default.default(IdCardBorder)(templateObject_1$u || (templateObject_1$u = __makeTemplateObject(["\n position: relative;\n ", "\n box-sizing: border-box;\n"], ["\n position: relative;\n ", "\n box-sizing: border-box;\n"])), function (props) {
6431
6343
  return props.$isVisible ? '' : 'opacity: 0;';
6432
6344
  });
6433
- var IdCardGuideImage = styled__default.default.img(templateObject_2$o || (templateObject_2$o = __makeTemplateObject(["\n ", "\n ", "\n"], ["\n ", "\n ", "\n"])), function (props) {
6345
+ var IdCardGuideImage = styled__default.default.img(templateObject_2$p || (templateObject_2$p = __makeTemplateObject(["\n transform-style: preserve-3d;\n ", "\n ", "\n"], ["\n transform-style: preserve-3d;\n ", "\n ", "\n"])), function (props) {
6434
6346
  return props.$isMirrored ? 'transform: scaleX(-1);' : '';
6435
6347
  }, function (props) {
6436
6348
  return props.$isInvisible ? 'opacity: 0;' : '';
@@ -6572,16 +6484,16 @@ function IdCardBorderSvg(_a) {
6572
6484
  className: isProgressBar ? "idmSdkProgressBorder ".concat(progressPaused ? 'idmSdkProgressPaused' : '') : ''
6573
6485
  }));
6574
6486
  }
6575
- var IdCardBorderContainer = styled__default.default.div(templateObject_3$i || (templateObject_3$i = __makeTemplateObject(["\n & > .idmSdkWaves {\n position: absolute;\n animation: ", " 2s ease-out infinite;\n\n &:nth-child(2) {\n animation-delay: 0.66s;\n }\n\n &:nth-child(3) {\n animation-delay: 1.33s;\n }\n }\n"], ["\n & > .idmSdkWaves {\n position: absolute;\n animation: ", " 2s ease-out infinite;\n\n &:nth-child(2) {\n animation-delay: 0.66s;\n }\n\n &:nth-child(3) {\n animation-delay: 1.33s;\n }\n }\n"])), wavesAnimation);
6576
- var SvgOverlay = styled__default.default.svg(templateObject_4$c || (templateObject_4$c = __makeTemplateObject(["\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n"], ["\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n"])));
6577
- var IdCardBorderRect = styled__default.default.rect(templateObject_5$7 || (templateObject_5$7 = __makeTemplateObject(["\n &.idmSdkProgressBorder {\n animation: ", " ", "\n ", ";\n }\n\n &.idmSdkProgressPaused {\n animation-play-state: paused;\n }\n"], ["\n &.idmSdkProgressBorder {\n animation: ", " ", "\n ", ";\n }\n\n &.idmSdkProgressPaused {\n animation-play-state: paused;\n }\n"])), progressBorderAnimation, function (props) {
6487
+ var IdCardBorderContainer = styled__default.default.div(templateObject_3$j || (templateObject_3$j = __makeTemplateObject(["\n & > .idmSdkWaves {\n position: absolute;\n animation: ", " 2s ease-out infinite;\n transform-style: preserve-3d;\n\n &:nth-child(2) {\n animation-delay: 0.66s;\n }\n\n &:nth-child(3) {\n animation-delay: 1.33s;\n }\n }\n"], ["\n & > .idmSdkWaves {\n position: absolute;\n animation: ", " 2s ease-out infinite;\n transform-style: preserve-3d;\n\n &:nth-child(2) {\n animation-delay: 0.66s;\n }\n\n &:nth-child(3) {\n animation-delay: 1.33s;\n }\n }\n"])), wavesAnimation);
6488
+ var SvgOverlay = styled__default.default.svg(templateObject_4$d || (templateObject_4$d = __makeTemplateObject(["\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n"], ["\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n pointer-events: none;\n"])));
6489
+ var IdCardBorderRect = styled__default.default.rect(templateObject_5$8 || (templateObject_5$8 = __makeTemplateObject(["\n &.idmSdkProgressBorder {\n animation: ", " ", "\n ", ";\n }\n\n &.idmSdkProgressPaused {\n animation-play-state: paused;\n }\n"], ["\n &.idmSdkProgressBorder {\n animation: ", " ", "\n ", ";\n }\n\n &.idmSdkProgressPaused {\n animation-play-state: paused;\n }\n"])), progressBorderAnimation, function (props) {
6578
6490
  var _a;
6579
6491
  return (_a = props.$speed) !== null && _a !== void 0 ? _a : '3s';
6580
6492
  }, function (props) {
6581
6493
  var _a;
6582
6494
  return (_a = props.$fillMode) !== null && _a !== void 0 ? _a : 'forwards';
6583
6495
  });
6584
- var templateObject_1$t, templateObject_2$o, templateObject_3$i, templateObject_4$c, templateObject_5$7;
6496
+ var templateObject_1$u, templateObject_2$p, templateObject_3$j, templateObject_4$d, templateObject_5$8;
6585
6497
 
6586
6498
  var defaultIdCaptureGuideImages = {
6587
6499
  portrait: {
@@ -6687,12 +6599,82 @@ function getOrientation(allowPortraitOnMobile) {
6687
6599
  return allowPortraitOnMobile && window.innerWidth < window.innerHeight ? 'portrait' : 'landscape';
6688
6600
  }
6689
6601
 
6690
- var FlipImageContainer = styled__default.default(IdCardGuideImageContainer)(templateObject_1$s || (templateObject_1$s = __makeTemplateObject(["\n backface-visibility: hidden;\n transition: transform ", "s;\n transform: ", ";\n transform-style: preserve-3d;\n position: absolute;\n display: block;\n top: 0;\n width: 100%;\n max-height: 100%;\n"], ["\n backface-visibility: hidden;\n transition: transform ", "s;\n transform: ", ";\n transform-style: preserve-3d;\n position: absolute;\n display: block;\n top: 0;\n width: 100%;\n max-height: 100%;\n"])), function (props) {
6602
+ var IdVideoCaptureFlipIdPrompt = function IdVideoCaptureFlipIdPrompt(_a) {
6603
+ var _b = _a.idCaptureGuideImages,
6604
+ idCaptureGuideImages = _b === void 0 ? defaultIdCaptureGuideImages : _b,
6605
+ _c = _a.classNames,
6606
+ classNames = _c === void 0 ? {} : _c,
6607
+ borderWidth = _a.borderWidth,
6608
+ borderColor = _a.borderColor,
6609
+ borderRadius = _a.borderRadius,
6610
+ imageStyle = _a.imageStyle;
6611
+ var isRearFacing = useCameraStore(function (state) {
6612
+ return state.isRearFacing;
6613
+ });
6614
+ var isMirrored = !isRearFacing;
6615
+ var _d = React.useState(1),
6616
+ transitionTime = _d[0],
6617
+ setTransitionTime = _d[1];
6618
+ var _e = React.useState(0),
6619
+ rotationAngle = _e[0],
6620
+ setRotationAngle = _e[1];
6621
+ var frontTransforms = ["rotateY(".concat(rotationAngle, "deg)")];
6622
+ if (isMirrored) frontTransforms.push('scaleX(-1)');
6623
+ var backTransforms = ["rotateY(".concat(180 - rotationAngle, "deg)")];
6624
+ if (isMirrored) backTransforms.push('scaleX(-1)');
6625
+ React.useEffect(function () {
6626
+ var timeout;
6627
+ function doFlip() {
6628
+ setTransitionTime(1);
6629
+ setRotationAngle(180);
6630
+ timeout = setTimeout(function () {
6631
+ setTransitionTime(0);
6632
+ setRotationAngle(0);
6633
+ }, 1500);
6634
+ }
6635
+ var interval = setInterval(doFlip, 2500);
6636
+ timeout = setTimeout(doFlip, 250);
6637
+ return function () {
6638
+ clearInterval(interval);
6639
+ clearTimeout(timeout);
6640
+ };
6641
+ }, []);
6642
+ return /*#__PURE__*/React__namespace.default.createElement(React__namespace.default.Fragment, null, /*#__PURE__*/React__namespace.default.createElement(FlipImageContainer, {
6643
+ className: classNames.frontImageContainer,
6644
+ status: "disabled",
6645
+ borderWidth: borderWidth,
6646
+ borderColor: borderColor,
6647
+ borderRadius: borderRadius,
6648
+ "$transforms": frontTransforms.join(' '),
6649
+ "$transitionTime": transitionTime,
6650
+ "$isVisible": true
6651
+ }, /*#__PURE__*/React__namespace.default.createElement(IdCardGuideImage, {
6652
+ src: idCaptureGuideImages.landscape.SHOW_ID_FRONT.url,
6653
+ className: classNames.frontImage,
6654
+ alt: "",
6655
+ style: imageStyle
6656
+ })), /*#__PURE__*/React__namespace.default.createElement(FlipImageContainer, {
6657
+ className: classNames.backImageContainer,
6658
+ status: "disabled",
6659
+ borderWidth: borderWidth,
6660
+ borderColor: borderColor,
6661
+ borderRadius: borderRadius,
6662
+ "$transforms": backTransforms.join(' '),
6663
+ "$transitionTime": transitionTime,
6664
+ "$isVisible": true
6665
+ }, /*#__PURE__*/React__namespace.default.createElement(IdCardGuideImage, {
6666
+ src: idCaptureGuideImages.landscape.SHOW_ID_BACK.url,
6667
+ className: classNames.backImage,
6668
+ alt: "",
6669
+ style: imageStyle
6670
+ })));
6671
+ };
6672
+ var FlipImageContainer = styled__default.default(IdCardGuideImageContainer)(templateObject_1$t || (templateObject_1$t = __makeTemplateObject(["\n backface-visibility: hidden;\n transition: transform ", "s;\n transform: ", ";\n transform-style: preserve-3d;\n position: absolute;\n display: block;\n top: 0;\n width: 100%;\n max-height: 100%;\n"], ["\n backface-visibility: hidden;\n transition: transform ", "s;\n transform: ", ";\n transform-style: preserve-3d;\n position: absolute;\n display: block;\n top: 0;\n width: 100%;\n max-height: 100%;\n"])), function (props) {
6691
6673
  return props.$transitionTime;
6692
6674
  }, function (props) {
6693
6675
  return props.$transforms;
6694
6676
  });
6695
- var templateObject_1$s;
6677
+ var templateObject_1$t;
6696
6678
 
6697
6679
  var GuideOrientationContext = /*#__PURE__*/React.createContext({
6698
6680
  orientation: 'landscape',
@@ -6981,10 +6963,10 @@ var regionClsx = function regionClsx(classNames, which) {
6981
6963
  return v;
6982
6964
  }).join(' ');
6983
6965
  };
6984
- var StyledPageContainer = styled__default.default(PageContainerDiv)(templateObject_1$r || (templateObject_1$r = __makeTemplateObject(["\n z-index: 1000;\n overflow-y: hidden;\n"], ["\n z-index: 1000;\n overflow-y: hidden;\n"])));
6985
- var GuidesContainer = styled__default.default.div(templateObject_2$n || (templateObject_2$n = __makeTemplateObject(["\n display: flex;\n flex-flow: column nowrap;\n width: 100dvw;\n height: 100dvh;\n"], ["\n display: flex;\n flex-flow: column nowrap;\n width: 100dvw;\n height: 100dvh;\n"])));
6986
- var GuideCenterRow = styled__default.default.div(templateObject_3$h || (templateObject_3$h = __makeTemplateObject(["\n position: relative;\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-items: center;\n box-sizing: border-box;\n max-width: 100%;\n max-height: 100%;\n min-height: 0;\n flex: 1;\n"], ["\n position: relative;\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-items: center;\n box-sizing: border-box;\n max-width: 100%;\n max-height: 100%;\n min-height: 0;\n flex: 1;\n"])));
6987
- var GuideRegion = styled__default.default.div(templateObject_4$b || (templateObject_4$b = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n justify-content: end;\n width: 100%;\n position: relative;\n z-index: 1000;\n background: ", ";\n color: ", ";\n text-align: center;\n ", "\n ", "\n"], ["\n display: flex;\n flex-direction: column;\n justify-content: end;\n width: 100%;\n position: relative;\n z-index: 1000;\n background: ", ";\n color: ", ";\n text-align: center;\n ", "\n ", "\n"])), function (props) {
6966
+ var StyledPageContainer = styled__default.default(PageContainerDiv)(templateObject_1$s || (templateObject_1$s = __makeTemplateObject(["\n z-index: 1000;\n overflow-y: hidden;\n"], ["\n z-index: 1000;\n overflow-y: hidden;\n"])));
6967
+ var GuidesContainer = styled__default.default.div(templateObject_2$o || (templateObject_2$o = __makeTemplateObject(["\n display: flex;\n flex-flow: column nowrap;\n width: 100dvw;\n height: 100dvh;\n"], ["\n display: flex;\n flex-flow: column nowrap;\n width: 100dvw;\n height: 100dvh;\n"])));
6968
+ var GuideCenterRow = styled__default.default.div(templateObject_3$i || (templateObject_3$i = __makeTemplateObject(["\n position: relative;\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-items: center;\n box-sizing: border-box;\n max-width: 100%;\n max-height: 100%;\n min-height: 0;\n flex: 1;\n"], ["\n position: relative;\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-items: center;\n box-sizing: border-box;\n max-width: 100%;\n max-height: 100%;\n min-height: 0;\n flex: 1;\n"])));
6969
+ var GuideRegion = styled__default.default.div(templateObject_4$c || (templateObject_4$c = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n justify-content: end;\n width: 100%;\n position: relative;\n z-index: 1000;\n background: ", ";\n color: ", ";\n text-align: center;\n ", "\n ", "\n"], ["\n display: flex;\n flex-direction: column;\n justify-content: end;\n width: 100%;\n position: relative;\n z-index: 1000;\n background: ", ";\n color: ", ";\n text-align: center;\n ", "\n ", "\n"])), function (props) {
6988
6970
  var _a, _b, _c, _d, _e;
6989
6971
  return (_e = (_a = props.$maskColor) !== null && _a !== void 0 ? _a : (_d = (_c = (_b = props.theme) === null || _b === void 0 ? void 0 : _b.idCapture) === null || _c === void 0 ? void 0 : _c.guideOverlay) === null || _d === void 0 ? void 0 : _d.backgroundColor) !== null && _e !== void 0 ? _e : 'rgba(0, 0, 0, 0.5)';
6990
6972
  }, function (props) {
@@ -6995,13 +6977,13 @@ var GuideRegion = styled__default.default.div(templateObject_4$b || (templateObj
6995
6977
  }, function (props) {
6996
6978
  return props.$minHeight ? "min-height: ".concat(props.$minHeight, "px;") : "";
6997
6979
  });
6998
- var Spacer = styled__default.default(GuideRegion)(templateObject_5$6 || (templateObject_5$6 = __makeTemplateObject(["\n display: block;\n width: auto;\n"], ["\n display: block;\n width: auto;\n"])));
6999
- var GuideCenterRegion = styled__default.default.div(templateObject_6$5 || (templateObject_6$5 = __makeTemplateObject(["\n ", "\n ", "\n box-sizing: border-box;\n display: flex;\n flex: 1;\n max-height: 100%;\n height: 100%;\n"], ["\n ", "\n ", "\n box-sizing: border-box;\n display: flex;\n flex: 1;\n max-height: 100%;\n height: 100%;\n"])), function (props) {
6980
+ var Spacer = styled__default.default(GuideRegion)(templateObject_5$7 || (templateObject_5$7 = __makeTemplateObject(["\n display: block;\n width: auto;\n"], ["\n display: block;\n width: auto;\n"])));
6981
+ var GuideCenterRegion = styled__default.default.div(templateObject_6$6 || (templateObject_6$6 = __makeTemplateObject(["\n ", "\n ", "\n transform-style: preserve-3d;\n box-sizing: border-box;\n display: flex;\n flex: 1;\n max-height: 100%;\n height: 100%;\n"], ["\n ", "\n ", "\n transform-style: preserve-3d;\n box-sizing: border-box;\n display: flex;\n flex: 1;\n max-height: 100%;\n height: 100%;\n"])), function (props) {
7000
6982
  return props.$minWidth ? "min-width: ".concat(props.$minWidth, "px;") : "";
7001
6983
  }, function (props) {
7002
6984
  return props.$isMirrored ? 'transform: scaleX(-1);' : '';
7003
6985
  });
7004
- var GuideCenterBorder = styled__default.default.div(templateObject_7$3 || (templateObject_7$3 = __makeTemplateObject(["\n box-sizing: border-box;\n border: ", ";\n display: flex;\n flex: 1;\n justify-content: center;\n max-height: 100%;\n min-height: 0;\n position: relative;\n ", "\n"], ["\n box-sizing: border-box;\n border: ", ";\n display: flex;\n flex: 1;\n justify-content: center;\n max-height: 100%;\n min-height: 0;\n position: relative;\n ", "\n"])), function (props) {
6986
+ var GuideCenterBorder = styled__default.default.div(templateObject_7$4 || (templateObject_7$4 = __makeTemplateObject(["\n box-sizing: border-box;\n border: ", ";\n display: flex;\n flex: 1;\n justify-content: center;\n max-height: 100%;\n min-height: 0;\n position: relative;\n ", "\n"], ["\n box-sizing: border-box;\n border: ", ";\n display: flex;\n flex: 1;\n justify-content: center;\n max-height: 100%;\n min-height: 0;\n position: relative;\n ", "\n"])), function (props) {
7005
6987
  var _a, _b;
7006
6988
  return "".concat((_a = props.$borderWidth) !== null && _a !== void 0 ? _a : 4, "px solid ").concat((_b = props.$borderColor) !== null && _b !== void 0 ? _b : 'white');
7007
6989
  }, function (props) {
@@ -7009,7 +6991,7 @@ var GuideCenterBorder = styled__default.default.div(templateObject_7$3 || (templ
7009
6991
  });
7010
6992
  var GuideText = styled__default.default.span(templateObject_8$1 || (templateObject_8$1 = __makeTemplateObject(["\n align-content: center;\n margin-top: 12px;\n margin-bottom: 12px;\n"], ["\n align-content: center;\n margin-top: 12px;\n margin-bottom: 12px;\n"])));
7011
6993
  var GuideCenterInner = styled__default.default.div(templateObject_9$1 || (templateObject_9$1 = __makeTemplateObject(["\n position: relative;\n margin: auto;\n"], ["\n position: relative;\n margin: auto;\n"])));
7012
- var templateObject_1$r, templateObject_2$n, templateObject_3$h, templateObject_4$b, templateObject_5$6, templateObject_6$5, templateObject_7$3, templateObject_8$1, templateObject_9$1;
6994
+ var templateObject_1$s, templateObject_2$o, templateObject_3$i, templateObject_4$c, templateObject_5$7, templateObject_6$6, templateObject_7$4, templateObject_8$1, templateObject_9$1;
7013
6995
 
7014
6996
  var IdCaptureFitGuide = function IdCaptureFitGuide(_a) {
7015
6997
  var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
@@ -7152,36 +7134,37 @@ var IdCaptureFitGuide = function IdCaptureFitGuide(_a) {
7152
7134
  progress: progress
7153
7135
  }));
7154
7136
  };
7155
- var CanvasWrapper$1 = styled__default.default.div(templateObject_1$q || (templateObject_1$q = __makeTemplateObject(["\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n flex-grow: 1;\n background-clip: padding-box;\n box-shadow: inset 0 0 0 2px ", ";\n z-index: -1;\n"], ["\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n flex-grow: 1;\n background-clip: padding-box;\n box-shadow: inset 0 0 0 2px ", ";\n z-index: -1;\n"])), function (props) {
7137
+ var CanvasWrapper$1 = styled__default.default.div(templateObject_1$r || (templateObject_1$r = __makeTemplateObject(["\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n flex-grow: 1;\n background-clip: padding-box;\n box-shadow: inset 0 0 0 2px ", ";\n z-index: -1;\n"], ["\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n flex-grow: 1;\n background-clip: padding-box;\n box-shadow: inset 0 0 0 2px ", ";\n z-index: -1;\n"])), function (props) {
7156
7138
  return props.$maskColor;
7157
7139
  });
7158
- var Canvas$1 = styled__default.default.canvas(templateObject_2$m || (templateObject_2$m = __makeTemplateObject(["\n display: block;\n"], ["\n display: block;\n"])));
7159
- var templateObject_1$q, templateObject_2$m;
7140
+ var Canvas$1 = styled__default.default.canvas(templateObject_2$n || (templateObject_2$n = __makeTemplateObject(["\n display: block;\n"], ["\n display: block;\n"])));
7141
+ var templateObject_1$r, templateObject_2$n;
7160
7142
 
7161
7143
  function IdCaptureGuides(_a) {
7162
- var _b, _c;
7163
- var _d = _a.guideType,
7164
- guideType = _d === void 0 ? 'fit' : _d,
7165
- _e = _a.status,
7166
- status = _e === void 0 ? 'ready' : _e,
7167
- _f = _a.progress,
7168
- progress = _f === void 0 ? 0 : _f,
7169
- _g = _a.portraitGuidesOnMobile,
7170
- portraitGuidesOnMobile = _g === void 0 ? true : _g,
7171
- _h = _a.requestedAction,
7172
- requestedAction = _h === void 0 ? 'SHOW_ID_FRONT' : _h,
7173
- _j = _a.isBackToFront,
7174
- isBackToFront = _j === void 0 ? false : _j,
7175
- _k = _a.images,
7176
- images = _k === void 0 ? defaultIdCaptureGuideImages : _k,
7177
- _l = _a.classNames,
7178
- classNames = _l === void 0 ? {} : _l,
7179
- _m = _a.colors,
7180
- colors = _m === void 0 ? {} : _m,
7181
- _o = _a.verbiage,
7182
- rawVerbiage = _o === void 0 ? {} : _o;
7144
+ var _b = _a.guideType,
7145
+ guideType = _b === void 0 ? 'fit' : _b,
7146
+ _c = _a.status,
7147
+ status = _c === void 0 ? 'ready' : _c,
7148
+ _d = _a.progress,
7149
+ progress = _d === void 0 ? 0 : _d,
7150
+ _e = _a.portraitGuidesOnMobile,
7151
+ portraitGuidesOnMobile = _e === void 0 ? true : _e,
7152
+ _f = _a.requestedAction,
7153
+ requestedAction = _f === void 0 ? 'SHOW_ID_FRONT' : _f,
7154
+ _g = _a.isBackToFront,
7155
+ isBackToFront = _g === void 0 ? false : _g,
7156
+ _h = _a.images,
7157
+ images = _h === void 0 ? defaultIdCaptureGuideImages : _h,
7158
+ _j = _a.classNames,
7159
+ classNames = _j === void 0 ? {} : _j,
7160
+ _k = _a.colors,
7161
+ colors = _k === void 0 ? {} : _k,
7162
+ _l = _a.verbiage,
7163
+ rawVerbiage = _l === void 0 ? {} : _l;
7183
7164
  var state = useIdCaptureState()[0];
7184
- var cameraRef = React.useContext(CameraStateContext).cameraRef;
7165
+ var isRearFacing = useCameraStore(function (state) {
7166
+ return state.isRearFacing;
7167
+ });
7185
7168
  var verbiage = useTranslations(rawVerbiage, {
7186
7169
  instructionText: 'Scan the front of ID',
7187
7170
  capturingText: 'Capturing...',
@@ -7193,7 +7176,7 @@ function IdCaptureGuides(_a) {
7193
7176
  status: status,
7194
7177
  progress: progress,
7195
7178
  instruction: state.captureFailed ? verbiage.captureFailedText : state.capturing ? verbiage === null || verbiage === void 0 ? void 0 : verbiage.capturingText : verbiage.instructionText,
7196
- isMirrored: !((_b = cameraRef.current) === null || _b === void 0 ? void 0 : _b.isRearFacing),
7179
+ isMirrored: !isRearFacing,
7197
7180
  borderColor: state.isGoodFrame ? colors.guideBoxSatisfiedColor : colors.guideBoxUnsatisfiedColor,
7198
7181
  imageVisible: requestedAction === 'FLIP_ID' || !state.idCardFrontDetectionThresholdMet || !state.documentInBounds || state.documentTooClose
7199
7182
  })), guideType === 'fit' && ( /*#__PURE__*/React__namespace.default.createElement(IdCaptureFitGuide, {
@@ -7203,7 +7186,7 @@ function IdCaptureGuides(_a) {
7203
7186
  status: status,
7204
7187
  progress: progress,
7205
7188
  instruction: state.captureFailed ? verbiage.captureFailedText : state.capturing ? verbiage === null || verbiage === void 0 ? void 0 : verbiage.capturingText : verbiage.instructionText,
7206
- isMirrored: !((_c = cameraRef.current) === null || _c === void 0 ? void 0 : _c.isRearFacing),
7189
+ isMirrored: !isRearFacing,
7207
7190
  isBackToFront: isBackToFront,
7208
7191
  portraitGuidesOnMobile: portraitGuidesOnMobile,
7209
7192
  borderColor: state.isGoodFrame ? colors.guideBoxSatisfiedColor : colors.guideBoxUnsatisfiedColor,
@@ -7296,53 +7279,11 @@ var SelfieProgressPreview = function SelfieProgressPreview(_a) {
7296
7279
  onError: onError
7297
7280
  })));
7298
7281
  };
7299
- var StyledSpinner = styled__default.default(Spinner)(templateObject_1$p || (templateObject_1$p = __makeTemplateObject(["\n position: relative;\n top: 4px;\n left: -3px;\n margin: 0 3px 0 -12px;\n"], ["\n position: relative;\n top: 4px;\n left: -3px;\n margin: 0 3px 0 -12px;\n"])));
7300
- var ImagePreviewWrapper = styled__default.default.div(templateObject_2$l || (templateObject_2$l = __makeTemplateObject(["\n position: absolute;\n display: flex;\n flex-direction: column;\n height: 33%;\n bottom: 12px;\n right: 12px;\n"], ["\n position: absolute;\n display: flex;\n flex-direction: column;\n height: 33%;\n bottom: 12px;\n right: 12px;\n"])));
7301
- var ImagePreviewText = styled__default.default.div(templateObject_3$g || (templateObject_3$g = __makeTemplateObject(["\n display: block;\n position: absolute;\n top: -32px;\n font:\n 14px -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n Roboto,\n Helvetica,\n Arial,\n sans-serif,\n 'Apple Color Emoji',\n 'Segoe UI Emoji',\n 'Segoe UI Symbol';\n color: white;\n text-align: center;\n margin: 0 auto;\n width: 100%;\n"], ["\n display: block;\n position: absolute;\n top: -32px;\n font:\n 14px -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n Roboto,\n Helvetica,\n Arial,\n sans-serif,\n 'Apple Color Emoji',\n 'Segoe UI Emoji',\n 'Segoe UI Symbol';\n color: white;\n text-align: center;\n margin: 0 auto;\n width: 100%;\n"])));
7302
- var ImagePreviewImageWrapper = styled__default.default.div(templateObject_4$a || (templateObject_4$a = __makeTemplateObject(["\n position: relative;\n height: calc(100% - 8px);\n padding: 4px;\n border-radius: 4px;\n background: white;\n\n & > img {\n border-radius: 4px;\n width: auto;\n max-height: 100%;\n }\n"], ["\n position: relative;\n height: calc(100% - 8px);\n padding: 4px;\n border-radius: 4px;\n background: white;\n\n & > img {\n border-radius: 4px;\n width: auto;\n max-height: 100%;\n }\n"])));
7303
- var templateObject_1$p, templateObject_2$l, templateObject_3$g, templateObject_4$a;
7304
-
7305
- var CameraVideoTag = function CameraVideoTag(_a) {
7306
- var _b;
7307
- var className = _a.className;
7308
- var _c = React.useContext(CameraStateContext),
7309
- videoRef = _c.videoRef,
7310
- setVideoLoaded = _c.setVideoLoaded,
7311
- onVideoUnmounted = _c.onVideoUnmounted,
7312
- cameraRef = _c.cameraRef;
7313
- React.useEffect(function notifyCameraProviderOfUnmount() {
7314
- var videoElement = videoRef.current;
7315
- if (!videoElement) return;
7316
- return function () {
7317
- onVideoUnmounted(videoElement);
7318
- };
7319
- }, [onVideoUnmounted, videoRef]);
7320
- React.useEffect(function setVideoLoadedToFalseOnMount() {
7321
- setVideoLoaded(false);
7322
- }, [setVideoLoaded]);
7323
- React.useEffect(function attachCameraStreamToVideoTagWhenReady() {
7324
- var _a;
7325
- if (videoRef.current && ((_a = cameraRef.current) === null || _a === void 0 ? void 0 : _a.stream)) {
7326
- videoRef.current.srcObject = cameraRef.current.stream;
7327
- }
7328
- }, [cameraRef, videoRef]);
7329
- var onLoadedData = React.useCallback(function () {
7330
- setVideoLoaded(true);
7331
- }, [setVideoLoaded]);
7332
- return /*#__PURE__*/React__namespace.default.createElement(FullscreenVideoTag, {
7333
- className: className,
7334
- autoPlay: true,
7335
- playsInline: true,
7336
- muted: true,
7337
- ref: videoRef,
7338
- onLoadedData: onLoadedData,
7339
- "$isRearFacing": (_b = cameraRef.current) === null || _b === void 0 ? void 0 : _b.isRearFacing
7340
- });
7341
- };
7342
- var FullscreenVideoTag = styled__default.default.video(templateObject_1$o || (templateObject_1$o = __makeTemplateObject(["\n transform: ", ";\n min-width: 100%;\n min-height: 100%;\n width: auto;\n height: auto;\n max-width: 100%;\n max-height: 100%;\n object-fit: cover;\n background: black;\n z-index: -2;\n"], ["\n transform: ", ";\n min-width: 100%;\n min-height: 100%;\n width: auto;\n height: auto;\n max-width: 100%;\n max-height: 100%;\n object-fit: cover;\n background: black;\n z-index: -2;\n"])), function (props) {
7343
- return props.$isRearFacing ? '' : 'scaleX(-1)';
7344
- });
7345
- var templateObject_1$o;
7282
+ var StyledSpinner = styled__default.default(Spinner)(templateObject_1$q || (templateObject_1$q = __makeTemplateObject(["\n position: relative;\n top: 4px;\n left: -3px;\n margin: 0 3px 0 -12px;\n"], ["\n position: relative;\n top: 4px;\n left: -3px;\n margin: 0 3px 0 -12px;\n"])));
7283
+ var ImagePreviewWrapper = styled__default.default.div(templateObject_2$m || (templateObject_2$m = __makeTemplateObject(["\n position: absolute;\n display: flex;\n flex-direction: column;\n height: 33%;\n bottom: 12px;\n right: 12px;\n"], ["\n position: absolute;\n display: flex;\n flex-direction: column;\n height: 33%;\n bottom: 12px;\n right: 12px;\n"])));
7284
+ var ImagePreviewText = styled__default.default.div(templateObject_3$h || (templateObject_3$h = __makeTemplateObject(["\n display: block;\n position: absolute;\n top: -32px;\n font:\n 14px -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n Roboto,\n Helvetica,\n Arial,\n sans-serif,\n 'Apple Color Emoji',\n 'Segoe UI Emoji',\n 'Segoe UI Symbol';\n color: white;\n text-align: center;\n margin: 0 auto;\n width: 100%;\n"], ["\n display: block;\n position: absolute;\n top: -32px;\n font:\n 14px -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n Roboto,\n Helvetica,\n Arial,\n sans-serif,\n 'Apple Color Emoji',\n 'Segoe UI Emoji',\n 'Segoe UI Symbol';\n color: white;\n text-align: center;\n margin: 0 auto;\n width: 100%;\n"])));
7285
+ var ImagePreviewImageWrapper = styled__default.default.div(templateObject_4$b || (templateObject_4$b = __makeTemplateObject(["\n position: relative;\n height: calc(100% - 8px);\n padding: 4px;\n border-radius: 4px;\n background: white;\n\n & > img {\n border-radius: 4px;\n width: auto;\n max-height: 100%;\n }\n"], ["\n position: relative;\n height: calc(100% - 8px);\n padding: 4px;\n border-radius: 4px;\n background: white;\n\n & > img {\n border-radius: 4px;\n width: auto;\n max-height: 100%;\n }\n"])));
7286
+ var templateObject_1$q, templateObject_2$m, templateObject_3$h, templateObject_4$b;
7346
7287
 
7347
7288
  var documentCaptureInitialState = {
7348
7289
  documents: [],
@@ -7462,8 +7403,8 @@ var DocumentCaptureStateProvider = function DocumentCaptureStateProvider(_a) {
7462
7403
  var _c = React.useReducer(documentCaptureStateReducer, documentCaptureInitialState),
7463
7404
  state = _c[0],
7464
7405
  dispatch = _c[1];
7465
- var _d = React.useContext(CameraStateContext),
7466
- cameraRef = _d.cameraRef,
7406
+ var _d = useCameraStore(),
7407
+ videoStream = _d.videoStream,
7467
7408
  videoRef = _d.videoRef;
7468
7409
  var uploadDocument = React.useContext(SubmissionContext).uploadDocument;
7469
7410
  var uploadCapturedDocument = React.useCallback(function (content, filetype) {
@@ -7554,8 +7495,7 @@ var DocumentCaptureStateProvider = function DocumentCaptureStateProvider(_a) {
7554
7495
  }, [onResize]);
7555
7496
  var videoTag = videoRef.current;
7556
7497
  React.useEffect(function () {
7557
- if (!state.capturing) return;
7558
- if (!cameraRef.current) return;
7498
+ if (!state.capturing || !(videoStream === null || videoStream === void 0 ? void 0 : videoStream.active)) return;
7559
7499
  function onComplete(content) {
7560
7500
  if (!content) return;
7561
7501
  var contentUrl = URL.createObjectURL(content);
@@ -7568,7 +7508,7 @@ var DocumentCaptureStateProvider = function DocumentCaptureStateProvider(_a) {
7568
7508
  });
7569
7509
  }
7570
7510
  if (typeof ImageCapture !== 'undefined') {
7571
- var tracks = cameraRef.current.stream.getTracks();
7511
+ var tracks = videoStream.getTracks();
7572
7512
  var videoCameraTrack = tracks.find(function (track) {
7573
7513
  return track.kind === 'video';
7574
7514
  });
@@ -7583,7 +7523,7 @@ var DocumentCaptureStateProvider = function DocumentCaptureStateProvider(_a) {
7583
7523
  drawToCanvas(canvas, videoTag);
7584
7524
  canvas.toBlob(onComplete);
7585
7525
  }
7586
- }, [cameraRef, state.capturing, videoTag]);
7526
+ }, [state.capturing, videoStream, videoTag]);
7587
7527
  var stateWithActions = React.useMemo(function () {
7588
7528
  return _assign(_assign({}, state), {
7589
7529
  uploadCapturedDocument: uploadCapturedDocument
@@ -7698,52 +7638,85 @@ var DocumentCaptureGuideOverlay = function DocumentCaptureGuideOverlay(_a) {
7698
7638
  ref: canvasRef
7699
7639
  }));
7700
7640
  };
7701
- var CanvasWrapper = styled__default.default.div(templateObject_1$n || (templateObject_1$n = __makeTemplateObject(["\n flex-grow: 1;\n background-clip: padding-box;\n box-shadow: inset 0 0 0 2px ", ";\n"], ["\n flex-grow: 1;\n background-clip: padding-box;\n box-shadow: inset 0 0 0 2px ", ";\n"])), function (props) {
7641
+ var CanvasWrapper = styled__default.default.div(templateObject_1$p || (templateObject_1$p = __makeTemplateObject(["\n flex-grow: 1;\n background-clip: padding-box;\n box-shadow: inset 0 0 0 2px ", ";\n"], ["\n flex-grow: 1;\n background-clip: padding-box;\n box-shadow: inset 0 0 0 2px ", ";\n"])), function (props) {
7702
7642
  return props.$maskColor;
7703
7643
  });
7704
- var Canvas = styled__default.default.canvas(templateObject_2$k || (templateObject_2$k = __makeTemplateObject(["\n display: block;\n"], ["\n display: block;\n"])));
7705
- var templateObject_1$n, templateObject_2$k;
7644
+ var Canvas = styled__default.default.canvas(templateObject_2$l || (templateObject_2$l = __makeTemplateObject(["\n display: block;\n"], ["\n display: block;\n"])));
7645
+ var templateObject_1$p, templateObject_2$l;
7706
7646
 
7707
- var CameraFeedWrapper = styled__default.default.div(templateObject_1$m || (templateObject_1$m = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"])), function (props) {
7647
+ var CameraFeedWrapper = styled__default.default.div(templateObject_1$o || (templateObject_1$o = __makeTemplateObject(["\n ", "\n"], ["\n ", "\n"])), function (props) {
7708
7648
  return props.$mode === 'snapToGuides' ? "display: flex;\n position: absolute;\n left: ".concat(props.$x, "px;\n top: ").concat(props.$y, "px;\n width: ").concat(props.$w, "px;\n height: ").concat(props.$h, "px;") : "";
7709
7649
  });
7710
- var templateObject_1$m;
7650
+ var templateObject_1$o;
7651
+
7652
+ var CameraVideoTag = function CameraVideoTag(props) {
7653
+ var _a = useCameraStore(shallow.useShallow(function (store) {
7654
+ return {
7655
+ videoRef: store.videoRef,
7656
+ videoStream: store.videoStream,
7657
+ onVideoMounted: store.onVideoMounted,
7658
+ isRearFacing: store.isRearFacing
7659
+ };
7660
+ })),
7661
+ videoRef = _a.videoRef,
7662
+ videoStream = _a.videoStream,
7663
+ onVideoMounted = _a.onVideoMounted,
7664
+ isRearFacing = _a.isRearFacing;
7665
+ React.useEffect(function attachCameraStreamToVideoTagWhenReady() {
7666
+ if (videoRef.current && videoStream) {
7667
+ debug('attaching camera stream to video tag');
7668
+ videoRef.current.srcObject = videoStream;
7669
+ }
7670
+ }, [videoStream, videoRef]);
7671
+ return /*#__PURE__*/React__namespace.default.createElement(FullscreenVideoTag, _assign({
7672
+ autoPlay: true,
7673
+ playsInline: true,
7674
+ muted: true,
7675
+ ref: videoRef,
7676
+ onLoadedData: onVideoMounted,
7677
+ "$isRearFacing": isRearFacing
7678
+ }, props));
7679
+ };
7680
+ var FullscreenVideoTag = styled__default.default.video(templateObject_1$n || (templateObject_1$n = __makeTemplateObject(["\n transform: ", ";\n transform-style: preserve-3d;\n min-width: 100%;\n min-height: 100%;\n width: auto;\n height: auto;\n max-width: 100%;\n max-height: 100%;\n object-fit: cover;\n background: black;\n z-index: -2;\n"], ["\n transform: ", ";\n transform-style: preserve-3d;\n min-width: 100%;\n min-height: 100%;\n width: auto;\n height: auto;\n max-width: 100%;\n max-height: 100%;\n object-fit: cover;\n background: black;\n z-index: -2;\n"])), function (props) {
7681
+ return props.$isRearFacing ? '' : 'scaleX(-1)';
7682
+ });
7683
+ var templateObject_1$n;
7711
7684
 
7712
7685
  var DocumentCaptureScreen = function DocumentCaptureScreen(_a) {
7713
- var _b, _c, _d, _e, _f, _g, _h;
7686
+ var _b, _c, _d, _e, _f;
7714
7687
  var onCaptureClicked = _a.onCaptureClicked,
7715
- _j = _a.classNames,
7716
- classNames = _j === void 0 ? {} : _j,
7717
- _k = _a.verbiage,
7718
- rawVerbiage = _k === void 0 ? {} : _k;
7719
- var _l = useDocumentCaptureState(),
7720
- _m = _l[0],
7721
- documents = _m.documents,
7722
- currentDocumentIndex = _m.currentDocumentIndex,
7723
- rectX = _m.rectX,
7724
- rectY = _m.rectY,
7725
- rectWidth = _m.rectWidth,
7726
- rectHeight = _m.rectHeight,
7727
- rectOffsetTop = _m.rectOffsetTop,
7728
- capturing = _m.capturing,
7729
- uploadCapturedDocument = _m.uploadCapturedDocument,
7730
- dispatch = _l[1];
7731
- var _o = (_b = documents[currentDocumentIndex]) !== null && _b !== void 0 ? _b : {},
7732
- title = _o.title,
7733
- aspectRatio = _o.aspectRatio,
7734
- cameraFeedMode = _o.cameraFeedMode,
7735
- instructions = _o.instructions,
7736
- contentUrl = _o.contentUrl,
7737
- content = _o.content,
7738
- uploadState = _o.uploadState;
7739
- var _p = React.useContext(CameraStateContext),
7740
- cameraRef = _p.cameraRef,
7741
- cameraReady = _p.cameraReady,
7742
- cameraAccessDenied = _p.cameraAccessDenied,
7743
- requestCameraAccess = _p.requestCameraAccess;
7744
- var _q = React.useState(false),
7745
- cameraAccessRequested = _q[0],
7746
- setCameraAccessRequested = _q[1];
7688
+ _g = _a.classNames,
7689
+ classNames = _g === void 0 ? {} : _g,
7690
+ _h = _a.verbiage,
7691
+ rawVerbiage = _h === void 0 ? {} : _h;
7692
+ var _j = useDocumentCaptureState(),
7693
+ _k = _j[0],
7694
+ documents = _k.documents,
7695
+ currentDocumentIndex = _k.currentDocumentIndex,
7696
+ rectX = _k.rectX,
7697
+ rectY = _k.rectY,
7698
+ rectWidth = _k.rectWidth,
7699
+ rectHeight = _k.rectHeight,
7700
+ rectOffsetTop = _k.rectOffsetTop,
7701
+ capturing = _k.capturing,
7702
+ uploadCapturedDocument = _k.uploadCapturedDocument,
7703
+ dispatch = _j[1];
7704
+ var _l = (_b = documents[currentDocumentIndex]) !== null && _b !== void 0 ? _b : {},
7705
+ title = _l.title,
7706
+ aspectRatio = _l.aspectRatio,
7707
+ cameraFeedMode = _l.cameraFeedMode,
7708
+ instructions = _l.instructions,
7709
+ contentUrl = _l.contentUrl,
7710
+ content = _l.content,
7711
+ uploadState = _l.uploadState;
7712
+ var _m = useCameraStore(),
7713
+ videoStream = _m.videoStream,
7714
+ cameraReady = _m.cameraReady,
7715
+ cameraAccessDenied = _m.cameraAccessDenied,
7716
+ requestCameraAccess = _m.requestCameraAccess;
7717
+ var _o = React.useState(false),
7718
+ cameraAccessRequested = _o[0],
7719
+ setCameraAccessRequested = _o[1];
7747
7720
  var cameraAccessNeeded =
7748
7721
  // we should force the browser to ask for camera access if...
7749
7722
  uploadState === 'not_started' &&
@@ -7752,14 +7725,14 @@ var DocumentCaptureScreen = function DocumentCaptureScreen(_a) {
7752
7725
  // and the user hasn't passed a media blob for the current document...
7753
7726
  !cameraAccessRequested &&
7754
7727
  // and we haven't already tried to force a camera request...
7755
- !((_d = (_c = cameraRef.current) === null || _c === void 0 ? void 0 : _c.stream) === null || _d === void 0 ? void 0 : _d.active); // and we don't already have camera access.
7728
+ !(videoStream === null || videoStream === void 0 ? void 0 : videoStream.active); // and we don't already have camera access.
7756
7729
  React.useEffect(function requestCameraAccessIfNeeded() {
7757
7730
  if (!cameraAccessNeeded) return;
7758
7731
  setCameraAccessRequested(true);
7759
7732
  requestCameraAccess();
7760
7733
  }, [cameraAccessNeeded, requestCameraAccess]);
7761
7734
  var theme = styled.useTheme();
7762
- var maskColor = (_g = (_f = (_e = theme.documentCapture) === null || _e === void 0 ? void 0 : _e.guideBox) === null || _f === void 0 ? void 0 : _f.maskColor) !== null && _g !== void 0 ? _g : cameraFeedMode === 'snapToGuides' ? '#708090' : "rgba(0, 0, 0, 0.5)";
7735
+ var maskColor = (_e = (_d = (_c = theme.documentCapture) === null || _c === void 0 ? void 0 : _c.guideBox) === null || _d === void 0 ? void 0 : _d.maskColor) !== null && _e !== void 0 ? _e : cameraFeedMode === 'snapToGuides' ? '#708090' : "rgba(0, 0, 0, 0.5)";
7763
7736
  var verbiage = useTranslations(rawVerbiage, {
7764
7737
  headingText: title,
7765
7738
  loadingBtnText: 'Camera initializing...',
@@ -7792,7 +7765,7 @@ var DocumentCaptureScreen = function DocumentCaptureScreen(_a) {
7792
7765
  });
7793
7766
  }
7794
7767
  return /*#__PURE__*/React__namespace.default.createElement(PageContainer, {
7795
- className: "flex ".concat((_h = classNames.container) !== null && _h !== void 0 ? _h : '')
7768
+ className: "flex ".concat((_f = classNames.container) !== null && _f !== void 0 ? _f : '')
7796
7769
  }, /*#__PURE__*/React__namespace.default.createElement(CameraFeedWrapper, {
7797
7770
  className: classNames.cameraFeedWrapper,
7798
7771
  "$mode": cameraFeedMode !== null && cameraFeedMode !== void 0 ? cameraFeedMode : 'snapToGuides',
@@ -7857,21 +7830,21 @@ var DocumentCaptureScreen = function DocumentCaptureScreen(_a) {
7857
7830
  disabled: !cameraReady || capturing
7858
7831
  }, !cameraReady ? verbiage.loadingBtnText : capturing ? verbiage.capturingBtnText : verbiage.captureBtnText))))));
7859
7832
  };
7860
- var CaptureContainer = styled__default.default.div(templateObject_1$l || (templateObject_1$l = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: var(--app-height);\n"], ["\n display: flex;\n flex-direction: column;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: var(--app-height);\n"])));
7861
- var HeadingRow = styled__default.default.div(templateObject_2$j || (templateObject_2$j = __makeTemplateObject(["\n background: ", ";\n text-align: center;\n color: white;\n"], ["\n background: ", ";\n text-align: center;\n color: white;\n"])), function (props) {
7833
+ var CaptureContainer = styled__default.default.div(templateObject_1$m || (templateObject_1$m = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: var(--app-height);\n"], ["\n display: flex;\n flex-direction: column;\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: var(--app-height);\n"])));
7834
+ var HeadingRow = styled__default.default.div(templateObject_2$k || (templateObject_2$k = __makeTemplateObject(["\n background: ", ";\n text-align: center;\n color: white;\n"], ["\n background: ", ";\n text-align: center;\n color: white;\n"])), function (props) {
7862
7835
  return props.$maskColor;
7863
7836
  });
7864
- var Heading$9 = styled__default.default.h1(templateObject_3$f || (templateObject_3$f = __makeTemplateObject(["\n font-size: 22px;\n"], ["\n font-size: 22px;\n"])));
7865
- var FooterRow = styled__default.default.div(templateObject_4$9 || (templateObject_4$9 = __makeTemplateObject(["\n background: ", ";\n display: flex;\n flex-direction: column;\n justify-content: center;\n padding: 0 20px 20px;\n height: auto;\n color: white;\n"], ["\n background: ", ";\n display: flex;\n flex-direction: column;\n justify-content: center;\n padding: 0 20px 20px;\n height: auto;\n color: white;\n"])), function (props) {
7837
+ var Heading$9 = styled__default.default.h1(templateObject_3$g || (templateObject_3$g = __makeTemplateObject(["\n font-size: 22px;\n"], ["\n font-size: 22px;\n"])));
7838
+ var FooterRow = styled__default.default.div(templateObject_4$a || (templateObject_4$a = __makeTemplateObject(["\n background: ", ";\n display: flex;\n flex-direction: column;\n justify-content: center;\n padding: 0 20px 20px;\n height: auto;\n color: white;\n"], ["\n background: ", ";\n display: flex;\n flex-direction: column;\n justify-content: center;\n padding: 0 20px 20px;\n height: auto;\n color: white;\n"])), function (props) {
7866
7839
  return props.$maskColor;
7867
7840
  });
7868
- var Instructions = styled__default.default.div(templateObject_5$5 || (templateObject_5$5 = __makeTemplateObject(["\n max-height: ", ";\n overflow-y: auto;\n"], ["\n max-height: ", ";\n overflow-y: auto;\n"])), function (props) {
7841
+ var Instructions = styled__default.default.div(templateObject_5$6 || (templateObject_5$6 = __makeTemplateObject(["\n max-height: ", ";\n overflow-y: auto;\n"], ["\n max-height: ", ";\n overflow-y: auto;\n"])), function (props) {
7869
7842
  var _a, _b, _c;
7870
7843
  return (_c = (_b = (_a = props.theme.documentCapture) === null || _a === void 0 ? void 0 : _a.instructions) === null || _b === void 0 ? void 0 : _b.maxHeight) !== null && _c !== void 0 ? _c : '8rem';
7871
7844
  });
7872
- var StyledButtonsRow$9 = styled__default.default(ButtonsRow)(templateObject_6$4 || (templateObject_6$4 = __makeTemplateObject(["\n padding-top: 20px;\n"], ["\n padding-top: 20px;\n"])));
7873
- var PreviewImage = styled__default.default.img(templateObject_7$2 || (templateObject_7$2 = __makeTemplateObject(["\n width: 100%;\n height: 100%;\n object-fit: cover;\n"], ["\n width: 100%;\n height: 100%;\n object-fit: cover;\n"])));
7874
- var templateObject_1$l, templateObject_2$j, templateObject_3$f, templateObject_4$9, templateObject_5$5, templateObject_6$4, templateObject_7$2;
7845
+ var StyledButtonsRow$9 = styled__default.default(ButtonsRow)(templateObject_6$5 || (templateObject_6$5 = __makeTemplateObject(["\n padding-top: 20px;\n"], ["\n padding-top: 20px;\n"])));
7846
+ var PreviewImage = styled__default.default.img(templateObject_7$3 || (templateObject_7$3 = __makeTemplateObject(["\n width: 100%;\n height: 100%;\n object-fit: cover;\n"], ["\n width: 100%;\n height: 100%;\n object-fit: cover;\n"])));
7847
+ var templateObject_1$m, templateObject_2$k, templateObject_3$g, templateObject_4$a, templateObject_5$6, templateObject_6$5, templateObject_7$3;
7875
7848
 
7876
7849
  var DocumentCaptureWizard = function DocumentCaptureWizard(_a) {
7877
7850
  var onSuccess = _a.onSuccess,
@@ -8140,13 +8113,13 @@ var IdCaptureFallback = function IdCaptureFallback(_a) {
8140
8113
  }
8141
8114
  }, verbiage.doneBtnText))))));
8142
8115
  };
8143
- var StyledOverlayInner$2 = styled__default.default(OverlayInner$2)(templateObject_1$k || (templateObject_1$k = __makeTemplateObject(["\n justify-content: center;\n"], ["\n justify-content: center;\n"])));
8144
- var Heading$8 = styled__default.default.h3(templateObject_2$i || (templateObject_2$i = __makeTemplateObject(["\n margin-bottom: 8px;\n"], ["\n margin-bottom: 8px;\n"])));
8145
- var Description$3 = styled__default.default.p(templateObject_3$e || (templateObject_3$e = __makeTemplateObject(["\n margin-bottom: 8px;\n"], ["\n margin-bottom: 8px;\n"])));
8146
- var Instruction = styled__default.default.p(templateObject_4$8 || (templateObject_4$8 = __makeTemplateObject(["\n font-weight: bold;\n"], ["\n font-weight: bold;\n"])));
8147
- var ImageCol = styled__default.default.div(templateObject_5$4 || (templateObject_5$4 = __makeTemplateObject(["\n display: flex;\n justify-content: center;\n flex-grow: 1;\n flex-basis: 0;\n"], ["\n display: flex;\n justify-content: center;\n flex-grow: 1;\n flex-basis: 0;\n"])));
8148
- var StyledButtonsRow$8 = styled__default.default(ButtonsRow)(templateObject_6$3 || (templateObject_6$3 = __makeTemplateObject(["\n margin-top: 32px;\n"], ["\n margin-top: 32px;\n"])));
8149
- var templateObject_1$k, templateObject_2$i, templateObject_3$e, templateObject_4$8, templateObject_5$4, templateObject_6$3;
8116
+ var StyledOverlayInner$2 = styled__default.default(OverlayInner$2)(templateObject_1$l || (templateObject_1$l = __makeTemplateObject(["\n justify-content: center;\n"], ["\n justify-content: center;\n"])));
8117
+ var Heading$8 = styled__default.default.h3(templateObject_2$j || (templateObject_2$j = __makeTemplateObject(["\n margin-bottom: 8px;\n"], ["\n margin-bottom: 8px;\n"])));
8118
+ var Description$3 = styled__default.default.p(templateObject_3$f || (templateObject_3$f = __makeTemplateObject(["\n margin-bottom: 8px;\n"], ["\n margin-bottom: 8px;\n"])));
8119
+ var Instruction = styled__default.default.p(templateObject_4$9 || (templateObject_4$9 = __makeTemplateObject(["\n font-weight: bold;\n"], ["\n font-weight: bold;\n"])));
8120
+ var ImageCol = styled__default.default.div(templateObject_5$5 || (templateObject_5$5 = __makeTemplateObject(["\n display: flex;\n justify-content: center;\n flex-grow: 1;\n flex-basis: 0;\n"], ["\n display: flex;\n justify-content: center;\n flex-grow: 1;\n flex-basis: 0;\n"])));
8121
+ var StyledButtonsRow$8 = styled__default.default(ButtonsRow)(templateObject_6$4 || (templateObject_6$4 = __makeTemplateObject(["\n margin-top: 32px;\n"], ["\n margin-top: 32px;\n"])));
8122
+ var templateObject_1$l, templateObject_2$j, templateObject_3$f, templateObject_4$9, templateObject_5$5, templateObject_6$4;
8150
8123
 
8151
8124
  function ScalingCameraFeed() {
8152
8125
  var _a = React.useContext(IdCaptureStateContext),
@@ -8217,7 +8190,7 @@ var IdCaptureWizard = function IdCaptureWizard(_a) {
8217
8190
  var _3 = useIdCaptureState(),
8218
8191
  state = _3[0],
8219
8192
  dispatch = _3[1];
8220
- var _4 = React.useContext(CameraStateContext),
8193
+ var _4 = useCameraStore(),
8221
8194
  cameraAccessDenied = _4.cameraAccessDenied,
8222
8195
  requestCameraAccess = _4.requestCameraAccess,
8223
8196
  releaseCameraAccess = _4.releaseCameraAccess;
@@ -8832,7 +8805,7 @@ var HeadGuideSvg = /*#__PURE__*/React.forwardRef(function (_a, ref) {
8832
8805
  }))));
8833
8806
  });
8834
8807
  HeadGuideSvg.displayName = 'HeadGuideSvg';
8835
- var PulsingHeadGuideContainer = styled__default.default.div(templateObject_1$j || (templateObject_1$j = __makeTemplateObject(["\n display: flex;\n position: relative;\n height: 100%;\n max-height: 100%;\n\n & > .idmSdkWaves {\n position: absolute;\n animation: ", " 2s ease-out infinite;\n\n &:nth-child(2) {\n animation-delay: 0.66s;\n }\n\n &:nth-child(3) {\n animation-delay: 1.33s;\n }\n }\n\n & > .idmSdkWavesOrigin {\n position: relative;\n }\n"], ["\n display: flex;\n position: relative;\n height: 100%;\n max-height: 100%;\n\n & > .idmSdkWaves {\n position: absolute;\n animation: ", " 2s ease-out infinite;\n\n &:nth-child(2) {\n animation-delay: 0.66s;\n }\n\n &:nth-child(3) {\n animation-delay: 1.33s;\n }\n }\n\n & > .idmSdkWavesOrigin {\n position: relative;\n }\n"])), wavesAnimation);
8808
+ var PulsingHeadGuideContainer = styled__default.default.div(templateObject_1$k || (templateObject_1$k = __makeTemplateObject(["\n display: flex;\n position: relative;\n height: 100%;\n max-height: 100%;\n\n & > .idmSdkWaves {\n position: absolute;\n animation: ", " 2s ease-out infinite;\n transform-style: preserve-3d;\n\n &:nth-child(2) {\n animation-delay: 0.66s;\n }\n\n &:nth-child(3) {\n animation-delay: 1.33s;\n }\n }\n\n & > .idmSdkWavesOrigin {\n position: relative;\n }\n"], ["\n display: flex;\n position: relative;\n height: 100%;\n max-height: 100%;\n\n & > .idmSdkWaves {\n position: absolute;\n animation: ", " 2s ease-out infinite;\n transform-style: preserve-3d;\n\n &:nth-child(2) {\n animation-delay: 0.66s;\n }\n\n &:nth-child(3) {\n animation-delay: 1.33s;\n }\n }\n\n & > .idmSdkWavesOrigin {\n position: relative;\n }\n"])), wavesAnimation);
8836
8809
  function HeadGuide(_a) {
8837
8810
  var _b;
8838
8811
  var _c = _a.status,
@@ -8882,8 +8855,8 @@ function HeadGuide(_a) {
8882
8855
  height: parentHeight
8883
8856
  })));
8884
8857
  }
8885
- var AbsoluteSvg = styled__default.default.svg(templateObject_2$h || (templateObject_2$h = __makeTemplateObject(["\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n"], ["\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n"])));
8886
- var RelativeSvgContainer = styled__default.default.div(templateObject_3$d || (templateObject_3$d = __makeTemplateObject(["\n position: relative;\n height: 100%;\n display: flex;\n align-items: ", ";\n"], ["\n position: relative;\n height: 100%;\n display: flex;\n align-items: ", ";\n"])), function (props) {
8858
+ var AbsoluteSvg = styled__default.default.svg(templateObject_2$i || (templateObject_2$i = __makeTemplateObject(["\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n"], ["\n position: absolute;\n width: 100%;\n height: 100%;\n top: 0;\n left: 0;\n"])));
8859
+ var RelativeSvgContainer = styled__default.default.div(templateObject_3$e || (templateObject_3$e = __makeTemplateObject(["\n position: relative;\n height: 100%;\n display: flex;\n align-items: ", ";\n"], ["\n position: relative;\n height: 100%;\n display: flex;\n align-items: ", ";\n"])), function (props) {
8887
8860
  return props.$verticalAlign === 'bottom' ? 'flex-end' : 'center';
8888
8861
  });
8889
8862
  function SelfieCaptureAnimatedMask(_a) {
@@ -9110,10 +9083,10 @@ function SelfieCaptureAnimatedMaskWithStatus(_a) {
9110
9083
  status: status
9111
9084
  }));
9112
9085
  }
9113
- var templateObject_1$j, templateObject_2$h, templateObject_3$d;
9086
+ var templateObject_1$k, templateObject_2$i, templateObject_3$e;
9114
9087
 
9115
- var FaceCaptureGuideContainer = styled__default.default.div(templateObject_1$i || (templateObject_1$i = __makeTemplateObject(["\n position: fixed;\n z-index: 1000;\n width: 100dvw;\n height: 100dvh;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n box-sizing: border-box;\n"], ["\n position: fixed;\n z-index: 1000;\n width: 100dvw;\n height: 100dvh;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n box-sizing: border-box;\n"])));
9116
- var FaceCaptureGuideInner = styled__default.default.div(templateObject_2$g || (templateObject_2$g = __makeTemplateObject(["\n position: relative;\n height: 60%;\n"], ["\n position: relative;\n height: 60%;\n"])));
9088
+ var FaceCaptureGuideContainer = styled__default.default.div(templateObject_1$j || (templateObject_1$j = __makeTemplateObject(["\n position: fixed;\n z-index: 1000;\n width: 100dvw;\n height: 100dvh;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n box-sizing: border-box;\n"], ["\n position: fixed;\n z-index: 1000;\n width: 100dvw;\n height: 100dvh;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 40px;\n box-sizing: border-box;\n"])));
9089
+ var FaceCaptureGuideInner = styled__default.default.div(templateObject_2$h || (templateObject_2$h = __makeTemplateObject(["\n position: relative;\n height: 60%;\n"], ["\n position: relative;\n height: 60%;\n"])));
9117
9090
  var FaceCaptureGuideOverlay = function FaceCaptureGuideOverlay(_a) {
9118
9091
  var _b = _a.classNames,
9119
9092
  classNames = _b === void 0 ? {} : _b,
@@ -9135,7 +9108,7 @@ var FaceCaptureGuideOverlay = function FaceCaptureGuideOverlay(_a) {
9135
9108
  verticalAlign: "center"
9136
9109
  })));
9137
9110
  };
9138
- var templateObject_1$i, templateObject_2$g;
9111
+ var templateObject_1$j, templateObject_2$h;
9139
9112
 
9140
9113
  var SelfieGuidanceModelsContext = /*#__PURE__*/React.createContext({
9141
9114
  start: function start() {
@@ -9165,7 +9138,13 @@ function SelfieGuidanceModelsProvider(_a) {
9165
9138
  modelLoadTimeoutMs = _c === void 0 ? defaultSelfieCaptureModelLoadTimeoutMs : _c,
9166
9139
  _d = _a.requireVerticalFaceCentering,
9167
9140
  requireVerticalFaceCentering = _d === void 0 ? true : _d;
9168
- var _e = React.useContext(CameraStateContext),
9141
+ var _e = useCameraStore(shallow.useShallow(function (state) {
9142
+ return {
9143
+ videoRef: state.videoRef,
9144
+ videoLoaded: state.videoLoaded,
9145
+ cameraReady: state.cameraReady
9146
+ };
9147
+ })),
9169
9148
  videoRef = _e.videoRef,
9170
9149
  videoLoaded = _e.videoLoaded,
9171
9150
  cameraReady = _e.cameraReady;
@@ -9173,7 +9152,8 @@ function SelfieGuidanceModelsProvider(_a) {
9173
9152
  var onPredictionHandler = React.useRef();
9174
9153
  var _f = useLoadFaceDetector({
9175
9154
  onModelError: onModelError,
9176
- modelLoadTimeoutMs: modelLoadTimeoutMs
9155
+ modelLoadTimeoutMs: modelLoadTimeoutMs,
9156
+ videoRef: videoRef
9177
9157
  }),
9178
9158
  ready = _f.ready,
9179
9159
  modelDownloadProgress = _f.modelDownloadProgress,
@@ -9439,12 +9419,12 @@ var SelfieCaptureFallback = function SelfieCaptureFallback(_a) {
9439
9419
  }
9440
9420
  }, !image ? invalidSelfie ? verbiage.retryButtonText : verbiage.captureBtnText : loading ? verbiage.doneBtnLoadingText : verbiage.doneBtnText)))));
9441
9421
  };
9442
- var StyledOverlayInner$1 = styled__default.default(OverlayInner$2)(templateObject_1$h || (templateObject_1$h = __makeTemplateObject(["\n justify-content: center;\n"], ["\n justify-content: center;\n"])));
9443
- var Heading$7 = styled__default.default.h3(templateObject_2$f || (templateObject_2$f = __makeTemplateObject(["\n margin-bottom: 8px;\n"], ["\n margin-bottom: 8px;\n"])));
9444
- var Description$2 = styled__default.default.p(templateObject_3$c || (templateObject_3$c = __makeTemplateObject(["\n margin-bottom: 8px;\n"], ["\n margin-bottom: 8px;\n"])));
9445
- var ImageContainer$6 = styled__default.default(OverlayImageContainer)(templateObject_4$7 || (templateObject_4$7 = __makeTemplateObject(["\n margin-top: 32px;\n"], ["\n margin-top: 32px;\n"])));
9446
- var StyledButtonsRow$7 = styled__default.default(ButtonsRow)(templateObject_5$3 || (templateObject_5$3 = __makeTemplateObject(["\n margin-top: 32px;\n"], ["\n margin-top: 32px;\n"])));
9447
- var templateObject_1$h, templateObject_2$f, templateObject_3$c, templateObject_4$7, templateObject_5$3;
9422
+ var StyledOverlayInner$1 = styled__default.default(OverlayInner$2)(templateObject_1$i || (templateObject_1$i = __makeTemplateObject(["\n justify-content: center;\n"], ["\n justify-content: center;\n"])));
9423
+ var Heading$7 = styled__default.default.h3(templateObject_2$g || (templateObject_2$g = __makeTemplateObject(["\n margin-bottom: 8px;\n"], ["\n margin-bottom: 8px;\n"])));
9424
+ var Description$2 = styled__default.default.p(templateObject_3$d || (templateObject_3$d = __makeTemplateObject(["\n margin-bottom: 8px;\n"], ["\n margin-bottom: 8px;\n"])));
9425
+ var ImageContainer$6 = styled__default.default(OverlayImageContainer)(templateObject_4$8 || (templateObject_4$8 = __makeTemplateObject(["\n margin-top: 32px;\n"], ["\n margin-top: 32px;\n"])));
9426
+ var StyledButtonsRow$7 = styled__default.default(ButtonsRow)(templateObject_5$4 || (templateObject_5$4 = __makeTemplateObject(["\n margin-top: 32px;\n"], ["\n margin-top: 32px;\n"])));
9427
+ var templateObject_1$i, templateObject_2$g, templateObject_3$d, templateObject_4$8, templateObject_5$4;
9448
9428
 
9449
9429
  var initialState$3 = {
9450
9430
  busy: false,
@@ -9506,8 +9486,14 @@ var SelfieCapture = function SelfieCapture(_a) {
9506
9486
  prediction = _t.prediction,
9507
9487
  dispatch = _s[1];
9508
9488
  var lastPredictionCanvas = React.useRef(null);
9509
- var _u = React.useContext(CameraStateContext),
9510
- cameraRef = _u.cameraRef,
9489
+ var _u = useCameraStore(shallow.useShallow(function (state) {
9490
+ return {
9491
+ camera: state.camera,
9492
+ cameraReady: state.cameraReady,
9493
+ videoRef: state.videoRef
9494
+ };
9495
+ })),
9496
+ camera = _u.camera,
9511
9497
  videoRef = _u.videoRef;
9512
9498
  var _v = React.useContext(SelfieGuidanceModelsContext),
9513
9499
  onPredictionMade = _v.onPredictionMade,
@@ -9597,7 +9583,7 @@ var SelfieCapture = function SelfieCapture(_a) {
9597
9583
  face: prediction.face,
9598
9584
  scaling: debugScalingDetails,
9599
9585
  color: satisfied ? 'green' : 'red'
9600
- }))), debugMode && ( /*#__PURE__*/React__namespace.default.createElement(DebugStatsPane, null, cameraRef.current ? ( /*#__PURE__*/React__namespace.default.createElement(React__namespace.default.Fragment, null, "\u2705 Camera: ", cameraRef.current.label, " (", cameraRef.current.width, "x", cameraRef.current.height, ")")) : '❌ Camera not ready', /*#__PURE__*/React__namespace.default.createElement("br", null), !(prediction === null || prediction === void 0 ? void 0 : prediction.faceNotCentered) ? '✅' : '❌', " Face Centered", /*#__PURE__*/React__namespace.default.createElement("br", null), !(prediction === null || prediction === void 0 ? void 0 : prediction.faceTooClose) && !(prediction === null || prediction === void 0 ? void 0 : prediction.faceTooFar) ? '✅' : '❌', ' ', "Face", ' ', (prediction === null || prediction === void 0 ? void 0 : prediction.faceTooClose) ? 'Too Close' : (prediction === null || prediction === void 0 ? void 0 : prediction.faceTooFar) ? 'Too Far' : 'Distance Correct', /*#__PURE__*/React__namespace.default.createElement("br", null), !(prediction === null || prediction === void 0 ? void 0 : prediction.faceLookingAway) ? '✅' : '❌', " Face Looking Forward", /*#__PURE__*/React__namespace.default.createElement("br", null), !(prediction === null || prediction === void 0 ? void 0 : prediction.faceIsStable) ? '✅' : '❌', " Face Is Stable", /*#__PURE__*/React__namespace.default.createElement("br", null), !timedOut ? '✅' : '❌', " Time Remaining:", ' ', Math.max(0, timeoutDurationMs - (new Date().getTime() - (timeoutStartedAt !== null && timeoutStartedAt !== void 0 ? timeoutStartedAt : new Date()).getTime())), "ms")), /*#__PURE__*/React__namespace.default.createElement(ExitCaptureButton, {
9586
+ }))), debugMode && ( /*#__PURE__*/React__namespace.default.createElement(DebugStatsPane, null, camera ? ( /*#__PURE__*/React__namespace.default.createElement(React__namespace.default.Fragment, null, "\u2705 Camera: ", camera.label, " (", camera.width, "x", camera.height, ")")) : '❌ Camera not ready', /*#__PURE__*/React__namespace.default.createElement("br", null), !(prediction === null || prediction === void 0 ? void 0 : prediction.faceNotCentered) ? '✅' : '❌', " Face Centered", /*#__PURE__*/React__namespace.default.createElement("br", null), !(prediction === null || prediction === void 0 ? void 0 : prediction.faceTooClose) && !(prediction === null || prediction === void 0 ? void 0 : prediction.faceTooFar) ? '✅' : '❌', ' ', "Face", ' ', (prediction === null || prediction === void 0 ? void 0 : prediction.faceTooClose) ? 'Too Close' : (prediction === null || prediction === void 0 ? void 0 : prediction.faceTooFar) ? 'Too Far' : 'Distance Correct', /*#__PURE__*/React__namespace.default.createElement("br", null), !(prediction === null || prediction === void 0 ? void 0 : prediction.faceLookingAway) ? '✅' : '❌', " Face Looking Forward", /*#__PURE__*/React__namespace.default.createElement("br", null), !(prediction === null || prediction === void 0 ? void 0 : prediction.faceIsStable) ? '✅' : '❌', " Face Is Stable", /*#__PURE__*/React__namespace.default.createElement("br", null), !timedOut ? '✅' : '❌', " Time Remaining:", ' ', Math.max(0, timeoutDurationMs - (new Date().getTime() - (timeoutStartedAt !== null && timeoutStartedAt !== void 0 ? timeoutStartedAt : new Date()).getTime())), "ms")), /*#__PURE__*/React__namespace.default.createElement(ExitCaptureButton, {
9601
9587
  onClick: onExit,
9602
9588
  className: classNames.exitCaptureBtn
9603
9589
  }));
@@ -9988,9 +9974,9 @@ var FaceLivenessSuccess = function FaceLivenessSuccess(_a) {
9988
9974
  finished: true
9989
9975
  }, verbiage.retryBtnText)))));
9990
9976
  };
9991
- var ImageContainer$5 = styled__default.default.div(templateObject_1$g || (templateObject_1$g = __makeTemplateObject(["\n position: relative;\n flex-grow: 1;\n margin-bottom: 25px;\n max-width: 100dvw;\n max-height: 100dvh;\n overflow-y: auto;\n border-radius: 12px;\n\n & > img,\n & > svg {\n width: 100%;\n max-width: 100%;\n margin: 0 auto;\n display: block;\n border-radius: 12px;\n }\n"], ["\n position: relative;\n flex-grow: 1;\n margin-bottom: 25px;\n max-width: 100dvw;\n max-height: 100dvh;\n overflow-y: auto;\n border-radius: 12px;\n\n & > img,\n & > svg {\n width: 100%;\n max-width: 100%;\n margin: 0 auto;\n display: block;\n border-radius: 12px;\n }\n"])));
9992
- var Heading$6 = styled__default.default.h3(templateObject_2$e || (templateObject_2$e = __makeTemplateObject(["\n font-size: 1.2rem;\n margin: 0;\n"], ["\n font-size: 1.2rem;\n margin: 0;\n"])));
9993
- var templateObject_1$g, templateObject_2$e;
9977
+ var ImageContainer$5 = styled__default.default.div(templateObject_1$h || (templateObject_1$h = __makeTemplateObject(["\n position: relative;\n flex-grow: 1;\n margin-bottom: 25px;\n max-width: 100dvw;\n max-height: 100dvh;\n overflow-y: auto;\n border-radius: 12px;\n\n & > img,\n & > svg {\n width: 100%;\n max-width: 100%;\n margin: 0 auto;\n display: block;\n border-radius: 12px;\n }\n"], ["\n position: relative;\n flex-grow: 1;\n margin-bottom: 25px;\n max-width: 100dvw;\n max-height: 100dvh;\n overflow-y: auto;\n border-radius: 12px;\n\n & > img,\n & > svg {\n width: 100%;\n max-width: 100%;\n margin: 0 auto;\n display: block;\n border-radius: 12px;\n }\n"])));
9978
+ var Heading$6 = styled__default.default.h3(templateObject_2$f || (templateObject_2$f = __makeTemplateObject(["\n font-size: 1.2rem;\n margin: 0;\n"], ["\n font-size: 1.2rem;\n margin: 0;\n"])));
9979
+ var templateObject_1$h, templateObject_2$f;
9994
9980
 
9995
9981
  var FaceLivenessFailure = function FaceLivenessFailure(_a) {
9996
9982
  var _b = _a.canRetry,
@@ -10039,9 +10025,9 @@ var FaceLivenessFailure = function FaceLivenessFailure(_a) {
10039
10025
  finished: true
10040
10026
  }, verbiage.exitBtnText)))));
10041
10027
  };
10042
- var ImageContainer$4 = styled__default.default(OverlayImageContainer)(templateObject_1$f || (templateObject_1$f = __makeTemplateObject(["\n max-height: calc(100vh - 185px);\n"], ["\n max-height: calc(100vh - 185px);\n"])));
10043
- var Heading$5 = styled__default.default.h3(templateObject_2$d || (templateObject_2$d = __makeTemplateObject(["\n margin-bottom: 36px;\n"], ["\n margin-bottom: 36px;\n"])));
10044
- var templateObject_1$f, templateObject_2$d;
10028
+ var ImageContainer$4 = styled__default.default(OverlayImageContainer)(templateObject_1$g || (templateObject_1$g = __makeTemplateObject(["\n max-height: calc(100vh - 185px);\n"], ["\n max-height: calc(100vh - 185px);\n"])));
10029
+ var Heading$5 = styled__default.default.h3(templateObject_2$e || (templateObject_2$e = __makeTemplateObject(["\n margin-bottom: 36px;\n"], ["\n margin-bottom: 36px;\n"])));
10030
+ var templateObject_1$g, templateObject_2$e;
10045
10031
 
10046
10032
  var MicrophoneAccessDeniedOverlay = function MicrophoneAccessDeniedOverlay(_a) {
10047
10033
  var _b;
@@ -10053,7 +10039,9 @@ var MicrophoneAccessDeniedOverlay = function MicrophoneAccessDeniedOverlay(_a) {
10053
10039
  colors = _e === void 0 ? {} : _e,
10054
10040
  _f = _a.verbiage,
10055
10041
  rawVerbiage = _f === void 0 ? {} : _f;
10056
- var requestMicrophoneAccess = React.useContext(CameraStateContext).requestMicrophoneAccess;
10042
+ var requestMicrophoneAccess = useCameraStore(function (state) {
10043
+ return state.requestMicrophoneAccess;
10044
+ });
10057
10045
  assets.imageUrl || (assets.imageUrl = DEFAULT_CDN_URL + '/microphone-disable-icon.svg');
10058
10046
  var verbiage = useTranslations(rawVerbiage, {
10059
10047
  headingText: 'Your microphone permission is disabled',
@@ -10082,11 +10070,11 @@ var MicrophoneAccessDeniedOverlay = function MicrophoneAccessDeniedOverlay(_a) {
10082
10070
  finished: true
10083
10071
  }, verbiage.retryBtnText)));
10084
10072
  };
10085
- var StyledOverlayInner = styled__default.default(OverlayInner$2)(templateObject_1$e || (templateObject_1$e = __makeTemplateObject(["\n max-width: 500px;\n height: auto;\n margin: auto;\n"], ["\n max-width: 500px;\n height: auto;\n margin: auto;\n"])));
10086
- var StyledOverlayImageContainer$1 = styled__default.default(OverlayImageContainer)(templateObject_2$c || (templateObject_2$c = __makeTemplateObject(["\n flex-grow: 0;\n"], ["\n flex-grow: 0;\n"])));
10087
- var Description$1 = styled__default.default.p(templateObject_3$b || (templateObject_3$b = __makeTemplateObject(["\n line-height: 1.5;\n margin-bottom: 50px;\n"], ["\n line-height: 1.5;\n margin-bottom: 50px;\n"])));
10088
- var RetryButton = styled__default.default(LoaderButton)(templateObject_4$6 || (templateObject_4$6 = __makeTemplateObject(["\n width: 200px;\n margin: 0 auto;\n"], ["\n width: 200px;\n margin: 0 auto;\n"])));
10089
- var templateObject_1$e, templateObject_2$c, templateObject_3$b, templateObject_4$6;
10073
+ var StyledOverlayInner = styled__default.default(OverlayInner$2)(templateObject_1$f || (templateObject_1$f = __makeTemplateObject(["\n max-width: 500px;\n height: auto;\n margin: auto;\n"], ["\n max-width: 500px;\n height: auto;\n margin: auto;\n"])));
10074
+ var StyledOverlayImageContainer$1 = styled__default.default(OverlayImageContainer)(templateObject_2$d || (templateObject_2$d = __makeTemplateObject(["\n flex-grow: 0;\n"], ["\n flex-grow: 0;\n"])));
10075
+ var Description$1 = styled__default.default.p(templateObject_3$c || (templateObject_3$c = __makeTemplateObject(["\n line-height: 1.5;\n margin-bottom: 50px;\n"], ["\n line-height: 1.5;\n margin-bottom: 50px;\n"])));
10076
+ var RetryButton = styled__default.default(LoaderButton)(templateObject_4$7 || (templateObject_4$7 = __makeTemplateObject(["\n width: 200px;\n margin: 0 auto;\n"], ["\n width: 200px;\n margin: 0 auto;\n"])));
10077
+ var templateObject_1$f, templateObject_2$d, templateObject_3$c, templateObject_4$7;
10090
10078
 
10091
10079
  var SelfieCaptureLoadingOverlayLegacy = function SelfieCaptureLoadingOverlayLegacy(_a) {
10092
10080
  var onDismissed = _a.onDismissed,
@@ -10101,7 +10089,13 @@ var SelfieCaptureLoadingOverlayLegacy = function SelfieCaptureLoadingOverlayLega
10101
10089
  colors = _e === void 0 ? {} : _e,
10102
10090
  _f = _a.verbiage,
10103
10091
  rawVerbiage = _f === void 0 ? {} : _f;
10104
- var _g = React.useContext(CameraStateContext),
10092
+ var _g = useCameraStore(shallow.useShallow(function (state) {
10093
+ return {
10094
+ cameraReady: state.cameraReady,
10095
+ cameraAccessDenied: state.cameraAccessDenied,
10096
+ microphoneAccessDenied: state.microphoneAccessDenied
10097
+ };
10098
+ })),
10105
10099
  cameraReady = _g.cameraReady,
10106
10100
  cameraAccessDenied = _g.cameraAccessDenied,
10107
10101
  microphoneAccessDenied = _g.microphoneAccessDenied;
@@ -10169,9 +10163,9 @@ var SelfieCaptureLoadingOverlayLegacy = function SelfieCaptureLoadingOverlayLega
10169
10163
  }
10170
10164
  }, cameraReady && allModelsReady ? verbiage.continueText : allModelsReady ? verbiage.cameraInitializingText : modelDownloadProgress >= 100 ? "".concat(verbiage.modelsWarmingUpText) : "".concat(verbiage.downloadingText, " (").concat(modelDownloadProgress, "%)")))));
10171
10165
  };
10172
- var StyledGuidanceMessage$1 = styled__default.default(GuidanceMessage)(templateObject_1$d || (templateObject_1$d = __makeTemplateObject(["\n padding: 12px 24px;\n font-weight: normal;\n line-height: 1.5;\n margin-bottom: -30px;\n"], ["\n padding: 12px 24px;\n font-weight: normal;\n line-height: 1.5;\n margin-bottom: -30px;\n"])));
10173
- var StyledButtonsRow$6 = styled__default.default(ButtonsRow)(templateObject_2$b || (templateObject_2$b = __makeTemplateObject(["\n flex-direction: column;\n padding-top: 25px;\n"], ["\n flex-direction: column;\n padding-top: 25px;\n"])));
10174
- var templateObject_1$d, templateObject_2$b;
10166
+ var StyledGuidanceMessage$1 = styled__default.default(GuidanceMessage)(templateObject_1$e || (templateObject_1$e = __makeTemplateObject(["\n padding: 12px 24px;\n font-weight: normal;\n line-height: 1.5;\n margin-bottom: -30px;\n"], ["\n padding: 12px 24px;\n font-weight: normal;\n line-height: 1.5;\n margin-bottom: -30px;\n"])));
10167
+ var StyledButtonsRow$6 = styled__default.default(ButtonsRow)(templateObject_2$c || (templateObject_2$c = __makeTemplateObject(["\n flex-direction: column;\n padding-top: 25px;\n"], ["\n flex-direction: column;\n padding-top: 25px;\n"])));
10168
+ var templateObject_1$e, templateObject_2$c;
10175
10169
 
10176
10170
  var legacyInstructionImageUrl = "".concat(DEFAULT_CDN_URL, "/Selfie-Image-1.png");
10177
10171
  var SelfieCaptureLoadingOverlayDefault = function SelfieCaptureLoadingOverlayDefault(_a) {
@@ -10188,7 +10182,13 @@ var SelfieCaptureLoadingOverlayDefault = function SelfieCaptureLoadingOverlayDef
10188
10182
  colors = _e === void 0 ? {} : _e,
10189
10183
  _f = _a.verbiage,
10190
10184
  rawVerbiage = _f === void 0 ? {} : _f;
10191
- var _g = React.useContext(CameraStateContext),
10185
+ var _g = useCameraStore(shallow.useShallow(function (state) {
10186
+ return {
10187
+ cameraReady: state.cameraReady,
10188
+ cameraAccessDenied: state.cameraAccessDenied,
10189
+ microphoneAccessDenied: state.microphoneAccessDenied
10190
+ };
10191
+ })),
10192
10192
  cameraReady = _g.cameraReady,
10193
10193
  cameraAccessDenied = _g.cameraAccessDenied,
10194
10194
  microphoneAccessDenied = _g.microphoneAccessDenied;
@@ -10296,30 +10296,30 @@ var SelfieCaptureLoadingOverlayDefault = function SelfieCaptureLoadingOverlayDef
10296
10296
  }
10297
10297
  }, verbiage.continueText))))));
10298
10298
  };
10299
- var OverlayInner = styled__default.default.div(templateObject_1$c || (templateObject_1$c = __makeTemplateObject(["\n height: 100dvh;\n display: flex;\n flex-direction: column;\n background: ", ";\n color: ", ";\n"], ["\n height: 100dvh;\n display: flex;\n flex-direction: column;\n background: ", ";\n color: ", ";\n"])), function (props) {
10299
+ var OverlayInner = styled__default.default.div(templateObject_1$d || (templateObject_1$d = __makeTemplateObject(["\n height: 100dvh;\n display: flex;\n flex-direction: column;\n background: ", ";\n color: ", ";\n"], ["\n height: 100dvh;\n display: flex;\n flex-direction: column;\n background: ", ";\n color: ", ";\n"])), function (props) {
10300
10300
  var _a, _b, _c, _d;
10301
10301
  return (_d = (_c = (_b = (_a = props.theme) === null || _a === void 0 ? void 0 : _a.selfieCapture) === null || _b === void 0 ? void 0 : _b.loadingOverlay) === null || _c === void 0 ? void 0 : _c.backgroundColor) !== null && _d !== void 0 ? _d : '#ecedf3';
10302
10302
  }, function (props) {
10303
10303
  var _a, _b, _c, _d;
10304
10304
  return (_d = (_c = (_b = (_a = props.theme) === null || _a === void 0 ? void 0 : _a.selfieCapture) === null || _b === void 0 ? void 0 : _b.loadingOverlay) === null || _c === void 0 ? void 0 : _c.textColor) !== null && _d !== void 0 ? _d : 'black';
10305
10305
  });
10306
- var OverlayHeader = styled__default.default.div(templateObject_2$a || (templateObject_2$a = __makeTemplateObject(["\n text-align: ", ";\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n ", "\n padding-bottom: 0;\n"], ["\n text-align: ", ";\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n ", "\n padding-bottom: 0;\n"])), function (props) {
10306
+ var OverlayHeader = styled__default.default.div(templateObject_2$b || (templateObject_2$b = __makeTemplateObject(["\n text-align: ", ";\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n ", "\n padding-bottom: 0;\n"], ["\n text-align: ", ";\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n ", "\n padding-bottom: 0;\n"])), function (props) {
10307
10307
  var _a;
10308
10308
  return (_a = props.theme.textAlign) !== null && _a !== void 0 ? _a : 'center';
10309
10309
  }, function (props) {
10310
10310
  return props.theme.padding ? "box-sizing: border-box; padding: ".concat(props.theme.padding, ";") : "";
10311
10311
  });
10312
- var StyledGuidanceMessage = styled__default.default(GuidanceMessage)(templateObject_3$a || (templateObject_3$a = __makeTemplateObject(["\n padding: 16px 24px;\n margin-top: 16px;\n font-size: 18px;\n font-weight: bold;\n background: white;\n box-shadow:\n 0 1px 3px 0 rgb(0 0 0 / 0.1),\n 0 1px 2px -1px rgb(0 0 0 / 0.1);\n"], ["\n padding: 16px 24px;\n margin-top: 16px;\n font-size: 18px;\n font-weight: bold;\n background: white;\n box-shadow:\n 0 1px 3px 0 rgb(0 0 0 / 0.1),\n 0 1px 2px -1px rgb(0 0 0 / 0.1);\n"])));
10313
- var StyledButtonsRow$5 = styled__default.default(ButtonsRow)(templateObject_4$5 || (templateObject_4$5 = __makeTemplateObject(["\n display: flex;\n flex-direction: row;\n padding: 15px 25px;\n height: 100px;\n color: ", ";\n ", "\n position: fixed;\n bottom: 0;\n left: 0;\n width: 100dvw;\n box-sizing: border-box;\n"], ["\n display: flex;\n flex-direction: row;\n padding: 15px 25px;\n height: 100px;\n color: ", ";\n ", "\n position: fixed;\n bottom: 0;\n left: 0;\n width: 100dvw;\n box-sizing: border-box;\n"])), function (props) {
10312
+ var StyledGuidanceMessage = styled__default.default(GuidanceMessage)(templateObject_3$b || (templateObject_3$b = __makeTemplateObject(["\n padding: 16px 24px;\n margin-top: 16px;\n font-size: 18px;\n font-weight: bold;\n background: white;\n box-shadow:\n 0 1px 3px 0 rgb(0 0 0 / 0.1),\n 0 1px 2px -1px rgb(0 0 0 / 0.1);\n"], ["\n padding: 16px 24px;\n margin-top: 16px;\n font-size: 18px;\n font-weight: bold;\n background: white;\n box-shadow:\n 0 1px 3px 0 rgb(0 0 0 / 0.1),\n 0 1px 2px -1px rgb(0 0 0 / 0.1);\n"])));
10313
+ var StyledButtonsRow$5 = styled__default.default(ButtonsRow)(templateObject_4$6 || (templateObject_4$6 = __makeTemplateObject(["\n display: flex;\n flex-direction: row;\n padding: 15px 25px;\n height: 100px;\n color: ", ";\n ", "\n position: fixed;\n bottom: 0;\n left: 0;\n width: 100dvw;\n box-sizing: border-box;\n"], ["\n display: flex;\n flex-direction: row;\n padding: 15px 25px;\n height: 100px;\n color: ", ";\n ", "\n position: fixed;\n bottom: 0;\n left: 0;\n width: 100dvw;\n box-sizing: border-box;\n"])), function (props) {
10314
10314
  var _a, _b, _c, _d;
10315
10315
  return (_d = (_c = (_b = (_a = props.theme) === null || _a === void 0 ? void 0 : _a.selfieCapture) === null || _b === void 0 ? void 0 : _b.loadingOverlay) === null || _c === void 0 ? void 0 : _c.progressBarTextColor) !== null && _d !== void 0 ? _d : 'white';
10316
10316
  }, function (props) {
10317
10317
  var _a, _b, _c, _d, _e, _f;
10318
10318
  return ((_c = (_b = (_a = props.theme) === null || _a === void 0 ? void 0 : _a.selfieCapture) === null || _b === void 0 ? void 0 : _b.loadingOverlay) === null || _c === void 0 ? void 0 : _c.progressBarFontSize) ? "font-size: ".concat((_f = (_e = (_d = props.theme) === null || _d === void 0 ? void 0 : _d.selfieCapture) === null || _e === void 0 ? void 0 : _e.loadingOverlay) === null || _f === void 0 ? void 0 : _f.progressBarFontSize, ";") : '';
10319
10319
  });
10320
- var StyledOverlayImageContainer = styled__default.default(OverlayImageContainer)(templateObject_5$2 || (templateObject_5$2 = __makeTemplateObject(["\n padding: 0;\n\n & > svg {\n height: 100%;\n }\n"], ["\n padding: 0;\n\n & > svg {\n height: 100%;\n }\n"])));
10321
- var LoadingListContainer = styled__default.default.div(templateObject_6$2 || (templateObject_6$2 = __makeTemplateObject(["\n display: flex;\n position: relative;\n z-index: 2;\n"], ["\n display: flex;\n position: relative;\n z-index: 2;\n"])));
10322
- var LoadingList = styled__default.default.ul(templateObject_7$1 || (templateObject_7$1 = __makeTemplateObject(["\n display: block;\n margin: auto;\n list-style: none;\n padding: 0;\n"], ["\n display: block;\n margin: auto;\n list-style: none;\n padding: 0;\n"])));
10320
+ var StyledOverlayImageContainer = styled__default.default(OverlayImageContainer)(templateObject_5$3 || (templateObject_5$3 = __makeTemplateObject(["\n padding: 0;\n\n & > svg {\n height: 100%;\n }\n"], ["\n padding: 0;\n\n & > svg {\n height: 100%;\n }\n"])));
10321
+ var LoadingListContainer = styled__default.default.div(templateObject_6$3 || (templateObject_6$3 = __makeTemplateObject(["\n display: flex;\n position: relative;\n z-index: 2;\n"], ["\n display: flex;\n position: relative;\n z-index: 2;\n"])));
10322
+ var LoadingList = styled__default.default.ul(templateObject_7$2 || (templateObject_7$2 = __makeTemplateObject(["\n display: block;\n margin: auto;\n list-style: none;\n padding: 0;\n"], ["\n display: block;\n margin: auto;\n list-style: none;\n padding: 0;\n"])));
10323
10323
  var LoadingListItem = styled__default.default.li(templateObject_8 || (templateObject_8 = __makeTemplateObject(["\n display: inline-flex;\n justify-content: center;\n align-items: center;\n padding: 2px 1.25rem 2px 0;\n line-height: 1rem;\n"], ["\n display: inline-flex;\n justify-content: center;\n align-items: center;\n padding: 2px 1.25rem 2px 0;\n line-height: 1rem;\n"])));
10324
10324
  var ProgressContainer = styled__default.default.div(templateObject_9 || (templateObject_9 = __makeTemplateObject(["\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n"], ["\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n"])));
10325
10325
  var ProgressBarBackground = styled__default.default.div(templateObject_10 || (templateObject_10 = __makeTemplateObject(["\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: ", ";\n opacity: ", ";\n"], ["\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background: ", ";\n opacity: ", ";\n"])), function (props) {
@@ -10345,7 +10345,7 @@ var ContinueButton = styled__default.default(LoaderButton)(templateObject_15 ||
10345
10345
  var _a, _b, _c, _d, _e, _f;
10346
10346
  return ((_c = (_b = (_a = props.theme) === null || _a === void 0 ? void 0 : _a.selfieCapture) === null || _b === void 0 ? void 0 : _b.loadingOverlay) === null || _c === void 0 ? void 0 : _c.continueBtnBorder) ? "border: ".concat((_f = (_e = (_d = props.theme) === null || _d === void 0 ? void 0 : _d.selfieCapture) === null || _e === void 0 ? void 0 : _e.loadingOverlay) === null || _f === void 0 ? void 0 : _f.continueBtnBorder, ";") : '';
10347
10347
  });
10348
- var templateObject_1$c, templateObject_2$a, templateObject_3$a, templateObject_4$5, templateObject_5$2, templateObject_6$2, templateObject_7$1, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15;
10348
+ var templateObject_1$d, templateObject_2$b, templateObject_3$b, templateObject_4$6, templateObject_5$3, templateObject_6$3, templateObject_7$2, templateObject_8, templateObject_9, templateObject_10, templateObject_11, templateObject_12, templateObject_13, templateObject_14, templateObject_15;
10349
10349
 
10350
10350
  var components = {
10351
10351
  "default": SelfieCaptureLoadingOverlayDefault,
@@ -10405,7 +10405,13 @@ var FaceLivenessWizard = function FaceLivenessWizard(_a) {
10405
10405
  livenessCheckRequest = _t.livenessCheckRequest,
10406
10406
  setSelfieImage = _t.setSelfieImage,
10407
10407
  logSelfieCaptureAttempt = _t.logSelfieCaptureAttempt;
10408
- var _u = React.useContext(CameraStateContext),
10408
+ var _u = useCameraStore(shallow.useShallow(function (state) {
10409
+ return {
10410
+ cameraAccessDenied: state.cameraAccessDenied,
10411
+ requestCameraAccess: state.requestCameraAccess,
10412
+ releaseCameraAccess: state.releaseCameraAccess
10413
+ };
10414
+ })),
10409
10415
  cameraAccessDenied = _u.cameraAccessDenied,
10410
10416
  requestCameraAccess = _u.requestCameraAccess,
10411
10417
  releaseCameraAccess = _u.releaseCameraAccess;
@@ -10674,7 +10680,7 @@ var AdditionalDocumentCapture = function AdditionalDocumentCapture(_a) {
10674
10680
  }
10675
10681
  return /*#__PURE__*/React__namespace.default.createElement(OverlayContainer, {
10676
10682
  className: classNames.container
10677
- }, /*#__PURE__*/React__namespace.default.createElement(Inner$1, {
10683
+ }, /*#__PURE__*/React__namespace.default.createElement(Inner$2, {
10678
10684
  className: classNames.inner
10679
10685
  }, /*#__PURE__*/React__namespace.default.createElement(Heading$4, {
10680
10686
  className: classNames.heading
@@ -10704,11 +10710,11 @@ var AdditionalDocumentCapture = function AdditionalDocumentCapture(_a) {
10704
10710
  }
10705
10711
  }, verbiage.captureBtnText)))));
10706
10712
  };
10707
- var Inner$1 = styled__default.default(OverlayInner$2)(templateObject_1$b || (templateObject_1$b = __makeTemplateObject(["\n justify-content: center;\n"], ["\n justify-content: center;\n"])));
10708
- var Heading$4 = styled__default.default.h3(templateObject_2$9 || (templateObject_2$9 = __makeTemplateObject(["\n margin-bottom: 8px;\n"], ["\n margin-bottom: 8px;\n"])));
10709
- var Description = styled__default.default.p(templateObject_3$9 || (templateObject_3$9 = __makeTemplateObject(["\n margin-bottom: 8px;\n"], ["\n margin-bottom: 8px;\n"])));
10710
- var StyledButtonsRow$4 = styled__default.default(ButtonsRow)(templateObject_4$4 || (templateObject_4$4 = __makeTemplateObject(["\n margin-top: 32px;\n"], ["\n margin-top: 32px;\n"])));
10711
- var templateObject_1$b, templateObject_2$9, templateObject_3$9, templateObject_4$4;
10713
+ var Inner$2 = styled__default.default(OverlayInner$2)(templateObject_1$c || (templateObject_1$c = __makeTemplateObject(["\n justify-content: center;\n"], ["\n justify-content: center;\n"])));
10714
+ var Heading$4 = styled__default.default.h3(templateObject_2$a || (templateObject_2$a = __makeTemplateObject(["\n margin-bottom: 8px;\n"], ["\n margin-bottom: 8px;\n"])));
10715
+ var Description = styled__default.default.p(templateObject_3$a || (templateObject_3$a = __makeTemplateObject(["\n margin-bottom: 8px;\n"], ["\n margin-bottom: 8px;\n"])));
10716
+ var StyledButtonsRow$4 = styled__default.default(ButtonsRow)(templateObject_4$5 || (templateObject_4$5 = __makeTemplateObject(["\n margin-top: 32px;\n"], ["\n margin-top: 32px;\n"])));
10717
+ var templateObject_1$c, templateObject_2$a, templateObject_3$a, templateObject_4$5;
10712
10718
 
10713
10719
  var AdditionalDocumentCaptureWizard = function AdditionalDocumentCaptureWizard(_a) {
10714
10720
  var documents = _a.documents,
@@ -10852,7 +10858,7 @@ function convertSVGtoImg(svgData_1) {
10852
10858
  });
10853
10859
  }
10854
10860
 
10855
- var SignaturePaperBacking = styled__default.default.div(templateObject_1$a || (templateObject_1$a = __makeTemplateObject(["\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n ", "\n ", "\n ", "\n"], ["\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n ", "\n ", "\n ", "\n"])), function (props) {
10861
+ var SignaturePaperBacking = styled__default.default.div(templateObject_1$b || (templateObject_1$b = __makeTemplateObject(["\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n ", "\n ", "\n ", "\n"], ["\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n ", "\n ", "\n ", "\n"])), function (props) {
10856
10862
  var _a, _b;
10857
10863
  return ((_a = props.theme.signatureCapture) === null || _a === void 0 ? void 0 : _a.background) ? "background: ".concat((_b = props.theme.signatureCapture) === null || _b === void 0 ? void 0 : _b.background, ";") : "";
10858
10864
  }, function (props) {
@@ -10862,8 +10868,8 @@ var SignaturePaperBacking = styled__default.default.div(templateObject_1$a || (t
10862
10868
  var _a, _b;
10863
10869
  return ((_a = props.theme.signatureCapture) === null || _a === void 0 ? void 0 : _a.backgroundPosition) ? "background-position: ".concat((_b = props.theme.signatureCapture) === null || _b === void 0 ? void 0 : _b.backgroundPosition, ";") : "";
10864
10870
  });
10865
- var SignatureCanvasContainer$1 = styled__default.default.div(templateObject_2$8 || (templateObject_2$8 = __makeTemplateObject(["\n position: absolute;\n top: 25%;\n left: 15%;\n width: 70%;\n height: 50%;\n\n @media (max-width: 800px) {\n top: 15%;\n left: 2%;\n width: 96%;\n height: 70%;\n }\n"], ["\n position: absolute;\n top: 25%;\n left: 15%;\n width: 70%;\n height: 50%;\n\n @media (max-width: 800px) {\n top: 15%;\n left: 2%;\n width: 96%;\n height: 70%;\n }\n"])));
10866
- var SignaturePad = styled__default.default.div(templateObject_3$8 || (templateObject_3$8 = __makeTemplateObject(["\n position: relative;\n background: ", ";\n border: ", ";\n border-radius: ", ";\n flex-grow: 1;\n z-index: 100;\n height: 100%;\n"], ["\n position: relative;\n background: ", ";\n border: ", ";\n border-radius: ", ";\n flex-grow: 1;\n z-index: 100;\n height: 100%;\n"])), function (props) {
10871
+ var SignatureCanvasContainer$1 = styled__default.default.div(templateObject_2$9 || (templateObject_2$9 = __makeTemplateObject(["\n position: absolute;\n top: 25%;\n left: 15%;\n width: 70%;\n height: 50%;\n\n @media (max-width: 800px) {\n top: 15%;\n left: 2%;\n width: 96%;\n height: 70%;\n }\n"], ["\n position: absolute;\n top: 25%;\n left: 15%;\n width: 70%;\n height: 50%;\n\n @media (max-width: 800px) {\n top: 15%;\n left: 2%;\n width: 96%;\n height: 70%;\n }\n"])));
10872
+ var SignaturePad = styled__default.default.div(templateObject_3$9 || (templateObject_3$9 = __makeTemplateObject(["\n position: relative;\n background: ", ";\n border: ", ";\n border-radius: ", ";\n flex-grow: 1;\n z-index: 100;\n height: 100%;\n"], ["\n position: relative;\n background: ", ";\n border: ", ";\n border-radius: ", ";\n flex-grow: 1;\n z-index: 100;\n height: 100%;\n"])), function (props) {
10867
10873
  var _a, _b, _c;
10868
10874
  return (_c = (_b = (_a = props.theme.signatureCapture) === null || _a === void 0 ? void 0 : _a.canvas) === null || _b === void 0 ? void 0 : _b.background) !== null && _c !== void 0 ? _c : 'rgba(255, 255, 255, 0.5)';
10869
10875
  }, function (props) {
@@ -10873,8 +10879,8 @@ var SignaturePad = styled__default.default.div(templateObject_3$8 || (templateOb
10873
10879
  var _a, _b, _c;
10874
10880
  return (_c = (_b = (_a = props.theme.signatureCapture) === null || _a === void 0 ? void 0 : _a.canvas) === null || _b === void 0 ? void 0 : _b.borderRadius) !== null && _c !== void 0 ? _c : '16px';
10875
10881
  });
10876
- var SignatureButtonsContainer = styled__default.default(ButtonsRow)(templateObject_4$3 || (templateObject_4$3 = __makeTemplateObject(["\n flex-grow: 0;\n padding-top: 12px;\n display: flex;\n z-index: 1000;\n position: relative;\n"], ["\n flex-grow: 0;\n padding-top: 12px;\n display: flex;\n z-index: 1000;\n position: relative;\n"])));
10877
- var templateObject_1$a, templateObject_2$8, templateObject_3$8, templateObject_4$3;
10882
+ var SignatureButtonsContainer = styled__default.default(ButtonsRow)(templateObject_4$4 || (templateObject_4$4 = __makeTemplateObject(["\n flex-grow: 0;\n padding-top: 12px;\n display: flex;\n z-index: 1000;\n position: relative;\n"], ["\n flex-grow: 0;\n padding-top: 12px;\n display: flex;\n z-index: 1000;\n position: relative;\n"])));
10883
+ var templateObject_1$b, templateObject_2$9, templateObject_3$9, templateObject_4$4;
10878
10884
 
10879
10885
  var SignatureCapture = function SignatureCapture(_a) {
10880
10886
  var _b;
@@ -10945,8 +10951,8 @@ var SignatureCapture = function SignatureCapture(_a) {
10945
10951
  finished: true
10946
10952
  }, verbiage.acceptBtnText)))));
10947
10953
  };
10948
- var AcceptBtn$1 = styled__default.default(LoaderButton)(templateObject_1$9 || (templateObject_1$9 = __makeTemplateObject(["\n margin-left: auto;\n"], ["\n margin-left: auto;\n"])));
10949
- var templateObject_1$9;
10954
+ var AcceptBtn$1 = styled__default.default(LoaderButton)(templateObject_1$a || (templateObject_1$a = __makeTemplateObject(["\n margin-left: auto;\n"], ["\n margin-left: auto;\n"])));
10955
+ var templateObject_1$a;
10950
10956
 
10951
10957
  var useVideoRecorder = function useVideoRecorder(camera, audioStream, mergeAVStreams) {
10952
10958
  if (mergeAVStreams === void 0) {
@@ -11126,10 +11132,10 @@ function VideoSignatureContextProvider(_a) {
11126
11132
  setSignatureVideoUrl = _e[1];
11127
11133
  var signatureRecorder = React.useRef(null);
11128
11134
  var recordedChunks = React.useRef([]);
11129
- var _f = React.useContext(CameraStateContext),
11130
- cameraRef = _f.cameraRef,
11135
+ var _f = useCameraStore(),
11136
+ camera = _f.camera,
11131
11137
  videoRef = _f.videoRef;
11132
- var _g = useVideoRecorder(cameraRef.current),
11138
+ var _g = useVideoRecorder(camera),
11133
11139
  isRecordingVideo = _g.isRecordingVideo,
11134
11140
  startRecordingVideo = _g.startRecordingVideo,
11135
11141
  stopRecordingVideo = _g.stopRecordingVideo,
@@ -11197,8 +11203,8 @@ function VideoSignatureContextProvider(_a) {
11197
11203
  var animationFrame = React.useRef(0);
11198
11204
  React.useEffect(function () {
11199
11205
  var _a;
11200
- if (!signaturePad.current || !videoRef.current || !outputCanvas.current || !cameraRef.current || !isRecording || !isRecordingVideo) return;
11201
- var _b = [cameraRef.current.width, cameraRef.current.height],
11206
+ if (!signaturePad.current || !videoRef.current || !outputCanvas.current || !camera || !isRecording || !isRecordingVideo) return;
11207
+ var _b = [camera.width, camera.height],
11202
11208
  w = _b[0],
11203
11209
  h = _b[1];
11204
11210
  var isPortrait = typeof window !== 'undefined' && window.innerWidth < window.innerHeight;
@@ -11231,7 +11237,7 @@ function VideoSignatureContextProvider(_a) {
11231
11237
  return function () {
11232
11238
  cancelAnimationFrame(animationFrame.current);
11233
11239
  };
11234
- }, [cameraRef, isRecording, isRecordingVideo, videoRef]);
11240
+ }, [camera, isRecording, isRecordingVideo, videoRef]);
11235
11241
  var onAcceptClicked = React.useCallback(function () {
11236
11242
  return __awaiter(_this, void 0, void 0, function () {
11237
11243
  var imageUrl;
@@ -11306,11 +11312,11 @@ function VideoSignatureGuides(_a) {
11306
11312
  className: classNames.signatureCanvas
11307
11313
  };
11308
11314
  }, [classNames.signatureCanvas, height, width]);
11309
- return /*#__PURE__*/React__namespace.default.createElement(Container, {
11315
+ return /*#__PURE__*/React__namespace.default.createElement(Container$1, {
11310
11316
  className: classNames.container
11311
- }, /*#__PURE__*/React__namespace.default.createElement(Inner, {
11317
+ }, /*#__PURE__*/React__namespace.default.createElement(Inner$1, {
11312
11318
  className: classNames.inner
11313
- }, /*#__PURE__*/React__namespace.default.createElement(FaceGuideContainer, {
11319
+ }, /*#__PURE__*/React__namespace.default.createElement(FaceGuideContainer$1, {
11314
11320
  className: classNames.faceGuideContainer
11315
11321
  }, /*#__PURE__*/React__namespace.default.createElement(StyledSelfieCaptureAnimatedMask, {
11316
11322
  className: classNames.faceGuide,
@@ -11345,42 +11351,44 @@ function VideoSignatureGuides(_a) {
11345
11351
  finished: true
11346
11352
  }, verbiage.acceptSignatureBtnText))))));
11347
11353
  }
11348
- var Container = styled__default.default.div(templateObject_1$8 || (templateObject_1$8 = __makeTemplateObject(["\n display: flex;\n max-height: 100%;\n position: absolute;\n z-index: 1000;\n width: 100dvw;\n height: 100dvh;\n font-family: ", ";\n box-sizing: border-box;\n overflow: hidden;\n padding: 40px;\n"], ["\n display: flex;\n max-height: 100%;\n position: absolute;\n z-index: 1000;\n width: 100dvw;\n height: 100dvh;\n font-family: ", ";\n box-sizing: border-box;\n overflow: hidden;\n padding: 40px;\n"])), function (props) {
11354
+ var Container$1 = styled__default.default.div(templateObject_1$9 || (templateObject_1$9 = __makeTemplateObject(["\n display: flex;\n max-height: 100%;\n position: absolute;\n z-index: 1000;\n width: 100dvw;\n height: 100dvh;\n font-family: ", ";\n box-sizing: border-box;\n overflow: hidden;\n padding: 40px;\n"], ["\n display: flex;\n max-height: 100%;\n position: absolute;\n z-index: 1000;\n width: 100dvw;\n height: 100dvh;\n font-family: ", ";\n box-sizing: border-box;\n overflow: hidden;\n padding: 40px;\n"])), function (props) {
11349
11355
  var _a;
11350
11356
  return (_a = props.theme) === null || _a === void 0 ? void 0 : _a.fontFamily;
11351
11357
  });
11352
- var Inner = styled__default.default.div(templateObject_2$7 || (templateObject_2$7 = __makeTemplateObject(["\n width: 100%;\n height: 100%;\n max-height: 1280px;\n display: flex;\n margin: auto;\n align-items: center;\n flex-direction: column;\n"], ["\n width: 100%;\n height: 100%;\n max-height: 1280px;\n display: flex;\n margin: auto;\n align-items: center;\n flex-direction: column;\n"])));
11353
- var FaceGuideContainer = styled__default.default.div(templateObject_3$7 || (templateObject_3$7 = __makeTemplateObject(["\n position: relative;\n height: 50%;\n"], ["\n position: relative;\n height: 50%;\n"])));
11354
- var StyledSelfieCaptureAnimatedMask = styled__default.default(SelfieCaptureAnimatedMaskWithStatus)(templateObject_4$2 || (templateObject_4$2 = __makeTemplateObject(["\n max-width: 100%;\n height: 100%;\n"], ["\n max-width: 100%;\n height: 100%;\n"])));
11355
- var SignaturePadContainer = styled__default.default.div(templateObject_5$1 || (templateObject_5$1 = __makeTemplateObject(["\n position: relative;\n max-width: 100%;\n height: 50%;\n aspect-ratio: 2;\n"], ["\n position: relative;\n max-width: 100%;\n height: 50%;\n aspect-ratio: 2;\n"])));
11356
- var SignatureCanvasContainer = styled__default.default.div(templateObject_6$1 || (templateObject_6$1 = __makeTemplateObject(["\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: calc(100% - 67px);\n ", "\n"], ["\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: calc(100% - 67px);\n ", "\n"])), function (props) {
11358
+ var Inner$1 = styled__default.default.div(templateObject_2$8 || (templateObject_2$8 = __makeTemplateObject(["\n width: 100%;\n height: 100%;\n max-height: 1280px;\n display: flex;\n margin: auto;\n align-items: center;\n flex-direction: column;\n"], ["\n width: 100%;\n height: 100%;\n max-height: 1280px;\n display: flex;\n margin: auto;\n align-items: center;\n flex-direction: column;\n"])));
11359
+ var FaceGuideContainer$1 = styled__default.default.div(templateObject_3$8 || (templateObject_3$8 = __makeTemplateObject(["\n position: relative;\n height: 50%;\n"], ["\n position: relative;\n height: 50%;\n"])));
11360
+ var StyledSelfieCaptureAnimatedMask = styled__default.default(SelfieCaptureAnimatedMaskWithStatus)(templateObject_4$3 || (templateObject_4$3 = __makeTemplateObject(["\n max-width: 100%;\n height: 100%;\n"], ["\n max-width: 100%;\n height: 100%;\n"])));
11361
+ var SignaturePadContainer = styled__default.default.div(templateObject_5$2 || (templateObject_5$2 = __makeTemplateObject(["\n position: relative;\n max-width: 100%;\n height: 50%;\n aspect-ratio: 2;\n"], ["\n position: relative;\n max-width: 100%;\n height: 50%;\n aspect-ratio: 2;\n"])));
11362
+ var SignatureCanvasContainer = styled__default.default.div(templateObject_6$2 || (templateObject_6$2 = __makeTemplateObject(["\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: calc(100% - 67px);\n ", "\n"], ["\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: calc(100% - 67px);\n ", "\n"])), function (props) {
11357
11363
  return props.$disabled ? 'opacity: 0.5; pointer-events: none;' : '';
11358
11364
  });
11359
- var AcceptBtn = styled__default.default(LoaderButton)(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n margin-left: auto;\n"], ["\n margin-left: auto;\n"])));
11360
- var templateObject_1$8, templateObject_2$7, templateObject_3$7, templateObject_4$2, templateObject_5$1, templateObject_6$1, templateObject_7;
11365
+ var AcceptBtn = styled__default.default(LoaderButton)(templateObject_7$1 || (templateObject_7$1 = __makeTemplateObject(["\n margin-left: auto;\n"], ["\n margin-left: auto;\n"])));
11366
+ var templateObject_1$9, templateObject_2$8, templateObject_3$8, templateObject_4$3, templateObject_5$2, templateObject_6$2, templateObject_7$1;
11361
11367
 
11362
11368
  var VideoSignatureCapture = function VideoSignatureCapture(_a) {
11363
- var _b, _c, _d;
11369
+ var _b;
11364
11370
  var onVideoCaptured = _a.onVideoCaptured,
11365
11371
  onFaceNotDetected = _a.onFaceNotDetected,
11366
11372
  onExit = _a.onExit,
11367
11373
  guidesComponent = _a.guidesComponent,
11368
- _e = _a.classNames,
11369
- classNames = _e === void 0 ? {} : _e,
11370
- _f = _a.colors,
11371
- colors = _f === void 0 ? {} : _f,
11372
- _g = _a.verbiage,
11373
- rawVerbiage = _g === void 0 ? {} : _g,
11374
- _h = _a.debugMode,
11375
- debugMode = _h === void 0 ? false : _h;
11376
- var cameraRef = React.useContext(CameraStateContext).cameraRef;
11374
+ _c = _a.classNames,
11375
+ classNames = _c === void 0 ? {} : _c,
11376
+ _d = _a.colors,
11377
+ colors = _d === void 0 ? {} : _d,
11378
+ _e = _a.verbiage,
11379
+ rawVerbiage = _e === void 0 ? {} : _e,
11380
+ _f = _a.debugMode,
11381
+ debugMode = _f === void 0 ? false : _f;
11382
+ var camera = useCameraStore(function (state) {
11383
+ return state.camera;
11384
+ });
11377
11385
  var onPredictionMade = React.useContext(SelfieGuidanceModelsContext).onPredictionMade;
11378
- var _j = useVideoSignatureContext(),
11379
- signatureData = _j.signatureData,
11380
- signatureDataUrl = _j.signatureDataUrl,
11381
- signatureVideoData = _j.signatureVideoData,
11382
- startRecording = _j.startRecording,
11383
- stopRecording = _j.stopRecording;
11386
+ var _g = useVideoSignatureContext(),
11387
+ signatureData = _g.signatureData,
11388
+ signatureDataUrl = _g.signatureDataUrl,
11389
+ signatureVideoData = _g.signatureVideoData,
11390
+ startRecording = _g.startRecording,
11391
+ stopRecording = _g.stopRecording;
11384
11392
  React.useEffect(function () {
11385
11393
  startRecording();
11386
11394
  return function () {
@@ -11397,9 +11405,9 @@ var VideoSignatureCapture = function VideoSignatureCapture(_a) {
11397
11405
  onVideoCaptured === null || onVideoCaptured === void 0 ? void 0 : onVideoCaptured(signatureVideoData, signatureData, signatureDataUrl);
11398
11406
  }
11399
11407
  }, [onVideoCaptured, signatureData, signatureDataUrl, signatureVideoData]);
11400
- var _k = React.useState(0),
11401
- numFramesWithoutFaces = _k[0],
11402
- setNumFramesWithoutFaces = _k[1];
11408
+ var _h = React.useState(0),
11409
+ numFramesWithoutFaces = _h[0],
11410
+ setNumFramesWithoutFaces = _h[1];
11403
11411
  React.useEffect(function () {
11404
11412
  onPredictionMade(function (_a) {
11405
11413
  var face = _a.face;
@@ -11426,7 +11434,7 @@ var VideoSignatureCapture = function VideoSignatureCapture(_a) {
11426
11434
  }, verbiage.guidanceMessageText))), /*#__PURE__*/React__namespace.default.createElement(GuidesComponent, {
11427
11435
  classNames: classNames.videoSignatureGuidesClassNames,
11428
11436
  status: "success"
11429
- }), debugMode && ( /*#__PURE__*/React__namespace.default.createElement(DebugStatsPane, null, "Video: ", (_c = cameraRef.current) === null || _c === void 0 ? void 0 : _c.width, "x", (_d = cameraRef.current) === null || _d === void 0 ? void 0 : _d.height)), /*#__PURE__*/React__namespace.default.createElement(ExitCaptureButton, {
11437
+ }), debugMode && ( /*#__PURE__*/React__namespace.default.createElement(DebugStatsPane, null, "Video: ", camera === null || camera === void 0 ? void 0 : camera.width, "x", camera === null || camera === void 0 ? void 0 : camera.height)), /*#__PURE__*/React__namespace.default.createElement(ExitCaptureButton, {
11430
11438
  onClick: onExit,
11431
11439
  className: classNames.exitCaptureBtn
11432
11440
  }));
@@ -11485,8 +11493,8 @@ var VideoSignatureSuccess = function VideoSignatureSuccess(_a) {
11485
11493
  finished: true
11486
11494
  }, verbiage.doneBtnText))));
11487
11495
  };
11488
- var StyledVideo$1 = styled__default.default.video(templateObject_1$7 || (templateObject_1$7 = __makeTemplateObject(["\n margin-left: auto;\n margin-right: auto;\n max-width: 100%;\n"], ["\n margin-left: auto;\n margin-right: auto;\n max-width: 100%;\n"])));
11489
- var templateObject_1$7;
11496
+ var StyledVideo$1 = styled__default.default.video(templateObject_1$8 || (templateObject_1$8 = __makeTemplateObject(["\n margin-left: auto;\n margin-right: auto;\n max-width: 100%;\n"], ["\n margin-left: auto;\n margin-right: auto;\n max-width: 100%;\n"])));
11497
+ var templateObject_1$8;
11490
11498
 
11491
11499
  var VideoSignatureWizard = function VideoSignatureWizard(_a) {
11492
11500
  var _b;
@@ -11520,7 +11528,13 @@ var VideoSignatureWizard = function VideoSignatureWizard(_a) {
11520
11528
  setSignatureData = _l.setSignatureData,
11521
11529
  setSignatureVideoUrl = _l.setSignatureVideoUrl,
11522
11530
  logSelfieCaptureAttempt = _l.logSelfieCaptureAttempt;
11523
- var _m = React.useContext(CameraStateContext),
11531
+ var _m = useCameraStore(shallow.useShallow(function (state) {
11532
+ return {
11533
+ cameraAccessDenied: state.cameraAccessDenied,
11534
+ requestCameraAccess: state.requestCameraAccess,
11535
+ releaseCameraAccess: state.releaseCameraAccess
11536
+ };
11537
+ })),
11524
11538
  cameraAccessDenied = _m.cameraAccessDenied,
11525
11539
  requestCameraAccess = _m.requestCameraAccess,
11526
11540
  releaseCameraAccess = _m.releaseCameraAccess;
@@ -11679,6 +11693,129 @@ var VideoSignatureWizard = function VideoSignatureWizard(_a) {
11679
11693
  }()));
11680
11694
  };
11681
11695
 
11696
+ var IdVideoCaptureGuides = function IdVideoCaptureGuides(_a) {
11697
+ var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y;
11698
+ var _z = _a.requestedAction,
11699
+ requestedAction = _z === void 0 ? 'SHOW_ID_FRONT' : _z,
11700
+ _0 = _a.satisfied,
11701
+ satisfied = _0 === void 0 ? false : _0,
11702
+ _1 = _a.faceGuideStatus,
11703
+ faceGuideStatus = _1 === void 0 ? 'success' : _1,
11704
+ faceGuideBorderWidth = _a.faceGuideBorderWidth,
11705
+ faceGuideBorderColor = _a.faceGuideBorderColor,
11706
+ _2 = _a.idCardGuideStatus,
11707
+ idCardGuideStatus = _2 === void 0 ? 'ready' : _2,
11708
+ idCardGuideBorderWidth = _a.idCardGuideBorderWidth,
11709
+ idCardGuideBorderColor = _a.idCardGuideBorderColor,
11710
+ idCardCaptureProgress = _a.idCardCaptureProgress,
11711
+ _3 = _a.idCardCaptureGuideImages,
11712
+ userSuppliedImages = _3 === void 0 ? defaultIdCaptureGuideImages : _3,
11713
+ _4 = _a.classNames,
11714
+ classNames = _4 === void 0 ? {} : _4,
11715
+ _5 = _a.verbiage,
11716
+ rawVerbiage = _5 === void 0 ? {} : _5;
11717
+ var isRearFacing = useCameraStore(function (state) {
11718
+ return state.isRearFacing;
11719
+ });
11720
+ var verbiage = useTranslations(rawVerbiage, {
11721
+ idFrontInstructionText: 'Display the front of your ID card...',
11722
+ idBackInstructionText: 'Display the back of your ID card...',
11723
+ flipIdInstructionText: 'Please flip your ID card...',
11724
+ verifyLivenessInstructionText: 'Performing facial recognition, please hold still...'
11725
+ });
11726
+ var instructionText = requestedAction === 'VERIFY_LIVENESS' ? verbiage.verifyLivenessInstructionText : requestedAction === 'SHOW_ID_FRONT' ? verbiage.idFrontInstructionText : requestedAction === 'FLIP_ID' ? verbiage.flipIdInstructionText : verbiage.idBackInstructionText;
11727
+ var theme = styled.useTheme();
11728
+ if (faceGuideBorderWidth === undefined) faceGuideBorderWidth = (_d = (_c = (_b = theme.idVideoCapture) === null || _b === void 0 ? void 0 : _b.faceGuides) === null || _c === void 0 ? void 0 : _c.borderWidth) !== null && _d !== void 0 ? _d : 5;
11729
+ if (faceGuideBorderColor === undefined) faceGuideBorderColor = (_j = satisfied ? (_f = (_e = theme.idVideoCapture) === null || _e === void 0 ? void 0 : _e.faceGuides) === null || _f === void 0 ? void 0 : _f.satisfiedColor : (_h = (_g = theme.idVideoCapture) === null || _g === void 0 ? void 0 : _g.faceGuides) === null || _h === void 0 ? void 0 : _h.unsatisfiedColor) !== null && _j !== void 0 ? _j : '#D6DCE7';
11730
+ if (idCardGuideBorderWidth === undefined) idCardGuideBorderWidth = (_m = (_l = (_k = theme.idVideoCapture) === null || _k === void 0 ? void 0 : _k.idCardGuides) === null || _l === void 0 ? void 0 : _l.borderWidth) !== null && _m !== void 0 ? _m : 20;
11731
+ if (idCardGuideBorderColor === undefined) idCardGuideBorderColor = (_s = satisfied ? (_p = (_o = theme.idVideoCapture) === null || _o === void 0 ? void 0 : _o.idCardGuides) === null || _p === void 0 ? void 0 : _p.satisfiedColor : (_r = (_q = theme.idVideoCapture) === null || _q === void 0 ? void 0 : _q.idCardGuides) === null || _r === void 0 ? void 0 : _r.unsatisfiedColor) !== null && _s !== void 0 ? _s : '#D6DCE7';
11732
+ var _6 = useResizeObserver__default.default(),
11733
+ idCardGuideRef = _6.ref,
11734
+ _7 = _6.width,
11735
+ idCardGuideWidth = _7 === void 0 ? 0 : _7,
11736
+ _8 = _6.height,
11737
+ idCardGuideHeight = _8 === void 0 ? 0 : _8;
11738
+ var idCaptureGuideImages = useGuideImages(userSuppliedImages);
11739
+ var idCaptureGuideImagesByUrl = useGuideImagesByUrl(idCaptureGuideImages);
11740
+ var _9 = React.useState(undefined),
11741
+ aspectRatio = _9[0],
11742
+ setAspectRatio = _9[1];
11743
+ var onImageLoaded = React.useCallback(function (e) {
11744
+ var _a, _b, _c, _d;
11745
+ var img = e.currentTarget;
11746
+ var imageByUrl = idCaptureGuideImagesByUrl[img.src];
11747
+ var naturalWidth = (_b = (_a = imageByUrl === null || imageByUrl === void 0 ? void 0 : imageByUrl.width) !== null && _a !== void 0 ? _a : img.naturalWidth) !== null && _b !== void 0 ? _b : 0;
11748
+ var naturalHeight = (_d = (_c = imageByUrl === null || imageByUrl === void 0 ? void 0 : imageByUrl.height) !== null && _c !== void 0 ? _c : img.naturalHeight) !== null && _d !== void 0 ? _d : 0;
11749
+ setAspectRatio(naturalHeight > 0 ? naturalWidth / naturalHeight : undefined);
11750
+ }, [idCaptureGuideImagesByUrl]);
11751
+ var idCardImageStyle = React.useMemo(function () {
11752
+ return {
11753
+ maxWidth: idCardGuideWidth > idCardGuideHeight ? idCardGuideWidth : undefined,
11754
+ maxHeight: idCardGuideHeight > idCardGuideWidth ? idCardGuideHeight : undefined,
11755
+ height: '100%',
11756
+ aspectRatio: aspectRatio
11757
+ };
11758
+ }, [idCardGuideWidth, idCardGuideHeight, aspectRatio]);
11759
+ var disableIdGuides = ((_u = (_t = theme.idVideoCapture) === null || _t === void 0 ? void 0 : _t.idCardGuides) === null || _u === void 0 ? void 0 : _u.disableDuringLivenessCheck) && requestedAction === 'VERIFY_LIVENESS';
11760
+ return /*#__PURE__*/React__namespace.default.createElement(Container, {
11761
+ className: classNames.container
11762
+ }, /*#__PURE__*/React__namespace.default.createElement(Inner, null, /*#__PURE__*/React__namespace.default.createElement(FaceGuideContainer, {
11763
+ className: classNames.faceGuideContainer
11764
+ }, /*#__PURE__*/React__namespace.default.createElement(SelfieCaptureAnimatedMaskWithStatus, {
11765
+ className: classNames.faceGuide,
11766
+ status: requestedAction === 'VERIFY_LIVENESS' ? faceGuideStatus : 'success',
11767
+ borderWidth: faceGuideBorderWidth,
11768
+ borderColor: faceGuideBorderColor,
11769
+ verticalAlign: "bottom"
11770
+ })), !disableIdGuides && ( /*#__PURE__*/React__namespace.default.createElement(IdCardGuideContainer, {
11771
+ className: classNames.idCardGuideContainer,
11772
+ ref: idCardGuideRef
11773
+ }, /*#__PURE__*/React__namespace.default.createElement(IdCardGuideInner, {
11774
+ className: classNames.idCardGuideInner,
11775
+ style: {
11776
+ aspectRatio: aspectRatio
11777
+ }
11778
+ }, /*#__PURE__*/React__namespace.default.createElement(IdCardGuideImageContainer, {
11779
+ className: classNames.idCardGuideImageContainer,
11780
+ status: requestedAction === 'VERIFY_LIVENESS' ? 'disabled' : idCardGuideStatus,
11781
+ borderWidth: idCardGuideBorderWidth,
11782
+ borderColor: idCardGuideBorderColor,
11783
+ aspectRatio: aspectRatio,
11784
+ "$isVisible": requestedAction !== 'FLIP_ID',
11785
+ progress: requestedAction === 'VERIFY_LIVENESS' ? undefined : idCardCaptureProgress
11786
+ }, /*#__PURE__*/React__namespace.default.createElement(IdCardGuideImage, {
11787
+ alt: "",
11788
+ className: classNames.idCardGuideImage,
11789
+ "$isMirrored": !isRearFacing,
11790
+ style: idCardImageStyle,
11791
+ src: requestedAction === 'SHOW_ID_BACK' ? idCaptureGuideImages.landscape.SHOW_ID_BACK.url : idCaptureGuideImages.landscape.SHOW_ID_FRONT.url,
11792
+ onLoad: onImageLoaded
11793
+ })), requestedAction === 'FLIP_ID' && ( /*#__PURE__*/React__namespace.default.createElement(IdVideoCaptureFlipIdPrompt, {
11794
+ idCaptureGuideImages: idCaptureGuideImages,
11795
+ classNames: classNames.flipIdPrompt,
11796
+ borderWidth: idCardGuideBorderWidth,
11797
+ borderColor: idCardGuideBorderColor,
11798
+ imageStyle: idCardImageStyle
11799
+ }))), /*#__PURE__*/React__namespace.default.createElement(IdCardGuideInstructionsContainer, {
11800
+ className: classNames.idCardGuideInstructionsContainer
11801
+ }, /*#__PURE__*/React__namespace.default.createElement(IdCardGuideInstructions, {
11802
+ className: classNames.idCardGuideInstructions,
11803
+ "$textColor": (_w = (_v = theme.idVideoCapture) === null || _v === void 0 ? void 0 : _v.idCardGuides) === null || _w === void 0 ? void 0 : _w.instructionsTextColor,
11804
+ "$background": (_y = (_x = theme.idVideoCapture) === null || _x === void 0 ? void 0 : _x.idCardGuides) === null || _y === void 0 ? void 0 : _y.instructionsBackgroundColor
11805
+ }, instructionText))))));
11806
+ };
11807
+ var Container = styled__default.default.div(templateObject_1$7 || (templateObject_1$7 = __makeTemplateObject(["\n display: flex;\n max-height: 100%;\n position: absolute;\n z-index: 1000;\n width: 100dvw;\n height: 100dvh;\n font-family: ", ";\n box-sizing: border-box;\n overflow: hidden;\n padding: 40px;\n"], ["\n display: flex;\n max-height: 100%;\n position: absolute;\n z-index: 1000;\n width: 100dvw;\n height: 100dvh;\n font-family: ", ";\n box-sizing: border-box;\n overflow: hidden;\n padding: 40px;\n"])), function (props) {
11808
+ var _a;
11809
+ return (_a = props.theme) === null || _a === void 0 ? void 0 : _a.fontFamily;
11810
+ });
11811
+ var Inner = styled__default.default.div(templateObject_2$7 || (templateObject_2$7 = __makeTemplateObject(["\n width: 100%;\n height: 100%;\n max-height: 1280px;\n display: flex;\n margin: auto;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n"], ["\n width: 100%;\n height: 100%;\n max-height: 1280px;\n display: flex;\n margin: auto;\n align-items: center;\n flex-direction: column;\n justify-content: center;\n"])));
11812
+ var FaceGuideContainer = styled__default.default.div(templateObject_3$7 || (templateObject_3$7 = __makeTemplateObject(["\n position: relative;\n height: 65%;\n"], ["\n position: relative;\n height: 65%;\n"])));
11813
+ var IdCardGuideContainer = styled__default.default.div(templateObject_4$2 || (templateObject_4$2 = __makeTemplateObject(["\n display: flex;\n flex-flow: column nowrap;\n margin: 0 auto;\n position: relative;\n max-width: 100%;\n height: 35%;\n"], ["\n display: flex;\n flex-flow: column nowrap;\n margin: 0 auto;\n position: relative;\n max-width: 100%;\n height: 35%;\n"])));
11814
+ var IdCardGuideInner = styled__default.default.div(templateObject_5$1 || (templateObject_5$1 = __makeTemplateObject(["\n position: relative;\n height: 100%;\n width: 100%;\n"], ["\n position: relative;\n height: 100%;\n width: 100%;\n"])));
11815
+ var IdCardGuideInstructionsContainer = styled__default.default.div(templateObject_6$1 || (templateObject_6$1 = __makeTemplateObject(["\n width: 100%;\n text-align: center;\n color: white;\n display: flex;\n flex-direction: column;\n justify-content: end;\n padding: 0 40px;\n position: fixed;\n bottom: 14px;\n left: 0;\n right: 0;\n box-sizing: border-box;\n"], ["\n width: 100%;\n text-align: center;\n color: white;\n display: flex;\n flex-direction: column;\n justify-content: end;\n padding: 0 40px;\n position: fixed;\n bottom: 14px;\n left: 0;\n right: 0;\n box-sizing: border-box;\n"])));
11816
+ var IdCardGuideInstructions = styled__default.default(GuidanceMessage)(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n align-content: center;\n margin: 12px auto;\n padding: 8px 12px;\n font-weight: bold;\n font-size: 18px;\n"], ["\n align-content: center;\n margin: 12px auto;\n padding: 8px 12px;\n font-weight: bold;\n font-size: 18px;\n"])));
11817
+ var templateObject_1$7, templateObject_2$7, templateObject_3$7, templateObject_4$2, templateObject_5$1, templateObject_6$1, templateObject_7;
11818
+
11682
11819
  var ReadTextPrompt = function ReadTextPrompt(_a) {
11683
11820
  var text = _a.text,
11684
11821
  onComplete = _a.onComplete,
@@ -11809,18 +11946,18 @@ var defaultVideoIdCaptureThresholds = {
11809
11946
  flipShortcutThreshold: 0.7
11810
11947
  };
11811
11948
  var IdVideoCapture = function IdVideoCapture(_a) {
11812
- var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w;
11949
+ var _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
11813
11950
  var onComplete = _a.onComplete,
11814
11951
  onIdFrontImageCaptured = _a.onIdFrontImageCaptured,
11815
11952
  onIdBackImageCaptured = _a.onIdBackImageCaptured,
11816
11953
  onFaceNotDetected = _a.onFaceNotDetected,
11817
11954
  onRecordingFailed = _a.onRecordingFailed,
11818
11955
  onExitCapture = _a.onExitCapture,
11819
- _x = _a.idCaptureModelsEnabled,
11820
- idCaptureModelsEnabled = _x === void 0 ? true : _x,
11821
- // idCardCaptureGuideImages = defaultIdCaptureGuideImages,
11956
+ _w = _a.idCaptureModelsEnabled,
11957
+ idCaptureModelsEnabled = _w === void 0 ? true : _w,
11958
+ _x = _a.idCardCaptureGuideImages,
11959
+ idCardCaptureGuideImages = _x === void 0 ? defaultIdCaptureGuideImages : _x,
11822
11960
  _y = _a.idCardFrontDelay,
11823
- // idCardCaptureGuideImages = defaultIdCaptureGuideImages,
11824
11961
  idCardFrontDelay = _y === void 0 ? 1000 : _y,
11825
11962
  _z = _a.videoIdCaptureThresholds,
11826
11963
  videoIdCaptureThresholds = _z === void 0 ? defaultVideoIdCaptureThresholds : _z,
@@ -11841,67 +11978,68 @@ var IdVideoCapture = function IdVideoCapture(_a) {
11841
11978
  mergeAVStreams = _6 === void 0 ? false : _6,
11842
11979
  _7 = _a.classNames,
11843
11980
  classNames = _7 === void 0 ? {} : _7,
11844
- // colors = {},
11845
- _8 = _a.verbiage,
11846
- // colors = {},
11847
- rawVerbiage = _8 === void 0 ? {} : _8,
11848
- _9 = _a.debugMode,
11849
- debugMode = _9 === void 0 ? false : _9;
11850
- var _10 = useResizeObserver__default.default(),
11851
- ref = _10.ref,
11852
- _11 = _10.width,
11853
- width = _11 === void 0 ? 1 : _11,
11854
- _12 = _10.height,
11855
- height = _12 === void 0 ? 1 : _12;
11856
- var _13 = React.useContext(CameraStateContext),
11857
- cameraRef = _13.cameraRef,
11858
- videoRef = _13.videoRef,
11859
- videoLoaded = _13.videoLoaded,
11860
- cameraReady = _13.cameraReady,
11861
- microphoneReady = _13.microphoneReady,
11862
- audioStream = _13.audioStream,
11863
- setVideoLoaded = _13.setVideoLoaded;
11864
- var _14 = React.useState([]),
11865
- detectedObjects = _14[0],
11866
- setDetectedObjects = _14[1];
11867
- var _15 = React.useState(null),
11868
- face = _15[0],
11869
- setFace = _15[1];
11870
- var _16 = React.useContext(IdCaptureModelsContext),
11871
- idModelsReady = _16.ready,
11872
- startIdModels = _16.start,
11873
- stopIdModels = _16.stop,
11874
- onIdPredictionMade = _16.onPredictionMade,
11875
- setThresholds = _16.setThresholds,
11876
- setDocumentDetectionBoundaries = _16.setDocumentDetectionBoundaries,
11877
- bestFrameDetails = _16.bestFrameDetails,
11878
- resetBestFrame = _16.resetBestFrame,
11879
- idModelError = _16.modelError;
11880
- var _17 = React.useState(null),
11881
- videoStartsAt = _17[0],
11882
- setVideoStartsAt = _17[1];
11883
- var _18 = React.useContext(SubmissionContext),
11884
- setIdCaptureVideoAudioStartsAt = _18.setIdCaptureVideoAudioStartsAt,
11885
- setExpectedAudioText = _18.setExpectedAudioText;
11886
- var _19 = React.useContext(SelfieGuidanceModelsContext),
11887
- startSelfieGuidance = _19.start,
11888
- stopSelfieGuidance = _19.stop,
11889
- onSelfiePredictionMade = _19.onPredictionMade,
11890
- selfieModelError = _19.error;
11891
- var _20 = useVideoRecorder(cameraRef.current, audioStream, mergeAVStreams),
11892
- isRecordingVideo = _20.isRecordingVideo,
11893
- startRecordingVideo = _20.startRecordingVideo,
11894
- startRecordingAudio = _20.startRecordingAudio,
11895
- stopRecordingVideo = _20.stopRecordingVideo,
11896
- stopRecordingAudio = _20.stopRecordingAudio,
11897
- videoRecordingUnintentionallyStopped = _20.videoRecordingUnintentionallyStopped,
11898
- audioRecordingUnintentionallyStopped = _20.audioRecordingUnintentionallyStopped,
11899
- videoUrl = _20.videoUrl,
11900
- audioUrl = _20.audioUrl;
11981
+ _8 = _a.colors,
11982
+ colors = _8 === void 0 ? {} : _8,
11983
+ _9 = _a.verbiage,
11984
+ rawVerbiage = _9 === void 0 ? {} : _9,
11985
+ _10 = _a.debugMode,
11986
+ debugMode = _10 === void 0 ? false : _10;
11987
+ var _11 = useResizeObserver__default.default(),
11988
+ ref = _11.ref,
11989
+ _12 = _11.width,
11990
+ width = _12 === void 0 ? 1 : _12,
11991
+ _13 = _11.height,
11992
+ height = _13 === void 0 ? 1 : _13;
11993
+ var _14 = useCameraStore(),
11994
+ camera = _14.camera,
11995
+ videoRef = _14.videoRef,
11996
+ videoLoaded = _14.videoLoaded,
11997
+ cameraReady = _14.cameraReady,
11998
+ microphoneReady = _14.microphoneReady,
11999
+ audioStream = _14.audioStream,
12000
+ isRearFacing = _14.isRearFacing,
12001
+ releaseCameraAccess = _14.releaseCameraAccess;
12002
+ var _15 = React.useState([]),
12003
+ detectedObjects = _15[0],
12004
+ setDetectedObjects = _15[1];
12005
+ var _16 = React.useState(null),
12006
+ face = _16[0],
12007
+ setFace = _16[1];
12008
+ var _17 = React.useContext(IdCaptureModelsContext),
12009
+ idModelsReady = _17.ready,
12010
+ startIdModels = _17.start,
12011
+ stopIdModels = _17.stop,
12012
+ onIdPredictionMade = _17.onPredictionMade,
12013
+ setThresholds = _17.setThresholds,
12014
+ setDocumentDetectionBoundaries = _17.setDocumentDetectionBoundaries,
12015
+ bestFrameDetails = _17.bestFrameDetails,
12016
+ resetBestFrame = _17.resetBestFrame,
12017
+ idModelError = _17.modelError;
12018
+ var _18 = React.useState(null),
12019
+ videoStartsAt = _18[0],
12020
+ setVideoStartsAt = _18[1];
12021
+ var _19 = React.useContext(SubmissionContext),
12022
+ setIdCaptureVideoAudioStartsAt = _19.setIdCaptureVideoAudioStartsAt,
12023
+ setExpectedAudioText = _19.setExpectedAudioText;
12024
+ var _20 = React.useContext(SelfieGuidanceModelsContext),
12025
+ startSelfieGuidance = _20.start,
12026
+ stopSelfieGuidance = _20.stop,
12027
+ onSelfiePredictionMade = _20.onPredictionMade,
12028
+ selfieModelError = _20.error;
12029
+ var _21 = useVideoRecorder(camera, audioStream, mergeAVStreams),
12030
+ isRecordingVideo = _21.isRecordingVideo,
12031
+ startRecordingVideo = _21.startRecordingVideo,
12032
+ startRecordingAudio = _21.startRecordingAudio,
12033
+ stopRecordingVideo = _21.stopRecordingVideo,
12034
+ stopRecordingAudio = _21.stopRecordingAudio,
12035
+ videoRecordingUnintentionallyStopped = _21.videoRecordingUnintentionallyStopped,
12036
+ audioRecordingUnintentionallyStopped = _21.audioRecordingUnintentionallyStopped,
12037
+ videoUrl = _21.videoUrl,
12038
+ audioUrl = _21.audioUrl;
11901
12039
  var countdownTimeoutRef = React.useRef(undefined);
11902
- var _21 = React.useState(-1),
11903
- countdownRemaining = _21[0],
11904
- setCountdownRemaining = _21[1];
12040
+ var _22 = React.useState(-1),
12041
+ countdownRemaining = _22[0],
12042
+ setCountdownRemaining = _22[1];
11905
12043
  React.useEffect(function () {
11906
12044
  if (!isRecordingVideo && !videoUrl) {
11907
12045
  startRecordingVideo();
@@ -11912,18 +12050,18 @@ var IdVideoCapture = function IdVideoCapture(_a) {
11912
12050
  var needsAudio = !!readTextPrompt && !mergeAVStreams;
11913
12051
  var audioReady = !needsAudio || audioUrl;
11914
12052
  if (videoUrl && audioReady) {
11915
- setVideoLoaded(false);
12053
+ releaseCameraAccess();
11916
12054
  onComplete === null || onComplete === void 0 ? void 0 : onComplete(videoUrl, audioUrl);
11917
12055
  }
11918
- }, [audioUrl, isRecordingVideo, mergeAVStreams, onComplete, readTextPrompt, setVideoLoaded, startRecordingVideo, videoUrl]);
12056
+ }, [audioUrl, isRecordingVideo, mergeAVStreams, onComplete, readTextPrompt, releaseCameraAccess, startRecordingVideo, videoUrl]);
11919
12057
  React.useEffect(function () {
11920
12058
  if (videoRecordingUnintentionallyStopped || audioRecordingUnintentionallyStopped) {
11921
12059
  onRecordingFailed === null || onRecordingFailed === void 0 ? void 0 : onRecordingFailed();
11922
12060
  }
11923
12061
  }, [audioRecordingUnintentionallyStopped, onRecordingFailed, videoRecordingUnintentionallyStopped]);
11924
- var _22 = React.useState('SHOW_ID_FRONT'),
11925
- requestedAction = _22[0],
11926
- setRequestedAction = _22[1];
12062
+ var _23 = React.useState('SHOW_ID_FRONT'),
12063
+ requestedAction = _23[0],
12064
+ setRequestedAction = _23[1];
11927
12065
  var shouldRunIdModels = idCaptureModelsEnabled && videoLoaded && cameraReady && idModelsReady && !idModelError && requestedAction !== 'READ_TEXT' && (!readTextPrompt || microphoneReady);
11928
12066
  React.useEffect(function startModelsWhenCapturing() {
11929
12067
  if (!shouldRunIdModels) return;
@@ -11943,18 +12081,18 @@ var IdVideoCapture = function IdVideoCapture(_a) {
11943
12081
  bottom: 1
11944
12082
  });
11945
12083
  }, [setDocumentDetectionBoundaries]);
11946
- var _23 = React.useState(0),
11947
- currentDetectionScore = _23[0],
11948
- setCurrentDetectionScore = _23[1];
11949
- var _24 = React.useState('none'),
11950
- currentDetectedDocumentType = _24[0],
11951
- setCurrentDetectedDocumentType = _24[1];
11952
- var _25 = React.useState(0),
11953
- currentFocusScore = _25[0],
11954
- setCurrentFocusScore = _25[1];
12084
+ var _24 = React.useState(0),
12085
+ currentDetectionScore = _24[0],
12086
+ setCurrentDetectionScore = _24[1];
12087
+ var _25 = React.useState('none'),
12088
+ currentDetectedDocumentType = _25[0],
12089
+ setCurrentDetectedDocumentType = _25[1];
11955
12090
  var _26 = React.useState(0),
11956
- goodFramesCount = _26[0],
11957
- setGoodFramesCount = _26[1];
12091
+ currentFocusScore = _26[0],
12092
+ setCurrentFocusScore = _26[1];
12093
+ var _27 = React.useState(0),
12094
+ goodFramesCount = _27[0],
12095
+ setGoodFramesCount = _27[1];
11958
12096
  var goodFramesThreshold = requestedAction === 'SHOW_ID_FRONT' ? videoIdCaptureThresholds.goodFrames.idCardFront : videoIdCaptureThresholds.goodFrames.idCardBack;
11959
12097
  var goodFramesThresholdMet = goodFramesCount >= goodFramesThreshold;
11960
12098
  React.useEffect(function () {
@@ -11975,9 +12113,9 @@ var IdVideoCapture = function IdVideoCapture(_a) {
11975
12113
  } : 0);
11976
12114
  });
11977
12115
  }, [idCaptureModelsEnabled, onIdPredictionMade, idModelError, requestedAction, videoIdCaptureThresholds.flipShortcutThreshold]);
11978
- var _27 = React.useState(null),
11979
- idFrontCaptureStartedAt = _27[0],
11980
- setFirstGoodFrameTime = _27[1];
12116
+ var _28 = React.useState(null),
12117
+ idFrontCaptureStartedAt = _28[0],
12118
+ setFirstGoodFrameTime = _28[1];
11981
12119
  React.useEffect(function () {
11982
12120
  if (goodFramesCount === 1) setFirstGoodFrameTime(new Date().getTime());
11983
12121
  }, [goodFramesCount]);
@@ -11998,9 +12136,9 @@ var IdVideoCapture = function IdVideoCapture(_a) {
11998
12136
  var frameHeight = (_e = (_d = videoRef.current) === null || _d === void 0 ? void 0 : _d.videoHeight) !== null && _e !== void 0 ? _e : 0;
11999
12137
  var faceBox = face === null || face === void 0 ? void 0 : face.box;
12000
12138
  var faceCentered = !faceBox || !frameWidth || faceBox.xMin > frameWidth * edgeBoundary && faceBox.yMin > frameHeight * edgeBoundary && faceBox.xMax < frameWidth * (1 - edgeBoundary) && faceBox.yMax < frameHeight * (1 - edgeBoundary);
12001
- var _28 = React.useState(),
12002
- countdownStartedAt = _28[0],
12003
- setCountdownStartedAt = _28[1];
12139
+ var _29 = React.useState(),
12140
+ countdownStartedAt = _29[0],
12141
+ setCountdownStartedAt = _29[1];
12004
12142
  var photoCanvas = React.useRef(null);
12005
12143
  var frameLock = React.useRef(false);
12006
12144
  var captureFrame = React.useCallback(function () {
@@ -12123,9 +12261,9 @@ var IdVideoCapture = function IdVideoCapture(_a) {
12123
12261
  stopSelfieGuidance();
12124
12262
  };
12125
12263
  }, [startSelfieGuidance, stopSelfieGuidance]);
12126
- var _29 = React.useState(0),
12127
- numFramesWithoutFaces = _29[0],
12128
- setNumFramesWithoutFaces = _29[1];
12264
+ var _30 = React.useState(0),
12265
+ numFramesWithoutFaces = _30[0],
12266
+ setNumFramesWithoutFaces = _30[1];
12129
12267
  onSelfiePredictionMade(useDebounce.useThrottledCallback(React.useCallback(function (_a) {
12130
12268
  var face = _a.face;
12131
12269
  if (selfieModelError) return;
@@ -12141,12 +12279,12 @@ var IdVideoCapture = function IdVideoCapture(_a) {
12141
12279
  }
12142
12280
  }, [disableFaceDetectionWhileAudioCapture, disableFaceDetectionWhileAudioCaptureMsDelay, numFramesWithoutFaces, onFaceNotDetected, timeoutStartedAt]);
12143
12281
  var theme = styled.useTheme();
12144
- var _30 = useTranslations(rawVerbiage, {
12282
+ var _31 = useTranslations(rawVerbiage, {
12145
12283
  faceNotCenteredText: 'Please move your face to the center...',
12146
12284
  captureBtnText: 'Capture'
12147
12285
  }),
12148
- captureBtnText = _30.captureBtnText,
12149
- faceNotCenteredText = _30.faceNotCenteredText;
12286
+ captureBtnText = _31.captureBtnText,
12287
+ faceNotCenteredText = _31.faceNotCenteredText;
12150
12288
  var debugScalingDetails = useDebugScalingDetails({
12151
12289
  enabled: debugMode,
12152
12290
  pageWidth: width,
@@ -12171,16 +12309,25 @@ var IdVideoCapture = function IdVideoCapture(_a) {
12171
12309
  classNames: classNames.readTextPrompt,
12172
12310
  verbiage: rawVerbiage.readTextPrompt,
12173
12311
  onComplete: stopRecording
12174
- })) : ( /*#__PURE__*/React__namespace.default.createElement(React__namespace.default.Fragment, null, debugMode && capturingId && ( /*#__PURE__*/React__namespace.default.createElement(React__namespace.default.Fragment, null, /*#__PURE__*/React__namespace.default.createElement(ObjectDetectionDebugOverlayDiv, {
12175
- "$flipX": !((_l = cameraRef.current) === null || _l === void 0 ? void 0 : _l.isRearFacing)
12312
+ })) : ( /*#__PURE__*/React__namespace.default.createElement(React__namespace.default.Fragment, null, /*#__PURE__*/React__namespace.default.createElement(IdVideoCaptureGuides, {
12313
+ classNames: classNames.guides,
12314
+ verbiage: rawVerbiage.guides,
12315
+ requestedAction: requestedAction,
12316
+ satisfied: satisfied,
12317
+ idCardGuideStatus: countdownStartedAt ? 'capturing' : 'ready',
12318
+ idCardCaptureProgress: !!countdownStartedAt ? 1 : 0,
12319
+ idCardCaptureGuideImages: idCardCaptureGuideImages,
12320
+ faceGuideBorderColor: satisfied ? colors.guidesSatisfiedColor : colors.guidesUnsatisfiedColor,
12321
+ idCardGuideBorderColor: satisfied ? colors.guidesSatisfiedColor : colors.guidesUnsatisfiedColor
12322
+ }), debugMode && capturingId && ( /*#__PURE__*/React__namespace.default.createElement(React__namespace.default.Fragment, null, /*#__PURE__*/React__namespace.default.createElement(ObjectDetectionDebugOverlayDiv, {
12323
+ "$flipX": !isRearFacing
12176
12324
  }, detectedObjects.map(function (obj, i) {
12177
- var _a;
12178
12325
  return /*#__PURE__*/React__namespace.default.createElement(IdCaptureDetectedObjectDebugBox, {
12179
12326
  key: i,
12180
12327
  obj: obj,
12181
12328
  scaling: debugScalingDetails,
12182
12329
  color: "blue",
12183
- flipX: !((_a = cameraRef.current) === null || _a === void 0 ? void 0 : _a.isRearFacing)
12330
+ flipX: !isRearFacing
12184
12331
  });
12185
12332
  })), /*#__PURE__*/React__namespace.default.createElement(DebugBoundingBoxOverlay, null, face && ( /*#__PURE__*/React__namespace.default.createElement(SelfieCaptureFaceDebugBox, {
12186
12333
  face: face,
@@ -12189,9 +12336,9 @@ var IdVideoCapture = function IdVideoCapture(_a) {
12189
12336
  className: classNames.guidanceMessageContainer
12190
12337
  }, /*#__PURE__*/React__namespace.default.createElement(GuidanceMessage, {
12191
12338
  className: classNames.guidanceMessage,
12192
- "$background": (_p = (_o = (_m = theme.guidanceMessages) === null || _m === void 0 ? void 0 : _m.negative) === null || _o === void 0 ? void 0 : _o.backgroundColor) !== null && _p !== void 0 ? _p : 'red',
12193
- "$textColor": (_s = (_r = (_q = theme.guidanceMessages) === null || _q === void 0 ? void 0 : _q.negative) === null || _r === void 0 ? void 0 : _r.textColor) !== null && _s !== void 0 ? _s : 'white'
12194
- }, guidanceText))), debugMode && ( /*#__PURE__*/React__namespace.default.createElement(DebugStatsPane, null, cameraRef.current ? ( /*#__PURE__*/React__namespace.default.createElement(React__namespace.default.Fragment, null, "\u2705 Camera: ", cameraRef.current.label, " (", cameraRef.current.width, "x", cameraRef.current.height, ")")) : '❌ Camera not ready', /*#__PURE__*/React__namespace.default.createElement("br", null), isRecordingVideo ? '✅ Recording' : '❌ Not recording', /*#__PURE__*/React__namespace.default.createElement("br", null), goodFramesThresholdMet ? '✅' : '❌', " Good Frame Count:", ' ', goodFramesCount, "/", goodFramesThreshold, /*#__PURE__*/React__namespace.default.createElement("br", null), "Document Type: ", currentDetectedDocumentType, /*#__PURE__*/React__namespace.default.createElement("br", null), "Detection Score: ", currentDetectionScore, /*#__PURE__*/React__namespace.default.createElement("br", null), "Focus Score: ", currentFocusScore, /*#__PURE__*/React__namespace.default.createElement("br", null), "Best Frame Detection Score:", ' ', (_u = (_t = bestFrameDetails.current) === null || _t === void 0 ? void 0 : _t.detectionScore) !== null && _u !== void 0 ? _u : 0, /*#__PURE__*/React__namespace.default.createElement("br", null), "Best Frame Focus Score: ", (_w = (_v = bestFrameDetails.current) === null || _v === void 0 ? void 0 : _v.focusScore) !== null && _w !== void 0 ? _w : 0)), countdownRemaining > 0 && capturingId && ( /*#__PURE__*/React__namespace.default.createElement(CountdownContainer, {
12339
+ "$background": (_o = (_m = (_l = theme.guidanceMessages) === null || _l === void 0 ? void 0 : _l.negative) === null || _m === void 0 ? void 0 : _m.backgroundColor) !== null && _o !== void 0 ? _o : 'red',
12340
+ "$textColor": (_r = (_q = (_p = theme.guidanceMessages) === null || _p === void 0 ? void 0 : _p.negative) === null || _q === void 0 ? void 0 : _q.textColor) !== null && _r !== void 0 ? _r : 'white'
12341
+ }, guidanceText))), debugMode && ( /*#__PURE__*/React__namespace.default.createElement(DebugStatsPane, null, camera ? ( /*#__PURE__*/React__namespace.default.createElement(React__namespace.default.Fragment, null, "\u2705 Camera: ", camera.label, " (", camera.width, "x", camera.height, ")")) : '❌ Camera not ready', /*#__PURE__*/React__namespace.default.createElement("br", null), isRecordingVideo ? '✅ Recording' : '❌ Not recording', /*#__PURE__*/React__namespace.default.createElement("br", null), goodFramesThresholdMet ? '✅' : '❌', " Good Frame Count:", ' ', goodFramesCount, "/", goodFramesThreshold, /*#__PURE__*/React__namespace.default.createElement("br", null), "Document Type: ", currentDetectedDocumentType, /*#__PURE__*/React__namespace.default.createElement("br", null), "Detection Score: ", currentDetectionScore, /*#__PURE__*/React__namespace.default.createElement("br", null), "Focus Score: ", currentFocusScore, /*#__PURE__*/React__namespace.default.createElement("br", null), "Best Frame Detection Score:", ' ', (_t = (_s = bestFrameDetails.current) === null || _s === void 0 ? void 0 : _s.detectionScore) !== null && _t !== void 0 ? _t : 0, /*#__PURE__*/React__namespace.default.createElement("br", null), "Best Frame Focus Score: ", (_v = (_u = bestFrameDetails.current) === null || _u === void 0 ? void 0 : _u.focusScore) !== null && _v !== void 0 ? _v : 0)), countdownRemaining > 0 && capturingId && ( /*#__PURE__*/React__namespace.default.createElement(CountdownContainer, {
12195
12342
  className: classNames.countdownContainer
12196
12343
  }, /*#__PURE__*/React__namespace.default.createElement(Countdown, {
12197
12344
  className: classNames.countdown
@@ -12471,42 +12618,31 @@ var VideoIdWizard = function VideoIdWizard(_a) {
12471
12618
  onExitCapture === null || onExitCapture === void 0 ? void 0 : onExitCapture();
12472
12619
  }, [onExitCapture]);
12473
12620
  var faceLivenessGuides = React.useCallback(function (_a) {
12474
- return null;
12475
- },
12476
- // <IdVideoCaptureGuides
12477
- // idCardCaptureGuideImages={idCaptureGuideImages}
12478
- // classNames={classNames.idVideoCapture?.guides}
12479
- // verbiage={verbiage.idVideoCapture?.guides}
12480
- // requestedAction="VERIFY_LIVENESS"
12481
- // faceGuideStatus={status}
12482
- // faceGuideBorderColor={
12483
- // status === 'success'
12484
- // ? colors.idVideoCapture?.guidesSatisfiedColor
12485
- // : colors.idVideoCapture?.guidesUnsatisfiedColor
12486
- // }
12487
- // idCardGuideStatus="disabled"
12488
- // // idCardGuideBorderColor={
12489
- // // status === 'success'
12490
- // // ? colors.idVideoCapture?.guidesSatisfiedColor
12491
- // // : colors.idVideoCapture?.guidesUnsatisfiedColor
12492
- // // }
12493
- // />
12494
- [(_b = classNames.idVideoCapture) === null || _b === void 0 ? void 0 : _b.guides, (_c = colors.idVideoCapture) === null || _c === void 0 ? void 0 : _c.guidesSatisfiedColor, (_d = colors.idVideoCapture) === null || _d === void 0 ? void 0 : _d.guidesUnsatisfiedColor, idCaptureGuideImages, (_e = verbiage.idVideoCapture) === null || _e === void 0 ? void 0 : _e.guides]);
12621
+ var _b, _c, _d, _e;
12622
+ var status = _a.status;
12623
+ return /*#__PURE__*/React__namespace.default.createElement(IdVideoCaptureGuides, {
12624
+ idCardCaptureGuideImages: idCaptureGuideImages,
12625
+ classNames: (_b = classNames.idVideoCapture) === null || _b === void 0 ? void 0 : _b.guides,
12626
+ verbiage: (_c = verbiage.idVideoCapture) === null || _c === void 0 ? void 0 : _c.guides,
12627
+ requestedAction: "VERIFY_LIVENESS",
12628
+ faceGuideStatus: status,
12629
+ faceGuideBorderColor: status === 'success' ? (_d = colors.idVideoCapture) === null || _d === void 0 ? void 0 : _d.guidesSatisfiedColor : (_e = colors.idVideoCapture) === null || _e === void 0 ? void 0 : _e.guidesUnsatisfiedColor,
12630
+ idCardGuideStatus: "disabled"
12631
+ });
12632
+ }, [(_b = classNames.idVideoCapture) === null || _b === void 0 ? void 0 : _b.guides, (_c = colors.idVideoCapture) === null || _c === void 0 ? void 0 : _c.guidesSatisfiedColor, (_d = colors.idVideoCapture) === null || _d === void 0 ? void 0 : _d.guidesUnsatisfiedColor, idCaptureGuideImages, (_e = verbiage.idVideoCapture) === null || _e === void 0 ? void 0 : _e.guides]);
12495
12633
  if (submissionStatus === SubmissionStatus.SUBMITTING) {
12496
12634
  return /*#__PURE__*/React__namespace.default.createElement(PageContainer, {
12497
12635
  className: "flex"
12498
12636
  }, /*#__PURE__*/React__namespace.default.createElement(Spinner, null));
12499
12637
  }
12500
- return /*#__PURE__*/React__namespace.default.createElement(CameraProvider, {
12501
- key: "".concat(isCapturingId ? 'id' : 'selfie', "-camera-").concat(attempt),
12502
- preferContinuityCamera: isCapturingId,
12638
+ return /*#__PURE__*/React__namespace.default.createElement(CameraStoreProvider, {
12639
+ preferIphoneContinuityCamera: isCapturingId,
12503
12640
  preferFrontFacingCamera: !isCapturingId,
12504
12641
  requireMicrophoneAccess: !isCapturingId && !!readTextPrompt,
12505
12642
  maxVideoWidth: isCapturingId ? 1920 : 1280,
12506
12643
  maxFps: isCapturingId ? 60 : 30,
12507
12644
  onCameraAccessDenied: onCameraAccessDenied,
12508
- onMicrophoneAccessDenied: onMicrophoneAccessDenied,
12509
- debugMode: debugMode
12645
+ onMicrophoneAccessDenied: onMicrophoneAccessDenied
12510
12646
  }, /*#__PURE__*/React__namespace.default.createElement(IdCaptureModelsProvider, {
12511
12647
  autoStart: false,
12512
12648
  documentDetectionModelUrl: (_g = (_f = idCaptureProps.assets) === null || _f === void 0 ? void 0 : _f.documentDetectionModelUrl) !== null && _g !== void 0 ? _g : '',
@@ -12632,17 +12768,15 @@ function CompositeWizard(_a) {
12632
12768
  _o = _a.captureSignatureVideo,
12633
12769
  captureSignatureVideo = _o === void 0 ? false : _o,
12634
12770
  onCameraAccessDenied = _a.onCameraAccessDenied,
12635
- onMicrophoneAccessDenied = _a.onMicrophoneAccessDenied,
12636
- _p = _a.debugMode,
12637
- debugMode = _p === void 0 ? false : _p;
12638
- var _q = React.useContext(SubmissionContext),
12639
- submit = _q.submit,
12640
- submissionStatus = _q.submissionStatus,
12641
- setSignatureData = _q.setSignatureData,
12642
- setAdditionalDocuments = _q.setAdditionalDocuments;
12643
- var _r = React.useState(0),
12644
- checkIndex = _r[0],
12645
- setCheckIndex = _r[1];
12771
+ onMicrophoneAccessDenied = _a.onMicrophoneAccessDenied;
12772
+ var _p = React.useContext(SubmissionContext),
12773
+ submit = _p.submit,
12774
+ submissionStatus = _p.submissionStatus,
12775
+ setSignatureData = _p.setSignatureData,
12776
+ setAdditionalDocuments = _p.setAdditionalDocuments;
12777
+ var _q = React.useState(0),
12778
+ checkIndex = _q[0],
12779
+ setCheckIndex = _q[1];
12646
12780
  var checks = React.useMemo(function () {
12647
12781
  var _a, _b;
12648
12782
  var checks = __spreadArray([], userChecks, true);
@@ -12720,16 +12854,6 @@ function CompositeWizard(_a) {
12720
12854
  return i + 1;
12721
12855
  });
12722
12856
  }, [onVideoSignatureCompleteProp]);
12723
- var _s = React.useState(0),
12724
- videoSignatureAttempts = _s[0],
12725
- setVideoSignatureAttempts = _s[1];
12726
- var onVideoSignatureRetryProp = videoSignatureCaptureProps.onRetryClicked;
12727
- var onVideoSignatureRetry = React.useCallback(function () {
12728
- onVideoSignatureRetryProp === null || onVideoSignatureRetryProp === void 0 ? void 0 : onVideoSignatureRetryProp();
12729
- setVideoSignatureAttempts(function (n) {
12730
- return n + 1;
12731
- });
12732
- }, [onVideoSignatureRetryProp]);
12733
12857
  var onAdditionalDocumentCaptureCompleteProp = additionalDocumentCaptureProps === null || additionalDocumentCaptureProps === void 0 ? void 0 : additionalDocumentCaptureProps.onComplete;
12734
12858
  var onAdditionalDocumentCaptureComplete = React.useCallback(function (uploadedDocuments) {
12735
12859
  setAdditionalDocuments(uploadedDocuments);
@@ -12758,11 +12882,9 @@ function CompositeWizard(_a) {
12758
12882
  }
12759
12883
  switch (checks[checkIndex]) {
12760
12884
  case 'IdCapture':
12761
- return /*#__PURE__*/React__namespace.default.createElement(CameraProvider, {
12762
- key: "IdCaptureCamera",
12885
+ return /*#__PURE__*/React__namespace.default.createElement(CameraStoreProvider, {
12763
12886
  onCameraAccessDenied: onCameraAccessDenied,
12764
- onMicrophoneAccessDenied: onMicrophoneAccessDenied,
12765
- debugMode: debugMode
12887
+ onMicrophoneAccessDenied: onMicrophoneAccessDenied
12766
12888
  }, /*#__PURE__*/React__namespace.default.createElement(IdCaptureModelsProvider, {
12767
12889
  autoStart: false,
12768
12890
  documentDetectionModelUrl: (_d = (_c = idCaptureProps.assets) === null || _c === void 0 ? void 0 : _c.documentDetectionModelUrl) !== null && _d !== void 0 ? _d : '',
@@ -12779,13 +12901,11 @@ function CompositeWizard(_a) {
12779
12901
  onMicrophoneAccessDenied: onMicrophoneAccessDenied
12780
12902
  }));
12781
12903
  case 'FaceLiveness':
12782
- return /*#__PURE__*/React__namespace.default.createElement(CameraProvider, {
12783
- key: "FaceLivenessCamera",
12904
+ return /*#__PURE__*/React__namespace.default.createElement(CameraStoreProvider, {
12784
12905
  preferFrontFacingCamera: true,
12785
- preferContinuityCamera: false,
12906
+ preferIphoneContinuityCamera: false,
12786
12907
  onCameraAccessDenied: onCameraAccessDenied,
12787
- onMicrophoneAccessDenied: onMicrophoneAccessDenied,
12788
- debugMode: debugMode
12908
+ onMicrophoneAccessDenied: onMicrophoneAccessDenied
12789
12909
  }, /*#__PURE__*/React__namespace.default.createElement(SelfieGuidanceModelsProvider, {
12790
12910
  autoStart: false,
12791
12911
  onModelError: faceLivenessProps.onModelError,
@@ -12798,15 +12918,13 @@ function CompositeWizard(_a) {
12798
12918
  onAccept: onSignatureCaptureSuccess
12799
12919
  }));
12800
12920
  case 'VideoSignatureCapture':
12801
- return /*#__PURE__*/React__namespace.default.createElement(CameraProvider, {
12802
- key: "SignatureKycCamera-".concat(videoSignatureAttempts),
12803
- preferContinuityCamera: false,
12921
+ return /*#__PURE__*/React__namespace.default.createElement(CameraStoreProvider, {
12922
+ preferIphoneContinuityCamera: false,
12804
12923
  preferFrontFacingCamera: true,
12805
12924
  maxVideoWidth: 1280,
12806
12925
  maxFps: 30,
12807
12926
  onCameraAccessDenied: onCameraAccessDenied,
12808
- onMicrophoneAccessDenied: onMicrophoneAccessDenied,
12809
- debugMode: debugMode
12927
+ onMicrophoneAccessDenied: onMicrophoneAccessDenied
12810
12928
  }, /*#__PURE__*/React__namespace.default.createElement(SelfieGuidanceModelsProvider, {
12811
12929
  autoStart: false,
12812
12930
  throttleMs: 250,
@@ -12814,8 +12932,7 @@ function CompositeWizard(_a) {
12814
12932
  modelLoadTimeoutMs: videoSignatureCaptureProps.modelLoadTimeoutMs,
12815
12933
  requireVerticalFaceCentering: false
12816
12934
  }, /*#__PURE__*/React__namespace.default.createElement(VideoSignatureWizard, _assign({}, videoSignatureCaptureProps, {
12817
- onComplete: onVideoSignatureComplete,
12818
- onRetryClicked: onVideoSignatureRetry
12935
+ onComplete: onVideoSignatureComplete
12819
12936
  }))));
12820
12937
  case 'AdditionalDocumentCapture':
12821
12938
  return /*#__PURE__*/React__namespace.default.createElement(AdditionalDocumentCaptureWizard, _assign({}, additionalDocumentCaptureProps, {
@@ -13266,8 +13383,7 @@ var IdValidation = function IdValidation(_a) {
13266
13383
  videoSignatureCaptureProps: videoSignatureCaptureProps,
13267
13384
  captureSignature: captureSignature,
13268
13385
  captureSignatureVideo: captureSignatureVideo,
13269
- onCameraAccessDenied: onCameraAccessDenied,
13270
- debugMode: debugMode
13386
+ onCameraAccessDenied: onCameraAccessDenied
13271
13387
  }))));
13272
13388
  };
13273
13389
 
@@ -13373,8 +13489,7 @@ var FaceValidation = function FaceValidation(_a) {
13373
13489
  return ['FaceLiveness'];
13374
13490
  }, []),
13375
13491
  faceLivenessProps: faceLivenessProps,
13376
- onCameraAccessDenied: onCameraAccessDenied,
13377
- debugMode: debugMode
13492
+ onCameraAccessDenied: onCameraAccessDenied
13378
13493
  }))));
13379
13494
  };
13380
13495
 
@@ -13607,8 +13722,7 @@ var IdAndFaceValidation = function IdAndFaceValidation(_a) {
13607
13722
  additionalDocumentCaptureProps: additionalDocumentCaptureProps,
13608
13723
  captureSignature: captureSignature,
13609
13724
  captureSignatureVideo: captureSignatureVideo,
13610
- onCameraAccessDenied: onCameraAccessDenied,
13611
- debugMode: debugMode
13725
+ onCameraAccessDenied: onCameraAccessDenied
13612
13726
  }))));
13613
13727
  };
13614
13728
 
@@ -13863,8 +13977,7 @@ var CustomerIdAndBiometricsEnrollment = function CustomerIdAndBiometricsEnrollme
13863
13977
  videoSignatureCaptureProps: videoSignatureCaptureProps,
13864
13978
  captureSignature: captureSignature,
13865
13979
  captureSignatureVideo: captureSignatureVideo,
13866
- onCameraAccessDenied: onCameraAccessDenied,
13867
- debugMode: debugMode
13980
+ onCameraAccessDenied: onCameraAccessDenied
13868
13981
  }))));
13869
13982
  };
13870
13983
 
@@ -14196,7 +14309,7 @@ var CustomerVerificationWizard = function CustomerVerificationWizard(_a) {
14196
14309
  var _l = React.useState('LOADING'),
14197
14310
  captureState = _l[0],
14198
14311
  setCaptureState = _l[1];
14199
- var _m = React.useContext(CameraStateContext),
14312
+ var _m = useCameraStore(),
14200
14313
  cameraAccessDenied = _m.cameraAccessDenied,
14201
14314
  releaseCameraAccess = _m.releaseCameraAccess;
14202
14315
  var _o = React.useContext(SelfieGuidanceModelsContext),
@@ -14402,10 +14515,9 @@ var CustomerVerification = function CustomerVerification(_a) {
14402
14515
  onSubmit: onSubmit,
14403
14516
  geolocationEnabled: geolocationEnabled,
14404
14517
  geolocationRequired: geolocationRequired
14405
- }, /*#__PURE__*/React__namespace.default.createElement(CameraProvider, {
14518
+ }, /*#__PURE__*/React__namespace.default.createElement(CameraStoreProvider, {
14406
14519
  preferFrontFacingCamera: true,
14407
- onCameraAccessDenied: onCameraAccessDenied,
14408
- debugMode: debugMode
14520
+ onCameraAccessDenied: onCameraAccessDenied
14409
14521
  }, /*#__PURE__*/React__namespace.default.createElement(SelfieGuidanceModelsProvider, {
14410
14522
  autoStart: false,
14411
14523
  onModelError: onModelError,
@@ -14754,7 +14866,7 @@ var CustomerIdentificationWizard = function CustomerIdentificationWizard(_a) {
14754
14866
  var _l = React.useState('LOADING'),
14755
14867
  captureState = _l[0],
14756
14868
  setCaptureState = _l[1];
14757
- var _m = React.useContext(CameraStateContext),
14869
+ var _m = useCameraStore(),
14758
14870
  cameraAccessDenied = _m.cameraAccessDenied,
14759
14871
  releaseCameraAccess = _m.releaseCameraAccess;
14760
14872
  var _o = React.useContext(SelfieGuidanceModelsContext),
@@ -14958,10 +15070,9 @@ var CustomerIdentification = function CustomerIdentification(_a) {
14958
15070
  onSubmit: onSubmit,
14959
15071
  geolocationEnabled: geolocationEnabled,
14960
15072
  geolocationRequired: geolocationRequired
14961
- }, /*#__PURE__*/React__namespace.default.createElement(CameraProvider, {
15073
+ }, /*#__PURE__*/React__namespace.default.createElement(CameraStoreProvider, {
14962
15074
  preferFrontFacingCamera: true,
14963
- onCameraAccessDenied: onCameraAccessDenied,
14964
- debugMode: debugMode
15075
+ onCameraAccessDenied: onCameraAccessDenied
14965
15076
  }, /*#__PURE__*/React__namespace.default.createElement(SelfieGuidanceModelsProvider, {
14966
15077
  autoStart: false,
14967
15078
  modelLoadTimeoutMs: modelLoadTimeoutMs,
@@ -15288,8 +15399,7 @@ var VideoIdValidation = function VideoIdValidation(_a) {
15288
15399
  captureSignature: captureSignature,
15289
15400
  captureSignatureVideo: captureSignatureVideo,
15290
15401
  onCameraAccessDenied: onCameraAccessDenied,
15291
- onMicrophoneAccessDenied: onMicrophoneAccessDenied,
15292
- debugMode: debugMode
15402
+ onMicrophoneAccessDenied: onMicrophoneAccessDenied
15293
15403
  }))));
15294
15404
  };
15295
15405
 
@@ -15446,8 +15556,7 @@ var CustomerBiometricsEnrollment = function CustomerBiometricsEnrollment(_a) {
15446
15556
  videoSignatureCaptureProps: videoSignatureCaptureProps,
15447
15557
  captureSignature: captureSignature,
15448
15558
  captureSignatureVideo: captureSignatureVideo,
15449
- onCameraAccessDenied: onCameraAccessDenied,
15450
- debugMode: debugMode
15559
+ onCameraAccessDenied: onCameraAccessDenied
15451
15560
  }))));
15452
15561
  };
15453
15562
 
@@ -15505,11 +15614,10 @@ var DocumentCapture = function DocumentCapture(_a) {
15505
15614
  onDocumentUploadFailed: onDocumentUploadFailed,
15506
15615
  geolocationEnabled: geolocationEnabled,
15507
15616
  geolocationRequired: geolocationRequired
15508
- }, /*#__PURE__*/React__namespace.default.createElement(CameraProvider, {
15617
+ }, /*#__PURE__*/React__namespace.default.createElement(CameraStoreProvider, {
15509
15618
  requestAccessAutomatically: false,
15510
- preferContinuityCamera: true,
15511
- onCameraAccessDenied: onCameraAccessDenied,
15512
- debugMode: debugMode
15619
+ preferIphoneContinuityCamera: true,
15620
+ onCameraAccessDenied: onCameraAccessDenied
15513
15621
  }, /*#__PURE__*/React__namespace.default.createElement(DocumentCaptureWizard, {
15514
15622
  onSuccess: onComplete,
15515
15623
  onExitCapture: onExitCapture,